From 5c7b33648450504b1579efca83939f24425f3ce9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juli=C3=A1n=20Gonz=C3=A1lez=20Calder=C3=B3n?= Date: Fri, 4 Apr 2025 13:09:52 -0300 Subject: [PATCH] Squash branch `sync-v0.14.0-rc.3` --- .cargo/config.toml | 1 - .gitconfig | 2 - .github/actions/bootstrap/action.yml | 4 - .github/actions/install_rust/action.yml | 2 +- .github/workflows/blockifier_ci.yml | 2 +- .../workflows/blockifier_compiled_cairo.yml | 2 +- .github/workflows/blockifier_post-merge.yml | 2 +- .../workflows/blockifier_reexecution_ci.yml | 2 +- .github/workflows/clean_stale_prs.yml | 2 +- .github/workflows/committer_ci.yml | 4 +- .github/workflows/committer_cli_push.yml | 6 +- .github/workflows/deployment.yml | 2 +- .github/workflows/lock_closed_prs.yml | 2 +- .github/workflows/main.yml | 6 +- .github/workflows/main_nightly.yml | 2 +- .github/workflows/main_pr.yml | 4 +- .github/workflows/merge_paths_ci.yml | 2 +- .github/workflows/papyrus/helm-install.yml | 2 +- .github/workflows/papyrus_benchmark.yaml | 2 +- .github/workflows/papyrus_ci.yml | 15 +- .github/workflows/papyrus_docker-publish.yml | 8 +- .github/workflows/papyrus_nightly-tests.yml | 4 +- .../workflows/upload_artifacts_workflow.yml | 11 +- .github/workflows/verify-deps.yml | 2 +- .gitignore | 3 - .gitmodules | 3 - BUILD | 1 - Cargo.lock | 1039 +- Cargo.toml | 123 +- config/sequencer/default_config.json | 127 +- crates/bin/starknet-native-compile/Cargo.lock | 3859 ---- crates/bin/starknet-native-compile/Cargo.toml | 15 - .../bin/starknet-native-compile/src/main.rs | 43 - .../bin/starknet-native-compile/src/utils.rs | 24 - crates/blockifier/Cargo.toml | 1 + crates/blockifier/bench/blockifier_bench.rs | 7 + .../cairo1/compiled/test_contract.casm.json | 2957 ++- .../cairo1/sierra/test_contract.sierra.json | 16349 ++++++++-------- .../cairo1/test_contract.cairo | 36 + .../resources/versioned_constants_0_13_0.json | 6 +- .../resources/versioned_constants_0_13_1.json | 6 +- .../versioned_constants_0_13_1_1.json | 6 +- .../resources/versioned_constants_0_13_2.json | 6 +- .../versioned_constants_0_13_2_1.json | 6 +- .../resources/versioned_constants_0_13_3.json | 8 +- .../resources/versioned_constants_0_13_4.json | 8 +- .../resources/versioned_constants_0_13_5.json | 587 + crates/blockifier/src/blockifier/config.rs | 29 +- .../src/blockifier/transaction_executor.rs | 39 +- .../blockifier/transaction_executor_test.rs | 44 +- .../src/blockifier/transfers_flow_test.rs | 15 +- crates/blockifier/src/bouncer.rs | 329 +- crates/blockifier/src/bouncer_test.rs | 141 +- .../blockifier/src/concurrency/fee_utils.rs | 34 +- .../src/concurrency/fee_utils_test.rs | 30 +- .../src/concurrency/worker_logic.rs | 32 +- .../src/concurrency/worker_logic_test.rs | 6 +- crates/blockifier/src/context.rs | 2 +- crates/blockifier/src/execution/call_info.rs | 60 +- .../src/execution/contract_class.rs | 23 +- .../deprecated_entry_point_execution.rs | 27 +- .../deprecated_syscalls_test.rs | 78 +- .../deprecated_syscalls/hint_processor.rs | 51 +- .../src/execution/deprecated_syscalls/mod.rs | 8 + .../blockifier/src/execution/entry_point.rs | 83 +- .../src/execution/entry_point_execution.rs | 16 +- .../src/execution/execution_utils.rs | 10 +- .../src/execution/native/contract_class.rs | 6 +- .../execution/native/entry_point_execution.rs | 8 +- .../src/execution/native/syscall_handler.rs | 160 +- .../src/execution/syscalls/hint_processor.rs | 87 +- .../blockifier/src/execution/syscalls/mod.rs | 15 + .../src/execution/syscalls/syscall_base.rs | 46 +- .../syscalls/syscall_tests/builtins_test.rs | 77 + .../syscalls/syscall_tests/deploy.rs | 3 +- .../syscall_tests/get_execution_info.rs | 149 +- .../execution/syscalls/syscall_tests/mod.rs | 1 + .../syscalls/syscall_tests/out_of_gas.rs | 53 +- crates/blockifier/src/fee/resources.rs | 78 +- crates/blockifier/src/state.rs | 2 + crates/blockifier/src/state/cached_state.rs | 10 +- .../blockifier/src/state/cached_state_test.rs | 4 +- .../src/state/contract_class_manager.rs | 249 +- crates/blockifier/src/state/global_cache.rs | 78 +- .../src/state/native_class_manager.rs | 271 + .../src/state/native_class_manager_test.rs | 266 + crates/blockifier/src/test_utils.rs | 11 +- crates/blockifier/src/test_utils/contracts.rs | 47 +- .../src/test_utils/initial_test_state.rs | 29 +- .../blockifier/src/test_utils/struct_impls.rs | 49 +- .../src/test_utils/test_templates.rs | 20 +- .../src/test_utils/transfers_generator.rs | 6 +- .../transaction/account_transactions_test.rs | 139 +- .../src/transaction/execution_flavors_test.rs | 10 +- crates/blockifier/src/transaction/objects.rs | 2 + .../src/transaction/transaction_execution.rs | 3 +- .../src/transaction/transactions_test.rs | 4 +- crates/blockifier/src/utils.rs | 27 + crates/blockifier/src/versioned_constants.rs | 176 +- .../src/versioned_constants_test.rs | 27 +- .../state_reader/reexecution_state_reader.rs | 6 +- crates/committer_cli/src/commands.rs | 10 +- crates/committer_cli/src/main.rs | 52 +- crates/committer_cli/src/parse_input/read.rs | 23 +- crates/native_blockifier/src/errors.rs | 4 +- .../src/py_block_executor.rs | 4 +- .../src/py_block_executor_test.rs | 4 +- crates/native_blockifier/src/py_objects.rs | 77 +- .../src/state_readers/py_state_reader.rs | 2 +- .../src/client/stream_builder.rs | 10 +- crates/papyrus_protobuf/build.rs | 5 +- crates/papyrus_rpc/src/v0_8/state.rs | 6 +- crates/papyrus_state_reader/Cargo.toml | 1 + .../papyrus_state_reader/src/papyrus_state.rs | 149 +- .../src/papyrus_state_test.rs | 54 +- .../src/serialization/serializers.rs | 1 + crates/papyrus_test_utils/src/lib.rs | 1 + .../src/bin/run_simulation.rs | 4 +- .../src/single_height_consensus.rs | 2 +- .../papyrus_consensus/src/state_machine.rs | 4 +- .../resources/central_state_diff.json | 2 +- crates/starknet_api/src/block.rs | 4 +- crates/starknet_api/src/contract_class.rs | 15 + .../src/transaction_executor.rs | 3 + .../resources/reader/block_post_0_13_4.json | 4 +- .../src/test_utils.rs | 2 +- .../src/command_line_compiler.rs | 27 +- .../src/compile_test.rs | 5 +- .../src/config.rs | 30 +- .../starknet_sierra_multicompile/src/lib.rs | 2 + .../src/resource_limits.rs | 128 +- .../resource_limits_test.rs | 0 .../resource_limits/resource_limits_unix.rs | 114 + .../resource_limits_windows.rs | 28 + deployments/images/base/Dockerfile | 7 +- deployments/images/papyrus/Dockerfile | 11 +- deployments/images/sequencer/Dockerfile | 13 +- .../sequencer/dummy_recorder.Dockerfile | 26 + rust-toolchain.toml | 2 +- scripts/build_native_blockifier.sh | 10 +- scripts/generate_changelog.py | 15 +- scripts/merge_paths.json | 3 +- scripts/run_tests.py | 2 +- scripts/rust_fmt.sh | 0 144 files changed, 14055 insertions(+), 15298 deletions(-) delete mode 100644 .gitconfig delete mode 100644 .gitmodules delete mode 100644 crates/bin/starknet-native-compile/Cargo.lock delete mode 100644 crates/bin/starknet-native-compile/Cargo.toml delete mode 100644 crates/bin/starknet-native-compile/src/main.rs delete mode 100644 crates/bin/starknet-native-compile/src/utils.rs create mode 100644 crates/blockifier/resources/versioned_constants_0_13_5.json create mode 100644 crates/blockifier/src/execution/syscalls/syscall_tests/builtins_test.rs create mode 100644 crates/blockifier/src/state/native_class_manager.rs create mode 100644 crates/blockifier/src/state/native_class_manager_test.rs rename crates/starknet_sierra_multicompile/src/{ => resource_limits}/resource_limits_test.rs (100%) create mode 100644 crates/starknet_sierra_multicompile/src/resource_limits/resource_limits_unix.rs create mode 100644 crates/starknet_sierra_multicompile/src/resource_limits/resource_limits_windows.rs create mode 100644 deployments/images/sequencer/dummy_recorder.Dockerfile mode change 100644 => 100755 scripts/rust_fmt.sh diff --git a/.cargo/config.toml b/.cargo/config.toml index 0d6abad69d9..de55dd2065a 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -1,5 +1,4 @@ [env] -CAIRO_NATIVE_RUNTIME_LIBRARY = "../blockifier/libcairo_native_runtime.a" LLVM_SYS_191_PREFIX = "/usr/lib/llvm-19/" MLIR_SYS_190_PREFIX = "/usr/lib/llvm-19/" TABLEGEN_190_PREFIX = "/usr/lib/llvm-19/" diff --git a/.gitconfig b/.gitconfig deleted file mode 100644 index 1e1a392f9d9..00000000000 --- a/.gitconfig +++ /dev/null @@ -1,2 +0,0 @@ -[submodule "crates/blockifier/cairo_native"] - recurse = true diff --git a/.github/actions/bootstrap/action.yml b/.github/actions/bootstrap/action.yml index c4b8a49c9f8..f5a1468c523 100644 --- a/.github/actions/bootstrap/action.yml +++ b/.github/actions/bootstrap/action.yml @@ -9,10 +9,6 @@ inputs: runs: using: "composite" steps: - # required to clone native as a gitsubmodule - - name: Submodules update. - run: git submodule update --init --recursive - shell: bash - name: Install rust. uses: ./.github/actions/install_rust with: diff --git a/.github/actions/install_rust/action.yml b/.github/actions/install_rust/action.yml index f140e6a3b2e..4d123f39924 100644 --- a/.github/actions/install_rust/action.yml +++ b/.github/actions/install_rust/action.yml @@ -13,7 +13,7 @@ runs: with: cache-base: main(-v[0-9].*)? inherit-toolchain: true - bins: taplo-cli@0.9.0, cargo-machete + bins: taplo-cli@0.9.3, cargo-machete # Install additional non-default toolchains (for rustfmt for example), NOP if input omitted. channel: ${{ inputs.extra_rust_toolchains }} env: diff --git a/.github/workflows/blockifier_ci.yml b/.github/workflows/blockifier_ci.yml index 3fbd15b5316..126ef834091 100644 --- a/.github/workflows/blockifier_ci.yml +++ b/.github/workflows/blockifier_ci.yml @@ -49,7 +49,7 @@ concurrency: jobs: feature-combo-builds: - runs-on: starkware-ubuntu-latest-medium + runs-on: starkware-ubuntu-24.04-medium steps: - uses: actions/checkout@v4 with: diff --git a/.github/workflows/blockifier_compiled_cairo.yml b/.github/workflows/blockifier_compiled_cairo.yml index 4480aed50ae..fd778b0d1f5 100644 --- a/.github/workflows/blockifier_compiled_cairo.yml +++ b/.github/workflows/blockifier_compiled_cairo.yml @@ -29,7 +29,7 @@ concurrency: jobs: verify_cairo_file_dependencies: - runs-on: starkware-ubuntu-20-04-medium + runs-on: starkware-ubuntu-24.04-medium steps: - uses: actions/checkout@v4 - uses: ./.github/actions/bootstrap diff --git a/.github/workflows/blockifier_post-merge.yml b/.github/workflows/blockifier_post-merge.yml index a001ccb6595..5ef6a115b02 100644 --- a/.github/workflows/blockifier_post-merge.yml +++ b/.github/workflows/blockifier_post-merge.yml @@ -13,7 +13,7 @@ on: jobs: if_merged: if: github.event.pull_request.merged == true - runs-on: starkware-ubuntu-20-04-medium + runs-on: starkware-ubuntu-24.04-medium steps: - uses: actions/checkout@v4 - uses: ./.github/actions/bootstrap diff --git a/.github/workflows/blockifier_reexecution_ci.yml b/.github/workflows/blockifier_reexecution_ci.yml index 042479d52a2..0700a5537a0 100644 --- a/.github/workflows/blockifier_reexecution_ci.yml +++ b/.github/workflows/blockifier_reexecution_ci.yml @@ -33,7 +33,7 @@ concurrency: jobs: blockifier_reexecution: - runs-on: starkware-ubuntu-latest-medium + runs-on: starkware-ubuntu-24.04-medium steps: - uses: actions/checkout@v4 - uses: ./.github/actions/bootstrap diff --git a/.github/workflows/clean_stale_prs.yml b/.github/workflows/clean_stale_prs.yml index 1ccbe73ac87..999282fc948 100644 --- a/.github/workflows/clean_stale_prs.yml +++ b/.github/workflows/clean_stale_prs.yml @@ -9,7 +9,7 @@ on: jobs: stale: name: 🧹 Clean up stale issues and PRs - runs-on: starkware-ubuntu-latest-small + runs-on: starkware-ubuntu-24.04-small steps: - name: 🚀 Run stale uses: actions/stale@v3 diff --git a/.github/workflows/committer_ci.yml b/.github/workflows/committer_ci.yml index ae787585372..d6e1a046e0b 100644 --- a/.github/workflows/committer_ci.yml +++ b/.github/workflows/committer_ci.yml @@ -32,7 +32,7 @@ concurrency: jobs: run-regression-tests: - runs-on: starkware-ubuntu-latest-medium + runs-on: starkware-ubuntu-24.04-medium if: ${{ github.event_name == 'pull_request' }} steps: - uses: actions/checkout@v4 @@ -48,7 +48,7 @@ jobs: - run: cargo test -p committer_cli --release -- --include-ignored test_regression benchmarking: - runs-on: starkware-ubuntu-latest-medium + runs-on: starkware-ubuntu-24.04-medium if: ${{ github.event_name == 'pull_request' }} steps: # Checkout the base branch to get the old code. diff --git a/.github/workflows/committer_cli_push.yml b/.github/workflows/committer_cli_push.yml index a95a6e6a991..553a210c126 100644 --- a/.github/workflows/committer_cli_push.yml +++ b/.github/workflows/committer_cli_push.yml @@ -15,6 +15,7 @@ on: - 'crates/starknet_api/**' - 'crates/starknet_committer/**' - 'crates/starknet_patricia/**' + - 'rust-toolchain.toml' - 'scripts/dependencies.sh' pull_request: @@ -32,6 +33,7 @@ on: - 'crates/starknet_api/**' - 'crates/starknet_committer/**' - 'crates/starknet_patricia/**' + - 'rust-toolchain.toml' - 'scripts/dependencies.sh' env: @@ -48,7 +50,7 @@ concurrency: jobs: gcs-push: - runs-on: starkware-ubuntu-20-04-medium + runs-on: starkware-ubuntu-24.04-medium steps: - uses: actions/checkout@v4 - uses: ./.github/actions/bootstrap @@ -68,7 +70,7 @@ jobs: run: echo "SHORT_HASH=${COMMIT_SHA:0:7}" >> $GITHUB_ENV - name: Build CLI binary - run: ./build_native_in_docker.sh cargo build -p committer_cli -r --bin committer_cli --target-dir CLI_TARGET + run: ./build_native_in_docker.sh rustup toolchain install && cargo build -p committer_cli -r --bin committer_cli --target-dir CLI_TARGET - id: auth uses: "google-github-actions/auth@v2" diff --git a/.github/workflows/deployment.yml b/.github/workflows/deployment.yml index 2c6833a39bc..ea42247c0db 100644 --- a/.github/workflows/deployment.yml +++ b/.github/workflows/deployment.yml @@ -21,7 +21,7 @@ on: jobs: deployment: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/lock_closed_prs.yml b/.github/workflows/lock_closed_prs.yml index 91b0175ffd1..b1cb1f18ff8 100644 --- a/.github/workflows/lock_closed_prs.yml +++ b/.github/workflows/lock_closed_prs.yml @@ -9,7 +9,7 @@ on: jobs: lock: name: 🔒 Lock closed issues and PRs - runs-on: starkware-ubuntu-latest-small + runs-on: starkware-ubuntu-24.04-small steps: - uses: dessant/lock-threads@v2.0.3 with: diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 3f6685e9343..8534af74f6e 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -33,7 +33,7 @@ concurrency: jobs: code_style: - runs-on: starkware-ubuntu-20-04-medium + runs-on: starkware-ubuntu-24.04-medium steps: # Environment setup. - uses: actions/checkout@v4 @@ -96,14 +96,14 @@ jobs: run: cargo machete run-workspace-tests: - runs-on: starkware-ubuntu-latest-medium + runs-on: starkware-ubuntu-24.04-medium steps: - uses: actions/checkout@v4 - uses: ./.github/actions/bootstrap - run: cargo test -p workspace_tests run-tests: - runs-on: starkware-ubuntu-latest-large + runs-on: starkware-ubuntu-24.04-large steps: - uses: actions/checkout@v4 with: diff --git a/.github/workflows/main_nightly.yml b/.github/workflows/main_nightly.yml index c62f20bb276..7629064aed7 100644 --- a/.github/workflows/main_nightly.yml +++ b/.github/workflows/main_nightly.yml @@ -9,7 +9,7 @@ env: jobs: codecov: - runs-on: starkware-ubuntu-latest-large + runs-on: starkware-ubuntu-24.04-large steps: - uses: actions/checkout@v4 - uses: ./.github/actions/bootstrap diff --git a/.github/workflows/main_pr.yml b/.github/workflows/main_pr.yml index 84af6dbd33d..b462e8f0ccb 100644 --- a/.github/workflows/main_pr.yml +++ b/.github/workflows/main_pr.yml @@ -23,7 +23,7 @@ concurrency: jobs: commitlint: - runs-on: starkware-ubuntu-latest-small + runs-on: starkware-ubuntu-24.04-small steps: - uses: actions/checkout@v4 with: @@ -46,7 +46,7 @@ jobs: run: echo "$TITLE" | commitlint --verbose merge-gatekeeper: - runs-on: starkware-ubuntu-latest-small + runs-on: starkware-ubuntu-24.04-small # Restrict permissions of the GITHUB_TOKEN. # Docs: https://docs.github.com/en/actions/using-jobs/assigning-permissions-to-jobs permissions: diff --git a/.github/workflows/merge_paths_ci.yml b/.github/workflows/merge_paths_ci.yml index 6beba2d0e91..a5fc183da34 100644 --- a/.github/workflows/merge_paths_ci.yml +++ b/.github/workflows/merge_paths_ci.yml @@ -27,7 +27,7 @@ concurrency: jobs: merge-paths-test: - runs-on: starkware-ubuntu-latest-small + runs-on: starkware-ubuntu-24.04-small steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 diff --git a/.github/workflows/papyrus/helm-install.yml b/.github/workflows/papyrus/helm-install.yml index 886f307f09d..6f178612007 100644 --- a/.github/workflows/papyrus/helm-install.yml +++ b/.github/workflows/papyrus/helm-install.yml @@ -14,7 +14,7 @@ on: jobs: deploy-teardown: - runs-on: starkware-ubuntu-latest-small + runs-on: starkware-ubuntu-24.04-small permissions: contents: "read" id-token: "write" diff --git a/.github/workflows/papyrus_benchmark.yaml b/.github/workflows/papyrus_benchmark.yaml index b7912e49572..c07826f7724 100644 --- a/.github/workflows/papyrus_benchmark.yaml +++ b/.github/workflows/papyrus_benchmark.yaml @@ -8,7 +8,7 @@ on: jobs: storage-benchmark: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 permissions: contents: "write" id-token: "write" diff --git a/.github/workflows/papyrus_ci.yml b/.github/workflows/papyrus_ci.yml index e24654ff241..ee4f1d7d9a3 100644 --- a/.github/workflows/papyrus_ci.yml +++ b/.github/workflows/papyrus_ci.yml @@ -36,7 +36,7 @@ concurrency: jobs: executable-run: - runs-on: starkware-ubuntu-latest-medium + runs-on: starkware-ubuntu-24.04-medium steps: - uses: actions/checkout@v4 - uses: ./.github/actions/bootstrap @@ -51,7 +51,7 @@ jobs: & sleep 30 ; kill $! executable-run-no-rpc: - runs-on: starkware-ubuntu-latest-medium + runs-on: starkware-ubuntu-24.04-medium steps: - uses: actions/checkout@v4 - uses: ./.github/actions/bootstrap @@ -68,7 +68,7 @@ jobs: # FIXME: Job is currently running out of disk space, error is hidden inside the `Annoatations` # tab on github. FIX THE ISSUE AND RE-ENABLE THE JOB. # p2p-sync-e2e-test: - # runs-on: ubuntu-latest + # runs-on: starkware-ubuntu-24.04-medium # steps: # - uses: actions/checkout@v4 # - uses: ./.github/actions/bootstrap @@ -80,7 +80,7 @@ jobs: # run: scripts/papyrus/p2p_sync_e2e_test/main.sh ${{ secrets.CI_BASE_LAYER_NODE_URL }} integration-test: - runs-on: starkware-ubuntu-latest-medium + runs-on: starkware-ubuntu-24.04-medium steps: - uses: actions/checkout@v4 - uses: ./.github/actions/bootstrap @@ -93,7 +93,7 @@ jobs: cargo run -r -p papyrus_node --bin central_source_integration_test --features="futures-util tokio-stream" test-no-rpc: - runs-on: starkware-ubuntu-latest-medium + runs-on: starkware-ubuntu-24.04-medium steps: - uses: actions/checkout@v4 - uses: ./.github/actions/bootstrap @@ -102,9 +102,8 @@ jobs: env: SEED: 0 - build-papyrus-utilities-image: - runs-on: starkware-ubuntu-latest-medium + runs-on: starkware-ubuntu-24.04-medium steps: - uses: actions/checkout@v4 - name: Set up Docker Buildx @@ -120,7 +119,7 @@ jobs: cache-to: type=gha,mode=max,scope=buildkit-ci random-table-test: - runs-on: starkware-ubuntu-latest-medium + runs-on: starkware-ubuntu-24.04-medium steps: - uses: actions/checkout@v4 # run this job only if the path 'crates/papyrus_storage/src/db/**' is changed, because it takes around 2 minutes. diff --git a/.github/workflows/papyrus_docker-publish.yml b/.github/workflows/papyrus_docker-publish.yml index 94d4efa50e9..ce4a00dc80c 100644 --- a/.github/workflows/papyrus_docker-publish.yml +++ b/.github/workflows/papyrus_docker-publish.yml @@ -40,7 +40,7 @@ env: jobs: docker-build-push: - runs-on: starkware-ubuntu-latest-large + runs-on: starkware-ubuntu-24.04-large steps: - name: Checkout repository @@ -77,6 +77,9 @@ jobs: type=ref,event=pr # set `main*` tag for the default / release branches. type=raw,value={{branch}},enable=${{ github.event_name == 'push' && contains(github.ref, 'main') }} + # set `{branch}-{tag}` tag for tag push events. + type=raw,value={{tag}},enable=${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags') }} + # For manual triggers of the workflow: type=raw,value={{branch}}{{tag}}-{{sha}},enable=${{ github.event_name == 'workflow_dispatch' }} # Build and push Docker image with Buildx @@ -89,5 +92,4 @@ jobs: push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} - cache-from: type=gha - cache-to: type=gha,mode=max + no-cache: true diff --git a/.github/workflows/papyrus_nightly-tests.yml b/.github/workflows/papyrus_nightly-tests.yml index 802760c292b..92db40f283d 100644 --- a/.github/workflows/papyrus_nightly-tests.yml +++ b/.github/workflows/papyrus_nightly-tests.yml @@ -13,7 +13,7 @@ jobs: GW-integration-test-ubuntu: uses: ./.github/workflows/papyrus_nightly-tests-call.yml with: - os: starkware-ubuntu-latest-medium + os: starkware-ubuntu-24.04-medium secrets: INTEGRATION_TESTNET_NODE_URL: ${{ secrets.INTEGRATION_TESTNET_NODE_URL }} INTEGRATION_TESTNET_SENDER_PRIVATE_KEY: ${{ secrets.INTEGRATION_TESTNET_SENDER_PRIVATE_KEY }} @@ -88,7 +88,7 @@ jobs: # TODO(dvir): make this run only if the path 'crates/papyrus_storage/src/db/**' (same path as in the CI) was changed on the # last day and increase the number of repetitions. random-table-test: - runs-on: starkware-ubuntu-latest-medium + runs-on: starkware-ubuntu-24.04-medium steps: - uses: actions/checkout@v4 - uses: ./.github/actions/bootstrap diff --git a/.github/workflows/upload_artifacts_workflow.yml b/.github/workflows/upload_artifacts_workflow.yml index e943faff152..3d2368df632 100644 --- a/.github/workflows/upload_artifacts_workflow.yml +++ b/.github/workflows/upload_artifacts_workflow.yml @@ -25,6 +25,8 @@ on: - 'Cargo.toml' - 'crates/blockifier/**' - 'crates/native_blockifier/**' + - 'crates/starknet_sierra_multicompile/**' + - 'rust-toolchain.toml' - 'scripts/build_native_blockifier.sh' - 'scripts/dependencies.sh' - 'scripts/install_build_tools.sh' @@ -44,7 +46,7 @@ env: jobs: native-blockifier-artifacts-push: - runs-on: starkware-ubuntu-latest-medium + runs-on: starkware-ubuntu-24.04-medium steps: - uses: actions/checkout@v4 @@ -132,10 +134,3 @@ jobs: with: path: "target/release/shared_executables/starknet-native-compile" destination: "native_blockifier_artifacts/${{ env.SHORT_HASH }}/release/" - - - name: Upload libcairo_native_runtime.a to GCP - id: upload_lnr_file - uses: "google-github-actions/upload-cloud-storage@v2" - with: - path: "crates/blockifier/cairo_native/target/release/libcairo_native_runtime.a" - destination: "native_blockifier_artifacts/${{ env.SHORT_HASH }}/release/" diff --git a/.github/workflows/verify-deps.yml b/.github/workflows/verify-deps.yml index eb11c7cfaa9..b1389352385 100644 --- a/.github/workflows/verify-deps.yml +++ b/.github/workflows/verify-deps.yml @@ -10,7 +10,7 @@ env: jobs: latest_deps: name: Latest Dependencies - runs-on: starkware-ubuntu-latest-medium + runs-on: starkware-ubuntu-24.04-medium continue-on-error: true steps: - uses: actions/checkout@v4 diff --git a/.gitignore b/.gitignore index 68c6ebd4ea1..3933be59086 100644 --- a/.gitignore +++ b/.gitignore @@ -40,6 +40,3 @@ scripts/papyrus/p2p_sync_e2e_test/data_server/ # Papyrus helm chart deployments/papyrus/helm/config/* !deployments/papyrus/helm/config/example.json - -# Generated file used for running contracts compiled with Cairo Native -crates/blockifier/libcairo_native_runtime.a diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 8ce19f6d3e8..00000000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "crates/blockifier/cairo_native"] - path = crates/blockifier/cairo_native - url = https://github.com/lambdaclass/cairo_native diff --git a/BUILD b/BUILD index dc6746047ee..f7e67dff2a8 100644 --- a/BUILD +++ b/BUILD @@ -2,7 +2,6 @@ exports_files([ "target/release/libnative_blockifier.so", "target/release/shared_executables/starknet-native-compile", - "crates/blockifier/cairo_native/target/release/libcairo_native_runtime.a", "target/debug/committer_cli", "target/release/committer_cli", "target/x86_64-unknown-linux-musl/debug/committer_cli", diff --git a/Cargo.lock b/Cargo.lock index 74f8801d915..07bec8611c2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -93,9 +93,9 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "alloy-chains" -version = "0.1.58" +version = "0.1.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d0d6c784abf2e061139798d51299da278fc8f02d7b7546662b898d9b22ab5e9" +checksum = "56f15afc5993458b42739ab3b69bdb6b4c8112acd3997dbea9bc092c9517137c" dependencies = [ "alloy-primitives", "num_enum", @@ -138,9 +138,9 @@ dependencies = [ [[package]] name = "alloy-dyn-abi" -version = "0.8.20" +version = "0.8.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f2d547eba3f2d331b0e08f64a24e202f66d4f291e2a3e0073914c0e1400ced3" +checksum = "44e3b98c37b3218924cd1d2a8570666b89662be54e5b182643855f783ea68b33" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -150,7 +150,7 @@ dependencies = [ "itoa", "serde", "serde_json", - "winnow 0.7.1", + "winnow 0.6.22", ] [[package]] @@ -195,9 +195,9 @@ dependencies = [ [[package]] name = "alloy-json-abi" -version = "0.8.20" +version = "0.8.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d62cf1b25f5a50ca2d329b0b4aeb0a0dedeaf225ad3c5099d83b1a4c4616186e" +checksum = "731ea743b3d843bc657e120fb1d1e9cc94f5dab8107e35a82125a63e6420a102" dependencies = [ "alloy-primitives", "alloy-sol-type-parser", @@ -254,9 +254,9 @@ dependencies = [ [[package]] name = "alloy-primitives" -version = "0.8.20" +version = "0.8.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc1360603efdfba91151e623f13a4f4d3dc4af4adc1cbd90bf37c81e84db4c77" +checksum = "788bb18e8f61d5d9340b52143f27771daf7e1dccbaf2741621d2493f9debf52e" dependencies = [ "alloy-rlp", "bytes", @@ -265,7 +265,7 @@ dependencies = [ "derive_more 1.0.0", "foldhash", "hashbrown 0.15.2", - "indexmap 2.7.1", + "indexmap 2.8.0", "itoa", "k256", "keccak-asm", @@ -315,9 +315,9 @@ dependencies = [ [[package]] name = "alloy-rlp" -version = "0.3.11" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6c1d995bff8d011f7cd6c81820d51825e6e06d6db73914c1630ecf544d83d6" +checksum = "f542548a609dca89fcd72b3b9f355928cf844d4363c5eed9c5273a3dd225e097" dependencies = [ "alloy-rlp-derive", "arrayvec", @@ -326,13 +326,13 @@ dependencies = [ [[package]] name = "alloy-rlp-derive" -version = "0.3.11" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a40e1ef334153322fd878d07e86af7a529bcb86b2439525920a88eba87bcf943" +checksum = "5a833d97bf8a5f0f878daf2c8451fff7de7f9de38baa5a45d936ec718d81255a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -404,42 +404,42 @@ dependencies = [ [[package]] name = "alloy-sol-macro" -version = "0.8.20" +version = "0.8.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13f28f2131dc3a7b8e2cda882758ad4d5231ca26281b9861d4b18c700713e2da" +checksum = "a07b74d48661ab2e4b50bb5950d74dbff5e61dd8ed03bb822281b706d54ebacb" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] name = "alloy-sol-macro-expander" -version = "0.8.20" +version = "0.8.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ee2da033256a3b27131c030933eab0460a709fbcc4d4bd57bf9a5650b2441c5" +checksum = "19cc9c7f20b90f9be1a8f71a3d8e283a43745137b0837b1a1cb13159d37cad72" dependencies = [ "alloy-json-abi", "alloy-sol-macro-input", "const-hex", "heck 0.5.0", - "indexmap 2.7.1", + "indexmap 2.8.0", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", "syn-solidity", "tiny-keccak", ] [[package]] name = "alloy-sol-macro-input" -version = "0.8.20" +version = "0.8.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e9d9918b0abb632818bf27e2dfb86b209be8433baacf22100b190bbc0904bd4" +checksum = "713b7e6dfe1cb2f55c80fb05fd22ed085a1b4e48217611365ed0ae598a74c6ac" dependencies = [ "alloy-json-abi", "const-hex", @@ -448,25 +448,25 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.98", + "syn 2.0.100", "syn-solidity", ] [[package]] name = "alloy-sol-type-parser" -version = "0.8.20" +version = "0.8.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a971129d242338d92009470a2f750d3b2630bc5da00a40a94d51f5d456b5712f" +checksum = "1eda2711ab2e1fb517fc6e2ffa9728c9a232e296d16810810e6957b781a1b8bc" dependencies = [ "serde", - "winnow 0.7.1", + "winnow 0.6.22", ] [[package]] name = "alloy-sol-types" -version = "0.8.20" +version = "0.8.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75f306fc801b3aa2e3c4785b7b5252ec8b19f77b30e3b75babfd23849c81bd8c" +checksum = "e3b478bc9c0c4737a04cd976accde4df7eba0bdc0d90ad6ff43d58bc93cf79c1" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -571,12 +571,11 @@ dependencies = [ [[package]] name = "anstyle-wincon" -version = "3.0.7" +version = "3.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" +checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" dependencies = [ "anstyle", - "once_cell", "windows-sys 0.59.0", ] @@ -597,7 +596,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -729,7 +728,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" dependencies = [ "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -767,7 +766,7 @@ dependencies = [ "num-traits", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -896,7 +895,7 @@ checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -968,7 +967,7 @@ dependencies = [ "asn1-rs-derive", "asn1-rs-impl", "displaydoc", - "nom 7.1.3", + "nom", "num-traits", "rusticata-macros", "thiserror 1.0.69", @@ -983,7 +982,7 @@ checksum = "965c2d33e53cb6b267e148a4cb0760bc01f4904c1cd4bb4002a085bb016d1490" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", "synstructure", ] @@ -995,7 +994,7 @@ checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -1059,7 +1058,7 @@ dependencies = [ "async-task", "concurrent-queue", "fastrand 2.3.0", - "futures-lite 2.6.0", + "futures-lite 2.5.0", "slab", ] @@ -1071,7 +1070,7 @@ checksum = "ebcd09b382f40fcd159c2d695175b2ae620ffa5f3bd6f664131efff4e8b9e04a" dependencies = [ "async-lock 3.4.0", "blocking", - "futures-lite 2.6.0", + "futures-lite 2.5.0", ] [[package]] @@ -1085,7 +1084,7 @@ dependencies = [ "async-io 2.4.0", "async-lock 3.4.0", "blocking", - "futures-lite 2.6.0", + "futures-lite 2.5.0", "once_cell", ] @@ -1119,10 +1118,10 @@ dependencies = [ "cfg-if", "concurrent-queue", "futures-io", - "futures-lite 2.6.0", + "futures-lite 2.5.0", "parking", "polling 3.7.4", - "rustix 0.38.44", + "rustix 0.38.42", "slab", "tracing", "windows-sys 0.59.0", @@ -1143,7 +1142,7 @@ version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" dependencies = [ - "event-listener 5.4.0", + "event-listener 5.3.1", "event-listener-strategy", "pin-project-lite", ] @@ -1156,7 +1155,7 @@ checksum = "b948000fad4873c1c9339d60f2623323a0cfd3816e5181033c6a5cb68b2accf7" dependencies = [ "async-io 2.4.0", "blocking", - "futures-lite 2.6.0", + "futures-lite 2.5.0", ] [[package]] @@ -1172,9 +1171,9 @@ dependencies = [ "async-task", "blocking", "cfg-if", - "event-listener 5.4.0", - "futures-lite 2.6.0", - "rustix 0.38.44", + "event-listener 5.3.1", + "futures-lite 2.5.0", + "rustix 0.38.42", "tracing", ] @@ -1186,7 +1185,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -1201,7 +1200,7 @@ dependencies = [ "cfg-if", "futures-core", "futures-io", - "rustix 0.38.44", + "rustix 0.38.42", "signal-hook-registry", "slab", "windows-sys 0.59.0", @@ -1221,7 +1220,7 @@ dependencies = [ "futures-channel", "futures-core", "futures-io", - "futures-lite 2.6.0", + "futures-lite 2.5.0", "gloo-timers 0.3.0", "kv-log-macro", "log", @@ -1252,7 +1251,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -1263,13 +1262,13 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.86" +version = "0.1.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "644dd749086bf3771a2fbc5f256fdb982d53f011c7d5d560304eafeecebce79d" +checksum = "1b1244b10dcd56c92219da4e14caa97e312079e185f04ba3eea25061561dc0a0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -1328,13 +1327,13 @@ dependencies = [ [[package]] name = "auto_impl" -version = "1.2.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e12882f59de5360c748c4cbf569a042d5fb0eb515f7bea9c1f470b47f6ffbd73" +checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -1503,7 +1502,7 @@ version = "0.66.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2b84e06fc203107bfbad243f4aba2af864eb7db3b1cf46ea0a023b0b433d2a7" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.6.0", "cexpr", "clang-sys", "lazy_static", @@ -1514,7 +1513,7 @@ dependencies = [ "regex", "rustc-hash 1.1.0", "shlex", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -1523,7 +1522,7 @@ version = "0.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.6.0", "cexpr", "clang-sys", "itertools 0.13.0", @@ -1532,7 +1531,7 @@ dependencies = [ "regex", "rustc-hash 1.1.0", "shlex", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -1541,7 +1540,7 @@ version = "0.71.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f58bf3d7db68cfbac37cfc485a8d711e87e064c3d0fe0435b92f7a407f9d6b3" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.6.0", "cexpr", "clang-sys", "itertools 0.13.0", @@ -1552,7 +1551,7 @@ dependencies = [ "regex", "rustc-hash 2.1.0", "shlex", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -1593,9 +1592,9 @@ checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" [[package]] name = "bitflags" -version = "2.8.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" [[package]] name = "bitvec" @@ -1638,7 +1637,7 @@ dependencies = [ [[package]] name = "blockifier" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "anyhow", "ark-ec 0.4.2", @@ -1656,7 +1655,7 @@ dependencies = [ "criterion", "derive_more 0.99.18", "glob", - "indexmap 2.7.1", + "indexmap 2.8.0", "itertools 0.12.1", "keccak", "log", @@ -1672,7 +1671,7 @@ dependencies = [ "regex", "rstest", "rstest_reuse", - "semver 1.0.25", + "semver 1.0.26", "serde", "serde_json", "sha2", @@ -1692,7 +1691,7 @@ dependencies = [ [[package]] name = "blockifier_reexecution" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "assert_matches", "blockifier", @@ -1701,7 +1700,7 @@ dependencies = [ "clap", "flate2", "google-cloud-storage", - "indexmap 2.7.1", + "indexmap 2.8.0", "papyrus_execution", "pretty_assertions", "retry", @@ -1725,7 +1724,7 @@ dependencies = [ "async-channel 2.3.1", "async-task", "futures-io", - "futures-lite 2.6.0", + "futures-lite 2.5.0", "piper", ] @@ -1741,15 +1740,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "borsh" -version = "1.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad8646f98db542e39fc66e68a20b2144f6a732636df7c2354e74645faaa433ce" -dependencies = [ - "cfg_aliases", -] - [[package]] name = "bs58" version = "0.5.1" @@ -1772,9 +1762,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.17.0" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "byte-slice-cast" @@ -1796,9 +1786,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.10.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f61dac84819c6588b558454b194026eb1f09c293b9036ae9b159e74e73ab6cf9" +checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" dependencies = [ "serde", ] @@ -1877,9 +1867,9 @@ checksum = "ade8366b8bd5ba243f0a58f036cc0ca8a2f069cff1a2351ef1cac6b083e16fc0" [[package]] name = "cairo-lang-casm" -version = "2.12.0-dev.0" +version = "2.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca20144595b4524a219875db6511488acefa556648d88ab957083bee5b65efa6" +checksum = "99b3c953c0321df1d7ce9101c7a94e2d4007aa8c3362ee96be54bbe77916ef60" dependencies = [ "cairo-lang-utils", "indoc 2.0.5", @@ -1892,9 +1882,9 @@ dependencies = [ [[package]] name = "cairo-lang-compiler" -version = "2.12.0-dev.0" +version = "2.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d805fc6a019554765917eebc401d3eec3f521ca287f5f629531d353a5a9d9ced" +checksum = "e8cd5bec42d0c4e9f1ac6c373c177c98c73a760fabb4066757edd32ef9db467e" dependencies = [ "anyhow", "cairo-lang-defs", @@ -1911,25 +1901,25 @@ dependencies = [ "indoc 2.0.5", "rayon", "rust-analyzer-salsa", - "semver 1.0.25", + "semver 1.0.26", "smol_str", "thiserror 2.0.11", ] [[package]] name = "cairo-lang-debug" -version = "2.12.0-dev.0" +version = "2.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9dc52a0a23c8f6ac1c0143337a49d340d0e8e06b8e659c4df86f89d4ae44865" +checksum = "9ea55d64b6e7aa9186bb65ca32f50f386d6518d467930e53fcf47658dec74a2e" dependencies = [ "cairo-lang-utils", ] [[package]] name = "cairo-lang-defs" -version = "2.12.0-dev.0" +version = "2.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a70c35fb1c70d0f35fe1f0a3dc8dbb141e7e5ea66981a2ec8b1f22181d5b8ac9" +checksum = "093146c748e95400230a40dc6171ac192399484addd96c6ac70ec36b0a2e45b0" dependencies = [ "cairo-lang-debug", "cairo-lang-diagnostics", @@ -1944,9 +1934,9 @@ dependencies = [ [[package]] name = "cairo-lang-diagnostics" -version = "2.12.0-dev.0" +version = "2.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942f5566e6fe15a81a3e28324fa86f6a8f71a30ec8029da03924b057bb40ce4d" +checksum = "4c85890af7f0d0b6e0d15686e0a5169d3396e2861cb3adac3c594f82ae5ed42c" dependencies = [ "cairo-lang-debug", "cairo-lang-filesystem", @@ -1956,9 +1946,9 @@ dependencies = [ [[package]] name = "cairo-lang-eq-solver" -version = "2.12.0-dev.0" +version = "2.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0839865e47b5207cd60602ccfaac263bdf7e789fa70ff5bca6095a0a64be8d" +checksum = "3a54937f1baca684547159af847ba5332ec8015de442878b8e4d6dbbaeec714c" dependencies = [ "cairo-lang-utils", "good_lp", @@ -1966,15 +1956,15 @@ dependencies = [ [[package]] name = "cairo-lang-filesystem" -version = "2.12.0-dev.0" +version = "2.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b92dfb70e74886c79bae62762525e63ffef0fe9d554b9a6e4c0c8a797c5c2e8" +checksum = "5e07492644cfa43e50cfc334a80c12c9e4d8e2a4248b3d2240301c99a025010a" dependencies = [ "cairo-lang-debug", "cairo-lang-utils", "path-clean", "rust-analyzer-salsa", - "semver 1.0.25", + "semver 1.0.26", "serde", "smol_str", "toml", @@ -1982,9 +1972,9 @@ dependencies = [ [[package]] name = "cairo-lang-formatter" -version = "2.12.0-dev.0" +version = "2.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "087165d70104c91b3d32b7cdaecfa1dd77021cc22e37edd9fab298c940aff108" +checksum = "c26c988d6b522c45b5f70add3808fcae13c921822d1c48724c394b450adcf7f9" dependencies = [ "anyhow", "cairo-lang-diagnostics", @@ -2002,9 +1992,9 @@ dependencies = [ [[package]] name = "cairo-lang-lowering" -version = "2.12.0-dev.0" +version = "2.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "750ba5e07fc5007ea1e060980336d3f23333d42d30757a8565d42b65fc7dc443" +checksum = "90577e4dc391e2384041763120618ed2017a8f709f20dfcaa2c1246f908dd374" dependencies = [ "bincode 1.3.3", "cairo-lang-debug", @@ -2029,9 +2019,9 @@ dependencies = [ [[package]] name = "cairo-lang-parser" -version = "2.12.0-dev.0" +version = "2.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d580b357d88fe2a3b16262197613a313e20a39c6c2295200b490964c2cb53d40" +checksum = "b6b7985c0ee345ead0e0f713474ec6490e3fac80c3c3889ab9e67b1588d30337" dependencies = [ "cairo-lang-diagnostics", "cairo-lang-filesystem", @@ -2050,9 +2040,9 @@ dependencies = [ [[package]] name = "cairo-lang-plugins" -version = "2.12.0-dev.0" +version = "2.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1811cb86e54c73b0b282287776fd82f4018072457a260914a1bf03b64d22fa4" +checksum = "697772ca0b096e36cb98cfc9b1231b115a15eebf8ac7295f7b50252f5a1e6aea" dependencies = [ "cairo-lang-defs", "cairo-lang-diagnostics", @@ -2075,20 +2065,20 @@ checksum = "123ac0ecadf31bacae77436d72b88fa9caef2b8e92c89ce63a125ae911a12fae" [[package]] name = "cairo-lang-proc-macros" -version = "2.12.0-dev.0" +version = "2.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c74578b4f0f919071d02326b9dadd80e8c5bb9a69e2b4ff062ccdb017951a88" +checksum = "23a956924e4f53cb1b69a7cee4758f0bcf50e23bbb8769f632625956a574f736" dependencies = [ "cairo-lang-debug", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] name = "cairo-lang-project" -version = "2.12.0-dev.0" +version = "2.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7154735bbb4c6c8cfaf7fc611231f35f08e5b584139c6a676def1430cc14c7" +checksum = "088f29ca8d06722bd92001d098b619a25979dcbfa5face7a6de5d8c7232f0454" dependencies = [ "cairo-lang-filesystem", "cairo-lang-utils", @@ -2099,9 +2089,9 @@ dependencies = [ [[package]] name = "cairo-lang-runnable-utils" -version = "2.12.0-dev.0" +version = "2.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5a96853a0556740dbb486cbbc7784c0a775cfba26650b9772a10535c6a882ea" +checksum = "03b63a8fe2e8f2ae6280392bcc8ab98b981db75832b16c98974b81978d3d1b26" dependencies = [ "cairo-lang-casm", "cairo-lang-sierra", @@ -2117,9 +2107,9 @@ dependencies = [ [[package]] name = "cairo-lang-runner" -version = "2.12.0-dev.0" +version = "2.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5628ef5cdd431e96a736127ba479ceca1b1cea798682d47278e1e3e377eaaed" +checksum = "c4db16efd33b13cecb1ca5b843a65f1e8e3eab4e18abf0c39522b04d741e51e7" dependencies = [ "ark-ff 0.5.0", "ark-secp256k1 0.5.0", @@ -2147,9 +2137,9 @@ dependencies = [ [[package]] name = "cairo-lang-semantic" -version = "2.12.0-dev.0" +version = "2.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f142b9100cc6406b0bcbd01fb0711a9132c4b7f5fc8735654c3d6badc619e9b0" +checksum = "8a3d35463c096f1e3ab6830e28c762b22a7b5c3fbf0df5c2e9a265d290d22ee5" dependencies = [ "cairo-lang-debug", "cairo-lang-defs", @@ -2174,14 +2164,14 @@ dependencies = [ [[package]] name = "cairo-lang-sierra" -version = "2.12.0-dev.0" +version = "2.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a4705aa4648321a72f61026f64549d93b97d05334d6942caee68d5b77a12fc7" +checksum = "7e02d4df410965f122b67967936b722352eddbfde550883b054e019dc54beeef" dependencies = [ "anyhow", "cairo-lang-utils", "const-fnv1a-hash", - "convert_case 0.8.0", + "convert_case 0.7.1", "derivative", "itertools 0.14.0", "lalrpop 0.22.1", @@ -2201,9 +2191,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-ap-change" -version = "2.12.0-dev.0" +version = "2.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e22583651e32e4bd7bd7f28cc296843f773dc558da8c445ecc4a1346300331d1" +checksum = "8c0d3be06212edb4d79be1296cd999b246d22e1541b49432db74dca16fe0c523" dependencies = [ "cairo-lang-eq-solver", "cairo-lang-sierra", @@ -2217,9 +2207,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-gas" -version = "2.12.0-dev.0" +version = "2.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2fcec423871e47d8ac0429cd82f5f412fa258c423e587a3a342286cfcdafaab" +checksum = "9a7f246adb40ac69242231642cdf2571c83463068086a00b5ae9131f7dfc74b5" dependencies = [ "cairo-lang-eq-solver", "cairo-lang-sierra", @@ -2233,9 +2223,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-generator" -version = "2.12.0-dev.0" +version = "2.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5de6863813f89afccbb09c3f0d38cb3f13a5f08760e739748e8cbdd900a0a901" +checksum = "c2ca1fbf8d29528d5fdf6a7e3b2ccdd4f3e9b57066057c30f9bc2c3118867571" dependencies = [ "cairo-lang-debug", "cairo-lang-defs", @@ -2257,9 +2247,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-to-casm" -version = "2.12.0-dev.0" +version = "2.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7fd03b3dd28fcc4f22531332f49960bab91b2625fa513063899edebc13e4ef6" +checksum = "efbb42e872cff7d050d2348978e2f12a94b4b29aee6f5ba5a7eca76a5294c900" dependencies = [ "assert_matches", "cairo-lang-casm", @@ -2278,9 +2268,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-type-size" -version = "2.12.0-dev.0" +version = "2.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3548bcb7ae9f6d57af33460050b8ce0fb93f78b5b347df9e181b6daa19369de5" +checksum = "b8217d84f5434c36c68f54b5bbac9c91ff981a3738f2e6bc51b102f5beae3fd8" dependencies = [ "cairo-lang-sierra", "cairo-lang-utils", @@ -2288,9 +2278,9 @@ dependencies = [ [[package]] name = "cairo-lang-starknet" -version = "2.12.0-dev.0" +version = "2.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9fa502787b9024015622d9f617a89504af6f50729fee8fb7a0be1f03b679f3b" +checksum = "70aca831fef1f41b29c5e62a464a8ddd7964ed2414d3dafb6e1530bff1ae3cbd" dependencies = [ "anyhow", "cairo-lang-compiler", @@ -2318,15 +2308,15 @@ dependencies = [ [[package]] name = "cairo-lang-starknet-classes" -version = "2.12.0-dev.0" +version = "2.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ab575002a5ccdcfe58936745f52ef40a9c1b5444983a286e7620b385743d171" +checksum = "b8e9b59bb3d46e68730266b27e3f0ad524c076eebab1bcc9352256a8957d6b88" dependencies = [ "cairo-lang-casm", "cairo-lang-sierra", "cairo-lang-sierra-to-casm", "cairo-lang-utils", - "convert_case 0.8.0", + "convert_case 0.7.1", "itertools 0.14.0", "num-bigint 0.4.6", "num-integer", @@ -2341,9 +2331,9 @@ dependencies = [ [[package]] name = "cairo-lang-syntax" -version = "2.12.0-dev.0" +version = "2.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "972ffca1d3676fe22ea423e9240602e1c42ea166f7e55291689e4361faef2d66" +checksum = "686aea0cd9730af809010a74c0a8583b3acb99a08e5f97a07ed205f37b9e75ae" dependencies = [ "cairo-lang-debug", "cairo-lang-filesystem", @@ -2359,9 +2349,9 @@ dependencies = [ [[package]] name = "cairo-lang-syntax-codegen" -version = "2.12.0-dev.0" +version = "2.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cf462ebea64b01a8e8879caf58941d84487713342f55fa8540864d69ac1ed82" +checksum = "ef844093fbe46c1e2ead60316591f5be2d3e4b8fad93194a7302a8bb977328ab" dependencies = [ "genco", "xshell", @@ -2369,9 +2359,9 @@ dependencies = [ [[package]] name = "cairo-lang-test-plugin" -version = "2.12.0-dev.0" +version = "2.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52698c6ee88e4fcbdb8d00b30ad7ef897f54b8ae4859e8247576db502b79ea49" +checksum = "c1a6f34df0f3929bf8166c5a6d143c22ad28fd73937cfb5d7a994d56ca4a86c4" dependencies = [ "anyhow", "cairo-lang-compiler", @@ -2396,9 +2386,9 @@ dependencies = [ [[package]] name = "cairo-lang-test-utils" -version = "2.12.0-dev.0" +version = "2.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5753bfa814268a383424da937c4bc4ac08c302181f947deaa0871e57b7324b17" +checksum = "199eb0e7ac78ba7dfbf6551ab7eab14dd45fdcf21675fd5472ca695dc6da96f1" dependencies = [ "cairo-lang-formatter", "cairo-lang-utils", @@ -2409,25 +2399,24 @@ dependencies = [ [[package]] name = "cairo-lang-utils" -version = "2.12.0-dev.0" +version = "2.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6cec425aef45ab28a7ee880481ad9ac22daeed811f325e9e135d71412338dacb" +checksum = "e621368454b62603ae035d04864770a70952e6ca8341b78c1ac50a0088939e3f" dependencies = [ "hashbrown 0.15.2", - "indexmap 2.7.1", + "indexmap 2.8.0", "itertools 0.14.0", "num-bigint 0.4.6", "num-traits", "parity-scale-codec", "schemars", "serde", - "smol_str", ] [[package]] name = "cairo-native" version = "0.4.0" -source = "git+https://github.com/lambdaclass/cairo_native?rev=fe539d2f3f09bdac99f89db3e3e44549ef5d01ad#fe539d2f3f09bdac99f89db3e3e44549ef5d01ad" +source = "git+https://github.com/lambdaclass/cairo_native?rev=66dbbd3309ccd5671ddeb708d843cd5bcedc8980#66dbbd3309ccd5671ddeb708d843cd5bcedc8980" dependencies = [ "anyhow", "aquamarine", @@ -2480,20 +2469,19 @@ dependencies = [ [[package]] name = "cairo-vm" -version = "2.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a01805fcadbebfbfd1e176bc58e6b1be26362792bb008efe59aae9df0bba60a1" +checksum = "7fa8b4b56ee66cebcade4d85128e55b2bfdf046502187aeaa8c2768a427684dc" dependencies = [ "anyhow", "bincode 2.0.0-rc.3", "bitvec", "generic-array", - "hashbrown 0.15.2", + "hashbrown 0.14.5", "hex", - "indoc 2.0.5", "keccak", "lazy_static", - "nom 7.1.3", + "nom", "num-bigint 0.4.6", "num-integer", "num-prime", @@ -2504,7 +2492,7 @@ dependencies = [ "serde_json", "sha2", "sha3", - "starknet-crypto 0.7.4", + "starknet-crypto 0.6.2", "starknet-types-core", "thiserror-no-std", "zip", @@ -2542,7 +2530,7 @@ checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" dependencies = [ "camino", "cargo-platform", - "semver 1.0.25", + "semver 1.0.26", "serde", "serde_json", "thiserror 1.0.69", @@ -2565,9 +2553,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.2.11" +version = "1.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4730490333d58093109dc02c23174c3f4d490998c3fed3cc8e82d57afedb9cf" +checksum = "755717a7de9ec452bf7f3f1a3099085deabd7f2962b861dae91ecd7a365903d2" dependencies = [ "jobserver", "libc", @@ -2580,7 +2568,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" dependencies = [ - "nom 7.1.3", + "nom", ] [[package]] @@ -2685,9 +2673,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.27" +version = "4.5.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "769b0145982b4b48713e01ec42d61614425f27b7058bda7180a3a41f30104796" +checksum = "d8aa86934b44c19c50f87cc2790e19f54f7a67aedb64101c2e1a2e5ecfb73944" dependencies = [ "clap_builder", "clap_derive", @@ -2695,9 +2683,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.27" +version = "4.5.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b26884eb4b57140e4d2d93652abfa49498b938b3c9179f9fc487b0acc3edad7" +checksum = "2414dbb2dd0695280da6ea9261e327479e9d37b0630f6b53ba2a11c60c679fd9" dependencies = [ "anstream", "anstyle", @@ -2707,14 +2695,14 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.24" +version = "4.5.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54b755194d6389280185988721fffba69495eed5ee9feeee9a599b53db80318c" +checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -2811,14 +2799,14 @@ dependencies = [ [[package]] name = "committer_cli" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "clap", "criterion", "derive_more 0.99.18", "ethnum", "futures", - "indexmap 2.7.1", + "indexmap 2.8.0", "pretty_assertions", "rand 0.8.5", "rand_distr", @@ -2939,15 +2927,6 @@ dependencies = [ "unicode-segmentation", ] -[[package]] -name = "convert_case" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baaaa0ecca5b51987b9423ccdc971514dd8b0bb7b4060b983d3664dad3f1f89f" -dependencies = [ - "unicode-segmentation", -] - [[package]] name = "cookie" version = "0.17.0" @@ -3003,9 +2982,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.17" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" dependencies = [ "libc", ] @@ -3091,9 +3070,9 @@ checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crunchy" -version = "0.2.3" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" [[package]] name = "crypto-bigint" @@ -3161,7 +3140,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -3209,7 +3188,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -3231,7 +3210,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core 0.20.10", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -3250,15 +3229,15 @@ dependencies = [ [[package]] name = "data-encoding" -version = "2.7.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e60eed09d8c01d3cee5b7d30acb059b76614c918fa0f992e0dd6eeb10daad6f" +checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" [[package]] name = "data-encoding-macro" -version = "0.1.16" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b16d9d0d88a5273d830dac8b78ceb217ffc9b1d5404e5597a3542515329405b" +checksum = "f1559b6cba622276d6d63706db152618eeb15b89b3e4041446b05876e352e639" dependencies = [ "data-encoding", "data-encoding-macro-internal", @@ -3266,12 +3245,12 @@ dependencies = [ [[package]] name = "data-encoding-macro-internal" -version = "0.1.14" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1145d32e826a7748b69ee8fc62d3e6355ff7f1051df53141e7048162fc90481b" +checksum = "332d754c0af53bc87c108fed664d121ecf59207ec4196041f04d6ab9002ad33f" dependencies = [ "data-encoding", - "syn 2.0.98", + "syn 1.0.109", ] [[package]] @@ -3309,7 +3288,7 @@ checksum = "5cd0a5c643689626bec213c4d8bd4d96acc8ffdb4ad4bb6bc16abf27d5f4b553" dependencies = [ "asn1-rs", "displaydoc", - "nom 7.1.3", + "nom", "num-bigint 0.4.6", "num-traits", "rusticata-macros", @@ -3346,7 +3325,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version 0.4.1", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -3366,7 +3345,7 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", "unicode-xid", ] @@ -3462,7 +3441,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -3491,9 +3470,9 @@ checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" [[package]] name = "dyn-clone" -version = "1.0.18" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "feeef44e73baff3a26d371801df019877a9866a8c493d315ab00177843314f35" +checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" [[package]] name = "ecdsa" @@ -3543,7 +3522,7 @@ dependencies = [ "enum-ordinalize", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -3555,7 +3534,7 @@ dependencies = [ "enum-ordinalize", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -3641,7 +3620,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -3652,7 +3631,7 @@ checksum = "4f4b100e337b021ae69f3e7dd82e230452c54ff833958446c4a3854c66dc9326" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -3672,7 +3651,7 @@ checksum = "a1ab991c1362ac86c61ab6f556cff143daa22e5a15e4e189df818b2fd19fe65b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -3692,7 +3671,7 @@ checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -3868,7 +3847,7 @@ dependencies = [ "reqwest 0.11.27", "serde", "serde_json", - "syn 2.0.98", + "syn 2.0.100", "toml", "walkdir", ] @@ -3886,7 +3865,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -3912,7 +3891,7 @@ dependencies = [ "serde", "serde_json", "strum 0.26.3", - "syn 2.0.98", + "syn 2.0.100", "tempfile", "thiserror 1.0.69", "tiny-keccak", @@ -3928,7 +3907,7 @@ dependencies = [ "chrono", "ethers-core", "reqwest 0.11.27", - "semver 1.0.25", + "semver 1.0.26", "serde", "serde_json", "thiserror 1.0.69", @@ -4037,7 +4016,7 @@ dependencies = [ "path-slash", "rayon", "regex", - "semver 1.0.25", + "semver 1.0.26", "serde", "serde_json", "solang-parser", @@ -4064,9 +4043,9 @@ checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" [[package]] name = "event-listener" -version = "5.4.0" +version = "5.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" +checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" dependencies = [ "concurrent-queue", "parking", @@ -4079,7 +4058,7 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c3e4e0dd3673c1139bf041f3008816d9cf2946bbfac2945c09e523b8d7b05b2" dependencies = [ - "event-listener 5.4.0", + "event-listener 5.3.1", "pin-project-lite", ] @@ -4364,9 +4343,9 @@ dependencies = [ [[package]] name = "futures-lite" -version = "2.6.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532" +checksum = "cef40d21ae2c515b51041df9ed313ed21e572df340ea58a922a0aefe7e8891a1" dependencies = [ "fastrand 2.3.0", "futures-core", @@ -4393,7 +4372,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -4403,7 +4382,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8f2f12607f92c69b12ed746fabf9ca4f5c482cba46679c1a75b874ed7c26adb" dependencies = [ "futures-io", - "rustls 0.23.22", + "rustls 0.23.20", "rustls-pki-types", ] @@ -4492,7 +4471,7 @@ checksum = "43eaff6bbc0b3a878361aced5ec6a2818ee7c541c5b33b5880dfa9a86c23e9e7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -4784,7 +4763,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.7.1", + "indexmap 2.8.0", "slab", "tokio", "tokio-util", @@ -4803,7 +4782,7 @@ dependencies = [ "futures-core", "futures-sink", "http 1.2.0", - "indexmap 2.7.1", + "indexmap 2.8.0", "slab", "tokio", "tokio-util", @@ -5058,9 +5037,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.10.0" +version = "1.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2d708df4e7140240a16cd6ab0ab65c972d7433ab77819ea693fde9c43811e2a" +checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" [[package]] name = "httpdate" @@ -5100,9 +5079,9 @@ dependencies = [ [[package]] name = "hyper" -version = "1.6.0" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" +checksum = "256fb8d4bd6413123cc9d91832d78325c48ff41677595be797d90f42969beae0" dependencies = [ "bytes", "futures-channel", @@ -5156,7 +5135,7 @@ checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ "bytes", "http-body-util", - "hyper 1.6.0", + "hyper 1.5.2", "hyper-util", "native-tls", "tokio", @@ -5175,7 +5154,7 @@ dependencies = [ "futures-util", "http 1.2.0", "http-body 1.0.1", - "hyper 1.6.0", + "hyper 1.5.2", "pin-project-lite", "socket2 0.5.8", "tokio", @@ -5321,7 +5300,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -5488,7 +5467,7 @@ checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -5535,9 +5514,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.7.1" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652" +checksum = "3954d50fe15b02142bf25d3b8bdadb634ec3948f103d04ffe3031bc8fe9d7058" dependencies = [ "equivalent", "hashbrown 0.15.2", @@ -5567,14 +5546,13 @@ dependencies = [ [[package]] name = "insta" -version = "1.42.1" +version = "1.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71c1b125e30d93896b365e156c33dadfffab45ee8400afcbba4752f59de08a86" +checksum = "6513e4067e16e69ed1db5ab56048ed65db32d10ba5fc1217f5393f8f17d8b5a5" dependencies = [ "console", "linked-hash-map", "once_cell", - "pin-project", "serde", "similar", ] @@ -5619,19 +5597,19 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.11.0" +version = "2.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" +checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" [[package]] name = "is-terminal" -version = "0.4.15" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e19b23d53f35ce9f56aebc7d1bb4e6ac1e9c0db7ac85c8d1760c04379edced37" +checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" dependencies = [ "hermit-abi 0.4.0", "libc", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -5642,11 +5620,11 @@ checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" [[package]] name = "iso8601" -version = "0.6.2" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5c177cff824ab21a6f41079a4c401241c4e8be14f316c4c6b07d5fca351c98d" +checksum = "924e5d73ea28f59011fec52a0d12185d496a9b075d360657aed2a5707f701153" dependencies = [ - "nom 8.0.0", + "nom", ] [[package]] @@ -5711,9 +5689,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.77" +version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7" dependencies = [ "once_cell", "wasm-bindgen", @@ -5907,7 +5885,7 @@ dependencies = [ "serde_json", "time", "url", - "uuid 1.12.1", + "uuid 1.11.0", ] [[package]] @@ -6108,7 +6086,7 @@ version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f0bee397dc9a7003e7bd34fffc1dc2d4c4fdc96530a0c439a5f98c9402bc7bf" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.6.0", "byteorder", "derive_more 0.99.18", "indexmap 1.9.3", @@ -6424,7 +6402,7 @@ dependencies = [ "quinn", "rand 0.8.5", "ring 0.17.8", - "rustls 0.23.22", + "rustls 0.23.20", "socket2 0.5.8", "thiserror 1.0.69", "tokio", @@ -6465,7 +6443,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -6517,7 +6495,7 @@ dependencies = [ "libp2p-identity", "rcgen", "ring 0.17.8", - "rustls 0.23.22", + "rustls 0.23.20", "rustls-webpki 0.101.7", "thiserror 1.0.69", "x509-parser", @@ -6572,7 +6550,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.6.0", "libc", "redox_syscall", ] @@ -6600,9 +6578,9 @@ checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" [[package]] name = "linux-raw-sys" -version = "0.4.15" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" [[package]] name = "litemap" @@ -6621,7 +6599,7 @@ dependencies = [ "lazy_static", "libc", "regex-lite", - "semver 1.0.25", + "semver 1.0.26", ] [[package]] @@ -6636,9 +6614,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.25" +version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" dependencies = [ "value-bag", ] @@ -6749,7 +6727,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.98", + "syn 2.0.100", "tblgen", "unindent 0.2.3", ] @@ -6789,7 +6767,7 @@ dependencies = [ [[package]] name = "mempool_test_utils" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "assert_matches", "blockifier", @@ -6847,7 +6825,7 @@ checksum = "38b4faf00617defe497754acde3024865bc143d44a86799b24e191ecff91354f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -6882,9 +6860,9 @@ dependencies = [ [[package]] name = "microlp" -version = "0.2.10" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edaa5264bc1f7668bc12e10757f8f529a526656c796cc2106cf2be10c5b8d483" +checksum = "8113ec0619201ef0ead05ecafe9ba59b525ab73508456b8d35dbaf810cd07704" dependencies = [ "log", "sprs", @@ -6914,9 +6892,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.8.3" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8402cab7aefae129c6977bb0ff1b8fd9a04eb5b51efc50a70bea51cda0c7924" +checksum = "4ffbe83022cedc1d264172192511ae958937694cd57ce297164951b8b3568394" dependencies = [ "adler2", ] @@ -6965,7 +6943,7 @@ dependencies = [ "cfg-if", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -6999,7 +6977,7 @@ dependencies = [ "http 1.2.0", "http-body 1.0.1", "http-body-util", - "hyper 1.6.0", + "hyper 1.5.2", "hyper-util", "log", "rand 0.8.5", @@ -7082,9 +7060,9 @@ dependencies = [ [[package]] name = "native-tls" -version = "0.2.13" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dab59f8e050d5df8e4dd87d9206fb6f65a483e20ac9fda365ade4fab353196c" +checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" dependencies = [ "libc", "log", @@ -7099,13 +7077,13 @@ dependencies = [ [[package]] name = "native_blockifier" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "blockifier", "cached", "cairo-lang-starknet-classes", "cairo-vm", - "indexmap 2.7.1", + "indexmap 2.8.0", "log", "num-bigint 0.4.6", "papyrus_state_reader", @@ -7176,16 +7154,17 @@ dependencies = [ [[package]] name = "netlink-proto" -version = "0.11.5" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72452e012c2f8d612410d89eea01e2d9b56205274abb35d53f60200b2ec41d60" +checksum = "86b33524dc0968bfad349684447bfce6db937a9ac3332a1fe60c0c5a5ce63f21" dependencies = [ "bytes", "futures", "log", "netlink-packet-core", "netlink-sys", - "thiserror 2.0.11", + "thiserror 1.0.69", + "tokio", ] [[package]] @@ -7238,7 +7217,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.6.0", "cfg-if", "cfg_aliases", "libc", @@ -7260,15 +7239,6 @@ dependencies = [ "minimal-lexical", ] -[[package]] -name = "nom" -version = "8.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df9761775871bdef83bee530e60050f7e54b1105350d6884eb0fb4f46c2f9405" -dependencies = [ - "memchr", -] - [[package]] name = "nu-ansi-term" version = "0.46.0" @@ -7489,7 +7459,7 @@ dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -7564,11 +7534,11 @@ dependencies = [ [[package]] name = "openssl" -version = "0.10.70" +version = "0.10.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61cfb4e166a8bb8c9b55c500bc2308550148ece889be90f609377e58140f42c6" +checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.6.0", "cfg-if", "foreign-types", "libc", @@ -7585,20 +7555,20 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] name = "openssl-probe" -version = "0.1.6" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.105" +version = "0.9.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b22d5b84be05a8d6947c7cb71f7c849aa0f112acd4bf51c2a7c1c988ac0a9dc" +checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" dependencies = [ "cc", "libc", @@ -7653,7 +7623,7 @@ dependencies = [ [[package]] name = "papyrus_base_layer" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "alloy-contract", "alloy-dyn-abi", @@ -7682,13 +7652,13 @@ dependencies = [ [[package]] name = "papyrus_common" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "assert_matches", "base64 0.13.1", "cairo-lang-starknet-classes", "flate2", - "indexmap 2.7.1", + "indexmap 2.8.0", "lazy_static", "papyrus_test_utils", "pretty_assertions", @@ -7703,7 +7673,7 @@ dependencies = [ [[package]] name = "papyrus_config" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "assert_matches", "clap", @@ -7723,7 +7693,7 @@ dependencies = [ [[package]] name = "papyrus_consensus" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "async-trait", "clap", @@ -7754,13 +7724,13 @@ dependencies = [ [[package]] name = "papyrus_consensus_orchestrator" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "async-trait", "blockifier", "chrono", "futures", - "indexmap 2.7.1", + "indexmap 2.8.0", "lazy_static", "mockall", "papyrus_consensus", @@ -7782,7 +7752,7 @@ dependencies = [ [[package]] name = "papyrus_execution" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "anyhow", "assert_matches", @@ -7791,7 +7761,7 @@ dependencies = [ "cairo-lang-starknet-classes", "cairo-lang-utils", "cairo-vm", - "indexmap 2.7.1", + "indexmap 2.8.0", "itertools 0.12.1", "lazy_static", "papyrus_common", @@ -7811,7 +7781,7 @@ dependencies = [ [[package]] name = "papyrus_load_test" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "anyhow", "assert_matches", @@ -7829,7 +7799,7 @@ dependencies = [ [[package]] name = "papyrus_monitoring_gateway" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "axum", "hyper 0.14.32", @@ -7852,7 +7822,7 @@ dependencies = [ [[package]] name = "papyrus_network" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "assert_matches", "async-stream", @@ -7887,7 +7857,7 @@ dependencies = [ [[package]] name = "papyrus_network_types" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "libp2p", "papyrus_test_utils", @@ -7897,7 +7867,7 @@ dependencies = [ [[package]] name = "papyrus_node" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "anyhow", "assert-json-diff", @@ -7942,14 +7912,14 @@ dependencies = [ [[package]] name = "papyrus_p2p_sync" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "assert_matches", "async-stream", "chrono", "enum-iterator", "futures", - "indexmap 2.7.1", + "indexmap 2.8.0", "lazy_static", "metrics 0.21.1", "papyrus_common", @@ -7974,7 +7944,7 @@ dependencies = [ [[package]] name = "papyrus_proc_macros" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "metrics 0.21.1", "metrics-exporter-prometheus", @@ -7982,15 +7952,15 @@ dependencies = [ "papyrus_test_utils", "prometheus-parse", "quote", - "syn 2.0.98", + "syn 2.0.100", "tracing", ] [[package]] name = "papyrus_protobuf" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ - "indexmap 2.7.1", + "indexmap 2.8.0", "lazy_static", "papyrus_common", "papyrus_test_utils", @@ -8009,7 +7979,7 @@ dependencies = [ [[package]] name = "papyrus_rpc" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "anyhow", "assert_matches", @@ -8025,7 +7995,7 @@ dependencies = [ "futures-util", "hex", "hyper 0.14.32", - "indexmap 2.7.1", + "indexmap 2.8.0", "insta", "itertools 0.12.1", "jsonrpsee", @@ -8062,11 +8032,12 @@ dependencies = [ [[package]] name = "papyrus_state_reader" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "assert_matches", "blockifier", - "indexmap 2.7.1", + "indexmap 2.8.0", + "log", "papyrus_storage", "rstest", "starknet-types-core", @@ -8075,7 +8046,7 @@ dependencies = [ [[package]] name = "papyrus_storage" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "assert_matches", "byteorder", @@ -8085,7 +8056,7 @@ dependencies = [ "camelpaste", "clap", "human_bytes", - "indexmap 2.7.1", + "indexmap 2.8.0", "insta", "integer-encoding", "lazy_static", @@ -8127,7 +8098,7 @@ dependencies = [ [[package]] name = "papyrus_sync" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "assert_matches", "async-stream", @@ -8136,7 +8107,7 @@ dependencies = [ "chrono", "futures", "futures-util", - "indexmap 2.7.1", + "indexmap 2.8.0", "itertools 0.12.1", "lru", "metrics 0.21.1", @@ -8162,12 +8133,12 @@ dependencies = [ [[package]] name = "papyrus_test_utils" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "cairo-lang-casm", "cairo-lang-starknet-classes", "cairo-lang-utils", - "indexmap 2.7.1", + "indexmap 2.8.0", "num-bigint 0.4.6", "pretty_assertions", "primitive-types", @@ -8206,7 +8177,7 @@ dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -8347,7 +8318,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset 0.4.2", - "indexmap 2.7.1", + "indexmap 2.8.0", ] [[package]] @@ -8357,7 +8328,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" dependencies = [ "fixedbitset 0.5.7", - "indexmap 2.7.1", + "indexmap 2.8.0", ] [[package]] @@ -8372,42 +8343,51 @@ dependencies = [ [[package]] name = "phf" -version = "0.11.3" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" +checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" dependencies = [ "phf_macros", - "phf_shared", + "phf_shared 0.11.2", ] [[package]] name = "phf_generator" -version = "0.11.3" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" +checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" dependencies = [ - "phf_shared", + "phf_shared 0.11.2", "rand 0.8.5", ] [[package]] name = "phf_macros" -version = "0.11.3" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" +checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b" dependencies = [ "phf_generator", - "phf_shared", + "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] name = "phf_shared" -version = "0.11.3" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" +dependencies = [ + "siphasher", +] + +[[package]] +name = "phf_shared" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" +checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" dependencies = [ "siphasher", ] @@ -8420,29 +8400,29 @@ checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" [[package]] name = "pin-project" -version = "1.1.9" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfe2e71e1471fe07709406bf725f710b02927c9c54b2b5b2ec0e8087d97c327d" +checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.9" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e859e6e5bd50440ab63c47e3ebabc90f26251f7c73c3d3e837b74a1cc3fa67" +checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] name = "pin-project-lite" -version = "0.2.16" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" [[package]] name = "pin-utils" @@ -8529,7 +8509,7 @@ dependencies = [ "concurrent-queue", "hermit-abi 0.4.0", "pin-project-lite", - "rustix 0.38.44", + "rustix 0.38.42", "tracing", "windows-sys 0.59.0", ] @@ -8631,12 +8611,12 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.29" +version = "0.2.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6924ced06e1f7dfe3fa48d57b9f74f55d8915f5036121bef647ef4b204895fac" +checksum = "483f8c21f64f3ea09fe0f30f5d48c3e8eefe5dac9129f0075f76593b4c1da705" dependencies = [ "proc-macro2", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -8678,7 +8658,7 @@ version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" dependencies = [ - "toml_edit 0.22.23", + "toml_edit 0.22.24", ] [[package]] @@ -8724,14 +8704,14 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] name = "proc-macro2" -version = "1.0.93" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" +checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84" dependencies = [ "unicode-ident", ] @@ -8742,11 +8722,11 @@ version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "731e0d9356b0c25f16f33b5be79b1c57b562f141ebfcdb0ad8ac2c13a24293b4" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.6.0", "hex", "lazy_static", "procfs-core", - "rustix 0.38.44", + "rustix 0.38.42", ] [[package]] @@ -8755,7 +8735,7 @@ version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d3554923a69f4ce04c4a754260c338f505ce22642d3830e049a399fc2059a29" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.6.0", "hex", ] @@ -8779,7 +8759,7 @@ checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -8802,7 +8782,7 @@ checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" dependencies = [ "bit-set 0.5.3", "bit-vec 0.6.3", - "bitflags 2.8.0", + "bitflags 2.6.0", "lazy_static", "num-traits", "rand 0.8.5", @@ -8841,7 +8821,7 @@ dependencies = [ "prost", "prost-types", "regex", - "syn 2.0.98", + "syn 2.0.100", "tempfile", ] @@ -8855,7 +8835,7 @@ dependencies = [ "itertools 0.12.1", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -9035,7 +9015,7 @@ dependencies = [ "quinn-proto", "quinn-udp", "rustc-hash 2.1.0", - "rustls 0.23.22", + "rustls 0.23.20", "socket2 0.5.8", "thiserror 2.0.11", "tokio", @@ -9053,7 +9033,7 @@ dependencies = [ "rand 0.8.5", "ring 0.17.8", "rustc-hash 2.1.0", - "rustls 0.23.22", + "rustls 0.23.20", "rustls-pki-types", "slab", "thiserror 2.0.11", @@ -9340,7 +9320,7 @@ version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.6.0", ] [[package]] @@ -9478,7 +9458,7 @@ dependencies = [ "http 1.2.0", "http-body 1.0.1", "http-body-util", - "hyper 1.6.0", + "hyper 1.5.2", "hyper-tls 0.6.0", "hyper-util", "ipnet", @@ -9662,7 +9642,7 @@ checksum = "b3a8fb4672e840a587a66fc577a5491375df51ddb88f2a2c2a792598c326fe14" dependencies = [ "quote", "rand 0.8.5", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -9722,7 +9702,7 @@ version = "0.17.0-pre.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "719825638c59fd26a55412a24561c7c5bcf54364c88b9a7a04ba08a6eafaba8d" dependencies = [ - "indexmap 2.7.1", + "indexmap 2.8.0", "lock_api", "oorandom", "parking_lot", @@ -9742,7 +9722,7 @@ dependencies = [ "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -9794,7 +9774,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.25", + "semver 1.0.26", ] [[package]] @@ -9803,7 +9783,7 @@ version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "faf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632" dependencies = [ - "nom 7.1.3", + "nom", ] [[package]] @@ -9822,14 +9802,14 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.44" +version = "0.38.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" +checksum = "f93dc38ecbab2eb790ff964bb77fa94faf256fd3e73285fd7ba0903b76bedb85" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.6.0", "errno", "libc", - "linux-raw-sys 0.4.15", + "linux-raw-sys 0.4.14", "windows-sys 0.59.0", ] @@ -9847,9 +9827,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.22" +version = "0.23.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb9263ab4eb695e42321db096e3b8fbd715a59b154d5c88d82db2175b681ba7" +checksum = "5065c3f250cbd332cd894be57c40fa52387247659b14a2d6041d121547903b1b" dependencies = [ "log", "once_cell", @@ -9892,9 +9872,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.11.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" +checksum = "d2bf47e6ff922db3825eb750c4e2ff784c6ff8fb9e13046ef6a1d1c5401b0b37" dependencies = [ "web-time", ] @@ -9951,9 +9931,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.19" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "salsa20" @@ -9994,7 +9974,7 @@ dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -10028,7 +10008,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -10079,7 +10059,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.6.0", "core-foundation", "core-foundation-sys", "libc", @@ -10088,9 +10068,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.14.0" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" +checksum = "1863fd3768cd83c56a7f60faa4dc0d403f1b6df0a38c3c25f44b7894e45370d5" dependencies = [ "core-foundation-sys", "libc", @@ -10107,9 +10087,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.25" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f79dfe2d285b0488816f30e700a7438c5a73d816b5b7d3ac72fbc48b0d185e03" +checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" dependencies = [ "serde", ] @@ -10152,7 +10132,7 @@ checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -10163,14 +10143,14 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] name = "serde_json" -version = "1.0.138" +version = "1.0.140" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d434192e7da787e94a6ea7e9670b26a036d0ca41e0b7efb2676dd32bae872949" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" dependencies = [ "itoa", "memchr", @@ -10207,7 +10187,7 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -10255,7 +10235,7 @@ dependencies = [ "darling 0.20.10", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -10331,7 +10311,7 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "sierra-emu" version = "0.1.0" -source = "git+https://github.com/lambdaclass/sierra-emu?rev=a13128c78d0e681f3d2bd021cabd3a2a4406efb0#a13128c78d0e681f3d2bd021cabd3a2a4406efb0" +source = "git+https://github.com/lambdaclass/sierra-emu?rev=2bcab23a54a29777361a5931d61d5ce90c11b3de#2bcab23a54a29777361a5931d61d5ce90c11b3de" dependencies = [ "cairo-lang-compiler", "cairo-lang-filesystem", @@ -10353,7 +10333,7 @@ dependencies = [ "serde_json", "sha2", "smallvec", - "starknet-crypto 0.7.4", + "starknet-crypto 0.7.3", "starknet-curve 0.5.1", "starknet-types-core", "tempfile", @@ -10383,19 +10363,19 @@ dependencies = [ [[package]] name = "similar" -version = "2.7.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbbb5d9659141646ae647b42fe094daf6c6192d1620870b449d9557f748b2daa" +checksum = "1de1d4f81173b03af4c0cbed3c898f6bff5b870e4a7f5d6f4057d62a7a4b686e" [[package]] name = "simple_asn1" -version = "0.6.3" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb" +checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" dependencies = [ "num-bigint 0.4.6", "num-traits", - "thiserror 2.0.11", + "thiserror 1.0.69", "time", ] @@ -10424,9 +10404,9 @@ dependencies = [ [[package]] name = "siphasher" -version = "1.0.1" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" [[package]] name = "sketches-ddsketch" @@ -10473,16 +10453,15 @@ dependencies = [ "async-net", "async-process", "blocking", - "futures-lite 2.6.0", + "futures-lite 2.5.0", ] [[package]] name = "smol_str" -version = "0.3.2" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9676b89cd56310a87b93dec47b11af744f34d5fc9f367b829474eec0a891350d" +checksum = "dd538fb6910ac1099850255cf94a94df6551fbdd602454387d0adb2d1ca6dead" dependencies = [ - "borsh", "serde", ] @@ -10580,9 +10559,9 @@ dependencies = [ [[package]] name = "sprs" -version = "0.11.3" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bff8419009a08f6cb7519a602c5590241fbff1446bcc823c07af15386eb801b" +checksum = "704ef26d974e8a452313ed629828cd9d4e4fa34667ca1ad9d6b1fffa43c6e166" dependencies = [ "ndarray", "num-complex 0.4.6", @@ -10636,9 +10615,9 @@ dependencies = [ [[package]] name = "starknet-crypto" -version = "0.7.4" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "039a3bad70806b494c9e6b21c5238a6c8a373d66a26071859deb0ccca6f93634" +checksum = "ded22ccf4cb9e572ce3f77de6066af53560cd2520d508876c83bb1e6b29d5cbc" dependencies = [ "crypto-bigint", "hex", @@ -10661,7 +10640,7 @@ checksum = "bbc159a1934c7be9761c237333a57febe060ace2bc9e3b337a59a37af206d19f" dependencies = [ "starknet-curve 0.4.2", "starknet-ff", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -10713,7 +10692,7 @@ dependencies = [ [[package]] name = "starknet_api" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "assert_matches", "bitvec", @@ -10721,18 +10700,18 @@ dependencies = [ "cairo-lang-starknet-classes", "derive_more 0.99.18", "hex", - "indexmap 2.7.1", + "indexmap 2.8.0", "itertools 0.12.1", "num-bigint 0.4.6", "num-traits", "pretty_assertions", "primitive-types", "rstest", - "semver 1.0.25", + "semver 1.0.26", "serde", "serde_json", "sha3", - "starknet-crypto 0.7.4", + "starknet-crypto 0.7.3", "starknet-types-core", "starknet_api", "starknet_infra_utils", @@ -10743,14 +10722,14 @@ dependencies = [ [[package]] name = "starknet_batcher" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "assert_matches", "async-trait", "blockifier", "chrono", "futures", - "indexmap 2.7.1", + "indexmap 2.8.0", "mempool_test_utils", "mockall", "papyrus_config", @@ -10773,7 +10752,7 @@ dependencies = [ [[package]] name = "starknet_batcher_types" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "async-trait", "chrono", @@ -10790,7 +10769,7 @@ dependencies = [ [[package]] name = "starknet_class_manager_types" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "async-trait", "cairo-lang-starknet-classes", @@ -10803,14 +10782,14 @@ dependencies = [ [[package]] name = "starknet_client" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "assert_matches", "async-trait", "cairo-lang-starknet-classes", "enum-iterator", "http 0.2.12", - "indexmap 2.7.1", + "indexmap 2.8.0", "mockall", "mockito 0.31.1", "os_info", @@ -10838,7 +10817,7 @@ dependencies = [ [[package]] name = "starknet_committer" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "hex", "pretty_assertions", @@ -10853,7 +10832,7 @@ dependencies = [ [[package]] name = "starknet_consensus_manager" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "async-trait", "futures", @@ -10875,7 +10854,7 @@ dependencies = [ [[package]] name = "starknet_gateway" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "assert_matches", "async-trait", @@ -10914,7 +10893,7 @@ dependencies = [ [[package]] name = "starknet_gateway_types" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "async-trait", "axum", @@ -10934,7 +10913,7 @@ dependencies = [ [[package]] name = "starknet_http_server" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "axum", "hyper 0.14.32", @@ -10954,7 +10933,7 @@ dependencies = [ [[package]] name = "starknet_infra_utils" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "pretty_assertions", "rstest", @@ -10965,13 +10944,13 @@ dependencies = [ [[package]] name = "starknet_integration_tests" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "assert_matches", "blockifier", "cairo-lang-starknet-classes", "futures", - "indexmap 2.7.1", + "indexmap 2.8.0", "itertools 0.12.1", "mempool_test_utils", "papyrus_common", @@ -11007,11 +10986,11 @@ dependencies = [ [[package]] name = "starknet_l1_provider" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "assert_matches", "async-trait", - "indexmap 2.7.1", + "indexmap 2.8.0", "papyrus_base_layer", "papyrus_config", "pretty_assertions", @@ -11026,7 +11005,7 @@ dependencies = [ [[package]] name = "starknet_l1_provider_types" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "async-trait", "mockall", @@ -11040,7 +11019,7 @@ dependencies = [ [[package]] name = "starknet_mempool" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "assert_matches", "async-trait", @@ -11065,7 +11044,7 @@ dependencies = [ [[package]] name = "starknet_mempool_p2p" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "async-trait", "futures", @@ -11088,7 +11067,7 @@ dependencies = [ [[package]] name = "starknet_mempool_p2p_types" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "async-trait", "mockall", @@ -11102,7 +11081,7 @@ dependencies = [ [[package]] name = "starknet_mempool_types" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "async-trait", "mockall", @@ -11117,7 +11096,7 @@ dependencies = [ [[package]] name = "starknet_monitoring_endpoint" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "axum", "hyper 0.14.32", @@ -11136,7 +11115,7 @@ dependencies = [ [[package]] name = "starknet_patricia" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "async-recursion", "derive_more 0.99.18", @@ -11157,7 +11136,7 @@ dependencies = [ [[package]] name = "starknet_sequencer_infra" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "assert_matches", "async-trait", @@ -11179,7 +11158,7 @@ dependencies = [ [[package]] name = "starknet_sequencer_node" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "anyhow", "assert-json-diff", @@ -11223,7 +11202,7 @@ dependencies = [ [[package]] name = "starknet_sierra_multicompile" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "assert_matches", "cairo-lang-sierra", @@ -11246,7 +11225,7 @@ dependencies = [ [[package]] name = "starknet_state_sync" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "async-trait", "futures", @@ -11265,7 +11244,7 @@ dependencies = [ [[package]] name = "starknet_state_sync_types" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "async-trait", "futures", @@ -11280,7 +11259,7 @@ dependencies = [ [[package]] name = "starknet_task_executor" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "futures", "rstest", @@ -11312,13 +11291,14 @@ checksum = "5c0e04424e733e69714ca1bbb9204c1a57f09f5493439520f9f68c132ad25eec" [[package]] name = "string_cache" -version = "0.8.8" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "938d512196766101d333398efde81bc1f37b00cb42c2f8350e5df639f040bbbe" +checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" dependencies = [ "new_debug_unreachable", + "once_cell", "parking_lot", - "phf_shared", + "phf_shared 0.10.0", "precomputed-hash", ] @@ -11359,7 +11339,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -11372,7 +11352,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -11392,7 +11372,7 @@ dependencies = [ "hex", "once_cell", "reqwest 0.11.27", - "semver 1.0.25", + "semver 1.0.26", "serde", "serde_json", "sha2", @@ -11414,9 +11394,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.98" +version = "2.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" +checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0" dependencies = [ "proc-macro2", "quote", @@ -11425,14 +11405,14 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "0.8.20" +version = "0.8.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7f6a4b9002584ea56d0a19713b65da44cbbf6070aca9ae0360577cba5c4db68" +checksum = "31e89d8bf2768d277f40573c83a02a099e96d96dd3104e13ea676194e61ac4b0" dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -11458,7 +11438,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -11478,7 +11458,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.6.0", "core-foundation", "system-configuration-sys 0.6.0", ] @@ -11540,15 +11520,15 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.16.0" +version = "3.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38c246215d7d24f48ae091a2902398798e05d978b24315d6efbc00ede9a8bb91" +checksum = "9a8a559c81686f576e8cd0290cd2a24a2a9ad80c98b3478856500fcbd7acd704" dependencies = [ "cfg-if", "fastrand 2.3.0", - "getrandom 0.3.1", + "getrandom 0.2.15", "once_cell", - "rustix 0.38.44", + "rustix 0.38.42", "windows-sys 0.59.0", ] @@ -11606,7 +11586,7 @@ dependencies = [ "cfg-if", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -11617,15 +11597,15 @@ checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", "test-case-core", ] [[package]] name = "test-log" -version = "0.2.17" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7f46083d221181166e5b6f6b1e5f1d499f3a76888826e6cb1d057554157cd0f" +checksum = "3dffced63c2b5c7be278154d76b479f9f9920ed34e7574201407f0b14e2bbb93" dependencies = [ "env_logger", "test-log-macros", @@ -11634,13 +11614,13 @@ dependencies = [ [[package]] name = "test-log-macros" -version = "0.2.17" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "888d0c3c6db53c0fdab160d2ed5e12ba745383d3e85813f2ea0f2b1475ab553f" +checksum = "5999e24eaa32083191ba4e425deb75cdf25efefabe5aaccb7446dd0d4122a3f5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -11669,7 +11649,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -11680,7 +11660,7 @@ checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -11821,9 +11801,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.43.0" +version = "1.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d61fa4ffa3de412bfea335c6ecff681de2b609ba3c77ef3e00e521813a9ed9e" +checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551" dependencies = [ "backtrace", "bytes", @@ -11839,13 +11819,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.5.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -11942,7 +11922,7 @@ dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.23", + "toml_edit 0.22.24", ] [[package]] @@ -11960,22 +11940,22 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.7.1", + "indexmap 2.8.0", "toml_datetime", "winnow 0.5.40", ] [[package]] name = "toml_edit" -version = "0.22.23" +version = "0.22.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02a8b472d1a3d7c18e2d61a489aee3453fd9031c33e4f55bd533f4a7adca1bee" +checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" dependencies = [ - "indexmap 2.7.1", + "indexmap 2.8.0", "serde", "serde_spanned", "toml_datetime", - "winnow 0.7.1", + "winnow 0.7.4", ] [[package]] @@ -12046,7 +12026,7 @@ checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -12129,7 +12109,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04659ddb06c87d233c566112c1c9c5b9e98256d9af50ec3bc9c8327f873a7568" dependencies = [ "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -12227,9 +12207,9 @@ checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" [[package]] name = "unicode-ident" -version = "1.0.16" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a210d160f08b701c8721ba1c726c11662f877ea6b7094007e1ca9a1041945034" +checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" [[package]] name = "unicode-normalization" @@ -12317,10 +12297,10 @@ dependencies = [ "base64 0.22.1", "log", "once_cell", - "rustls 0.23.22", + "rustls 0.23.20", "rustls-pki-types", "url", - "webpki-roots 0.26.8", + "webpki-roots 0.26.7", ] [[package]] @@ -12377,9 +12357,9 @@ dependencies = [ [[package]] name = "uuid" -version = "1.12.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3758f5e68192bb96cc8f9b7e2c2cfdabb435499a28499a42f8f984092adad4b" +checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" [[package]] name = "validator" @@ -12422,9 +12402,9 @@ checksum = "ad9680608df133af2c1ddd5eaf1ddce91d60d61b6bc51494ef326458365a470a" [[package]] name = "valuable" -version = "0.1.1" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" [[package]] name = "value-bag" @@ -12452,9 +12432,9 @@ checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" [[package]] name = "wait-timeout" -version = "0.2.1" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ac3b126d3914f9849036f826e054cbabdc8519970b8998ddaf3b5bd3c65f11" +checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" dependencies = [ "libc", ] @@ -12501,35 +12481,34 @@ dependencies = [ [[package]] name = "wasm-bindgen" -version = "0.2.100" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396" dependencies = [ "cfg-if", "once_cell", - "rustversion", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.100" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79" dependencies = [ "bumpalo", "log", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.50" +version = "0.4.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +checksum = "38176d9b44ea84e9184eff0bc34cc167ed044f816accfe5922e54d84cf48eca2" dependencies = [ "cfg-if", "js-sys", @@ -12540,9 +12519,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.100" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -12550,25 +12529,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.100" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.100" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" -dependencies = [ - "unicode-ident", -] +checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" [[package]] name = "wasm-streams" @@ -12585,9 +12561,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.77" +version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +checksum = "04dd7223427d52553d3702c004d3b2fe07c148165faa56313cb00211e31c12bc" dependencies = [ "js-sys", "wasm-bindgen", @@ -12611,9 +12587,9 @@ checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" [[package]] name = "webpki-roots" -version = "0.26.8" +version = "0.26.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2210b291f7ea53617fbafcc4939f10914214ec15aace5ba62293a668f322c5c9" +checksum = "5d642ff16b7e79272ae451b7322067cdc17cadf68c23264be9d94a32319efe7e" dependencies = [ "rustls-pki-types", ] @@ -12968,9 +12944,18 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.1" +version = "0.6.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39281189af81c07ec09db316b302a3e67bf9bd7cbf6c820b50e35fee9c2fa980" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86e376c75f4f43f44db463cf729e0d3acbf954d13e22c51e26e4c264b4ab545f" +checksum = "0e97b544156e9bebe1a0ffbc03484fc1ffe3100cbce3ffb17eac35f7cdd7ab36" dependencies = [ "memchr", ] @@ -12991,12 +12976,12 @@ version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.6.0", ] [[package]] name = "workspace_tests" -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" dependencies = [ "serde", "toml", @@ -13064,7 +13049,7 @@ dependencies = [ "data-encoding", "der-parser", "lazy_static", - "nom 7.1.3", + "nom", "oid-registry", "rusticata-macros", "thiserror 1.0.69", @@ -13078,15 +13063,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e105d177a3871454f754b33bb0ee637ecaaac997446375fd3e5d43a2ed00c909" dependencies = [ "libc", - "linux-raw-sys 0.4.15", - "rustix 0.38.44", + "linux-raw-sys 0.4.14", + "rustix 0.38.42", ] [[package]] name = "xml-rs" -version = "0.8.25" +version = "0.8.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5b940ebc25896e71dd073bad2dbaa2abfe97b0a391415e22ad1326d9c54e3c4" +checksum = "ea8b391c9a790b496184c29f7f93b9ed5b16abb306c05415b68bcc16e4d06432" [[package]] name = "xmltree" @@ -13184,7 +13169,7 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", "synstructure", ] @@ -13215,7 +13200,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -13226,7 +13211,7 @@ checksum = "5226bc9a9a9836e7428936cde76bb6b22feea1a8bfdbc0d241136e4d13417e25" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -13246,7 +13231,7 @@ checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", "synstructure", ] @@ -13267,7 +13252,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -13289,7 +13274,7 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 893032cc802..4670f783a26 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -57,10 +57,8 @@ members = [ "workspace_tests", ] -exclude = ["crates/bin/starknet-native-compile"] - [workspace.package] -version = "0.14.0-rc.0" +version = "0.14.0-rc.3" edition = "2021" repository = "https://github.com/starkware-libs/sequencer/" license = "Apache-2.0" @@ -91,23 +89,23 @@ base64 = "0.13.0" bincode = "1.3.3" bisection = "0.1.0" bitvec = "1.0.1" -blockifier = { path = "crates/blockifier", version = "0.14.0-rc.0" } +blockifier = { path = "crates/blockifier", version = "0.14.0-rc.3" } byteorder = "1.4.3" bytes = "1" cached = "0.44.0" cairo-felt = "0.9.1" -cairo-lang-casm = "2.12.0-dev.0" -cairo-lang-runner = "2.12.0-dev.0" -cairo-lang-sierra = "=2.12.0-dev.0" -cairo-lang-sierra-to-casm = "2.12.0-dev.0" -cairo-lang-starknet-classes = "2.12.0-dev.0" -cairo-lang-utils = "2.12.0-dev.0" -cairo-native = { git = "https://github.com/lambdaclass/cairo_native", rev = "fe539d2f3f09bdac99f89db3e3e44549ef5d01ad" } -sierra-emu = { git = "https://github.com/lambdaclass/sierra-emu", rev = "a13128c78d0e681f3d2bd021cabd3a2a4406efb0" } -cairo-vm = "2.0.1" +cairo-lang-casm = "2.11.2" +cairo-lang-runner = "2.11.2" +cairo-lang-sierra = "2.11.2" +cairo-lang-sierra-to-casm = "2.11.2" +cairo-lang-starknet-classes = "2.11.2" +cairo-lang-utils = "2.11.2" +cairo-native = { git = "https://github.com/lambdaclass/cairo_native", rev = "66dbbd3309ccd5671ddeb708d843cd5bcedc8980" } +sierra-emu = { git = "https://github.com/lambdaclass/sierra-emu", rev = "2bcab23a54a29777361a5931d61d5ce90c11b3de" } +cairo-vm = "=1.0.2" camelpaste = "0.1.0" chrono = "0.4.26" -clap = "4.5.26" +clap = "4.5.4" colored = "2.1.0" const_format = "0.2.30" criterion = "0.5.1" @@ -147,7 +145,7 @@ libp2p-swarm-test = "0.3.0" log = "0.4" lru = "0.12.0" memmap2 = "0.8.0" -mempool_test_utils = { path = "crates/mempool_test_utils", version = "0.14.0-rc.0" } +mempool_test_utils = { path = "crates/mempool_test_utils", version = "0.14.0-rc.3" } metrics = "0.21.0" metrics-exporter-prometheus = "0.12.1" metrics-process = "1.0.11" @@ -161,23 +159,23 @@ num-traits = "0.2.15" once_cell = "1.19.0" os_info = "3.6.0" page_size = "0.6.0" -papyrus_base_layer = { path = "crates/papyrus_base_layer", version = "0.14.0-rc.0" } -papyrus_common = { path = "crates/papyrus_common", version = "0.14.0-rc.0" } -papyrus_config = { path = "crates/papyrus_config", version = "0.14.0-rc.0" } -papyrus_consensus = { path = "crates/sequencing/papyrus_consensus", version = "0.14.0-rc.0" } -papyrus_consensus_orchestrator = { path = "crates/sequencing/papyrus_consensus_orchestrator", version = "0.14.0-rc.0" } -papyrus_execution = { path = "crates/papyrus_execution", version = "0.14.0-rc.0" } -papyrus_monitoring_gateway = { path = "crates/papyrus_monitoring_gateway", version = "0.14.0-rc.0" } -papyrus_network = { path = "crates/papyrus_network", version = "0.14.0-rc.0" } -papyrus_network_types = { path = "crates/papyrus_network_types", version = "0.14.0-rc.0" } -papyrus_p2p_sync = { path = "crates/papyrus_p2p_sync", version = "0.14.0-rc.0" } -papyrus_proc_macros = { path = "crates/papyrus_proc_macros", version = "0.14.0-rc.0" } -papyrus_protobuf = { path = "crates/papyrus_protobuf", version = "0.14.0-rc.0" } -papyrus_rpc = { path = "crates/papyrus_rpc", version = "0.14.0-rc.0" } -papyrus_state_reader = { path = "crates/papyrus_state_reader", version = "0.14.0-rc.0" } -papyrus_storage = { path = "crates/papyrus_storage", version = "0.14.0-rc.0" } -papyrus_sync = { path = "crates/papyrus_sync", version = "0.14.0-rc.0" } -papyrus_test_utils = { path = "crates/papyrus_test_utils", version = "0.14.0-rc.0" } +papyrus_base_layer = { path = "crates/papyrus_base_layer", version = "0.14.0-rc.3" } +papyrus_common = { path = "crates/papyrus_common", version = "0.14.0-rc.3" } +papyrus_config = { path = "crates/papyrus_config", version = "0.14.0-rc.3" } +papyrus_consensus = { path = "crates/sequencing/papyrus_consensus", version = "0.14.0-rc.3" } +papyrus_consensus_orchestrator = { path = "crates/sequencing/papyrus_consensus_orchestrator", version = "0.14.0-rc.3" } +papyrus_execution = { path = "crates/papyrus_execution", version = "0.14.0-rc.3" } +papyrus_monitoring_gateway = { path = "crates/papyrus_monitoring_gateway", version = "0.14.0-rc.3" } +papyrus_network = { path = "crates/papyrus_network", version = "0.14.0-rc.3" } +papyrus_network_types = { path = "crates/papyrus_network_types", version = "0.14.0-rc.3" } +papyrus_p2p_sync = { path = "crates/papyrus_p2p_sync", version = "0.14.0-rc.3" } +papyrus_proc_macros = { path = "crates/papyrus_proc_macros", version = "0.14.0-rc.3" } +papyrus_protobuf = { path = "crates/papyrus_protobuf", version = "0.14.0-rc.3" } +papyrus_rpc = { path = "crates/papyrus_rpc", version = "0.14.0-rc.3" } +papyrus_state_reader = { path = "crates/papyrus_state_reader", version = "0.14.0-rc.3" } +papyrus_storage = { path = "crates/papyrus_storage", version = "0.14.0-rc.3" } +papyrus_sync = { path = "crates/papyrus_sync", version = "0.14.0-rc.3" } +papyrus_test_utils = { path = "crates/papyrus_test_utils", version = "0.14.0-rc.3" } parity-scale-codec = "3.6" parity-scale-codec-derive = "3.6" paste = "1.0.15" @@ -215,31 +213,31 @@ simple_logger = "4.0.0" starknet-core = "0.6.0" starknet-crypto = "0.7.1" starknet-types-core = "0.1.6" -starknet_api = { path = "crates/starknet_api", version = "0.14.0-rc.0" } -starknet_batcher = { path = "crates/starknet_batcher", version = "0.14.0-rc.0" } -starknet_batcher_types = { path = "crates/starknet_batcher_types", version = "0.14.0-rc.0" } -starknet_class_manager_types = { path = "crates/starknet_class_manager_types", version = "0.14.0-rc.0" } -starknet_client = { path = "crates/starknet_client", version = "0.14.0-rc.0" } -starknet_committer = { path = "crates/starknet_committer", version = "0.14.0-rc.0" } -starknet_consensus_manager = { path = "crates/starknet_consensus_manager", version = "0.14.0-rc.0" } -starknet_gateway = { path = "crates/starknet_gateway", version = "0.14.0-rc.0" } -starknet_gateway_types = { path = "crates/starknet_gateway_types", version = "0.14.0-rc.0" } -starknet_http_server = { path = "crates/starknet_http_server", version = "0.14.0-rc.0" } -starknet_infra_utils = { path = "crates/starknet_infra_utils", version = "0.14.0-rc.0" } -starknet_l1_provider = { path = "crates/starknet_l1_provider", version = "0.14.0-rc.0" } -starknet_l1_provider_types = { path = "crates/starknet_l1_provider_types", version = "0.14.0-rc.0" } -starknet_mempool = { path = "crates/starknet_mempool", version = "0.14.0-rc.0" } -starknet_mempool_p2p = { path = "crates/starknet_mempool_p2p", version = "0.14.0-rc.0" } -starknet_mempool_p2p_types = { path = "crates/starknet_mempool_p2p_types", version = "0.14.0-rc.0" } -starknet_mempool_types = { path = "crates/starknet_mempool_types", version = "0.14.0-rc.0" } -starknet_monitoring_endpoint = { path = "crates/starknet_monitoring_endpoint", version = "0.14.0-rc.0" } -starknet_patricia = { path = "crates/starknet_patricia", version = "0.14.0-rc.0" } -starknet_sequencer_infra = { path = "crates/starknet_sequencer_infra", version = "0.14.0-rc.0" } -starknet_sequencer_node = { path = "crates/starknet_sequencer_node", version = "0.14.0-rc.0" } -starknet_sierra_multicompile = { path = "crates/starknet_sierra_multicompile", version = "0.14.0-rc.0" } -starknet_state_sync = { path = "crates/starknet_state_sync", version = "0.14.0-rc.0" } -starknet_state_sync_types = { path = "crates/starknet_state_sync_types", version = "0.14.0-rc.0" } -starknet_task_executor = { path = "crates/starknet_task_executor", version = "0.14.0-rc.0" } +starknet_api = { path = "crates/starknet_api", version = "0.14.0-rc.3" } +starknet_batcher = { path = "crates/starknet_batcher", version = "0.14.0-rc.3" } +starknet_batcher_types = { path = "crates/starknet_batcher_types", version = "0.14.0-rc.3" } +starknet_class_manager_types = { path = "crates/starknet_class_manager_types", version = "0.14.0-rc.3" } +starknet_client = { path = "crates/starknet_client", version = "0.14.0-rc.3" } +starknet_committer = { path = "crates/starknet_committer", version = "0.14.0-rc.3" } +starknet_consensus_manager = { path = "crates/starknet_consensus_manager", version = "0.14.0-rc.3" } +starknet_gateway = { path = "crates/starknet_gateway", version = "0.14.0-rc.3" } +starknet_gateway_types = { path = "crates/starknet_gateway_types", version = "0.14.0-rc.3" } +starknet_http_server = { path = "crates/starknet_http_server", version = "0.14.0-rc.3" } +starknet_infra_utils = { path = "crates/starknet_infra_utils", version = "0.14.0-rc.3" } +starknet_l1_provider = { path = "crates/starknet_l1_provider", version = "0.14.0-rc.3" } +starknet_l1_provider_types = { path = "crates/starknet_l1_provider_types", version = "0.14.0-rc.3" } +starknet_mempool = { path = "crates/starknet_mempool", version = "0.14.0-rc.3" } +starknet_mempool_p2p = { path = "crates/starknet_mempool_p2p", version = "0.14.0-rc.3" } +starknet_mempool_p2p_types = { path = "crates/starknet_mempool_p2p_types", version = "0.14.0-rc.3" } +starknet_mempool_types = { path = "crates/starknet_mempool_types", version = "0.14.0-rc.3" } +starknet_monitoring_endpoint = { path = "crates/starknet_monitoring_endpoint", version = "0.14.0-rc.3" } +starknet_patricia = { path = "crates/starknet_patricia", version = "0.14.0-rc.3" } +starknet_sequencer_infra = { path = "crates/starknet_sequencer_infra", version = "0.14.0-rc.3" } +starknet_sequencer_node = { path = "crates/starknet_sequencer_node", version = "0.14.0-rc.3" } +starknet_sierra_multicompile = { path = "crates/starknet_sierra_multicompile", version = "0.14.0-rc.3" } +starknet_state_sync = { path = "crates/starknet_state_sync", version = "0.14.0-rc.3" } +starknet_state_sync_types = { path = "crates/starknet_state_sync_types", version = "0.14.0-rc.3" } +starknet_task_executor = { path = "crates/starknet_task_executor", version = "0.14.0-rc.3" } static_assertions = "1.1.0" statistical = "1.0.0" strum = "0.25.0" @@ -275,9 +273,14 @@ zstd = "0.13.1" future-incompatible = "warn" nonstandard-style = "warn" rust-2018-idioms = "warn" -# See [here](https://github.com/taiki-e/cargo-llvm-cov/issues/370) for a discussion on why this is -# needed (from rust 1.80). -unexpected_cfgs = { level = "warn", check-cfg = ['cfg(coverage_nightly)'] } +unexpected_cfgs = { level = "warn", check-cfg = [ + # See [here](https://github.com/taiki-e/cargo-llvm-cov/issues/370) for a discussion on why this is + # needed (from rust 1.80). + 'cfg(coverage_nightly)', + # From rust 1.84, seems like the pyo3 crate version we are using breaks. Remove this once pyo3 is + # removed from the workspace. + 'cfg(addr_of)', +] } [workspace.lints.clippy] as_conversions = "warn" diff --git a/config/sequencer/default_config.json b/config/sequencer/default_config.json index fe5dcc961ba..7d739be9b78 100644 --- a/config/sequencer/default_config.json +++ b/config/sequencer/default_config.json @@ -1,54 +1,4 @@ { - "batcher_config.block_builder_config.bouncer_config.block_max_capacity.builtin_count.add_mod": { - "description": "Max number of add mod builtin usage in a block.", - "privacy": "Public", - "value": 156250 - }, - "batcher_config.block_builder_config.bouncer_config.block_max_capacity.builtin_count.bitwise": { - "description": "Max number of bitwise builtin usage in a block.", - "privacy": "Public", - "value": 39062 - }, - "batcher_config.block_builder_config.bouncer_config.block_max_capacity.builtin_count.ec_op": { - "description": "Max number of EC operation builtin usage in a block.", - "privacy": "Public", - "value": 2441 - }, - "batcher_config.block_builder_config.bouncer_config.block_max_capacity.builtin_count.ecdsa": { - "description": "Max number of ECDSA builtin usage in a block.", - "privacy": "Public", - "value": 1220 - }, - "batcher_config.block_builder_config.bouncer_config.block_max_capacity.builtin_count.keccak": { - "description": "Max number of keccak builtin usage in a block.", - "privacy": "Public", - "value": 1220 - }, - "batcher_config.block_builder_config.bouncer_config.block_max_capacity.builtin_count.mul_mod": { - "description": "Max number of mul mod builtin usage in a block.", - "privacy": "Public", - "value": 156250 - }, - "batcher_config.block_builder_config.bouncer_config.block_max_capacity.builtin_count.pedersen": { - "description": "Max number of pedersen builtin usage in a block.", - "privacy": "Public", - "value": 78125 - }, - "batcher_config.block_builder_config.bouncer_config.block_max_capacity.builtin_count.poseidon": { - "description": "Max number of poseidon builtin usage in a block.", - "privacy": "Public", - "value": 78125 - }, - "batcher_config.block_builder_config.bouncer_config.block_max_capacity.builtin_count.range_check": { - "description": "Max number of range check builtin usage in a block.", - "privacy": "Public", - "value": 156250 - }, - "batcher_config.block_builder_config.bouncer_config.block_max_capacity.builtin_count.range_check96": { - "description": "Max number of range check 96 builtin usage in a block.", - "privacy": "Public", - "value": 156250 - }, "batcher_config.block_builder_config.bouncer_config.block_max_capacity.l1_gas": { "description": "An upper bound on the total l1_gas used in a block.", "privacy": "Public", @@ -64,15 +14,10 @@ "privacy": "Public", "value": 5000 }, - "batcher_config.block_builder_config.bouncer_config.block_max_capacity.n_steps": { - "description": "An upper bound on the total number of steps in a block.", - "privacy": "Public", - "value": 2500000 - }, "batcher_config.block_builder_config.bouncer_config.block_max_capacity.sierra_gas": { "description": "An upper bound on the total sierra_gas used in a block.", "privacy": "Public", - "value": 250000000 + "value": 400000000 }, "batcher_config.block_builder_config.bouncer_config.block_max_capacity.state_diff_size": { "description": "An upper bound on the total state diff size in a block.", @@ -112,7 +57,7 @@ "batcher_config.block_builder_config.execute_config.stack_size": { "description": "The thread stack size (proportional to the maximal gas of a transaction).", "privacy": "Public", - "value": 0 + "value": 62914560 }, "batcher_config.block_builder_config.tx_chunk_size": { "description": "The size of the transaction chunk.", @@ -124,6 +69,11 @@ "pointer_target": "versioned_constants_overrides.invoke_tx_max_n_steps", "privacy": "Public" }, + "batcher_config.block_builder_config.versioned_constants_overrides.max_n_events": { + "description": "Maximum number of events that can be emitted from the transation.", + "pointer_target": "versioned_constants_overrides.max_n_events", + "privacy": "Public" + }, "batcher_config.block_builder_config.versioned_constants_overrides.max_recursion_depth": { "description": "Maximum recursion depth for nested calls during blockifier validation.", "pointer_target": "versioned_constants_overrides.max_recursion_depth", @@ -137,7 +87,12 @@ "batcher_config.contract_class_manager_config.cairo_native_run_config.channel_size": { "description": "The size of the compilation request channel.", "privacy": "Public", - "value": 1000 + "value": 2000 + }, + "batcher_config.contract_class_manager_config.cairo_native_run_config.native_classes_whitelist": { + "description": "Contracts for Cairo Specifies whether to execute all class hashes or only a limited selection using Cairo native contracts. If limited, a specific list of class hashes is provided. compilation.", + "privacy": "Public", + "value": "All" }, "batcher_config.contract_class_manager_config.cairo_native_run_config.run_cairo_native": { "description": "Enables Cairo native execution.", @@ -152,17 +107,7 @@ "batcher_config.contract_class_manager_config.contract_cache_size": { "description": "The size of the global contract cache.", "privacy": "Public", - "value": 400 - }, - "batcher_config.contract_class_manager_config.native_compiler_config.libcairo_native_runtime_path": { - "description": "The path to the Cairo native runtime library file.", - "privacy": "Public", - "value": "" - }, - "batcher_config.contract_class_manager_config.native_compiler_config.libcairo_native_runtime_path.#is_none": { - "description": "Flag for an optional field.", - "privacy": "TemporaryValue", - "value": true + "value": 600 }, "batcher_config.contract_class_manager_config.native_compiler_config.max_casm_bytecode_size": { "description": "Limitation of compiled casm bytecode size.", @@ -172,7 +117,7 @@ "batcher_config.contract_class_manager_config.native_compiler_config.max_cpu_time": { "description": "Limitation of compilation cpu time (seconds).", "privacy": "Public", - "value": 15 + "value": 20 }, "batcher_config.contract_class_manager_config.native_compiler_config.max_memory_usage": { "description": "Limitation of compilation process's virtual memory (bytes).", @@ -184,6 +129,16 @@ "privacy": "Public", "value": 15728640 }, + "batcher_config.contract_class_manager_config.native_compiler_config.optimization_level": { + "description": "The level of optimization to apply during compilation.", + "privacy": "Public", + "value": 2 + }, + "batcher_config.contract_class_manager_config.native_compiler_config.panic_on_compilation_failure": { + "description": "Whether to panic on compilation failure.", + "privacy": "Public", + "value": false + }, "batcher_config.contract_class_manager_config.native_compiler_config.sierra_to_native_compiler_path": { "description": "The path to the Sierra-to-Native compiler binary.", "privacy": "Public", @@ -264,16 +219,6 @@ "param_type": "String", "privacy": "TemporaryValue" }, - "compiler_config.libcairo_native_runtime_path": { - "description": "The path to the Cairo native runtime library file.", - "privacy": "Public", - "value": "" - }, - "compiler_config.libcairo_native_runtime_path.#is_none": { - "description": "Flag for an optional field.", - "privacy": "TemporaryValue", - "value": true - }, "compiler_config.max_casm_bytecode_size": { "description": "Limitation of compiled casm bytecode size.", "privacy": "Public", @@ -282,7 +227,7 @@ "compiler_config.max_cpu_time": { "description": "Limitation of compilation cpu time (seconds).", "privacy": "Public", - "value": 15 + "value": 20 }, "compiler_config.max_memory_usage": { "description": "Limitation of compilation process's virtual memory (bytes).", @@ -294,6 +239,16 @@ "privacy": "Public", "value": 15728640 }, + "compiler_config.optimization_level": { + "description": "The level of optimization to apply during compilation.", + "privacy": "Public", + "value": 2 + }, + "compiler_config.panic_on_compilation_failure": { + "description": "Whether to panic on compilation failure.", + "privacy": "Public", + "value": false + }, "compiler_config.sierra_to_native_compiler_path": { "description": "The path to the Sierra-to-Native compiler binary.", "privacy": "Public", @@ -849,6 +804,11 @@ "pointer_target": "versioned_constants_overrides.invoke_tx_max_n_steps", "privacy": "Public" }, + "gateway_config.stateful_tx_validator_config.versioned_constants_overrides.max_n_events": { + "description": "Maximum number of events that can be emitted from the transation.", + "pointer_target": "versioned_constants_overrides.max_n_events", + "privacy": "Public" + }, "gateway_config.stateful_tx_validator_config.versioned_constants_overrides.max_recursion_depth": { "description": "Maximum recursion depth for nested calls during blockifier validation.", "pointer_target": "versioned_constants_overrides.max_recursion_depth", @@ -1219,6 +1179,11 @@ "privacy": "TemporaryValue", "value": 10000000 }, + "versioned_constants_overrides.max_n_events": { + "description": "Maximum number of events that can be emitted from the transation.", + "privacy": "TemporaryValue", + "value": 1000 + }, "versioned_constants_overrides.max_recursion_depth": { "description": "Maximum recursion depth for nested calls during blockifier validation.", "privacy": "TemporaryValue", diff --git a/crates/bin/starknet-native-compile/Cargo.lock b/crates/bin/starknet-native-compile/Cargo.lock deleted file mode 100644 index 69133700310..00000000000 --- a/crates/bin/starknet-native-compile/Cargo.lock +++ /dev/null @@ -1,3859 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 4 - -[[package]] -name = "adler2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" - -[[package]] -name = "aes" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" -dependencies = [ - "cfg-if", - "cipher", - "cpufeatures", -] - -[[package]] -name = "ahash" -version = "0.8.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" -dependencies = [ - "cfg-if", - "once_cell", - "version_check", - "zerocopy", -] - -[[package]] -name = "aho-corasick" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" -dependencies = [ - "memchr", -] - -[[package]] -name = "allocator-api2" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" - -[[package]] -name = "anstream" -version = "0.6.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" -dependencies = [ - "anstyle", - "anstyle-parse", - "anstyle-query", - "anstyle-wincon", - "colorchoice", - "is_terminal_polyfill", - "utf8parse", -] - -[[package]] -name = "anstyle" -version = "1.0.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" - -[[package]] -name = "anstyle-parse" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" -dependencies = [ - "utf8parse", -] - -[[package]] -name = "anstyle-query" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" -dependencies = [ - "windows-sys", -] - -[[package]] -name = "anstyle-wincon" -version = "3.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" -dependencies = [ - "anstyle", - "windows-sys", -] - -[[package]] -name = "anyhow" -version = "1.0.95" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04" - -[[package]] -name = "aquamarine" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f50776554130342de4836ba542aa85a4ddb361690d7e8df13774d7284c3d5c2" -dependencies = [ - "include_dir", - "itertools 0.10.5", - "proc-macro-error2", - "proc-macro2", - "quote", - "syn 2.0.95", -] - -[[package]] -name = "ark-ec" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" -dependencies = [ - "ark-ff 0.4.2", - "ark-poly 0.4.2", - "ark-serialize 0.4.2", - "ark-std 0.4.0", - "derivative", - "hashbrown 0.13.2", - "itertools 0.10.5", - "num-traits", - "zeroize", -] - -[[package]] -name = "ark-ec" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43d68f2d516162846c1238e755a7c4d131b892b70cc70c471a8e3ca3ed818fce" -dependencies = [ - "ahash", - "ark-ff 0.5.0", - "ark-poly 0.5.0", - "ark-serialize 0.5.0", - "ark-std 0.5.0", - "educe 0.6.0", - "fnv", - "hashbrown 0.15.2", - "itertools 0.13.0", - "num-bigint", - "num-integer", - "num-traits", - "zeroize", -] - -[[package]] -name = "ark-ff" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" -dependencies = [ - "ark-ff-asm 0.4.2", - "ark-ff-macros 0.4.2", - "ark-serialize 0.4.2", - "ark-std 0.4.0", - "derivative", - "digest", - "itertools 0.10.5", - "num-bigint", - "num-traits", - "paste", - "rustc_version", - "zeroize", -] - -[[package]] -name = "ark-ff" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a177aba0ed1e0fbb62aa9f6d0502e9b46dad8c2eab04c14258a1212d2557ea70" -dependencies = [ - "ark-ff-asm 0.5.0", - "ark-ff-macros 0.5.0", - "ark-serialize 0.5.0", - "ark-std 0.5.0", - "arrayvec", - "digest", - "educe 0.6.0", - "itertools 0.13.0", - "num-bigint", - "num-traits", - "paste", - "zeroize", -] - -[[package]] -name = "ark-ff-asm" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" -dependencies = [ - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-ff-asm" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" -dependencies = [ - "quote", - "syn 2.0.95", -] - -[[package]] -name = "ark-ff-macros" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" -dependencies = [ - "num-bigint", - "num-traits", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-ff-macros" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" -dependencies = [ - "num-bigint", - "num-traits", - "proc-macro2", - "quote", - "syn 2.0.95", -] - -[[package]] -name = "ark-poly" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" -dependencies = [ - "ark-ff 0.4.2", - "ark-serialize 0.4.2", - "ark-std 0.4.0", - "derivative", - "hashbrown 0.13.2", -] - -[[package]] -name = "ark-poly" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "579305839da207f02b89cd1679e50e67b4331e2f9294a57693e5051b7703fe27" -dependencies = [ - "ahash", - "ark-ff 0.5.0", - "ark-serialize 0.5.0", - "ark-std 0.5.0", - "educe 0.6.0", - "fnv", - "hashbrown 0.15.2", -] - -[[package]] -name = "ark-secp256k1" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c02e954eaeb4ddb29613fee20840c2bbc85ca4396d53e33837e11905363c5f2" -dependencies = [ - "ark-ec 0.4.2", - "ark-ff 0.4.2", - "ark-std 0.4.0", -] - -[[package]] -name = "ark-secp256k1" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8bd211c48debd3037b48873a7aa22c3aba034e83388aa4124795c9f220b88c7" -dependencies = [ - "ark-ec 0.5.0", - "ark-ff 0.5.0", - "ark-std 0.5.0", -] - -[[package]] -name = "ark-secp256r1" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3975a01b0a6e3eae0f72ec7ca8598a6620fc72fa5981f6f5cca33b7cd788f633" -dependencies = [ - "ark-ec 0.4.2", - "ark-ff 0.4.2", - "ark-std 0.4.0", -] - -[[package]] -name = "ark-secp256r1" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cf8be5820de567729bfa73a410ddd07cec8ad102d9a4bf61fd6b2e60db264e8" -dependencies = [ - "ark-ec 0.5.0", - "ark-ff 0.5.0", - "ark-std 0.5.0", -] - -[[package]] -name = "ark-serialize" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" -dependencies = [ - "ark-serialize-derive 0.4.2", - "ark-std 0.4.0", - "digest", - "num-bigint", -] - -[[package]] -name = "ark-serialize" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f4d068aaf107ebcd7dfb52bc748f8030e0fc930ac8e360146ca54c1203088f7" -dependencies = [ - "ark-serialize-derive 0.5.0", - "ark-std 0.5.0", - "arrayvec", - "digest", - "num-bigint", -] - -[[package]] -name = "ark-serialize-derive" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae3281bc6d0fd7e549af32b52511e1302185bd688fd3359fa36423346ff682ea" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-serialize-derive" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.95", -] - -[[package]] -name = "ark-std" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" -dependencies = [ - "num-traits", - "rand", -] - -[[package]] -name = "ark-std" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" -dependencies = [ - "num-traits", - "rand", -] - -[[package]] -name = "arrayvec" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" - -[[package]] -name = "ascii-canvas" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8824ecca2e851cec16968d54a01dd372ef8f95b244fb84b84e70128be347c3c6" -dependencies = [ - "term", -] - -[[package]] -name = "assert_matches" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" - -[[package]] -name = "autocfg" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" - -[[package]] -name = "base64ct" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" - -[[package]] -name = "bincode" -version = "2.0.0-rc.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f11ea1a0346b94ef188834a65c068a03aec181c94896d481d7a0a40d85b0ce95" -dependencies = [ - "serde", -] - -[[package]] -name = "bindgen" -version = "0.69.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088" -dependencies = [ - "bitflags", - "cexpr", - "clang-sys", - "itertools 0.10.5", - "lazy_static", - "lazycell", - "log", - "prettyplease", - "proc-macro2", - "quote", - "regex", - "rustc-hash 1.1.0", - "shlex", - "syn 2.0.95", - "which", -] - -[[package]] -name = "bindgen" -version = "0.71.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f58bf3d7db68cfbac37cfc485a8d711e87e064c3d0fe0435b92f7a407f9d6b3" -dependencies = [ - "bitflags", - "cexpr", - "clang-sys", - "itertools 0.13.0", - "log", - "prettyplease", - "proc-macro2", - "quote", - "regex", - "rustc-hash 2.1.0", - "shlex", - "syn 2.0.95", -] - -[[package]] -name = "bit-set" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" -dependencies = [ - "bit-vec", -] - -[[package]] -name = "bit-vec" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" - -[[package]] -name = "bitflags" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" - -[[package]] -name = "bitvec" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" -dependencies = [ - "funty", - "radium", - "tap", - "wyz", -] - -[[package]] -name = "block-buffer" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" -dependencies = [ - "generic-array", -] - -[[package]] -name = "bon" -version = "3.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe7acc34ff59877422326db7d6f2d845a582b16396b6b08194942bf34c6528ab" -dependencies = [ - "bon-macros", - "rustversion", -] - -[[package]] -name = "bon-macros" -version = "3.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4159dd617a7fbc9be6a692fe69dc2954f8e6bb6bb5e4d7578467441390d77fd0" -dependencies = [ - "darling", - "ident_case", - "prettyplease", - "proc-macro2", - "quote", - "rustversion", - "syn 2.0.95", -] - -[[package]] -name = "bstr" -version = "1.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "531a9155a481e2ee699d4f98f43c0ca4ff8ee1bfd55c31e9e98fb29d2b176fe0" -dependencies = [ - "memchr", - "serde", -] - -[[package]] -name = "bumpalo" -version = "3.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" - -[[package]] -name = "byte-slice-cast" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" - -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" - -[[package]] -name = "bzip2" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" -dependencies = [ - "bzip2-sys", - "libc", -] - -[[package]] -name = "bzip2-sys" -version = "0.1.11+1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" -dependencies = [ - "cc", - "libc", - "pkg-config", -] - -[[package]] -name = "cairo-lang-casm" -version = "2.10.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "151375fd72f8765eb3ca78b4aa8f71269179169d4a8d3d03f4d8a80ff062d1e5" -dependencies = [ - "cairo-lang-utils", - "indoc", - "num-bigint", - "num-traits", - "parity-scale-codec", - "serde", -] - -[[package]] -name = "cairo-lang-compiler" -version = "2.10.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b013e303a3b2c67599cbb020d1ae3b96ceef19ed522625b32a1f4f8904bdc2d0" -dependencies = [ - "anyhow", - "cairo-lang-defs", - "cairo-lang-diagnostics", - "cairo-lang-filesystem", - "cairo-lang-lowering", - "cairo-lang-parser", - "cairo-lang-project", - "cairo-lang-semantic", - "cairo-lang-sierra", - "cairo-lang-sierra-generator", - "cairo-lang-syntax", - "cairo-lang-utils", - "indoc", - "rayon", - "rust-analyzer-salsa", - "semver", - "smol_str", - "thiserror 1.0.69", -] - -[[package]] -name = "cairo-lang-debug" -version = "2.10.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33e397d9e5f085d04f9251c3e8c6bba2c0aeb39cb41de532977f08bc8dd0dffa" -dependencies = [ - "cairo-lang-utils", -] - -[[package]] -name = "cairo-lang-defs" -version = "2.10.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e293692f3db2fdc2ab72ced7c1a31de9c7ba6f7202dfa67c4596a42fca5255e5" -dependencies = [ - "cairo-lang-debug", - "cairo-lang-diagnostics", - "cairo-lang-filesystem", - "cairo-lang-parser", - "cairo-lang-syntax", - "cairo-lang-utils", - "itertools 0.12.1", - "rust-analyzer-salsa", - "smol_str", -] - -[[package]] -name = "cairo-lang-diagnostics" -version = "2.10.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af2fad7dcf507f01810038b3879310514e238c92c9e86cf66ed898e53dadc273" -dependencies = [ - "cairo-lang-debug", - "cairo-lang-filesystem", - "cairo-lang-utils", - "itertools 0.12.1", -] - -[[package]] -name = "cairo-lang-eq-solver" -version = "2.10.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62bbbd955110dc35770c77f5f4e420ea963a175a70199c8d95777b1e53da40a8" -dependencies = [ - "cairo-lang-utils", - "good_lp", -] - -[[package]] -name = "cairo-lang-filesystem" -version = "2.10.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff86b7145e376eb7787da47d214583482944f8b40335947804466211e1b5f3a0" -dependencies = [ - "cairo-lang-debug", - "cairo-lang-utils", - "path-clean", - "rust-analyzer-salsa", - "semver", - "serde", - "smol_str", - "toml", -] - -[[package]] -name = "cairo-lang-formatter" -version = "2.10.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1b8abd7b170b48b9eadb758b4fdab7e9f03bad8b2cbe23ad8b6e38232311da0" -dependencies = [ - "anyhow", - "cairo-lang-diagnostics", - "cairo-lang-filesystem", - "cairo-lang-parser", - "cairo-lang-syntax", - "cairo-lang-utils", - "diffy", - "ignore", - "itertools 0.12.1", - "rust-analyzer-salsa", - "serde", - "thiserror 1.0.69", -] - -[[package]] -name = "cairo-lang-lowering" -version = "2.10.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d907f52244a34208ee2e5232602aa213ae190c8c015a9ab0e378b695ca9cc1b0" -dependencies = [ - "cairo-lang-debug", - "cairo-lang-defs", - "cairo-lang-diagnostics", - "cairo-lang-filesystem", - "cairo-lang-parser", - "cairo-lang-proc-macros", - "cairo-lang-semantic", - "cairo-lang-syntax", - "cairo-lang-utils", - "id-arena", - "itertools 0.12.1", - "log", - "num-bigint", - "num-integer", - "num-traits", - "rust-analyzer-salsa", - "smol_str", -] - -[[package]] -name = "cairo-lang-parser" -version = "2.10.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad5c844ec8e284ed1e423d40bd5d4baf98d6415986c3d4065d2c1ff8a09b5934" -dependencies = [ - "cairo-lang-diagnostics", - "cairo-lang-filesystem", - "cairo-lang-syntax", - "cairo-lang-syntax-codegen", - "cairo-lang-utils", - "colored", - "itertools 0.12.1", - "num-bigint", - "num-traits", - "rust-analyzer-salsa", - "smol_str", - "unescaper", -] - -[[package]] -name = "cairo-lang-plugins" -version = "2.10.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "478c84c57c6291f1e072fedd12eb0458eb40a3ea16a17d02e8ccf895924b9ea1" -dependencies = [ - "cairo-lang-defs", - "cairo-lang-diagnostics", - "cairo-lang-filesystem", - "cairo-lang-parser", - "cairo-lang-syntax", - "cairo-lang-utils", - "indent", - "indoc", - "itertools 0.12.1", - "rust-analyzer-salsa", - "smol_str", -] - -[[package]] -name = "cairo-lang-primitive-token" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "123ac0ecadf31bacae77436d72b88fa9caef2b8e92c89ce63a125ae911a12fae" - -[[package]] -name = "cairo-lang-proc-macros" -version = "2.10.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d7afa5c9bb8be0c3654792caec70ca51587667665e667c2250b4fa79df901d3" -dependencies = [ - "cairo-lang-debug", - "quote", - "syn 2.0.95", -] - -[[package]] -name = "cairo-lang-project" -version = "2.10.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e557bbf5fc153203622f4fd66d8de23c35c39fe92672ba90c0a3b33766f016f" -dependencies = [ - "cairo-lang-filesystem", - "cairo-lang-utils", - "serde", - "thiserror 1.0.69", - "toml", -] - -[[package]] -name = "cairo-lang-runnable-utils" -version = "2.10.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cb5aea4258a0fcc52a8ac3848c4916a81f2601ebebdd462b4a7c6123cc20589" -dependencies = [ - "cairo-lang-casm", - "cairo-lang-sierra", - "cairo-lang-sierra-ap-change", - "cairo-lang-sierra-gas", - "cairo-lang-sierra-to-casm", - "cairo-lang-sierra-type-size", - "cairo-lang-utils", - "cairo-vm", - "itertools 0.12.1", - "thiserror 1.0.69", -] - -[[package]] -name = "cairo-lang-runner" -version = "2.10.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3b0e437bbaa58d41c1215451ef50aa914a49780a0af886e55862576aff6c19f" -dependencies = [ - "ark-ff 0.4.2", - "ark-secp256k1 0.4.0", - "ark-secp256r1 0.4.0", - "cairo-lang-casm", - "cairo-lang-lowering", - "cairo-lang-runnable-utils", - "cairo-lang-sierra", - "cairo-lang-sierra-generator", - "cairo-lang-sierra-to-casm", - "cairo-lang-starknet", - "cairo-lang-utils", - "cairo-vm", - "itertools 0.12.1", - "keccak", - "num-bigint", - "num-integer", - "num-traits", - "rand", - "sha2", - "smol_str", - "starknet-types-core", - "thiserror 1.0.69", -] - -[[package]] -name = "cairo-lang-semantic" -version = "2.10.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c82e765f784f4175232f51be0bd81551c48fcf64d8e9ae2e88f15c7130ca549" -dependencies = [ - "cairo-lang-debug", - "cairo-lang-defs", - "cairo-lang-diagnostics", - "cairo-lang-filesystem", - "cairo-lang-parser", - "cairo-lang-plugins", - "cairo-lang-proc-macros", - "cairo-lang-syntax", - "cairo-lang-test-utils", - "cairo-lang-utils", - "id-arena", - "indoc", - "itertools 0.12.1", - "num-bigint", - "num-traits", - "rust-analyzer-salsa", - "sha3", - "smol_str", - "toml", -] - -[[package]] -name = "cairo-lang-sierra" -version = "2.10.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eda99022545ec4ec1b255f05c40d498d7040e3c60ecc942009368462448686b" -dependencies = [ - "anyhow", - "cairo-lang-utils", - "const-fnv1a-hash", - "convert_case", - "derivative", - "itertools 0.12.1", - "lalrpop", - "lalrpop-util", - "num-bigint", - "num-integer", - "num-traits", - "regex", - "rust-analyzer-salsa", - "serde", - "serde_json", - "sha3", - "smol_str", - "starknet-types-core", - "thiserror 1.0.69", -] - -[[package]] -name = "cairo-lang-sierra-ap-change" -version = "2.10.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f13db868ea56fc7c109a21260355ef5380e8d4426ce9781a00cc7d2d18a0aada" -dependencies = [ - "cairo-lang-eq-solver", - "cairo-lang-sierra", - "cairo-lang-sierra-type-size", - "cairo-lang-utils", - "itertools 0.12.1", - "num-bigint", - "num-traits", - "thiserror 1.0.69", -] - -[[package]] -name = "cairo-lang-sierra-gas" -version = "2.10.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4e26fbde40815352ff18f2e341a9792c651be0597bfb8e63deb0f4dd484782d" -dependencies = [ - "cairo-lang-eq-solver", - "cairo-lang-sierra", - "cairo-lang-sierra-type-size", - "cairo-lang-utils", - "itertools 0.12.1", - "num-bigint", - "num-traits", - "thiserror 1.0.69", -] - -[[package]] -name = "cairo-lang-sierra-generator" -version = "2.10.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e2a09730000a75c143d940e0e4906cf35dd0b607b0902223dc73ff5786abb7b" -dependencies = [ - "cairo-lang-debug", - "cairo-lang-defs", - "cairo-lang-diagnostics", - "cairo-lang-filesystem", - "cairo-lang-lowering", - "cairo-lang-parser", - "cairo-lang-semantic", - "cairo-lang-sierra", - "cairo-lang-syntax", - "cairo-lang-utils", - "itertools 0.12.1", - "num-traits", - "rust-analyzer-salsa", - "serde", - "serde_json", - "smol_str", -] - -[[package]] -name = "cairo-lang-sierra-to-casm" -version = "2.10.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07b3af3dee351045e063fea341f242c6eab9c0f5eca90ee8b960ddcefa799142" -dependencies = [ - "assert_matches", - "cairo-lang-casm", - "cairo-lang-sierra", - "cairo-lang-sierra-ap-change", - "cairo-lang-sierra-gas", - "cairo-lang-sierra-type-size", - "cairo-lang-utils", - "indoc", - "itertools 0.12.1", - "num-bigint", - "num-traits", - "starknet-types-core", - "thiserror 1.0.69", -] - -[[package]] -name = "cairo-lang-sierra-type-size" -version = "2.10.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ed52ed8acd957e71139e3dde782aad04946bd1e4d979a2a0b46bd09dd200348" -dependencies = [ - "cairo-lang-sierra", - "cairo-lang-utils", -] - -[[package]] -name = "cairo-lang-starknet" -version = "2.10.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d156a22ebdca8041506c0ae2be765a7bc81907003e588ee643f7e64c7788fbf" -dependencies = [ - "anyhow", - "cairo-lang-compiler", - "cairo-lang-defs", - "cairo-lang-diagnostics", - "cairo-lang-filesystem", - "cairo-lang-lowering", - "cairo-lang-plugins", - "cairo-lang-semantic", - "cairo-lang-sierra", - "cairo-lang-sierra-generator", - "cairo-lang-starknet-classes", - "cairo-lang-syntax", - "cairo-lang-utils", - "const_format", - "indent", - "indoc", - "itertools 0.12.1", - "serde", - "serde_json", - "smol_str", - "starknet-types-core", - "thiserror 1.0.69", -] - -[[package]] -name = "cairo-lang-starknet-classes" -version = "2.10.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5a5b4adb80238064a7294c43d8edcc18d908c0872848063682b5c0a458a77af" -dependencies = [ - "cairo-lang-casm", - "cairo-lang-sierra", - "cairo-lang-sierra-to-casm", - "cairo-lang-utils", - "convert_case", - "itertools 0.12.1", - "num-bigint", - "num-integer", - "num-traits", - "serde", - "serde_json", - "sha3", - "smol_str", - "starknet-types-core", - "thiserror 1.0.69", -] - -[[package]] -name = "cairo-lang-syntax" -version = "2.10.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "621c6dbf1cbda7d40f4dc78ea2363d3b565e4c7e9edfdcb08e2be61bfbbaf819" -dependencies = [ - "cairo-lang-debug", - "cairo-lang-filesystem", - "cairo-lang-primitive-token", - "cairo-lang-utils", - "num-bigint", - "num-traits", - "rust-analyzer-salsa", - "smol_str", - "unescaper", -] - -[[package]] -name = "cairo-lang-syntax-codegen" -version = "2.10.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd79262096fbbd618c52d01964f5ed36e693f9dc1113a0d217e1b3825bd85822" -dependencies = [ - "genco", - "xshell", -] - -[[package]] -name = "cairo-lang-test-plugin" -version = "2.10.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbe07acbac1f6f31e0b422833174e0a5220370542b47d9ceb6f4e4c7e33ffe61" -dependencies = [ - "anyhow", - "cairo-lang-compiler", - "cairo-lang-debug", - "cairo-lang-defs", - "cairo-lang-filesystem", - "cairo-lang-lowering", - "cairo-lang-semantic", - "cairo-lang-sierra", - "cairo-lang-sierra-generator", - "cairo-lang-starknet", - "cairo-lang-starknet-classes", - "cairo-lang-syntax", - "cairo-lang-utils", - "indoc", - "itertools 0.12.1", - "num-bigint", - "num-traits", - "serde", - "starknet-types-core", -] - -[[package]] -name = "cairo-lang-test-utils" -version = "2.10.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d7df411c00d122de3941dc8cb78d216e2414b2bbb713c006613b98113c35861" -dependencies = [ - "cairo-lang-formatter", - "cairo-lang-utils", - "colored", - "log", - "pretty_assertions", -] - -[[package]] -name = "cairo-lang-utils" -version = "2.10.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33d72369877bade85ecfef9bc13cbd0c66fdaa3e8cd9686833f0db65eacaa833" -dependencies = [ - "hashbrown 0.14.5", - "indexmap 2.7.0", - "itertools 0.12.1", - "num-bigint", - "num-traits", - "schemars", - "serde", -] - -[[package]] -name = "cairo-native" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63428bf6a1c51044224ce186209d1913a0504728f5c4601c11422bbf78dce168" -dependencies = [ - "anyhow", - "aquamarine", - "ark-ec 0.5.0", - "ark-ff 0.5.0", - "ark-secp256k1 0.5.0", - "ark-secp256r1 0.5.0", - "bumpalo", - "cairo-lang-compiler", - "cairo-lang-defs", - "cairo-lang-filesystem", - "cairo-lang-runner", - "cairo-lang-semantic", - "cairo-lang-sierra", - "cairo-lang-sierra-ap-change", - "cairo-lang-sierra-gas", - "cairo-lang-sierra-generator", - "cairo-lang-starknet", - "cairo-lang-starknet-classes", - "cairo-lang-test-plugin", - "cairo-lang-utils", - "cairo-native-runtime", - "cc", - "clap", - "colored", - "educe 0.5.11", - "itertools 0.13.0", - "keccak", - "lazy_static", - "libc", - "libloading", - "llvm-sys", - "melior", - "mlir-sys", - "num-bigint", - "num-integer", - "num-traits", - "serde", - "serde_json", - "sha2", - "starknet-types-core", - "stats_alloc", - "tempfile", - "thiserror 2.0.9", - "tracing", - "tracing-subscriber", - "utf8_iter", -] - -[[package]] -name = "cairo-native-runtime" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e582ea1c91df4315fb38ec655c5be0b30733d551218feddf2268260367ace3a7" -dependencies = [ - "cairo-lang-sierra-gas", - "itertools 0.14.0", - "lazy_static", - "num-traits", - "rand", - "starknet-curve 0.5.1", - "starknet-types-core", -] - -[[package]] -name = "cairo-vm" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58363ad8065ed891e3b14a8191b707677c7c7cb5b9d10030822506786d8d8108" -dependencies = [ - "anyhow", - "bincode", - "bitvec", - "generic-array", - "hashbrown 0.14.5", - "hex", - "keccak", - "lazy_static", - "nom", - "num-bigint", - "num-integer", - "num-prime", - "num-traits", - "rand", - "rust_decimal", - "serde", - "serde_json", - "sha2", - "sha3", - "starknet-crypto", - "starknet-types-core", - "thiserror-no-std", - "zip", -] - -[[package]] -name = "caseless" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b6fd507454086c8edfd769ca6ada439193cdb209c7681712ef6275cccbfe5d8" -dependencies = [ - "unicode-normalization", -] - -[[package]] -name = "cc" -version = "1.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a012a0df96dd6d06ba9a1b29d6402d1a5d77c6befd2566afdc26e10603dc93d7" -dependencies = [ - "jobserver", - "libc", - "shlex", -] - -[[package]] -name = "cexpr" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" -dependencies = [ - "nom", -] - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "cipher" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" -dependencies = [ - "crypto-common", - "inout", -] - -[[package]] -name = "clang-sys" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" -dependencies = [ - "glob", - "libc", - "libloading", -] - -[[package]] -name = "clap" -version = "4.5.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3135e7ec2ef7b10c6ed8950f0f792ed96ee093fa088608f1c76e569722700c84" -dependencies = [ - "clap_builder", - "clap_derive", -] - -[[package]] -name = "clap_builder" -version = "4.5.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30582fc632330df2bd26877bde0c1f4470d57c582bbc070376afcd04d8cb4838" -dependencies = [ - "anstream", - "anstyle", - "clap_lex", - "strsim", -] - -[[package]] -name = "clap_derive" -version = "4.5.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" -dependencies = [ - "heck 0.5.0", - "proc-macro2", - "quote", - "syn 2.0.95", -] - -[[package]] -name = "clap_lex" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" - -[[package]] -name = "colorchoice" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" - -[[package]] -name = "colored" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "117725a109d387c937a1533ce01b450cbde6b88abceea8473c4d7a85853cda3c" -dependencies = [ - "lazy_static", - "windows-sys", -] - -[[package]] -name = "comrak" -version = "0.32.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48ae8f3e7e3f3d424cbb33354fc36943d507327d210aa5794b0192f4be726c6d" -dependencies = [ - "bon", - "caseless", - "entities", - "memchr", - "once_cell", - "regex", - "slug", - "typed-arena", - "unicode_categories", -] - -[[package]] -name = "const-fnv1a-hash" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32b13ea120a812beba79e34316b3942a857c86ec1593cb34f27bb28272ce2cca" - -[[package]] -name = "const_format" -version = "0.2.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "126f97965c8ad46d6d9163268ff28432e8f6a1196a55578867832e3049df63dd" -dependencies = [ - "const_format_proc_macros", -] - -[[package]] -name = "const_format_proc_macros" -version = "0.2.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" -dependencies = [ - "proc-macro2", - "quote", - "unicode-xid", -] - -[[package]] -name = "constant_time_eq" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" - -[[package]] -name = "convert_case" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" -dependencies = [ - "unicode-segmentation", -] - -[[package]] -name = "cpufeatures" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" -dependencies = [ - "libc", -] - -[[package]] -name = "crc32fast" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "crossbeam-deque" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" -dependencies = [ - "crossbeam-epoch", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.9.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" - -[[package]] -name = "crunchy" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" - -[[package]] -name = "crypto-bigint" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" -dependencies = [ - "generic-array", - "subtle", - "zeroize", -] - -[[package]] -name = "crypto-common" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" -dependencies = [ - "generic-array", - "typenum", -] - -[[package]] -name = "darling" -version = "0.20.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" -dependencies = [ - "darling_core", - "darling_macro", -] - -[[package]] -name = "darling_core" -version = "0.20.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim", - "syn 2.0.95", -] - -[[package]] -name = "darling_macro" -version = "0.20.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" -dependencies = [ - "darling_core", - "quote", - "syn 2.0.95", -] - -[[package]] -name = "deranged" -version = "0.3.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" -dependencies = [ - "powerfmt", -] - -[[package]] -name = "derivative" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "deunicode" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "339544cc9e2c4dc3fc7149fd630c5f22263a4fdf18a98afd0075784968b5cf00" - -[[package]] -name = "diff" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" - -[[package]] -name = "diffy" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e616e59155c92257e84970156f506287853355f58cd4a6eb167385722c32b790" -dependencies = [ - "nu-ansi-term", -] - -[[package]] -name = "digest" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" -dependencies = [ - "block-buffer", - "crypto-common", - "subtle", -] - -[[package]] -name = "dirs-next" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" -dependencies = [ - "cfg-if", - "dirs-sys-next", -] - -[[package]] -name = "dirs-sys-next" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" -dependencies = [ - "libc", - "redox_users", - "winapi", -] - -[[package]] -name = "dyn-clone" -version = "1.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" - -[[package]] -name = "educe" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4bd92664bf78c4d3dba9b7cdafce6fa15b13ed3ed16175218196942e99168a8" -dependencies = [ - "enum-ordinalize", - "proc-macro2", - "quote", - "syn 2.0.95", -] - -[[package]] -name = "educe" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d7bc049e1bd8cdeb31b68bbd586a9464ecf9f3944af3958a7a9d0f8b9799417" -dependencies = [ - "enum-ordinalize", - "proc-macro2", - "quote", - "syn 2.0.95", -] - -[[package]] -name = "either" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" - -[[package]] -name = "ena" -version = "0.14.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d248bdd43ce613d87415282f69b9bb99d947d290b10962dd6c56233312c2ad5" -dependencies = [ - "log", -] - -[[package]] -name = "entities" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5320ae4c3782150d900b79807611a59a99fc9a1d61d686faafc24b93fc8d7ca" - -[[package]] -name = "enum-ordinalize" -version = "4.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fea0dcfa4e54eeb516fe454635a95753ddd39acda650ce703031c6973e315dd5" -dependencies = [ - "enum-ordinalize-derive", -] - -[[package]] -name = "enum-ordinalize-derive" -version = "4.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.95", -] - -[[package]] -name = "equivalent" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" - -[[package]] -name = "errno" -version = "0.3.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" -dependencies = [ - "libc", - "windows-sys", -] - -[[package]] -name = "fastrand" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" - -[[package]] -name = "fixedbitset" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" - -[[package]] -name = "flate2" -version = "1.0.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" -dependencies = [ - "crc32fast", - "miniz_oxide", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "foldhash" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0d2fde1f7b3d48b8395d5f2de76c18a528bd6a9cdde438df747bfcba3e05d6f" - -[[package]] -name = "funty" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" - -[[package]] -name = "genco" -version = "0.17.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a35958104272e516c2a5f66a9d82fba4784d2b585fc1e2358b8f96e15d342995" -dependencies = [ - "genco-macros", - "relative-path", - "smallvec", -] - -[[package]] -name = "genco-macros" -version = "0.17.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43eaff6bbc0b3a878361aced5ec6a2818ee7c541c5b33b5880dfa9a86c23e9e7" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.95", -] - -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", -] - -[[package]] -name = "getrandom" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi", - "wasm-bindgen", -] - -[[package]] -name = "glob" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" - -[[package]] -name = "globset" -version = "0.4.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19" -dependencies = [ - "aho-corasick", - "bstr", - "log", - "regex-automata 0.4.9", - "regex-syntax 0.8.5", -] - -[[package]] -name = "good_lp" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10efcd6c7d6f84cb5b4f9155248e0675deab9cfb92d0edbcb25cb81490b65ae7" -dependencies = [ - "fnv", - "microlp", -] - -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - -[[package]] -name = "hashbrown" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" -dependencies = [ - "ahash", -] - -[[package]] -name = "hashbrown" -version = "0.14.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" -dependencies = [ - "ahash", - "allocator-api2", - "serde", -] - -[[package]] -name = "hashbrown" -version = "0.15.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" -dependencies = [ - "allocator-api2", - "equivalent", - "foldhash", -] - -[[package]] -name = "heck" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" - -[[package]] -name = "heck" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" - -[[package]] -name = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" - -[[package]] -name = "hmac" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" -dependencies = [ - "digest", -] - -[[package]] -name = "home" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" -dependencies = [ - "windows-sys", -] - -[[package]] -name = "id-arena" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25a2bc672d1148e28034f176e01fffebb08b35768468cc954630da77a1449005" - -[[package]] -name = "ident_case" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" - -[[package]] -name = "ignore" -version = "0.4.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d89fd380afde86567dfba715db065673989d6253f42b88179abd3eae47bda4b" -dependencies = [ - "crossbeam-deque", - "globset", - "log", - "memchr", - "regex-automata 0.4.9", - "same-file", - "walkdir", - "winapi-util", -] - -[[package]] -name = "impl-trait-for-tuples" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.95", -] - -[[package]] -name = "include_dir" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "923d117408f1e49d914f1a379a309cffe4f18c05cf4e3d12e613a15fc81bd0dd" -dependencies = [ - "include_dir_macros", -] - -[[package]] -name = "include_dir_macros" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cab85a7ed0bd5f0e76d93846e0147172bed2e2d3f859bcc33a8d9699cad1a75" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "indent" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9f1a0777d972970f204fdf8ef319f1f4f8459131636d7e3c96c5d59570d0fa6" - -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", - "serde", -] - -[[package]] -name = "indexmap" -version = "2.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" -dependencies = [ - "equivalent", - "hashbrown 0.15.2", - "serde", -] - -[[package]] -name = "indoc" -version = "2.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" - -[[package]] -name = "inout" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" -dependencies = [ - "generic-array", -] - -[[package]] -name = "is_terminal_polyfill" -version = "1.70.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" - -[[package]] -name = "itertools" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" -dependencies = [ - "either", -] - -[[package]] -name = "itoa" -version = "1.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" - -[[package]] -name = "jobserver" -version = "0.1.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" -dependencies = [ - "libc", -] - -[[package]] -name = "js-sys" -version = "0.3.76" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7" -dependencies = [ - "once_cell", - "wasm-bindgen", -] - -[[package]] -name = "keccak" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" -dependencies = [ - "cpufeatures", -] - -[[package]] -name = "lalrpop" -version = "0.20.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55cb077ad656299f160924eb2912aa147d7339ea7d69e1b5517326fdcec3c1ca" -dependencies = [ - "ascii-canvas", - "bit-set", - "ena", - "itertools 0.11.0", - "lalrpop-util", - "petgraph", - "pico-args", - "regex", - "regex-syntax 0.8.5", - "string_cache", - "term", - "tiny-keccak", - "unicode-xid", - "walkdir", -] - -[[package]] -name = "lalrpop-util" -version = "0.20.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "507460a910eb7b32ee961886ff48539633b788a36b65692b95f225b844c82553" -dependencies = [ - "regex-automata 0.4.9", -] - -[[package]] -name = "lambdaworks-crypto" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbc2a4da0d9e52ccfe6306801a112e81a8fc0c76aa3e4449fefeda7fef72bb34" -dependencies = [ - "lambdaworks-math", - "serde", - "sha2", - "sha3", -] - -[[package]] -name = "lambdaworks-math" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1bd2632acbd9957afc5aeec07ad39f078ae38656654043bf16e046fa2730e23" -dependencies = [ - "serde", - "serde_json", -] - -[[package]] -name = "lazy_static" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" -dependencies = [ - "spin", -] - -[[package]] -name = "lazycell" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" - -[[package]] -name = "libc" -version = "0.2.169" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" - -[[package]] -name = "libloading" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34" -dependencies = [ - "cfg-if", - "windows-targets", -] - -[[package]] -name = "libredox" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" -dependencies = [ - "bitflags", - "libc", -] - -[[package]] -name = "linux-raw-sys" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" - -[[package]] -name = "llvm-sys" -version = "191.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "893cddf1adf0354b93411e413553dd4daf5c43195d73f1acfa1e394bdd371456" -dependencies = [ - "anyhow", - "cc", - "lazy_static", - "libc", - "regex-lite", - "semver", -] - -[[package]] -name = "lock_api" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" -dependencies = [ - "autocfg", - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" - -[[package]] -name = "lru" -version = "0.12.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" -dependencies = [ - "hashbrown 0.15.2", -] - -[[package]] -name = "matchers" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" -dependencies = [ - "regex-automata 0.1.10", -] - -[[package]] -name = "matrixmultiply" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9380b911e3e96d10c1f415da0876389aaf1b56759054eeb0de7df940c456ba1a" -dependencies = [ - "autocfg", - "rawpointer", -] - -[[package]] -name = "melior" -version = "0.20.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cfcb398e6571361b6f54fd0057066d9b47a822bcb797bf5867e5412e9e6f387" -dependencies = [ - "melior-macro", - "mlir-sys", -] - -[[package]] -name = "melior-macro" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3086e8c12eb1999d636595cc3c2aee82a28d4bb80163267d51bd66a617cdaefc" -dependencies = [ - "comrak", - "convert_case", - "proc-macro2", - "quote", - "regex", - "syn 2.0.95", - "tblgen-alt", - "unindent", -] - -[[package]] -name = "memchr" -version = "2.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" - -[[package]] -name = "microlp" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4d5845c04529928925fd1abd6776813710ad57ef41cb31958b1d35622a7d8e9" -dependencies = [ - "log", - "sprs", -] - -[[package]] -name = "minimal-lexical" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" - -[[package]] -name = "miniz_oxide" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ffbe83022cedc1d264172192511ae958937694cd57ce297164951b8b3568394" -dependencies = [ - "adler2", -] - -[[package]] -name = "mlir-sys" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b598f9c0fa7a453eeaa9fe419ae93759c94a66eb6f8a496d195ba596ae3c4d" -dependencies = [ - "bindgen 0.71.1", -] - -[[package]] -name = "ndarray" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "882ed72dce9365842bf196bdeedf5055305f11fc8c03dee7bb0194a6cad34841" -dependencies = [ - "matrixmultiply", - "num-complex", - "num-integer", - "num-traits", - "portable-atomic", - "portable-atomic-util", - "rawpointer", -] - -[[package]] -name = "new_debug_unreachable" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" - -[[package]] -name = "nom" -version = "7.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" -dependencies = [ - "memchr", - "minimal-lexical", -] - -[[package]] -name = "nu-ansi-term" -version = "0.46.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" -dependencies = [ - "overload", - "winapi", -] - -[[package]] -name = "num-bigint" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" -dependencies = [ - "num-integer", - "num-traits", - "rand", - "serde", -] - -[[package]] -name = "num-complex" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" -dependencies = [ - "num-traits", -] - -[[package]] -name = "num-conv" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" - -[[package]] -name = "num-integer" -version = "0.1.46" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" -dependencies = [ - "num-traits", -] - -[[package]] -name = "num-modular" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a5fe11d4135c3bcdf3a95b18b194afa9608a5f6ff034f5d857bc9a27fb0119" -dependencies = [ - "num-bigint", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-prime" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e238432a7881ec7164503ccc516c014bf009be7984cde1ba56837862543bdec3" -dependencies = [ - "bitvec", - "either", - "lru", - "num-bigint", - "num-integer", - "num-modular", - "num-traits", - "rand", -] - -[[package]] -name = "num-traits" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" -dependencies = [ - "autocfg", -] - -[[package]] -name = "once_cell" -version = "1.20.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" - -[[package]] -name = "oorandom" -version = "11.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9" - -[[package]] -name = "overload" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" - -[[package]] -name = "parity-scale-codec" -version = "3.6.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" -dependencies = [ - "arrayvec", - "bitvec", - "byte-slice-cast", - "impl-trait-for-tuples", - "parity-scale-codec-derive", - "serde", -] - -[[package]] -name = "parity-scale-codec-derive" -version = "3.6.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "parking_lot" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" -dependencies = [ - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall", - "smallvec", - "windows-targets", -] - -[[package]] -name = "password-hash" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" -dependencies = [ - "base64ct", - "rand_core", - "subtle", -] - -[[package]] -name = "paste" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" - -[[package]] -name = "path-clean" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17359afc20d7ab31fdb42bb844c8b3bb1dabd7dcf7e68428492da7f16966fcef" - -[[package]] -name = "pbkdf2" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" -dependencies = [ - "digest", - "hmac", - "password-hash", - "sha2", -] - -[[package]] -name = "petgraph" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" -dependencies = [ - "fixedbitset", - "indexmap 2.7.0", -] - -[[package]] -name = "phf_shared" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" -dependencies = [ - "siphasher", -] - -[[package]] -name = "pico-args" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" - -[[package]] -name = "pin-project-lite" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" - -[[package]] -name = "pkg-config" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" - -[[package]] -name = "portable-atomic" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "280dc24453071f1b63954171985a0b0d30058d287960968b9b2aca264c8d4ee6" - -[[package]] -name = "portable-atomic-util" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" -dependencies = [ - "portable-atomic", -] - -[[package]] -name = "powerfmt" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" - -[[package]] -name = "ppv-lite86" -version = "0.2.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" -dependencies = [ - "zerocopy", -] - -[[package]] -name = "precomputed-hash" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" - -[[package]] -name = "pretty_assertions" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ae130e2f271fbc2ac3a40fb1d07180839cdbbe443c7a27e1e3c13c5cac0116d" -dependencies = [ - "diff", - "yansi", -] - -[[package]] -name = "prettyplease" -version = "0.2.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" -dependencies = [ - "proc-macro2", - "syn 2.0.95", -] - -[[package]] -name = "proc-macro-crate" -version = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" -dependencies = [ - "toml_edit", -] - -[[package]] -name = "proc-macro-error-attr2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "proc-macro-error2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" -dependencies = [ - "proc-macro-error-attr2", - "proc-macro2", - "quote", -] - -[[package]] -name = "proc-macro2" -version = "1.0.92" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "quote" -version = "1.0.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "radium" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" - -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha", - "rand_core", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom", -] - -[[package]] -name = "rawpointer" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" - -[[package]] -name = "rayon" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" -dependencies = [ - "either", - "rayon-core", -] - -[[package]] -name = "rayon-core" -version = "1.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" -dependencies = [ - "crossbeam-deque", - "crossbeam-utils", -] - -[[package]] -name = "redox_syscall" -version = "0.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" -dependencies = [ - "bitflags", -] - -[[package]] -name = "redox_users" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" -dependencies = [ - "getrandom", - "libredox", - "thiserror 1.0.69", -] - -[[package]] -name = "regex" -version = "1.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" -dependencies = [ - "aho-corasick", - "memchr", - "regex-automata 0.4.9", - "regex-syntax 0.8.5", -] - -[[package]] -name = "regex-automata" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" -dependencies = [ - "regex-syntax 0.6.29", -] - -[[package]] -name = "regex-automata" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax 0.8.5", -] - -[[package]] -name = "regex-lite" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53a49587ad06b26609c52e423de037e7f57f20d53535d66e08c695f347df952a" - -[[package]] -name = "regex-syntax" -version = "0.6.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" - -[[package]] -name = "regex-syntax" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" - -[[package]] -name = "relative-path" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2" - -[[package]] -name = "rfc6979" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" -dependencies = [ - "hmac", - "subtle", -] - -[[package]] -name = "rust-analyzer-salsa" -version = "0.17.0-pre.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719825638c59fd26a55412a24561c7c5bcf54364c88b9a7a04ba08a6eafaba8d" -dependencies = [ - "indexmap 2.7.0", - "lock_api", - "oorandom", - "parking_lot", - "rust-analyzer-salsa-macros", - "rustc-hash 1.1.0", - "smallvec", - "tracing", - "triomphe", -] - -[[package]] -name = "rust-analyzer-salsa-macros" -version = "0.17.0-pre.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d96498e9684848c6676c399032ebc37c52da95ecbefa83d71ccc53b9f8a4a8e" -dependencies = [ - "heck 0.4.1", - "proc-macro2", - "quote", - "syn 2.0.95", -] - -[[package]] -name = "rust_decimal" -version = "1.36.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b082d80e3e3cc52b2ed634388d436fe1f4de6af5786cc2de9ba9737527bdf555" -dependencies = [ - "arrayvec", - "num-traits", -] - -[[package]] -name = "rustc-hash" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" - -[[package]] -name = "rustc-hash" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7fb8039b3032c191086b10f11f319a6e99e1e82889c5cc6046f515c9db1d497" - -[[package]] -name = "rustc_version" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" -dependencies = [ - "semver", -] - -[[package]] -name = "rustix" -version = "0.38.42" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93dc38ecbab2eb790ff964bb77fa94faf256fd3e73285fd7ba0903b76bedb85" -dependencies = [ - "bitflags", - "errno", - "libc", - "linux-raw-sys", - "windows-sys", -] - -[[package]] -name = "rustversion" -version = "1.0.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" - -[[package]] -name = "ryu" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" - -[[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "schemars" -version = "0.8.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92" -dependencies = [ - "dyn-clone", - "indexmap 1.9.3", - "schemars_derive", - "serde", - "serde_json", -] - -[[package]] -name = "schemars_derive" -version = "0.8.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e" -dependencies = [ - "proc-macro2", - "quote", - "serde_derive_internals", - "syn 2.0.95", -] - -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - -[[package]] -name = "semver" -version = "1.0.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cb6eb87a131f756572d7fb904f6e7b68633f09cca868c5df1c4b8d1a694bbba" -dependencies = [ - "serde", -] - -[[package]] -name = "serde" -version = "1.0.217" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.217" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.95", -] - -[[package]] -name = "serde_derive_internals" -version = "0.29.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.95", -] - -[[package]] -name = "serde_json" -version = "1.0.134" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d00f4175c42ee48b15416f6193a959ba3a0d67fc699a0db9ad12df9f83991c7d" -dependencies = [ - "itoa", - "memchr", - "ryu", - "serde", -] - -[[package]] -name = "serde_spanned" -version = "0.6.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" -dependencies = [ - "serde", -] - -[[package]] -name = "sha1" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - -[[package]] -name = "sha2" -version = "0.10.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - -[[package]] -name = "sha3" -version = "0.10.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" -dependencies = [ - "digest", - "keccak", -] - -[[package]] -name = "sharded-slab" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" -dependencies = [ - "lazy_static", -] - -[[package]] -name = "shlex" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" - -[[package]] -name = "siphasher" -version = "0.3.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" - -[[package]] -name = "slug" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "882a80f72ee45de3cc9a5afeb2da0331d58df69e4e7d8eeb5d3c7784ae67e724" -dependencies = [ - "deunicode", - "wasm-bindgen", -] - -[[package]] -name = "smallvec" -version = "1.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" - -[[package]] -name = "smol_str" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd538fb6910ac1099850255cf94a94df6551fbdd602454387d0adb2d1ca6dead" -dependencies = [ - "serde", -] - -[[package]] -name = "spin" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" - -[[package]] -name = "sprs" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "704ef26d974e8a452313ed629828cd9d4e4fa34667ca1ad9d6b1fffa43c6e166" -dependencies = [ - "ndarray", - "num-complex", - "num-traits", - "smallvec", -] - -[[package]] -name = "stable_deref_trait" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" - -[[package]] -name = "starknet-crypto" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e2c30c01e8eb0fc913c4ee3cf676389fffc1d1182bfe5bb9670e4e72e968064" -dependencies = [ - "crypto-bigint", - "hex", - "hmac", - "num-bigint", - "num-integer", - "num-traits", - "rfc6979", - "sha2", - "starknet-crypto-codegen", - "starknet-curve 0.4.2", - "starknet-ff", - "zeroize", -] - -[[package]] -name = "starknet-crypto-codegen" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbc159a1934c7be9761c237333a57febe060ace2bc9e3b337a59a37af206d19f" -dependencies = [ - "starknet-curve 0.4.2", - "starknet-ff", - "syn 2.0.95", -] - -[[package]] -name = "starknet-curve" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1c383518bb312751e4be80f53e8644034aa99a0afb29d7ac41b89a997db875b" -dependencies = [ - "starknet-ff", -] - -[[package]] -name = "starknet-curve" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcde6bd74269b8161948190ace6cf069ef20ac6e79cd2ba09b320efa7500b6de" -dependencies = [ - "starknet-types-core", -] - -[[package]] -name = "starknet-ff" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7abf1b44ec5b18d87c1ae5f54590ca9d0699ef4dd5b2ffa66fc97f24613ec585" -dependencies = [ - "ark-ff 0.4.2", - "crypto-bigint", - "getrandom", - "hex", -] - -[[package]] -name = "starknet-native-compile" -version = "0.2.5" -dependencies = [ - "cairo-lang-sierra", - "cairo-lang-starknet-classes", - "cairo-native", - "clap", - "serde_json", -] - -[[package]] -name = "starknet-types-core" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa1b9e01ccb217ab6d475c5cda05dbb22c30029f7bb52b192a010a00d77a3d74" -dependencies = [ - "lambdaworks-crypto", - "lambdaworks-math", - "lazy_static", - "num-bigint", - "num-integer", - "num-traits", - "serde", -] - -[[package]] -name = "stats_alloc" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c0e04424e733e69714ca1bbb9204c1a57f09f5493439520f9f68c132ad25eec" - -[[package]] -name = "string_cache" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" -dependencies = [ - "new_debug_unreachable", - "once_cell", - "parking_lot", - "phf_shared", - "precomputed-hash", -] - -[[package]] -name = "strsim" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" - -[[package]] -name = "subtle" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" - -[[package]] -name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn" -version = "2.0.95" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46f71c0377baf4ef1cc3e3402ded576dccc315800fbc62dfc7fe04b009773b4a" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "tap" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" - -[[package]] -name = "tblgen-alt" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ecbc9175dd38627cd01d546e7b41c9a115e5773f4c98f64e2185c81ec5f45ab" -dependencies = [ - "bindgen 0.69.5", - "cc", - "paste", - "thiserror 1.0.69", -] - -[[package]] -name = "tempfile" -version = "3.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8a559c81686f576e8cd0290cd2a24a2a9ad80c98b3478856500fcbd7acd704" -dependencies = [ - "cfg-if", - "fastrand", - "getrandom", - "once_cell", - "rustix", - "windows-sys", -] - -[[package]] -name = "term" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f" -dependencies = [ - "dirs-next", - "rustversion", - "winapi", -] - -[[package]] -name = "thiserror" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" -dependencies = [ - "thiserror-impl 1.0.69", -] - -[[package]] -name = "thiserror" -version = "2.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f072643fd0190df67a8bab670c20ef5d8737177d6ac6b2e9a236cb096206b2cc" -dependencies = [ - "thiserror-impl 2.0.9", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.95", -] - -[[package]] -name = "thiserror-impl" -version = "2.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b50fa271071aae2e6ee85f842e2e28ba8cd2c5fb67f11fcb1fd70b276f9e7d4" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.95", -] - -[[package]] -name = "thiserror-impl-no-std" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58e6318948b519ba6dc2b442a6d0b904ebfb8d411a3ad3e07843615a72249758" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "thiserror-no-std" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3ad459d94dd517257cc96add8a43190ee620011bb6e6cdc82dafd97dfafafea" -dependencies = [ - "thiserror-impl-no-std", -] - -[[package]] -name = "thread_local" -version = "1.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" -dependencies = [ - "cfg-if", - "once_cell", -] - -[[package]] -name = "time" -version = "0.3.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" -dependencies = [ - "deranged", - "num-conv", - "powerfmt", - "serde", - "time-core", -] - -[[package]] -name = "time-core" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" - -[[package]] -name = "tiny-keccak" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" -dependencies = [ - "crunchy", -] - -[[package]] -name = "tinyvec" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "022db8904dfa342efe721985167e9fcd16c29b226db4397ed752a761cfce81e8" -dependencies = [ - "tinyvec_macros", -] - -[[package]] -name = "tinyvec_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" - -[[package]] -name = "toml" -version = "0.8.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" -dependencies = [ - "serde", - "serde_spanned", - "toml_datetime", - "toml_edit", -] - -[[package]] -name = "toml_datetime" -version = "0.6.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" -dependencies = [ - "serde", -] - -[[package]] -name = "toml_edit" -version = "0.22.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" -dependencies = [ - "indexmap 2.7.0", - "serde", - "serde_spanned", - "toml_datetime", - "winnow", -] - -[[package]] -name = "tracing" -version = "0.1.41" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" -dependencies = [ - "pin-project-lite", - "tracing-attributes", - "tracing-core", -] - -[[package]] -name = "tracing-attributes" -version = "0.1.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.95", -] - -[[package]] -name = "tracing-core" -version = "0.1.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" -dependencies = [ - "once_cell", - "valuable", -] - -[[package]] -name = "tracing-log" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" -dependencies = [ - "log", - "once_cell", - "tracing-core", -] - -[[package]] -name = "tracing-serde" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "704b1aeb7be0d0a84fc9828cae51dab5970fee5088f83d1dd7ee6f6246fc6ff1" -dependencies = [ - "serde", - "tracing-core", -] - -[[package]] -name = "tracing-subscriber" -version = "0.3.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" -dependencies = [ - "matchers", - "nu-ansi-term", - "once_cell", - "regex", - "serde", - "serde_json", - "sharded-slab", - "smallvec", - "thread_local", - "tracing", - "tracing-core", - "tracing-log", - "tracing-serde", -] - -[[package]] -name = "triomphe" -version = "0.1.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef8f7726da4807b58ea5c96fdc122f80702030edc33b35aff9190a51148ccc85" -dependencies = [ - "serde", - "stable_deref_trait", -] - -[[package]] -name = "typed-arena" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a" - -[[package]] -name = "typenum" -version = "1.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" - -[[package]] -name = "unescaper" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c878a167baa8afd137494101a688ef8c67125089ff2249284bd2b5f9bfedb815" -dependencies = [ - "thiserror 1.0.69", -] - -[[package]] -name = "unicode-ident" -version = "1.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" - -[[package]] -name = "unicode-normalization" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" -dependencies = [ - "tinyvec", -] - -[[package]] -name = "unicode-segmentation" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" - -[[package]] -name = "unicode-xid" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" - -[[package]] -name = "unicode_categories" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" - -[[package]] -name = "unindent" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce" - -[[package]] -name = "utf8_iter" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" - -[[package]] -name = "utf8parse" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" - -[[package]] -name = "valuable" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" - -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - -[[package]] -name = "walkdir" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" -dependencies = [ - "same-file", - "winapi-util", -] - -[[package]] -name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" - -[[package]] -name = "wasm-bindgen" -version = "0.2.99" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396" -dependencies = [ - "cfg-if", - "once_cell", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.99" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79" -dependencies = [ - "bumpalo", - "log", - "proc-macro2", - "quote", - "syn 2.0.95", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.99" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.99" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.95", - "wasm-bindgen-backend", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.99" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" - -[[package]] -name = "which" -version = "4.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" -dependencies = [ - "either", - "home", - "once_cell", - "rustix", -] - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-util" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" -dependencies = [ - "windows-sys", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "windows-sys" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" -dependencies = [ - "windows-targets", -] - -[[package]] -name = "windows-targets" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" -dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_gnullvm", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" - -[[package]] -name = "windows_i686_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" - -[[package]] -name = "windows_i686_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" - -[[package]] -name = "winnow" -version = "0.6.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39281189af81c07ec09db316b302a3e67bf9bd7cbf6c820b50e35fee9c2fa980" -dependencies = [ - "memchr", -] - -[[package]] -name = "wyz" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" -dependencies = [ - "tap", -] - -[[package]] -name = "xshell" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e7290c623014758632efe00737145b6867b66292c42167f2ec381eb566a373d" -dependencies = [ - "xshell-macros", -] - -[[package]] -name = "xshell-macros" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32ac00cd3f8ec9c1d33fb3e7958a82df6989c42d747bd326c822b1d625283547" - -[[package]] -name = "yansi" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" - -[[package]] -name = "zerocopy" -version = "0.7.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" -dependencies = [ - "byteorder", - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.7.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.95", -] - -[[package]] -name = "zeroize" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" -dependencies = [ - "zeroize_derive", -] - -[[package]] -name = "zeroize_derive" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.95", -] - -[[package]] -name = "zip" -version = "0.6.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" -dependencies = [ - "aes", - "byteorder", - "bzip2", - "constant_time_eq", - "crc32fast", - "crossbeam-utils", - "flate2", - "hmac", - "pbkdf2", - "sha1", - "time", - "zstd", -] - -[[package]] -name = "zstd" -version = "0.11.2+zstd.1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" -dependencies = [ - "zstd-safe", -] - -[[package]] -name = "zstd-safe" -version = "5.0.2+zstd.1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" -dependencies = [ - "libc", - "zstd-sys", -] - -[[package]] -name = "zstd-sys" -version = "2.0.13+zstd.1.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa" -dependencies = [ - "cc", - "pkg-config", -] diff --git a/crates/bin/starknet-native-compile/Cargo.toml b/crates/bin/starknet-native-compile/Cargo.toml deleted file mode 100644 index ebbfb0be04b..00000000000 --- a/crates/bin/starknet-native-compile/Cargo.toml +++ /dev/null @@ -1,15 +0,0 @@ -[package] -name = "starknet-native-compile" -# The version of this crate should equal the version of cairo-native. -version = "0.2.5" -edition = "2021" -repository = "https://github.com/starkware-libs/sequencer/" -license = "Apache-2.0" - -[dependencies] -# TODO(Avi, 01/02/2025): Check consistency with the blockifier. -cairo-lang-sierra = "2.11.1" -cairo-lang-starknet-classes = "2.11.1" -cairo-native = "0.2.9" -clap = { version = "4.5.4", features = ["derive"] } -serde_json = "1.0.116" diff --git a/crates/bin/starknet-native-compile/src/main.rs b/crates/bin/starknet-native-compile/src/main.rs deleted file mode 100644 index 6e6990d4214..00000000000 --- a/crates/bin/starknet-native-compile/src/main.rs +++ /dev/null @@ -1,43 +0,0 @@ -use std::path::PathBuf; -use std::process; - -use cairo_native::executor::AotContractExecutor; -use cairo_native::OptLevel; -use clap::Parser; - -use crate::utils::load_sierra_program_from_file; - -mod utils; - -#[derive(Parser, Debug)] -#[clap(version, verbatim_doc_comment)] -struct Args { - /// The path of the Sierra file to compile. - path: PathBuf, - /// The output file path. - output: PathBuf, -} - -fn main() { - // TODO(Avi, 01/12/2024): Find a way to restrict time, memory and file size during compilation. - let args = Args::parse(); - let path = args.path; - let output = args.output; - - let (contract_class, sierra_program) = load_sierra_program_from_file(&path); - - // TODO(Avi, 01/12/2024): Test different optimization levels for best performance. - let mut contract_executor = AotContractExecutor::new( - &sierra_program, - &contract_class.entry_points_by_type, - OptLevel::default(), - ) - .unwrap_or_else(|err| { - eprintln!("Error compiling Sierra program: {}", err); - process::exit(1); - }); - contract_executor.save(output.clone()).unwrap_or_else(|err| { - eprintln!("Error saving compiled program: {}", err); - process::exit(1); - }); -} diff --git a/crates/bin/starknet-native-compile/src/utils.rs b/crates/bin/starknet-native-compile/src/utils.rs deleted file mode 100644 index 728f547a019..00000000000 --- a/crates/bin/starknet-native-compile/src/utils.rs +++ /dev/null @@ -1,24 +0,0 @@ -use std::path::PathBuf; -use std::process; - -use cairo_lang_sierra::program::Program; -use cairo_lang_starknet_classes::contract_class::ContractClass; - -pub(crate) fn load_sierra_program_from_file(path: &PathBuf) -> (ContractClass, Program) { - let raw_contract_class = std::fs::read_to_string(path).unwrap_or_else(|err| { - eprintln!("Error reading Sierra file: {}", err); - process::exit(1); - }); - let contract_class: ContractClass = - serde_json::from_str(&raw_contract_class).unwrap_or_else(|err| { - eprintln!("Error deserializing Sierra file into contract class: {}", err); - process::exit(1); - }); - ( - contract_class.clone(), - contract_class.extract_sierra_program().unwrap_or_else(|err| { - eprintln!("Error extracting Sierra program from contract class: {}", err); - process::exit(1); - }), - ) -} diff --git a/crates/blockifier/Cargo.toml b/crates/blockifier/Cargo.toml index 36f1cfe2a6f..388fa15bcde 100644 --- a/crates/blockifier/Cargo.toml +++ b/crates/blockifier/Cargo.toml @@ -13,6 +13,7 @@ workspace = true cairo_native = ["dep:cairo-native", "starknet_sierra_multicompile/cairo_native", "dep:sierra-emu"] jemalloc = ["dep:tikv-jemallocator"] native_blockifier = [] +node_api = [] reexecution = ["transaction_serde"] testing = ["rand", "rstest", "rstest_reuse", "starknet_api/testing"] transaction_serde = [] diff --git a/crates/blockifier/bench/blockifier_bench.rs b/crates/blockifier/bench/blockifier_bench.rs index 2097bb1cecb..3b969d09c14 100644 --- a/crates/blockifier/bench/blockifier_bench.rs +++ b/crates/blockifier/bench/blockifier_bench.rs @@ -6,17 +6,24 @@ //! of transfers between randomly created accounts, which are iterated over round-robin. //! //! Run the benchmarks using `cargo bench --bench blockifier_bench`. +//! +//! For Cairo Native compilation run the benchmarks using: +//! `cargo bench --bench blockifier_bench --features "cairo_native"`. use blockifier::test_utils::transfers_generator::{ RecipientGeneratorType, TransfersGenerator, TransfersGeneratorConfig, }; +#[cfg(feature = "cairo_native")] +use blockifier::test_utils::{CairoVersion, RunnableCairo1}; use criterion::{criterion_group, criterion_main, Criterion}; pub fn transfers_benchmark(c: &mut Criterion) { let transfers_generator_config = TransfersGeneratorConfig { recipient_generator_type: RecipientGeneratorType::Random, + #[cfg(feature = "cairo_native")] + cairo_version: CairoVersion::Cairo1(RunnableCairo1::Native), ..Default::default() }; let mut transfers_generator = TransfersGenerator::new(transfers_generator_config); diff --git a/crates/blockifier/feature_contracts/cairo1/compiled/test_contract.casm.json b/crates/blockifier/feature_contracts/cairo1/compiled/test_contract.casm.json index b1bef6dcd3d..bc2360445d0 100644 --- a/crates/blockifier/feature_contracts/cairo1/compiled/test_contract.casm.json +++ b/crates/blockifier/feature_contracts/cairo1/compiled/test_contract.casm.json @@ -96,9 +96,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x5790", + "0x599c", "0x482480017fff8000", - "0x578f", + "0x599b", "0x48127ffa7fff8000", "0x480080007ffe8000", "0xa0680017fff8000", @@ -286,9 +286,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x56d2", + "0x58de", "0x482480017fff8000", - "0x56d1", + "0x58dd", "0x48127ffb7fff8000", "0x480080007ffe8000", "0xa0680017fff8000", @@ -554,7 +554,7 @@ "0x48127ffa7fff8000", "0x480080007ff88000", "0x1104800180018000", - "0x2099", + "0x22a5", "0x20680017fff7ffa", "0x62", "0x48127ff97fff8000", @@ -582,9 +582,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x55aa", + "0x57b6", "0x482480017fff8000", - "0x55a9", + "0x57b5", "0x48127ffb7fff8000", "0x480080007ffe8000", "0xa0680017fff8000", @@ -841,7 +841,7 @@ "0x48127ffa7fff8000", "0x480080007ff88000", "0x1104800180018000", - "0x1f7a", + "0x2186", "0x20680017fff7ffa", "0x16c", "0x48127ff97fff8000", @@ -943,7 +943,7 @@ "0x48127ffa7fff8000", "0x480080007ff88000", "0x1104800180018000", - "0x1f14", + "0x2120", "0x20680017fff7ffa", "0xc1", "0x48127ff97fff8000", @@ -971,9 +971,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x5425", + "0x5631", "0x482480017fff8000", - "0x5424", + "0x5630", "0x48127ffb7fff8000", "0x480080007ffe8000", "0xa0680017fff8000", @@ -1031,7 +1031,7 @@ "0x400380127ffb8001", "0x400380137ffb8002", "0x1104800180018000", - "0x1f1e", + "0x212a", "0x20680017fff7ffd", "0x33", "0x48127ffb7fff8000", @@ -1041,7 +1041,7 @@ "0x480a80017fff8000", "0x480a80027fff8000", "0x1104800180018000", - "0x1f14", + "0x2120", "0x20680017fff7ffd", "0x21", "0x40780017fff7fff", @@ -1056,7 +1056,7 @@ "0x482480017ff98000", "0x1", "0x1104800180018000", - "0x1f3a", + "0x2146", "0x20680017fff7ffd", "0xa", "0x48127ffb7fff8000", @@ -1391,9 +1391,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x5281", + "0x548d", "0x482480017fff8000", - "0x5280", + "0x548c", "0x48127ffa7fff8000", "0x480080007ffe8000", "0xa0680017fff8000", @@ -1415,7 +1415,7 @@ "0x48127fe57fff8000", "0x48307ff380007ffc", "0x1104800180018000", - "0x1e08", + "0x2014", "0x482480017fc88000", "0x1", "0x20680017fff7ffc", @@ -1543,9 +1543,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x51e9", + "0x53f5", "0x482480017fff8000", - "0x51e8", + "0x53f4", "0x48127ffb7fff8000", "0x480080007ffe8000", "0xa0680017fff8000", @@ -1766,9 +1766,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x510a", + "0x5316", "0x482480017fff8000", - "0x5109", + "0x5315", "0x48127ffb7fff8000", "0x480080007ffe8000", "0xa0680017fff8000", @@ -1788,7 +1788,7 @@ "0x48127fdf7fff8000", "0x48127fec7fff8000", "0x1104800180018000", - "0x1d1f", + "0x1f2b", "0x482480017fd18000", "0x1", "0x20680017fff7ffc", @@ -1998,7 +1998,7 @@ "0x48127ffa7fff8000", "0x480080007ff88000", "0x1104800180018000", - "0x1af5", + "0x1d01", "0x20680017fff7ffa", "0x6d", "0x48127ff97fff8000", @@ -2026,9 +2026,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x5006", + "0x5212", "0x482480017fff8000", - "0x5005", + "0x5211", "0x48127ffb7fff8000", "0x480080007ffe8000", "0xa0680017fff8000", @@ -2286,7 +2286,7 @@ "0x48127ffa7fff8000", "0x480080007ff88000", "0x1104800180018000", - "0x19d5", + "0x1be1", "0x20680017fff7ffa", "0xab", "0x48127ff97fff8000", @@ -2328,7 +2328,7 @@ "0x48127ffa7fff8000", "0x480080007ff88000", "0x1104800180018000", - "0x19ab", + "0x1bb7", "0x20680017fff7ffa", "0x62", "0x48127ff97fff8000", @@ -2356,9 +2356,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x4ebc", + "0x50c8", "0x482480017fff8000", - "0x4ebb", + "0x50c7", "0x48127ffb7fff8000", "0x480080007ffe8000", "0xa0680017fff8000", @@ -2385,7 +2385,7 @@ "0x480a80007fff8000", "0x480a80017fff8000", "0x1104800180018000", - "0x1b4c", + "0x1d58", "0x20680017fff7ffd", "0xc", "0x40780017fff7fff", @@ -2656,9 +2656,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x4d90", + "0x4f9c", "0x482480017fff8000", - "0x4d8f", + "0x4f9b", "0x48127ffb7fff8000", "0x480080007ffe8000", "0xa0680017fff8000", @@ -2894,9 +2894,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x4ca2", + "0x4eae", "0x482480017fff8000", - "0x4ca1", + "0x4ead", "0x48127ffb7fff8000", "0x480080007ffe8000", "0xa0680017fff8000", @@ -3019,7 +3019,7 @@ "0x480a7ffc7fff8000", "0x480a7ffd7fff8000", "0x1104800180018000", - "0x1943", + "0x1b4f", "0x48127fd67fff8000", "0x20680017fff7ffb", "0xdb", @@ -3031,7 +3031,7 @@ "0x40137ff97fff8001", "0x40137ffa7fff8002", "0x1104800180018000", - "0x1a04", + "0x1c10", "0x20680017fff7feb", "0xc7", "0x48127fea7fff8000", @@ -3089,9 +3089,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x4bdf", + "0x4deb", "0x482480017fff8000", - "0x4bde", + "0x4dea", "0x48127ffa7fff8000", "0x480080007ffe8000", "0xa0680017fff8000", @@ -3134,7 +3134,7 @@ "0x48127fda7fff8000", "0x48127fde7fff8000", "0x1104800180018000", - "0x1e57", + "0x2063", "0x20680017fff7ffd", "0xc", "0x40780017fff7fff", @@ -3380,7 +3380,7 @@ "0x48127ffa7fff8000", "0x480080007ff88000", "0x1104800180018000", - "0x158f", + "0x179b", "0x20680017fff7ffa", "0x62", "0x48127ff97fff8000", @@ -3408,9 +3408,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x4aa0", + "0x4cac", "0x482480017fff8000", - "0x4a9f", + "0x4cab", "0x48127ffb7fff8000", "0x480080007ffe8000", "0xa0680017fff8000", @@ -3683,9 +3683,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x498d", + "0x4b99", "0x482480017fff8000", - "0x498c", + "0x4b98", "0x48127ffa7fff8000", "0x480080007ffe8000", "0xa0680017fff8000", @@ -3708,7 +3708,7 @@ "0x48127fed7fff8000", "0x48127ff17fff8000", "0x1104800180018000", - "0x1dbb", + "0x1fc7", "0x482480017fc48000", "0x1", "0x48127ffa7fff8000", @@ -3915,9 +3915,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x48a5", + "0x4ab1", "0x482480017fff8000", - "0x48a4", + "0x4ab0", "0x48127ffb7fff8000", "0x480080007ffe8000", "0xa0680017fff8000", @@ -4079,7 +4079,7 @@ "0x48127ffa7fff8000", "0x480080007ff88000", "0x1104800180018000", - "0x12d4", + "0x14e0", "0x20680017fff7ffa", "0x64", "0x48127ff97fff8000", @@ -4107,9 +4107,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x47e5", + "0x49f1", "0x482480017fff8000", - "0x47e4", + "0x49f0", "0x48127ffb7fff8000", "0x480080007ffe8000", "0xa0680017fff8000", @@ -4273,9 +4273,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x473f", + "0x494b", "0x482480017fff8000", - "0x473e", + "0x494a", "0x48127ffb7fff8000", "0x480080007ffe8000", "0xa0680017fff8000", @@ -4308,7 +4308,7 @@ "0x48127ff77fff8000", "0x480080007ffc8000", "0x1104800180018000", - "0x1bb0", + "0x1dbc", "0x40780017fff7fff", "0x1", "0x48127ffa7fff8000", @@ -4461,7 +4461,7 @@ "0x48127ffa7fff8000", "0x480080007ff88000", "0x1104800180018000", - "0x1156", + "0x1362", "0x20680017fff7ffa", "0x8d", "0x48127ff97fff8000", @@ -4510,9 +4510,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x4652", + "0x485e", "0x482480017fff8000", - "0x4651", + "0x485d", "0x48127ffa7fff8000", "0x480080007ffe8000", "0xa0680017fff8000", @@ -4769,9 +4769,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x454f", + "0x475b", "0x482480017fff8000", - "0x454e", + "0x475a", "0x48127ffb7fff8000", "0x480080007ffe8000", "0xa0680017fff8000", @@ -4791,7 +4791,7 @@ "0x48127ffe7fff8000", "0x48127ff17fff8000", "0x1104800180018000", - "0x1a8b", + "0x1c97", "0x20680017fff7ffd", "0xe", "0x40780017fff7fff", @@ -4904,9 +4904,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x44c8", + "0x46d4", "0x482480017fff8000", - "0x44c7", + "0x46d3", "0x48127ffb7fff8000", "0x480080007ffe8000", "0xa0680017fff8000", @@ -4926,7 +4926,7 @@ "0x48127ffe7fff8000", "0x480a7ffb7fff8000", "0x1104800180018000", - "0x1acc", + "0x1cd8", "0x20680017fff7ffd", "0xc", "0x40780017fff7fff", @@ -5014,9 +5014,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x445a", + "0x4666", "0x482480017fff8000", - "0x4459", + "0x4665", "0x48127ffb7fff8000", "0x480080007ffe8000", "0xa0680017fff8000", @@ -5036,7 +5036,7 @@ "0x48127ffe7fff8000", "0x480a7ffb7fff8000", "0x1104800180018000", - "0x1b36", + "0x1d42", "0x20680017fff7ffd", "0xc", "0x40780017fff7fff", @@ -5125,9 +5125,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x43eb", + "0x45f7", "0x482480017fff8000", - "0x43ea", + "0x45f6", "0x48127ffb7fff8000", "0x480080007ffe8000", "0x480080017fff8000", @@ -5151,7 +5151,7 @@ "0x480a7ff97fff8000", "0x480a7ffb7fff8000", "0x1104800180018000", - "0x1b1a", + "0x1d26", "0x20680017fff7ffd", "0xd", "0x40780017fff7fff", @@ -5243,9 +5243,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x4375", + "0x4581", "0x482480017fff8000", - "0x4374", + "0x4580", "0x48127ffb7fff8000", "0x480080007ffe8000", "0xa0680017fff8000", @@ -5265,7 +5265,7 @@ "0x48127ffe7fff8000", "0x480a7ffb7fff8000", "0x1104800180018000", - "0x1c78", + "0x1e84", "0x20680017fff7ffd", "0xc", "0x40780017fff7fff", @@ -5373,9 +5373,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x42f3", + "0x44ff", "0x482480017fff8000", - "0x42f2", + "0x44fe", "0x48127ffa7fff8000", "0x480080007ffe8000", "0xa0680017fff8000", @@ -5532,7 +5532,7 @@ "0x48127ffa7fff8000", "0x480080007ff88000", "0x1104800180018000", - "0xd27", + "0xf33", "0x20680017fff7ffa", "0x5f", "0x48127ff97fff8000", @@ -5560,9 +5560,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x4238", + "0x4444", "0x482480017fff8000", - "0x4237", + "0x4443", "0x48127ffb7fff8000", "0x480080007ffe8000", "0xa0680017fff8000", @@ -5584,7 +5584,7 @@ "0x48127ff17fff8000", "0x48127ff17fff8000", "0x1104800180018000", - "0x1cc3", + "0x1ecf", "0x20680017fff7ffd", "0xe", "0x40780017fff7fff", @@ -5705,9 +5705,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x41a7", + "0x43b3", "0x482480017fff8000", - "0x41a6", + "0x43b2", "0x48127ffb7fff8000", "0x480080007ffe8000", "0xa0680017fff8000", @@ -5814,9 +5814,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x413a", + "0x4346", "0x482480017fff8000", - "0x4139", + "0x4345", "0x48127ffa7fff8000", "0x480080007ffe8000", "0xa0680017fff8000", @@ -5836,7 +5836,7 @@ "0x48127ffe7fff8000", "0x48127ff57fff8000", "0x1104800180018000", - "0x1d0e", + "0x1f1a", "0x20680017fff7ffd", "0xc", "0x40780017fff7fff", @@ -5949,9 +5949,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x40b3", + "0x42bf", "0x482480017fff8000", - "0x40b2", + "0x42be", "0x48127ffa7fff8000", "0x480080007ffe8000", "0xa0680017fff8000", @@ -5971,7 +5971,7 @@ "0x48127ffe7fff8000", "0x48127ff57fff8000", "0x1104800180018000", - "0x1cb9", + "0x1ec5", "0x20680017fff7ffd", "0xc", "0x40780017fff7fff", @@ -6143,9 +6143,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x3ff1", + "0x41fd", "0x482480017fff8000", - "0x3ff0", + "0x41fc", "0x48127ffa7fff8000", "0x480080007ffe8000", "0xa0680017fff8000", @@ -6369,9 +6369,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x3f0f", + "0x411b", "0x482480017fff8000", - "0x3f0e", + "0x411a", "0x48127ffa7fff8000", "0x480080007ffe8000", "0x480080007fff8000", @@ -6398,7 +6398,7 @@ "0x48127fea7fff8000", "0x48127fee7fff8000", "0x1104800180018000", - "0x1b3c", + "0x1d48", "0x20680017fff7ffd", "0xd", "0x40780017fff7fff", @@ -6652,9 +6652,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x3df4", + "0x4000", "0x482480017fff8000", - "0x3df3", + "0x3fff", "0x48127ffb7fff8000", "0x480080007ffe8000", "0x480080007fff8000", @@ -6686,7 +6686,7 @@ "0x48127fdc7fff8000", "0x48127fe67fff8000", "0x1104800180018000", - "0x1af9", + "0x1d05", "0x20680017fff7ffd", "0xe", "0x40780017fff7fff", @@ -6984,9 +6984,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x3ca8", + "0x3eb4", "0x482480017fff8000", - "0x3ca7", + "0x3eb3", "0x48127ffb7fff8000", "0x480080007ffe8000", "0xa0680017fff8000", @@ -7180,9 +7180,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x3be4", + "0x3df0", "0x482480017fff8000", - "0x3be3", + "0x3def", "0x48127ffb7fff8000", "0x480080007ffe8000", "0x480080027fff8000", @@ -7202,7 +7202,7 @@ "0x48127ffe7fff8000", "0x480a7ffb7fff8000", "0x1104800180018000", - "0x1a53", + "0x1c5f", "0x482480017f778000", "0x1", "0x20680017fff7ffc", @@ -7307,9 +7307,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x3b65", + "0x3d71", "0x482480017fff8000", - "0x3b64", + "0x3d70", "0x48127ffa7fff8000", "0x480080007ffe8000", "0x480080007fff8000", @@ -7334,7 +7334,7 @@ "0x480a7ffb7fff8000", "0x48127ff07fff8000", "0x1104800180018000", - "0x1b1c", + "0x1d28", "0x20680017fff7ffd", "0xd", "0x40780017fff7fff", @@ -7452,9 +7452,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x3ad4", + "0x3ce0", "0x482480017fff8000", - "0x3ad3", + "0x3cdf", "0x48127ffa7fff8000", "0x480080007ffe8000", "0xa0680017fff8000", @@ -7600,9 +7600,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x3a40", + "0x3c4c", "0x482480017fff8000", - "0x3a3f", + "0x3c4b", "0x48127ffb7fff8000", "0x480080007ffe8000", "0x480080047fff8000", @@ -7631,7 +7631,7 @@ "0x480a7ff77fff8000", "0x48127ffb7fff8000", "0x1104800180018000", - "0x1b4f", + "0x1d5b", "0x20680017fff7ffd", "0xf", "0x40780017fff7fff", @@ -7732,9 +7732,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x39bc", + "0x3bc8", "0x482480017fff8000", - "0x39bb", + "0x3bc7", "0x48127ffb7fff8000", "0x480080007ffe8000", "0xa0680017fff8000", @@ -7751,7 +7751,7 @@ "0x400080007ff67fff", "0x480a7ff97fff8000", "0x1104800180018000", - "0x1ce0", + "0x1eec", "0x482480017fe68000", "0x1", "0x48127fee7fff8000", @@ -7759,7 +7759,7 @@ "0x1a", "0x48127ffa7fff8000", "0x1104800180018000", - "0x1cd8", + "0x1ee4", "0x48127fef7fff8000", "0x20680017fff7ffc", "0xe", @@ -7939,7 +7939,7 @@ "0x48127ffa7fff8000", "0x480080007ff88000", "0x1104800180018000", - "0x3c0", + "0x5cc", "0x20680017fff7ffa", "0x5f", "0x48127ff97fff8000", @@ -7967,9 +7967,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x38d1", + "0x3add", "0x482480017fff8000", - "0x38d0", + "0x3adc", "0x48127ffb7fff8000", "0x480080007ffe8000", "0xa0680017fff8000", @@ -7991,7 +7991,7 @@ "0x48127ff07fff8000", "0x48127ff07fff8000", "0x1104800180018000", - "0x1c11", + "0x1e1d", "0x482480017f9f8000", "0x1", "0x20680017fff7ffc", @@ -8160,9 +8160,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x3810", + "0x3a1c", "0x482480017fff8000", - "0x380f", + "0x3a1b", "0x48127ffa7fff8000", "0x480080007ffe8000", "0xa0680017fff8000", @@ -8272,9 +8272,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x37a0", + "0x39ac", "0x482480017fff8000", - "0x379f", + "0x39ab", "0x48127ffb7fff8000", "0x480080007ffe8000", "0xa0680017fff8000", @@ -8336,6 +8336,530 @@ "0x7", "0x482680017ffa8000", "0x100000000000000000000000000000000", + "0x400280007ff87fff", + "0x10780017fff7fff", + "0x54", + "0x4825800180007ffa", + "0x0", + "0x400280007ff87fff", + "0x482680017ff88000", + "0x1", + "0x482480017ffe8000", + "0x1acc", + "0x48297ffc80007ffd", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0x12", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", + "0x400080007ffe7fff", + "0x48127ffb7fff8000", + "0x480a7ff97fff8000", + "0x482480017ffa8000", + "0x55a", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x482480017ff88000", + "0x1", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0x394c", + "0x482480017fff8000", + "0x394b", + "0x48127ffb7fff8000", + "0x480080007ffe8000", + "0x480080017fff8000", + "0x482480017fff8000", + "0x0", + "0xa0680017fff8000", + "0x8", + "0x48307ffe80007ffb", + "0x482480017fff8000", + "0x100000000000000000000000000000000", + "0x400080007ff37fff", + "0x10780017fff7fff", + "0x17", + "0x48307ffe80007ffb", + "0x400080007ff47fff", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x2", + "0x400280007ff97ffe", + "0x400280017ff97fff", + "0x40780017fff7fff", + "0x1", + "0x482480017ff18000", + "0x1", + "0x482680017ff98000", + "0x5", + "0x48127ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ffa7fff8000", + "0x48127ff97fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482480017ff18000", + "0x1", + "0x480a7ff97fff8000", + "0x48127ff57fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x482480017ff88000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482680017ff88000", + "0x1", + "0x480a7ff97fff8000", + "0x482680017ffa8000", + "0x2152", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x482480017ff88000", + "0x1", + "0x208b7fff7fff7ffe", + "0xa0680017fff8000", + "0x7", + "0x482680017ffa8000", + "0x100000000000000000000000000000000", + "0x400280007ff97fff", + "0x10780017fff7fff", + "0x54", + "0x4825800180007ffa", + "0x0", + "0x400280007ff97fff", + "0x482680017ff98000", + "0x1", + "0x482480017ffe8000", + "0x1acc", + "0x48297ffc80007ffd", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0x12", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", + "0x400080007ffe7fff", + "0x480a7ff87fff8000", + "0x48127ffa7fff8000", + "0x482480017ffa8000", + "0x55a", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x482480017ff88000", + "0x1", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0x38e2", + "0x482480017fff8000", + "0x38e1", + "0x48127ffb7fff8000", + "0x480080007ffe8000", + "0x480080007fff8000", + "0x482480017fff8000", + "0x0", + "0xa0680017fff8000", + "0x8", + "0x48307ffe80007ffb", + "0x482480017fff8000", + "0x100000000000000000000000000000000", + "0x400080007ff37fff", + "0x10780017fff7fff", + "0x17", + "0x48307ffe80007ffb", + "0x400080007ff47fff", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x1", + "0x400280007ff87ffe", + "0x400280017ff87fff", + "0x40780017fff7fff", + "0x1", + "0x482680017ff88000", + "0x3", + "0x482480017ff08000", + "0x1", + "0x48127ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ffa7fff8000", + "0x48127ff97fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x480a7ff87fff8000", + "0x482480017ff08000", + "0x1", + "0x48127ff57fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x482480017ff88000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x480a7ff87fff8000", + "0x482680017ff98000", + "0x1", + "0x482680017ffa8000", + "0x2152", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x482480017ff88000", + "0x1", + "0x208b7fff7fff7ffe", + "0xa0680017fff8000", + "0x7", + "0x482680017ffa8000", + "0x100000000000000000000000000000000", + "0x400280007ff87fff", + "0x10780017fff7fff", + "0x87", + "0x4825800180007ffa", + "0x0", + "0x400280007ff87fff", + "0x482680017ff88000", + "0x1", + "0x482480017ffe8000", + "0x1a68", + "0x48297ffc80007ffd", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0x12", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", + "0x400080007ffe7fff", + "0x48127ffb7fff8000", + "0x480a7ff97fff8000", + "0x482480017ffa8000", + "0x5be", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x482480017ff88000", + "0x1", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0x3878", + "0x482480017fff8000", + "0x3877", + "0x48127ffb7fff8000", + "0x480080007ffe8000", + "0x480080037fff8000", + "0x484480017fff8000", + "0x2", + "0x482480017fff8000", + "0x6c2", + "0xa0680017fff8000", + "0x8", + "0x48307ffe80007ffa", + "0x482480017fff8000", + "0x100000000000000000000000000000000", + "0x400080007ff27fff", + "0x10780017fff7fff", + "0x48", + "0x48307ffe80007ffa", + "0x400080007ff37fff", + "0x480680017fff8000", + "0x0", + "0x482480017ff28000", + "0x1", + "0x48127ffd7fff8000", + "0x20680017fff7ffd", + "0x1c", + "0x1104800180018000", + "0x385c", + "0x482480017fff8000", + "0x385b", + "0x480080007fff8000", + "0x480080037fff8000", + "0x482480017fff8000", + "0x1e", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x482480017ffe8000", + "0x1", + "0x482480017ffe8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x400280007ff97ffd", + "0x400280017ff97ffe", + "0x400280027ff97fff", + "0x482680017ff98000", + "0x6", + "0x48307ff97ff38000", + "0x10780017fff7fff", + "0x1a", + "0x40780017fff7fff", + "0x3", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x482480017ffe8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x400280007ff97ffd", + "0x400280017ff97ffe", + "0x400280027ff97fff", + "0x480280037ff98000", + "0x482480017fff8000", + "0x1", + "0x480280047ff98000", + "0x480280057ff98000", + "0x400280067ff97ffd", + "0x400280077ff97ffe", + "0x400280087ff97fff", + "0x482680017ff98000", + "0xc", + "0x48127ff37fff8000", + "0x40780017fff7fff", + "0x1", + "0x48127ff07fff8000", + "0x48127ffc7fff8000", + "0x48127ffc7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ffa7fff8000", + "0x48127ff97fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482480017ff08000", + "0x1", + "0x480a7ff97fff8000", + "0x48127ff47fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x482480017ff88000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482680017ff88000", + "0x1", + "0x480a7ff97fff8000", + "0x482680017ffa8000", + "0x2152", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x482480017ff88000", + "0x1", + "0x208b7fff7fff7ffe", + "0xa0680017fff8000", + "0x7", + "0x482680017ffa8000", + "0x100000000000000000000000000000000", + "0x400280007ff87fff", + "0x10780017fff7fff", + "0x85", + "0x4825800180007ffa", + "0x0", + "0x400280007ff87fff", + "0x482680017ff88000", + "0x1", + "0x482480017ffe8000", + "0x1acc", + "0x48297ffc80007ffd", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0x12", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", + "0x400080007ffe7fff", + "0x48127ffb7fff8000", + "0x480a7ff97fff8000", + "0x482480017ffa8000", + "0x55a", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x482480017ff88000", + "0x1", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0x37db", + "0x482480017fff8000", + "0x37da", + "0x48127ffb7fff8000", + "0x480080007ffe8000", + "0x480080027fff8000", + "0x482480017fff8000", + "0x898", + "0xa0680017fff8000", + "0x8", + "0x48307ffe80007ffb", + "0x482480017fff8000", + "0x100000000000000000000000000000000", + "0x400080007ff37fff", + "0x10780017fff7fff", + "0x48", + "0x48307ffe80007ffb", + "0x400080007ff47fff", + "0x480680017fff8000", + "0xbe96d72eb4f94078192c2e84d5230cde2a70f4b45c8797e2c907acff5060bb", + "0x480680017fff8000", + "0x3c5906a3bc4858a3fc46f5d63a29ff95f31b816586c35b221405f884cb17bc3", + "0x482480017ff28000", + "0x1", + "0x48127ffc7fff8000", + "0x48507ffd7ffd8000", + "0x48507ffb7ffb8001", + "0x48507ffa80008001", + "0x482480017ff98001", + "0x6f21413efbe40de150e596d72f7a8c5609ad26c15c915c1f4cdfcb99cee9e89", + "0x483080007fff7ffd", + "0x48307ffc80007ffb", + "0x20680017fff7fff", + "0x1f", + "0x4800800080068004", + "0x4800800180058004", + "0x4850800380037ffe", + "0x4850800180017ffe", + "0x485080007ffd7ffe", + "0x482480017fff7ffe", + "0x6f21413efbe40de150e596d72f7a8c5609ad26c15c915c1f4cdfcb99cee9e89", + "0x48307ffd7ffc7ffa", + "0x480680017fff8000", + "0x2", + "0x48127fee7fff8000", + "0x48127fee7fff8000", + "0x400280007ff97ffa", + "0x400280017ff97ffb", + "0x400280027ff97ffe", + "0x400280037ff97fff", + "0x400280047ff97ffd", + "0x40780017fff7fff", + "0x1", + "0x48127fed7fff8000", + "0x482680017ff98000", + "0x7", + "0x48127fec7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ffa7fff8000", + "0x48127ff97fff8000", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0x379b", + "0x482480017fff8000", + "0x379a", + "0x480080007fff8000", + "0x480080027fff8000", + "0x482480017fff8000", + "0x2bc", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7074696f6e3a3a756e77726170206661696c65642e", + "0x400080007ffe7fff", + "0x48127ff07fff8000", + "0x480a7ff97fff8000", + "0x48307ffb7fef8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x482480017ff88000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482480017ff18000", + "0x1", + "0x480a7ff97fff8000", + "0x48127ff57fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x482480017ff88000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482680017ff88000", + "0x1", + "0x480a7ff97fff8000", + "0x482680017ffa8000", + "0x2152", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x482480017ff88000", + "0x1", + "0x208b7fff7fff7ffe", + "0xa0680017fff8000", + "0x7", + "0x482680017ffa8000", + "0x100000000000000000000000000000000", "0x400280007ff97fff", "0x10780017fff7fff", "0x7d", @@ -22553,6 +23077,10 @@ 285, 122, 95, + 106, + 106, + 157, + 155, 146, 244, 176, @@ -28325,78 +28853,474 @@ ] ], [ - 6824, + 6824, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -2 + } + }, + "rhs": { + "Immediate": "0x800000000000000000000000000000000000000000000000000000000000000" + }, + "dst": { + "register": "AP", + "offset": 4 + } + } + } + ] + ], + [ + 6828, + [ + { + "LinearSplit": { + "value": { + "Deref": { + "register": "AP", + "offset": 3 + } + }, + "scalar": { + "Immediate": "0x110000000000000000" + }, + "max_x": { + "Immediate": "0xffffffffffffffffffffffffffffffff" + }, + "x": { + "register": "AP", + "offset": -2 + }, + "y": { + "register": "AP", + "offset": -1 + } + } + } + ] + ], + [ + 6838, + [ + { + "LinearSplit": { + "value": { + "Deref": { + "register": "AP", + "offset": -3 + } + }, + "scalar": { + "Immediate": "0x8000000000000000000000000000000" + }, + "max_x": { + "Immediate": "0xffffffffffffffffffffffffffffffff" + }, + "x": { + "register": "AP", + "offset": -1 + }, + "y": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 6884, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -2 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 6886, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -3 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 3 + }, + "remainder": { + "register": "AP", + "offset": 4 + } + } + } + ] + ], + [ + 6935, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -2 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 6937, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -3 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 3 + }, + "remainder": { + "register": "AP", + "offset": 4 + } + } + } + ] + ], + [ + 6966, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 6987, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x2e18" + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -2 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 6999, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 7023, + [ + { + "SystemCall": { + "system": { + "Deref": { + "register": "FP", + "offset": -5 + } + } + } + } + ] + ], + [ + 7027, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 7049, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 7089, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 7112, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 7126, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 7142, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x0" + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -6 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 7161, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 7186, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -4 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 7205, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 7226, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 7242, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 7259, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x0" + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -6 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 7288, [ { - "TestLessThan": { - "lhs": { - "Deref": { - "register": "AP", - "offset": -2 - } - }, - "rhs": { - "Immediate": "0x800000000000000000000000000000000000000000000000000000000000000" - }, + "AllocSegment": { "dst": { "register": "AP", - "offset": 4 + "offset": 0 } } } ] ], [ - 6828, + 7315, [ { - "LinearSplit": { - "value": { + "TestLessThanOrEqual": { + "lhs": { "Deref": { "register": "AP", - "offset": 3 + "offset": -1 } }, - "scalar": { - "Immediate": "0x110000000000000000" - }, - "max_x": { - "Immediate": "0xffffffffffffffffffffffffffffffff" - }, - "x": { - "register": "AP", - "offset": -2 + "rhs": { + "Deref": { + "register": "AP", + "offset": -5 + } }, - "y": { + "dst": { "register": "AP", - "offset": -1 + "offset": 0 } } } ] ], [ - 6838, + 7335, [ { - "LinearSplit": { - "value": { - "Deref": { - "register": "AP", - "offset": -3 - } - }, - "scalar": { - "Immediate": "0x8000000000000000000000000000000" - }, - "max_x": { - "Immediate": "0xffffffffffffffffffffffffffffffff" - }, - "x": { - "register": "AP", - "offset": -1 - }, - "y": { + "AllocSegment": { + "dst": { "register": "AP", "offset": 0 } @@ -28405,19 +29329,10 @@ ] ], [ - 6884, + 7356, [ { - "TestLessThan": { - "lhs": { - "Deref": { - "register": "AP", - "offset": -2 - } - }, - "rhs": { - "Immediate": "0x100000000000000000000000000000000" - }, + "AllocSegment": { "dst": { "register": "AP", "offset": 0 @@ -28427,45 +29342,23 @@ ] ], [ - 6886, + 7372, [ { - "DivMod": { - "lhs": { - "Deref": { - "register": "AP", - "offset": -3 - } - }, - "rhs": { - "Immediate": "0x100000000000000000000000000000000" - }, - "quotient": { - "register": "AP", - "offset": 3 - }, - "remainder": { + "AllocSegment": { + "dst": { "register": "AP", - "offset": 4 + "offset": 0 } } } ] ], [ - 6935, + 7388, [ { - "TestLessThan": { - "lhs": { - "Deref": { - "register": "AP", - "offset": -2 - } - }, - "rhs": { - "Immediate": "0x100000000000000000000000000000000" - }, + "AllocSegment": { "dst": { "register": "AP", "offset": 0 @@ -28475,33 +29368,29 @@ ] ], [ - 6937, + 7405, [ { - "DivMod": { + "TestLessThanOrEqual": { "lhs": { - "Deref": { - "register": "AP", - "offset": -3 - } + "Immediate": "0x0" }, "rhs": { - "Immediate": "0x100000000000000000000000000000000" - }, - "quotient": { - "register": "AP", - "offset": 3 + "Deref": { + "register": "FP", + "offset": -6 + } }, - "remainder": { + "dst": { "register": "AP", - "offset": 4 + "offset": 0 } } } ] ], [ - 6966, + 7434, [ { "AllocSegment": { @@ -28514,12 +29403,12 @@ ] ], [ - 6987, + 7455, [ { "TestLessThanOrEqual": { "lhs": { - "Immediate": "0x2e18" + "Immediate": "0x2c88" }, "rhs": { "Deref": { @@ -28536,7 +29425,7 @@ ] ], [ - 6999, + 7467, [ { "AllocSegment": { @@ -28549,7 +29438,7 @@ ] ], [ - 7023, + 7488, [ { "SystemCall": { @@ -28564,20 +29453,7 @@ ] ], [ - 7027, - [ - { - "AllocSegment": { - "dst": { - "register": "AP", - "offset": 0 - } - } - } - ] - ], - [ - 7049, + 7492, [ { "AllocSegment": { @@ -28590,7 +29466,7 @@ ] ], [ - 7089, + 7514, [ { "AllocSegment": { @@ -28603,7 +29479,7 @@ ] ], [ - 7112, + 7529, [ { "AllocSegment": { @@ -28616,7 +29492,7 @@ ] ], [ - 7126, + 7544, [ { "AllocSegment": { @@ -28629,7 +29505,7 @@ ] ], [ - 7142, + 7560, [ { "TestLessThanOrEqual": { @@ -28651,7 +29527,7 @@ ] ], [ - 7161, + 7579, [ { "AllocSegment": { @@ -28664,7 +29540,7 @@ ] ], [ - 7186, + 7612, [ { "TestLessThanOrEqual": { @@ -28677,7 +29553,7 @@ "rhs": { "Deref": { "register": "AP", - "offset": -4 + "offset": -8 } }, "dst": { @@ -28689,7 +29565,7 @@ ] ], [ - 7205, + 7632, [ { "AllocSegment": { @@ -28702,7 +29578,7 @@ ] ], [ - 7226, + 7657, [ { "AllocSegment": { @@ -28715,7 +29591,7 @@ ] ], [ - 7242, + 7675, [ { "AllocSegment": { @@ -28728,7 +29604,7 @@ ] ], [ - 7259, + 7694, [ { "TestLessThanOrEqual": { @@ -28750,7 +29626,7 @@ ] ], [ - 7288, + 7713, [ { "AllocSegment": { @@ -28763,20 +29639,17 @@ ] ], [ - 7315, + 7735, [ { "TestLessThanOrEqual": { "lhs": { - "Deref": { - "register": "AP", - "offset": -1 - } + "Immediate": "0x1864" }, "rhs": { "Deref": { "register": "AP", - "offset": -5 + "offset": -2 } }, "dst": { @@ -28788,7 +29661,7 @@ ] ], [ - 7335, + 7761, [ { "AllocSegment": { @@ -28801,7 +29674,7 @@ ] ], [ - 7356, + 7795, [ { "AllocSegment": { @@ -28814,7 +29687,7 @@ ] ], [ - 7372, + 7811, [ { "AllocSegment": { @@ -28827,10 +29700,19 @@ ] ], [ - 7388, + 7830, [ { - "AllocSegment": { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x0" + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -6 + } + }, "dst": { "register": "AP", "offset": 0 @@ -28840,19 +29722,90 @@ ] ], [ - 7405, + 7869, [ { - "TestLessThanOrEqual": { + "TestLessThan": { "lhs": { - "Immediate": "0x0" + "Deref": { + "register": "FP", + "offset": 1 + } }, "rhs": { + "Immediate": "0x800000000000000000000000000000000000000000000000000000000000000" + }, + "dst": { + "register": "AP", + "offset": 4 + } + } + } + ] + ], + [ + 7873, + [ + { + "LinearSplit": { + "value": { + "Deref": { + "register": "AP", + "offset": 3 + } + }, + "scalar": { + "Immediate": "0x110000000000000000" + }, + "max_x": { + "Immediate": "0xffffffffffffffffffffffffffffffff" + }, + "x": { + "register": "AP", + "offset": -2 + }, + "y": { + "register": "AP", + "offset": -1 + } + } + } + ] + ], + [ + 7883, + [ + { + "LinearSplit": { + "value": { "Deref": { "register": "FP", - "offset": -6 + "offset": 1 } }, + "scalar": { + "Immediate": "0x8000000000000000000000000000000" + }, + "max_x": { + "Immediate": "0xffffffffffffffffffffffffffffffff" + }, + "x": { + "register": "AP", + "offset": -1 + }, + "y": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 7927, + [ + { + "AllocSegment": { "dst": { "register": "AP", "offset": 0 @@ -28862,7 +29815,7 @@ ] ], [ - 7434, + 7949, [ { "AllocSegment": { @@ -28875,12 +29828,12 @@ ] ], [ - 7455, + 7970, [ { "TestLessThanOrEqual": { "lhs": { - "Immediate": "0x2c88" + "Immediate": "0x118dc" }, "rhs": { "Deref": { @@ -28897,7 +29850,7 @@ ] ], [ - 7467, + 7994, [ { "AllocSegment": { @@ -28910,22 +29863,20 @@ ] ], [ - 7488, + 8013, [ { - "SystemCall": { - "system": { - "Deref": { - "register": "FP", - "offset": -5 - } + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 } } } ] ], [ - 7492, + 8045, [ { "AllocSegment": { @@ -28938,7 +29889,7 @@ ] ], [ - 7514, + 8059, [ { "AllocSegment": { @@ -28951,7 +29902,7 @@ ] ], [ - 7529, + 8083, [ { "AllocSegment": { @@ -28964,7 +29915,7 @@ ] ], [ - 7544, + 8097, [ { "AllocSegment": { @@ -28977,7 +29928,7 @@ ] ], [ - 7560, + 8113, [ { "TestLessThanOrEqual": { @@ -28999,7 +29950,7 @@ ] ], [ - 7579, + 8142, [ { "AllocSegment": { @@ -29012,20 +29963,17 @@ ] ], [ - 7612, + 8163, [ { "TestLessThanOrEqual": { "lhs": { - "Deref": { - "register": "AP", - "offset": -1 - } + "Immediate": "0x0" }, "rhs": { "Deref": { "register": "AP", - "offset": -8 + "offset": -2 } }, "dst": { @@ -29037,7 +29985,7 @@ ] ], [ - 7632, + 8175, [ { "AllocSegment": { @@ -29050,7 +29998,7 @@ ] ], [ - 7657, + 8189, [ { "AllocSegment": { @@ -29063,7 +30011,7 @@ ] ], [ - 7675, + 8204, [ { "AllocSegment": { @@ -29076,7 +30024,20 @@ ] ], [ - 7694, + 8219, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 8235, [ { "TestLessThanOrEqual": { @@ -29098,7 +30059,7 @@ ] ], [ - 7713, + 8254, [ { "AllocSegment": { @@ -29111,12 +30072,12 @@ ] ], [ - 7735, + 8275, [ { "TestLessThanOrEqual": { "lhs": { - "Immediate": "0x1864" + "Immediate": "0x0" }, "rhs": { "Deref": { @@ -29133,7 +30094,7 @@ ] ], [ - 7761, + 8287, [ { "AllocSegment": { @@ -29146,7 +30107,7 @@ ] ], [ - 7795, + 8299, [ { "AllocSegment": { @@ -29159,7 +30120,7 @@ ] ], [ - 7811, + 8314, [ { "AllocSegment": { @@ -29172,7 +30133,7 @@ ] ], [ - 7830, + 8330, [ { "TestLessThanOrEqual": { @@ -29194,78 +30155,49 @@ ] ], [ - 7869, + 8349, [ { - "TestLessThan": { - "lhs": { - "Deref": { - "register": "FP", - "offset": 1 - } - }, - "rhs": { - "Immediate": "0x800000000000000000000000000000000000000000000000000000000000000" - }, + "AllocSegment": { "dst": { "register": "AP", - "offset": 4 + "offset": 0 } } } ] ], [ - 7873, + 8374, [ { - "LinearSplit": { - "value": { + "TestLessThanOrEqual": { + "lhs": { "Deref": { "register": "AP", - "offset": 3 + "offset": -1 } }, - "scalar": { - "Immediate": "0x110000000000000000" - }, - "max_x": { - "Immediate": "0xffffffffffffffffffffffffffffffff" - }, - "x": { - "register": "AP", - "offset": -2 + "rhs": { + "Deref": { + "register": "AP", + "offset": -4 + } }, - "y": { + "dst": { "register": "AP", - "offset": -1 + "offset": 0 } } } ] ], [ - 7883, + 8390, [ { - "LinearSplit": { - "value": { - "Deref": { - "register": "FP", - "offset": 1 - } - }, - "scalar": { - "Immediate": "0x8000000000000000000000000000000" - }, - "max_x": { - "Immediate": "0xffffffffffffffffffffffffffffffff" - }, - "x": { - "register": "AP", - "offset": -1 - }, - "y": { + "AllocSegment": { + "dst": { "register": "AP", "offset": 0 } @@ -29274,7 +30206,7 @@ ] ], [ - 7927, + 8403, [ { "AllocSegment": { @@ -29287,7 +30219,7 @@ ] ], [ - 7949, + 8419, [ { "AllocSegment": { @@ -29300,17 +30232,17 @@ ] ], [ - 7970, + 8436, [ { "TestLessThanOrEqual": { "lhs": { - "Immediate": "0x118dc" + "Immediate": "0x0" }, "rhs": { "Deref": { - "register": "AP", - "offset": -2 + "register": "FP", + "offset": -6 } }, "dst": { @@ -29322,7 +30254,7 @@ ] ], [ - 7994, + 8455, [ { "AllocSegment": { @@ -29335,10 +30267,22 @@ ] ], [ - 8013, + 8480, [ { - "AllocSegment": { + "TestLessThanOrEqual": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -4 + } + }, "dst": { "register": "AP", "offset": 0 @@ -29348,7 +30292,7 @@ ] ], [ - 8045, + 8496, [ { "AllocSegment": { @@ -29361,7 +30305,7 @@ ] ], [ - 8059, + 8509, [ { "AllocSegment": { @@ -29374,7 +30318,7 @@ ] ], [ - 8083, + 8525, [ { "AllocSegment": { @@ -29387,20 +30331,7 @@ ] ], [ - 8097, - [ - { - "AllocSegment": { - "dst": { - "register": "AP", - "offset": 0 - } - } - } - ] - ], - [ - 8113, + 8542, [ { "TestLessThanOrEqual": { @@ -29422,7 +30353,7 @@ ] ], [ - 8142, + 8561, [ { "AllocSegment": { @@ -29435,17 +30366,20 @@ ] ], [ - 8163, + 8588, [ { "TestLessThanOrEqual": { "lhs": { - "Immediate": "0x0" + "Deref": { + "register": "AP", + "offset": -1 + } }, "rhs": { "Deref": { "register": "AP", - "offset": -2 + "offset": -5 } }, "dst": { @@ -29457,20 +30391,7 @@ ] ], [ - 8175, - [ - { - "AllocSegment": { - "dst": { - "register": "AP", - "offset": 0 - } - } - } - ] - ], - [ - 8189, + 8655, [ { "AllocSegment": { @@ -29483,7 +30404,7 @@ ] ], [ - 8204, + 8666, [ { "AllocSegment": { @@ -29496,7 +30417,7 @@ ] ], [ - 8219, + 8682, [ { "AllocSegment": { @@ -29509,7 +30430,7 @@ ] ], [ - 8235, + 8699, [ { "TestLessThanOrEqual": { @@ -29531,7 +30452,7 @@ ] ], [ - 8254, + 8718, [ { "AllocSegment": { @@ -29544,17 +30465,20 @@ ] ], [ - 8275, + 8743, [ { "TestLessThanOrEqual": { "lhs": { - "Immediate": "0x0" + "Deref": { + "register": "AP", + "offset": -1 + } }, "rhs": { "Deref": { "register": "AP", - "offset": -2 + "offset": -4 } }, "dst": { @@ -29566,7 +30490,35 @@ ] ], [ - 8287, + 8769, + [ + { + "RandomEcPoint": { + "x": { + "register": "AP", + "offset": 4 + }, + "y": { + "register": "AP", + "offset": 5 + } + } + }, + { + "AllocConstantSize": { + "size": { + "Immediate": "0x2" + }, + "dst": { + "register": "AP", + "offset": 6 + } + } + } + ] + ], + [ + 8786, [ { "AllocSegment": { @@ -29579,7 +30531,7 @@ ] ], [ - 8299, + 8806, [ { "AllocSegment": { @@ -29592,7 +30544,7 @@ ] ], [ - 8314, + 8821, [ { "AllocSegment": { @@ -29605,7 +30557,20 @@ ] ], [ - 8330, + 8837, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 8854, [ { "TestLessThanOrEqual": { @@ -29627,7 +30592,7 @@ ] ], [ - 8368, + 8892, [ { "AllocSegment": { @@ -29640,7 +30605,7 @@ ] ], [ - 8389, + 8913, [ { "TestLessThanOrEqual": { @@ -29662,7 +30627,7 @@ ] ], [ - 8401, + 8925, [ { "AllocSegment": { @@ -29675,7 +30640,7 @@ ] ], [ - 8415, + 8939, [ { "AllocSegment": { @@ -29688,7 +30653,7 @@ ] ], [ - 8430, + 8954, [ { "AllocSegment": { @@ -29701,7 +30666,7 @@ ] ], [ - 8445, + 8969, [ { "AllocSegment": { @@ -29714,7 +30679,7 @@ ] ], [ - 8460, + 8984, [ { "AllocSegment": { @@ -29727,7 +30692,7 @@ ] ], [ - 8476, + 9000, [ { "TestLessThanOrEqual": { @@ -29749,7 +30714,7 @@ ] ], [ - 8523, + 9047, [ { "TestLessThan": { @@ -29771,7 +30736,7 @@ ] ], [ - 8527, + 9051, [ { "LinearSplit": { @@ -29800,7 +30765,7 @@ ] ], [ - 8537, + 9061, [ { "LinearSplit": { @@ -29829,7 +30794,7 @@ ] ], [ - 8563, + 9087, [ { "AllocSegment": { @@ -29842,7 +30807,7 @@ ] ], [ - 8584, + 9108, [ { "TestLessThanOrEqual": { @@ -29864,7 +30829,7 @@ ] ], [ - 8608, + 9132, [ { "SystemCall": { @@ -29879,7 +30844,7 @@ ] ], [ - 8612, + 9136, [ { "AllocSegment": { @@ -29892,7 +30857,7 @@ ] ], [ - 8636, + 9160, [ { "AllocSegment": { @@ -29905,7 +30870,7 @@ ] ], [ - 8651, + 9175, [ { "AllocSegment": { @@ -29918,7 +30883,7 @@ ] ], [ - 8675, + 9199, [ { "AllocSegment": { @@ -29931,7 +30896,7 @@ ] ], [ - 8689, + 9213, [ { "AllocSegment": { @@ -29944,7 +30909,7 @@ ] ], [ - 8704, + 9228, [ { "AllocSegment": { @@ -29957,7 +30922,7 @@ ] ], [ - 8720, + 9244, [ { "TestLessThanOrEqual": { @@ -29979,7 +30944,7 @@ ] ], [ - 8759, + 9283, [ { "AllocSegment": { @@ -29992,7 +30957,7 @@ ] ], [ - 8780, + 9304, [ { "TestLessThanOrEqual": { @@ -30014,7 +30979,7 @@ ] ], [ - 8807, + 9331, [ { "SystemCall": { @@ -30029,7 +30994,7 @@ ] ], [ - 8811, + 9335, [ { "AllocSegment": { @@ -30042,7 +31007,7 @@ ] ], [ - 8835, + 9359, [ { "AllocSegment": { @@ -30055,7 +31020,7 @@ ] ], [ - 8850, + 9374, [ { "AllocSegment": { @@ -30068,7 +31033,7 @@ ] ], [ - 8865, + 9389, [ { "AllocSegment": { @@ -30081,7 +31046,7 @@ ] ], [ - 8880, + 9404, [ { "AllocSegment": { @@ -30094,7 +31059,7 @@ ] ], [ - 8896, + 9420, [ { "TestLessThanOrEqual": { @@ -30116,7 +31081,7 @@ ] ], [ - 8974, + 9498, [ { "AllocSegment": { @@ -30129,7 +31094,7 @@ ] ], [ - 8994, + 9518, [ { "TestLessThanOrEqual": { @@ -30151,7 +31116,7 @@ ] ], [ - 9033, + 9557, [ { "AllocSegment": { @@ -30164,7 +31129,7 @@ ] ], [ - 9047, + 9571, [ { "TestLessThanOrEqual": { @@ -30186,7 +31151,7 @@ ] ], [ - 9086, + 9610, [ { "AllocSegment": { @@ -30199,7 +31164,7 @@ ] ], [ - 9100, + 9624, [ { "AllocSegment": { @@ -30212,7 +31177,7 @@ ] ], [ - 9116, + 9640, [ { "SystemCall": { @@ -30227,7 +31192,7 @@ ] ], [ - 9126, + 9650, [ { "SystemCall": { @@ -30248,7 +31213,7 @@ ] ], [ - 9140, + 9664, [ { "SystemCall": { @@ -30269,7 +31234,7 @@ ] ], [ - 9158, + 9682, [ { "SystemCall": { @@ -30290,7 +31255,7 @@ ] ], [ - 9179, + 9703, [ { "AllocSegment": { @@ -30303,7 +31268,7 @@ ] ], [ - 9240, + 9764, [ { "AllocSegment": { @@ -30316,7 +31281,7 @@ ] ], [ - 9252, + 9776, [ { "SystemCall": { @@ -30331,7 +31296,7 @@ ] ], [ - 9256, + 9780, [ { "AllocSegment": { @@ -30344,7 +31309,7 @@ ] ], [ - 9276, + 9800, [ { "SystemCall": { @@ -30365,7 +31330,7 @@ ] ], [ - 9282, + 9806, [ { "AllocSegment": { @@ -30378,7 +31343,7 @@ ] ], [ - 9309, + 9833, [ { "SystemCall": { @@ -30399,7 +31364,7 @@ ] ], [ - 9333, + 9857, [ { "AllocSegment": { @@ -30412,7 +31377,7 @@ ] ], [ - 9370, + 9894, [ { "TestLessThanOrEqual": { @@ -30434,7 +31399,7 @@ ] ], [ - 9397, + 9921, [ { "SystemCall": { @@ -30449,7 +31414,7 @@ ] ], [ - 9406, + 9930, [ { "TestLessThan": { @@ -30480,7 +31445,7 @@ ] ], [ - 9431, + 9955, [ { "AllocSegment": { @@ -30493,7 +31458,7 @@ ] ], [ - 9468, + 9992, [ { "AllocSegment": { @@ -30506,7 +31471,7 @@ ] ], [ - 9505, + 10029, [ { "TestLessThan": { @@ -30534,7 +31499,7 @@ ] ], [ - 9509, + 10033, [ { "LinearSplit": { @@ -30563,7 +31528,7 @@ ] ], [ - 9551, + 10075, [ { "TestLessThan": { @@ -30591,7 +31556,7 @@ ] ], [ - 9555, + 10079, [ { "LinearSplit": { @@ -30620,7 +31585,7 @@ ] ], [ - 9596, + 10120, [ { "TestLessThan": { @@ -30642,7 +31607,7 @@ ] ], [ - 9600, + 10124, [ { "LinearSplit": { @@ -30671,7 +31636,7 @@ ] ], [ - 9610, + 10134, [ { "LinearSplit": { @@ -30700,7 +31665,7 @@ ] ], [ - 9725, + 10249, [ { "TestLessThan": { @@ -30722,7 +31687,7 @@ ] ], [ - 9729, + 10253, [ { "LinearSplit": { @@ -30751,7 +31716,7 @@ ] ], [ - 9739, + 10263, [ { "LinearSplit": { @@ -30780,7 +31745,7 @@ ] ], [ - 9775, + 10299, [ { "TestLessThan": { @@ -30802,7 +31767,7 @@ ] ], [ - 9777, + 10301, [ { "DivMod": { @@ -30828,7 +31793,7 @@ ] ], [ - 9866, + 10390, [ { "AllocSegment": { @@ -30841,7 +31806,7 @@ ] ], [ - 9929, + 10453, [ { "TestLessThan": { @@ -30863,7 +31828,7 @@ ] ], [ - 9931, + 10455, [ { "DivMod": { @@ -30889,7 +31854,7 @@ ] ], [ - 9990, + 10514, [ { "TestLessThan": { @@ -30917,7 +31882,7 @@ ] ], [ - 9994, + 10518, [ { "LinearSplit": { @@ -30946,7 +31911,7 @@ ] ], [ - 10040, + 10564, [ { "TestLessThan": { @@ -30974,7 +31939,7 @@ ] ], [ - 10044, + 10568, [ { "LinearSplit": { @@ -31003,7 +31968,7 @@ ] ], [ - 10904, + 11428, [ { "SystemCall": { @@ -31018,7 +31983,7 @@ ] ], [ - 11174, + 11698, [ { "AllocSegment": { @@ -31031,7 +31996,7 @@ ] ], [ - 11188, + 11712, [ { "AllocSegment": { @@ -31044,7 +32009,7 @@ ] ], [ - 11203, + 11727, [ { "AllocSegment": { @@ -31057,7 +32022,7 @@ ] ], [ - 11275, + 11799, [ { "AllocSegment": { @@ -31070,7 +32035,7 @@ ] ], [ - 11291, + 11815, [ { "AllocSegment": { @@ -31083,7 +32048,7 @@ ] ], [ - 11316, + 11840, [ { "AllocSegment": { @@ -31096,7 +32061,7 @@ ] ], [ - 11340, + 11864, [ { "SystemCall": { @@ -31111,7 +32076,7 @@ ] ], [ - 11344, + 11868, [ { "AllocSegment": { @@ -31124,7 +32089,7 @@ ] ], [ - 11360, + 11884, [ { "SystemCall": { @@ -31145,7 +32110,7 @@ ] ], [ - 11401, + 11925, [ { "GetSegmentArenaIndex": { @@ -31164,7 +32129,7 @@ ] ], [ - 11442, + 11966, [ { "AllocSegment": { @@ -31177,7 +32142,7 @@ ] ], [ - 11450, + 11974, [ { "InitSquashData": { @@ -31212,7 +32177,7 @@ ] ], [ - 11469, + 11993, [ { "GetCurrentAccessIndex": { @@ -31227,7 +32192,7 @@ ] ], [ - 11482, + 12006, [ { "ShouldSkipSquashLoop": { @@ -31240,7 +32205,7 @@ ] ], [ - 11484, + 12008, [ { "GetCurrentAccessDelta": { @@ -31253,7 +32218,7 @@ ] ], [ - 11495, + 12019, [ { "ShouldContinueSquashLoop": { @@ -31266,7 +32231,7 @@ ] ], [ - 11509, + 12033, [ { "GetNextDictKey": { @@ -31279,7 +32244,7 @@ ] ], [ - 11528, + 12052, [ { "AssertLeFindSmallArcs": { @@ -31312,7 +32277,7 @@ ] ], [ - 11540, + 12064, [ { "AssertLeIsFirstArcExcluded": { @@ -31325,7 +32290,7 @@ ] ], [ - 11552, + 12076, [ { "AssertLeIsSecondArcExcluded": { @@ -31338,7 +32303,7 @@ ] ], [ - 11585, + 12109, [ { "TestLessThanOrEqual": { @@ -31360,7 +32325,7 @@ ] ], [ - 11599, + 12123, [ { "TestLessThan": { @@ -31382,7 +32347,7 @@ ] ], [ - 11620, + 12144, [ { "TestLessThan": { @@ -31404,7 +32369,7 @@ ] ], [ - 11638, + 12162, [ { "WideMul128": { @@ -31433,7 +32398,7 @@ ] ], [ - 11640, + 12164, [ { "DivMod": { @@ -31459,7 +32424,7 @@ ] ], [ - 11650, + 12174, [ { "DivMod": { @@ -31485,7 +32450,7 @@ ] ], [ - 11661, + 12185, [ { "DivMod": { @@ -31511,7 +32476,7 @@ ] ], [ - 11677, + 12201, [ { "TestLessThan": { @@ -31533,7 +32498,7 @@ ] ], [ - 11695, + 12219, [ { "AllocSegment": { @@ -31546,7 +32511,7 @@ ] ], [ - 11709, + 12233, [ { "AllocSegment": { @@ -31559,7 +32524,7 @@ ] ], [ - 11731, + 12255, [ { "AllocSegment": { @@ -31572,7 +32537,7 @@ ] ], [ - 11754, + 12278, [ { "AllocSegment": { @@ -31585,7 +32550,7 @@ ] ], [ - 11769, + 12293, [ { "AllocSegment": { @@ -31598,7 +32563,7 @@ ] ], [ - 11783, + 12307, [ { "AllocSegment": { @@ -31611,7 +32576,7 @@ ] ], [ - 11791, + 12315, [ { "AllocSegment": { @@ -31624,7 +32589,7 @@ ] ], [ - 11823, + 12347, [ { "SystemCall": { @@ -31639,7 +32604,7 @@ ] ], [ - 11838, + 12362, [ { "AllocSegment": { @@ -31652,7 +32617,7 @@ ] ], [ - 11860, + 12384, [ { "AllocSegment": { @@ -31665,7 +32630,7 @@ ] ], [ - 11875, + 12399, [ { "AllocSegment": { @@ -31678,7 +32643,7 @@ ] ], [ - 11890, + 12414, [ { "SystemCall": { @@ -31693,7 +32658,7 @@ ] ], [ - 11894, + 12418, [ { "AllocSegment": { @@ -31706,7 +32671,7 @@ ] ], [ - 11938, + 12462, [ { "AllocSegment": { @@ -31719,7 +32684,7 @@ ] ], [ - 11952, + 12476, [ { "AllocSegment": { @@ -31732,7 +32697,7 @@ ] ], [ - 11999, + 12523, [ { "AllocSegment": { @@ -31745,7 +32710,7 @@ ] ], [ - 12039, + 12563, [ { "AllocSegment": { @@ -31758,7 +32723,7 @@ ] ], [ - 12102, + 12626, [ { "SystemCall": { @@ -31773,7 +32738,7 @@ ] ], [ - 12123, + 12647, [ { "AllocSegment": { @@ -31786,7 +32751,7 @@ ] ], [ - 12155, + 12679, [ { "SystemCall": { @@ -31801,7 +32766,7 @@ ] ], [ - 12169, + 12693, [ { "AllocSegment": { @@ -31814,7 +32779,7 @@ ] ], [ - 12219, + 12743, [ { "SystemCall": { @@ -31829,7 +32794,7 @@ ] ], [ - 12236, + 12760, [ { "SystemCall": { @@ -31844,7 +32809,7 @@ ] ], [ - 12330, + 12854, [ { "AllocSegment": { @@ -31857,7 +32822,7 @@ ] ], [ - 12388, + 12912, [ { "AllocSegment": { @@ -31870,7 +32835,7 @@ ] ], [ - 12443, + 12967, [ { "AllocSegment": { @@ -31883,7 +32848,7 @@ ] ], [ - 12489, + 13013, [ { "AllocSegment": { @@ -31896,7 +32861,7 @@ ] ], [ - 12514, + 13038, [ { "AllocSegment": { @@ -31909,7 +32874,7 @@ ] ], [ - 12566, + 13090, [ { "SystemCall": { @@ -31924,7 +32889,7 @@ ] ], [ - 12579, + 13103, [ { "AllocSegment": { @@ -31937,7 +32902,7 @@ ] ], [ - 12611, + 13135, [ { "SystemCall": { @@ -31952,7 +32917,7 @@ ] ], [ - 12617, + 13141, [ { "AllocSegment": { @@ -31965,7 +32930,7 @@ ] ], [ - 12667, + 13191, [ { "SystemCall": { @@ -31980,7 +32945,7 @@ ] ], [ - 12684, + 13208, [ { "SystemCall": { @@ -31995,7 +32960,7 @@ ] ], [ - 12744, + 13268, [ { "AllocSegment": { @@ -32008,7 +32973,7 @@ ] ], [ - 12775, + 13299, [ { "SystemCall": { @@ -32023,7 +32988,7 @@ ] ], [ - 12826, + 13350, [ { "AllocSegment": { @@ -32036,7 +33001,7 @@ ] ], [ - 12869, + 13393, [ { "AllocSegment": { @@ -32049,7 +33014,7 @@ ] ], [ - 12899, + 13423, [ { "AllocSegment": { @@ -32062,7 +33027,7 @@ ] ], [ - 12916, + 13440, [ { "AllocSegment": { @@ -32075,7 +33040,7 @@ ] ], [ - 12944, + 13468, [ { "TestLessThanOrEqual": { @@ -32097,7 +33062,7 @@ ] ], [ - 12959, + 13483, [ { "TestLessThan": { @@ -32119,7 +33084,7 @@ ] ], [ - 13004, + 13528, [ { "TestLessThan": { @@ -32141,7 +33106,7 @@ ] ], [ - 13008, + 13532, [ { "LinearSplit": { @@ -32170,7 +33135,7 @@ ] ], [ - 13018, + 13542, [ { "LinearSplit": { @@ -32199,7 +33164,7 @@ ] ], [ - 13037, + 13561, [ { "SystemCall": { @@ -32214,7 +33179,7 @@ ] ], [ - 13058, + 13582, [ { "AllocSegment": { @@ -32227,7 +33192,7 @@ ] ], [ - 13080, + 13604, [ { "TestLessThan": { @@ -32249,7 +33214,7 @@ ] ], [ - 13084, + 13608, [ { "LinearSplit": { @@ -32278,7 +33243,7 @@ ] ], [ - 13094, + 13618, [ { "LinearSplit": { @@ -32307,7 +33272,7 @@ ] ], [ - 13113, + 13637, [ { "SystemCall": { @@ -32322,7 +33287,7 @@ ] ], [ - 13134, + 13658, [ { "AllocSegment": { @@ -32335,7 +33300,7 @@ ] ], [ - 13170, + 13694, [ { "AllocSegment": { @@ -32348,7 +33313,7 @@ ] ], [ - 13195, + 13719, [ { "AllocSegment": { @@ -32361,7 +33326,7 @@ ] ], [ - 13210, + 13734, [ { "AllocSegment": { @@ -32374,7 +33339,7 @@ ] ], [ - 13225, + 13749, [ { "AllocSegment": { @@ -32387,7 +33352,7 @@ ] ], [ - 13240, + 13764, [ { "AllocSegment": { @@ -32400,7 +33365,7 @@ ] ], [ - 13256, + 13780, [ { "AllocSegment": { @@ -32413,7 +33378,7 @@ ] ], [ - 13271, + 13795, [ { "TestLessThanOrEqual": { @@ -32435,7 +33400,7 @@ ] ], [ - 13286, + 13810, [ { "AllocSegment": { @@ -32448,7 +33413,7 @@ ] ], [ - 13307, + 13831, [ { "AllocSegment": { @@ -32461,7 +33426,7 @@ ] ], [ - 13321, + 13845, [ { "TestLessThanOrEqual": { @@ -32483,7 +33448,7 @@ ] ], [ - 13353, + 13877, [ { "AllocSegment": { @@ -32496,7 +33461,7 @@ ] ], [ - 13372, + 13896, [ { "TestLessThan": { @@ -32518,7 +33483,7 @@ ] ], [ - 13376, + 13900, [ { "LinearSplit": { @@ -32547,7 +33512,7 @@ ] ], [ - 13387, + 13911, [ { "LinearSplit": { @@ -32576,7 +33541,7 @@ ] ], [ - 13413, + 13937, [ { "SystemCall": { @@ -32591,7 +33556,7 @@ ] ], [ - 13429, + 13953, [ { "SystemCall": { @@ -32612,7 +33577,7 @@ ] ], [ - 13438, + 13962, [ { "TestLessThan": { @@ -32634,7 +33599,7 @@ ] ], [ - 13442, + 13966, [ { "LinearSplit": { @@ -32663,7 +33628,7 @@ ] ], [ - 13453, + 13977, [ { "LinearSplit": { @@ -32692,7 +33657,7 @@ ] ], [ - 13483, + 14007, [ { "SystemCall": { @@ -32713,7 +33678,7 @@ ] ], [ - 13500, + 14024, [ { "SystemCall": { @@ -32734,7 +33699,7 @@ ] ], [ - 13593, + 14117, [ { "TestLessThan": { @@ -32756,7 +33721,7 @@ ] ], [ - 13597, + 14121, [ { "LinearSplit": { @@ -32785,7 +33750,7 @@ ] ], [ - 13608, + 14132, [ { "LinearSplit": { @@ -32814,7 +33779,7 @@ ] ], [ - 13634, + 14158, [ { "SystemCall": { @@ -32829,7 +33794,7 @@ ] ], [ - 13650, + 14174, [ { "SystemCall": { @@ -32850,7 +33815,7 @@ ] ], [ - 13658, + 14182, [ { "TestLessThan": { @@ -32872,7 +33837,7 @@ ] ], [ - 13660, + 14184, [ { "DivMod": { @@ -32898,7 +33863,7 @@ ] ], [ - 13682, + 14206, [ { "TestLessThan": { @@ -32920,7 +33885,7 @@ ] ], [ - 13684, + 14208, [ { "DivMod": { @@ -32946,7 +33911,7 @@ ] ], [ - 13714, + 14238, [ { "TestLessThan": { @@ -32968,7 +33933,7 @@ ] ], [ - 13718, + 14242, [ { "LinearSplit": { @@ -32997,7 +33962,7 @@ ] ], [ - 13729, + 14253, [ { "LinearSplit": { @@ -33026,7 +33991,7 @@ ] ], [ - 13761, + 14285, [ { "SystemCall": { @@ -33041,7 +34006,7 @@ ] ], [ - 13777, + 14301, [ { "SystemCall": { @@ -33062,7 +34027,7 @@ ] ], [ - 13838, + 14362, [ { "AllocSegment": { @@ -33075,7 +34040,7 @@ ] ], [ - 13869, + 14393, [ { "AllocSegment": { @@ -33088,7 +34053,7 @@ ] ], [ - 13988, + 14512, [ { "RandomEcPoint": { @@ -33116,7 +34081,7 @@ ] ], [ - 14061, + 14585, [ { "RandomEcPoint": { @@ -33144,7 +34109,7 @@ ] ], [ - 14135, + 14659, [ { "AllocSegment": { @@ -33157,7 +34122,7 @@ ] ], [ - 14162, + 14686, [ { "SystemCall": { @@ -33172,7 +34137,7 @@ ] ], [ - 14180, + 14704, [ { "SystemCall": { @@ -33193,7 +34158,7 @@ ] ], [ - 14233, + 14757, [ { "AllocSegment": { @@ -33206,7 +34171,7 @@ ] ], [ - 14257, + 14781, [ { "AllocSegment": { @@ -33219,7 +34184,7 @@ ] ], [ - 14275, + 14799, [ { "SystemCall": { @@ -33234,7 +34199,7 @@ ] ], [ - 14286, + 14810, [ { "TestLessThan": { @@ -33256,7 +34221,7 @@ ] ], [ - 14290, + 14814, [ { "LinearSplit": { @@ -33285,7 +34250,7 @@ ] ], [ - 14301, + 14825, [ { "LinearSplit": { @@ -33314,7 +34279,7 @@ ] ], [ - 14345, + 14869, [ { "SystemCall": { @@ -33335,7 +34300,7 @@ ] ], [ - 14361, + 14885, [ { "SystemCall": { @@ -33356,7 +34321,7 @@ ] ], [ - 14379, + 14903, [ { "TestLessThan": { @@ -33381,7 +34346,7 @@ ] ], [ - 14395, + 14919, [ { "TestLessThan": { @@ -33403,7 +34368,7 @@ ] ], [ - 14399, + 14923, [ { "LinearSplit": { @@ -33432,7 +34397,7 @@ ] ], [ - 14410, + 14934, [ { "LinearSplit": { @@ -33461,7 +34426,7 @@ ] ], [ - 14440, + 14964, [ { "SystemCall": { @@ -33476,7 +34441,7 @@ ] ], [ - 14457, + 14981, [ { "SystemCall": { @@ -33497,7 +34462,7 @@ ] ], [ - 14512, + 15036, [ { "AllocSegment": { @@ -33510,7 +34475,7 @@ ] ], [ - 14538, + 15062, [ { "AllocSegment": { @@ -33523,7 +34488,7 @@ ] ], [ - 14683, + 15207, [ { "AllocSegment": { @@ -33536,7 +34501,7 @@ ] ], [ - 14751, + 15275, [ { "EvalCircuit": { @@ -33569,7 +34534,7 @@ ] ], [ - 14817, + 15341, [ { "AllocSegment": { @@ -33582,7 +34547,7 @@ ] ], [ - 14877, + 15401, [ { "AllocSegment": { @@ -33595,7 +34560,7 @@ ] ], [ - 14978, + 15502, [ { "AllocSegment": { @@ -33608,7 +34573,7 @@ ] ], [ - 14999, + 15523, [ { "AllocSegment": { @@ -33621,7 +34586,7 @@ ] ], [ - 15094, + 15618, [ { "AllocSegment": { @@ -33634,7 +34599,7 @@ ] ], [ - 15124, + 15648, [ { "AllocSegment": { @@ -33647,7 +34612,7 @@ ] ], [ - 15178, + 15702, [ { "SystemCall": { @@ -33662,7 +34627,7 @@ ] ], [ - 15197, + 15721, [ { "SystemCall": { @@ -33683,7 +34648,7 @@ ] ], [ - 15210, + 15734, [ { "SystemCall": { @@ -33704,7 +34669,7 @@ ] ], [ - 15216, + 15740, [ { "AllocSegment": { @@ -33717,7 +34682,7 @@ ] ], [ - 15289, + 15813, [ { "AllocSegment": { @@ -33730,7 +34695,7 @@ ] ], [ - 15321, + 15845, [ { "AllocSegment": { @@ -33743,7 +34708,7 @@ ] ], [ - 15351, + 15875, [ { "SystemCall": { @@ -33758,7 +34723,7 @@ ] ], [ - 15367, + 15891, [ { "SystemCall": { @@ -33779,7 +34744,7 @@ ] ], [ - 15392, + 15916, [ { "SystemCall": { @@ -33794,7 +34759,7 @@ ] ], [ - 15416, + 15940, [ { "AllocSegment": { @@ -33807,7 +34772,7 @@ ] ], [ - 15443, + 15967, [ { "AllocSegment": { @@ -33820,7 +34785,7 @@ ] ], [ - 15459, + 15983, [ { "AllocSegment": { @@ -33833,7 +34798,7 @@ ] ], [ - 15499, + 16023, [ { "AllocSegment": { @@ -33846,7 +34811,7 @@ ] ], [ - 15515, + 16039, [ { "AllocSegment": { @@ -33859,7 +34824,7 @@ ] ], [ - 15531, + 16055, [ { "AllocSegment": { @@ -33872,7 +34837,7 @@ ] ], [ - 15547, + 16071, [ { "AllocSegment": { @@ -33885,7 +34850,7 @@ ] ], [ - 15563, + 16087, [ { "AllocSegment": { @@ -33898,7 +34863,7 @@ ] ], [ - 15623, + 16147, [ { "TestLessThan": { @@ -33926,7 +34891,7 @@ ] ], [ - 15627, + 16151, [ { "LinearSplit": { @@ -33955,7 +34920,7 @@ ] ], [ - 15649, + 16173, [ { "TestLessThanOrEqual": { @@ -33980,7 +34945,7 @@ ] ], [ - 15663, + 16187, [ { "TestLessThan": { @@ -34002,7 +34967,7 @@ ] ], [ - 15673, + 16197, [ { "TestLessThanOrEqual": { @@ -34027,7 +34992,7 @@ ] ], [ - 15696, + 16220, [ { "AllocSegment": { @@ -34040,7 +35005,7 @@ ] ], [ - 15717, + 16241, [ { "AllocSegment": { @@ -34053,7 +35018,7 @@ ] ], [ - 15738, + 16262, [ { "AllocSegment": { @@ -34066,7 +35031,7 @@ ] ], [ - 15786, + 16310, [ { "TestLessThanOrEqual": { @@ -34088,7 +35053,7 @@ ] ], [ - 15850, + 16374, [ { "AllocSegment": { @@ -34101,7 +35066,7 @@ ] ], [ - 15870, + 16394, [ { "TestLessThanOrEqual": { @@ -34123,7 +35088,7 @@ ] ], [ - 15942, + 16466, [ { "AllocSegment": { @@ -34136,7 +35101,7 @@ ] ], [ - 15974, + 16498, [ { "AllocSegment": { @@ -34149,7 +35114,7 @@ ] ], [ - 15994, + 16518, [ { "TestLessThanOrEqual": { @@ -34171,7 +35136,7 @@ ] ], [ - 16095, + 16619, [ { "AllocSegment": { @@ -34184,7 +35149,7 @@ ] ], [ - 16127, + 16651, [ { "AllocSegment": { @@ -34197,7 +35162,7 @@ ] ], [ - 16147, + 16671, [ { "TestLessThanOrEqual": { @@ -34219,7 +35184,7 @@ ] ], [ - 16224, + 16748, [ { "AllocSegment": { @@ -34232,7 +35197,7 @@ ] ], [ - 16245, + 16769, [ { "DivMod": { @@ -34261,7 +35226,7 @@ ] ], [ - 16315, + 16839, [ { "AllocSegment": { @@ -34274,7 +35239,7 @@ ] ], [ - 16382, + 16906, [ { "AllocSegment": { @@ -34287,7 +35252,7 @@ ] ], [ - 16396, + 16920, [ { "DivMod": { @@ -34316,7 +35281,7 @@ ] ], [ - 16405, + 16929, [ { "TestLessThan": { @@ -34347,7 +35312,7 @@ ] ], [ - 16435, + 16959, [ { "TestLessThan": { @@ -34369,7 +35334,7 @@ ] ], [ - 16452, + 16976, [ { "AllocSegment": { @@ -34382,7 +35347,7 @@ ] ], [ - 16471, + 16995, [ { "TestLessThan": { @@ -34413,7 +35378,7 @@ ] ], [ - 16494, + 17018, [ { "AllocSegment": { @@ -34426,7 +35391,7 @@ ] ], [ - 16508, + 17032, [ { "AllocSegment": { @@ -34439,7 +35404,7 @@ ] ], [ - 16573, + 17097, [ { "DivMod": { @@ -34468,7 +35433,7 @@ ] ], [ - 16582, + 17106, [ { "TestLessThan": { @@ -34490,7 +35455,7 @@ ] ], [ - 16592, + 17116, [ { "TestLessThan": { @@ -34521,7 +35486,7 @@ ] ], [ - 16613, + 17137, [ { "TestLessThan": { @@ -34552,7 +35517,7 @@ ] ], [ - 16627, + 17151, [ { "DivMod": { @@ -34581,7 +35546,7 @@ ] ], [ - 16644, + 17168, [ { "TestLessThan": { @@ -34603,7 +35568,7 @@ ] ], [ - 16656, + 17180, [ { "TestLessThan": { @@ -34625,7 +35590,7 @@ ] ], [ - 16666, + 17190, [ { "TestLessThan": { @@ -34656,7 +35621,7 @@ ] ], [ - 16689, + 17213, [ { "AllocSegment": { @@ -34669,7 +35634,7 @@ ] ], [ - 16704, + 17228, [ { "AllocSegment": { @@ -34682,7 +35647,7 @@ ] ], [ - 16719, + 17243, [ { "AllocSegment": { @@ -34695,7 +35660,7 @@ ] ], [ - 16734, + 17258, [ { "AllocSegment": { @@ -34708,7 +35673,7 @@ ] ], [ - 16749, + 17273, [ { "AllocSegment": { @@ -34721,7 +35686,7 @@ ] ], [ - 16764, + 17288, [ { "AllocSegment": { @@ -34734,7 +35699,7 @@ ] ], [ - 16777, + 17301, [ { "TestLessThanOrEqual": { @@ -34756,7 +35721,7 @@ ] ], [ - 16788, + 17312, [ { "TestLessThanOrEqualAddress": { @@ -34787,7 +35752,7 @@ ] ], [ - 16828, + 17352, [ { "SystemCall": { @@ -34802,7 +35767,7 @@ ] ], [ - 16865, + 17389, [ { "AllocSegment": { @@ -34815,7 +35780,7 @@ ] ], [ - 16909, + 17433, [ { "TestLessThan": { @@ -34837,7 +35802,7 @@ ] ], [ - 16944, + 17468, [ { "TestLessThan": { @@ -34859,7 +35824,7 @@ ] ], [ - 17012, + 17536, [ { "TestLessThan": { @@ -34881,7 +35846,7 @@ ] ], [ - 17047, + 17571, [ { "TestLessThan": { @@ -34903,7 +35868,7 @@ ] ], [ - 17156, + 17680, [ { "AllocSegment": { @@ -34916,7 +35881,7 @@ ] ], [ - 17212, + 17736, [ { "TestLessThan": { @@ -34938,7 +35903,7 @@ ] ], [ - 17240, + 17764, [ { "TestLessThan": { @@ -34960,7 +35925,7 @@ ] ], [ - 17291, + 17815, [ { "TestLessThan": { @@ -34982,7 +35947,7 @@ ] ], [ - 17321, + 17845, [ { "TestLessThan": { @@ -35004,7 +35969,7 @@ ] ], [ - 17364, + 17888, [ { "U256InvModN": { @@ -35061,7 +36026,7 @@ ] ], [ - 17382, + 17906, [ { "WideMul128": { @@ -35258,7 +36223,7 @@ ] ], [ - 17435, + 17959, [ { "WideMul128": { @@ -35311,7 +36276,7 @@ ] ], [ - 17439, + 17963, [ { "TestLessThan": { @@ -35333,7 +36298,7 @@ ] ], [ - 17453, + 17977, [ { "TestLessThan": { @@ -35355,7 +36320,7 @@ ] ], [ - 17466, + 17990, [ { "DivMod": { @@ -35381,7 +36346,7 @@ ] ], [ - 17476, + 18000, [ { "DivMod": { @@ -35407,7 +36372,7 @@ ] ], [ - 17487, + 18011, [ { "DivMod": { @@ -35433,7 +36398,7 @@ ] ], [ - 17496, + 18020, [ { "DivMod": { @@ -35459,7 +36424,7 @@ ] ], [ - 17506, + 18030, [ { "DivMod": { @@ -35485,7 +36450,7 @@ ] ], [ - 17517, + 18041, [ { "DivMod": { @@ -35511,7 +36476,7 @@ ] ], [ - 17526, + 18050, [ { "DivMod": { @@ -35537,7 +36502,7 @@ ] ], [ - 17536, + 18060, [ { "DivMod": { @@ -35563,7 +36528,7 @@ ] ], [ - 17547, + 18071, [ { "DivMod": { @@ -35589,7 +36554,7 @@ ] ], [ - 17556, + 18080, [ { "DivMod": { @@ -35615,7 +36580,7 @@ ] ], [ - 17566, + 18090, [ { "DivMod": { @@ -35641,7 +36606,7 @@ ] ], [ - 17577, + 18101, [ { "DivMod": { @@ -35667,7 +36632,7 @@ ] ], [ - 17586, + 18110, [ { "DivMod": { @@ -35693,7 +36658,7 @@ ] ], [ - 17596, + 18120, [ { "DivMod": { @@ -35719,7 +36684,7 @@ ] ], [ - 17607, + 18131, [ { "DivMod": { @@ -35745,7 +36710,7 @@ ] ], [ - 17616, + 18140, [ { "DivMod": { @@ -35771,7 +36736,7 @@ ] ], [ - 17626, + 18150, [ { "DivMod": { @@ -35797,7 +36762,7 @@ ] ], [ - 17637, + 18161, [ { "DivMod": { @@ -35823,7 +36788,7 @@ ] ], [ - 17646, + 18170, [ { "DivMod": { @@ -35849,7 +36814,7 @@ ] ], [ - 17656, + 18180, [ { "DivMod": { @@ -35875,7 +36840,7 @@ ] ], [ - 17667, + 18191, [ { "DivMod": { @@ -35901,7 +36866,7 @@ ] ], [ - 17676, + 18200, [ { "DivMod": { @@ -35927,7 +36892,7 @@ ] ], [ - 17686, + 18210, [ { "DivMod": { @@ -35953,7 +36918,7 @@ ] ], [ - 17697, + 18221, [ { "DivMod": { @@ -35979,7 +36944,7 @@ ] ], [ - 17718, + 18242, [ { "Uint512DivModByUint256": { @@ -36048,7 +37013,7 @@ ] ], [ - 17736, + 18260, [ { "WideMul128": { @@ -36173,7 +37138,7 @@ ] ], [ - 17765, + 18289, [ { "TestLessThan": { @@ -36198,7 +37163,7 @@ ] ], [ - 17777, + 18301, [ { "TestLessThan": { @@ -36223,7 +37188,7 @@ ] ], [ - 17792, + 18316, [ { "DivMod": { @@ -36249,7 +37214,7 @@ ] ], [ - 17802, + 18326, [ { "DivMod": { @@ -36275,7 +37240,7 @@ ] ], [ - 17813, + 18337, [ { "DivMod": { @@ -36301,7 +37266,7 @@ ] ], [ - 17822, + 18346, [ { "DivMod": { @@ -36327,7 +37292,7 @@ ] ], [ - 17832, + 18356, [ { "DivMod": { @@ -36353,7 +37318,7 @@ ] ], [ - 17843, + 18367, [ { "DivMod": { @@ -36379,7 +37344,7 @@ ] ], [ - 17852, + 18376, [ { "DivMod": { @@ -36405,7 +37370,7 @@ ] ], [ - 17862, + 18386, [ { "DivMod": { @@ -36431,7 +37396,7 @@ ] ], [ - 17873, + 18397, [ { "DivMod": { @@ -36457,7 +37422,7 @@ ] ], [ - 17882, + 18406, [ { "DivMod": { @@ -36483,7 +37448,7 @@ ] ], [ - 17892, + 18416, [ { "DivMod": { @@ -36509,7 +37474,7 @@ ] ], [ - 17903, + 18427, [ { "DivMod": { @@ -36535,7 +37500,7 @@ ] ], [ - 17912, + 18436, [ { "DivMod": { @@ -36561,7 +37526,7 @@ ] ], [ - 17922, + 18446, [ { "DivMod": { @@ -36587,7 +37552,7 @@ ] ], [ - 17933, + 18457, [ { "DivMod": { @@ -36613,7 +37578,7 @@ ] ], [ - 17954, + 18478, [ { "Uint512DivModByUint256": { @@ -36682,7 +37647,7 @@ ] ], [ - 17972, + 18496, [ { "WideMul128": { @@ -36807,7 +37772,7 @@ ] ], [ - 18001, + 18525, [ { "TestLessThan": { @@ -36832,7 +37797,7 @@ ] ], [ - 18013, + 18537, [ { "TestLessThan": { @@ -36857,7 +37822,7 @@ ] ], [ - 18028, + 18552, [ { "DivMod": { @@ -36883,7 +37848,7 @@ ] ], [ - 18038, + 18562, [ { "DivMod": { @@ -36909,7 +37874,7 @@ ] ], [ - 18049, + 18573, [ { "DivMod": { @@ -36935,7 +37900,7 @@ ] ], [ - 18058, + 18582, [ { "DivMod": { @@ -36961,7 +37926,7 @@ ] ], [ - 18068, + 18592, [ { "DivMod": { @@ -36987,7 +37952,7 @@ ] ], [ - 18079, + 18603, [ { "DivMod": { @@ -37013,7 +37978,7 @@ ] ], [ - 18088, + 18612, [ { "DivMod": { @@ -37039,7 +38004,7 @@ ] ], [ - 18098, + 18622, [ { "DivMod": { @@ -37065,7 +38030,7 @@ ] ], [ - 18109, + 18633, [ { "DivMod": { @@ -37091,7 +38056,7 @@ ] ], [ - 18118, + 18642, [ { "DivMod": { @@ -37117,7 +38082,7 @@ ] ], [ - 18128, + 18652, [ { "DivMod": { @@ -37143,7 +38108,7 @@ ] ], [ - 18139, + 18663, [ { "DivMod": { @@ -37169,7 +38134,7 @@ ] ], [ - 18148, + 18672, [ { "DivMod": { @@ -37195,7 +38160,7 @@ ] ], [ - 18158, + 18682, [ { "DivMod": { @@ -37221,7 +38186,7 @@ ] ], [ - 18169, + 18693, [ { "DivMod": { @@ -37247,7 +38212,7 @@ ] ], [ - 18197, + 18721, [ { "SystemCall": { @@ -37262,7 +38227,7 @@ ] ], [ - 18216, + 18740, [ { "SystemCall": { @@ -37277,7 +38242,7 @@ ] ], [ - 18229, + 18753, [ { "SystemCall": { @@ -37298,7 +38263,7 @@ ] ], [ - 18241, + 18765, [ { "SystemCall": { @@ -37319,7 +38284,7 @@ ] ], [ - 18252, + 18776, [ { "SystemCall": { @@ -37340,7 +38305,7 @@ ] ], [ - 18351, + 18875, [ { "AllocSegment": { @@ -37353,7 +38318,7 @@ ] ], [ - 18383, + 18907, [ { "DivMod": { @@ -37379,7 +38344,7 @@ ] ], [ - 18393, + 18917, [ { "DivMod": { @@ -37405,7 +38370,7 @@ ] ], [ - 18404, + 18928, [ { "DivMod": { @@ -37431,7 +38396,7 @@ ] ], [ - 18413, + 18937, [ { "DivMod": { @@ -37457,7 +38422,7 @@ ] ], [ - 18423, + 18947, [ { "DivMod": { @@ -37483,7 +38448,7 @@ ] ], [ - 18434, + 18958, [ { "DivMod": { @@ -37509,7 +38474,7 @@ ] ], [ - 18443, + 18967, [ { "AllocSegment": { @@ -37522,7 +38487,7 @@ ] ], [ - 18515, + 19039, [ { "TestLessThan": { @@ -37553,7 +38518,7 @@ ] ], [ - 18530, + 19054, [ { "TestLessThan": { @@ -37575,7 +38540,7 @@ ] ], [ - 18549, + 19073, [ { "TestLessThan": { @@ -37597,7 +38562,7 @@ ] ], [ - 18568, + 19092, [ { "TestLessThan": { @@ -37619,7 +38584,7 @@ ] ], [ - 18578, + 19102, [ { "TestLessThan": { @@ -37641,7 +38606,7 @@ ] ], [ - 18580, + 19104, [ { "DivMod": { @@ -37667,7 +38632,7 @@ ] ], [ - 18617, + 19141, [ { "TestLessThan": { @@ -37689,7 +38654,7 @@ ] ], [ - 18632, + 19156, [ { "DivMod": { @@ -37718,7 +38683,7 @@ ] ], [ - 18638, + 19162, [ { "TestLessThan": { @@ -37740,7 +38705,7 @@ ] ], [ - 18652, + 19176, [ { "TestLessThan": { @@ -37762,7 +38727,7 @@ ] ], [ - 18666, + 19190, [ { "TestLessThan": { @@ -37784,7 +38749,7 @@ ] ], [ - 18677, + 19201, [ { "TestLessThan": { @@ -37806,7 +38771,7 @@ ] ], [ - 18706, + 19230, [ { "AllocSegment": { @@ -37819,7 +38784,7 @@ ] ], [ - 18731, + 19255, [ { "TestLessThan": { @@ -37841,7 +38806,7 @@ ] ], [ - 18735, + 19259, [ { "LinearSplit": { @@ -37870,7 +38835,7 @@ ] ], [ - 18745, + 19269, [ { "LinearSplit": { @@ -37899,7 +38864,7 @@ ] ], [ - 18765, + 19289, [ { "AllocSegment": { @@ -37912,7 +38877,7 @@ ] ], [ - 18786, + 19310, [ { "AllocSegment": { @@ -37925,7 +38890,7 @@ ] ], [ - 18807, + 19331, [ { "AllocSegment": { @@ -37938,7 +38903,7 @@ ] ], [ - 18827, + 19351, [ { "TestLessThan": { @@ -37960,7 +38925,7 @@ ] ], [ - 18829, + 19353, [ { "DivMod": { @@ -37986,7 +38951,7 @@ ] ], [ - 18869, + 19393, [ { "DivMod": { @@ -38015,7 +38980,7 @@ ] ], [ - 18875, + 19399, [ { "TestLessThan": { @@ -38037,7 +39002,7 @@ ] ], [ - 18889, + 19413, [ { "TestLessThan": { @@ -38059,7 +39024,7 @@ ] ], [ - 18907, + 19431, [ { "TestLessThan": { @@ -38081,7 +39046,7 @@ ] ], [ - 18920, + 19444, [ { "TestLessThan": { @@ -38103,7 +39068,7 @@ ] ], [ - 18931, + 19455, [ { "TestLessThan": { @@ -38125,7 +39090,7 @@ ] ], [ - 18960, + 19484, [ { "AllocSegment": { @@ -38138,7 +39103,7 @@ ] ], [ - 18985, + 19509, [ { "TestLessThan": { @@ -38160,7 +39125,7 @@ ] ], [ - 18989, + 19513, [ { "LinearSplit": { @@ -38189,7 +39154,7 @@ ] ], [ - 18999, + 19523, [ { "LinearSplit": { @@ -38218,7 +39183,7 @@ ] ], [ - 19019, + 19543, [ { "AllocSegment": { @@ -38231,7 +39196,7 @@ ] ], [ - 19040, + 19564, [ { "AllocSegment": { @@ -38244,7 +39209,7 @@ ] ], [ - 19061, + 19585, [ { "AllocSegment": { @@ -38257,7 +39222,7 @@ ] ], [ - 19090, + 19614, [ { "TestLessThan": { @@ -38279,7 +39244,7 @@ ] ], [ - 19092, + 19616, [ { "DivMod": { @@ -38305,7 +39270,7 @@ ] ], [ - 19129, + 19653, [ { "TestLessThan": { @@ -38327,7 +39292,7 @@ ] ], [ - 19140, + 19664, [ { "TestLessThan": { @@ -38349,7 +39314,7 @@ ] ], [ - 19151, + 19675, [ { "TestLessThan": { @@ -38371,7 +39336,7 @@ ] ], [ - 19180, + 19704, [ { "AllocSegment": { @@ -38384,7 +39349,7 @@ ] ], [ - 19205, + 19729, [ { "TestLessThan": { @@ -38406,7 +39371,7 @@ ] ], [ - 19209, + 19733, [ { "LinearSplit": { @@ -38435,7 +39400,7 @@ ] ], [ - 19219, + 19743, [ { "LinearSplit": { @@ -38464,7 +39429,7 @@ ] ], [ - 19245, + 19769, [ { "AllocSegment": { @@ -38477,7 +39442,7 @@ ] ], [ - 19266, + 19790, [ { "AllocSegment": { @@ -38490,7 +39455,7 @@ ] ], [ - 19288, + 19812, [ { "AllocSegment": { @@ -38503,7 +39468,7 @@ ] ], [ - 19310, + 19834, [ { "TestLessThan": { @@ -38525,7 +39490,7 @@ ] ], [ - 19321, + 19845, [ { "TestLessThan": { @@ -38547,7 +39512,7 @@ ] ], [ - 19350, + 19874, [ { "AllocSegment": { @@ -38560,7 +39525,7 @@ ] ], [ - 19375, + 19899, [ { "TestLessThan": { @@ -38582,7 +39547,7 @@ ] ], [ - 19379, + 19903, [ { "LinearSplit": { @@ -38611,7 +39576,7 @@ ] ], [ - 19389, + 19913, [ { "LinearSplit": { @@ -38640,7 +39605,7 @@ ] ], [ - 19412, + 19936, [ { "AllocSegment": { @@ -38653,7 +39618,7 @@ ] ], [ - 19463, + 19987, [ { "TestLessThan": { @@ -38675,7 +39640,7 @@ ] ], [ - 19474, + 19998, [ { "TestLessThan": { @@ -38697,7 +39662,7 @@ ] ], [ - 19503, + 20027, [ { "AllocSegment": { @@ -38710,7 +39675,7 @@ ] ], [ - 19526, + 20050, [ { "TestLessThan": { @@ -38741,7 +39706,7 @@ ] ], [ - 19550, + 20074, [ { "AllocSegment": { @@ -38754,7 +39719,7 @@ ] ], [ - 19584, + 20108, [ { "AllocSegment": { @@ -38767,7 +39732,7 @@ ] ], [ - 19601, + 20125, [ { "TestLessThanOrEqual": { @@ -38789,7 +39754,7 @@ ] ], [ - 19640, + 20164, [ { "AllocSegment": { @@ -38802,7 +39767,7 @@ ] ], [ - 19685, + 20209, [ { "TestLessThan": { @@ -38830,7 +39795,7 @@ ] ], [ - 19689, + 20213, [ { "LinearSplit": { @@ -38859,7 +39824,7 @@ ] ], [ - 19731, + 20255, [ { "TestLessThan": { @@ -38881,7 +39846,7 @@ ] ], [ - 19733, + 20257, [ { "DivMod": { @@ -38907,7 +39872,7 @@ ] ], [ - 19820, + 20344, [ { "DivMod": { @@ -38936,7 +39901,7 @@ ] ], [ - 19826, + 20350, [ { "TestLessThan": { @@ -38958,7 +39923,7 @@ ] ], [ - 19837, + 20361, [ { "TestLessThan": { @@ -38980,7 +39945,7 @@ ] ], [ - 19847, + 20371, [ { "TestLessThan": { @@ -39002,7 +39967,7 @@ ] ], [ - 19861, + 20385, [ { "DivMod": { @@ -39031,7 +39996,7 @@ ] ], [ - 19867, + 20391, [ { "TestLessThan": { @@ -39053,7 +40018,7 @@ ] ], [ - 19881, + 20405, [ { "TestLessThan": { @@ -39075,7 +40040,7 @@ ] ], [ - 19891, + 20415, [ { "TestLessThan": { @@ -39097,7 +40062,7 @@ ] ], [ - 19913, + 20437, [ { "AllocSegment": { @@ -39110,7 +40075,7 @@ ] ], [ - 19927, + 20451, [ { "AllocSegment": { @@ -39123,7 +40088,7 @@ ] ], [ - 19945, + 20469, [ { "AllocSegment": { @@ -39136,7 +40101,7 @@ ] ], [ - 19959, + 20483, [ { "AllocSegment": { @@ -39149,7 +40114,7 @@ ] ], [ - 19975, + 20499, [ { "TestLessThanOrEqual": { @@ -39171,7 +40136,7 @@ ] ], [ - 20004, + 20528, [ { "TestLessThan": { @@ -39193,7 +40158,7 @@ ] ], [ - 20021, + 20545, [ { "AllocSegment": { @@ -39206,7 +40171,7 @@ ] ], [ - 20048, + 20572, [ { "AllocSegment": { @@ -39219,7 +40184,7 @@ ] ], [ - 20308, + 20832, [ { "SystemCall": { @@ -39234,7 +40199,7 @@ ] ], [ - 20336, + 20860, [ { "SystemCall": { @@ -39249,7 +40214,7 @@ ] ], [ - 20352, + 20876, [ { "U256InvModN": { @@ -39306,7 +40271,7 @@ ] ], [ - 20370, + 20894, [ { "WideMul128": { @@ -39503,7 +40468,7 @@ ] ], [ - 20423, + 20947, [ { "WideMul128": { @@ -39556,7 +40521,7 @@ ] ], [ - 20427, + 20951, [ { "TestLessThan": { @@ -39578,7 +40543,7 @@ ] ], [ - 20441, + 20965, [ { "TestLessThan": { @@ -39600,7 +40565,7 @@ ] ], [ - 20454, + 20978, [ { "DivMod": { @@ -39626,7 +40591,7 @@ ] ], [ - 20464, + 20988, [ { "DivMod": { @@ -39652,7 +40617,7 @@ ] ], [ - 20475, + 20999, [ { "DivMod": { @@ -39678,7 +40643,7 @@ ] ], [ - 20484, + 21008, [ { "DivMod": { @@ -39704,7 +40669,7 @@ ] ], [ - 20494, + 21018, [ { "DivMod": { @@ -39730,7 +40695,7 @@ ] ], [ - 20505, + 21029, [ { "DivMod": { @@ -39756,7 +40721,7 @@ ] ], [ - 20514, + 21038, [ { "DivMod": { @@ -39782,7 +40747,7 @@ ] ], [ - 20524, + 21048, [ { "DivMod": { @@ -39808,7 +40773,7 @@ ] ], [ - 20535, + 21059, [ { "DivMod": { @@ -39834,7 +40799,7 @@ ] ], [ - 20544, + 21068, [ { "DivMod": { @@ -39860,7 +40825,7 @@ ] ], [ - 20554, + 21078, [ { "DivMod": { @@ -39886,7 +40851,7 @@ ] ], [ - 20565, + 21089, [ { "DivMod": { @@ -39912,7 +40877,7 @@ ] ], [ - 20574, + 21098, [ { "DivMod": { @@ -39938,7 +40903,7 @@ ] ], [ - 20584, + 21108, [ { "DivMod": { @@ -39964,7 +40929,7 @@ ] ], [ - 20595, + 21119, [ { "DivMod": { @@ -39990,7 +40955,7 @@ ] ], [ - 20604, + 21128, [ { "DivMod": { @@ -40016,7 +40981,7 @@ ] ], [ - 20614, + 21138, [ { "DivMod": { @@ -40042,7 +41007,7 @@ ] ], [ - 20625, + 21149, [ { "DivMod": { @@ -40068,7 +41033,7 @@ ] ], [ - 20634, + 21158, [ { "DivMod": { @@ -40094,7 +41059,7 @@ ] ], [ - 20644, + 21168, [ { "DivMod": { @@ -40120,7 +41085,7 @@ ] ], [ - 20655, + 21179, [ { "DivMod": { @@ -40146,7 +41111,7 @@ ] ], [ - 20664, + 21188, [ { "DivMod": { @@ -40172,7 +41137,7 @@ ] ], [ - 20674, + 21198, [ { "DivMod": { @@ -40198,7 +41163,7 @@ ] ], [ - 20685, + 21209, [ { "DivMod": { @@ -40224,7 +41189,7 @@ ] ], [ - 20706, + 21230, [ { "Uint512DivModByUint256": { @@ -40293,7 +41258,7 @@ ] ], [ - 20724, + 21248, [ { "WideMul128": { @@ -40418,7 +41383,7 @@ ] ], [ - 20753, + 21277, [ { "TestLessThan": { @@ -40443,7 +41408,7 @@ ] ], [ - 20765, + 21289, [ { "TestLessThan": { @@ -40468,7 +41433,7 @@ ] ], [ - 20780, + 21304, [ { "DivMod": { @@ -40494,7 +41459,7 @@ ] ], [ - 20790, + 21314, [ { "DivMod": { @@ -40520,7 +41485,7 @@ ] ], [ - 20801, + 21325, [ { "DivMod": { @@ -40546,7 +41511,7 @@ ] ], [ - 20810, + 21334, [ { "DivMod": { @@ -40572,7 +41537,7 @@ ] ], [ - 20820, + 21344, [ { "DivMod": { @@ -40598,7 +41563,7 @@ ] ], [ - 20831, + 21355, [ { "DivMod": { @@ -40624,7 +41589,7 @@ ] ], [ - 20840, + 21364, [ { "DivMod": { @@ -40650,7 +41615,7 @@ ] ], [ - 20850, + 21374, [ { "DivMod": { @@ -40676,7 +41641,7 @@ ] ], [ - 20861, + 21385, [ { "DivMod": { @@ -40702,7 +41667,7 @@ ] ], [ - 20870, + 21394, [ { "DivMod": { @@ -40728,7 +41693,7 @@ ] ], [ - 20880, + 21404, [ { "DivMod": { @@ -40754,7 +41719,7 @@ ] ], [ - 20891, + 21415, [ { "DivMod": { @@ -40780,7 +41745,7 @@ ] ], [ - 20900, + 21424, [ { "DivMod": { @@ -40806,7 +41771,7 @@ ] ], [ - 20910, + 21434, [ { "DivMod": { @@ -40832,7 +41797,7 @@ ] ], [ - 20921, + 21445, [ { "DivMod": { @@ -40858,7 +41823,7 @@ ] ], [ - 20934, + 21458, [ { "TestLessThan": { @@ -40880,7 +41845,7 @@ ] ], [ - 20962, + 21486, [ { "TestLessThan": { @@ -40902,7 +41867,7 @@ ] ], [ - 20984, + 21508, [ { "TestLessThan": { @@ -40924,7 +41889,7 @@ ] ], [ - 21010, + 21534, [ { "Uint512DivModByUint256": { @@ -40993,7 +41958,7 @@ ] ], [ - 21028, + 21552, [ { "WideMul128": { @@ -41118,7 +42083,7 @@ ] ], [ - 21057, + 21581, [ { "TestLessThan": { @@ -41143,7 +42108,7 @@ ] ], [ - 21069, + 21593, [ { "TestLessThan": { @@ -41168,7 +42133,7 @@ ] ], [ - 21084, + 21608, [ { "DivMod": { @@ -41194,7 +42159,7 @@ ] ], [ - 21094, + 21618, [ { "DivMod": { @@ -41220,7 +42185,7 @@ ] ], [ - 21105, + 21629, [ { "DivMod": { @@ -41246,7 +42211,7 @@ ] ], [ - 21114, + 21638, [ { "DivMod": { @@ -41272,7 +42237,7 @@ ] ], [ - 21124, + 21648, [ { "DivMod": { @@ -41298,7 +42263,7 @@ ] ], [ - 21135, + 21659, [ { "DivMod": { @@ -41324,7 +42289,7 @@ ] ], [ - 21144, + 21668, [ { "DivMod": { @@ -41350,7 +42315,7 @@ ] ], [ - 21154, + 21678, [ { "DivMod": { @@ -41376,7 +42341,7 @@ ] ], [ - 21165, + 21689, [ { "DivMod": { @@ -41402,7 +42367,7 @@ ] ], [ - 21174, + 21698, [ { "DivMod": { @@ -41428,7 +42393,7 @@ ] ], [ - 21184, + 21708, [ { "DivMod": { @@ -41454,7 +42419,7 @@ ] ], [ - 21195, + 21719, [ { "DivMod": { @@ -41480,7 +42445,7 @@ ] ], [ - 21204, + 21728, [ { "DivMod": { @@ -41506,7 +42471,7 @@ ] ], [ - 21214, + 21738, [ { "DivMod": { @@ -41532,7 +42497,7 @@ ] ], [ - 21225, + 21749, [ { "DivMod": { @@ -41558,7 +42523,7 @@ ] ], [ - 21246, + 21770, [ { "SystemCall": { @@ -41573,7 +42538,7 @@ ] ], [ - 21259, + 21783, [ { "SystemCall": { @@ -41594,7 +42559,7 @@ ] ], [ - 21271, + 21795, [ { "SystemCall": { @@ -41615,7 +42580,7 @@ ] ], [ - 21334, + 21858, [ { "AllocSegment": { @@ -41628,7 +42593,7 @@ ] ], [ - 21350, + 21874, [ { "DivMod": { @@ -41654,7 +42619,7 @@ ] ], [ - 21360, + 21884, [ { "DivMod": { @@ -41680,7 +42645,7 @@ ] ], [ - 21371, + 21895, [ { "DivMod": { @@ -41706,7 +42671,7 @@ ] ], [ - 21380, + 21904, [ { "DivMod": { @@ -41732,7 +42697,7 @@ ] ], [ - 21390, + 21914, [ { "DivMod": { @@ -41758,7 +42723,7 @@ ] ], [ - 21401, + 21925, [ { "DivMod": { @@ -41784,7 +42749,7 @@ ] ], [ - 21410, + 21934, [ { "AllocSegment": { @@ -41797,7 +42762,7 @@ ] ], [ - 21428, + 21952, [ { "AllocSegment": { @@ -41810,7 +42775,7 @@ ] ], [ - 21491, + 22015, [ { "SystemCall": { @@ -41825,7 +42790,7 @@ ] ], [ - 21499, + 22023, [ { "AllocConstantSize": { @@ -41841,7 +42806,7 @@ ] ], [ - 21503, + 22027, [ { "AllocSegment": { @@ -41854,7 +42819,7 @@ ] ], [ - 21539, + 22063, [ { "SystemCall": { @@ -41869,7 +42834,7 @@ ] ], [ - 21613, + 22137, [ { "DivMod": { @@ -41898,7 +42863,7 @@ ] ], [ - 21619, + 22143, [ { "TestLessThan": { @@ -41920,7 +42885,7 @@ ] ], [ - 21728, + 22252, [ { "WideMul128": { @@ -41949,7 +42914,7 @@ ] ], [ - 21730, + 22254, [ { "DivMod": { @@ -41975,7 +42940,7 @@ ] ], [ - 21740, + 22264, [ { "DivMod": { @@ -42001,7 +42966,7 @@ ] ], [ - 21751, + 22275, [ { "DivMod": { @@ -42027,7 +42992,7 @@ ] ], [ - 21760, + 22284, [ { "WideMul128": { @@ -42056,7 +43021,7 @@ ] ], [ - 21762, + 22286, [ { "DivMod": { @@ -42082,7 +43047,7 @@ ] ], [ - 21772, + 22296, [ { "DivMod": { @@ -42108,7 +43073,7 @@ ] ], [ - 21783, + 22307, [ { "DivMod": { @@ -42134,7 +43099,7 @@ ] ], [ - 21793, + 22317, [ { "TestLessThan": { @@ -42156,7 +43121,7 @@ ] ], [ - 21815, + 22339, [ { "WideMul128": { @@ -42185,7 +43150,7 @@ ] ], [ - 21817, + 22341, [ { "DivMod": { @@ -42211,7 +43176,7 @@ ] ], [ - 21827, + 22351, [ { "DivMod": { @@ -42237,7 +43202,7 @@ ] ], [ - 21838, + 22362, [ { "DivMod": { @@ -42263,7 +43228,7 @@ ] ], [ - 21848, + 22372, [ { "TestLessThan": { @@ -42285,7 +43250,7 @@ ] ], [ - 21871, + 22395, [ { "TestLessThan": { @@ -42307,7 +43272,7 @@ ] ], [ - 21893, + 22417, [ { "WideMul128": { @@ -42336,7 +43301,7 @@ ] ], [ - 21895, + 22419, [ { "DivMod": { @@ -42362,7 +43327,7 @@ ] ], [ - 21905, + 22429, [ { "DivMod": { @@ -42388,7 +43353,7 @@ ] ], [ - 21916, + 22440, [ { "DivMod": { @@ -42414,7 +43379,7 @@ ] ], [ - 21926, + 22450, [ { "TestLessThan": { @@ -42436,7 +43401,7 @@ ] ], [ - 21950, + 22474, [ { "TestLessThan": { @@ -42458,7 +43423,7 @@ ] ], [ - 21975, + 22499, [ { "TestLessThan": { @@ -42480,7 +43445,7 @@ ] ], [ - 21999, + 22523, [ { "TestLessThan": { @@ -42502,7 +43467,7 @@ ] ], [ - 22117, + 22641, [ { "AllocSegment": { @@ -42515,7 +43480,7 @@ ] ], [ - 22140, + 22664, [ { "TestLessThanOrEqual": { @@ -42540,7 +43505,7 @@ ] ], [ - 22230, + 22754, [ { "AllocSegment": { @@ -42553,7 +43518,7 @@ ] ], [ - 22285, + 22809, [ { "DivMod": { @@ -42582,7 +43547,7 @@ ] ], [ - 22291, + 22815, [ { "TestLessThan": { @@ -42604,7 +43569,7 @@ ] ], [ - 22304, + 22828, [ { "TestLessThan": { @@ -42626,7 +43591,7 @@ ] ], [ - 22314, + 22838, [ { "TestLessThan": { @@ -42648,7 +43613,7 @@ ] ], [ - 22362, + 22886, [ { "DivMod": { @@ -42677,7 +43642,7 @@ ] ], [ - 22368, + 22892, [ { "TestLessThan": { @@ -42699,7 +43664,7 @@ ] ], [ - 22384, + 22908, [ { "TestLessThan": { @@ -42721,7 +43686,7 @@ ] ], [ - 22394, + 22918, [ { "TestLessThan": { @@ -42743,7 +43708,7 @@ ] ], [ - 22417, + 22941, [ { "AllocSegment": { @@ -42756,7 +43721,7 @@ ] ], [ - 22431, + 22955, [ { "AllocSegment": { @@ -42769,7 +43734,7 @@ ] ], [ - 22450, + 22974, [ { "AllocSegment": { @@ -42782,7 +43747,7 @@ ] ], [ - 22464, + 22988, [ { "AllocSegment": { @@ -42857,6 +43822,14 @@ "bitwise" ] }, + { + "selector": "0xca779dd628d0206eda15b718936109101fcdee458be409b230a64462c4bf23", + "offset": 8699, + "builtins": [ + "range_check", + "ec_op" + ] + }, { "selector": "0xd47144c49bce05b6de6bce9d5ff0cc8da9420f8945453e20ef779cbea13ad4", "offset": 249, @@ -43021,6 +43994,22 @@ "range_check" ] }, + { + "selector": "0x3502249e98d12b6c72951d280360de19ac166d0f18c620addb78491a669c826", + "offset": 8542, + "builtins": [ + "range_check", + "poseidon" + ] + }, + { + "selector": "0x3555d7ef6849c9f3e3c3b07e7b36395a40bba49ef095d4a8c41467b76a03501", + "offset": 8436, + "builtins": [ + "pedersen", + "range_check" + ] + }, { "selector": "0x3604cea1cdb094a73a31144f14a3e5861613c008e1e879939ebc4827d10cd50", "offset": 3269, @@ -43064,6 +44053,14 @@ "range_check" ] }, + { + "selector": "0x3b756ccfc32a375b48e673ccd8447bcb3fc271415d0b92a7fb837747606c1f8", + "offset": 8330, + "builtins": [ + "range_check", + "bitwise" + ] + }, { "selector": "0x3d3da80997f8be5d16e9ae7ee6a4b5f7191d60765a1a6c219ab74269c85cf97", "offset": 7560, @@ -43092,14 +44089,14 @@ "L1_HANDLER": [ { "selector": "0x205500a208d0d49d79197fea83cc3f5fde99ac2e1909ae0a5d9f394c0c52ed0", - "offset": 8476, + "offset": 9000, "builtins": [ "range_check" ] }, { "selector": "0x39edbbb129ad752107a94d40c3873cae369a46fd2fc578d075679aa67e85d12", - "offset": 8330, + "offset": 8854, "builtins": [ "range_check" ] @@ -43108,7 +44105,7 @@ "CONSTRUCTOR": [ { "selector": "0x28ffe4ff0f226a9107253e17a904099aa4f63a02a5621de0576e5aa71bc5194", - "offset": 8720, + "offset": 9244, "builtins": [ "range_check" ] diff --git a/crates/blockifier/feature_contracts/cairo1/sierra/test_contract.sierra.json b/crates/blockifier/feature_contracts/cairo1/sierra/test_contract.sierra.json index 1e9ee40044c..41a5e8e589d 100644 --- a/crates/blockifier/feature_contracts/cairo1/sierra/test_contract.sierra.json +++ b/crates/blockifier/feature_contracts/cairo1/sierra/test_contract.sierra.json @@ -6,9 +6,9 @@ "0x2", "0xa", "0x0", - "0x913", - "0x6ed", - "0x1c2", + "0x930", + "0x6d0", + "0x1c5", "0x52616e6765436865636b", "0x800000000000000100000000000000000000000000000000", "0x436f6e7374", @@ -44,7 +44,7 @@ "0x1000000", "0x10000", "0x1c", - "0x156", + "0x152", "0x100", "0x537472756374", "0x800000000000000f00000000000000000000000000000001", @@ -89,7 +89,7 @@ "0xb", "0x6", "0x40", - "0xaf", + "0xae", "0x10000000000000000", "0x4e6f6e5a65726f", "0x16a4c8d7c05909052238a862d8cc3e7975bf05a07b3a69c6b28951083a6d672", @@ -199,56 +199,54 @@ "0x206c696d62313a20302c206c696d62323a20302c206c696d62333a2030207d", "0x6f7574707574286d756c29203d3d2075333834207b206c696d62303a20362c", "0x679ea9c5b65e40ad9da80f5a4150d36f3b6af3e88305e2e3ae5eccbc5743d9", - "0xab", + "0xaa", "0x1f", "0x617373657274696f6e206661696c65643a20606f7574707574732e6765745f", "0x62797465733331", "0x5539364c696d62734c7447756172616e746565", "0x800000000000000100000000000000000000000000000001", "0x4d756c4d6f6447617465", - "0xb6", "0xb5", + "0xb4", "0x5375624d6f6447617465", - "0xb7", + "0xb6", "0x496e766572736547617465", - "0xb8", + "0xb7", "0x4164644d6f6447617465", "0xffffffffffffffffffffffff", "0x35de1f6419a35f1a8c6f276f09c80570ebf482614031777c6d07679cf95b8bb", - "0xb9", + "0xb8", "0x436972637569744661696c75726547756172616e746565", "0x436972637569745061727469616c4f757470757473", - "0xc9", + "0xc8", "0x436972637569744f757470757473", - "0xbf", - "0xc1", + "0xbe", + "0xc0", "0x4369726375697444657363726970746f72", "0x416c6c20696e707574732068617665206265656e2066696c6c6564", "0x55393647756172616e746565", "0x800000000000000100000000000000000000000000000005", - "0xc6", - "0xcb", - "0xb3", + "0xc5", + "0xca", + "0xb2", "0x436972637569744d6f64756c7573", "0x4d756c4d6f64", - "0xd0", + "0xcf", "0x52616e6765436865636b3936", - "0xd2", + "0xd1", "0x4164644d6f64", - "0xd5", + "0xd4", "0x6d232c016ef1b12aec4b7f88cc0b3ab662be3b7dd7adbce5209fcfdbd42a504", - "0x45635374617465", "0x4b5810004d9272776dec83ecc20c19353453b956e594188890b48467cb53c19", "0x3dbce56de34e1cfe252ead5a1f14fd261d520d343ff6b7652174e62976ef44d", "0x4563506f696e74", - "0xdc", "0x4fad269cbf860980e38768fe9cb6b0b9ab03ee3fe84cfde2eccce597c874fd8", "0x654fd7e67a123dd13868093b3b7777f1ffef596c2e324f25ceaf9146698482c", - "0xe1", + "0xdd", "0x7538", "0x53746f726167654261736541646472657373", "0x3c4930bb381033105f3ca15ccded195c90cd2af5baa0e1ceb36fde292df7652", - "0xe2", + "0xde", "0x34482b42d8542e3c880c5c93d387fb8b01fe2a5d54b6f50d62fe82d9e6c2526", "0x2691cb735b18f3f656c3b82bd97a32b65d15019b64117513f8604d1e06fe58b", "0x7265637572736976655f6661696c", @@ -256,105 +254,104 @@ "0x32564d7e0fe091d49b4c20f4632191e4ed6986bf993849879abfef9465def25", "0x62c83572d28cb834a3de3c1e94977a4191469a4a8c26d1d7bc55305e640ed5", "0x3288d594b9a45d15bb2fcb7903f06cdb06b27f0ba88186ec4cfaa98307cb972", - "0xeb", + "0xe7", "0xa853c166304d20fb0711becf2cbdf482dee3cac4e9717d040b7a7ab1df7eec", + "0xe8", + "0xef", "0xec", - "0xf3", - "0xf0", - "0xf2", - "0xf1", + "0xee", + "0xed", "0x177e60492c5a8242f76f07bfe3661bd", "0xb292a619339f6e567a305c951c0dcbcc", "0x42d16e47f219f9e98e76e09d8770b34a", "0xe59ec2a17ce5bd2dab2abebdf89a62e2", - "0xf9", - "0xf6", - "0xf8", - "0xf7", + "0xf5", + "0xf2", + "0xf4", + "0xf3", "0xe3b0c44298fc1c149afbf4c8996fb924", "0x87d9315798aaa3a5ba01775787ced05e", "0xaaf7b4e09fc81d6d1aa546e8365d525d", "0x27ae41e4649b934ca495991b7852b855", - "0xfe", - "0xfc", - "0xfd", - "0xff", + "0xfa", + "0xf8", + "0xf9", + "0xfb", "0x4aaec73635726f213fb8a9e64da3b86", "0x6e1cda979008bfaf874ff796eb3bb1c0", "0x32e41495a944d0045b522eba7240fad5", "0x49288242", - "0x105", - "0x102", - "0x104", - "0x103", + "0x101", + "0xfe", + "0xff", "0xdb0a2e6710c71ba80afeb3abdf69d306", "0x502a43ce77c6f5c736a82f847fa95f8c", "0x2d483fe223b12b91047d83258a958b0f", "0xce729c7704f4ddf2eaaf0b76209fe1b0", - "0x109", - "0x108", + "0x105", + "0x104", "0x536563703235367231506f696e74", "0xffffffff000000010000000000000000", "0xcb47311929e7a903ce831cb2b3e67fe265f121b394a36bc46c17cf352547fc", - "0x107", + "0x103", "0x185fda19bc33857e9f1d92d61312b69416f20cf740fa3993dcc2de228a6671d", - "0x10b", + "0x107", "0xf83fa82126e7aeaf5fe12fff6a0f4a02d8a185bf5aaee3d10d1c4e751399b4", - "0x10c", + "0x108", "0x107a3e65b6e33d1b25fa00c80dfe693f414350005bc697782c25eaac141fedd", - "0x114", - "0x111", - "0x113", - "0x112", + "0x110", + "0x10d", + "0x10f", + "0x10e", "0x4ac5e5c0c0e8a4871583cc131f35fb49", "0x4c8e4fbc1fbb1dece52185e532812c4f", "0x7a5f81cf3ee10044320a0d03b62d3e9a", "0xc2b7f60e6a8b84965830658f08f7410c", - "0x118", - "0x117", + "0x114", + "0x113", "0x100000000000000000000000000000000", "0xe888fbb4cf9ae6254f19ba12e6d9af54", "0x788f195a6f509ca3e934f78d7a71dd85", - "0x11b", - "0x11a", + "0x117", + "0x116", "0x767410c1", "0xbb448978bd42b984d7de5970bcaf5c43", "0x556e657870656374656420636f6f7264696e61746573", - "0x122", - "0x11f", - "0x121", - "0x120", + "0x11e", + "0x11b", + "0x11d", + "0x11c", "0x8e182ca967f38e1bd6a49583f43f1876", "0xf728b4fa42485e3a0a5d2f346baa9455", "0xe3e70682c2094cac629f6fbed82c07cd", "0x8e031ab54fc0c4a8f0dc94fad0d0611", "0x496e76616c696420617267756d656e74", - "0x127", - "0x126", + "0x123", + "0x122", "0x53686f756c64206265206e6f6e65", "0xffffffffffffffffffffffffffffffff", "0xfffffffffffffffffffffffefffffc2f", - "0x150", + "0x14c", "0x61be55a8", "0x800000000000000700000000000000000000000000000009", - "0x12c", + "0x128", "0x336711c2797eda3aaf8c07c5cf7b92162501924a7090b25482d45dd3a24ddce", - "0x12d", + "0x129", "0x536861323536537461746548616e646c65", - "0x12e", - "0x12f", + "0x12a", + "0x12b", "0x324f33e2d695adb91665eafd5b62ec62f181e09c2e0e60401806dcc4bb3fa1", - "0x130", + "0x12c", "0x800000000000000000000000000000000000000000000009", - "0x12b", - "0x13b", - "0x13a", - "0x139", - "0x138", + "0x127", "0x137", "0x136", "0x135", "0x134", + "0x133", + "0x132", + "0x131", + "0x130", "0x5be0cd19", "0x1f83d9ab", "0x9b05688c", @@ -364,7 +361,7 @@ "0xbb67ae85", "0x6a09e667", "0x176a53827827a9b5839f3d68f1c2ed4673066bf89e920a3d4110d3e191ce66b", - "0x13c", + "0x138", "0x61616161", "0x496e646578206f7574206f6620626f756e6473", "0x57726f6e67206572726f72206d7367", @@ -373,58 +370,58 @@ "0xa5963aa610cb75ba273817bce5f8c48f", "0x57726f6e6720686173682076616c7565", "0x587f7cc3722e9654ea3963d5fe8c0748", - "0x146", + "0x142", "0x3f829a4bc463d91621ba418d447cc38c95ddc483f9ccfebae79050eb7b3dcb6", - "0x147", + "0x143", "0x25e50662218619229b3f53f1dc3253192a0f68ca423d900214253db415a90b4", - "0x149", - "0x14b", + "0x145", + "0x147", "0x38b507bf259d96f5c53e8ab8f187781c3d096482729ec2d57f3366318a8502f", - "0x14c", - "0x14d", + "0x148", + "0x149", "0x3c5ce4d28d473343dbe52c630edf038a582af9574306e1d609e379cd17fc87a", - "0x14e", + "0x14a", "0x753132385f737562204f766572666c6f77", "0x753132385f6d756c204f766572666c6f77", "0x753132385f616464204f766572666c6f77", "0x553132384d756c47756172616e746565", - "0x157", + "0x153", "0x424c4f434b5f494e464f5f4d49534d41544348", "0x54585f494e464f5f4d49534d41544348", "0x43414c4c45525f4d49534d41544348", "0x434f4e54524143545f4d49534d41544348", "0x53454c4543544f525f4d49534d41544348", - "0x15f", + "0x15a", "0x1597b831feeb60c71f259624b79cf66995ea4f7e383403583674ab9c33b9cec", - "0x160", - "0x161", + "0x15b", + "0x15c", "0x21afb2f280564fc34ddb766bf42f7ca36154bbba994fbc0f0235cd873ace36a", - "0x162", + "0x15d", "0x1baeba72e79e9db2587cf44fedb2f3700b2075a5e8e39a562584862c4b71f62", - "0x164", - "0x165", + "0x15f", + "0x160", "0x45b67c75542d42836cef6c02cca4dbff4a80a8621fa521cbfff1b2dd4af35a", - "0x166", - "0x16d", - "0x196", + "0x161", + "0x168", + "0x199", "0x436f6e747261637441646472657373", "0x800000000000000700000000000000000000000000000006", "0x7d4d99e9ed8d285b5c61b493cedb63976bc3d9da867933d829f49ce838b5e7", - "0x169", - "0x168", - "0x16a", - "0x16b", + "0x164", + "0x163", + "0x165", + "0x166", "0x80000000000000070000000000000000000000000000000e", "0x348a62b7a38c0673e61e888d83a3ac1bf334ee7361a8514593d3d9532ed8b39", "0x1ce0be45cbaa9547dfece0f040e22ec60de2d0d5a6c79fa5514066dfdbb7ca6", "0x3128e9bfd21b6f544f537413d7dd38a8f2e017a3b81c1a4bcf8f51a64d0dc3d", - "0x171", + "0x16c", "0x33ecdfa3f249457fb2ae8b6a6713b3069fa0c38450e972297821b52ba929029", - "0x172", + "0x16d", "0x1d49f7a4b277bf7b55a2664ce8cef5d6922b5ffb806b89644b9e0cdbbcac378", - "0x174", + "0x16f", "0x13fdd7105045794a99550ae1c4ac13faa62610dfab62c16422bfcf5803baa6e", - "0x175", + "0x170", "0x7536345f616464204f766572666c6f77", "0x57726f6e675f73746f726167655f76616c75652e", "0x31448060506164e4d1df7635613bacfbea8af9c3dc85ea9a55935292a4acddc", @@ -432,17 +429,22 @@ "0x1e4089d1f1349077b1970f9937c904e27c4582b49a60b6078946dba95bc3c08", "0x25ff849c52d40a7f29c9849fbe0064575d61c84ddc0ef562bf05bc599abe0ae", "0x746573745f7265766572745f68656c706572", + "0x45635374617465", + "0xd9", + "0x3c5906a3bc4858a3fc46f5d63a29ff95f31b816586c35b221405f884cb17bc3", + "0xbe96d72eb4f94078192c2e84d5230cde2a70f4b45c8797e2c907acff5060bb", + "0x506f736569646f6e", "0x22", "0x45634f70", "0x7772be8b80a8a33dc6c1f9a6ab820c02e537c73e859de67f288c70f92571bb", "0x30395f664644a8fcaf5ade2c4222939f92c008e26373687503ba48223c8c394", - "0x184", + "0x187", "0x506564657273656e", "0x6661696c", "0x223b876ce59fbc872ac2e1412727be9abe279bf03bb3002a29d7aeba8b23a9f", - "0x188", + "0x18b", "0x4609194bf9403d809e38367adb782a43edaf535df565a1b05eea7b577c89af", - "0x189", + "0x18c", "0x7820213d2079", "0x73756363657373", "0x2f23416cc60464d4158423619ba713070eb82b686c9d621a22c67bd37f6e0a9", @@ -451,48 +453,48 @@ "0x5365676d656e744172656e61", "0x800000000000000f00000000000000000000000000000002", "0xcc5e86243f861d2d64b08c35db21013e773ac5cf10097946fe0011304886d5", - "0x191", + "0x194", "0x2271e6a0c1b1931cf78a8bfd030df986f9544c426af3bd6023dc55382237cf7", - "0x193", + "0x196", "0x1d2ae7ecff8f8db67bf542f1d1f8201ff21e9f36f780ef569bcc7bc74ab634c", - "0x194", + "0x197", "0x3808c701a5d13e100ab11b6c02f91f752ecae7e420d21b56c90ec0a475cc7e5", "0x1cbd0cd3f779a7c0d3cdc804f89c39bcf71a85b43d3cf8a042111f0bc2ddf63", "0x57524f4e475f434c4153535f48415348", "0x909b0519d7c88c554565d942b48b326c8dcbd2e2915301868fb8159e606aa3", - "0x19a", + "0x19d", "0x657865637574655f616e645f726576657274", "0xa", "0x800000000000000f00000000000000000000000000000003", "0x3153ad87fe24a37e12e7b17b2ed757f4e86be104f506a9fcc51c44f485a3293", - "0x19f", + "0x1a2", "0x436c61737348617368", "0x4661696c656420746f20646573657269616c697a6520706172616d202334", "0x4661696c656420746f20646573657269616c697a6520706172616d202335", "0x4661696c656420746f20646573657269616c697a6520706172616d202336", "0x74584e9f10ffb1a40aa5a3582e203f6758defc4a497d1a2d5a89f274a320e9", - "0x1a6", + "0x1a9", "0x53797374656d", - "0x1aa", + "0x1ad", "0x4661696c656420746f20646573657269616c697a6520706172616d202333", "0x17b6ecc31946835b0d9d92c2dd7a9c14f29af0371571ae74a1b228828b2242", - "0x1ad", + "0x1b0", "0x34f9bd7c6cb2dd4263175964ad75f1ff1461ddc332fbfb274e0fb2a5d7ab968", - "0x1ae", + "0x1b1", "0x29d7d57c04a880978e7b3689f6218e507f3be17588744b58dc17762447ad0e7", - "0x1b0", + "0x1b3", "0x4f7074696f6e3a3a756e77726170206661696c65642e", "0x4661696c656420746f20646573657269616c697a6520706172616d202331", "0x4661696c656420746f20646573657269616c697a6520706172616d202332", "0x4f7574206f6620676173", "0x4275696c74696e436f737473", "0x9931c641b913035ae674b400b61a51476d506bbe8bba2ff8a6272790aba9e6", - "0x1ba", + "0x1bd", "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", "0x53746f7261676541646472657373", "0x11c6d8087e00642489f92d2821ad6ebd6532ad1a3b6d12833da6d6810391511", "0x4761734275696c74696e", - "0x366", + "0x36c", "0x7265766f6b655f61705f747261636b696e67", "0x77697468647261775f676173", "0x6272616e63685f616c69676e", @@ -500,281 +502,285 @@ "0x7374727563745f6465636f6e737472756374", "0x656e61626c655f61705f747261636b696e67", "0x73746f72655f74656d70", - "0x1c1", + "0x1c4", "0x61727261795f736e617073686f745f706f705f66726f6e74", "0x756e626f78", "0x72656e616d65", "0x656e756d5f696e6974", - "0x1c0", + "0x1c3", "0x6a756d70", "0x7374727563745f636f6e737472756374", "0x656e756d5f6d61746368", "0x64697361626c655f61705f747261636b696e67", "0x1ad5911ecb88aa4a50482c4de3232f196cfcaf7bd4e9c96d22b283733045007", "0x64726f70", - "0x1bf", + "0x1c2", "0x61727261795f6e6577", "0x636f6e73745f61735f696d6d656469617465", - "0x1be", + "0x1c1", "0x61727261795f617070656e64", - "0x1bd", + "0x1c0", "0x6765745f6275696c74696e5f636f737473", - "0x1bc", + "0x1bf", "0x77697468647261775f6761735f616c6c", - "0x1bb", + "0x1be", "0x647570", "0x73746f726167655f77726974655f73797363616c6c", "0x73746f726167655f726561645f73797363616c6c", "0x736e617073686f745f74616b65", + "0x1bc", + "0x1bb", + "0x1ba", "0x1b9", "0x1b8", "0x1b7", "0x1b6", - "0x1b5", - "0x1b4", - "0x1b3", "0x616c6c6f635f6c6f63616c", "0x66696e616c697a655f6c6f63616c73", "0x73746f72655f6c6f63616c", "0x21adb5788e32c84f69a1863d85ef9394b7bf761a0ce1190f826984e5075c371", - "0x1b1", + "0x1b4", "0x66756e6374696f6e5f63616c6c", - "0x1af", + "0x2f", + "0x1b2", "0x63616c6c5f636f6e74726163745f73797363616c6c", + "0x1af", + "0x1b5", + "0x1ae", "0x1ac", - "0x1b2", - "0x1ab", - "0x1a9", - "0x2c", - "0x1a7", + "0x30", + "0x1aa", "0x61727261795f6c656e", "0x7533325f746f5f66656c74323532", - "0x2d", - "0x1a5", - "0x1a4", - "0x1a3", "0x1a8", + "0x1a7", + "0x1a6", + "0x1ab", "0x636c6173735f686173685f7472795f66726f6d5f66656c74323532", "0x66656c743235325f69735f7a65726f", - "0x1a1", - "0x1a2", + "0x1a4", + "0x1a5", "0x626f6f6c5f6e6f745f696d706c", - "0x2e", - "0x1a0", + "0x1a3", "0x73746f726167655f626173655f616464726573735f636f6e7374", "0x1275130f95dda36bcbb6e9d28796c1d7e10b6e9fd5ed083e0ede4b12f613528", "0x73746f726167655f616464726573735f66726f6d5f62617365", - "0x19e", - "0x2f", - "0x19d", + "0x1a1", + "0x1a0", "0x7536345f7472795f66726f6d5f66656c74323532", - "0x19c", - "0x30", - "0x19b", + "0x19f", + "0x19e", "0x6765745f636c6173735f686173685f61745f73797363616c6c", "0x636c6173735f686173685f746f5f66656c74323532", "0x66656c743235325f737562", - "0x199", + "0x19c", "0x6765745f626c6f636b5f686173685f73797363616c6c", - "0x197", - "0x195", - "0x192", + "0x35", + "0x19a", + "0x36", "0x198", + "0x37", + "0x195", + "0x19b", "0x6c6962726172795f63616c6c5f73797363616c6c", + "0x38", "0x7265706c6163655f636c6173735f73797363616c6c", "0x73656e645f6d6573736167655f746f5f6c315f73797363616c6c", - "0x190", + "0x193", "0x66656c743235325f646963745f6e6577", - "0x18f", - "0x35", - "0x18e", + "0x192", + "0x39", + "0x191", "0x6465706c6f795f73797363616c6c", "0x75313238735f66726f6d5f66656c74323532", - "0x36", - "0x18d", - "0x753132385f746f5f66656c74323532", - "0x37", - "0x38", - "0x39", "0x3a", - "0x18c", - "0x18b", + "0x190", + "0x753132385f746f5f66656c74323532", "0x3b", - "0x18a", - "0x187", "0x3c", "0x3d", + "0x3e", + "0x18f", + "0x18e", + "0x3f", + "0x18d", + "0x18a", "0x636f6e74726163745f616464726573735f746f5f66656c74323532", + "0x189", + "0x188", "0x186", - "0x3e", "0x185", - "0x3f", + "0x184", "0x183", + "0x46", + "0x47", + "0x48", "0x182", "0x181", + "0x7533325f62697477697365", + "0x706564657273656e", "0x180", "0x66656c743235325f616464", - "0x656d69745f6576656e745f73797363616c6c", + "0x68616465735f7065726d75746174696f6e", "0x17f", "0x17e", + "0x65635f706f696e745f7472795f6e65775f6e7a", + "0x65635f73746174655f696e6974", + "0x17b", "0x17d", - "0x626f6f6c5f746f5f66656c74323532", + "0x65635f73746174655f6164645f6d756c", "0x17c", - "0x17b", + "0x656d69745f6576656e745f73797363616c6c", "0x17a", "0x179", - "0x7536345f6571", "0x178", - "0x7536345f6f766572666c6f77696e675f616464", + "0x626f6f6c5f746f5f66656c74323532", "0x177", "0x176", - "0x46", + "0x175", + "0x174", + "0x7536345f6571", "0x173", - "0x170", + "0x7536345f6f766572666c6f77696e675f616464", + "0x172", + "0x171", + "0x16e", + "0x16b", "0x7533325f7472795f66726f6d5f66656c74323532", "0x6765745f657865637574696f6e5f696e666f5f76325f73797363616c6c", - "0x16c", - "0x16e", + "0x167", + "0x169", "0x753132385f6571", "0x7533325f6571", - "0x47", - "0x167", - "0x48", - "0x163", - "0x15e", - "0x15d", - "0x15c", - "0x15b", - "0x15a", - "0x16f", + "0x162", + "0x15e", "0x159", + "0x158", + "0x157", + "0x156", + "0x155", + "0x16a", "0x66656c743235325f646963745f737175617368", "0x753132385f6f766572666c6f77696e675f737562", - "0x155", + "0x151", "0x753132385f67756172616e7465655f6d756c", "0x753132385f6d756c5f67756172616e7465655f766572696679", "0x753132385f6f766572666c6f77696e675f616464", - "0x153", - "0x152", - "0x151", - "0x158", "0x14f", - "0x14a", - "0x148", - "0x6b656363616b5f73797363616c6c", - "0x145", + "0x14e", + "0x14d", + "0x154", + "0x4d", + "0x14b", + "0x4e", + "0x146", "0x144", - "0x143", - "0x142", + "0x6b656363616b5f73797363616c6c", "0x141", "0x140", "0x13f", "0x13e", "0x13d", + "0x13c", + "0x13b", + "0x13a", + "0x139", "0x636f6e73745f61735f626f78", - "0x132", + "0x12e", "0x7368613235365f73746174655f68616e646c655f696e6974", - "0x131", + "0x12d", "0x7368613235365f73746174655f68616e646c655f646967657374", - "0x133", - "0x12a", - "0x129", - "0x128", - "0x736563703235366b315f6e65775f73797363616c6c", + "0x12f", + "0x126", "0x125", "0x124", - "0x123", - "0x11e", - "0x11d", - "0x736563703235366b315f6765745f78795f73797363616c6c", - "0x11c", + "0x736563703235366b315f6e65775f73797363616c6c", + "0x121", + "0x120", + "0x11f", + "0x11a", "0x119", - "0x116", - "0x66656c743235325f6d756c", + "0x736563703235366b315f6765745f78795f73797363616c6c", + "0x118", "0x115", - "0x110", - "0x10f", - "0x10e", - "0x4d", - "0x10d", - "0x7365637032353672315f6e65775f73797363616c6c", + "0x112", + "0x66656c743235325f6d756c", + "0x111", + "0x10c", + "0x10b", "0x10a", + "0x51", + "0x109", + "0x7365637032353672315f6e65775f73797363616c6c", "0x106", - "0x101", + "0x102", + "0xfd", + "0xfc", "0x7365637032353672315f6765745f78795f73797363616c6c", - "0xfb", - "0xfa", - "0xf5", - "0xf4", - "0xef", - "0xee", - "0x4e", - "0xed", + "0xf7", + "0xf6", + "0xf1", + "0xf0", + "0xeb", "0xea", - "0x7533325f6f766572666c6f77696e675f737562", - "0x61727261795f706f705f66726f6e74", "0xe9", - "0xe8", - "0xe7", "0xe6", + "0x7533325f6f766572666c6f77696e675f737562", + "0x61727261795f706f705f66726f6e74", "0xe5", "0xe4", - "0x706564657273656e", - "0xad292db4ff05a993c318438c1b6c8a8303266af2da151aa28ccece6726f1f1", "0xe3", + "0xe2", + "0xe1", "0xe0", + "0xad292db4ff05a993c318438c1b6c8a8303266af2da151aa28ccece6726f1f1", + "0xdf", + "0xdc", "0x2679d68052ccd03a53755ca9169677965fbd93e489df62f5f40d4f03c24f7a4", "0x62697477697365", - "0xdf", - "0xde", - "0x65635f706f696e745f7472795f6e65775f6e7a", - "0xdd", - "0x756e777261705f6e6f6e5f7a65726f", "0xdb", "0xda", - "0x65635f706f696e745f69735f7a65726f", - "0x65635f73746174655f696e6974", + "0x756e777261705f6e6f6e5f7a65726f", "0xd8", - "0x65635f73746174655f6164645f6d756c", - "0xd9", + "0xd7", + "0x65635f706f696e745f69735f7a65726f", + "0xd6", "0x65635f73746174655f7472795f66696e616c697a655f6e7a", "0x65635f706f696e745f7a65726f", "0x65635f73746174655f616464", "0x65635f706f696e745f756e77726170", "0x161bc82433cf4a92809836390ccd14921dfc4dc410cf3d2adbfee5e21ecfec8", - "0xd7", "0x61727261795f676574", - "0xcf", "0xce", "0xcd", + "0xcc", "0x7472795f696e746f5f636972637569745f6d6f64756c7573", "0x696e69745f636972637569745f64617461", - "0xc8", - "0x696e746f5f7539365f67756172616e746565", "0xc7", - "0xca", + "0x696e746f5f7539365f67756172616e746565", + "0xc6", + "0xc9", "0x6164645f636972637569745f696e707574", - "0xc5", - "0xd4", - "0xd3", - "0xd6", - "0xd1", - "0xcc", "0xc4", + "0xd3", + "0xd2", + "0xd5", + "0xd0", + "0xcb", "0xc3", + "0xc2", "0x6765745f636972637569745f64657363726970746f72", - "0xc0", - "0xbe", + "0xbf", + "0xbd", "0x6576616c5f63697263756974", "0x6765745f636972637569745f6f7574707574", "0x3ec1c84a1511eed894537833882a965abdddafab0d627a3ee76e01e6b57f37a", "0x1d1238f44227bdf67f367571e4dec83368c54054d98ccf71a67381f7c51f1c4", "0x7539365f67756172616e7465655f766572696679", - "0xba", - "0xae", + "0xb9", "0xad", "0xac", - "0xaa", + "0xab", "0xa9", "0xa8", "0xa7", @@ -782,8 +788,7 @@ "0xa5", "0x7374727563745f736e617073686f745f6465636f6e737472756374", "0xa3", - "0x51", - "0xbc", + "0xbb", "0xa0", "0x4ef3b3bc4d34db6611aef96d643937624ebee01d56eae5bde6f3b158e32b15", "0x9f", @@ -808,6 +813,7 @@ "0x8c", "0x8a", "0x88", + "0x57", "0x84", "0x7533325f736166655f6469766d6f64", "0x7533325f69735f7a65726f", @@ -847,7 +853,6 @@ "0x753132385f69735f7a65726f", "0x5c", "0x5b", - "0x57", "0x753235365f67756172616e7465655f696e765f6d6f645f6e", "0x753531325f736166655f6469766d6f645f62795f75323536", "0x7365637032353672315f6d756c5f73797363616c6c", @@ -857,12 +862,15 @@ "0x627974657333315f7472795f66726f6d5f66656c74323532", "0x627974657333315f746f5f66656c74323532", "0x393d13543d6033e70e218aad8050e8de40a1dfbac0e80459811df56e3716ce6", + "0x2e", "0x736563703235366b315f6d756c5f73797363616c6c", "0x736563703235366b315f6164645f73797363616c6c", + "0x2d", "0x696e746f5f626f78", "0x7370616e5f66726f6d5f7475706c65", "0x753132385f627974655f72657665727365", "0x25", + "0x2c", "0x23", "0x626f756e6465645f696e745f616464", "0x21", @@ -874,7 +882,7 @@ "0x16", "0x13", "0x12", - "0x4478", + "0x460b", "0xffffffffffffffff", "0x26", "0x242", @@ -915,14 +923,13 @@ "0x38a", "0x37f", "0x375", + "0xaf", "0xb0", "0xb1", - "0xb2", - "0x36c", - "0xb4", - "0xbb", - "0xbd", - "0xc2", + "0xb3", + "0xba", + "0xbc", + "0xc1", "0x364", "0x396", "0x3df", @@ -1262,161 +1269,173 @@ "0x1c61", "0x1c3f", "0x1c53", - "0x1cda", - "0x1ccb", - "0x1cbc", - "0x1c97", - "0x1cad", - "0x1da0", - "0x1d91", - "0x1d02", - "0x1d09", - "0x1d7e", - "0x1d78", - "0x1d68", - "0x1d2d", - "0x1d58", - "0x1d4c", - "0x1d85", - "0x1e37", - "0x1e28", - "0x1e18", - "0x1dd7", - "0x1e08", - "0x1dfc", - "0x1e8a", - "0x1e58", - "0x1e68", - "0x1e6f", - "0x1e7e", - "0x1eb9", - "0x1eaf", - "0x1ee7", - "0x1edd", - "0x1f5d", - "0x1f50", - "0x1f44", - "0x1f38", - "0x1f29", - "0x1fd4", - "0x1f97", - "0x1fc9", - "0x1fba", - "0x2034", - "0x2027", - "0x2018", - "0x2006", - "0x204d", - "0x2052", - "0x20ad", - "0x20a9", - "0x2063", - "0x2068", - "0x209f", - "0x209a", - "0x207b", - "0x2080", - "0x2090", - "0x208b", - "0x2095", - "0x20a4", - "0x20b1", - "0x2363", - "0x20d2", - "0x20d9", - "0x234f", - "0x2343", - "0x20ef", - "0x20f6", - "0x2330", - "0x2323", - "0x2314", - "0x2303", - "0x22f0", - "0x22dd", - "0x22ca", - "0x2130", - "0x2137", - "0x22b2", - "0x22a4", - "0x2156", - "0x215d", - "0x2295", - "0x2169", - "0x2170", - "0x2281", - "0x2272", - "0x2261", - "0x224e", - "0x2191", - "0x2198", + "0x1cb5", + "0x1c89", + "0x1ca6", + "0x1d08", + "0x1cde", + "0x1cf9", + "0x1d88", + "0x1d31", + "0x1d79", + "0x1d57", + "0x1d6c", + "0x1df3", + "0x1db1", + "0x1de4", + "0x1dd5", + "0x1e6d", + "0x1e5e", + "0x1e4f", + "0x1e2a", + "0x1e40", + "0x1f33", + "0x1f24", + "0x1e95", + "0x1e9c", + "0x1f11", + "0x1f0b", + "0x1efb", + "0x1ec0", + "0x1eeb", + "0x1edf", + "0x1f18", + "0x1fca", + "0x1fbb", + "0x1fab", + "0x1f6a", + "0x1f9b", + "0x1f8f", + "0x201d", + "0x1feb", + "0x1ffb", + "0x2002", + "0x2011", + "0x204c", + "0x2042", + "0x207a", + "0x2070", + "0x20f0", + "0x20e3", + "0x20d7", + "0x20cb", + "0x20bc", + "0x2167", + "0x212a", + "0x215c", + "0x214d", + "0x21c7", + "0x21ba", + "0x21ab", + "0x2199", + "0x21e0", + "0x21e5", + "0x2240", + "0x223c", + "0x21f6", + "0x21fb", + "0x2232", + "0x222d", + "0x220e", + "0x2213", + "0x2223", + "0x221e", + "0x2228", "0x2237", - "0x2227", - "0x21af", - "0x21b6", - "0x2210", - "0x2200", - "0x21ec", - "0x21d6", - "0x2220", - "0x2247", - "0x228e", - "0x22c2", - "0x233c", - "0x235c", - "0x27b5", - "0x23ab", - "0x23c7", - "0x23c9", - "0x27a9", - "0x279c", - "0x276f", - "0x2762", - "0x2457", - "0x277c", - "0x2490", - "0x24ac", - "0x274f", - "0x24af", - "0x277e", - "0x2741", - "0x2733", - "0x2725", - "0x154", - "0x2555", - "0x2571", - "0x2717", - "0x2574", - "0x2786", - "0x25a4", - "0x2788", - "0x1c3", - "0x1c4", - "0x1c5", + "0x2244", + "0x24f6", + "0x2265", + "0x226c", + "0x24e2", + "0x24d6", + "0x2282", + "0x2289", + "0x24c3", + "0x24b6", + "0x24a7", + "0x2496", + "0x2483", + "0x2470", + "0x245d", + "0x22c3", + "0x22ca", + "0x2445", + "0x2437", + "0x22e9", + "0x22f0", + "0x2428", + "0x22fc", + "0x2303", + "0x2414", + "0x2405", + "0x23f4", + "0x23e1", + "0x2324", + "0x232b", + "0x23ca", + "0x23ba", + "0x2342", + "0x2349", + "0x23a3", + "0x2393", + "0x237f", + "0x2369", + "0x23b3", + "0x23da", + "0x2421", + "0x2455", + "0x24cf", + "0x24ef", + "0x2948", + "0x253e", + "0x255a", + "0x255c", + "0x293c", + "0x292f", + "0x2902", + "0x28f5", + "0x25ea", + "0x290f", + "0x2623", + "0x263f", + "0x28e2", + "0x2642", + "0x2911", + "0x28d4", + "0x28c6", + "0x28b8", + "0x150", + "0x26e8", + "0x2704", + "0x28aa", + "0x2707", + "0x2919", + "0x2737", + "0x291b", "0x1c6", "0x1c7", - "0x25dd", + "0x2770", "0x1c8", "0x1c9", "0x1ca", - "0x25f9", + "0x278c", "0x1cb", "0x1cc", "0x1cd", "0x1ce", "0x1cf", - "0x2709", + "0x289c", "0x1d0", "0x1d2", "0x1d3", "0x1d4", "0x1d5", - "0x25fc", + "0x278f", "0x1d6", "0x1d7", "0x1d8", "0x1d9", - "0x278a", + "0x291d", "0x1da", "0x1db", "0x1dd", @@ -1445,11 +1464,11 @@ "0x1f5", "0x1f7", "0x1f8", - "0x262c", + "0x27bf", "0x1f9", "0x1fa", "0x1fb", - "0x278c", + "0x291f", "0x1fc", "0x1fd", "0x1fe", @@ -1478,11 +1497,11 @@ "0x218", "0x219", "0x21a", - "0x265b", + "0x27ee", "0x21b", "0x21c", "0x21d", - "0x278e", + "0x2921", "0x21e", "0x21f", "0x220", @@ -1515,38 +1534,38 @@ "0x23e", "0x23f", "0x240", - "0x2690", + "0x2823", "0x241", "0x243", - "0x2790", + "0x2923", "0x244", "0x245", "0x246", "0x247", "0x248", - "0x26fd", + "0x2890", "0x249", "0x24a", "0x24b", "0x24c", "0x24d", "0x24e", - "0x26ab", + "0x283e", "0x24f", "0x250", "0x251", "0x252", "0x253", - "0x26ea", + "0x287d", "0x254", "0x255", "0x256", "0x257", - "0x26d9", + "0x286c", "0x258", "0x259", "0x25a", - "0x26ca", + "0x285d", "0x25b", "0x25c", "0x25d", @@ -1575,26 +1594,26 @@ "0x276", "0x277", "0x278", - "0x275c", + "0x28ef", "0x279", "0x27a", "0x27b", "0x27c", "0x27d", - "0x2784", + "0x2917", "0x27e", "0x27f", "0x280", - "0x2782", + "0x2915", "0x281", "0x282", "0x283", - "0x2780", + "0x2913", "0x284", "0x285", "0x286", "0x287", - "0x277b", + "0x290e", "0x288", "0x289", "0x28a", @@ -1611,615 +1630,615 @@ "0x296", "0x298", "0x299", - "0x2804", - "0x27fa", - "0x289f", - "0x288f", - "0x2886", - "0x2877", - "0x286f", - "0x285f", - "0x2851", - "0x2972", - "0x2968", - "0x295f", - "0x28f0", - "0x2904", - "0x2921", - "0x294f", - "0x293f", - "0x297b", - "0x29d5", - "0x29cd", - "0x29c3", - "0x29dc", - "0x2b45", + "0x2997", + "0x298d", + "0x2a32", + "0x2a22", + "0x2a19", + "0x2a0a", "0x2a02", - "0x2a1d", - "0x2b34", - "0x2b23", - "0x2b14", - "0x2b01", + "0x29f2", + "0x29e4", + "0x2b05", + "0x2afb", "0x2af2", - "0x2a64", - "0x2a74", - "0x2a76", - "0x2a9b", - "0x2a8d", - "0x2aa9", - "0x2ae1", - "0x2ad9", - "0x2ae8", + "0x2a83", + "0x2a97", + "0x2ab4", + "0x2ae2", + "0x2ad2", + "0x2b0e", + "0x2b68", + "0x2b60", + "0x2b56", + "0x2b6f", + "0x2cd8", + "0x2b95", + "0x2bb0", + "0x2cc7", "0x2cb6", - "0x2b70", - "0x2b8a", - "0x2ca6", - "0x2c96", - "0x2c88", - "0x2c76", - "0x2c68", - "0x2bd0", - "0x2be0", - "0x2be2", + "0x2ca7", + "0x2c94", + "0x2c85", + "0x2bf7", "0x2c07", - "0x2bf9", - "0x2c13", - "0x2c5c", - "0x2c4c", - "0x2c43", - "0x2dd1", - "0x2dc0", - "0x2db0", - "0x2d9f", - "0x2d8d", - "0x2d1b", - "0x2d0a", - "0x2cfe", - "0x2d88", - "0x2d54", - "0x2d43", - "0x2d37", - "0x2d85", - "0x2d67", - "0x2d7f", - "0x2e02", - "0x2df8", - "0x2e2d", - "0x2e23", - "0x2eb6", - "0x2eaa", - "0x2e96", - "0x2e8e", - "0x2ea1", - "0x2ec2", - "0x2f83", - "0x2f78", - "0x2f62", - "0x2f4c", - "0x2f38", - "0x2f30", - "0x2f42", - "0x2f8e", - "0x304e", - "0x303e", - "0x2fb4", - "0x2fcc", - "0x2fc6", - "0x2fd4", - "0x2ff3", - "0x2fde", - "0x2fee", - "0x3003", - "0x302c", - "0x3024", - "0x3036", - "0x3145", - "0x3131", - "0x3126", - "0x3111", - "0x30fd", - "0x30e9", - "0x30e1", - "0x30f4", - "0x313c", - "0x32de", - "0x3188", - "0x32c7", - "0x3286", + "0x2c09", + "0x2c2e", + "0x2c20", + "0x2c3c", + "0x2c74", + "0x2c6c", + "0x2c7b", + "0x2e49", + "0x2d03", + "0x2d1d", + "0x2e39", + "0x2e29", + "0x2e1b", + "0x2e09", + "0x2dfb", + "0x2d63", + "0x2d73", + "0x2d75", + "0x2d9a", + "0x2d8c", + "0x2da6", + "0x2def", + "0x2ddf", + "0x2dd6", + "0x2f64", + "0x2f53", + "0x2f43", + "0x2f32", + "0x2f20", + "0x2eae", + "0x2e9d", + "0x2e91", + "0x2f1b", + "0x2ee7", + "0x2ed6", + "0x2eca", + "0x2f18", + "0x2efa", + "0x2f12", + "0x2f95", + "0x2f8b", + "0x2fc0", + "0x2fb6", + "0x3049", + "0x303d", + "0x3029", + "0x3021", + "0x3034", + "0x3055", + "0x3116", + "0x310b", + "0x30f5", + "0x30df", + "0x30cb", + "0x30c3", + "0x30d5", + "0x3121", + "0x31e1", + "0x31d1", + "0x3147", + "0x315f", + "0x3159", + "0x3167", + "0x3186", + "0x3171", + "0x3181", + "0x3196", "0x31bf", - "0x31ba", - "0x31b5", - "0x31c3", - "0x3278", - "0x326d", - "0x3262", - "0x3257", - "0x324c", - "0x323a", - "0x3241", - "0x32b7", - "0x32b2", - "0x32ad", - "0x32bb", - "0x3304", - "0x3306", - "0x34ba", - "0x34ab", - "0x3341", - "0x3499", - "0x3486", - "0x3474", - "0x3384", - "0x3373", - "0x33bd", - "0x33aa", - "0x3399", - "0x33bc", - "0x3462", - "0x3451", + "0x31b7", + "0x31c9", + "0x32d8", + "0x32c4", + "0x32b9", + "0x32a4", + "0x3290", + "0x327c", + "0x3274", + "0x3287", + "0x32cf", + "0x3471", + "0x331b", + "0x345a", + "0x3419", + "0x3352", + "0x334d", + "0x3348", + "0x3356", + "0x340b", + "0x3400", + "0x33f5", + "0x33ea", + "0x33df", + "0x33cd", + "0x33d4", + "0x344a", "0x3445", - "0x3438", - "0x3427", - "0x3418", - "0x340d", - "0x33fe", - "0x34cf", + "0x3440", + "0x344e", + "0x3497", + "0x3499", + "0x364d", + "0x363e", "0x34d4", - "0x3526", - "0x351d", - "0x3510", - "0x3501", - "0x34f5", - "0x3561", - "0x3542", - "0x3556", - "0x35cf", - "0x3581", - "0x3588", - "0x35c3", - "0x35b2", - "0x35a6", - "0x366c", - "0x35ee", + "0x362c", + "0x3619", + "0x3607", + "0x3517", + "0x3506", + "0x3550", + "0x353d", + "0x352c", + "0x354f", "0x35f5", - "0x3660", - "0x364f", - "0x363f", - "0x3626", - "0x3645", - "0x3636", - "0x3646", - "0x36bc", - "0x368b", - "0x3692", - "0x36b1", - "0x36a9", - "0x36e0", - "0x3773", - "0x374e", - "0x3745", - "0x373c", - "0x3733", - "0x372a", - "0x3721", + "0x35e4", + "0x35d8", + "0x35cb", + "0x35ba", + "0x35ab", + "0x35a0", + "0x3591", + "0x3662", + "0x3667", + "0x36b9", + "0x36b0", + "0x36a3", + "0x3694", + "0x3688", + "0x36f4", + "0x36d5", + "0x36e9", + "0x3762", + "0x3714", "0x371b", + "0x3756", + "0x3745", + "0x3739", + "0x37ff", + "0x3781", + "0x3788", + "0x37f3", + "0x37e2", + "0x37d2", + "0x37b9", + "0x37d8", + "0x37c9", + "0x37d9", + "0x384f", + "0x381e", + "0x3825", + "0x3844", + "0x383c", "0x29a", + "0x3873", + "0x3906", "0x29b", + "0x38e1", + "0x38d8", + "0x38cf", "0x29c", + "0x38c6", "0x29d", - "0x3727", + "0x38bd", "0x29e", - "0x3730", + "0x38b4", "0x29f", - "0x3739", + "0x38ae", "0x2a0", - "0x3742", "0x2a1", - "0x374b", "0x2a2", - "0x3754", "0x2a3", + "0x38ba", "0x2a4", - "0x3768", + "0x38c3", "0x2a5", - "0x37b7", + "0x38cc", "0x2a6", - "0x3796", - "0x3787", + "0x38d5", "0x2a7", + "0x38de", "0x2a8", - "0x37a8", + "0x38e7", "0x2a9", "0x2aa", + "0x38fb", "0x2ab", - "0x37d5", + "0x394a", "0x2ac", - "0x3803", - "0x37f1", - "0x37e6", + "0x3929", + "0x391a", "0x2ad", "0x2ae", + "0x393b", "0x2af", - "0x37ed", "0x2b0", "0x2b1", + "0x3968", "0x2b2", + "0x3996", + "0x3984", + "0x3979", "0x2b3", - "0x37f8", "0x2b4", "0x2b5", + "0x3980", "0x2b6", "0x2b7", "0x2b8", - "0x386d", "0x2b9", - "0x385e", - "0x384f", + "0x398b", "0x2bb", "0x2bc", "0x2bd", - "0x3842", "0x2be", - "0x3835", - "0x3828", + "0x3a00", "0x2bf", + "0x39f1", + "0x39e2", "0x2c0", "0x2c2", "0x2c3", + "0x39d5", "0x2c4", - "0x38bb", + "0x39c8", + "0x39bb", "0x2c5", "0x2c6", - "0x388b", "0x2c7", "0x2c8", "0x2c9", - "0x3893", "0x2ca", + "0x3a4e", "0x2cb", - "0x38b0", "0x2cc", + "0x3a1e", "0x2cd", - "0x38a4", "0x2ce", "0x2cf", + "0x3a26", "0x2d0", "0x2d1", + "0x3a43", "0x2d2", "0x2d3", + "0x3a37", "0x2d4", "0x2d5", - "0x38eb", - "0x38e6", "0x2d6", "0x2d7", - "0x3916", "0x2d8", - "0x38f0", "0x2d9", - "0x3924", - "0x3908", - "0x391e", "0x2da", "0x2db", + "0x3a7e", + "0x3a79", "0x2dc", + "0x3aa9", "0x2de", - "0x392d", - "0x394a", - "0x3945", - "0x3974", - "0x394f", - "0x3982", - "0x3967", - "0x397c", - "0x398b", + "0x3a83", "0x2df", + "0x3ab7", + "0x3a9b", + "0x3ab1", "0x2e0", - "0x39e1", "0x2e1", - "0x39d0", "0x2e2", "0x2e3", - "0x39c6", + "0x3ac0", + "0x3add", + "0x3ad8", + "0x3b07", + "0x3ae2", + "0x3b15", + "0x3afa", + "0x3b0f", + "0x3b1e", "0x2e5", "0x2e6", + "0x3b74", "0x2e7", - "0x39b9", + "0x3b63", "0x2e8", "0x2e9", "0x2ea", - "0x3a08", - "0x3a03", - "0x3a33", - "0x3a0d", + "0x3b59", "0x2eb", - "0x3a3c", - "0x3a25", - "0x3a36", - "0x3ba1", - "0x3a45", - "0x3a61", - "0x3a5c", - "0x3aa0", - "0x3a66", - "0x3a94", - "0x3a7d", - "0x3a8b", - "0x3b98", "0x2ec", "0x2ed", + "0x3b4c", "0x2ee", "0x2ef", - "0x3b84", "0x2f0", + "0x3b9b", + "0x3b96", + "0x3bc6", + "0x3ba0", "0x2f1", + "0x3bcf", + "0x3bb8", + "0x3bc9", + "0x3d34", + "0x3bd8", + "0x3bf4", + "0x3bef", + "0x3c33", + "0x3bf9", + "0x3c27", + "0x3c10", + "0x3c1e", + "0x3d2b", "0x2f2", "0x2f3", "0x2f4", "0x2f5", - "0x3b72", - "0x3b63", + "0x3d17", "0x2f6", - "0x3b55", - "0x3b48", "0x2f7", - "0x3b3c", - "0x3b30", - "0x3b12", - "0x3b29", - "0x3b23", "0x2f8", "0x2f9", "0x2fa", "0x2fb", - "0x3b7c", + "0x3d05", + "0x3cf6", "0x2fc", + "0x3ce8", + "0x3cdb", "0x2fd", + "0x3ccf", + "0x3cc3", + "0x3ca5", + "0x3cbc", + "0x3cb6", "0x2fe", "0x2ff", "0x300", "0x301", - "0x3c02", - "0x3bfd", - "0x3bf8", - "0x3bf2", - "0x3c06", - "0x3c15", + "0x3d0f", "0x302", "0x303", "0x304", "0x305", - "0x3f43", - "0x3ec7", - "0x3e62", - "0x3e52", - "0x3dc0", - "0x3cee", - "0x3c3e", - "0x3c42", - "0x3cda", "0x306", "0x307", - "0x3cce", + "0x3d95", + "0x3d90", + "0x3d8b", + "0x3d85", + "0x3d99", + "0x3da8", "0x308", "0x309", - "0x3cbe", - "0x3c8d", - "0x3c7e", - "0x3c72", "0x30a", - "0x3c99", "0x30b", - "0x3cbb", - "0x3cb0", + "0x40d6", + "0x405a", + "0x3ff5", + "0x3fe5", + "0x3f53", + "0x3e81", + "0x3dd1", + "0x3dd5", + "0x3e6d", "0x30c", - "0x3ca4", "0x30d", - "0x3d64", - "0x3ce8", + "0x3e61", "0x30e", "0x30f", - "0x3cf7", - "0x3cfb", - "0x3daf", - "0x3d9f", - "0x3d92", - "0x3d81", - "0x3d4e", - "0x3d3f", - "0x3d33", - "0x3d5a", - "0x3d7e", - "0x3d73", - "0x3d67", - "0x310", - "0x3e1b", - "0x3dba", - "0x3dc8", - "0x3dcc", - "0x3e3e", - "0x3e05", - "0x3df6", - "0x3dea", + "0x3e51", + "0x3e20", "0x3e11", - "0x3e3b", - "0x3e30", - "0x3e24", - "0x3e4c", - "0x3e91", - "0x3e85", - "0x3e7c", - "0x3e9d", - "0x3ec1", - "0x3eb9", - "0x3ead", - "0x3ed7", - "0x3f0a", - "0x3efc", - "0x3ef1", - "0x3f17", - "0x3f3d", - "0x3f33", - "0x3f23", - "0x3f74", + "0x3e05", + "0x310", + "0x3e2c", "0x311", + "0x3e4e", + "0x3e43", "0x312", - "0x3f6a", + "0x3e37", "0x313", + "0x3ef7", + "0x3e7b", "0x314", + "0x3e8a", + "0x3e8e", + "0x3f42", + "0x3f32", + "0x3f25", + "0x3f14", + "0x3ee1", + "0x3ed2", + "0x3ec6", + "0x3eed", + "0x3f11", + "0x3f06", + "0x3efa", "0x316", - "0x3fd9", - "0x3f90", - "0x3f95", - "0x3fcf", - "0x3fca", - "0x3fa6", - "0x3fab", - "0x3fc0", - "0x3fb9", + "0x3fae", + "0x3f4d", + "0x3f5b", + "0x3f5f", + "0x3fd1", + "0x3f98", + "0x3f89", + "0x3f7d", + "0x3fa4", + "0x3fce", + "0x3fc3", + "0x3fb7", + "0x3fdf", + "0x4024", + "0x4018", + "0x400f", + "0x4030", + "0x4054", + "0x404c", + "0x4040", + "0x406a", + "0x409d", + "0x408f", + "0x4084", + "0x40aa", + "0x40d0", + "0x40c6", + "0x40b6", + "0x4107", "0x317", "0x318", + "0x40fd", "0x319", - "0x3fc5", "0x31a", - "0x3fd4", "0x31b", "0x31c", + "0x416c", + "0x4123", + "0x4128", + "0x4162", + "0x415d", + "0x4139", + "0x413e", + "0x4153", + "0x414c", "0x31d", - "0x401f", - "0x4014", - "0x4005", - "0x3ffb", - "0x400e", - "0x4029", - "0x4066", - "0x4059", - "0x404a", - "0x407b", - "0x408a", - "0x4099", "0x31e", - "0x40a8", "0x31f", - "0x40b7", + "0x4158", "0x320", - "0x40c6", + "0x4167", "0x321", - "0x40d5", - "0x40e4", "0x322", - "0x40f3", "0x323", - "0x4102", - "0x4111", + "0x41b2", + "0x41a7", + "0x4198", + "0x418e", + "0x41a1", + "0x41bc", + "0x41f9", + "0x41ec", + "0x41dd", + "0x420e", + "0x421d", + "0x422c", "0x324", - "0x4120", - "0x412f", + "0x423b", "0x325", - "0x413e", + "0x424a", "0x326", - "0x414d", - "0x415a", + "0x4259", "0x327", - "0x427e", - "0x4271", + "0x4268", + "0x4277", "0x328", + "0x4286", "0x329", - "0x425f", - "0x4250", + "0x4295", + "0x42a4", "0x32a", - "0x423b", - "0x41a9", - "0x41b1", - "0x41ba", - "0x41c6", - "0x4223", - "0x4216", + "0x42b3", + "0x42c2", "0x32b", - "0x4209", - "0x41fd", + "0x42d1", "0x32c", - "0x41f2", + "0x42e0", + "0x42ed", "0x32d", + "0x4411", + "0x4404", "0x32e", "0x32f", + "0x43f2", + "0x43e3", "0x330", + "0x43ce", + "0x433c", + "0x4344", + "0x434d", + "0x4359", + "0x43b6", + "0x43a9", "0x331", - "0x422f", + "0x439c", + "0x4390", "0x332", - "0x4269", + "0x4385", "0x333", "0x334", - "0x42fb", "0x335", "0x336", "0x337", + "0x43c2", "0x338", + "0x43fc", "0x339", "0x33a", + "0x448e", "0x33b", "0x33c", - "0x42ea", - "0x42e1", - "0x42d9", "0x33d", "0x33e", "0x33f", "0x340", "0x341", - "0x42f2", "0x342", + "0x447d", + "0x4474", + "0x446c", "0x343", - "0x4319", "0x344", "0x345", - "0x431e", "0x346", - "0x4328", - "0x432d", - "0x4334", - "0x4339", - "0x4342", - "0x4347", "0x347", + "0x4485", "0x348", - "0x4351", - "0x4356", "0x349", + "0x44ac", "0x34a", "0x34b", - "0x4360", - "0x4363", + "0x44b1", "0x34c", + "0x44bb", + "0x44c0", + "0x44c7", + "0x44cc", + "0x44d5", + "0x44da", "0x34d", "0x34e", - "0x43c1", + "0x44e4", + "0x44e9", "0x34f", "0x350", "0x351", - "0x4372", - "0x4377", - "0x437c", - "0x4381", - "0x4386", - "0x438b", - "0x4390", - "0x4395", - "0x439a", - "0x439f", - "0x43a4", - "0x43a9", - "0x43ae", - "0x43b3", - "0x43b8", + "0x44f3", + "0x44f6", "0x352", - "0x43bc", "0x353", "0x354", + "0x4554", "0x355", "0x356", "0x357", + "0x4505", + "0x450a", + "0x450f", + "0x4514", + "0x4519", + "0x451e", + "0x4523", + "0x4528", + "0x452d", + "0x4532", + "0x4537", + "0x453c", + "0x4541", + "0x4546", + "0x454b", "0x358", + "0x454f", "0x359", "0x35a", "0x35b", @@ -2231,18 +2250,24 @@ "0x361", "0x362", "0x363", - "0x4411", - "0x43dc", - "0x43e3", - "0x4405", "0x365", - "0x43fc", - "0x4467", - "0x445c", - "0x444c", - "0x4442", - "0x4455", - "0x4471", + "0x366", + "0x367", + "0x368", + "0x369", + "0x36a", + "0x45a4", + "0x456f", + "0x4576", + "0x4598", + "0x36b", + "0x458f", + "0x45fa", + "0x45ef", + "0x45df", + "0x45d5", + "0x45e8", + "0x4604", "0x4b0", "0x571", "0x5d2", @@ -2280,58 +2305,62 @@ "0x1bc4", "0x1c27", "0x1c70", - "0x1ce9", - "0x1daf", - "0x1e46", - "0x1e9a", - "0x1ec8", - "0x1ef6", - "0x1f6b", - "0x1fe1", - "0x2046", - "0x20b6", - "0x2375", - "0x27ca", - "0x2812", - "0x2819", - "0x28ae", - "0x2983", - "0x29e2", - "0x2b52", - "0x2cc2", - "0x2de1", - "0x2e11", - "0x2e3c", - "0x2ecb", - "0x2f98", - "0x305d", - "0x3153", - "0x32f3", - "0x330c", - "0x34c8", - "0x3530", - "0x3571", - "0x35de", - "0x367b", - "0x36cb", - "0x37c8", - "0x387c", - "0x38cb", - "0x39eb", - "0x3ba8", - "0x3c0a", - "0x3f54", - "0x3f83", - "0x3fe1", - "0x402f", - "0x4075", - "0x4161", - "0x428c", - "0x4309", - "0x4367", - "0x43cc", - "0x4421", - "0x233a6", + "0x1cc5", + "0x1d18", + "0x1d98", + "0x1e03", + "0x1e7c", + "0x1f42", + "0x1fd9", + "0x202d", + "0x205b", + "0x2089", + "0x20fe", + "0x2174", + "0x21d9", + "0x2249", + "0x2508", + "0x295d", + "0x29a5", + "0x29ac", + "0x2a41", + "0x2b16", + "0x2b75", + "0x2ce5", + "0x2e55", + "0x2f74", + "0x2fa4", + "0x2fcf", + "0x305e", + "0x312b", + "0x31f0", + "0x32e6", + "0x3486", + "0x349f", + "0x365b", + "0x36c3", + "0x3704", + "0x3771", + "0x380e", + "0x385e", + "0x395b", + "0x3a0f", + "0x3a5e", + "0x3b7e", + "0x3d3b", + "0x3d9d", + "0x40e7", + "0x4116", + "0x4174", + "0x41c2", + "0x4208", + "0x42f4", + "0x441f", + "0x449c", + "0x44fa", + "0x455f", + "0x45b4", + "0x2407c", "0x500900500400300a005009005004003008007006005004003002001000", "0x300f00500900500400300e00700c00500400300d00700c00500400300b", "0x500400301200700c00500400301100700c005004003010005009005004", @@ -2384,7169 +2413,7333 @@ "0x50040030b00050290280af0260280070ab0ae0a90050560ad0ac0050ab", "0x2802f0260b40050350b30510050560550b20070060050040030b1007006", "0x50040030b90050350b30810050060050b40050b80280b70260b60050b5", - "0x70060050040030bb0070060050040030070070810050040030ba007006", - "0x50be02805702a02d0050b90050290280570260bd0070060050040030bc", - "0x70c40c30390c20c10070060050040030c000708100500400305c0050bf", - "0xc800a0070c40c30c70050c60050af0c50310070c40c30070070c40c3005", - "0x2e0c90050b00050af0cc0050070ab0ae0cb0050ab0ca0c90050c60050af", - "0xd10020d00cf0050cf0050cf0050cf0050ce0280650260cd00702800702f", - "0x300500700500702f02e0050070d40050040030d20050350d30d2005056", - "0x70cf0050040030d20050350d602800702800702f02e0280070d5005004", - "0x50da0050290280d90260020d80d20050560a80d700700600500400304f", - "0x260d20050560ad0db0050ab0aa0310070cf0050040030da0050da0050da", - "0x30cf0050cf0050cf0050cf0050290280650260390dd0dc0050290280af", - "0x3e0020e00df00503f03e0020de0920070cf0050040030280070cf005004", - "0x30050070810050040030e300503f03e0020e20b900503f03e0e100503f", - "0xe80e70070060050040030e60070060050040030390e50e4007006005004", - "0x50040030eb0070060050040030ea0070060050040030e9005035053039", - "0x30060050f102802f0260f00050ef02802f0260390ee0390ed0050070ec", - "0x50040030f40070060050040030f30070060050040030f2007006005004", - "0x50f702803a02a0310070810050040030f60070060050040030f5007006", - "0x504400305c0050fa0050f902805702a0f800502902802f02602d00502d", - "0x30ff00700c0050040030fe0050fd00503c0050440030fc0050fb00503c", - "0x504400310200700c00500400310100700c00500400310000700c005004", - "0x310700700c00500400310600510500503c00504400310400510300503c", - "0x504400310a00700c00500400310900700c00500400310800700c005004", - "0x310f00700c00500400310e00510d00503c00504400310c00510b00503c", - "0x504400311200700c00500400311100700c00500400311000700c005004", - "0x311700700c00500400311600511500503c00504400311400511300503c", - "0x504400311a00700c00500400311900700c00500400311800700c005004", - "0x2a0cd00700c00500400311e00700c00500400303911d11c00511b00503c", - "0x502902802f02600600502d00512102803a02a02d00512000511f02803a", - "0x30f800503c00503c00512502809902605c00512400512302805702a122", - "0x700c00500400312900512800503c00504400312700512600503c005044", - "0x312d00700c00500400312c00700c00500400312b00700c00500400312a", - "0x313100700c00500400313000700600500400312f00512e00503c005044", - "0x313500700c00500400313400513300503c00504400313200700c005004", - "0x313900513800503c00504400313700700600500400313600700c005004", - "0x313d00700c00500400313c00700c00500400313b00513a00503c005044", - "0x504400314000700600500400313f00700c00500400313e00700c005004", - "0x500400314400700c00500400314300700600500400314200514100503c", - "0x314600514600503c00504400314600502400503c00504400314500700c", - "0x5081005081005081005081005081005029028148026147007081005004", - "0x14c14b00514a02802f0261490050350b3081005056055081005081005081", - "0x305c00515000514f02805702a02d00514e00514d005029028099026039", - "0x3415a005159005158005157005156005155005154005153005152005151", - "0x708100500400315c00708100500400315b007081005004003152005035", - "0x316000708100500400315f00708100500400315e00708100500400315d", - "0x2a02d005149005029028057026162007081005004003161007081005004", - "0x316600700600500400316500708100500400305c005164005163028057", - "0x5004003169007006005004003168007006005004003167007006005004", - "0xb308e00505605516c00700c00500400316b00700600500400316a00700c", - "0x2805702a02d00516d00502902805702616f00516e02802f02616d005035", - "0x2617400517302802f0261720050350b303c00505605505c005171005170", - "0x500400305c00517700517602805702a02d00516d0051750050290280b7", - "0x700600500400317900700600500400317800700600500400302800700c", - "0x502902802f02600500700c00500400300700700c00500400300217b17a", - "0x500400317d00700600500400300700700600500400317c00503f03e00c", - "0x700600500400318000700600500400317f00700600500400317e007006", - "0x502902809902618400518302802f0261820050350b3096005056055181", - "0x2802f0260590050350b305c00518700518602805702a0f8005185005185", - "0x518c00518b02805702a0f800518a00518a005029028099026189005188", - "0x519300519200519102819002603918f18e00503503418d00503503405c", - "0x500c005194005006005197028196026195005035034006005194005194", - "0x3e18a00508100508100518a00500c00518500500600500600500600518a", - "0x519902805702a02d00518500519802803a02a19400503f03e18d00503f", - "0x2a05c00519c00519b02805702a19a00518a00502902805702602d005182", - "0x519f02805702a19e00518a00502902803a02602d00518a00519d02803a", - "0x700600500400300500708e0050040031a100700600500400305c0051a0", - "0x31a50070060050040031a40070060050040030f00051a302802f0261a2", - "0x50040030180070060050040031a70070060050040031a6007006005004", - "0x2803a0261aa0070060050040030021a90130070060050040031a8007006", - "0x70060050040030021ad1ac0050060051ab02803a02600c00500c005029", - "0x51b20051b102805702a0060051b000502902803a0261af0280270261ae", - "0x517c0051b502805702a1b40070060050040031b300700600500400305c", - "0x2805702a02d0050290281b90260021b80060050c41b70060050561b605c", - "0x518a00502902803a02602d00518d0051bc02803a02a05c0051bb0051ba", - "0x2a19400508e00508e0051c002809902605c0051bf0051be02805702a1bd", - "0x2803a0261c200700600500400318e00503f03e02d00518e0051c102803a", - "0x302800708e00500400305c0051c40051c302805702a02d00508e005029", - "0x2a02d0051b00050290281c70261c60070060050040031c5007006005004", - "0x31cb0070060050040030391ca00600503505305c0051c90051c8028057", - "0x2a02d0050590050290280570261cd0070060050040031cc007006005004", - "0x503f03e0021d018a00503f03e05900503f03e05c0051cf0051ce028057", - "0x502902805702602d0050590051d302805702a1d20070060050040031d1", - "0x51d702803a02a00600503503405c0051d60051d502805702a1d400518a", - "0x30050070060050040031d900700600500400300600503f03e02d0051d8", - "0x50040031da007006005004003030007006005004003028007006005004", - "0x708100500400318a00502902802f0261dc0070060050040031db007006", - "0x2a0391e11e000700600500400305c0051df0051de02805702a0391dd028", - "0x51e90281e80281e70281e60281e51e40021e302d0050060051e202803a", - "0x60050051ee0060050051ed1ec0050051eb0280050051eb0281ea18a005", - "0x281f21f10050051eb1890050051eb0280071f10050071f00060050051ef", - "0x51eb0281f60281f51f10050051f40050071f10050071f002d0050051f3", - "0x51f90060050051f71f80050051f71d80050051f71890050051f7006005", - "0x71f005c0050051f30580050051f30060050051fc1fb0050051fa006005", - "0x282001ff0050051eb0281fe1fd0050051eb1d10050051eb0050071fd005", - "0x282040282030810050051eb1f80050052020810050052022010050051fa", - "0x1fd0050071f01df0050051f318a0050051f30590050051f7059005005205", - "0x51f72070050051fa2060050051fa0810050051f70590050051eb028007", - "0x51fa20a0050051fa2090050051fa18a0050051f72080050051fa02d005", - "0x71f002821000600500520f02820e00600500520d20c0050051fa20b005", - "0x51eb2110050051f40050072110050071f02110050051eb028007211005", - "0x51f71d40050051f41d60050051e92130050051f404003100521218a005", - "0x18a00500520d1d100500520d2160050051f72150050051fa028214194005", - "0x1d100500520f2180050051f72170050051f705900500520f05900500520d", - "0x1890050052021cf0050051e921a0050051f421903100521218a00500520f", - "0x51fa0580050051f705c0050051e921d03100521202821c00600500521b", - "0x71f00282230282222210050051f72200050051fa21f0050051fa21e005", - "0x51f70280070f80050071f02240050051f70f80050051eb0050070f8005", - "0x2270310052122250050051eb1b00050051f30282262250050051f70f8005", - "0x51eb22c0050051fa02822b22a0070052291c90050051f72280050051f4", - "0x8e0050051f702822f22e0050051fa22d0310052121940050051eb1f8005", - "0x2320050051f423103100521208e0050051eb08e0050052052300050051fa", - "0x18e00500520d0282372360050051fa0282350282340282331c40050051f7", - "0x2390050051f404803100521218e00500520f2380050051f4046031005212", - "0x1b000500520518e0050051f718d0050051f71bd0050051f41bf0050051e9", - "0x23a0050051f404703100521218d0050051eb18e0050051eb1b00050051f7", - "0x51eb02823e02823d04503100521202823c23b0050051f71bb0050051f7", - "0x282442430050051f72420310052122410050051eb00600500524023f005", - "0x51e92470050051f424603100521200c0050051eb00c0050051f7028245", - "0x24b0310052120400050051eb24a03100521224903100521202824817c005", - "0x2500050051f424f03100521224e0050051fa24d0050051fa24c031005212", - "0x60050052022530310052122520310052122510050051fa1b20050051e9", - "0x51f31ac0050051f32560310052122550050051eb028254194005005202", - "0x52051ec0050051ef0280050051ef2580310052122570050051eb257005", - "0x51e91ac0050051f72570050051e92570050052022570050051f7257005", - "0x521205003100521225a0050051eb2590050051fa00c0050051ef1ac005", - "0x51eb0e30050051eb0e10050051eb25c0050051fa25b0050051fa009031", - "0x2825d05903100521205c0050051eb05803100521205b0310052120df005", - "0x2130050051eb0280072130050071f01d60050051f30280071d40050071f0", - "0x21a0050071f01cf0050051f30050072130050071f00050071d40050071f0", - "0x51fa02825e18a00500520200500721a0050071f021a0050051eb028007", - "0x2280050051eb0280072280050071f01c90050051f30f80050051f425f005", - "0x2630050051fa0282622610050051fa0050072280050071f02600050051fa", - "0x2650050051e92650050051f72650050052052650050051f32640050051fa", - "0x51fa02826708e0050051ef08e0050052022660050051fa0f00050051ef", - "0x51f32320050051eb0050072320050071f026a0050051fa028269268005", - "0x51eb0280072380050071f018e0050051f30280072320050071f01c4005", - "0x1a00050051e926b0050051f405c0310052120050072380050071f0238005", - "0x26d0050051f426c0310052121820050051eb0960050051f919e0050051f4", - "0x1850050051f31820050051f718200500520519a0050051f419c0050051e9", - "0x26e0050051f400500726e0050071f026e0050051eb02800726e0050071f0", - "0x2390050071f01bf0050051f30280071bd0050071f018d0050051f302826f", - "0x2390050071f00050071bd0050071f01850050051f72390050051eb028007", - "0x2710050051eb02827018d00500520d19400500520d02d0050051ef005007", - "0x18e00500520518e0050051ee1920050051eb1950050051e91950050051ee", - "0x1930050051f719400500520f1930050051eb18e0050051e918e005005202", - "0x18d00500520518d00500520f18d0050051ee1940050051ef2720050051f7", - "0x27503100521202827418a0050051ef02827318d0050051e918d005005202", - "0x1850050051e91850050052021850050051ef18c0050051e92760050051f4", - "0x1870050051e92780050051f42770310052121850050051eb09600500521b", - "0x51fa23a0050051eb02800723a0050071f01bb0050051f30810050051ef", - "0x27c0050051fa27b0050051fa27a0050051fa00500723a0050071f0279005", - "0x600500528027f0050051fa22500500520227e0050051f727d0050051fa", - "0x51fa02828100c0050052020240050051fa17c00500520d2430050051eb", - "0x2470050071f017c0050051f302828502828402828317c00500520f282005", - "0x17c0050051f70050072470050071f02860050051fa2470050051eb028007", - "0x1460050051fa03c0050051f92890050051f72880050051fa2870050051fa", - "0x17200500520508e0050051f903c0050051fc03c0050051eb03c0050051f3", - "0x5e03100521216d0050051eb1750050051eb1750050051f31720050051f7", - "0x28b0050051f40600310052121750050051f71770050051e928a0050051f4", - "0x51e902828d28c0050051f316d0050051f716d0050052051710050051e9", - "0x51eb08e0050051fc2900050051fa28f0050051fa28e0050051fa03c005", - "0x51fa2930050051fa2920050051fa2910050051fa03c0050051f728c005", - "0x52121490050051eb0810050051fc2950050051fa0810050051f9294005", - "0x52051640050051e90282990280072980050072972960050051f405f031", - "0x521214e0050051eb14d0050051eb14d0050051f31490050051f7149005", - "0x29c0050051eb02829b14d0050051f71500050051e929a0050051f405d031", - "0x29f0050051fa29e0050051fa29d0050051fa1520050051e91520050051ee", - "0x51f70750050051f40750050051eb0750050051f70750050052050282a0", - "0x51fa2a40050051fa2a30050051fa2a20050051fa2a10050051fa074005", - "0x1340050051fa2a70050051fa03c0050052050282a603c0050052022a5005", - "0x51fa2ac0050051fa2ab0050051fa0282aa2a90050051fa2a80050051fa", - "0x521206f0050051eb2ae0050051eb06f0050051f32ae0050051f32ad005", - "0x2b20050052050282b11220050051f41240050051e92b00050051f42af031", - "0x2b30050051fa1200050051f72b20050051f42b20050051eb2b20050051f7", - "0x51fa2b60050051fa10e0050051fa0282b50250050051fa2b40050051fa", - "0x51eb2bb0050051fa2ba0050051fa2b90050051fa2b80050051fa2b7005", - "0x282bf2be0050051fa0fa0050051f72bd0050051f42bc031005212120005", - "0x51fa2c10050051fa2500050051eb0050072500050071f00060050052c0", - "0x2c30050051fa0280072500050071f01b20050051f31d10050051ef2c2005", - "0x2c60050051f72c60050052052c60050051f32c50050051fa2c40050051fa", - "0x2c90050051f72c90050052052c90050051f30282c80282c72c60050051e9", - "0x282cc0f00050051f70282cb2ca0050051fa0f00050052022c90050051e9", - "0x51fa0e90050052d12d00050051eb0282cf2ce0050051fa2cd0050051fa", - "0xe90050051f70e90050051eb0282d40e90050052022d30050051fa2d2005", - "0x2d00050051f70282da0282d92d80050051eb0282d72d60050051fa0282d5", - "0x2de0050051fa1920050051f70f00050051eb2dd0070052290282dc0282db", - "0xe100500520d0b900500520d0e300500520d1d80050051eb0060050052df", - "0x2e20050051eb2e20050051f32e10050051fa2e00050051fa0df00500520d", - "0x51eb2e70050051f30cf0050052e62e50050051fa0d20050052e40282e3", - "0x51f72eb0050051f72ea0050051f70d20050052e92e70050051eb2e8005", - "0x51fa2f00050051fa2ef0050051f72ee0050051f72ed0050051f72ec005", - "0x51eb0d50050051eb2f40050051fa2f30050051fa0d20050052f22f1005", - "0xdf00500520f0e300500520f0dc0050d20050072f60d20050052f50d4005", - "0x282f90da0050051eb0282f80070070052f70310070052f700a0070052f7", - "0x420310052122fa0050051eb2fa0050051f32fa0050051f72fa005005205", - "0xb90050051f32fc0050051fa2fb0050051fa0510050051f90e100500520f", - "0x2fe0050051fa0bf0050051e92fd0050051f40670310052120b90050051eb", - "0xb900500520f3020050051fa3010050051fa3000050051fa2ff0050051fa", - "0xb60050052020b90050053043030050052020b90050051f70b9005005205", - "0xb60050051f73060310052123050050051eb3050050051f305100500521b", - "0x51fa2e80050051f70283093080050051fa3070050051f73030050051f7", - "0x51f730c0050051f70a90050052e930b0050051eb0a90050052e430a005", - "0x51fa00600500531030f0050051fa30e0050051fa30d00700522930b005", - "0x51fa3150050051fa3140050051fa3130050051fa3120050051fa311005", - "0x531b31a0050051fa3190050051fa3180050051fa3170050051fa316005", - "0x51eb02800726b0050071f01a00050051f302800719e0050071f0006005", - "0x71f000500719e0050071f031c0050051fa00500726b0050071f026b005", - "0x521226d0050051eb02800726d0050071f019c0050051f302800719a005", - "0x26d0050071f000500719a0050071f00960050051fc31d0050051f4069031", - "0x2760050071f02760050051eb0280072760050071f018c0050051f3005007", - "0x31e0050051eb1840050051eb02800731e0050071f00960050051ed005007", - "0x52020960050051eb0960050051ee31e0050051f400500731e0050071f0", - "0x280072780050071f01870050051f30960050051f70960050051e9096005", - "0x51ed1750050051e90050072780050071f01840050051f72780050051eb", - "0x31f0050071f031f0050051eb1740050051eb02800731f0050071f003c005", - "0x71f006803100521203c0050051ef03c0050051ee31f0050051f4005007", - "0x521b02800728a0050071f01770050051f328a0050051eb00500728a005", - "0x51fa0850050051f70283220283210850050051eb3200050051fa08e005", - "0x71f03260050051fa08b0050051fa3250050051fa3240050051fa323005", - "0x3290050051fa3280050051fa3270050051fa28b0050051eb00500728b005", - "0x2832f02832e32d0050051fa32c0050051fa32b0050051fa32a0050051fa", - "0x28b0050071f01710050051f33300050051fa0060310052120860050051fa", - "0x51fa0880050051fa3320050051fa3310050051fa08100500521b028007", - "0x51fa0850050051ef3350050051fa08a0050051fa3340050051fa333005", - "0x2833a08100508e0050073390283383370050051fa08c0050051fa336005", - "0x33e0050051fa33d0050051fa06f03100521233c0050051fa33b0050051fa", - "0x71f033f0050051fa2960050051eb0280072960050071f01640050051f3", - "0x3420050071f007d00500534114d0050051e93400050051fa005007296005", - "0x3420050051f40050073420050071f03420050051eb14b0050051eb028007", - "0x1500050051f329a0050051eb00500729a0050071f002834307f0050051ef", - "0x283442ae0050051e92ae00500520214e0050051f702800729a0050071f0", - "0x3450050051fa0430050051fa0090050051f72ae0050051f706f0050051f7", - "0x2b00050051eb0280072b00050071f01240050051f30050071220050071f0", - "0x3470310052120740050051eb0770050051e93460050051f4071031005212", - "0x1220050071f006f0050051e906f0050052050710050051e93470050051f4", - "0x2bc0050051fa0670050051fa0050072b00050071f03060050051fa028007", - "0x2834907403100521203c0050052d10283480420050051eb042005005202", - "0xfa0050051f302834b02834a2750050051fa2770050051fa2af0050051f7", - "0x420050051f70050072bd0050071f02bd0050051eb0280072bd0050071f0", - "0xcf00500734c0cf0050051ef0cf0050051f72fa0050051e92fa005005202", - "0xb90050051e92fd0050051eb0280072fd0050071f00bf0050051f3006005", - "0x51f700c0050052d102834d05b0050051e926c0050051f4075031005212", - "0x51ef0050072fd0050071f00590050051ef0510050051fc02834e0b4005", - "0x2834f0510050051ef0510050051ee0510050051ed3050050051e90b9005", - "0x71f031d0050051eb02800731d0050071f00960050051f33050050051f7", - "0x51fa08e00500c0050073390090050051eb2560050051fa00500731d005", - "0x51fa24b0050051fa24c0050051fa24f0050051fa2520050051fa253005", - "0x2310050051fa0283502420050051fa2460050051fa2490050051fa24a005", - "0x51f30280070750050071f00283520283512270050051fa22d0050051fa", - "0x51fa0050073460050071f03460050051eb0280073460050071f0077005", - "0x360050052050360050051f304000500520d0050070750050071f021d005", - "0x770310052120360050053540360050053530360050051eb0360050051f7", - "0x280073470050071f00710050051f33560050051fa02835504000500520f", - "0x51eb3570050051fa2190050051f70050073470050071f03470050051eb", - "0x51eb00c00535900500734c0320050320050073581a80050051fa032005", - "0x51eb2af0050051f300c00508400500734c032005359005007358359005", - "0x35b0050051f435b0050051eb35b00500535a0c00050810050073392af005", - "0x3600050051fa35f0050051fa35e0050051fa35d0050051fa35c0050051fa", - "0x1c60050051fa04e0050051fa04d0050051fa0300050051fa3610050051fa", - "0x5b0050051f30070050051fa0310050051fa04f0050051fa0920050051fa", - "0x500726c0050071f00050050051fa26c0050051eb02800726c0050071f0", - "0xa007363007005028007005028028363005028028028362346031005212", - "0x2800f00536300500b00503102802836300502800702809204f0070c900b", - "0x536300500a00504f02802836300502800b02801000536300503100500a", - "0x536104e1c600736300701000500f02800f00536300500f00509202800a", - "0x504e00501002801400536300500f005031028028363005028007028013", - "0x2801700536300503000504e02803000536300504d0051c602804d005363", - "0x50170050140283610053630051c6005013028018005363005014005092", - "0x500f00503102802836300502800702802802000502804d028360005363", - "0x9202835f00536300501c00501702801c00536300502803002801b005363", - "0x36300535f00501402836100536300501300501302801800536300501b005", - "0x2802836300502800702801f0050b935e005363007360005018028360005", - "0x5363005020005092028020005363005018005031028028363005028361", - "0x283630050280070280230050ac35c35d00736300735e00a007360028020", - "0x2d00509202835d00536300535d00504f02802d005363005020005031028", - "0x502800702808400531a0c035b00736300736100500f02802d005363005", - "0x130281a80053630050c000501002835900536300502d005031028028363", - "0x3630051a800501b02835900536300535900509202835b00536300535b005", - "0x2836300502800702835600525303235700736300735b00500f0281a8005", - "0x36300535c00535e02802836300503200535f02802836300535700501c028", - "0x50280200283640053630053590050310280283630051a800501f028028", - "0x35c02800c00536300500c00501b02800c00536300502835d028033005363", - "0x503c03600702d02803600536300502802302803c00536300500c033007", - "0x2835d00536300535d00504f02821900536300504000535b028040005363", - "0x52190050840280070053630050070050c0028364005363005364005092", - "0x535600501c02802836300502800702821900736435d00a005219005363", - "0x509202822700536300502835902821d005363005359005031028028363", - "0x722721d35d0313570282270053630052270051a802821d00536300521d", - "0x36300523100503102802836300502800702804804600732723122d007363", - "0x2800b0282420053630050280320280450053630051a80051c6028047005", - "0x35c00736300535c005364028246242007363005242005356028028363005", - "0x504f028246005363005246005033028047005363005047005092028249", - "0x3133524b24a00736300704524924600704700b00c02822d00536300522d", - "0x503102824a00536300524a00509202802836300502800702825224f24c", - "0x536300524200503302825300536300525300509202825300536300524a", - "0x2805805b00903133e05025825603136300735c24224b25300a03c028242", - "0x28256005363005256005092028028363005028361028028363005028007", - "0x36300505000501b02805c005363005028020028059005363005256005031", - "0x27727500736300526c00503602826c00536300505005c00735c028050005", - "0x505e00521d02805e005363005277005219028028363005275005040028", - "0x2822d00536300522d00504f02805f005363005060005227028060005363", - "0x505f0050840282580053630052580050c0028059005363005059005092", - "0x500900509202802836300502800702805f25805922d00a00505f005363", - "0x282af00536300505d00509202805d005363005009005031028009005363", - "0x8600502804d02804200536300505800522d0282bc00536300505b0050c0", - "0x36300524200523102802836300535c00535e028028363005028007028028", - "0x509202806700536300524c00503102824c00536300524c005092028028", - "0x536300525200522d0282bc00536300524f0050c00282af005363005067", - "0x504230600702d028306005363005028023028028363005028361028042", - "0x2822d00536300522d00504f02806800536300506900535b028069005363", - "0x50680050840282bc0053630052bc0050c00282af0053630052af005092", - "0x535c00535e0280283630050280070280682bc2af22d00a005068005363", - "0x280200280060053630050480050310280283630051a800501f028028363", - "0x2807100536300507100501b02807100536300502804602806f005363005", - "0x34707400702d02807400536300502802302834700536300507106f00735c", - "0x4600536300504600504f02807700536300507500535b028075005363005", - "0x770050840280070053630050070050c0028006005363005006005092028", - "0x8400501c02802836300502800702807700700604600a005077005363005", - "0x2002834600536300502d00503102802836300535c00535e028028363005", - "0x4300536300504300501b028043005363005028048028345005363005028", - "0x7900702d02807900536300502802302807a00536300504334500735c028", - "0x536300535d00504f02834200536300507f00535b02807f00536300507a", - "0x50840280070053630050070050c002834600536300534600509202835d", - "0x501c02802836300502800702834200734635d00a005342005363005342", - "0x7d00536300502300504f028081005363005020005031028028363005361", - "0x283630050280070280280bf00502804d028340005363005081005092028", - "0x2836300536100501c02802836300501f005047028028363005028361028", - "0x33f00509202807d00536300500a00504f02833f005363005018005031028", - "0x1b02833d00536300502804502833e005363005028020028340005363005", - "0x36300502802302833c00536300533d33e00735c02833d00536300533d005", - "0x2808c00536300533700535b02833700536300533c33b00702d02833b005", - "0x50070050c002834000536300534000509202807d00536300507d00504f", - "0x2800702808c00734007d00a00508c00536300508c005084028007005363", - "0x20028336005363005092005031028028363005031005242028028363005", - "0x8a00536300508a00501b02808a005363005028046028335005363005028", - "0x33300702d02833300536300502802302833400536300508a33500735c028", - "0x536300504f00504f02833200536300508800535b028088005363005334", - "0x50840280070053630050070050c002833600536300533600509202804f", - "0x700502802836300502802802833200733604f00a005332005363005332", - "0x503102802836300502800702809204f00729500b00a007363007005028", - "0x536300500a00504f02801000536300503100500a02800f00536300500b", - "0x52ce04e1c600736300701000500f02800f00536300500f00509202800a", - "0x36300504e00535f0280283630051c600501c028028363005028007028013", - "0x502835d02804d00536300502802002801400536300500f005031028028", - "0x1700536300503004d00735c02803000536300503000501b028030005363", - "0x36100535b02836100536300501701800702d028018005363005028023028", - "0x1400536300501400509202800a00536300500a00504f028360005363005", - "0x1400a00a0053600053630053600050840280070053630050070050c0028", - "0x500f00503102802836300501300501c028028363005028007028360007", - "0x1a802801b00536300501b00509202801c00536300502835902801b005363", - "0x1f00715035e35f00736300701c01b00a03135702801c00536300501c005", - "0x36300502824602835d00536300535e005031028028363005028007028020", - "0x36002835d00536300535d00509202835c00536300535c00501b02835c005", - "0x503102802836300502800702835b0052a402d02300736300735c35f007", - "0x283590053630050282490280840053630050280320280c000536300535d", - "0x509202835702d00736300502d0053640281a8084007363005084005356", - "0x536300535900501b0281a80053630051a80050330280c00053630050c0", - "0x73630073593571a80070c000b00c02802300536300502300504f028359", - "0x536300503200509202802836300502800702800c033364031126356032", - "0x3c00509202803600536300502824a02803c005363005032005031028032", - "0x3600536300503600501b02808400536300508400503302803c005363005", - "0x702822d22721d03112421904000736300703602d08435603c00b00c028", - "0x231005363005040005031028040005363005040005092028028363005028", - "0x48005040028047048007363005046005036028046005363005028020028", - "0x2824200536300504500521d028045005363005047005219028028363005", - "0x523100509202802300536300502300504f028246005363005242005227", - "0x52460053630052460050840282190053630052190050c0028231005363", - "0x2821d00536300521d00509202802836300502800702824621923102300a", - "0x524900509202824a00536300502300504f02824900536300521d005031", - "0x2824f00536300522d00522d02824c0053630052270050c002824b005363", - "0x35e02802836300508400523102802836300502800702802829f00502804d", - "0x536300536400503102836400536300536400509202802836300502d005", - "0x50c002824b00536300525200509202824a00536300502300504f028252", - "0x2802829f00502804d02824f00536300500c00522d02824c005363005033", - "0x25600536300502802002825300536300535d005031028028363005028007", - "0x25825600735c02825800536300525800501b02825800536300502824b028", - "0x24b00536300525300509202824a00536300535b00504f028050005363005", - "0x502802302824f00536300505000522d02824c0053630050070050c0028", - "0x5800536300505b00535b02805b00536300524f00900702d028009005363", - "0x24c0050c002824b00536300524b00509202824a00536300524a00504f028", - "0x702805824c24b24a00a00505800536300505800508402824c005363005", - "0x2805c005363005028020028059005363005020005031028028363005028", - "0x526c05c00735c02826c00536300526c00501b02826c005363005028046", - "0x2805e00536300527527700702d028277005363005028023028275005363", - "0x505900509202801f00536300501f00504f02806000536300505e00535b", - "0x50600053630050600050840280070053630050070050c0028059005363", - "0x3102802836300503100524202802836300502800702806000705901f00a", - "0x2af00536300502804602805d00536300502802002805f005363005092005", - "0x280230282bc0053630052af05d00735c0282af0053630052af00501b028", - "0x536300506700535b0280670053630052bc04200702d028042005363005", - "0x50c002805f00536300505f00509202804f00536300504f00504f028306", - "0x2830600705f04f00a005306005363005306005084028007005363005007", - "0x2802836300502824f02809200536300502824c02800b00536300502824c", - "0x2804e1c600736501000f007363007005028007005028028363005028028", - "0x536300503100500a028013005363005010005031028028363005028007", - "0x501300509202800f00536300500f00504f02802836300502800b028014", - "0x36300502800702801700518703004d00736300701400500f028013005363", - "0x51c6028361005363005030005010028018005363005013005031028028", - "0x536300501800509202801b00536300536000504e028360005363005361", - "0x2804d02835e00536300501b00501402835f00536300504d00501302801c", - "0x2803002801f005363005013005031028028363005028007028028192005", - "0x1c00536300501f00509202835d005363005020005017028020005363005", - "0x35e00501802835e00536300535d00501402835f005363005017005013028", - "0x2802836300502836102802836300502800702835c00536604f005363007", - "0x2300509202804f00536300504f09200725202802300536300501c005031", - "0x280070280c000536735b02d00736300704f00f007253028023005363005", - "0x2802d00536300502d00504f028084005363005023005031028028363005", - "0x283570053681a835900736300735f00500f028084005363005084005092", - "0x53630051a8005010028032005363005084005031028028363005028007", - "0xb02835600536300500a0051c602800a00536300500a00b00725202800a", - "0x32005363005032005092028359005363005359005013028028363005028", - "0x3102802836300502800702800c00525703336400736300735900500f028", - "0x36300503c00509202803600536300503300525602803c005363005032005", - "0x4d02821d005363005036005258028219005363005364005013028040005", - "0x3002822700536300503200503102802836300502800702802824d005028", - "0x536300522700509202823100536300522d00505002822d005363005028", - "0x500902821d00536300523100525802821900536300500c005013028040", - "0x2836300502836102802836300502800702804800536904600536300721d", - "0x5028020028045005363005046005010028047005363005040005031028", - "0x282490053630050450051c6028246005363005219005219028242005363", - "0x524600505b02804700536300504700509202802d00536300502d00504f", - "0x2824900536300524900501b02824200536300524200522d028246005363", - "0x536300724c00505902824c24b24a03136300524924224604702d00b058", - "0x5c02825300536300524b00503102802836300502800702825200536a24f", - "0x725800526c02825300536300525300509202825825600736300524f005", - "0x5b00536300525300503102802836300502800702800900536b050005363", - "0x5800500f02805b00536300505b00509202805800536300525600500a028", - "0x36300505900501c02802836300502800702826c00520705c059007363007", - "0x535600501f02802836300505000504002802836300505c00535f028028", - "0x2802002827500536300505b00503102802836300535b005275028028363", - "0x2805e00536300505e00501b02805e00536300502835d028277005363005", - "0x6005f00702d02805f00536300502802302806000536300505e27700735c", - "0x24a00536300524a00504f0282af00536300505d00535b02805d005363005", - "0x2af0050840280070053630050070050c0028275005363005275005092028", - "0x26c00501c0280283630050280070282af00727524a00a0052af005363005", - "0x920280420053630050283590282bc00536300505b005031028028363005", - "0x422bc24a0313570280420053630050420051a80282bc0053630052bc005", - "0x530600503102802836300502800702806806900736c306067007363007", - "0x2802836300506f00504002807106f007363005050005036028006005363", - "0x506700504f028006005363005006005092028347005363005071005219", - "0x34603136d07707507403136300734735635b00700600b277028067005363", - "0x74005031028074005363005074005092028028363005028007028043345", - "0x7f00536300507900522702807900536300507700521d02807a005363005", - "0x750050c002807a00536300507a00509202806700536300506700504f028", - "0x702807f07507a06700a00507f00536300507f005084028075005363005", - "0x342005363005346005031028346005363005346005092028028363005028", - "0x7d00535b02807d00536300504308100702d028081005363005028023028", - "0x34200536300534200509202806700536300506700504f028340005363005", - "0x34206700a0053400053630053400050840283450053630053450050c0028", - "0x535600501f028028363005050005040028028363005028007028340345", - "0x2802002833f00536300506800503102802836300535b005275028028363", - "0x2833d00536300533d00501b02833d00536300502804602833e005363005", - "0x33c33b00702d02833b00536300502802302833c00536300533d33e00735c", - "0x6900536300506900504f02808c00536300533700535b028337005363005", - "0x8c0050840280070053630050070050c002833f00536300533f005092028", - "0x900504702802836300502800702808c00733f06900a00508c005363005", - "0x527502802836300535600501f028028363005256005242028028363005", - "0x33500536300524a00504f02833600536300525300503102802836300535b", - "0x2836300502800702802836e00502804d02808a005363005336005092028", - "0x36300524b00503102802836300535600501f02802836300535b005275028", - "0x9202824a00536300524a00504f02833300536300525200535b028334005", - "0x3630053330050840280070053630050070050c0028334005363005334005", - "0x2836300502836102802836300502800702833300733424a00a005333005", - "0x36300535b00527502802836300535600501f028028363005048005047028", - "0x2d00504f02808800536300504000503102802836300521900501c028028", - "0x2833200536300502802002808a005363005088005092028335005363005", - "0x533133200735c02833100536300533100501b02833100536300502805e", - "0x2808e00536300533008600702d028086005363005028023028330005363", - "0x508a00509202833500536300533500504f02836f00536300508e00535b", - "0x536f00536300536f0050840280070053630050070050c002808a005363", - "0x27502802836300535700501c02802836300502800702836f00708a33500a", - "0x32d00536300508400503102802836300500b00506002802836300535b005", - "0x36300532b00501b02832b00536300502804802832c005363005028020028", - "0x2d02832900536300502802302832a00536300532b32c00735c02832b005", - "0x502d00504f02832700536300532800535b02832800536300532a329007", - "0x280070053630050070050c002832d00536300532d00509202802d005363", - "0x2802836300502800702832700732d02d00a005327005363005327005084", - "0x536300502300503102802836300500b00506002802836300535f00501c", - "0x2804d02832500536300532600509202808b0053630050c000504f028326", - "0x535c005047028028363005028361028028363005028007028028370005", - "0x9200506002802836300500b00506002802836300535f00501c028028363", - "0x2808b00536300500f00504f02832400536300501c005031028028363005", - "0x5363005028045028323005363005028020028325005363005324005092", - "0x2302808500536300532032300735c02832000536300532000501b028320", - "0x36300509500535b02809500536300508509300702d028093005363005028", - "0xc002832500536300532500509202808b00536300508b00504f02831f005", - "0x31f00732508b00a00531f00536300531f005084028007005363005007005", - "0x2836300500b005060028028363005092005060028028363005028007028", - "0x36300502802002809800536300504e005031028028363005031005242028", - "0x735c02809600536300509600501b02809600536300502804602831e005", - "0x36300531d31c00702d02831c00536300502802302831d00536300509631e", - "0x920281c60053630051c600504f02831900536300531a00535b02831a005", - "0x3630053190050840280070053630050070050c0028098005363005098005", - "0x36300502805d02800b00536300502805f0283190070981c600a005319005", - "0x502824c02804e00536300502824c0280100053630050282af028092005", - "0x2824f02801800536300502824c02803000536300502824c028014005363", - "0x371360361007363007005028007005028028363005028028028028363005", - "0x500a02835f00536300536000503102802836300502800702801c01b007", - "0x2836100536300536100504f02802836300502800b02835e005363005031", - "0x2835d00537202001f00736300735e00500f02835f00536300535f005092", - "0x536300502000501002835c00536300535f005031028028363005028007", - "0x509202835b00536300502d00504e02802d0053630050230051c6028023", - "0x536300535b00501402808400536300501f0050130280c000536300535c", - "0x536300535f00503102802836300502800702802837300502804d028359", - "0x1a80050920280320053630053570050170283570053630050280300281a8", - "0x35900536300503200501402808400536300535d0050130280c0005363005", - "0x283610280283630050280070283560053741c6005363007359005018028", - "0x1c60053630051c604e0072520283640053630050c0005031028028363005", - "0x537500c0330073630071c6361007253028364005363005364005092028", - "0x503300504f02803600536300536400503102802836300502800702803c", - "0x21904000736300708400500f028036005363005036005092028033005363", - "0x501002822700536300503600503102802836300502800702821d005376", - "0x36300504d0051c602804d00536300504d03000725202804d005363005219", - "0x22700509202804000536300504000501302802836300502800b02822d005", - "0x502800702804800537704623100736300704000500f028227005363005", - "0x92028045005363005046005256028047005363005227005031028028363", - "0x363005045005258028246005363005231005013028242005363005047005", - "0x36300522700503102802836300502800702802837800502804d028249005", - "0x509202824c00536300524b00505002824b00536300502803002824a005", - "0x536300524c00525802824600536300504800501302824200536300524a", - "0x3102802836300502800702825200537924f005363007249005009028249", - "0x536300502802002825600536300524f005010028253005363005242005", - "0x504f0280090053630052560051c6028050005363005246005219028258", - "0x536300505000505b028253005363005253005092028033005363005033", - "0xb05802800900536300500900501b02825800536300525800522d028050", - "0x37a05c00536300705900505902805905805b031363005009258050253033", - "0x5c00505c02827500536300505800503102802836300502800702826c005", - "0x536300705e00526c02827500536300527500509202805e277007363005", - "0xa02805f00536300527500503102802836300502800702806000537b00f", - "0x536300500f0100072bc02802836300502800b02805d005363005277005", - "0x537c2bc2af00736300705d00500f02805f00536300505f00509202800f", - "0x52bc00501002806700536300505f005031028028363005028007028042", - "0x2806800536300506900504e0280690053630053060051c6028306005363", - "0x506800501402806f0053630052af005013028006005363005067005092", - "0x505f00503102802836300502800702802837d00502804d028071005363", - "0x92028075005363005074005017028074005363005028030028347005363", - "0x36300507500501402806f005363005042005013028006005363005347005", - "0x2802836300502800702807700537e013005363007071005018028071005", - "0x363005013014007252028346005363005006005031028028363005028361", - "0x4334500736300701305b007253028346005363005346005092028013005", - "0x504f02807900536300534600503102802836300502800702807a00537f", - "0x736300706f00500f028079005363005079005092028345005363005345", - "0x2807d00536300507900503102802836300502800702808100538034207f", - "0x170051c6028017005363005017018007252028017005363005342005010", - "0x9202807f00536300507f00501302802836300502800b028340005363005", - "0x702833d00538133e33f00736300707f00500f02807d00536300507d005", - "0x33b00536300533e00525602833c00536300507d005031028028363005028", - "0x33b00525802808c00536300533f00501302833700536300533c005092028", - "0x7d00503102802836300502800702802838200502804d028336005363005", - "0x2833400536300508a00505002808a005363005028030028335005363005", - "0x533400525802808c00536300533d005013028337005363005335005092", - "0x28363005028007028088005383333005363007336005009028336005363", - "0x363005333005010028332005363005337005031028028363005028361028", - "0x51c602808600536300508c005219028330005363005028020028331005", - "0x536300533200509202834500536300534500504f02808e005363005331", - "0x501b02833000536300533000522d02808600536300508600505b028332", - "0x2832c32d36f03136300508e33008633234500b05802808e00536300508e", - "0x32d00503102802836300502800702832a00538432b00536300732c005059", - "0x536300532900509202832732800736300532b00505c028329005363005", - "0x3102802836300502800702808b00538532600536300732700526c028329", - "0x36300532500509202832400536300532800500a028325005363005329005", - "0x2836300502800702808500538632032300736300732400500f028325005", - "0x36300504300527502802836300532000535f02802836300532300501c028", - "0x532600504002802836300509200506702802836300500b005042028028", - "0x22d00501f02802836300500f00504002802836300534000501f028028363", - "0x2002809300536300532500503102802836300500c005275028028363005", - "0x31f00536300531f00501b02831f00536300502835d028095005363005028", - "0x31e00702d02831e00536300502802302809800536300531f09500735c028", - "0x536300536f00504f02831d00536300509600535b028096005363005098", - "0x50840280070053630050070050c002809300536300509300509202836f", - "0x501c02802836300502800702831d00709336f00a00531d00536300531d", - "0x2831a00536300502835902831c005363005325005031028028363005085", - "0x31c36f03135702831a00536300531a0051a802831c00536300531c005092", - "0x31800503102802836300502800702831631700738731831900736300731a", - "0x2836300531400504002831331400736300500f005036028315005363005", - "0x31900504f028315005363005315005092028312005363005313005219028", - "0x3138830e30f31103136300731222d00c00731500b277028319005363005", - "0x503102831100536300531100509202802836300502800702830b0a930c", - "0x3630050ac00504002830a0ac0073630053260050360280b0005363005311", - "0x505b0280b00053630050b000509202830800536300530a005219028028", - "0x38904f00a0b403136300730834004330f0b000b27702830e00536300530e", - "0x310280b40053630050b40050920280283630050280070280b93050b6031", - "0x536300531900504f0283020053630050280200283030053630050b4005", - "0x505b02830200536300530200522d028303005363005303005092028319", - "0x504f09200706902800a00536300500a00b00730602830e00536300530e", - "0x2ff0050060282ff30030103136300530e30230331900a06802804f005363", - "0x53630053000050310280283630050280070280bf00538a2fe005363007", - "0x504f0280283630052fb0050470282fb2fc0073630052fe00506f0282fd", - "0x53630052fc00522d0282fd0053630052fd005092028301005363005301", - "0x5103136300504f2fc2fd30100a06802804f00536300504f00505b0282fc", - "0x280283630050280070280dc00538e38d00536300738c00500602838c38b", - "0x36300538d00506f0280c700536300502802002838f00536300538b005031", - "0x280cf0cb0073630050c60050360280283630050c90050470280c90c6007", - "0x52fa0053470282fa0cf0073630050cf0050710280283630050cb005040", - "0x2830700536300530700501b028307005363005390005074028390005363", - "0x5100504f0282f40053630050cf0052190283910053630053070c700735c", - "0x2f40053630052f400505b02838f00536300538f005092028051005363005", - "0x2f30d40313630053912f438f05100a07502839100536300539100522d028", - "0x310280283630050280070282f10053933920053630070d50050060280d5", - "0x50da0050470280da2ea00736300539200506f0282f00053630052f3005", - "0x2190280283630052e70050400282e52e70073630052ea005036028028363", - "0x3630052e80052270282e80053630050d200521d0280d20053630052e5005", - "0xc00282f00053630052f00050920280d40053630050d400504f0280db005", - "0xdb00a2f00d400a0050db0053630050db00508402800a00536300500a005", - "0x3630052f100535b0282ef0053630052f3005031028028363005028007028", - "0xc00282ef0053630052ef0050920280d40053630050d400504f0282e2005", - "0x2e200a2ef0d400a0052e20053630052e200508402800a00536300500a005", - "0x3630050dc0050770282e100536300538b005031028028363005028007028", - "0x920282ee00536300505100504f0280283630052e00053460280df2e0007", - "0x3630050df00522d0282ec00536300500a0050c00280e10053630052e1005", - "0x36300504f00524202802836300502800702802839400502804d0282eb005", - "0x3460282de2ed0073630050bf0050770280e3005363005300005031028028", - "0x53630050e30050920282ee00536300530100504f0280283630052ed005", - "0x2804d0282eb0053630052de00522d0282ec00536300500a0050c00280e1", - "0xb00504202802836300530e005242028028363005028007028028394005", - "0x310280b60053630050b6005092028028363005092005067028028363005", - "0x3630052d60050920282ee00536300531900504f0282d60053630050b6005", - "0x4d0282eb0053630050b900522d0282ec0053630053050050c00280e1005", - "0x5042028028363005043005275028028363005028007028028394005028", - "0x1f02802836300532600504002802836300509200506702802836300500b", - "0x536300530c00503102830c00536300530c005092028028363005340005", - "0x50c00280e10053630052d80050920282ee00536300531900504f0282d8", - "0x2d30053630050280230282eb00536300530b00522d0282ec0053630050a9", - "0x504f0280e90053630052d200535b0282d20053630052eb2d300702d028", - "0x53630052ec0050c00280e10053630050e10050920282ee0053630052ee", - "0x3630050280070280e92ec0e12ee00a0050e90053630050e90050840282ec", - "0x509200506702802836300500b005042028028363005043005275028028", - "0xf00504002802836300534000501f028028363005326005040028028363", - "0x503102802836300500c00527502802836300522d00501f028028363005", - "0x282cd0053630050280460282ce0053630050280200282d0005363005316", - "0x50280230282ca0053630052cd2ce00735c0282cd0053630052cd00501b", - "0x2c90053630050f000535b0280f00053630052ca0ec00702d0280ec005363", - "0x70050c00282d00053630052d000509202831700536300531700504f028", - "0x70282c90072d031700a0052c90053630052c9005084028007005363005", - "0x27502802836300532800524202802836300508b005047028028363005028", - "0x2802836300509200506702802836300500b005042028028363005043005", - "0x2836300522d00501f02802836300500f00504002802836300534000501f", - "0x536f00504f0282c600536300532900503102802836300500c005275028", - "0x2800702802839500502804d0282c40053630052c60050920282c5005363", - "0x504202802836300504300527502802836300500c005275028028363005", - "0x4002802836300534000501f02802836300509200506702802836300500b", - "0x2c300536300532d00503102802836300522d00501f02802836300500f005", - "0x2c300509202836f00536300536f00504f0282c200536300532a00535b028", - "0x2c20053630052c20050840280070053630050070050c00282c3005363005", - "0x470280283630050283610280283630050280070282c20072c336f00a005", - "0x2802836300500c00527502802836300500f005040028028363005088005", - "0x2836300509200506702802836300500b005042028028363005043005275", - "0x36300508c00501c02802836300534000501f02802836300522d00501f028", - "0x50920282c500536300534500504f0282c1005363005337005031028028", - "0x280f80053630050283450282be0053630050280200282c40053630052c1", - "0x50280230280fa0053630050f82be00735c0280f80053630050f800501b", - "0x2ba0053630052bb00535b0282bb0053630050fa2bd00702d0282bd005363", - "0x70050c00282c40053630052c40050920282c50053630052c500504f028", - "0x70282ba0072c42c500a0052ba0053630052ba005084028007005363005", - "0x27502802836300500f00504002802836300508100501c028028363005028", - "0x2802836300500b00504202802836300504300527502802836300500c005", - "0x2836300501800506002802836300522d00501f028028363005092005067", - "0x3630050280430280fe0053630050280200280fc005363005079005031028", - "0x280fb0053630050fd0fe00735c0280fd0053630050fd00501b0280fd005", - "0x52b800535b0282b80053630050fb2b900702d0282b9005363005028023", - "0x280fc0053630050fc00509202834500536300534500504f028104005363", - "0x70fc34500a0051040053630051040050840280070053630050070050c0", - "0x36300500c00527502802836300500f005040028028363005028007028104", - "0x509200506702802836300500b005042028028363005018005060028028", - "0x34600503102802836300506f00501c02802836300522d00501f028028363", - "0x10300536300510600509202810500536300507a00504f028106005363005", - "0x4702802836300502836102802836300502800702802839600502804d028", - "0x2802836300500c00527502802836300500f005040028028363005077005", - "0x2836300509200506702802836300500b005042028028363005018005060", - "0x36300501400506002802836300506f00501c02802836300522d00501f028", - "0x509202810500536300505b00504f0282b7005363005006005031028028", - "0x2810c00536300502807a0282b60053630050280200281030053630052b7", - "0x502802302810d00536300510c2b600735c02810c00536300510c00501b", - "0x2500536300510e00535b02810e00536300510d10b00702d02810b005363", - "0x70050c002810300536300510300509202810500536300510500504f028", - "0x702802500710310500a005025005363005025005084028007005363005", - "0x6002802836300500c005275028028363005060005047028028363005028", - "0x2802836300509200506702802836300500b005042028028363005018005", - "0x2836300527700524202802836300501400506002802836300522d00501f", - "0x505b00504f0282b4005363005275005031028028363005010005079028", - "0x2800702802839700502804d0281160053630052b4005092028114005363", - "0x504202802836300501800506002802836300500c005275028028363005", - "0x6002802836300522d00501f02802836300509200506702802836300500b", - "0x115005363005058005031028028363005010005079028028363005014005", - "0x11500509202805b00536300505b00504f02811300536300526c00535b028", - "0x1130053630051130050840280070053630050070050c0028115005363005", - "0x4702802836300502836102802836300502800702811300711505b00a005", - "0x2802836300500c005275028028363005010005079028028363005252005", - "0x2836300509200506702802836300500b005042028028363005018005060", - "0x36300524600501c02802836300501400506002802836300522d00501f028", - "0x509202811400536300503300504f0282b3005363005242005031028028", - "0x2811c00536300502805e0281200053630050280200281160053630052b3", - "0x502802302811b00536300511c12000735c02811c00536300511c00501b", - "0x12400536300512200535b02812200536300511b2b200702d0282b2005363", - "0x70050c002811600536300511600509202811400536300511400504f028", - "0x702812400711611400a005124005363005124005084028007005363005", - "0x27502802836300501000507902802836300521d00501c028028363005028", - "0x2802836300500b00504202802836300501800506002802836300500c005", - "0x28363005030005060028028363005014005060028028363005092005067", - "0x3630050280480282ae0053630050280200282b0005363005036005031028", - "0x282ac0053630052ad2ae00735c0282ad0053630052ad00501b0282ad005", - "0x512900535b0281290053630052ac12700702d028127005363005028023", - "0x282b00053630052b000509202803300536300503300504f028128005363", - "0x72b003300a0051280053630051280050840280070053630050070050c0", - "0x363005030005060028028363005010005079028028363005028007028128", - "0x509200506702802836300500b005042028028363005018005060028028", - "0x36400503102802836300501400506002802836300508400501c028028363", - "0x2a90053630051260050920282ab00536300503c00504f028126005363005", - "0x4702802836300502836102802836300502800702802839800502804d028", - "0x28028363005030005060028028363005010005079028028363005356005", - "0x2836300509200506702802836300500b005042028028363005018005060", - "0x36300504e00506002802836300501400506002802836300508400501c028", - "0x50920282ab00536300536100504f02812f0053630050c0005031028028", - "0x282a800536300502804502812e0053630050280200282a900536300512f", - "0x50280230281340053630052a812e00735c0282a80053630052a800501b", - "0x2a50053630052a700535b0282a700536300513413300702d028133005363", - "0x70050c00282a90053630052a90050920282ab0053630052ab00504f028", - "0x70282a50072a92ab00a0052a50053630052a5005084028007005363005", - "0x60028028363005030005060028028363005010005079028028363005028", - "0x2802836300509200506702802836300500b005042028028363005018005", - "0x2836300503100524202802836300501400506002802836300504e005060", - "0x3630050280460281390053630050280200282a400536300501c005031028", - "0x2813a00536300513b13900735c02813b00536300513b00501b02813b005", - "0x52a300535b0282a300536300513a13800702d028138005363005028023", - "0x282a40053630052a400509202801b00536300501b00504f0282a2005363", - "0x72a401b00a0052a20053630052a20050840280070053630050070050c0", - "0x4f00739900b00a0073630070050280070050280283630050280280282a2", - "0x503100500a02800f00536300500b005031028028363005028007028092", - "0x509202800a00536300500a00504f02802836300502800b028010005363", - "0x2800702801300539a04e1c600736300701000500f02800f00536300500f", - "0x2804d00536300504e00501002801400536300500f005031028028363005", - "0x501400509202801700536300503000504e02803000536300504d0051c6", - "0x283600053630050170050140283610053630051c6005013028018005363", - "0x2801b00536300500f00503102802836300502800702802839b00502804d", - "0x36300501b00509202835f00536300501c00501702801c005363005028030", - "0x1802836000536300535f005014028361005363005013005013028018005", - "0x36300502836102802836300502800702801f00539c35e005363007360005", - "0x707f028020005363005020005092028020005363005018005031028028", - "0x2000503102802836300502800702802300539d35c35d00736300735e00a", - "0x2d00536300502d00509202835d00536300535d00504f02802d005363005", - "0x3102802836300502800702808400539e0c035b00736300736100500f028", - "0x3630051a80051c60281a80053630050c000501002835900536300502d005", - "0x35b00501302835700536300535700501b02802836300502800b028357005", - "0x39f02836300735700534202835900536300535900509202835b005363005", - "0x5028030028356005363005359005031028028363005028007028032005", - "0x2800c005363005356005092028033005363005364005081028364005363", - "0x280283630050280070280283a000502804d02803c00536300503300507d", - "0x5363005028030028036005363005359005031028028363005032005340", - "0x507d02800c00536300503600509202821900536300504000533f028040", - "0x2800702822d0053a122721d00736300735b00500f02803c005363005219", - "0x22700535f02802836300521d00501c028028363005028361028028363005", - "0x503102802836300535c00533d02802836300503c00533e028028363005", - "0x2804800536300502835d02804600536300502802002823100536300500c", - "0x502802302804700536300504804600735c02804800536300504800501b", - "0x24600536300524200535b02824200536300504704500702d028045005363", - "0x70050c002823100536300523100509202835d00536300535d00504f028", - "0x702824600723135d00a005246005363005246005084028007005363005", - "0x2824900536300500c00503102802836300522d00501c028028363005028", - "0x36300524a0051a802824900536300524900509202824a005363005028359", - "0x2800702825224f0073a224c24b00736300724a24935d03135702824a005", - "0x533c02825300536300524c005031028028363005028361028028363005", - "0x25300536300525300509202825800536300502833b02825600536300503c", - "0x25600507d02835c00536300535c0053370280070053630050070050c0028", - "0x4f02805b00905003136300525635c25800725300b08c028256005363005", - "0x280070280590053a305800536300705b00533602824b00536300524b005", - "0x2002805c005363005050005031028028363005058005335028028363005", - "0x36300527500504002827727500736300526c00503602826c005363005028", - "0x522702806000536300505e00521d02805e005363005277005219028028", - "0x536300505c00509202824b00536300524b00504f02805f005363005060", - "0x24b00a00505f00536300505f0050840280090053630050090050c002805c", - "0x535b02805d00536300505000503102802836300502800702805f00905c", - "0x536300505d00509202824b00536300524b00504f0282af005363005059", - "0x24b00a0052af0053630052af0050840280090053630050090050c002805d", - "0x503c00533e0280283630050283610280283630050280070282af00905d", - "0x280200282bc00536300525200503102802836300535c00533d028028363", - "0x2806700536300506700501b028067005363005028046028042005363005", - "0x30606900702d02806900536300502802302830600536300506704200735c", - "0x24f00536300524f00504f02800600536300506800535b028068005363005", - "0x60050840280070053630050070050c00282bc0053630052bc005092028", - "0x8400501c0280283630050280070280060072bc24f00a005006005363005", - "0x2002806f00536300502d00503102802836300535c00533d028028363005", - "0x34700536300534700501b028347005363005028048028071005363005028", - "0x7500702d02807500536300502802302807400536300534707100735c028", - "0x536300535d00504f02834600536300507700535b028077005363005074", - "0x50840280070053630050070050c002806f00536300506f00509202835d", - "0x501c02802836300502800702834600706f35d00a005346005363005346", - "0x4300536300502300504f028345005363005020005031028028363005361", - "0x283630050280070280283a400502804d02807a005363005345005092028", - "0x2836300536100501c02802836300501f005047028028363005028361028", - "0x7900509202804300536300500a00504f028079005363005018005031028", - "0x1b02834200536300502804502807f00536300502802002807a005363005", - "0x36300502802302808100536300534207f00735c028342005363005342005", - "0x2833f00536300534000535b02834000536300508107d00702d02807d005", - "0x50070050c002807a00536300507a00509202804300536300504300504f", - "0x2800702833f00707a04300a00533f00536300533f005084028007005363", - "0x2002833e005363005092005031028028363005031005242028028363005", - "0x33c00536300533c00501b02833c00536300502804602833d005363005028", - "0x33700702d02833700536300502802302833b00536300533c33d00735c028", - "0x536300504f00504f02833600536300508c00535b02808c00536300533b", - "0x50840280070053630050070050c002833e00536300533e00509202804f", - "0x700502802836300502802802833600733e04f00a005336005363005336", - "0x503102802836300502800702809204f0073a500b00a007363007005028", - "0x536300500a00504f02801000536300503100500a02800f00536300500b", - "0x53a604e1c600736300701000500f02800f00536300500f00509202800a", - "0x36300504e00535f0280283630051c600501c028028363005028007028013", - "0x502835d02804d00536300502802002801400536300500f005031028028", - "0x1700536300503004d00735c02803000536300503000501b028030005363", - "0x36100535b02836100536300501701800702d028018005363005028023028", - "0x1400536300501400509202800a00536300500a00504f028360005363005", - "0x1400a00a0053600053630053600050840280070053630050070050c0028", - "0x500f00503102802836300501300501c028028363005028007028360007", - "0x1a802801b00536300501b00509202801c00536300502835902801b005363", - "0x1f0073a735e35f00736300701c01b00a03135702801c00536300501c005", - "0x36300502808a02835d00536300535e005031028028363005028007028020", - "0x2803202802d00536300502833302802300536300535c00533402835c005", - "0x35b00536300535b00503302835d00536300535d00509202835b005363005", - "0x35f00504f02802d00536300502d00501b028023005363005023005088028", - "0x3590313a80840c000736300702d02335b00735d00b00c02835f005363005", - "0xc00050310280c00053630050c00050920280283630050280070283571a8", - "0x33364007363005356005036028356005363005028020028032005363005", - "0x500c00521d02800c005363005033005219028028363005364005040028", - "0x2835f00536300535f00504f02803600536300503c00522702803c005363", - "0x50360050840280840053630050840050c0028032005363005032005092", - "0x535900509202802836300502800702803608403235f00a005036005363", - "0x2d028219005363005028023028040005363005359005031028359005363", - "0x535f00504f02822700536300521d00535b02821d005363005357219007", - "0x281a80053630051a80050c002804000536300504000509202835f005363", - "0x280283630050280070282271a804035f00a005227005363005227005084", - "0x536300502804602823100536300502802002822d005363005020005031", - "0x2302804800536300504623100735c02804600536300504600501b028046", - "0x36300504500535b02804500536300504804700702d028047005363005028", - "0xc002822d00536300522d00509202801f00536300501f00504f028242005", - "0x24200722d01f00a005242005363005242005084028007005363005007005", - "0x5363005092005031028028363005031005242028028363005028007028", - "0x524a00501b02824a005363005028046028249005363005028020028246", - "0x2824c00536300502802302824b00536300524a24900735c02824a005363", - "0x4f00504f02825200536300524f00535b02824f00536300524b24c00702d", - "0x70053630050070050c002824600536300524600509202804f005363005", - "0x2836300502802802825200724604f00a005252005363005252005084028", - "0x2836300502800702809204f0073a900b00a007363007005028007005028", - "0x502800b02801000536300503100500a02800f00536300500b005031028", - "0xf02800f00536300500f00509202800a00536300500a00504f028028363", - "0xf0050310280283630050280070280130053aa04e1c6007363007010005", - "0x3000536300504d0051c602804d00536300504e005010028014005363005", - "0x1c600501302801800536300501400509202801700536300503000504e028", - "0x70280283ab00502804d028360005363005017005014028361005363005", - "0x2801c00536300502803002801b00536300500f005031028028363005028", - "0x501300501302801800536300501b00509202835f00536300501c005017", - "0x3ac35e00536300736000501802836000536300535f005014028361005363", - "0x36300501800503102802836300502836102802836300502800702801f005", - "0x35c35d00736300735e00a007253028020005363005020005092028020005", - "0x2800b02802d0053630050200050310280283630050280070280230053ad", - "0x2802d00536300502d00509202835d00536300535d00504f028028363005", - "0x50310280283630050280070280840053ae0c035b00736300736100500f", - "0x53630051a80051c60281a80053630050c000501002835900536300502d", - "0x501302835600536300535900509202803200536300535700504e028357", - "0x280283af00502804d02803300536300503200501402836400536300535b", - "0x3c00536300502803002800c00536300502d005031028028363005028007", - "0x8400501302835600536300500c00509202803600536300503c005017028", - "0x40005363007033005018028033005363005036005014028364005363005", - "0x509202821d0053630053560050310280283630050280070282190053b0", - "0x70282310053b122d22700736300704035d00707f02821d00536300521d", - "0x22700536300522700504f02804600536300521d005031028028363005028", - "0x450053b204704800736300736400500f028046005363005046005092028", - "0x2802836300504800501c028028363005028361028028363005028007028", - "0x2836300535c00527502802836300522d00533d02802836300504700535f", - "0x36300502835d028246005363005028020028242005363005046005031028", - "0x2824a00536300524924600735c02824900536300524900501b028249005", - "0x524c00535b02824c00536300524a24b00702d02824b005363005028023", - "0x2824200536300524200509202822700536300522700504f02824f005363", - "0x724222700a00524f00536300524f0050840280070053630050070050c0", - "0x36300504600503102802836300504500501c02802836300502800702824f", - "0x51a8028252005363005252005092028253005363005028359028252005", - "0x90500073b3258256007363007253252227031357028253005363005253", - "0x5b005363005258005031028028363005028361028028363005028007028", - "0x50070050c002805b00536300505b00509202805800536300502833b028", - "0x2822d00536300522d00533702835c00536300535c005332028007005363", - "0x536300525600504f02826c05c05903136300522d35c05800705b00b331", - "0x3350280283630050280070282770053b427500536300726c005336028256", - "0x6000536300502802002805e005363005059005031028028363005275005", - "0x5d00521902802836300505f00504002805d05f007363005060005036028", - "0x420053630052bc0052270282bc0053630052af00521d0282af005363005", - "0x5c0050c002805e00536300505e00509202825600536300525600504f028", - "0x702804205c05e25600a00504200536300504200508402805c005363005", - "0x30600536300527700535b028067005363005059005031028028363005028", - "0x5c0050c002806700536300506700509202825600536300525600504f028", - "0x702830605c06725600a00530600536300530600508402805c005363005", - "0x527502802836300522d00533d028028363005028361028028363005028", - "0x2806800536300502802002806900536300500900503102802836300535c", - "0x500606800735c02800600536300500600501b028006005363005028046", - "0x2834700536300506f07100702d02807100536300502802302806f005363", - "0x506900509202805000536300505000504f02807400536300534700535b", - "0x50740053630050740050840280070053630050070050c0028069005363", - "0x501c02802836300502836102802836300502800702807400706905000a", - "0x2807500536300521d00503102802836300535c005275028028363005364", - "0x3b500502804d02834600536300507500509202807700536300523100504f", - "0x28363005219005047028028363005028361028028363005028007028028", - "0x36300535600503102802836300535c00527502802836300536400501c028", - "0x2002834600536300534500509202807700536300535d00504f028345005", - "0x7a00536300507a00501b02807a005363005028048028043005363005028", - "0x7f00702d02807f00536300502802302807900536300507a04300735c028", - "0x536300507700504f02808100536300534200535b028342005363005079", - "0x50840280070053630050070050c0028346005363005346005092028077", - "0x501c02802836300502800702808100734607700a005081005363005081", - "0x34000536300502300504f02807d005363005020005031028028363005361", - "0x283630050280070280283b600502804d02833f00536300507d005092028", - "0x2836300536100501c02802836300501f005047028028363005028361028", - "0x33e00509202834000536300500a00504f02833e005363005018005031028", - "0x1b02833c00536300502804502833d00536300502802002833f005363005", - "0x36300502802302833b00536300533c33d00735c02833c00536300533c005", - "0x2833600536300508c00535b02808c00536300533b33700702d028337005", - "0x50070050c002833f00536300533f00509202834000536300534000504f", - "0x2800702833600733f34000a005336005363005336005084028007005363", - "0x20028335005363005092005031028028363005031005242028028363005", - "0x33400536300533400501b02833400536300502804602808a005363005028", - "0x8800702d02808800536300502802302833300536300533408a00735c028", - "0x536300504f00504f02833100536300533200535b028332005363005333", - "0x50840280070053630050070050c002833500536300533500509202804f", - "0x24c02800b00536300502824c02833100733504f00a005331005363005331", - "0x700502802836300502802802802836300502824f028092005363005028", - "0x503102802836300502800702804e1c60073b701000f007363007005028", - "0x2802836300502800b02801400536300503100500a028013005363005010", - "0x701400500f02801300536300501300509202800f00536300500f00504f", - "0x53630050130050310280283630050280070280170053b803004d007363", - "0x504e0283600053630053610051c6028361005363005030005010028018", - "0x536300504d00501302801c00536300501800509202801b005363005360", - "0x3630050280070280283b900502804d02835e00536300501b00501402835f", - "0x2000501702802000536300502803002801f005363005013005031028028", - "0x35f00536300501700501302801c00536300501f00509202835d005363005", - "0x2835c0053ba04f00536300735e00501802835e00536300535d005014028", - "0x2802300536300501c005031028028363005028361028028363005028007", - "0xf00725302802300536300502300509202804f00536300504f092007252", - "0x50230050310280283630050280070280c00053bb35b02d00736300704f", - "0x2808400536300508400509202802d00536300502d00504f028084005363", - "0x50310280283630050280070283570053bc1a835900736300735f00500f", - "0x36300500a00b00725202800a0053630051a8005010028032005363005084", - "0x35900501302802836300502800b02835600536300500a0051c602800a005", - "0x36400736300735900500f028032005363005032005092028359005363005", - "0x25602803c00536300503200503102802836300502800702800c0053bd033", - "0x36300536400501302804000536300503c005092028036005363005033005", - "0x50280070280283be00502804d02821d005363005036005258028219005", - "0x505002822d005363005028030028227005363005032005031028028363", - "0x536300500c00501302804000536300522700509202823100536300522d", - "0x480053bf04600536300721d00500902821d005363005231005258028219", - "0x47005363005040005031028028363005028361028028363005028007028", - "0x5219005219028242005363005028020028045005363005046005010028", - "0x2802d00536300502d00504f0282490053630050450051c6028246005363", - "0x524200522d02824600536300524600505b028047005363005047005092", - "0x524924224604702d00b05802824900536300524900501b028242005363", - "0x50280070282520053c024f00536300724c00505902824c24b24a031363", - "0x2825825600736300524f00505c02825300536300524b005031028028363", - "0x70280090053c105000536300725800526c028253005363005253005092", - "0x5800536300525600500a02805b005363005253005031028028363005028", - "0x26c0053c205c05900736300705800500f02805b00536300505b005092028", - "0x2836300505c00535f02802836300505900501c028028363005028007028", - "0x36300535b00527502802836300535600501f028028363005050005040028", - "0x502835d02827700536300502802002827500536300505b005031028028", - "0x6000536300505e27700735c02805e00536300505e00501b02805e005363", - "0x5d00535b02805d00536300506005f00702d02805f005363005028023028", - "0x27500536300527500509202824a00536300524a00504f0282af005363005", - "0x27524a00a0052af0053630052af0050840280070053630050070050c0028", - "0x505b00503102802836300526c00501c0280283630050280070282af007", - "0x1a80282bc0053630052bc0050920280420053630050283590282bc005363", - "0x690073c33060670073630070422bc24a031357028042005363005042005", - "0x5050005036028006005363005306005031028028363005028007028068", - "0x2834700536300507100521902802836300506f00504002807106f007363", - "0x536300506700504f02800600536300500600509202802836300502800b", - "0x433453460313c407707507403136300734735635b00700600b277028067", - "0x5363005074005092028028363005077005242028028363005028007028", - "0x502833002807900536300502802002807a005363005074005031028074", - "0x34200536300507f07900735c02807f00536300507f00501b02807f005363", - "0x34200522d02807d0053630050750050c002808100536300507a005092028", - "0x3460050920280283630050280070280283c500502804d028340005363005", - "0x8100536300533f00509202833f005363005346005031028346005363005", - "0x502836102834000536300504300522d02807d0053630053450050c0028", - "0x35b02833d00536300534033e00702d02833e005363005028023028028363", - "0x36300508100509202806700536300506700504f02833c00536300533d005", - "0xa00533c00536300533c00508402807d00536300507d0050c0028081005", - "0x501f02802836300505000504002802836300502800702833c07d081067", - "0x2833b00536300506800503102802836300535b005275028028363005356", - "0x536300508c00501b02808c005363005028046028337005363005028020", - "0x702d02833500536300502802302833600536300508c33700735c02808c", - "0x36300506900504f02833400536300508a00535b02808a005363005336335", - "0x840280070053630050070050c002833b00536300533b005092028069005", - "0x4702802836300502800702833400733b06900a005334005363005334005", - "0x2802836300535600501f028028363005256005242028028363005009005", - "0x36300524a00504f02833300536300525300503102802836300535b005275", - "0x50280070280283c600502804d028332005363005333005092028088005", - "0x24b00503102802836300535600501f02802836300535b005275028028363", - "0x24a00536300524a00504f02833000536300525200535b028331005363005", - "0x3300050840280070053630050070050c0028331005363005331005092028", - "0x502836102802836300502800702833000733124a00a005330005363005", - "0x35b00527502802836300535600501f028028363005048005047028028363", - "0x4f02808600536300504000503102802836300521900501c028028363005", - "0x536300502802002833200536300508600509202808800536300502d005", - "0x8e00735c02836f00536300536f00501b02836f00536300502805e02808e", - "0x536300532d32c00702d02832c00536300502802302832d00536300536f", - "0x509202808800536300508800504f02832a00536300532b00535b02832b", - "0x536300532a0050840280070053630050070050c0028332005363005332", - "0x2836300535700501c02802836300502800702832a00733208800a00532a", - "0x36300508400503102802836300500b00506002802836300535b005275028", - "0x32700501b028327005363005028048028328005363005028020028329005", - "0x8b00536300502802302832600536300532732800735c028327005363005", - "0x504f02832400536300532500535b02832500536300532608b00702d028", - "0x53630050070050c002832900536300532900509202802d00536300502d", - "0x36300502800702832400732902d00a005324005363005324005084028007", - "0x502300503102802836300500b00506002802836300535f00501c028028", - "0x280850053630053230050920283200053630050c000504f028323005363", - "0x50470280283630050283610280283630050280070280283c700502804d", - "0x6002802836300500b00506002802836300535f00501c02802836300535c", - "0x536300500f00504f02809300536300501c005031028028363005092005", - "0x5028045028095005363005028020028085005363005093005092028320", - "0x9800536300531f09500735c02831f00536300531f00501b02831f005363", - "0x9600535b02809600536300509831e00702d02831e005363005028023028", - "0x8500536300508500509202832000536300532000504f02831d005363005", - "0x8532000a00531d00536300531d0050840280070053630050070050c0028", - "0x500b00506002802836300509200506002802836300502800702831d007", - "0x2802002831c00536300504e005031028028363005031005242028028363", - "0x2831900536300531900501b02831900536300502804602831a005363005", - "0x31831700702d02831700536300502802302831800536300531931a00735c", - "0x1c60053630051c600504f02831500536300531600535b028316005363005", - "0x3150050840280070053630050070050c002831c00536300531c005092028", - "0x2824c02800b0053630050282af02831500731c1c600a005315005363005", - "0x2800700502802836300502802802802836300502824f028092005363005", - "0x1000503102802836300502800702804e1c60073c801000f007363007005", - "0x4f02802836300502800b02801400536300503100500a028013005363005", - "0x36300701400500f02801300536300501300509202800f00536300500f005", - "0x180053630050130050310280283630050280070280170053c903004d007", - "0x4d005013028360005363005018005092028361005363005030005256028", - "0x70280283ca00502804d02801c00536300536100525802801b005363005", - "0x2835e00536300502803002835f005363005013005031028028363005028", - "0x501700501302836000536300535f00509202801f00536300535e005050", - "0x3cb02000536300701c00500902801c00536300501f00525802801b005363", - "0x36300536000503102802836300502836102802836300502800702835d005", - "0x2804f00536300504f09200725202804f00536300502000501002835c005", - "0x2300f00708602835c00536300535c00509202802300536300504f0051c6", - "0x36300535c0050310280283630050280070280c00053cc35b02d007363007", - "0x8400509202802d00536300502d00504f02802836300502800b028084005", - "0x50280070283570053cd1a835900736300701b00500f028084005363005", - "0x920283560053630051a8005256028032005363005084005031028028363", - "0x363005356005258028033005363005359005013028364005363005032005", - "0x3630050840050310280283630050280070280283ce00502804d02800c005", - "0x509202804000536300503600505002803600536300502803002803c005", - "0x536300504000525802803300536300535700501302836400536300503c", - "0x3102802836300502800702821d0053cf21900536300700c00500902800c", - "0x536300502802002822d005363005219005010028227005363005364005", - "0x504f02804800536300522d0051c6028046005363005033005219028231", - "0x536300504600505b02822700536300522700509202802d00536300502d", - "0xb05802804800536300504800501b02823100536300523100522d028046", - "0x3d024600536300724200505902824204504703136300504823104622702d", - "0x24600505c02824a005363005045005031028028363005028007028249005", - "0x536300724c00526c02824a00536300524a00509202824c24b007363005", - "0xa02825200536300524a00503102802836300502800702824f0053d100a", - "0x536300500a00b0072bc02802836300502800b02825300536300524b005", - "0x53d225825600736300725300500f02825200536300525200509202800a", - "0x5258005256028009005363005252005031028028363005028007028050", - "0x2805900536300525600501302805800536300500900509202805b005363", - "0x280283630050280070280283d300502804d02805c00536300505b005258", - "0x36300527500505002827500536300502803002826c005363005252005031", - "0x25802805900536300505000501302805800536300526c005092028277005", - "0x280070280600053d405e00536300705c00500902805c005363005277005", - "0x501002805f005363005058005031028028363005028361028028363005", - "0x2bc0053630050590052190282af00536300502802002805d00536300505e", - "0x5f00509202804700536300504700504f02804200536300505d0051c6028", - "0x2af0053630052af00522d0282bc0053630052bc00505b02805f005363005", - "0x670313630050422af2bc05f04700b05802804200536300504200501b028", - "0x280283630050280070280060053d5068005363007069005059028069306", - "0x6f00509202834707100736300506800505c02806f005363005306005031", - "0x3630050280070280750053d607400536300734700526c02806f005363005", - "0x509202834600536300507100500a02807700536300506f005031028028", - "0x2800702807a0053d704334500736300734600500f028077005363005077", - "0x504002802836300504300535f02802836300534500501c028028363005", - "0x3102802836300507400504002802836300535b00508e02802836300500a", - "0x34200536300502835d02807f005363005028020028079005363005077005", - "0x2802302808100536300534207f00735c02834200536300534200501b028", - "0x536300534000535b02834000536300508107d00702d02807d005363005", - "0x50c002807900536300507900509202806700536300506700504f02833f", - "0x2833f00707906700a00533f00536300533f005084028007005363005007", - "0x33e00536300507700503102802836300507a00501c028028363005028007", - "0x533d0051a802833e00536300533e00509202833d005363005028359028", - "0x702808c3370073d833b33c00736300733d33e06703135702833d005363", - "0x2833500536300502836f02833600536300533b005031028028363005028", - "0x535b00532d02802836300508a00504002833408a007363005074005036", - "0x33133200736300500a00503602802836300533300508e028088333007363", - "0x533600509202833c00536300533c00504f028028363005332005040028", - "0x2833500536300533500532c0280070053630050070050c0028336005363", - "0x533100501302808800536300508800532c028334005363005334005013", - "0x36f08e08633000a36300533108833433500733633c09232b028331005363", - "0x532902802836300502800702832c0053d932d00536300736f00532a028", - "0x2832a00536300502802002832b00536300508600503102802836300532d", - "0x532800521902802836300532900504002832832900736300532a005036", - "0x2808b00536300532600522702832600536300532700521d028327005363", - "0x508e0050c002832b00536300532b00509202833000536300533000504f", - "0x2800702808b08e32b33000a00508b00536300508b00508402808e005363", - "0x2832400536300532c00535b028325005363005086005031028028363005", - "0x508e0050c002832500536300532500509202833000536300533000504f", - "0x2800702832408e32533000a00532400536300532400508402808e005363", - "0x504002802836300535b00508e02802836300500a005040028028363005", - "0x2832000536300502802002832300536300508c005031028028363005074", - "0x508532000735c02808500536300508500501b028085005363005028046", - "0x2831f00536300509309500702d028095005363005028023028093005363", - "0x532300509202833700536300533700504f02809800536300531f00535b", - "0x50980053630050980050840280070053630050070050c0028323005363", - "0x24202802836300507500504702802836300502800702809800732333700a", - "0x2802836300535b00508e02802836300500a005040028028363005071005", - "0x531e00509202809600536300506700504f02831e00536300506f005031", - "0x500a0050400280283630050280070280283da00502804d02831d005363", - "0x535b02831c00536300530600503102802836300535b00508e028028363", - "0x536300531c00509202806700536300506700504f02831a005363005006", - "0x6700a00531a00536300531a0050840280070053630050070050c002831c", - "0x506000504702802836300502836102802836300502800702831a00731c", - "0x5900501c02802836300535b00508e02802836300500a005040028028363", - "0x2809600536300504700504f028319005363005058005031028028363005", - "0x536300502805e02831800536300502802002831d005363005319005092", - "0x2302831600536300531731800735c02831700536300531700501b028317", - "0x36300531400535b02831400536300531631500702d028315005363005028", - "0xc002831d00536300531d00509202809600536300509600504f028313005", - "0x31300731d09600a005313005363005313005084028007005363005007005", - "0x2836300535b00508e02802836300524f005047028028363005028007028", - "0x36300524a00503102802836300500b00507902802836300524b005242028", - "0x4d02830f00536300531200509202831100536300504700504f028312005", - "0x507902802836300535b00508e0280283630050280070280283db005028", - "0x30c00536300524900535b02830e00536300504500503102802836300500b", - "0x70050c002830e00536300530e00509202804700536300504700504f028", - "0x702830c00730e04700a00530c00536300530c005084028007005363005", - "0x507902802836300521d005047028028363005028361028028363005028", - "0x3102802836300503300501c02802836300535b00508e02802836300500b", - "0x3630050a900509202831100536300502d00504f0280a9005363005364005", - "0xb000501b0280b000536300502804802830b00536300502802002830f005", - "0x30a0053630050280230280ac0053630050b030b00735c0280b0005363005", - "0x504f0280b400536300530800535b0283080053630050ac30a00702d028", - "0x53630050070050c002830f00536300530f005092028311005363005311", - "0x3630050280070280b400730f31100a0050b40053630050b4005084028007", - "0x535c00503102802836300501b00501c02802836300500b005079028028", - "0x280b90053630050b60050920283050053630050c000504f0280b6005363", - "0x50470280283630050283610280283630050280070280283dc00502804d", - "0x6002802836300501b00501c02802836300500b00507902802836300535d", - "0x536300500f00504f028303005363005360005031028028363005092005", - "0x50280450283020053630050280200280b9005363005303005092028305", - "0x30000536300530130200735c02830100536300530100501b028301005363", - "0x2fe00535b0282fe0053630053002ff00702d0282ff005363005028023028", - "0xb90053630050b900509202830500536300530500504f0280bf005363005", - "0xb930500a0050bf0053630050bf0050840280070053630050070050c0028", - "0x509200506002802836300500b0050790280283630050280070280bf007", - "0x280200282fd00536300504e005031028028363005031005242028028363", - "0x282fb0053630052fb00501b0282fb0053630050280460282fc005363005", - "0x5138b00702d02838b0053630050280230280510053630052fb2fc00735c", - "0x1c60053630051c600504f02838d00536300538c00535b02838c005363005", - "0x38d0050840280070053630050070050c00282fd0053630052fd005092028", - "0x2800700502802836300502802802838d0072fd1c600a00538d005363005", - "0xb00503102802836300502800702809204f0073dd00b00a007363007005", - "0x4f02802836300502800b02801000536300503100500a02800f005363005", - "0x36300701000500f02800f00536300500f00509202800a00536300500a005", - "0x1400536300500f0050310280283630050280070280130053de04e1c6007", - "0x3000504e02803000536300504d0051c602804d00536300504e005010028", - "0x3610053630051c6005013028018005363005014005092028017005363005", - "0x283630050280070280283df00502804d028360005363005017005014028", - "0x501c00501702801c00536300502803002801b00536300500f005031028", - "0x2836100536300501300501302801800536300501b00509202835f005363", - "0x702801f0053e035e00536300736000501802836000536300535f005014", - "0x92028020005363005018005031028028363005028361028028363005028", - "0x280230053e135c35d00736300735e00a007253028020005363005020005", - "0x2802836300502800b02802d005363005020005031028028363005028007", - "0x736100500f02802d00536300502d00509202835d00536300535d00504f", - "0x536300502d0050310280283630050280070280840053e20c035b007363", - "0x504e0283570053630051a80051c60281a80053630050c0005010028359", - "0x536300535b005013028356005363005359005092028032005363005357", - "0x3630050280070280283e300502804d028033005363005032005014028364", - "0x3c00501702803c00536300502803002800c00536300502d005031028028", - "0x36400536300508400501302835600536300500c005092028036005363005", - "0x282190053e4040005363007033005018028033005363005036005014028", - "0x536300521d00509202821d005363005356005031028028363005028007", - "0x283630050280070282310053e522d22700736300704035d00707f02821d", - "0x4600509202822700536300522700504f02804600536300521d005031028", - "0x50280070280450053e604704800736300736400500f028046005363005", - "0x504700535f02802836300504800501c028028363005028361028028363", - "0x4600503102802836300535c00527502802836300522d00533d028028363", - "0x1b02824900536300502835d028246005363005028020028242005363005", - "0x36300502802302824a00536300524924600735c028249005363005249005", - "0x2824f00536300524c00535b02824c00536300524a24b00702d02824b005", - "0x50070050c002824200536300524200509202822700536300522700504f", - "0x2800702824f00724222700a00524f00536300524f005084028007005363", - "0x35902825200536300504600503102802836300504500501c028028363005", - "0x53630052530051a8028252005363005252005092028253005363005028", - "0x50280070280090500073e7258256007363007253252227031357028253", - "0x4f02805b00536300505b00509202805b005363005258005031028028363", - "0x313e805c05905803136300735c00705b031328028256005363005256005", - "0x503102805800536300505800509202802836300502800702827727526c", - "0x536300522d00532702806000536300505c00532702805e005363005058", - "0x1b02805d00536300505f06000732602806000536300506000501b02805f", - "0x36300505e0050920280590053630050590050c002805d00536300505d005", - "0x3610280283630050280070282af0053e902836300705d00534202805e005", - "0x280420053630050280200282bc00536300505e005031028028363005028", - "0x5306005219028028363005067005040028306067007363005042005036", - "0x2800600536300506800522702806800536300506900521d028069005363", - "0x50590050c00282bc0053630052bc00509202825600536300525600504f", - "0x280070280060592bc25600a005006005363005006005084028059005363", - "0x2002806f00536300505e0050310280283630052af005340028028363005", - "0x34700536300534700501b02834700536300502808b028071005363005028", - "0x50c002807500536300506f00509202807400536300534707100735c028", - "0x280283ea00502804d02834600536300507400522d028077005363005059", - "0x26c00536300526c00509202802836300522d00533d028028363005028007", - "0x2750050c002807500536300534500509202834500536300526c005031028", - "0x2302802836300502836102834600536300527700522d028077005363005", - "0x36300507a00535b02807a00536300534604300702d028043005363005028", - "0xc002807500536300507500509202825600536300525600504f028079005", - "0x7907707525600a005079005363005079005084028077005363005077005", - "0x2802836300522d00533d028028363005028361028028363005028007028", - "0x536300502802002807f00536300500900503102802836300535c005275", - "0x34200735c02808100536300508100501b028081005363005028046028342", - "0x536300507d34000702d02834000536300502802302807d005363005081", - "0x509202805000536300505000504f02833e00536300533f00535b02833f", - "0x536300533e0050840280070053630050070050c002807f00536300507f", - "0x2802836300502836102802836300502800702833e00707f05000a00533e", - "0x536300521d00503102802836300535c00527502802836300536400501c", - "0x2804d02833b00536300533d00509202833c00536300523100504f02833d", - "0x52190050470280283630050283610280283630050280070280283eb005", - "0x35600503102802836300535c00527502802836300536400501c028028363", - "0x33b00536300533700509202833c00536300535d00504f028337005363005", - "0x36300533600501b02833600536300502804802808c005363005028020028", - "0x2d02808a00536300502802302833500536300533608c00735c028336005", - "0x533c00504f02833300536300533400535b02833400536300533508a007", - "0x280070053630050070050c002833b00536300533b00509202833c005363", - "0x2802836300502800702833300733b33c00a005333005363005333005084", - "0x36300502300504f02808800536300502000503102802836300536100501c", - "0x50280070280283ec00502804d028331005363005088005092028332005", - "0x536100501c02802836300501f005047028028363005028361028028363", - "0x9202833200536300500a00504f028330005363005018005031028028363", - "0x8e005363005028045028086005363005028020028331005363005330005", - "0x2802302836f00536300508e08600735c02808e00536300508e00501b028", - "0x536300532c00535b02832c00536300536f32d00702d02832d005363005", - "0x50c002833100536300533100509202833200536300533200504f02832b", - "0x2832b00733133200a00532b00536300532b005084028007005363005007", - "0x32a005363005092005031028028363005031005242028028363005028007", - "0x36300532800501b028328005363005028046028329005363005028020028", - "0x2d02832600536300502802302832700536300532832900735c028328005", - "0x504f00504f02832500536300508b00535b02808b005363005327326007", - "0x280070053630050070050c002832a00536300532a00509202804f005363", - "0x2802836300502802802832500732a04f00a005325005363005325005084", - "0x2802836300502800702809204f0073ed00b00a007363007005028007005", - "0x36300502800b02801000536300503100500a02800f00536300500b005031", - "0x500f02800f00536300500f00509202800a00536300500a00504f028028", - "0x500f0050310280283630050280070280130053ee04e1c6007363007010", - "0x2803000536300501400509202804d00536300504e005256028014005363", - "0x3ef00502804d02801800536300504d0052580280170053630051c6005013", - "0x36300502803002836100536300500f005031028028363005028007028028", - "0x1302803000536300536100509202801b005363005360005050028360005", - "0x36300701800500902801800536300501b005258028017005363005013005", - "0x503102802836300502836102802836300502800702835f0053f001c005", - "0x536300501f0051c602801f00536300501c00501002835e005363005030", - "0x708602835e00536300535e00509202802000536300502000501b028020", - "0x35e0050310280283630050280070280230053f135c35d00736300702000a", - "0x2d00536300502d00509202835d00536300535d00504f02802d005363005", - "0x1c0280283630050280070280840053f20c035b00736300701700500f028", - "0x2802836300535c00508e0280283630050c000535f02802836300535b005", - "0x536300502835d0281a800536300502802002835900536300502d005031", - "0x230280320053630053571a800735c02835700536300535700501b028357", - "0x36300536400535b02836400536300503235600702d028356005363005028", - "0xc002835900536300535900509202835d00536300535d00504f028033005", - "0x3300735935d00a005033005363005033005084028007005363005007005", - "0x536300502d00503102802836300508400501c028028363005028007028", - "0x3c0051a802800c00536300500c00509202803c00536300502835902800c", - "0x2821d2190073f304003600736300703c00c35d03135702803c005363005", - "0x5363005227005092028227005363005040005031028028363005028007", - "0x23122d03136300735c00722703132502803600536300503600504f028227", - "0x22d00536300522d0050920280283630050280070280450470480313f4046", - "0x504600501b02824600536300502802002824200536300522d005031028", - "0x24a00736300524900503602824900536300504624600735c028046005363", - "0x24c00521d02824c00536300524b00521902802836300524a00504002824b", - "0x3600536300503600504f02825200536300524f00522702824f005363005", - "0x2520050840282310053630052310050c0028242005363005242005092028", - "0x4800509202802836300502800702825223124203600a005252005363005", - "0x28256005363005028023028253005363005048005031028048005363005", - "0x3600504f02805000536300525800535b02825800536300504525600702d", - "0x470053630050470050c0028253005363005253005092028036005363005", - "0x2836300502800702805004725303600a005050005363005050005084028", - "0x36300502802002800900536300521d00503102802836300535c00508e028", - "0x735c02805800536300505800501b02805800536300502804602805b005", - "0x36300505905c00702d02805c00536300502802302805900536300505805b", - "0x9202821900536300521900504f02827500536300526c00535b02826c005", - "0x3630052750050840280070053630050070050c0028009005363005009005", - "0x36300501700501c02802836300502800702827500700921900a005275005", - "0x509202805e00536300502300504f02827700536300535e005031028028", - "0x283610280283630050280070280283f500502804d028060005363005277", - "0x503102802836300501700501c02802836300535f005047028028363005", - "0x536300505f00509202805e00536300500a00504f02805f005363005030", - "0x52af00501b0282af00536300502804502805d005363005028020028060", - "0x280420053630050280230282bc0053630052af05d00735c0282af005363", - "0x5e00504f02830600536300506700535b0280670053630052bc04200702d", - "0x70053630050070050c002806000536300506000509202805e005363005", - "0x2836300502800702830600706005e00a005306005363005306005084028", - "0x363005028020028069005363005092005031028028363005031005242028", - "0x735c02800600536300500600501b028006005363005028046028068005", - "0x36300506f07100702d02807100536300502802302806f005363005006068", - "0x9202804f00536300504f00504f02807400536300534700535b028347005", - "0x3630050740050840280070053630050070050c0028069005363005069005", - "0x36300502824f02800b00536300502832402807400706904f00a005074005", - "0xf0073f609204f007363007005028007005028028363005028028028028", - "0x504f00504f0281c6005363005092005031028028363005028007028010", - "0x4e03136300503104f00732302803100536300503100505b02804f005363", - "0x53f700a0053630070140053200281c60053630051c6005092028014013", - "0x504e00504f0280300053630051c600503102802836300502800702804d", - "0x2801300536300501300505b02803000536300503000509202804e005363", - "0x36101801703136300501303004e03109302800a00536300500a00b007085", - "0x503102802836300502800702801b0053f8360005363007361005095028", - "0x36300501c00509202835e35f00736300536000531f02801c005363005018", - "0x280283630050280070280200053f901f00536300735e00509802801c005", - "0x535d00509202835c00536300535f00500a02835d00536300501c005031", - "0x36300502800702835b0053fa02d02300736300735c00500f02835d005363", - "0x501302808400536300502d0050100280c000536300535d005031028028", - "0x536300508400501b0280c00053630050c0005092028023005363005023", - "0x280283630050280070283570053fb1a835900736300702300500f028084", - "0x53590050130283560053630051a80050100280320053630050c0005031", - "0x2835600536300535600501b028032005363005032005092028359005363", - "0x503102802836300502800702800c0053fc03336400736300735900500f", - "0x536300536400501302803600536300503300501002803c005363005032", - "0x500f02803600536300503600501b02803c00536300503c005092028364", - "0x504000501c02802836300502800702821d0053fd219040007363007364", - "0x3600501f02802836300508400501f02802836300521900535f028028363", - "0x509602802836300501f00531e02802836300535600501f028028363005", - "0x2822d00536300502802002822700536300503c00503102802836300500a", - "0x523122d00735c02823100536300523100501b02823100536300502835d", - "0x2804700536300504604800702d028048005363005028023028046005363", - "0x522700509202801700536300501700504f02804500536300504700535b", - "0x50450053630050450050840280070053630050070050c0028227005363", - "0x3102802836300521d00501c02802836300502800702804500722701700a", - "0x536300524200509202824600536300502835902824200536300503c005", - "0x24a2490073630072462420170313570282460053630052460051a8028242", - "0x1c602824f00536300524a00503102802836300502800702824c24b0073fe", - "0x3630050360051c60282530053630053560051c6028252005363005084005", - "0x31c02800905000736300525800531d02825800536300502833b028256005", - "0x536300524f00509202824900536300524900504f028028363005050005", - "0x531902800a00536300500a00531a0280070053630050070050c002824f", - "0x536300525300501b02825200536300525200501b02801f00536300501f", - "0x25325201f00a00900724f24901031802825600536300525600501b028253", - "0x282750053ff26c00536300705c00531702805c05905805b00a363005256", - "0x27700536300505800503102802836300526c005316028028363005028007", - "0x6000504002805f06000736300505e00503602805e005363005028020028", - "0x282af00536300505d00521d02805d00536300505f005219028028363005", - "0x527700509202805b00536300505b00504f0282bc0053630052af005227", - "0x52bc0053630052bc0050840280590053630050590050c0028277005363", - "0x280420053630050580050310280283630050280070282bc05927705b00a", - "0x504200509202805b00536300505b00504f02806700536300527500535b", - "0x50670053630050670050840280590053630050590050c0028042005363", - "0x1f02802836300508400501f02802836300502800702806705904205b00a", - "0x2802836300501f00531e02802836300535600501f028028363005036005", - "0x536300502802002830600536300524c00503102802836300500a005096", - "0x6900735c02806800536300506800501b028068005363005028046028069", - "0x536300500606f00702d02806f005363005028023028006005363005068", - "0x509202824b00536300524b00504f02834700536300507100535b028071", - "0x53630053470050840280070053630050070050c0028306005363005306", - "0x2836300500c00501c02802836300502800702834700730624b00a005347", - "0x36300535600501f02802836300508400501f02802836300500a005096028", - "0x502802002807400536300503200503102802836300501f00531e028028", - "0x35c02807700536300507700501b028077005363005028043028075005363", - "0x534634500702d028345005363005028023028346005363005077075007", - "0x2801700536300501700504f02807a00536300504300535b028043005363", - "0x507a0050840280070053630050070050c0028074005363005074005092", - "0x535700501c02802836300502800702807a00707401700a00507a005363", - "0x1f00531e02802836300508400501f02802836300500a005096028028363", - "0x7a02807f0053630050280200280790053630050c0005031028028363005", - "0x36300534207f00735c02834200536300534200501b028342005363005028", - "0x35b02834000536300508107d00702d02807d005363005028023028081005", - "0x36300507900509202801700536300501700504f02833f005363005340005", - "0xa00533f00536300533f0050840280070053630050070050c0028079005", - "0x509602802836300535b00501c02802836300502800702833f007079017", - "0x2833e00536300535d00503102802836300501f00531e02802836300500a", - "0x536300533c00501b02833c00536300502805e02833d005363005028020", - "0x702d02833700536300502802302833b00536300533c33d00735c02833c", - "0x36300501700504f02833600536300508c00535b02808c00536300533b337", - "0x840280070053630050070050c002833e00536300533e005092028017005", - "0x4702802836300502800702833600733e01700a005336005363005336005", - "0x2802836300535f00524202802836300500a005096028028363005020005", - "0x536300502804802808a00536300502802002833500536300501c005031", - "0x2302833300536300533408a00735c02833400536300533400501b028334", - "0x36300533200535b02833200536300533308800702d028088005363005028", - "0xc002833500536300533500509202801700536300501700504f028331005", - "0x33100733501700a005331005363005331005084028007005363005007005", - "0x536300501800503102802836300500a005096028028363005028007028", - "0x509202801700536300501700504f02808600536300501b00535b028330", - "0x53630050860050840280070053630050070050c0028330005363005330", - "0x2836300504d00504702802836300502800702808600733001700a005086", - "0x3630051c600503102802836300500b005315028028363005013005242028", - "0x32d00501b02832d00536300502804502836f00536300502802002808e005", - "0x32b00536300502802302832c00536300532d36f00735c02832d005363005", - "0x504f02832900536300532a00535b02832a00536300532c32b00702d028", - "0x53630050070050c002808e00536300508e00509202804e00536300504e", - "0x36300502800702832900708e04e00a005329005363005329005084028007", - "0x501000503102802836300500b005315028028363005031005242028028", - "0x501b028326005363005028046028327005363005028020028328005363", - "0x536300502802302808b00536300532632700735c028326005363005326", - "0x4f02832300536300532400535b02832400536300508b32500702d028325", - "0x3630050070050c002832800536300532800509202800f00536300500f005", - "0x502824c02832300732800f00a005323005363005323005084028007005", - "0x502802802802836300502824f02809200536300502824c02800b005363", - "0x502800702804e1c600740001000f007363007005028007005028028363", - "0xb02801400536300503100500a028013005363005010005031028028363", - "0x1300536300501300509202800f00536300500f00504f028028363005028", - "0x3102802836300502800702801700540103004d00736300701400500f028", - "0x3630053610051c6028361005363005030005010028018005363005013005", - "0x1302801c00536300501800509202801b00536300536000504e028360005", - "0x2840200502804d02835e00536300501b00501402835f00536300504d005", - "0x536300502803002801f005363005013005031028028363005028007028", - "0x501302801c00536300501f00509202835d005363005020005017028020", - "0x536300735e00501802835e00536300535d00501402835f005363005017", - "0x1c00503102802836300502836102802836300502800702835c00540304f", - "0x536300502300509202804f00536300504f092007252028023005363005", - "0x283630050280070280c000540435b02d00736300704f00f00707f028023", - "0x8400509202802d00536300502d00504f028084005363005023005031028", - "0x50280070283570054051a835900736300735f00500f028084005363005", - "0x25202800a0053630051a8005010028032005363005084005031028028363", - "0x36300502800b02835600536300500a0051c602800a00536300500a00b007", - "0x500f028032005363005032005092028359005363005359005013028028", - "0x503200503102802836300502800702800c005406033364007363007359", - "0x2804000536300503c00509202803600536300503300525602803c005363", - "0x40700502804d02821d005363005036005258028219005363005364005013", - "0x363005028030028227005363005032005031028028363005028007028028", - "0x1302804000536300522700509202823100536300522d00505002822d005", - "0x36300721d00500902821d00536300523100525802821900536300500c005", - "0x5031028028363005028361028028363005028007028048005408046005", - "0x242005363005028020028045005363005046005010028047005363005040", - "0x2d00504f0282490053630050450051c6028246005363005219005219028", - "0x24600536300524600505b02804700536300504700509202802d005363005", - "0x2d00b05802824900536300524900501b02824200536300524200522d028", - "0x540924f00536300724c00505902824c24b24a031363005249242246047", - "0x524f00505c02825300536300524b005031028028363005028007028252", - "0x5000536300725800526c028253005363005253005092028258256007363", - "0x500a02805b00536300525300503102802836300502800702800900540a", - "0x736300705800500f02805b00536300505b005092028058005363005256", - "0x35f02802836300505900501c02802836300502800702826c00540b05c059", - "0x2802836300535600501f02802836300505000504002802836300505c005", - "0x536300502802002827500536300505b00503102802836300535b00533d", - "0x27700735c02805e00536300505e00501b02805e00536300502835d028277", - "0x536300506005f00702d02805f00536300502802302806000536300505e", - "0x509202824a00536300524a00504f0282af00536300505d00535b02805d", - "0x53630052af0050840280070053630050070050c0028275005363005275", - "0x2836300526c00501c0280283630050280070282af00727524a00a0052af", - "0x52bc0050920280420053630050283590282bc00536300505b005031028", - "0x73630070422bc24a0313570280420053630050420051a80282bc005363", - "0x600536300530600503102802836300502800702806806900740c306067", - "0x7100521902802836300506f00504002807106f007363005050005036028", - "0x6700536300506700504f028006005363005006005092028347005363005", - "0x2804334534603140d07707507403136300734735635b00700600b314028", - "0x5363005074005031028074005363005074005092028028363005028007", - "0x504f02807f00536300507900522702807900536300507700521d02807a", - "0x53630050750050c002807a00536300507a005092028067005363005067", - "0x36300502800702807f07507a06700a00507f00536300507f005084028075", - "0x28023028342005363005346005031028346005363005346005092028028", - "0x536300507d00535b02807d00536300504308100702d028081005363005", - "0x50c002834200536300534200509202806700536300506700504f028340", - "0x2834034534206700a005340005363005340005084028345005363005345", - "0x2802836300535600501f028028363005050005040028028363005028007", - "0x536300502802002833f00536300506800503102802836300535b00533d", - "0x33e00735c02833d00536300533d00501b02833d00536300502804602833e", - "0x536300533c33b00702d02833b00536300502802302833c00536300533d", - "0x509202806900536300506900504f02808c00536300533700535b028337", - "0x536300508c0050840280070053630050070050c002833f00536300533f", - "0x2836300500900504702802836300502800702808c00733f06900a00508c", - "0x36300535b00533d02802836300535600501f028028363005256005242028", - "0x509202833500536300524a00504f028336005363005253005031028028", - "0x533d02802836300502800702802840e00502804d02808a005363005336", - "0x2833400536300524b00503102802836300535600501f02802836300535b", - "0x533400509202824a00536300524a00504f02833300536300525200535b", - "0x53330053630053330050840280070053630050070050c0028334005363", - "0x504702802836300502836102802836300502800702833300733424a00a", - "0x1c02802836300535b00533d02802836300535600501f028028363005048", - "0x536300502d00504f028088005363005040005031028028363005219005", - "0x502805e02833200536300502802002808a005363005088005092028335", - "0x33000536300533133200735c02833100536300533100501b028331005363", - "0x8e00535b02808e00536300533008600702d028086005363005028023028", - "0x8a00536300508a00509202833500536300533500504f02836f005363005", - "0x8a33500a00536f00536300536f0050840280070053630050070050c0028", - "0x535b00533d02802836300535700501c02802836300502800702836f007", - "0x2802002832d00536300508400503102802836300500b005060028028363", - "0x2832b00536300532b00501b02832b00536300502804802832c005363005", - "0x32a32900702d02832900536300502802302832a00536300532b32c00735c", - "0x2d00536300502d00504f02832700536300532800535b028328005363005", - "0x3270050840280070053630050070050c002832d00536300532d005092028", - "0x35f00501c02802836300502800702832700732d02d00a005327005363005", - "0x4f02832600536300502300503102802836300500b005060028028363005", - "0x2840f00502804d02832500536300532600509202808b0053630050c0005", - "0x2802836300535c005047028028363005028361028028363005028007028", - "0x2836300509200506002802836300500b00506002802836300535f00501c", - "0x32400509202808b00536300500f00504f02832400536300501c005031028", - "0x1b028320005363005028045028323005363005028020028325005363005", - "0x36300502802302808500536300532032300735c028320005363005320005", - "0x2831f00536300509500535b02809500536300508509300702d028093005", - "0x50070050c002832500536300532500509202808b00536300508b00504f", - "0x2800702831f00732508b00a00531f00536300531f005084028007005363", - "0x524202802836300500b005060028028363005092005060028028363005", - "0x2831e00536300502802002809800536300504e005031028028363005031", - "0x509631e00735c02809600536300509600501b028096005363005028046", - "0x2831a00536300531d31c00702d02831c00536300502802302831d005363", - "0x50980050920281c60053630051c600504f02831900536300531a00535b", - "0x53190053630053190050840280070053630050070050c0028098005363", - "0xa0073630070050280070050280283630050280280283190070981c600a", - "0x2800f00536300500b00503102802836300502800702809204f00741000b", - "0x536300500a00504f02802836300502800b02801000536300503100500a", - "0x541104e1c600736300701000500f02800f00536300500f00509202800a", - "0x504e00501002801400536300500f005031028028363005028007028013", - "0x2801700536300503000504e02803000536300504d0051c602804d005363", - "0x50170050140283610053630051c6005013028018005363005014005092", - "0x500f00503102802836300502800702802841200502804d028360005363", - "0x9202835f00536300501c00501702801c00536300502803002801b005363", - "0x36300535f00501402836100536300501300501302801800536300501b005", - "0x2802836300502800702801f00541335e005363007360005018028360005", - "0x5363005020005092028020005363005018005031028028363005028361", - "0x2836300502800702802300541435c35d00736300735e00a00707f028020", - "0x2d00509202835d00536300535d00504f02802d005363005020005031028", - "0x50280070280840054150c035b00736300736100500f02802d005363005", - "0x130281a80053630050c000501002835900536300502d005031028028363", - "0x3630051a800501b02835900536300535900509202835b00536300535b005", - "0x2836300502800702835600541603235700736300735b00500f0281a8005", - "0x357005013028033005363005032005010028364005363005359005031028", - "0x3300536300503300501b028364005363005364005092028357005363005", - "0x3102802836300502800702803600541703c00c00736300735700500f028", - "0x36300500c00501302821900536300503c005010028040005363005364005", - "0xf02821900536300521900501b02804000536300504000509202800c005", - "0x4000503102802836300502800702822d00541822721d00736300700c005", - "0x21d00536300521d005013028046005363005227005010028231005363005", - "0x21d00500f02804600536300504600501b028231005363005231005092028", - "0x36300504800501c028028363005028007028045005419047048007363007", - "0x504600501f0280283630051a800501f02802836300504700535f028028", - "0x35c00533d02802836300503300501f02802836300521900501f028028363", - "0x35d028246005363005028020028242005363005231005031028028363005", - "0x36300524924600735c02824900536300524900501b028249005363005028", - "0x35b02824c00536300524a24b00702d02824b00536300502802302824a005", - "0x36300524200509202835d00536300535d00504f02824f00536300524c005", - "0xa00524f00536300524f0050840280070053630050070050c0028242005", - "0x503102802836300504500501c02802836300502800702824f00724235d", - "0x252005363005252005092028253005363005028359028252005363005231", - "0x41a25825600736300725325235d0313570282530053630052530051a8028", - "0x51c602805b005363005258005031028028363005028007028009050007", - "0x53630052190051c60280590053630050330051c60280580053630051a8", - "0x27500531d02827500536300502833b02826c0053630050460051c602805c", - "0x5b00536300505b00509202802836300527700531c02805e277007363005", - "0x5800501b02835c00536300535c0053370280070053630050070050c0028", - "0x5c00536300505c00501b02805900536300505900501b028058005363005", - "0x526c05c05905835c05e00705b00f31302826c00536300526c00501b028", - "0x536300506000509202825600536300525600504f02805d05f060031363", - "0x25600a00505d00536300505d00508402805f00536300505f0050c0028060", - "0x4600501f0280283630051a800501f02802836300502800702805d05f060", - "0x533d02802836300503300501f02802836300521900501f028028363005", - "0x282bc0053630050280200282af00536300500900503102802836300535c", - "0x50422bc00735c02804200536300504200501b028042005363005028046", - "0x2806900536300506730600702d028306005363005028023028067005363", - "0x52af00509202805000536300505000504f02806800536300506900535b", - "0x50680053630050680050840280070053630050070050c00282af005363", - "0x33d02802836300522d00501c0280283630050280070280680072af05000a", - "0x2802836300521900501f0280283630051a800501f02802836300535c005", - "0x536300502802002800600536300504000503102802836300503300501f", - "0x6f00735c02807100536300507100501b02807100536300502804302806f", - "0x536300534707400702d028074005363005028023028347005363005071", - "0x509202835d00536300535d00504f02807700536300507500535b028075", - "0x53630050770050840280070053630050070050c0028006005363005006", - "0x2836300503600501c02802836300502800702807700700635d00a005077", - "0x36300503300501f0280283630051a800501f02802836300535c00533d028", - "0x502807a028345005363005028020028346005363005364005031028028", - "0x7a00536300504334500735c02804300536300504300501b028043005363", - "0x7f00535b02807f00536300507a07900702d028079005363005028023028", - "0x34600536300534600509202835d00536300535d00504f028342005363005", - "0x34635d00a0053420053630053420050840280070053630050070050c0028", - "0x535c00533d02802836300535600501c028028363005028007028342007", - "0x280200280810053630053590050310280283630051a800501f028028363", - "0x2834000536300534000501b02834000536300502805e02807d005363005", - "0x33f33e00702d02833e00536300502802302833f00536300534007d00735c", - "0x35d00536300535d00504f02833c00536300533d00535b02833d005363005", - "0x33c0050840280070053630050070050c0028081005363005081005092028", - "0x8400501c02802836300502800702833c00708135d00a00533c005363005", - "0x2002833b00536300502d00503102802836300535c00533d028028363005", - "0x8c00536300508c00501b02808c005363005028048028337005363005028", - "0x33500702d02833500536300502802302833600536300508c33700735c028", - "0x536300535d00504f02833400536300508a00535b02808a005363005336", - "0x50840280070053630050070050c002833b00536300533b00509202835d", - "0x501c02802836300502800702833400733b35d00a005334005363005334", - "0x8800536300502300504f028333005363005020005031028028363005361", - "0x2836300502800702802841b00502804d028332005363005333005092028", - "0x2836300536100501c02802836300501f005047028028363005028361028", - "0x33100509202808800536300500a00504f028331005363005018005031028", - "0x1b028086005363005028045028330005363005028020028332005363005", - "0x36300502802302808e00536300508633000735c028086005363005086005", - "0x2832c00536300532d00535b02832d00536300508e36f00702d02836f005", - "0x50070050c002833200536300533200509202808800536300508800504f", - "0x2800702832c00733208800a00532c00536300532c005084028007005363", - "0x2002832b005363005092005031028028363005031005242028028363005", - "0x32900536300532900501b02832900536300502804602832a005363005028", - "0x32700702d02832700536300502802302832800536300532932a00735c028", - "0x536300504f00504f02808b00536300532600535b028326005363005328", - "0x50840280070053630050070050c002832b00536300532b00509202804f", - "0x700502802836300502802802808b00732b04f00a00508b00536300508b", - "0x503102802836300502800702809204f00741c00b00a007363007005028", - "0x2802836300502800b02801000536300503100500a02800f00536300500b", - "0x701000500f02800f00536300500f00509202800a00536300500a00504f", - "0x536300500f00503102802836300502800702801300541d04e1c6007363", - "0x504e02803000536300504d0051c602804d00536300504e005010028014", - "0x53630051c6005013028018005363005014005092028017005363005030", - "0x36300502800702802841e00502804d028360005363005017005014028361", - "0x1c00501702801c00536300502803002801b00536300500f005031028028", - "0x36100536300501300501302801800536300501b00509202835f005363005", - "0x2801f00541f35e00536300736000501802836000536300535f005014028", - "0x28020005363005018005031028028363005028361028028363005028007", - "0x2300542035c35d00736300735e00a00707f028020005363005020005092", - "0x36300535d00504f02802d005363005020005031028028363005028007028", - "0x4210c035b00736300736100500f02802d00536300502d00509202835d005", - "0x50c000535f02802836300535b00501c028028363005028007028084005", - "0x2802002835900536300502d00503102802836300535c00533d028028363", - "0x2835700536300535700501b02835700536300502835d0281a8005363005", - "0x3235600702d0283560053630050280230280320053630053571a800735c", - "0x35d00536300535d00504f02803300536300536400535b028364005363005", - "0x330050840280070053630050070050c0028359005363005359005092028", - "0x8400501c02802836300502800702803300735935d00a005033005363005", - "0x9202803c00536300502835902800c00536300502d005031028028363005", - "0x3c00c35d03135702803c00536300503c0051a802800c00536300500c005", - "0x504000503102802836300502800702821d219007422040036007363007", - "0x2803600536300503600504f028227005363005227005092028227005363", - "0x36300502800702804704804603142323122d00736300735c007227031312", - "0x2802002804500536300522d00503102822d00536300522d005092028028", - "0x28363005246005040028249246007363005242005036028242005363005", - "0x24b00522702824b00536300524a00521d02824a005363005249005219028", - "0x4500536300504500509202803600536300503600504f02824c005363005", - "0x4503600a00524c00536300524c0050840282310053630052310050c0028", - "0x4600503102804600536300504600509202802836300502800702824c231", - "0x25300536300504725200702d02825200536300502802302824f005363005", - "0x24f00509202803600536300503600504f02825600536300525300535b028", - "0x2560053630052560050840280480053630050480050c002824f005363005", - "0x2802836300535c00533d02802836300502800702825604824f03600a005", - "0x536300502804602805000536300502802002825800536300521d005031", - "0x2302805b00536300500905000735c02800900536300500900501b028009", - "0x36300505900535b02805900536300505b05800702d028058005363005028", - "0xc002825800536300525800509202821900536300521900504f02805c005", - "0x5c00725821900a00505c00536300505c005084028007005363005007005", - "0x536300502000503102802836300536100501c028028363005028007028", - "0x2804d02827700536300526c00509202827500536300502300504f02826c", - "0x501f005047028028363005028361028028363005028007028028424005", - "0x504f02805e00536300501800503102802836300536100501c028028363", - "0x6000536300502802002827700536300505e00509202827500536300500a", - "0x5f06000735c02805f00536300505f00501b02805f005363005028045028", - "0x2bc00536300505d2af00702d0282af00536300502802302805d005363005", - "0x27700509202827500536300527500504f0280420053630052bc00535b028", - "0x420053630050420050840280070053630050070050c0028277005363005", - "0x2802836300503100524202802836300502800702804200727727500a005", - "0x5363005028046028306005363005028020028067005363005092005031", - "0x2302806800536300506930600735c02806900536300506900501b028069", - "0x36300506f00535b02806f00536300506800600702d028006005363005028", - "0xc002806700536300506700509202804f00536300504f00504f028071005", - "0x7100706704f00a005071005363005071005084028007005363005007005", - "0x2802836300502802802802836300502824f02800b00536300502824c028", - "0x2802836300502800702801000f00742509204f007363007005028007005", - "0x504f00504f02804e00536300503100500a0281c6005363005092005031", - "0x1401300736300704e00500f0281c60053630051c600509202804f005363", - "0x50100280300053630051c600503102802836300502800702804d005426", - "0x36300500a0051c602800a00536300500a00b00725202800a005363005014", - "0x3000509202801300536300501300501302802836300502800b028017005", - "0x502800702836000542736101800736300701300500f028030005363005", - "0x9202801c00536300536100525602801b005363005030005031028028363", - "0x36300501c00525802835e00536300501800501302835f00536300501b005", - "0x36300503000503102802836300502800702802842800502804d02801f005", - "0x509202835c00536300535d00505002835d005363005028030028020005", - "0x536300535c00525802835e00536300536000501302835f005363005020", - "0x36102802836300502800702802d00542902300536300701f00500902801f", - "0xc000536300502300501002835b00536300535f005031028028363005028", - "0x50c00051c602835900536300535e005219028084005363005028020028", - "0x2835b00536300535b00509202804f00536300504f00504f0281a8005363", - "0x51a800501b02808400536300508400522d02835900536300535900505b", - "0x50590283560323570313630051a808435935b04f00b0580281a8005363", - "0x36300503200503102802836300502800702803300542a364005363007356", - "0x2800c00536300500c00509202803603c00736300536400505c02800c005", - "0xc00503102802836300502800702821900542b04000536300703600526c", - "0x21d00536300521d00509202822700536300503c00500a02821d005363005", - "0x1c02802836300502800702804600542c23122d00736300722700500f028", - "0x2802836300504000504002802836300523100535f02802836300522d005", - "0x536300502802002804800536300521d00503102802836300501700501f", - "0x4700735c02804500536300504500501b02804500536300502835d028047", - "0x536300524224600702d028246005363005028023028242005363005045", - "0x509202835700536300535700504f02824a00536300524900535b028249", - "0x536300524a0050840280070053630050070050c0028048005363005048", - "0x2836300504600501c02802836300502800702824a00704835700a00524a", - "0x524b00509202824c00536300502835902824b00536300521d005031028", - "0x736300724c24b35703135702824c00536300524c0051a802824b005363", - "0x25800536300525200503102802836300502800702825625300742d25224f", - "0x9005219028028363005050005040028009050007363005040005036028", - "0x24f00536300524f00504f02825800536300525800509202805b005363005", - "0x2800702827526c05c03142e05905800736300705b01700725800a311028", - "0x28277005363005058005031028058005363005058005092028028363005", - "0x506000504002805f06000736300505e00503602805e005363005028020", - "0x2270282af00536300505d00521d02805d00536300505f005219028028363", - "0x36300527700509202824f00536300524f00504f0282bc0053630052af005", - "0xa0052bc0053630052bc0050840280590053630050590050c0028277005", - "0x3102805c00536300505c0050920280283630050280070282bc05927724f", - "0x36300527506700702d02806700536300502802302804200536300505c005", - "0x9202824f00536300524f00504f02806900536300530600535b028306005", - "0x36300506900508402826c00536300526c0050c0028042005363005042005", - "0x36300504000504002802836300502800702806926c04224f00a005069005", - "0x502802002806800536300525600503102802836300501700501f028028", - "0x35c02806f00536300506f00501b02806f005363005028046028006005363", - "0x507134700702d02834700536300502802302807100536300506f006007", - "0x2825300536300525300504f02807500536300507400535b028074005363", - "0x50750050840280070053630050070050c0028068005363005068005092", - "0x521900504702802836300502800702807500706825300a005075005363", - "0xc00503102802836300501700501f02802836300503c005242028028363", - "0x34500536300507700509202834600536300535700504f028077005363005", - "0x2802836300501700501f02802836300502800702802842f00502804d028", - "0x535700504f02807a00536300503300535b028043005363005032005031", - "0x280070053630050070050c0028043005363005043005092028357005363", - "0x2802836300502800702807a00704335700a00507a00536300507a005084", - "0x2802836300501700501f02802836300502d005047028028363005028361", - "0x36300504f00504f02807900536300535f00503102802836300535e00501c", - "0x2804802807f005363005028020028345005363005079005092028346005", - "0x536300534207f00735c02834200536300534200501b028342005363005", - "0x535b02834000536300508107d00702d02807d005363005028023028081", - "0x536300534500509202834600536300534600504f02833f005363005340", - "0x34600a00533f00536300533f0050840280070053630050070050c0028345", - "0xb00506002802836300504d00501c02802836300502800702833f007345", - "0x4502833d00536300502802002833e0053630051c6005031028028363005", - "0x36300533c33d00735c02833c00536300533c00501b02833c005363005028", - "0x35b02808c00536300533b33700702d02833700536300502802302833b005", - "0x36300533e00509202804f00536300504f00504f02833600536300508c005", - "0xa0053360053630053360050840280070053630050070050c002833e005", - "0x506002802836300503100524202802836300502800702833600733e04f", - "0x2808a00536300502802002833500536300501000503102802836300500b", - "0x533408a00735c02833400536300533400501b028334005363005028046", - "0x2833200536300533308800702d028088005363005028023028333005363", - "0x533500509202800f00536300500f00504f02833100536300533200535b", - "0x53310053630053310050840280070053630050070050c0028335005363", - "0xb00736300700702800700502802836300502802802833100733500f00a", - "0x2801000536300504f00503102802836300502800702800f09200743004f", - "0x501000509202800b00536300500b00504f0281c600536300500a00500a", - "0x36300502800702801400543101304e0073630071c600500f028010005363", - "0x501000503102802836300501300535f02802836300504e00501c028028", - "0x501b02801700536300502835d02803000536300502802002804d005363", - "0x536300502802302801800536300501703000735c028017005363005017", - "0x4f02801b00536300536000535b02836000536300501836100702d028361", - "0x36300504d00509202800500536300500500530f02800b00536300500b005", - "0xb00501b00536300501b0050840280310053630050310050c002804d005", - "0x3102802836300501400501c02802836300502800702801b03104d00500b", - "0x536300501c00509202835f00536300502835902801c005363005010005", - "0x1f35e00736300735f01c00b03135702835f00536300535f0051a802801c", - "0x30e02835c00536300501f00503102802836300502800702835d020007432", - "0x502300530f02835e00536300535e00504f02802d023007363005005005", - "0x2802d00536300502d00530c02835c00536300535c005092028023005363", - "0x2836300535900530b0283590840c035b00a36300502d35c02335e00a0a9", - "0x3570050400280323570073630051a80050360281a8005363005028020028", - "0x2836400536300535600521d028356005363005032005219028028363005", - "0x50c000530f02835b00536300535b00504f028033005363005364005227", - "0x280310053630050310050c00280840053630050840050920280c0005363", - "0x283630050280070280330310840c035b00b005033005363005033005084", - "0x36300502804602803c00536300502802002800c00536300535d005031028", - "0x2804000536300503603c00735c02803600536300503600501b028036005", - "0x521d00535b02821d00536300504021900702d028219005363005028023", - "0x2800500536300500500530f02802000536300502000504f028227005363", - "0x52270050840280310053630050310050c002800c00536300500c005092", - "0xa00524202802836300502800702822703100c00502000b005227005363", - "0x4602823100536300502802002822d00536300500f005031028028363005", - "0x36300504623100735c02804600536300504600501b028046005363005028", - "0x35b02804500536300504804700702d028047005363005028023028048005", - "0x36300500500530f02809200536300509200504f028242005363005045005", - "0x840280310053630050310050c002822d00536300522d005092028005005", - "0xb00536300502824c02824203122d00509200b005242005363005242005", - "0x2802836300502802802802836300502824f02809200536300502824c028", - "0x2802836300502800702804e1c600743301000f007363007005028007005", - "0x36300502800b02801400536300503100500a028013005363005010005031", - "0x500f02801300536300501300509202800f00536300500f00504f028028", - "0x501300503102802836300502800702801700543403004d007363007014", - "0x283600053630053610051c6028361005363005030005010028018005363", - "0x504d00501302801c00536300501800509202801b00536300536000504e", - "0x2800702802843500502804d02835e00536300501b00501402835f005363", - "0x1702802000536300502803002801f005363005013005031028028363005", - "0x36300501700501302801c00536300501f00509202835d005363005020005", - "0x543604f00536300735e00501802835e00536300535d00501402835f005", - "0x536300501c00503102802836300502836102802836300502800702835c", - "0x7f02802300536300502300509202804f00536300504f092007252028023", - "0x50310280283630050280070280c000543735b02d00736300704f00f007", - "0x536300508400509202802d00536300502d00504f028084005363005023", - "0x280283630050280070283570054381a835900736300735f00500f028084", - "0xa00b00725202800a0053630051a8005010028032005363005084005031", - "0x1302802836300502800b02835600536300500a0051c602800a005363005", - "0x36300735900500f028032005363005032005092028359005363005359005", - "0x3c00536300503200503102802836300502800702800c005439033364007", - "0x36400501302804000536300503c005092028036005363005033005256028", - "0x702802843a00502804d02821d005363005036005258028219005363005", - "0x2822d005363005028030028227005363005032005031028028363005028", - "0x500c00501302804000536300522700509202823100536300522d005050", - "0x43b04600536300721d00500902821d005363005231005258028219005363", - "0x46005010028047005363005040005031028028363005028007028048005", - "0x28246005363005219005219028242005363005028020028045005363005", - "0x504700509202802d00536300502d00504f0282490053630050450051c6", - "0x2824200536300524200522d02824600536300524600505b028047005363", - "0x24b24a03136300524924224604702d00b05802824900536300524900501b", - "0x3102802836300502800702825200543c24f00536300724c00505902824c", - "0x525300509202825825600736300524f00505c02825300536300524b005", - "0x2836300502800702800900543d05000536300725800526c028253005363", - "0x5b00509202805800536300525600500a02805b005363005253005031028", - "0x502800702826c00543e05c05900736300705800500f02805b005363005", - "0x1c602827700536300505c00501002827500536300505b005031028028363", - "0x5e00536300505e00501b02802836300502800b02805e005363005277005", - "0x5e005342028275005363005275005092028059005363005059005013028", - "0x5f00536300527500503102802836300502800702806000543f028363007", - "0x505f0050920282af00536300505d00508102805d005363005028030028", - "0x2800702802844000502804d0280420053630052af00507d0282bc005363", - "0x30028067005363005275005031028028363005060005340028028363005", - "0x536300506700509202806900536300530600533f028306005363005028", - "0x544100606800736300705900500f02804200536300506900507d0282bc", - "0x2836300506800501c02802836300502836102802836300502800702806f", - "0x36300504200533e02802836300505000504002802836300500600535f028", - "0x52bc00503102802836300535b00533d02802836300535600501f028028", - "0x501b02807400536300502835d028347005363005028020028071005363", - "0x536300502802302807500536300507434700735c028074005363005074", - "0x4f02834500536300534600535b02834600536300507507700702d028077", - "0x3630050070050c002807100536300507100509202824a00536300524a005", - "0x502800702834500707124a00a005345005363005345005084028007005", - "0x283590280430053630052bc00503102802836300506f00501c028028363", - "0x7a00536300507a0051a802804300536300504300509202807a005363005", - "0x36300502800702808134200744207f07900736300707a04324a031357028", - "0x504200533c02807d00536300507f005031028028363005028361028028", - "0x2802836300533f00504002833e33f007363005050005036028340005363", - "0x534000507d02807d00536300507d00509202833d00536300533e005219", - "0x34033d35635b00707d04f0b002807900536300507900504f028340005363", - "0x27502802836300502800702808a33533603144308c33733b33c00a363007", - "0x33c00536300533c00509202802836300508c005242028028363005337005", - "0x533300503602833300536300502802002833400536300533c005031028", - "0x28331005363005332005219028028363005088005040028332088007363", - "0x507900504f02808600536300533000522702833000536300533100521d", - "0x2833b00536300533b0050c0028334005363005334005092028079005363", - "0x2802836300502800702808633b33407900a005086005363005086005084", - "0x36300502802302808e005363005336005031028336005363005336005092", - "0x2832c00536300532d00535b02832d00536300508a36f00702d02836f005", - "0x53350050c002808e00536300508e00509202807900536300507900504f", - "0x2800702832c33508e07900a00532c00536300532c005084028335005363", - "0x4200533e028028363005050005040028028363005028361028028363005", - "0x503102802836300535b00533d02802836300535600501f028028363005", - "0x2832900536300502804602832a00536300502802002832b005363005081", - "0x502802302832800536300532932a00735c02832900536300532900501b", - "0x8b00536300532600535b02832600536300532832700702d028327005363", - "0x70050c002832b00536300532b00509202834200536300534200504f028", - "0x702808b00732b34200a00508b00536300508b005084028007005363005", - "0x4002802836300535b00533d02802836300526c00501c028028363005028", - "0x32500536300505b00503102802836300535600501f028028363005050005", - "0x36300532300501b02832300536300502807a028324005363005028020028", - "0x2d02808500536300502802302832000536300532332400735c028323005", - "0x524a00504f02809500536300509300535b028093005363005320085007", - "0x280070053630050070050c002832500536300532500509202824a005363", - "0x2802836300502800702809500732524a00a005095005363005095005084", - "0x2836300525600524202802836300535b00533d028028363005009005047", - "0x524a00504f02831f00536300525300503102802836300535600501f028", - "0x2800702802844400502804d02831e00536300531f005092028098005363", - "0x503102802836300535600501f02802836300535b00533d028028363005", - "0x536300524a00504f02831d00536300525200535b02809600536300524b", - "0x50840280070053630050070050c002809600536300509600509202824a", - "0x2836102802836300502800702831d00709624a00a00531d00536300531d", - "0x533d02802836300535600501f028028363005048005047028028363005", - "0x2831c00536300504000503102802836300521900501c02802836300535b", - "0x36300502802002831e00536300531c00509202809800536300502d00504f", - "0x735c02831900536300531900501b02831900536300502805e02831a005", - "0x36300531831700702d02831700536300502802302831800536300531931a", - "0x9202809800536300509800504f02831500536300531600535b028316005", - "0x3630053150050840280070053630050070050c002831e00536300531e005", - "0x36300535700501c02802836300502800702831500731e09800a005315005", - "0x508400503102802836300500b00506002802836300535b00533d028028", - "0x501b028312005363005028048028313005363005028020028314005363", - "0x536300502802302831100536300531231300735c028312005363005312", - "0x4f02830c00536300530e00535b02830e00536300531130f00702d02830f", - "0x3630050070050c002831400536300531400509202802d00536300502d005", - "0x502800702830c00731402d00a00530c00536300530c005084028007005", - "0x2300503102802836300500b00506002802836300535f00501c028028363", - "0xb00053630050a900509202830b0053630050c000504f0280a9005363005", - "0x4702802836300502836102802836300502800702802844500502804d028", - "0x2802836300500b00506002802836300535f00501c02802836300535c005", - "0x36300500f00504f0280ac00536300501c005031028028363005092005060", - "0x2804502830a0053630050280200280b00053630050ac00509202830b005", - "0x536300530830a00735c02830800536300530800501b028308005363005", - "0x535b0283050053630050b40b600702d0280b60053630050280230280b4", - "0x53630050b000509202830b00536300530b00504f0280b9005363005305", - "0x30b00a0050b90053630050b90050840280070053630050070050c00280b0", - "0xb0050600280283630050920050600280283630050280070280b90070b0", - "0x2002830300536300504e005031028028363005031005242028028363005", - "0x30100536300530100501b028301005363005028046028302005363005028", - "0x2ff00702d0282ff00536300502802302830000536300530130200735c028", - "0x53630051c600504f0280bf0053630052fe00535b0282fe005363005300", - "0x50840280070053630050070050c00283030053630053030050920281c6", - "0x70050280283630050280280280bf0073031c600a0050bf0053630050bf", - "0x503102802836300502800702809204f00744600b00a007363007005028", - "0x2802836300502800b02801000536300503100500a02800f00536300500b", - "0x701000500f02800f00536300500f00509202800a00536300500a00504f", - "0x536300500f00503102802836300502800702801300544704e1c6007363", - "0x501302803000536300501400509202804d00536300504e005256028014", - "0x2802844800502804d02801800536300504d0052580280170053630051c6", - "0x36000536300502803002836100536300500f005031028028363005028007", - "0x1300501302803000536300536100509202801b005363005360005050028", - "0x1c00536300701800500902801800536300501b005258028017005363005", - "0x503000503102802836300502836102802836300502800702835f005449", - "0x2802000536300501f0051c602801f00536300501c00501002835e005363", - "0x2000a0070ac02835e00536300535e00509202802000536300502000501b", - "0x35e00503102802836300502800702835b02d02303144a35c35d007363007", - "0xc00053630050c000509202835d00536300535d00504f0280c0005363005", - "0x1c0280283630050280070281a800544b35908400736300701700500f028", - "0x2802836300535c00530a02802836300535900535f028028363005084005", - "0x536300502835d0280320053630050280200283570053630050c0005031", - "0x2302836400536300535603200735c02835600536300535600501b028356", - "0x36300500c00535b02800c00536300536403300702d028033005363005028", - "0xc002835700536300535700509202835d00536300535d00504f02803c005", - "0x3c00735735d00a00503c00536300503c005084028007005363005007005", - "0x53630050c00050310280283630051a800501c028028363005028007028", - "0x400051a8028036005363005036005092028040005363005028359028036", - "0x2822d22700744c21d21900736300704003635d031357028040005363005", - "0x536300521900504f02823100536300521d005031028028363005028007", - "0x310b402835c00536300535c005308028231005363005231005092028219", - "0x24200544d0450053630070470050b602804704804603136300535c231219", - "0x5363005028020028246005363005048005031028028363005028007028", - "0x735c02824b00536300524a0050b902824a005363005045005305028249", - "0x524f00504002825224f00736300524c00503602824c00536300524b249", - "0x22702825600536300525300521d028253005363005252005219028028363", - "0x36300524600509202804600536300504600504f028258005363005256005", - "0xa0052580053630052580050840280070053630050070050c0028246005", - "0x35b028050005363005048005031028028363005028007028258007246046", - "0x36300505000509202804600536300504600504f028009005363005242005", - "0xa0050090053630050090050840280070053630050070050c0028050005", - "0x503102802836300535c00530a028028363005028007028009007050046", - "0x2805900536300502804602805800536300502802002805b00536300522d", - "0x502802302805c00536300505905800735c02805900536300505900501b", - "0x27700536300527500535b02827500536300505c26c00702d02826c005363", - "0x70050c002805b00536300505b00509202822700536300522700504f028", - "0x702827700705b22700a005277005363005277005084028007005363005", - "0x1c02802836300535b00530a02802836300502d00530a028028363005028", - "0x536300502300504f02805e00536300535e005031028028363005017005", - "0x36300502800702802844e00502804d02805f00536300505e005092028060", - "0x36300501700501c02802836300535f005047028028363005028361028028", - "0x509202806000536300500a00504f02805d005363005030005031028028", - "0x282bc0053630050280450282af00536300502802002805f00536300505d", - "0x50280230280420053630052bc2af00735c0282bc0053630052bc00501b", - "0x6900536300530600535b02830600536300504206700702d028067005363", - "0x70050c002805f00536300505f00509202806000536300506000504f028", - "0x702806900705f06000a005069005363005069005084028007005363005", - "0x28068005363005092005031028028363005031005242028028363005028", - "0x536300506f00501b02806f005363005028046028006005363005028020", - "0x702d02834700536300502802302807100536300506f00600735c02806f", - "0x36300504f00504f02807500536300507400535b028074005363005071347", - "0x840280070053630050070050c002806800536300506800509202804f005", - "0x502802836300502802802807500706804f00a005075005363005075005", - "0x3102802836300502800702809204f00744f00b00a007363007005028007", - "0x36300500a00504f02801000536300503100500a02800f00536300500b005", - "0x45004e1c600736300701000500f02800f00536300500f00509202800a005", - "0x504e00535f0280283630051c600501c028028363005028007028013005", - "0x2835d02804d00536300502802002801400536300500f005031028028363", - "0x536300503004d00735c02803000536300503000501b028030005363005", - "0x535b02836100536300501701800702d028018005363005028023028017", - "0x536300501400509202800a00536300500a00504f028360005363005361", - "0xa00a0053600053630053600050840280070053630050070050c0028014", - "0xf00503102802836300501300501c028028363005028007028360007014", - "0x2801b00536300501b00509202801c00536300502835902801b005363005", - "0x745135e35f00736300701c01b00a03135702801c00536300501c0051a8", - "0x502833b02835d00536300535e00503102802836300502800702802001f", - "0x2835d00536300535d00509202835f00536300535f00504f02835c005363", - "0x35b02d02300a36300535c00735d35f00a3030280070053630050070050c0", - "0x3350280283630050280070283590054520840053630070c00053360280c0", - "0x3570053630050280200281a800536300502d005031028028363005084005", - "0x356005219028028363005032005040028356032007363005357005036028", - "0xc00536300503300522702803300536300536400521d028364005363005", - "0x35b0050c00281a80053630051a800509202802300536300502300504f028", - "0x702800c35b1a802300a00500c00536300500c00508402835b005363005", - "0x3600536300535900535b02803c00536300502d005031028028363005028", - "0x35b0050c002803c00536300503c00509202802300536300502300504f028", - "0x702803635b03c02300a00503600536300503600508402835b005363005", - "0x28219005363005028020028040005363005020005031028028363005028", - "0x521d21900735c02821d00536300521d00501b02821d005363005028046", - "0x2823100536300522722d00702d02822d005363005028023028227005363", - "0x504000509202801f00536300501f00504f02804600536300523100535b", - "0x50460053630050460050840280070053630050070050c0028040005363", - "0x3102802836300503100524202802836300502800702804600704001f00a", - "0x45005363005028046028047005363005028020028048005363005092005", - "0x2802302824200536300504504700735c02804500536300504500501b028", - "0x536300524900535b02824900536300524224600702d028246005363005", - "0x50c002804800536300504800509202804f00536300504f00504f02824a", - "0x2824a00704804f00a00524a00536300524a005084028007005363005007", - "0x2809204f00745300b00a007363007005028007005028028363005028028", - "0x536300503100500a02800f00536300500b005031028028363005028007", - "0x500f02800f00536300500f00509202800a00536300500a00504f028010", - "0x51c600501c02802836300502800702801300545404e1c6007363007010", - "0x2802002801400536300500f00503102802836300504e00535f028028363", - "0x2803000536300503000501b02803000536300502835d02804d005363005", - "0x1701800702d02801800536300502802302801700536300503004d00735c", - "0xa00536300500a00504f02836000536300536100535b028361005363005", - "0x3600050840280070053630050070050c0028014005363005014005092028", - "0x1300501c02802836300502800702836000701400a00a005360005363005", - "0x9202801c00536300502835902801b00536300500f005031028028363005", - "0x1c01b00a03135702801c00536300501c0051a802801b00536300501b005", - "0x535e00503102802836300502800702802001f00745535e35f007363007", - "0x9202835f00536300535f00504f02835c00536300502833b02835d005363", - "0x735d35f00a3020280070053630050070050c002835d00536300535d005", - "0x283590054560840053630070c00053360280c035b02d02300a36300535c", - "0x1a800536300502d005031028028363005084005335028028363005028007", - "0x32005040028356032007363005357005036028357005363005028020028", - "0x2803300536300536400521d028364005363005356005219028028363005", - "0x51a800509202802300536300502300504f02800c005363005033005227", - "0x500c00536300500c00508402835b00536300535b0050c00281a8005363", - "0x2803c00536300502d00503102802836300502800702800c35b1a802300a", - "0x503c00509202802300536300502300504f02803600536300535900535b", - "0x503600536300503600508402835b00536300535b0050c002803c005363", - "0x2804000536300502000503102802836300502800702803635b03c02300a", - "0x536300521d00501b02821d005363005028046028219005363005028020", - "0x702d02822d00536300502802302822700536300521d21900735c02821d", - "0x36300501f00504f02804600536300523100535b02823100536300522722d", - "0x840280070053630050070050c002804000536300504000509202801f005", - "0x24202802836300502800702804600704001f00a005046005363005046005", - "0x47005363005028020028048005363005092005031028028363005031005", - "0x4504700735c02804500536300504500501b028045005363005028046028", - "0x24900536300524224600702d028246005363005028023028242005363005", - "0x4800509202804f00536300504f00504f02824a00536300524900535b028", - "0x24a00536300524a0050840280070053630050070050c0028048005363005", - "0x736300700702800700502802836300502802802824a00704804f00a005", - "0x1000536300504f00503102802836300502800702800f09200745704f00b", - "0x1000509202800b00536300500b00504f0281c600536300500a00500a028", - "0x502800702801400545801304e0073630071c600500f028010005363005", - "0x1000503102802836300501300535f02802836300504e00501c028028363", - "0x1b02801700536300502835d02803000536300502802002804d005363005", - "0x36300502802302801800536300501703000735c028017005363005017005", - "0x2801b00536300536000535b02836000536300501836100702d028361005", - "0x504d00509202800500536300500500530102800b00536300500b00504f", - "0x501b00536300501b0050840280310053630050310050c002804d005363", - "0x2802836300501400501c02802836300502800702801b03104d00500b00b", - "0x36300501c00509202835f00536300502835902801c005363005010005031", - "0x35e00736300735f01c00b03135702835f00536300535f0051a802801c005", - "0x2835c00536300501f00503102802836300502800702835d02000745901f", - "0x36300535c00509202835e00536300535e00504f02802300536300502833b", - "0x3000280310053630050310050c002800500536300500500530102835c005", - "0x3630073590053360283590840c035b02d00b36300502303100535c35e00b", - "0x310280283630051a800533502802836300502800702835700545a1a8005", - "0x736300535600503602835600536300502802002803200536300535b005", - "0x521d02800c005363005033005219028028363005364005040028033364", - "0x536300502d00504f02803600536300503c00522702803c00536300500c", - "0x50c00280320053630050320050920280c00053630050c000530102802d", - "0x360840320c002d00b005036005363005036005084028084005363005084", - "0x36300535700535b02804000536300535b005031028028363005028007028", - "0x920280c00053630050c000530102802d00536300502d00504f028219005", - "0x3630052190050840280840053630050840050c0028040005363005040005", - "0x535d0050310280283630050280070282190840400c002d00b005219005", - "0x501b02822d00536300502804602822700536300502802002821d005363", - "0x536300502802302823100536300522d22700735c02822d00536300522d", - "0x4f02804700536300504800535b02804800536300523104600702d028046", - "0x36300521d005092028005005363005005005301028020005363005020005", - "0xb0050470053630050470050840280310053630050310050c002821d005", - "0x3102802836300500a00524202802836300502800702804703121d005020", - "0x24600536300502804602824200536300502802002804500536300500f005", - "0x2802302824900536300524624200735c02824600536300524600501b028", - "0x536300524b00535b02824b00536300524924a00702d02824a005363005", - "0x509202800500536300500500530102809200536300509200504f02824c", - "0x536300524c0050840280310053630050310050c0028045005363005045", - "0x700502800700502802836300502802802824c03104500509200b00524c", - "0x36300500b00503102802836300502800702809204f00745b00b00a007363", - "0x9202800a00536300500a00504f02801000536300503100500a02800f005", - "0x702801300545c04e1c600736300701000500f02800f00536300500f005", - "0x3102802836300504e00535f0280283630051c600501c028028363005028", - "0x3000536300502835d02804d00536300502802002801400536300500f005", - "0x2802302801700536300503004d00735c02803000536300503000501b028", - "0x536300536100535b02836100536300501701800702d028018005363005", - "0x50c002801400536300501400509202800a00536300500a00504f028360", - "0x2836000701400a00a005360005363005360005084028007005363005007", - "0x1b00536300500f00503102802836300501300501c028028363005028007", - "0x501c0051a802801b00536300501b00509202801c005363005028359028", - "0x702802001f00745d35e35f00736300701c01b00a03135702801c005363", - "0x2835c00536300502833b02835d00536300535e005031028028363005028", - "0x50070050c002835d00536300535d00509202835f00536300535f00504f", - "0x53360280c035b02d02300a36300535c00735d35f00a2ff028007005363", - "0x36300508400533502802836300502800702835900545e0840053630070c0", - "0x3570050360283570053630050280200281a800536300502d005031028028", - "0x364005363005356005219028028363005032005040028356032007363005", - "0x2300504f02800c00536300503300522702803300536300536400521d028", - "0x35b00536300535b0050c00281a80053630051a8005092028023005363005", - "0x2836300502800702800c35b1a802300a00500c00536300500c005084028", - "0x2300504f02803600536300535900535b02803c00536300502d005031028", - "0x35b00536300535b0050c002803c00536300503c005092028023005363005", - "0x2836300502800702803635b03c02300a005036005363005036005084028", - "0x363005028046028219005363005028020028040005363005020005031028", - "0x2822700536300521d21900735c02821d00536300521d00501b02821d005", - "0x523100535b02823100536300522722d00702d02822d005363005028023", - "0x2804000536300504000509202801f00536300501f00504f028046005363", - "0x704001f00a0050460053630050460050840280070053630050070050c0", - "0x363005092005031028028363005031005242028028363005028007028046", - "0x4500501b028045005363005028046028047005363005028020028048005", - "0x24600536300502802302824200536300504504700735c028045005363005", - "0x504f02824a00536300524900535b02824900536300524224600702d028", - "0x53630050070050c002804800536300504800509202804f00536300504f", - "0x36300502802802824a00704804f00a00524a00536300524a005084028007", - "0x36300502800702809204f00745f00b00a007363007005028007005028028", - "0x504f02801000536300503100500a02800f00536300500b005031028028", - "0x736300701000500f02800f00536300500f00509202800a00536300500a", - "0x2801400536300500f00503102802836300502800702801300546004e1c6", - "0x50140050920281c60053630051c600501302804d00536300504e005010", - "0x170300073630071c600500f02804d00536300504d00501b028014005363", - "0x5010028361005363005014005031028028363005028007028018005461", - "0x5363005361005092028030005363005030005013028360005363005017", - "0x546201c01b00736300703000500f02836000536300536000501b028361", - "0x36300501c00535f02802836300501b00501c02802836300502800702835f", - "0x536100503102802836300504d00501f02802836300536000501f028028", - "0x501b02802000536300502835d02801f00536300502802002835e005363", - "0x536300502802302835d00536300502001f00735c028020005363005020", - "0x4f02802d00536300502300535b02802300536300535d35c00702d02835c", - "0x3630050070050c002835e00536300535e00509202800a00536300500a005", - "0x502800702802d00735e00a00a00502d00536300502d005084028007005", - "0x2835902835b00536300536100503102802836300535f00501c028028363", - "0xc00053630050c00051a802835b00536300535b0050920280c0005363005", - "0x3630050280070283571a80074633590840073630070c035b00a031357028", - "0x51c602835600536300504d0051c6028032005363005359005031028028", - "0x36300503300501b028033005363005364356007326028364005363005360", - "0x34202803200536300503200509202808400536300508400504f028033005", - "0x36300503200503102802836300502800702800c005464028363007033005", - "0x4000501b0280400053630050282fe02803600536300502802002803c005", - "0x736300521900503602821900536300504003600735c028040005363005", - "0x521d02822d00536300522700521902802836300521d00504002822721d", - "0x536300508400504f02804600536300523100522702823100536300522d", - "0x50840280070053630050070050c002803c00536300503c005092028084", - "0x534002802836300502800702804600703c08400a005046005363005046", - "0x2804700536300502802002804800536300503200503102802836300500c", - "0x504504700735c02804500536300504500501b0280450053630050280bf", - "0x2824900536300524224600702d028246005363005028023028242005363", - "0x504800509202808400536300508400504f02824a00536300524900535b", - "0x524a00536300524a0050840280070053630050070050c0028048005363", - "0x1f02802836300536000501f02802836300502800702824a00704808400a", - "0x24c00536300502802002824b00536300535700503102802836300504d005", - "0x24f24c00735c02824f00536300524f00501b02824f005363005028046028", - "0x25600536300525225300702d028253005363005028023028252005363005", - "0x24b0050920281a80053630051a800504f02825800536300525600535b028", - "0x2580053630052580050840280070053630050070050c002824b005363005", - "0x2802836300501800501c02802836300502800702825800724b1a800a005", - "0x536300502802002805000536300501400503102802836300504d00501f", - "0x900735c02805b00536300505b00501b02805b005363005028048028009", - "0x536300505805900702d02805900536300502802302805800536300505b", - "0x509202800a00536300500a00504f02826c00536300505c00535b02805c", - "0x536300526c0050840280070053630050070050c0028050005363005050", - "0x2836300501300501c02802836300502800702826c00705000a00a00526c", - "0x36300502804502827700536300502802002827500536300500f005031028", - "0x2806000536300505e27700735c02805e00536300505e00501b02805e005", - "0x505d00535b02805d00536300506005f00702d02805f005363005028023", - "0x2827500536300527500509202800a00536300500a00504f0282af005363", - "0x727500a00a0052af0053630052af0050840280070053630050070050c0", - "0x3630050920050310280283630050310052420280283630050280070282af", - "0x6700501b0280670053630050280460280420053630050280200282bc005", - "0x6900536300502802302830600536300506704200735c028067005363005", - "0x504f02800600536300506800535b02806800536300530606900702d028", - "0x53630050070050c00282bc0053630052bc00509202804f00536300504f", - "0x3630050280280280060072bc04f00a005006005363005006005084028007", - "0x36300502800702809204f00746500b00a007363007005028007005028028", - "0x2800b02801000536300503100500a02800f00536300500b005031028028", - "0x2800f00536300500f00509202800a00536300500a00504f028028363005", - "0x503102802836300502800702801300546604e1c600736300701000500f", - "0x536300501400509202804d00536300504e00525602801400536300500f", - "0x2804d02801800536300504d0052580280170053630051c6005013028030", - "0x2803002836100536300500f005031028028363005028007028028467005", - "0x3000536300536100509202801b005363005360005050028360005363005", - "0x1800500902801800536300501b005258028017005363005013005013028", - "0x2802836300502836102802836300502800702835f00546801c005363007", - "0x36300502802002801f00536300501c00501002835e005363005030005031", - "0x4f02835c00536300501f0051c602835d005363005017005219028020005", - "0x36300535d00505b02835e00536300535e00509202800a00536300500a005", - "0x5802835c00536300535c00501b02802000536300502000522d02835d005", - "0xc000536300735b00505902835b02d02303136300535c02035d35e00a00b", - "0x505c02835900536300502d005031028028363005028007028084005469", - "0x36300735700526c0283590053630053590050920283571a80073630050c0", - "0x2836400536300535900503102802836300502800702835600546a032005", - "0x703300500f0283640053630053640050920280330053630051a800500a", - "0x2836300500c00501c02802836300502800702803600546b03c00c007363", - "0x36300536400503102802836300503200504002802836300503c00535f028", - "0x21d00501b02821d00536300502835d028219005363005028020028040005", - "0x22d00536300502802302822700536300521d21900735c02821d005363005", - "0x504f02804600536300523100535b02823100536300522722d00702d028", - "0x53630050070050c0028040005363005040005092028023005363005023", - "0x36300502800702804600704002300a005046005363005046005084028007", - "0x502835902804800536300536400503102802836300503600501c028028", - "0x280470053630050470051a8028048005363005048005092028047005363", - "0x2836300502800702824924600746c242045007363007047048023031357", - "0x504500504f02824b00536300502833b02824a005363005242005031028", - "0x280070053630050070050c002824a00536300524a005092028045005363", - "0x24f24c00a36300503224b00724a04500b2fd02803200536300503200522d", - "0x2802836300502800702825800546d2560053630072530052fc028253252", - "0x3630052560052fb02800900536300502802002805000536300524f005031", - "0x2805900536300505800900735c02802836300505b00531c02805805b007", - "0x526c00521902802836300505c00504002826c05c007363005059005036", - "0x2805e00536300527700522702827700536300527500521d028275005363", - "0x52520050c002805000536300505000509202824c00536300524c00504f", - "0x2800702805e25205024c00a00505e00536300505e005084028252005363", - "0x2805f00536300525800535b02806000536300524f005031028028363005", - "0x52520050c002806000536300506000509202824c00536300524c00504f", - "0x2800702805f25206024c00a00505f00536300505f005084028252005363", - "0x2002805d005363005249005031028028363005032005040028028363005", - "0x2bc0053630052bc00501b0282bc0053630050280460282af005363005028", - "0x6700702d0280670053630050280230280420053630052bc2af00735c028", - "0x536300524600504f02806900536300530600535b028306005363005042", - "0x50840280070053630050070050c002805d00536300505d005092028246", - "0x504702802836300502800702806900705d24600a005069005363005069", - "0x280680053630053590050310280283630051a8005242028028363005356", - "0x46e00502804d02806f00536300506800509202800600536300502300504f", - "0x508400535b02807100536300502d005031028028363005028007028028", - "0x2807100536300507100509202802300536300502300504f028347005363", - "0x707102300a0053470053630053470050840280070053630050070050c0", - "0x2836300535f005047028028363005028361028028363005028007028347", - "0x500a00504f02807400536300503000503102802836300501700501c028", - "0x4502807500536300502802002806f005363005074005092028006005363", - "0x36300507707500735c02807700536300507700501b028077005363005028", - "0x35b02804300536300534634500702d028345005363005028023028346005", - "0x36300506f00509202800600536300500600504f02807a005363005043005", - "0xa00507a00536300507a0050840280070053630050070050c002806f005", - "0x503102802836300503100524202802836300502800702807a00706f006", - "0x2834200536300502804602807f005363005028020028079005363005092", - "0x502802302808100536300534207f00735c02834200536300534200501b", - "0x33f00536300534000535b02834000536300508107d00702d02807d005363", - "0x70050c002807900536300507900509202804f00536300504f00504f028", - "0x2802833f00707904f00a00533f00536300533f005084028007005363005", - "0x702809204f00746f00b00a007363007005028007005028028363005028", - "0x1000536300503100500a02800f00536300500b005031028028363005028", - "0x1000500f02800f00536300500f00509202800a00536300500a00504f028", - "0x3630051c600501c02802836300502800702801300547004e1c6007363007", - "0x502802002801400536300500f00503102802836300504e00535f028028", - "0x35c02803000536300503000501b02803000536300502835d02804d005363", - "0x501701800702d02801800536300502802302801700536300503004d007", - "0x2800a00536300500a00504f02836000536300536100535b028361005363", - "0x53600050840280070053630050070050c0028014005363005014005092", - "0x501300501c02802836300502800702836000701400a00a005360005363", - "0x509202801c00536300502835902801b00536300500f005031028028363", - "0x701c01b00a03135702801c00536300501c0051a802801b00536300501b", - "0x36300535e00503102802836300502800702802001f00747135e35f007363", - "0x2300501b02802300536300502805102835c00536300502802002835d005", - "0x35b00536300502802302802d00536300502335c00735c028023005363005", - "0x504f0280840053630050c000535b0280c000536300502d35b00702d028", - "0x53630050070050c002835d00536300535d00509202835f00536300535f", - "0x36300502800702808400735d35f00a005084005363005084005084028007", - "0x50280460281a8005363005028020028359005363005020005031028028", - "0x320053630053571a800735c02835700536300535700501b028357005363", - "0x36400535b02836400536300503235600702d028356005363005028023028", - "0x35900536300535900509202801f00536300501f00504f028033005363005", - "0x35901f00a0050330053630050330050840280070053630050070050c0028", - "0x5092005031028028363005031005242028028363005028007028033007", - "0x501b02803600536300502804602803c00536300502802002800c005363", - "0x536300502802302804000536300503603c00735c028036005363005036", - "0x4f02822700536300521d00535b02821d00536300504021900702d028219", - "0x3630050070050c002800c00536300500c00509202804f00536300504f005", - "0x502802802822700700c04f00a005227005363005227005084028007005", - "0x502800702809204f00747200b00a007363007005028007005028028363", - "0x4f02801000536300503100500a02800f00536300500b005031028028363", - "0x36300701000500f02800f00536300500f00509202800a00536300500a005", - "0x1400536300500f00503102802836300502800702801300547304e1c6007", - "0x140050920281c60053630051c600501302804d00536300504e005010028", - "0x300073630071c600500f02804d00536300504d00501b028014005363005", - "0x535f02802836300503000501c028028363005028007028018005474017", - "0x2836100536300501400503102802836300504d00501f028028363005017", - "0x536300501b00501b02801b00536300502835d028360005363005028020", - "0x702d02835f00536300502802302801c00536300501b36000735c02801b", - "0x36300500a00504f02801f00536300535e00535b02835e00536300501c35f", - "0x840280070053630050070050c002836100536300536100509202800a005", - "0x1c02802836300502800702801f00736100a00a00501f00536300501f005", - "0x35d005363005028359028020005363005014005031028028363005018005", - "0xa03135702835d00536300535d0051a8028020005363005020005092028", - "0x503102802836300502800702835b02d00747502335c00736300735d020", - "0x35900536300502833b02808400536300504d0051c60280c0005363005023", - "0x8400501b0280c00053630050c000509202835c00536300535c00504f028", - "0x53360280323571a80313630050843590c035c00a38b028084005363005", - "0x363005356005335028028363005028007028364005476356005363007032", - "0xc00503602800c005363005028020028033005363005357005031028028", - "0x4000536300503600521902802836300503c00504002803603c007363005", - "0x1a800504f02821d00536300521900522702821900536300504000521d028", - "0x70053630050070050c00280330053630050330050920281a8005363005", - "0x2836300502800702821d0070331a800a00521d00536300521d005084028", - "0x1a800504f02822d00536300536400535b028227005363005357005031028", - "0x70053630050070050c00282270053630052270050920281a8005363005", - "0x2836300502800702822d0072271a800a00522d00536300522d005084028", - "0x36300502802002823100536300535b00503102802836300504d00501f028", - "0x735c02804800536300504800501b028048005363005028046028046005", - "0x36300504704500702d028045005363005028023028047005363005048046", - "0x9202802d00536300502d00504f02824600536300524200535b028242005", - "0x3630052460050840280070053630050070050c0028231005363005231005", - "0x36300501300501c02802836300502800702824600723102d00a005246005", - "0x502804502824a00536300502802002824900536300500f005031028028", - "0x24c00536300524b24a00735c02824b00536300524b00501b02824b005363", - "0x25200535b02825200536300524c24f00702d02824f005363005028023028", - "0x24900536300524900509202800a00536300500a00504f028253005363005", - "0x24900a00a0052530053630052530050840280070053630050070050c0028", - "0x5092005031028028363005031005242028028363005028007028253007", - "0x501b028050005363005028046028258005363005028020028256005363", - "0x536300502802302800900536300505025800735c028050005363005050", - "0x4f02805900536300505800535b02805800536300500905b00702d02805b", - "0x3630050070050c002825600536300525600509202804f00536300504f005", - "0x502802802805900725604f00a005059005363005059005084028007005", - "0x502800702809204f00747700b00a007363007005028007005028028363", - "0x4f02801000536300503100500a02800f00536300500b005031028028363", - "0x36300701000500f02800f00536300500f00509202800a00536300500a005", - "0x1400536300500f00503102802836300502800702801300547804e1c6007", - "0x140050920281c60053630051c600501302804d00536300504e005010028", - "0x300073630071c600500f02804d00536300504d00501b028014005363005", - "0x535f02802836300503000501c028028363005028007028018005479017", - "0x2836100536300501400503102802836300504d00501f028028363005017", - "0x536300501b00501b02801b00536300502835d028360005363005028020", - "0x702d02835f00536300502802302801c00536300501b36000735c02801b", - "0x36300500a00504f02801f00536300535e00535b02835e00536300501c35f", - "0x840280070053630050070050c002836100536300536100509202800a005", - "0x1c02802836300502800702801f00736100a00a00501f00536300501f005", - "0x35d005363005028359028020005363005014005031028028363005018005", - "0xa03135702835d00536300535d0051a8028020005363005020005092028", - "0x503102802836300502800702835b02d00747a02335c00736300735d020", - "0x35900536300502833b02808400536300504d0051c60280c0005363005023", - "0x8400501b0280c00053630050c000509202835c00536300535c00504f028", - "0x53360280323571a80313630050843590c035c00a38c028084005363005", - "0x36300535600533502802836300502800702836400547b356005363007032", - "0xc00503602800c005363005028020028033005363005357005031028028", - "0x4000536300503600521902802836300503c00504002803603c007363005", - "0x1a800504f02821d00536300521900522702821900536300504000521d028", - "0x70053630050070050c00280330053630050330050920281a8005363005", - "0x2836300502800702821d0070331a800a00521d00536300521d005084028", - "0x1a800504f02822d00536300536400535b028227005363005357005031028", - "0x70053630050070050c00282270053630052270050920281a8005363005", - "0x2836300502800702822d0072271a800a00522d00536300522d005084028", - "0x36300502802002823100536300535b00503102802836300504d00501f028", - "0x735c02804800536300504800501b028048005363005028046028046005", - "0x36300504704500702d028045005363005028023028047005363005048046", - "0x9202802d00536300502d00504f02824600536300524200535b028242005", - "0x3630052460050840280070053630050070050c0028231005363005231005", - "0x36300501300501c02802836300502800702824600723102d00a005246005", - "0x502804502824a00536300502802002824900536300500f005031028028", - "0x24c00536300524b24a00735c02824b00536300524b00501b02824b005363", - "0x25200535b02825200536300524c24f00702d02824f005363005028023028", - "0x24900536300524900509202800a00536300500a00504f028253005363005", - "0x24900a00a0052530053630052530050840280070053630050070050c0028", - "0x5092005031028028363005031005242028028363005028007028253007", - "0x501b028050005363005028046028258005363005028020028256005363", - "0x536300502802302800900536300505025800735c028050005363005050", - "0x4f02805900536300505800535b02805800536300500905b00702d02805b", - "0x3630050070050c002825600536300525600509202804f00536300504f005", - "0x502802802805900725604f00a005059005363005059005084028007005", - "0x502800702809204f00747c00b00a007363007005028007005028028363", - "0xb02801000536300503100500a02800f00536300500b005031028028363", - "0xf00536300500f00509202800a00536300500a00504f028028363005028", - "0x3102802836300502800702801300547d04e1c600736300701000500f028", - "0x36300504d0051c602804d00536300504e00501002801400536300500f005", - "0x1302801800536300501400509202801700536300503000504e028030005", - "0x2847e00502804d0283600053630050170050140283610053630051c6005", - "0x536300502803002801b00536300500f005031028028363005028007028", - "0x501302801800536300501b00509202835f00536300501c00501702801c", - "0x536300736000501802836000536300535f005014028361005363005013", - "0x1800503102802836300502836102802836300502800702801f00547f35e", - "0x736300735e00a007253028020005363005020005092028020005363005", - "0x2802d00536300502000503102802836300502800702802300548035c35d", - "0x736100500f02802d00536300502d00509202835d00536300535d00504f", - "0x536300502d0050310280283630050280070280840054810c035b007363", - "0x509202835b00536300535b0050130281a80053630050c0005010028359", - "0x736300735b00500f0281a80053630051a800501b028359005363005359", - "0x28364005363005359005031028028363005028007028356005482032357", - "0x5364005092028357005363005357005013028033005363005032005010", - "0x3c00c00736300735700500f02803300536300503300501b028364005363", - "0x3c00535f02802836300500c00501c028028363005028007028036005483", - "0x527502802836300503300501f0280283630051a800501f028028363005", - "0x2821900536300502802002804000536300536400503102802836300535c", - "0x521d21900735c02821d00536300521d00501b02821d00536300502835d", - "0x2823100536300522722d00702d02822d005363005028023028227005363", - "0x504000509202835d00536300535d00504f02804600536300523100535b", - "0x50460053630050460050840280070053630050070050c0028040005363", - "0x3102802836300503600501c02802836300502800702804600704035d00a", - "0x5363005048005092028047005363005028359028048005363005364005", - "0x24204500736300704704835d0313570280470053630050470051a8028048", - "0x1c602824a005363005242005031028028363005028007028249246007484", - "0x24b00736300524b00538d02802836300502800b02824b005363005033005", - "0x534202824a00536300524a00509202804500536300504500504f02824c", - "0x2836300524b00501f02802836300502800702824f00548502836300724c", - "0x36300524a00503102802836300535c0052750280283630051a800501f028", - "0x4d0282560053630050070050c0028253005363005252005092028252005", - "0x503102802836300524f005340028028363005028007028028486005028", - "0x35c00736300535c0050dc02805000536300502802002825800536300524a", - "0x1c602805800536300505b05000735c02805b00536300500900538f028009", - "0x5c05800735c02805c05900736300505900538d0280590053630051a8005", - "0x27700536300527524b00732602827500536300502824a02826c005363005", - "0x503602805e00536300527726c00735c02827700536300527700501b028", - "0x536300505f00521902802836300506000504002805f06000736300505e", - "0xb27702805d00536300505d00505b02825800536300525800509202805d", - "0x50280070280693060670314870422bc2af03136300705d05935c007258", - "0x50310282af0053630052af005092028028363005042005242028028363", - "0x53630052bc0050c00282530053630050680050920280680053630052af", - "0x363005006005036028006005363005028020028028363005028361028256", - "0x21d02834700536300507100521902802836300506f00504002807106f007", - "0x36300504500504f028075005363005074005227028074005363005347005", - "0x840282560053630052560050c0028253005363005253005092028045005", - "0x36102802836300502800702807525625304500a005075005363005075005", - "0x77005363005067005031028067005363005067005092028028363005028", - "0x34500535b02834500536300506934600702d028346005363005028023028", - "0x7700536300507700509202804500536300504500504f028043005363005", - "0x7704500a0050430053630050430050840283060053630053060050c0028", - "0x503300501f0280283630051a800501f028028363005028007028043306", - "0x2802002807a00536300524900503102802836300535c005275028028363", - "0x2807f00536300507f00501b02807f005363005028046028079005363005", - "0x34208100702d02808100536300502802302834200536300507f07900735c", - "0x24600536300524600504f02834000536300507d00535b02807d005363005", - "0x3400050840280070053630050070050c002807a00536300507a005092028", - "0x35600501c02802836300502800702834000707a24600a005340005363005", - "0x50310280283630051a800501f02802836300535c005275028028363005", - "0x2833d00536300502805e02833e00536300502802002833f005363005359", - "0x502802302833c00536300533d33e00735c02833d00536300533d00501b", - "0x8c00536300533700535b02833700536300533c33b00702d02833b005363", - "0x70050c002833f00536300533f00509202835d00536300535d00504f028", - "0x702808c00733f35d00a00508c00536300508c005084028007005363005", - "0x3102802836300535c00527502802836300508400501c028028363005028", - "0x8a00536300502804802833500536300502802002833600536300502d005", - "0x2802302833400536300508a33500735c02808a00536300508a00501b028", - "0x536300508800535b02808800536300533433300702d028333005363005", - "0x50c002833600536300533600509202835d00536300535d00504f028332", - "0x2833200733635d00a005332005363005332005084028007005363005007", - "0x33100536300502000503102802836300536100501c028028363005028007", - "0x502804d02808600536300533100509202833000536300502300504f028", - "0x36300501f005047028028363005028361028028363005028007028028488", - "0xa00504f02808e00536300501800503102802836300536100501c028028", - "0x2836f00536300502802002808600536300508e005092028330005363005", - "0x532d36f00735c02832d00536300532d00501b02832d005363005028045", - "0x2832a00536300532c32b00702d02832b00536300502802302832c005363", - "0x508600509202833000536300533000504f02832900536300532a00535b", - "0x53290053630053290050840280070053630050070050c0028086005363", - "0x3102802836300503100524202802836300502800702832900708633000a", - "0x326005363005028046028327005363005028020028328005363005092005", - "0x2802302808b00536300532632700735c02832600536300532600501b028", - "0x536300532400535b02832400536300508b32500702d028325005363005", - "0x50c002832800536300532800509202804f00536300504f00504f028323", - "0x2832300732804f00a005323005363005323005084028007005363005007", - "0x2800f09200748904f00b007363007007005007005028028363005028028", - "0x536300500a00500a02801000536300504f005031028028363005028007", - "0x500f02801000536300501000509202800b00536300500b00504f0281c6", - "0x501000503102802836300502800702801400548a01304e0073630071c6", - "0x2804e00536300504e00501302803000536300501300501002804d005363", - "0x704e00500f02803000536300503000501b02804d00536300504d005092", - "0x536300504d00503102802836300502800702836100548b018017007363", - "0x509202801700536300501700501302801b005363005018005010028360", - "0x736300701700500f02801b00536300501b00501b028360005363005360", - "0x2801f00536300536000503102802836300502800702835e00548c35f01c", - "0x501f00509202801c00536300501c00501302802000536300535f005010", - "0x35c35d00736300701c00500f02802000536300502000501b02801f005363", - "0x35c00535f02802836300535d00501c02802836300502800702802300548d", - "0x501f02802836300502000501f02802836300503000501f028028363005", - "0x2835b00536300502802002802d00536300501f00503102802836300501b", - "0x50c035b00735c0280c00053630050c000501b0280c000536300502835d", - "0x281a800536300508435900702d028359005363005028023028084005363", - "0x500b00504f0280280053630050280050c70283570053630051a800535b", - "0x280310053630050310050c002802d00536300502d00509202800b005363", - "0x2836300502800702835703102d00b02800b005357005363005357005084", - "0x36300502835902803200536300501f00503102802836300502300501c028", - "0x3570283560053630053560051a8028032005363005032005092028356005", - "0x2802836300502800702803c00c00748e03336400736300735603200b031", - "0x501b0051c60280400053630050300051c6028036005363005033005031", - "0x4f02822700536300502833b02821d0053630050200051c6028219005363", - "0x3630050280050c7028036005363005036005092028364005363005364005", - "0x1b02804000536300504000501b0280310053630050310050c0028028005", - "0x2803636400f0c602821d00536300521d00501b028219005363005219005", - "0x536300704700533602804704804623122d00b36300521d219040227031", - "0x503102802836300504500533502802836300502800702824200548f045", - "0x24a007363005249005036028249005363005028020028246005363005231", - "0x24c00521d02824c00536300524b00521902802836300524a00504002824b", - "0x460053630050460050c702825200536300524f00522702824f005363005", - "0x480050c002824600536300524600509202822d00536300522d00504f028", - "0x2825204824622d04600b005252005363005252005084028048005363005", - "0x536300524200535b028253005363005231005031028028363005028007", - "0x509202822d00536300522d00504f0280460053630050460050c7028256", - "0x53630052560050840280480053630050480050c0028253005363005253", - "0x36300503000501f02802836300502800702825604825322d04600b005256", - "0x503c00503102802836300501b00501f02802836300502000501f028028", - "0x501b028009005363005028046028050005363005028020028258005363", - "0x536300502802302805b00536300500905000735c028009005363005009", - "0xc702805c00536300505900535b02805900536300505b05800702d028058", - "0x36300525800509202800c00536300500c00504f028028005363005028005", - "0xb00505c00536300505c0050840280310053630050310050c0028258005", - "0x1f02802836300535e00501c02802836300502800702805c03125800c028", - "0x26c00536300536000503102802836300503000501f02802836300501b005", - "0x36300527700501b02827700536300502805e028275005363005028020028", - "0x2d02806000536300502802302805e00536300527727500735c028277005", - "0x50280050c702805d00536300505f00535b02805f00536300505e060007", - "0x2826c00536300526c00509202800b00536300500b00504f028028005363", - "0x26c00b02800b00505d00536300505d0050840280310053630050310050c0", - "0x503000501f02802836300536100501c02802836300502800702805d031", - "0x280480282bc0053630050280200282af00536300504d005031028028363", - "0x53630050422bc00735c02804200536300504200501b028042005363005", - "0x535b02806900536300506730600702d028306005363005028023028067", - "0x536300500b00504f0280280053630050280050c7028068005363005069", - "0x50840280310053630050310050c00282af0053630052af00509202800b", - "0x1c0280283630050280070280680312af00b02800b005068005363005068", - "0x6f005363005028020028006005363005010005031028028363005014005", - "0x7106f00735c02807100536300507100501b028071005363005028045028", - "0x7500536300534707400702d028074005363005028023028347005363005", - "0xb00504f0280280053630050280050c702807700536300507500535b028", - "0x310053630050310050c002800600536300500600509202800b005363005", - "0x36300502800702807703100600b02800b005077005363005077005084028", - "0x502802002834600536300500f00503102802836300500a005242028028", - "0x35c02804300536300504300501b028043005363005028046028345005363", - "0x507a07900702d02807900536300502802302807a005363005043345007", - "0x280280053630050280050c702834200536300507f00535b02807f005363", - "0x50310050c002834600536300534600509202809200536300509200504f", - "0x2802834203134609202800b005342005363005342005084028031005363", - "0x702801000f00749009204f007363007031005007005028028363005028", - "0x4e00536300500b00500a0281c6005363005092005031028028363005028", - "0x4e00500f0281c60053630051c600509202804f00536300504f00504f028", - "0x3630051c600503102802836300502800702804d005491014013007363007", - "0xb0280180053630050170051c6028017005363005014005010028030005", - "0x30005363005030005092028013005363005013005013028028363005028", - "0x1b00549236036100736300701300500f02801800536300501800501b028", - "0x36300536000525602801c005363005030005031028028363005028007028", - "0x25802801f00536300536100501302835e00536300501c00509202835f005", - "0x3102802836300502800702802849300502804d02802000536300535f005", - "0x536300535c00505002835c00536300502803002835d005363005030005", - "0x525802801f00536300501b00501302835e00536300535d005092028023", - "0x502800702835b00549402d005363007020005009028020005363005023", - "0x1c602808400536300502d0050100280c000536300535e005031028028363", - "0x3630050c000509202835900536300535900501b028359005363005084005", - "0x280070283643560320314953571a800736300735904f0070ac0280c0005", - "0x281a80053630051a800504f0280330053630050c0005031028028363005", - "0x2803600549603c00c00736300701f00500f028033005363005033005092", - "0x536300503c005256028040005363005033005031028028363005028007", - "0x525802822700536300500c00501302821d005363005040005092028219", - "0x503102802836300502800702802849700502804d02822d005363005219", - "0x48005363005046005050028046005363005028030028231005363005033", - "0x4800525802822700536300503600501302821d005363005231005092028", - "0x36300502800702804500549804700536300722d00500902822d005363005", - "0x51c602824600536300504700501002824200536300521d005031028028", - "0x536300524200509202824900536300524900501b028249005363005246", - "0x502800702825224f24c03149924b24a0073630072491a80070ac028242", - "0x9202824a00536300524a00504f028253005363005242005031028028363", - "0x702805000549a25825600736300722700500f028253005363005253005", - "0x535f02802836300525600501c028028363005028361028028363005028", - "0x1f02802836300524b00530a02802836300535700530a028028363005258", - "0x5b005363005028020028009005363005253005031028028363005018005", - "0x5805b00735c02805800536300505800501b02805800536300502835d028", - "0x26c00536300505905c00702d02805c005363005028023028059005363005", - "0x24a00504f0280280053630050280050c702827500536300526c00535b028", - "0x900536300500900509202800700536300500700530102824a005363005", - "0x24a02804f00527500536300527500508402800a00536300500a0050c0028", - "0x503102802836300505000501c02802836300502800702827500a009007", - "0x27700536300527700509202805e005363005028359028277005363005253", - "0x49b05f06000736300705e27724a03135702805e00536300505e0051a8028", - "0x505f0050310280283630050283610280283630050280070282af05d007", - "0x53630050420180070cb02804200536300524b3570070c90282bc005363", - "0x2bc00509202806000536300506000504f02830600536300502833b028067", - "0x280053630050280050c70280070053630050070053010282bc005363005", - "0x600922fa0280670053630050670050cf02800a00536300500a0050c0028", - "0x734700533602834707106f00606806904f36300506730600a0280072bc", - "0x2802836300507400533502802836300502800702807500549c074005363", - "0x363005346005036028346005363005028020028077005363005068005031", - "0x21d02807a005363005043005219028028363005345005040028043345007", - "0x36300506f0050c702807f00536300507900522702807900536300507a005", - "0x9202800600536300500600530102806900536300506900504f02806f005", - "0x36300507f0050840280710053630050710050c0028077005363005077005", - "0x6800503102802836300502800702807f07107700606906f04f00507f005", - "0x6f00536300506f0050c702808100536300507500535b028342005363005", - "0x34200509202800600536300500600530102806900536300506900504f028", - "0x810053630050810050840280710053630050710050c0028342005363005", - "0x2836300502836102802836300502800702808107134200606906f04f005", - "0x36300501800501f02802836300524b00530a02802836300535700530a028", - "0x502804602834000536300502802002807d0053630052af005031028028", - "0x33e00536300533f34000735c02833f00536300533f00501b02833f005363", - "0x33c00535b02833c00536300533e33d00702d02833d005363005028023028", - "0x5d00536300505d00504f0280280053630050280050c702833b005363005", - "0xa0050c002807d00536300507d005092028007005363005007005301028", - "0x33b00a07d00705d02804f00533b00536300533b00508402800a005363005", - "0x2802836300524f00530a028028363005028361028028363005028007028", - "0x2836300535700530a02802836300522700501c02802836300525200530a", - "0x524c00504f02833700536300524200503102802836300501800501f028", - "0x2800702802849d00502804d02833600536300533700509202808c005363", - "0x22700501c028028363005045005047028028363005028361028028363005", - "0x503102802836300501800501f02802836300535700530a028028363005", - "0x536300533500509202808c0053630051a800504f02833500536300521d", - "0x2804d02833400536300533600530702808a00536300508c005390028336", - "0x535600530a02802836300502836102802836300502800702802849e005", - "0x1800501f02802836300501f00501c02802836300536400530a028028363", - "0x2808800536300503200504f0283330053630050c0005031028028363005", - "0x2802836300502800702802849f00502804d028332005363005333005092", - "0x2802836300501f00501c02802836300535b005047028028363005028361", - "0x36300504f00504f02833100536300535e00503102802836300501800501f", - "0x30702808a005363005088005390028332005363005331005092028088005", - "0x36300533400530702833000536300508a005390028334005363005332005", - "0x36300504d00501c0280283630050280070280284a000502804d028086005", - "0x509202833000536300504f00504f02808e0053630051c6005031028028", - "0x2832d00536300502804502836f00536300502802002808600536300508e", - "0x502802302832c00536300532d36f00735c02832d00536300532d00501b", - "0x32900536300532a00535b02832a00536300532c32b00702d02832b005363", - "0x700530102833000536300533000504f0280280053630050280050c7028", - "0xa00536300500a0050c0028086005363005086005092028007005363005", - "0x502800702832900a08600733002804f005329005363005329005084028", - "0x2802002832800536300501000503102802836300500b005242028028363", - "0x2832600536300532600501b028326005363005028046028327005363005", - "0x8b32500702d02832500536300502802302808b00536300532632700735c", - "0x280053630050280050c702832300536300532400535b028324005363005", - "0x32800509202800700536300500700530102800f00536300500f00504f028", - "0x32300536300532300508402800a00536300500a0050c0028328005363005", - "0x700502800700502802836300502802802832300a32800700f02804f005", - "0x36300500b00503102802836300502800702809204f0074a100b00a007363", - "0xa00504f02802836300502800b02801000536300503100500a02800f005", - "0x1c600736300701000500f02800f00536300500f00509202800a005363005", - "0x1002801400536300500f0050310280283630050280070280130054a204e", - "0x36300503000504e02803000536300504d0051c602804d00536300504e005", - "0x140283610053630051c6005013028018005363005014005092028017005", - "0x310280283630050280070280284a300502804d028360005363005017005", - "0x536300501c00501702801c00536300502803002801b00536300500f005", - "0x501402836100536300501300501302801800536300501b00509202835f", - "0x502800702801f0054a435e00536300736000501802836000536300535f", - "0x20005092028020005363005018005031028028363005028361028028363", - "0x280070280230054a535c35d00736300735e00a007253028020005363005", - "0x2835d00536300535d00504f02802d005363005020005031028028363005", - "0x280840054a60c035b00736300736100500f02802d00536300502d005092", - "0x53630050c000501002835900536300502d005031028028363005028007", - "0x535b00501302802836300502800b0283570053630051a80051c60281a8", - "0x2835700536300535700501b02835900536300535900509202835b005363", - "0x50310280283630050280070283640054a735603200736300735b00500f", - "0x536300503300509202800c005363005356005256028033005363005359", - "0x2804d02804000536300500c00525802803600536300503200501302803c", - "0x280300282190053630053590050310280283630050280070280284a8005", - "0x3c00536300521900509202822700536300521d00505002821d005363005", - "0x40005009028040005363005227005258028036005363005364005013028", - "0x536300503c0050310280283630050280070282310054a922d005363007", - "0x501b0280470053630050480051c602804800536300522d005010028046", - "0x36300704735d0070ac028046005363005046005092028047005363005047", - "0x36300504600503102802836300502800702824a2492460314aa242045007", - "0xf02824b00536300524b00509202804500536300504500504f02824b005", - "0x24b0050310280283630050280070282520054ab24f24c007363007036005", - "0x25800536300525300509202825600536300524f005256028253005363005", - "0x502804d02800900536300525600525802805000536300524c005013028", - "0x502803002805b00536300524b0050310280283630050280070280284ac", - "0x2825800536300505b005092028059005363005058005050028058005363", - "0x7009005009028009005363005059005258028050005363005252005013", - "0x27500536300525800503102802836300502800702826c0054ad05c005363", - "0x5e00501b02805e0053630052770051c602827700536300505c005010028", - "0x736300705e0450070ac02827500536300527500509202805e005363005", - "0x53630052750050310280283630050280070282bc2af05d0314ae05f060", - "0x500f02804200536300504200509202806000536300506000504f028042", - "0x3630050283610280283630050280070280690054af306067007363007050", - "0x535700501f02802836300530600535f02802836300506700501c028028", - "0x24200530a02802836300535c00527502802836300505f00530a028028363", - "0x35d028006005363005028020028068005363005042005031028028363005", - "0x36300506f00600735c02806f00536300506f00501b02806f005363005028", - "0x35b02807400536300507134700702d028347005363005028023028071005", - "0x36300506800509202806000536300506000504f028075005363005074005", - "0xa0050750053630050750050840280070053630050070050c0028068005", - "0x503102802836300506900501c028028363005028007028075007068060", - "0x77005363005077005092028346005363005028359028077005363005042", - "0x4b00433450073630073460770600313570283460053630053460051a8028", - "0x504300503102802836300502836102802836300502800702807907a007", - "0x2808100536300505f2420070c902834200536300502802002807f005363", - "0x52f402833f34000736300507d00539102807d0053630050813570070cb", - "0x33f00736300533f0050d402833f00536300533f0050cf028028363005340", - "0x51c602802836300533c0050d502833c33d00736300533e0052f302833e", - "0x36300533f0052f302833700536300533b34200735c02833b00536300533d", - "0x2808a33500736300533600539202802836300508c00501f02833608c007", - "0x33333700735c0283330053630053340050b90283340053630053350052f1", - "0x3310053630053320050b902833200536300508a0052f1028088005363005", - "0x3300050360280860053630050282f002833000536300533108800735c028", - "0x32d00536300536f00521902802836300508e00504002836f08e007363005", - "0x32d00505b02808600536300508600501b02807f00536300507f005092028", - "0x32d08635c00707f00b27702834500536300534500504f02832d005363005", - "0x52420280283630050280070283273283290314b132a32b32c031363007", - "0x32600536300532c00503102832c00536300532c00509202802836300532a", - "0x32500504002832432500736300508b00503602808b005363005028020028", - "0x2832000536300532300521d028323005363005324005219028028363005", - "0x532600509202834500536300534500504f028085005363005320005227", - "0x508500536300508500508402832b00536300532b0050c0028326005363", - "0x2832900536300532900509202802836300502800702808532b32634500a", - "0x532709500702d028095005363005028023028093005363005329005031", - "0x2834500536300534500504f02809800536300531f00535b02831f005363", - "0x50980050840283280053630053280050c0028093005363005093005092", - "0x36300502836102802836300502800702809832809334500a005098005363", - "0x535c00527502802836300505f00530a02802836300535700501f028028", - "0x2802002831e00536300507900503102802836300524200530a028028363", - "0x2831d00536300531d00501b02831d005363005028046028096005363005", - "0x31c31a00702d02831a00536300502802302831c00536300531d09600735c", - "0x7a00536300507a00504f02831800536300531900535b028319005363005", - "0x3180050840280070053630050070050c002831e00536300531e005092028", - "0x502836102802836300502800702831800731e07a00a005318005363005", - "0x5000501c0280283630052bc00530a0280283630052af00530a028028363", - "0x527502802836300524200530a02802836300535700501f028028363005", - "0x31600536300505d00504f02831700536300527500503102802836300535c", - "0x283630050280070280284b200502804d028315005363005317005092028", - "0x2836300505000501c02802836300526c005047028028363005028361028", - "0x36300535c00527502802836300524200530a02802836300535700501f028", - "0x509202831600536300504500504f028314005363005258005031028028", - "0x5363005315005307028313005363005316005390028315005363005314", - "0x280283630050283610280283630050280070280284b300502804d028312", - "0x2836300503600501c02802836300524a00530a02802836300524900530a", - "0x36300504600503102802836300535c00527502802836300535700501f028", - "0x4d02830e00536300531100509202830f00536300524600504f028311005", - "0x2310050470280283630050283610280283630050280070280284b4005028", - "0x527502802836300535700501f02802836300503600501c028028363005", - "0x30f00536300535d00504f02830c00536300503c00503102802836300535c", - "0x30e00530702831300536300530f00539002830e00536300530c005092028", - "0x30b0053630053120053070280a9005363005313005390028312005363005", - "0x2802836300508400501c0280283630050280070280284b500502804d028", - "0x36300535d00504f0280b000536300502d00503102802836300535c005275", - "0x280480280ac00536300502802002830b0053630050b00050920280a9005", - "0x536300530a0ac00735c02830a00536300530a00501b02830a005363005", - "0x535b0280b60053630053080b400702d0280b4005363005028023028308", - "0x536300530b0050920280a90053630050a900504f0283050053630050b6", - "0xa900a0053050053630053050050840280070053630050070050c002830b", - "0x2000503102802836300536100501c02802836300502800702830500730b", - "0x3020053630050b900509202830300536300502300504f0280b9005363005", - "0x470280283630050283610280283630050280070280284b600502804d028", - "0x30100536300501800503102802836300536100501c02802836300501f005", - "0x502802002830200536300530100509202830300536300500a00504f028", - "0x35c0282ff0053630052ff00501b0282ff005363005028045028300005363", - "0x52fe0bf00702d0280bf0053630050280230282fe0053630052ff300007", - "0x2830300536300530300504f0282fc0053630052fd00535b0282fd005363", - "0x52fc0050840280070053630050070050c0028302005363005302005092", - "0x50310052420280283630050280070282fc00730230300a0052fc005363", - "0x280460280510053630050280200282fb005363005092005031028028363", - "0x536300538b05100735c02838b00536300538b00501b02838b005363005", - "0x535b0280dc00536300538c38d00702d02838d00536300502802302838c", - "0x53630052fb00509202804f00536300504f00504f02838f0053630050dc", - "0x4f00a00538f00536300538f0050840280070053630050070050c00282fb", - "0x4b704f00b00736300700702800700502802836300502802802838f0072fb", - "0x500a02801000536300504f00503102802836300502800702800f092007", - "0x536300501000509202800b00536300500b00504f0281c600536300500a", - "0x280283630050280070280140054b801304e0073630071c600500f028010", - "0x536300501000503102802836300501300535f02802836300504e00501c", - "0x501700501b02801700536300502835d02803000536300502802002804d", - "0x2836100536300502802302801800536300501703000735c028017005363", - "0xb00504f02801b00536300536000535b02836000536300501836100702d", - "0x4d00536300504d0050920280050053630050050052ea02800b005363005", - "0x500b00b00501b00536300501b0050840280310053630050310050c0028", - "0x1000503102802836300501400501c02802836300502800702801b03104d", - "0x2801c00536300501c00509202835f00536300502835902801c005363005", - "0x74b901f35e00736300735f01c00b03135702835f00536300535f0051a8", - "0x502833b02835c00536300501f00503102802836300502800702835d020", - "0x2835c00536300535c0050920280050053630050050052ea028023005363", - "0xc035b02d00a36300502303135c00500a0da0280310053630050310050c0", - "0x1a80054ba35900536300708400533602835e00536300535e00504f028084", - "0x536300535b005031028028363005359005335028028363005028007028", - "0x5040028364356007363005032005036028032005363005028020028357", - "0xc00536300503300521d028033005363005364005219028028363005356", - "0x2d0052ea02835e00536300535e00504f02803c00536300500c005227028", - "0xc00053630050c00050c002835700536300535700509202802d005363005", - "0x36300502800702803c0c035702d35e00b00503c00536300503c005084028", - "0x504f0280400053630051a800535b02803600536300535b005031028028", - "0x536300503600509202802d00536300502d0052ea02835e00536300535e", - "0x35e00b0050400053630050400050840280c00053630050c00050c0028036", - "0x2002821900536300535d0050310280283630050280070280400c003602d", - "0x22700536300522700501b02822700536300502804602821d005363005028", - "0x23100702d02823100536300502802302822d00536300522721d00735c028", - "0x536300502000504f02804800536300504600535b02804600536300522d", - "0x50c00282190053630052190050920280050053630050050052ea028020", - "0x4803121900502000b005048005363005048005084028031005363005031", - "0x536300500f00503102802836300500a005242028028363005028007028", - "0x524200501b028242005363005028046028045005363005028020028047", - "0x2824900536300502802302824600536300524204500735c028242005363", - "0x9200504f02824b00536300524a00535b02824a00536300524624900702d", - "0x470053630050470050920280050053630050050052ea028092005363005", - "0x509200b00524b00536300524b0050840280310053630050310050c0028", - "0x4bb04f00b00736300700700500700502802836300502802802824b031047", - "0x500a02801000536300504f00503102802836300502800702800f092007", - "0x536300501000509202800b00536300500b00504f0281c600536300500a", - "0x280283630050280070280140054bc01304e0073630071c600500f028010", - "0x504e00501302803000536300501300501002804d005363005010005031", - "0x2803000536300503000501b02804d00536300504d00509202804e005363", - "0x501c0280283630050280070283610054bd01801700736300704e00500f", - "0x3102802836300503000501f02802836300501800535f028028363005017", - "0x1c00536300502835d02801b00536300502802002836000536300504d005", - "0x2802302835f00536300501c01b00735c02801c00536300501c00501b028", - "0x536300501f00535b02801f00536300535f35e00702d02835e005363005", - "0x509202800b00536300500b00504f0280280053630050280050c7028020", - "0x53630050200050840280310053630050310050c0028360005363005360", - "0x36300536100501c02802836300502800702802003136000b02800b005020", - "0x35d00509202835c00536300502835902835d00536300504d005031028028", - "0x36300735c35d00b03135702835c00536300535c0051a802835d005363005", - "0x536300502d0050310280283630050280070280c035b0074be02d023007", - "0x2300504f0281a800536300502833b0283590053630050300051c6028084", - "0x280053630050280050c7028084005363005084005092028023005363005", - "0x2304f2e702835900536300535900501b0280310053630050310050c0028", - "0x536300703300533602803336435603235700b3630053591a8031028084", - "0x503102802836300500c00533502802836300502800702803c0054bf00c", - "0x219007363005040005036028040005363005028020028036005363005032", - "0x22700521d02822700536300521d00521902802836300521900504002821d", - "0x3560053630053560050c702823100536300522d00522702822d005363005", - "0x3640050c002803600536300503600509202835700536300535700504f028", - "0x2823136403635735600b005231005363005231005084028364005363005", - "0x536300503c00535b028046005363005032005031028028363005028007", - "0x509202835700536300535700504f0283560053630053560050c7028048", - "0x53630050480050840283640053630053640050c0028046005363005046", - "0x36300503000501f02802836300502800702804836404635735600b005048", - "0x50280460280450053630050280200280470053630050c0005031028028", - "0x24600536300524204500735c02824200536300524200501b028242005363", - "0x24a00535b02824a00536300524624900702d028249005363005028023028", - "0x35b00536300535b00504f0280280053630050280050c702824b005363005", - "0x24b0050840280310053630050310050c0028047005363005047005092028", - "0x501c02802836300502800702824b03104735b02800b00524b005363005", - "0x2824f00536300502802002824c005363005010005031028028363005014", - "0x525224f00735c02825200536300525200501b028252005363005028045", - "0x2825800536300525325600702d028256005363005028023028253005363", - "0x500b00504f0280280053630050280050c702805000536300525800535b", - "0x280310053630050310050c002824c00536300524c00509202800b005363", - "0x2836300502800702805003124c00b02800b005050005363005050005084", - "0x36300502802002800900536300500f00503102802836300500a005242028", - "0x735c02805800536300505800501b02805800536300502804602805b005", - "0x36300505905c00702d02805c00536300502802302805900536300505805b", - "0x4f0280280053630050280050c702827500536300526c00535b02826c005", - "0x3630050310050c0028009005363005009005092028092005363005092005", - "0x2802802827503100909202800b005275005363005275005084028031005", - "0x2800702809204f0074c000b00a007363007005028007005028028363005", - "0x2801000536300503100500a02800f00536300500b005031028028363005", - "0x701000500f02800f00536300500f00509202800a00536300500a00504f", - "0x536300500f0050310280283630050280070280130054c104e1c6007363", - "0x50920281c60053630051c600501302804d00536300504e005010028014", - "0x73630071c600500f02804d00536300504d00501b028014005363005014", - "0x35f02802836300503000501c0280283630050280070280180054c2017030", - "0x36100536300501400503102802836300504d00501f028028363005017005", - "0x36300501b00501b02801b00536300502835d028360005363005028020028", - "0x2d02835f00536300502802302801c00536300501b36000735c02801b005", - "0x500a00504f02801f00536300535e00535b02835e00536300501c35f007", - "0x280070053630050070050c002836100536300536100509202800a005363", - "0x2802836300502800702801f00736100a00a00501f00536300501f005084", - "0x536300502835902802000536300501400503102802836300501800501c", - "0x3135702835d00536300535d0051a802802000536300502000509202835d", - "0x3102802836300502800702835b02d0074c302335c00736300735d02000a", - "0x3590053630050282e50280840053630050280200280c0005363005023005", - "0x280d20281a800536300535908400735c02835900536300535900501b028", - "0x53630053571a800735c02835700536300535700501b028357005363005", - "0x4002803336400736300503200503602835600536300504d0051c6028032", - "0x53630050c000509202800c005363005033005219028028363005364005", - "0xa31102835c00536300535c00504f02800c00536300500c00505b0280c0", - "0x2836300502800702821d2190400314c403603c00736300700c3560070c0", - "0x502802002822700536300503c00503102803c00536300503c005092028", - "0x2802836300523100504002804623100736300522d00503602822d005363", - "0x504700522702804700536300504800521d028048005363005046005219", - "0x2822700536300522700509202835c00536300535c00504f028045005363", - "0x3622735c00a0050450053630050450050840280360053630050360050c0", - "0x5040005031028040005363005040005092028028363005028007028045", - "0x2824900536300521d24600702d028246005363005028023028242005363", - "0x524200509202835c00536300535c00504f02824a00536300524900535b", - "0x524a00536300524a0050840282190053630052190050c0028242005363", - "0x3102802836300504d00501f02802836300502800702824a21924235c00a", - "0x24f00536300502804602824c00536300502802002824b00536300535b005", - "0x2802302825200536300524f24c00735c02824f00536300524f00501b028", - "0x536300525600535b02825600536300525225300702d028253005363005", - "0x50c002824b00536300524b00509202802d00536300502d00504f028258", - "0x2825800724b02d00a005258005363005258005084028007005363005007", - "0x5000536300500f00503102802836300501300501c028028363005028007", - "0x36300505b00501b02805b005363005028045028009005363005028020028", - "0x2d02805900536300502802302805800536300505b00900735c02805b005", - "0x500a00504f02826c00536300505c00535b02805c005363005058059007", - "0x280070053630050070050c002805000536300505000509202800a005363", - "0x2802836300502800702826c00705000a00a00526c00536300526c005084", - "0x5363005028020028275005363005092005031028028363005031005242", - "0x27700735c02805e00536300505e00501b02805e005363005028046028277", - "0x536300506005f00702d02805f00536300502802302806000536300505e", - "0x509202804f00536300504f00504f0282af00536300505d00535b02805d", - "0x53630052af0050840280070053630050070050c0028275005363005275", - "0x36300700a0280070050280283630050280280282af00727504f00a0052af", - "0x536300500f0050310280283630050280070281c60100074c500f092007", - "0x509202809200536300509200504f02801300536300504f00500a02804e", - "0x280070280300054c604d01400736300701300500f02804e00536300504e", - "0x503102802836300504d00535f02802836300501400501c028028363005", - "0x2836100536300502835d02801800536300502802002801700536300504e", - "0x502802302836000536300536101800735c02836100536300536100501b", - "0x35f00536300501c00535b02801c00536300536001b00702d02801b005363", - "0x70050db0280050053630050050052e802809200536300509200504f028", - "0x170053630050170050920280310053630050310052ef028007005363005", - "0x509209200535f00536300535f00508402800b00536300500b0050c0028", - "0x3102802836300503000501c02802836300502800702835f00b017031007", - "0x536300535e00509202801f00536300502835902835e00536300504e005", - "0x35d02000736300701f35e09203135702801f00536300501f0051a802835e", - "0x33b02802d00536300535d00503102802836300502800702802335c0074c7", - "0x53630050070050db02802000536300502000504f02835b005363005028", - "0x50920280050053630050050052e80280310053630050310052ef028007", - "0x3590840c004f36300535b02d00503100702004f2e202802d00536300502d", - "0x283630050280070283640054c83560053630070320053360280323571a8", - "0x363005028020028033005363005357005031028028363005356005335028", - "0x21902802836300503c00504002803603c00736300500c00503602800c005", - "0x36300521900522702821900536300504000521d028040005363005036005", - "0xdb0281a80053630051a80052e80280c00053630050c000504f02821d005", - "0x3630050330050920283590053630053590052ef028084005363005084005", - "0x9200521d00536300521d00508402800b00536300500b0050c0028033005", - "0x536300535700503102802836300502800702821d00b0333590841a80c0", - "0x52e80280c00053630050c000504f02822d00536300536400535b028227", - "0x53630053590052ef0280840053630050840050db0281a80053630051a8", - "0x508402800b00536300500b0050c0028227005363005227005092028359", - "0x2836300502800702822d00b2273590841a80c009200522d00536300522d", - "0x363005028046028046005363005028020028231005363005023005031028", - "0x2804700536300504804600735c02804800536300504800501b028048005", - "0x524200535b02824200536300504704500702d028045005363005028023", - "0x280050053630050050052e802835c00536300535c00504f028246005363", - "0x52310050920280310053630050310052ef0280070053630050070050db", - "0x524600536300524600508402800b00536300500b0050c0028231005363", - "0x36300504f00524202802836300502800702824600b23103100700535c092", - "0x502804602824a0053630050280200282490053630051c6005031028028", - "0x24c00536300524b24a00735c02824b00536300524b00501b02824b005363", - "0x25200535b02825200536300524c24f00702d02824f005363005028023028", - "0x50053630050050052e802801000536300501000504f028253005363005", - "0x2490050920280310053630050310052ef0280070053630050070050db028", - "0x25300536300525300508402800b00536300500b0050c0028249005363005", - "0x702800700502802836300502802802825300b249031007005010092005", - "0x504f00503102802836300502800702800f0920074c904f00b007363007", - "0x2800b00536300500b00504f0281c600536300500a00500a028010005363", - "0x280140054ca01304e0073630071c600500f028010005363005010005092", - "0x2802836300501300535f02802836300504e00501c028028363005028007", - "0x536300502835d02803000536300502802002804d005363005010005031", - "0x2302801800536300501703000735c02801700536300501700501b028017", - "0x36300536000535b02836000536300501836100702d028361005363005028", - "0x920280050053630050050052e802800b00536300500b00504f02801b005", - "0x36300501b0050840280310053630050310050c002804d00536300504d005", - "0x501400501c02802836300502800702801b03104d00500b00b00501b005", - "0x509202835f00536300502835902801c005363005010005031028028363", - "0x735f01c00b03135702835f00536300535f0051a802801c00536300501c", - "0x36300501f00503102802836300502800702835d0200074cb01f35e007363", - "0x2802d0230073630050050052e10280050053630050050052e802835c005", - "0x536300535c00509202835e00536300535e00504f02802836300502800b", - "0x3160280283630050280070280c00054cc35b00536300702d00531702835c", - "0x53630050230052e802808400536300535c00503102802836300535b005", - "0x3170280840053630050840050920281a83590073630050230052e1028023", - "0x3630050283610280283630050280070280320054cd3570053630071a8005", - "0x5028020028356005363005084005031028028363005357005316028028", - "0x2802836300503300504002800c033007363005364005036028364005363", - "0x503600522702803600536300503c00521d02803c00536300500c005219", - "0x283590053630053590052e802835e00536300535e00504f028040005363", - "0x50400050840280310053630050310050c0028356005363005356005092", - "0x8400503102802836300502800702804003135635935e00b005040005363", - "0x22700536300521900509202821d0053630053590052e8028219005363005", - "0x283630050280070280284ce00502804d02822d0053630050320052e0028", - "0x23100509202821d0053630050230052e802823100536300535c005031028", - "0x35b02802836300502836102822d0053630050c00052e0028227005363005", - "0x36300521d0052e802835e00536300535e00504f02804600536300522d005", - "0x840280310053630050310050c002822700536300522700509202821d005", - "0x2802836300502800702804603122721d35e00b005046005363005046005", - "0x536300502804602804700536300502802002804800536300535d005031", - "0x2302824200536300504504700735c02804500536300504500501b028045", - "0x36300524900535b02824900536300524224600702d028246005363005028", - "0x920280050053630050050052e802802000536300502000504f02824a005", - "0x36300524a0050840280310053630050310050c0028048005363005048005", - "0x500a00524202802836300502800702824a03104800502000b00524a005", - "0x2804602824c00536300502802002824b00536300500f005031028028363", - "0x536300524f24c00735c02824f00536300524f00501b02824f005363005", - "0x535b02825600536300525225300702d028253005363005028023028252", - "0x53630050050052e802809200536300509200504f028258005363005256", - "0x50840280310053630050310050c002824b00536300524b005092028005", - "0x2800b00536300502824c02825803124b00509200b005258005363005258", - "0x502802836300502802802802836300502824f02809200536300502824c", - "0x3102802836300502800702804e1c60074cf01000f007363007005028007", - "0x2836300502800b02801400536300503100500a028013005363005010005", - "0x1400500f02801300536300501300509202800f00536300500f00504f028", - "0x3630050130050310280283630050280070280170054d003004d007363007", - "0x4e0283600053630053610051c6028361005363005030005010028018005", - "0x36300504d00501302801c00536300501800509202801b005363005360005", - "0x50280070280284d100502804d02835e00536300501b00501402835f005", - "0x501702802000536300502803002801f005363005013005031028028363", - "0x536300501700501302801c00536300501f00509202835d005363005020", - "0x35c0054d204f00536300735e00501802835e00536300535d00501402835f", - "0x2300536300501c005031028028363005028361028028363005028007028", - "0x725302802300536300502300509202804f00536300504f092007252028", - "0x230050310280283630050280070280c00054d335b02d00736300704f00f", - "0x8400536300508400509202802d00536300502d00504f028084005363005", - "0x310280283630050280070283570054d41a835900736300735f00500f028", - "0x500a00b00725202800a0053630051a8005010028032005363005084005", - "0x501302802836300502800b02835600536300500a0051c602800a005363", - "0x736300735900500f028032005363005032005092028359005363005359", - "0x2803c00536300503200503102802836300502800702800c0054d5033364", - "0x536400501302804000536300503c005092028036005363005033005256", - "0x280070280284d600502804d02821d005363005036005258028219005363", - "0x5002822d005363005028030028227005363005032005031028028363005", - "0x36300500c00501302804000536300522700509202823100536300522d005", - "0x54d704600536300721d00500902821d005363005231005258028219005", - "0x5363005040005031028028363005028361028028363005028007028048", - "0x219005219028242005363005028020028045005363005046005010028047", - "0x2d00536300502d00504f0282490053630050450051c6028246005363005", - "0x24200522d02824600536300524600505b028047005363005047005092028", - "0x24924224604702d00b05802824900536300524900501b028242005363005", - "0x280070282520054d824f00536300724c00505902824c24b24a031363005", - "0x25825600736300524f00505c02825300536300524b005031028028363005", - "0x280090054d905000536300725800526c028253005363005253005092028", - "0x536300525600500a02805b005363005253005031028028363005028007", - "0x54da05c05900736300705800500f02805b00536300505b005092028058", - "0x36300505c00535f02802836300505900501c02802836300502800702826c", - "0x535b00527502802836300535600501f028028363005050005040028028", - "0x2835d02827700536300502802002827500536300505b005031028028363", - "0x536300505e27700735c02805e00536300505e00501b02805e005363005", - "0x535b02805d00536300506005f00702d02805f005363005028023028060", - "0x536300527500509202824a00536300524a00504f0282af00536300505d", - "0x24a00a0052af0053630052af0050840280070053630050070050c0028275", - "0x5b00503102802836300526c00501c0280283630050280070282af007275", - "0x282bc0053630052bc0050920280420053630050283590282bc005363005", - "0x74db3060670073630070422bc24a0313570280420053630050420051a8", - "0x502833b028006005363005306005031028028363005028007028068069", - "0x280070053630050070050c002800600536300500600509202806f005363", - "0x505000522d02835600536300535600501b02835b00536300535b005332", - "0x4f02807434707103136300505035635b06f00700604f0df028050005363", - "0x280070280770054dc075005363007074005336028067005363005067005", - "0x20028346005363005071005031028028363005075005335028028363005", - "0x36300504300504002807a043007363005345005036028345005363005028", - "0x522702807f00536300507900521d02807900536300507a005219028028", - "0x536300534600509202806700536300506700504f02834200536300507f", - "0x6700a0053420053630053420050840283470053630053470050c0028346", - "0x535b028081005363005071005031028028363005028007028342347346", - "0x536300508100509202806700536300506700504f02807d005363005077", - "0x6700a00507d00536300507d0050840283470053630053470050c0028081", - "0x35600501f02802836300505000504002802836300502800702807d347081", - "0x2002834000536300506800503102802836300535b005275028028363005", - "0x33e00536300533e00501b02833e00536300502804602833f005363005028", - "0x33c00702d02833c00536300502802302833d00536300533e33f00735c028", - "0x536300506900504f02833700536300533b00535b02833b00536300533d", - "0x50840280070053630050070050c0028340005363005340005092028069", - "0x504702802836300502800702833700734006900a005337005363005337", - "0x27502802836300535600501f028028363005256005242028028363005009", - "0x536300524a00504f02808c00536300525300503102802836300535b005", - "0x3630050280070280284dd00502804d02833500536300508c005092028336", - "0x524b00503102802836300535600501f02802836300535b005275028028", - "0x2824a00536300524a00504f02833400536300525200535b02808a005363", - "0x53340050840280070053630050070050c002808a00536300508a005092", - "0x36300502836102802836300502800702833400708a24a00a005334005363", - "0x535b00527502802836300535600501f028028363005048005047028028", - "0x504f02833300536300504000503102802836300521900501c028028363", - "0x8800536300502802002833500536300533300509202833600536300502d", - "0x33208800735c02833200536300533200501b02833200536300502805e028", - "0x8600536300533133000702d028330005363005028023028331005363005", - "0x33500509202833600536300533600504f02808e00536300508600535b028", - "0x8e00536300508e0050840280070053630050070050c0028335005363005", - "0x2802836300535700501c02802836300502800702808e00733533600a005", - "0x536300508400503102802836300500b00506002802836300535b005275", - "0x532c00501b02832c00536300502804802832d00536300502802002836f", - "0x2832a00536300502802302832b00536300532c32d00735c02832c005363", - "0x2d00504f02832800536300532900535b02832900536300532b32a00702d", - "0x70053630050070050c002836f00536300536f00509202802d005363005", - "0x2836300502800702832800736f02d00a005328005363005328005084028", - "0x36300502300503102802836300500b00506002802836300535f00501c028", - "0x4d02808b0053630053270050920283260053630050c000504f028327005", - "0x35c0050470280283630050283610280283630050280070280284de005028", - "0x506002802836300500b00506002802836300535f00501c028028363005", - "0x32600536300500f00504f02832500536300501c005031028028363005092", - "0x36300502804502832400536300502802002808b005363005325005092028", - "0x2832000536300532332400735c02832300536300532300501b028323005", - "0x509300535b02809300536300532008500702d028085005363005028023", - "0x2808b00536300508b00509202832600536300532600504f028095005363", - "0x708b32600a0050950053630050950050840280070053630050070050c0", - "0x36300500b005060028028363005092005060028028363005028007028095", - "0x502802002831f00536300504e005031028028363005031005242028028", - "0x35c02831e00536300531e00501b02831e005363005028046028098005363", - "0x509631d00702d02831d00536300502802302809600536300531e098007", - "0x281c60053630051c600504f02831a00536300531c00535b02831c005363", - "0x531a0050840280070053630050070050c002831f00536300531f005092", - "0x502800700502802836300502802802831a00731f1c600a00531a005363", - "0x500b00503102802836300502800702809204f0074df00b00a007363007", - "0x2800a00536300500a00504f02801000536300503100500a02800f005363", - "0x280130054e004e1c600736300701000500f02800f00536300500f005092", - "0x536300504e00501002801400536300500f005031028028363005028007", - "0x501b0280140053630050140050920281c60053630051c600501302804d", - "0x280070280180054e10170300073630071c600500f02804d00536300504d", - "0x501f02802836300501700535f02802836300503000501c028028363005", - "0x2836000536300502802002836100536300501400503102802836300504d", - "0x501b36000735c02801b00536300501b00501b02801b00536300502835d", - "0x2835e00536300501c35f00702d02835f00536300502802302801c005363", - "0x536100509202800a00536300500a00504f02801f00536300535e00535b", - "0x501f00536300501f0050840280070053630050070050c0028361005363", - "0x3102802836300501800501c02802836300502800702801f00736100a00a", - "0x536300502000509202835d005363005028359028020005363005014005", - "0x2335c00736300735d02000a03135702835d00536300535d0051a8028020", - "0x200280c000536300502300503102802836300502800702835b02d0074e2", - "0x36300535908400735c02835900536300504d0051c6028084005363005028", - "0x2190280283630053570050400280323570073630051a80050360281a8005", - "0x36300536400522702836400536300535600521d028356005363005032005", - "0xc00280c00053630050c000509202835c00536300535c00504f028033005", - "0x330070c035c00a005033005363005033005084028007005363005007005", - "0x536300535b00503102802836300504d00501f028028363005028007028", - "0x503600501b02803600536300502804602803c00536300502802002800c", - "0x2821900536300502802302804000536300503603c00735c028036005363", - "0x2d00504f02822700536300521d00535b02821d00536300504021900702d", - "0x70053630050070050c002800c00536300500c00509202802d005363005", - "0x2836300502800702822700700c02d00a005227005363005227005084028", - "0x36300502802002822d00536300500f00503102802836300501300501c028", - "0x735c02804600536300504600501b028046005363005028045028231005", - "0x36300504804700702d028047005363005028023028048005363005046231", - "0x9202800a00536300500a00504f02824200536300504500535b028045005", - "0x3630052420050840280070053630050070050c002822d00536300522d005", - "0x36300503100524202802836300502800702824200722d00a00a005242005", - "0x5028046028249005363005028020028246005363005092005031028028", - "0x24b00536300524a24900735c02824a00536300524a00501b02824a005363", - "0x24f00535b02824f00536300524b24c00702d02824c005363005028023028", - "0x24600536300524600509202804f00536300504f00504f028252005363005", - "0x24604f00a0052520053630052520050840280070053630050070050c0028", - "0x74e300b00a007363007005028007005028028363005028028028252007", - "0x3100500a02800f00536300500b00503102802836300502800702809204f", - "0xf00536300500f00509202800a00536300500a00504f028010005363005", - "0x1c0280283630050280070280130054e404e1c600736300701000500f028", - "0x1400536300500f00503102802836300504e00535f0280283630051c6005", - "0x36300503000501b02803000536300502835d02804d005363005028020028", - "0x2d02801800536300502802302801700536300503004d00735c028030005", - "0x500a00504f02836000536300536100535b028361005363005017018007", - "0x280070053630050070050c002801400536300501400509202800a005363", - "0x2802836300502800702836000701400a00a005360005363005360005084", - "0x536300502835902801b00536300500f00503102802836300501300501c", - "0x3135702801c00536300501c0051a802801b00536300501b00509202801c", - "0x3102802836300502800702802001f0074e535e35f00736300701c01b00a", - "0x736300535c00503602835c00536300502802002835d00536300535e005", - "0x521d02835b00536300502d00521902802836300502300504002802d023", - "0x536300535f00504f0280840053630050c00052270280c000536300535b", - "0x50840280070053630050070050c002835d00536300535d00509202835f", - "0x503102802836300502800702808400735d35f00a005084005363005084", - "0x283570053630050280460281a8005363005028020028359005363005020", - "0x50280230280320053630053571a800735c02835700536300535700501b", - "0x3300536300536400535b02836400536300503235600702d028356005363", - "0x70050c002835900536300535900509202801f00536300501f00504f028", - "0x702803300735901f00a005033005363005033005084028007005363005", - "0x2800c005363005092005031028028363005031005242028028363005028", - "0x536300503600501b02803600536300502804602803c005363005028020", - "0x702d02821900536300502802302804000536300503603c00735c028036", - "0x36300504f00504f02822700536300521d00535b02821d005363005040219", - "0x840280070053630050070050c002800c00536300500c00509202804f005", - "0x502802836300502802802822700700c04f00a005227005363005227005", - "0x3102802836300502800702809204f0074e600b00a007363007005028007", - "0x36300500a00504f02801000536300503100500a02800f00536300500b005", - "0x4e704e1c600736300701000500f02800f00536300500f00509202800a005", - "0x4e00501002801400536300500f005031028028363005028007028013005", - "0x281c60053630051c600501302802836300504d00501f02804d005363005", - "0x280180054e80170300073630071c600500f028014005363005014005092", - "0x5363005017005010028361005363005014005031028028363005028007", - "0x501b028361005363005361005092028030005363005030005013028360", - "0x2800702835f0054e901c01b00736300703000500f028360005363005360", - "0x501f02802836300501c00535f02802836300501b00501c028028363005", - "0x2801f00536300502802002835e005363005361005031028028363005360", - "0x502001f00735c02802000536300502000501b02802000536300502835d", - "0x2802300536300535d35c00702d02835c00536300502802302835d005363", - "0x535e00509202800a00536300500a00504f02802d00536300502300535b", - "0x502d00536300502d0050840280070053630050070050c002835e005363", - "0x3102802836300535f00501c02802836300502800702802d00735e00a00a", - "0x536300535b0050920280c000536300502835902835b005363005361005", - "0x3590840073630070c035b00a0313570280c00053630050c00051a802835b", - "0x200280320053630053590050310280283630050280070283571a80074ea", - "0x36300536435600735c0283640053630053600051c6028356005363005028", - "0x21902802836300500c00504002803c00c007363005033005036028033005", - "0x36300504000522702804000536300503600521d02803600536300503c005", - "0xc002803200536300503200509202808400536300508400504f028219005", - "0x21900703208400a005219005363005219005084028007005363005007005", - "0x536300535700503102802836300536000501f028028363005028007028", - "0x522d00501b02822d00536300502804602822700536300502802002821d", - "0x2804600536300502802302823100536300522d22700735c02822d005363", - "0x1a800504f02804700536300504800535b02804800536300523104600702d", - "0x70053630050070050c002821d00536300521d0050920281a8005363005", - "0x2836300502800702804700721d1a800a005047005363005047005084028", - "0x36300502802002804500536300501400503102802836300501800501c028", - "0x735c02824600536300524600501b028246005363005028048028242005", - "0x36300524924a00702d02824a005363005028023028249005363005246242", - "0x9202800a00536300500a00504f02824c00536300524b00535b02824b005", - "0x36300524c0050840280070053630050070050c0028045005363005045005", - "0x36300501300501c02802836300502800702824c00704500a00a00524c005", - "0x502804502825200536300502802002824f00536300500f005031028028", - "0x25600536300525325200735c02825300536300525300501b028253005363", - "0x5000535b02805000536300525625800702d028258005363005028023028", - "0x24f00536300524f00509202800a00536300500a00504f028009005363005", - "0x24f00a00a0050090053630050090050840280070053630050070050c0028", - "0x5092005031028028363005031005242028028363005028007028009007", - "0x501b02805900536300502804602805800536300502802002805b005363", - "0x536300502802302805c00536300505905800735c028059005363005059", - "0x4f02827700536300527500535b02827500536300505c26c00702d02826c", - "0x3630050070050c002805b00536300505b00509202804f00536300504f005", - "0x502802802827700705b04f00a005277005363005277005084028007005", - "0x502800702809204f0074eb00b00a007363007005028007005028028363", - "0x4f02801000536300503100500a02800f00536300500b005031028028363", - "0x36300701000500f02800f00536300500f00509202800a00536300500a005", - "0x1400536300500f0050310280283630050280070280130054ec04e1c6007", - "0x36300502800b02802836300504d00501f02804d00536300504e005010028", - "0x500f0280140053630050140050920281c60053630051c6005013028028", - "0x50140050310280283630050280070280180054ed0170300073630071c6", - "0x2801b0053630053600051c6028360005363005017005010028361005363", - "0x503000501302835f00536300536100509202801c00536300501b00504e", - "0x280070280284ee00502804d02801f00536300501c00501402835e005363", - "0x1702835d005363005028030028020005363005014005031028028363005", - "0x36300501800501302835f00536300502000509202835c00536300535d005", - "0x54ef02300536300701f00501802801f00536300535c00501402835e005", - "0x536300535f00503102802836300502836102802836300502800702802d", - "0x4f00840c000736300702300a00736002835b00536300535b00509202835b", - "0xc000504f0281a800536300535b005031028028363005028007028359005", - "0x35700736300735e00500f0281a80053630051a80050920280c0005363005", - "0x100283640053630051a80050310280283630050280070283560054f1032", - "0x363005364005092028357005363005357005013028033005363005032005", - "0x4f203c00c00736300735700500f02803300536300503300501b028364005", - "0x503c00535f02802836300500c00501c028028363005028007028036005", - "0x36400503102802836300508400535e02802836300503300501f028028363", - "0x1b02821d00536300502835d028219005363005028020028040005363005", - "0x36300502802302822700536300521d21900735c02821d00536300521d005", - "0x2804600536300523100535b02823100536300522722d00702d02822d005", - "0x50070050c00280400053630050400050920280c00053630050c000504f", - "0x280070280460070400c000a005046005363005046005084028007005363", - "0x35902804800536300536400503102802836300503600501c028028363005", - "0x53630050470051a8028048005363005048005092028047005363005028", - "0x50280070282492460074f32420450073630070470480c0031357028047", - "0x3202824b0053630050330051c602824a005363005242005031028028363", - "0x36300524a00509202824f24b00736300524b00538d02824c005363005028", - "0xc02804500536300504500504f02824c00536300524c00503302824a005", - "0x50280070280502582560314f425325200736300724f08424c00724a00b", - "0x20028009005363005252005031028252005363005252005092028028363", - "0x36300505800503602805800536300524b05b00735c02805b005363005028", - "0x21d02826c00536300505c00521902802836300505900504002805c059007", - "0x36300504500504f02827700536300527500522702827500536300526c005", - "0x840282530053630052530050c0028009005363005009005092028045005", - "0x1f02802836300502800702827725300904500a005277005363005277005", - "0x536300525600503102825600536300525600509202802836300524b005", - "0x535b02805f00536300505006000702d02806000536300502802302805e", - "0x536300505e00509202804500536300504500504f02805d00536300505f", - "0x4500a00505d00536300505d0050840282580053630052580050c002805e", - "0x8400535e02802836300503300501f02802836300502800702805d25805e", - "0x460282bc0053630050280200282af005363005249005031028028363005", - "0x3630050422bc00735c02804200536300504200501b028042005363005028", - "0x35b02806900536300506730600702d028306005363005028023028067005", - "0x3630052af00509202824600536300524600504f028068005363005069005", - "0xa0050680053630050680050840280070053630050070050c00282af005", - "0x535e02802836300535600501c0280283630050280070280680072af246", - "0x2806f0053630050280200280060053630051a8005031028028363005084", - "0x507106f00735c02807100536300507100501b02807100536300502805e", - "0x2807500536300534707400702d028074005363005028023028347005363", - "0x50060050920280c00053630050c000504f02807700536300507500535b", - "0x50770053630050770050840280070053630050070050c0028006005363", - "0x3102802836300535e00501c0280283630050280070280770070060c000a", - "0x36300534600509202834500536300535900504f02834600536300535b005", - "0x283630050283610280283630050280070280284f500502804d028043005", - "0x36300535f00503102802836300535e00501c02802836300502d005047028", - "0x2002804300536300507a00509202834500536300500a00504f02807a005", - "0x7f00536300507f00501b02807f005363005028048028079005363005028", - "0x8100702d02808100536300502802302834200536300507f07900735c028", - "0x536300534500504f02834000536300507d00535b02807d005363005342", - "0x50840280070053630050070050c0028043005363005043005092028345", - "0x501c02802836300502800702834000704334500a005340005363005340", - "0x2833e00536300502802002833f00536300500f005031028028363005013", - "0x533d33e00735c02833d00536300533d00501b02833d005363005028045", - "0x2833700536300533c33b00702d02833b00536300502802302833c005363", - "0x533f00509202800a00536300500a00504f02808c00536300533700535b", - "0x508c00536300508c0050840280070053630050070050c002833f005363", - "0x3102802836300503100524202802836300502800702808c00733f00a00a", - "0x8a005363005028046028335005363005028020028336005363005092005", - "0x2802302833400536300508a33500735c02808a00536300508a00501b028", - "0x536300508800535b02808800536300533433300702d028333005363005", - "0x50c002833600536300533600509202804f00536300504f00504f028332", - "0x2833200733604f00a005332005363005332005084028007005363005007", - "0x2809204f0074f600b00a007363007005028007005028028363005028028", - "0x536300503100500a02800f00536300500b005031028028363005028007", - "0x500f02800f00536300500f00509202800a00536300500a00504f028010", - "0x500f0050310280283630050280070280130054f704e1c6007363007010", - "0x281c60053630051c600501302804d00536300504e005010028014005363", - "0x71c600500f02804d00536300504d00501b028014005363005014005092", - "0x53630050140050310280283630050280070280180054f8017030007363", - "0x5092028030005363005030005013028360005363005017005010028361", - "0x736300703000500f02836000536300536000501b028361005363005361", - "0x35f02802836300501b00501c02802836300502800702835f0054f901c01b", - "0x2802836300536000501f02802836300504d00501f02802836300501c005", - "0x536300502835d02801f00536300502802002835e005363005361005031", - "0x2302835d00536300502001f00735c02802000536300502000501b028020", - "0x36300502300535b02802300536300535d35c00702d02835c005363005028", - "0xc002835e00536300535e00509202800a00536300500a00504f02802d005", - "0x2d00735e00a00a00502d00536300502d005084028007005363005007005", - "0x536300536100503102802836300535f00501c028028363005028007028", - "0xc00051a802835b00536300535b0050920280c000536300502835902835b", - "0x283571a80074fa3590840073630070c035b00a0313570280c0005363005", - "0x35600536300502808a028032005363005359005031028028363005028007", - "0x3600051c602803300536300504d0051c6028364005363005356005334028", - "0x36300500c03c0072ee02803c03300736300503300538d02800c005363005", - "0x5033028032005363005032005092028040005363005028032028036005", - "0x536300503600501b028364005363005364005088028040005363005040", - "0x736300703636404000703200b00c02808400536300508400504f028036", - "0x536300521900509202802836300502800702823122d2270314fb21d219", - "0x4800735c028048005363005028020028046005363005219005031028219", - "0x363005045005040028242045007363005047005036028047005363005033", - "0x522702824900536300524600521d028246005363005242005219028028", - "0x536300504600509202808400536300508400504f02824a005363005249", - "0x8400a00524a00536300524a00508402821d00536300521d0050c0028046", - "0x22700509202802836300503300501f02802836300502800702824a21d046", - "0x2824c00536300502802302824b005363005227005031028227005363005", - "0x8400504f02825200536300524f00535b02824f00536300523124c00702d", - "0x22d00536300522d0050c002824b00536300524b005092028084005363005", - "0x2836300502800702825222d24b08400a005252005363005252005084028", - "0x36300535700503102802836300536000501f02802836300504d00501f028", - "0x25800501b028258005363005028046028256005363005028020028253005", - "0x900536300502802302805000536300525825600735c028258005363005", - "0x504f02805800536300505b00535b02805b00536300505000900702d028", - "0x53630050070050c00282530053630052530050920281a80053630051a8", - "0x3630050280070280580072531a800a005058005363005058005084028007", - "0x501400503102802836300504d00501f02802836300501800501c028028", - "0x501b02826c00536300502804802805c005363005028020028059005363", - "0x536300502802302827500536300526c05c00735c02826c00536300526c", - "0x4f02806000536300505e00535b02805e00536300527527700702d028277", - "0x3630050070050c002805900536300505900509202800a00536300500a005", - "0x502800702806000705900a00a005060005363005060005084028007005", - "0x2802002805f00536300500f00503102802836300501300501c028028363", - "0x282af0053630052af00501b0282af00536300502804502805d005363005", - "0x2bc04200702d0280420053630050280230282bc0053630052af05d00735c", - "0xa00536300500a00504f02830600536300506700535b028067005363005", - "0x3060050840280070053630050070050c002805f00536300505f005092028", - "0x3100524202802836300502800702830600705f00a00a005306005363005", - "0x46028068005363005028020028069005363005092005031028028363005", - "0x36300500606800735c02800600536300500600501b028006005363005028", - "0x35b02834700536300506f07100702d02807100536300502802302806f005", - "0x36300506900509202804f00536300504f00504f028074005363005347005", - "0xa0050740053630050740050840280070053630050070050c0028069005", - "0x4f00b00736300700502800700502802836300502836102807400706904f", - "0x38d02801000536300504f00503102802836300502800702800f0920074fc", - "0x501000509202800b00536300500b00504f0281c600a00736300500a005", - "0x2802836300502800702804e0054fd0283630071c6005342028010005363", - "0x3630050310050e102801300536300501000503102802836300500a00501f", - "0x2803000536300504d0052eb02804d0053630050140070072ec028014005", - "0x50300050e302801300536300501300509202800b00536300500b00504f", - "0x36300504e00534002802836300502800702803001300b031005030005363", - "0x2800b02801800536300500700500a028017005363005010005031028028", - "0x36036100736300701800500f028017005363005017005092028028363005", - "0x501002801c00536300501700503102802836300502800702801b0054fe", - "0x536300535e00504e02835e00536300535f0051c602835f005363005360", - "0x501402835d00536300536100501302802000536300501c00509202801f", - "0x50310280283630050280070280284ff00502804d02835c00536300501f", - "0x35b00536300502d00501702802d005363005028030028023005363005017", - "0x35b00501402835d00536300501b005013028020005363005023005092028", - "0x8400536300735c0050180280c000536300535d00521902835c005363005", - "0x5020005031028028363005028361028028363005028007028359005500", - "0x2803200536300502824a02835700536300508403100735c0281a8005363", - "0x1a800509202800b00536300500b00504f02835600536300503200a007326", - "0x35700536300535700522d0280c00053630050c000505b0281a8005363005", - "0x3640313630053563570c01a800b00b05802835600536300535600501b028", - "0x2802836300502836102802836300502800702800c03336403100500c033", - "0x536300502000503102802836300503100504002802836300500a00501f", - "0x2eb0280400053630050360c00072ec0280360053630053590052ed02803c", - "0x36300503c00509202800b00536300500b00504f028219005363005040005", - "0x36300502800702821903c00b0310052190053630052190050e302803c005", - "0x500700524202802836300503100504002802836300500a00501f028028", - "0x2804602822700536300502802002821d00536300500f005031028028363", - "0x536300522d22700735c02822d00536300522d00501b02822d005363005", - "0x52de02804800536300523104600702d028046005363005028023028231", - "0x536300521d00509202809200536300509200504f028047005363005048", - "0x2836300502836102804721d0920310050470053630050470050e302821d", - "0x2836300502800702809204f00750100b00a007363007005028007005028", - "0xa00504f02801000536300503100500a02800f00536300500b005031028", - "0x1c600736300701000500f02800f00536300500f00509202800a005363005", - "0x1002801400536300500f00503102802836300502800702801300550204e", - "0x36300503000501b02803000536300504d0051c602804d00536300504e005", - "0x280180053630051c600521902801700536300503000700735c028030005", - "0x501700522d02801400536300501400509202800a00536300500a00504f", - "0x36300501801701400a00a06802801800536300501800505b028017005363", - "0x501300501c02802836300502800702801b36036103100501b360361031", - "0x72d602835f00536300502803002801c00536300500f005031028028363", - "0x36300500a00504f02801f00536300535e0052d802835e00536300535f007", - "0x3100501f00536300501f0052d302801c00536300501c00509202800a005", - "0x3100524202802836300500700504002802836300502800702801f01c00a", - "0x4602835d005363005028020028020005363005092005031028028363005", - "0x36300535c35d00735c02835c00536300535c00501b02835c005363005028", - "0x2d202835b00536300502302d00702d02802d005363005028023028023005", - "0x36300502000509202804f00536300504f00504f0280c000536300535b005", - "0x3630050283610280c002004f0310050c00053630050c00052d3028020005", - "0x36300502800702809204f00750300b00a007363007005028007005028028", - "0x504f02801000536300500700500a02800f00536300500b005031028028", - "0x736300701000500f02800f00536300500f00509202800a00536300500a", - "0x2801400536300500f00503102802836300502800702801300550404e1c6", - "0x503000501b02803000536300504d0051c602804d00536300504e005010", - "0x180053630051c600521902801700536300503003100735c028030005363", - "0x1800505b02801400536300501400509202800a00536300500a00504f028", - "0x501701801400a00a07502801700536300501700522d028018005363005", - "0x1300501c02802836300502800702801b36036103100501b360361031363", - "0x2d602835f00536300502803002801c00536300500f005031028028363005", - "0x500a00504f02801f00536300535e0052d802835e00536300535f031007", - "0x501f00536300501f0052d302801c00536300501c00509202800a005363", - "0x504002802836300500700524202802836300502800702801f01c00a031", - "0x2835d005363005028020028020005363005092005031028028363005031", - "0x535c35d00735c02835c00536300535c00501b02835c005363005028046", - "0x2835b00536300502302d00702d02802d005363005028023028023005363", - "0x502000509202804f00536300504f00504f0280c000536300535b0052d2", - "0x50280200280c002004f0310050c00053630050c00052d3028020005363", - "0x35c02804f00536300504f00501b02804f00536300502824902800b005363", - "0xf00504002801000f00736300509200503602809200536300504f00b007", - "0x281c60053630051c600505b0281c6005363005010005219028028363005", - "0xa2d00280131c60073630051c60050e902804e1c60073630051c60050e9", - "0x2836300502800702801801703003150504d01400736300701304e005028", - "0x361005092028361005363005014005031028014005363005014005092028", - "0x35e35f01c03150601b36000736300703104d361031312028361005363005", - "0x363005360005031028360005363005360005092028028363005028007028", - "0x501b02801f00536300501f0050920280200053630050282ce02801f005", - "0x2303150735c35d0073630071c602001b01f00a311028020005363005020", - "0x35d00503102835d00536300535d00509202802836300502800702835b02d", - "0x2835900536300508400533402808400536300502808a0280c0005363005", - "0x53630050c00050920283570053630050280320281a80053630050282ce", - "0x501b0283590053630053590050880283570053630053570050330280c0", - "0x315083560320073630071a835935735c0c000b00c0281a80053630051a8", - "0x503102803200536300503200509202802836300502800702800c033364", - "0x536300503c0050920283560053630053560050c002803c005363005032", - "0x4702802836300502800702804000550903600536300700a0052cd02803c", - "0x21d00536300502803002821900536300503c005031028028363005036005", - "0x509202822d0053630052270050ec02822700536300521d0070072ca028", - "0x536300522d0050f00283560053630053560050c0028219005363005219", - "0x2802836300504000504702802836300502800702822d35621903100522d", - "0x536300502802002823100536300503c00503102802836300500700531c", - "0x4600735c02804800536300504800501b0280480053630050282c9028046", - "0x536300504704500702d028045005363005028023028047005363005048", - "0x50c00282310053630052310050920282460053630052420052c6028242", - "0x70282463562310310052460053630052460050f0028356005363005356", - "0x9202802836300500a00533e02802836300500700531c028028363005028", - "0x5363005028023028249005363005364005031028364005363005364005", - "0x9202824c00536300524b0052c602824b00536300500c24a00702d02824a", - "0x36300524c0050f00280330053630050330050c0028249005363005249005", - "0x2836300500700531c02802836300502800702824c03324903100524c005", - "0x502300503102802300536300502300509202802836300500a00533e028", - "0x2825300536300535b25200702d02825200536300502802302824f005363", - "0x502d0050c002824f00536300524f0050920282560053630052530052c6", - "0x502800702825602d24f0310052560053630052560050f002802d005363", - "0x1c600524202802836300500a00533e02802836300500700531c028028363", - "0x2825800536300501c00503102801c00536300501c005092028028363005", - "0x50090052c602800900536300535e05000702d028050005363005028023", - "0x2835f00536300535f0050c002825800536300525800509202805b005363", - "0x31c02802836300502800702805b35f25803100505b00536300505b0050f0", - "0x280283630051c600524202802836300500a00533e028028363005007005", - "0x36300503000503102803000536300503000509202802836300503100533d", - "0x2c602805c00536300501805900702d028059005363005028023028058005", - "0x3630050170050c002805800536300505800509202826c00536300505c005", - "0x36300502802002826c01705803100526c00536300526c0050f0028017005", - "0x4002800f09200736300500b00503602804f0053630050282c502800b005", - "0x73630050310050dc02801000536300500f005219028028363005092005", - "0x36300701004f1c600502800b27702804f00536300504f00501b0281c6031", - "0x501400524202802836300502800702801703004d03150a01401304e031", - "0x2002801800536300504e00503102804e00536300504e005092028028363", - "0x36300536036100735c02836000536300500a005327028361005363005028", - "0x52c402835f00536300501c00508102801c00536300502803002801b005", - "0x36300535e01b00735c02835e00536300535e00501b02835e00536300535f", - "0x4002835c35d00736300501f0050360280200053630050282c302801f005", - "0x536300501800509202802300536300535c00521902802836300535d005", - "0xb27702802300536300502300505b02802000536300502000501b028018", - "0x50280070281a835908403150b0c035b02d031363007023020031013018", - "0x2d00509202802836300500700531c0280283630050c0005242028028363", - "0x2803200536300502802002835700536300502d00503102802d005363005", - "0x535603200735c02835600536300535600501b0283560053630050282c2", - "0x2800c00536300536403300702d028033005363005028023028364005363", - "0x535b0050c002835700536300535700509202803c00536300500c0052c6", - "0x502800702803c35b35703100503c00536300503c0050f002835b005363", - "0x50310280840053630050840050920280283630051a8005040028028363", - "0x2190053630050400052c102804000536300502808a028036005363005084", - "0x2270050fa02802836300521d0050f802822721d0073630052190052be028", - "0x4600536300523100533402823100536300522d0052bd02822d005363005", - "0x5048005033028036005363005036005092028048005363005028032028", - "0x36300704604835903600a03c028046005363005046005088028048005363", - "0x504700509202802836300502800702824a24924603150c242045047031", - "0x1b02824c00536300502833302824b005363005047005031028047005363", - "0x524f00501b02824f00536300524c242007326028242005363005242005", - "0x2824b00536300524b0050920280450053630050450050c002824f005363", - "0x524b00503102802836300502800702825200550d02836300724f005342", - "0x282580053630052560070072ca028256005363005028030028253005363", - "0x50450050c00282530053630052530050920280500053630052580050ec", - "0x50280070280500452530310050500053630050500050f0028045005363", - "0x24b00503102802836300500700531c028028363005252005340028028363", - "0x1b0280580053630050282bb02805b005363005028020028009005363005", - "0x36300502802302805900536300505805b00735c028058005363005058005", - "0x2827500536300526c0052c602826c00536300505905c00702d02805c005", - "0x52750050f00280450053630050450050c0028009005363005009005092", - "0x36300500700531c028028363005028007028275045009031005275005363", - "0x28023028277005363005246005031028246005363005246005092028028", - "0x53630050600052c602806000536300524a05e00702d02805e005363005", - "0x50f00282490053630052490050c002827700536300527700509202805f", - "0x700531c02802836300502800702805f24927703100505f00536300505f", - "0x509202802836300503100527502802836300500a00533d028028363005", - "0x2af00536300502802302805d00536300504d00503102804d00536300504d", - "0x50920280420053630052bc0052c60282bc0053630050172af00702d028", - "0x53630050420050f00280300053630050300050c002805d00536300505d", - "0x736300700502800700502802836300502836102804203005d031005042", - "0x4e00536300500f0050310280283630050280070281c601000750e00f092", - "0x52ba0280140053630050130050fc02801300b00736300500b0052ba028", - "0x36300504e00509202809200536300509200504f02804d031007363005031", - "0x3102802836300502800702802850f02836300701404d0070fe02804e005", - "0x501700521902801704f00736300504f00507102803000536300504e005", - "0x36000536300536100521902836100a00736300500a005071028018005363", - "0x1c01b00736300736001800703000a2d0028030005363005030005092028", - "0x2801b00536300501b00509202802836300502800702801f35e35f031510", - "0x36300535d00532c02835d0053630050280fd02802000536300501b005031", - "0xfb02802000536300502000509202801c00536300501c0050c002835d005", - "0x2802836300502800702835b02d00751102335c00736300735d031092031", - "0x50c000509202835c00536300535c00504f0280c0005363005020005031", - "0x2802300536300502300532c02801c00536300501c0050c00280c0005363", - "0x504f00501302800b00536300500b00532c02800a00536300500a005013", - "0x3571a835908400a36300504f00b00a02301c0c035c09232b02804f005363", - "0x2802836300535b00508e0280283630050280070283571a835908400a005", - "0x2836300500a00501c02802836300500b00508e02802836300504f00501c", - "0x3630050282b9028356005363005028020028032005363005020005031028", - "0x2803300536300536435600735c02836400536300536400501b028364005", - "0x503c0052b802803c00536300503300c00702d02800c005363005028023", - "0x2803200536300503200509202802d00536300502d00504f028036005363", - "0x1c03202d00a00503600536300503600510402801c00536300501c0050c0", - "0x36300500b00508e02802836300504f00501c028028363005028007028036", - "0x535f00509202802836300503100508e02802836300500a00501c028028", - "0x2d02821900536300502802302804000536300535f00503102835f005363", - "0x509200504f02822700536300521d0052b802821d00536300501f219007", - "0x2835e00536300535e0050c0028040005363005040005092028092005363", - "0x2802836300502800702822735e04009200a005227005363005227005104", - "0x2836300500a00501c02802836300500b00508e02802836300504f00501c", - "0x23103100710602823100536300502803002822d00536300504e005031028", - "0x9200536300509200504f028048005363005046005105028046005363005", - "0x480051040280070053630050070050c002822d00536300522d005092028", - "0x4f00501c02802836300502800702804800722d09200a005048005363005", - "0x508e02802836300500a00501c02802836300500b00508e028028363005", - "0x280450053630050280200280470053630051c6005031028028363005031", - "0x524204500735c02824200536300524200501b028242005363005028046", - "0x2824a00536300524624900702d028249005363005028023028246005363", - "0x504700509202801000536300501000504f02824b00536300524a0052b8", - "0x524b00536300524b0051040280070053630050070050c0028047005363", - "0x736300700700500f02800700536300500500500a02824b00704701000a", - "0x2804f00536300500a00525602802836300502800702800b00551200a031", - "0x51300502804d02800f00536300504f005258028092005363005031005013", - "0x363005010005050028010005363005028030028028363005028007028028", - "0x7102800f0053630051c600525802809200536300500b0050130281c6005", - "0x700f00500902801300536300504e00521902804e092007363005092005", - "0x3000536300501400501002802836300502800702804d005514014005363", - "0x2800708602801700536300501700501b0280170053630050300051c6028", - "0x5013005242028028363005028007028360005515361018007363007017", - "0x51601c01b00736300709200500f02801800536300501800504f028028363", - "0x1b00501302835e00536300501c00525602802836300502800702835f005", - "0x702802851700502804d02802000536300535e00525802801f005363005", - "0x2835c00536300535d00505002835d005363005028030028028363005028", - "0x501f00507102802000536300535c00525802801f00536300535f005013", - "0x35b00536300702000500902802d00536300502300521902802301f007363", - "0x51c602808400536300535b0050100280283630050280070280c0005518", - "0x36300735901800708602835900536300535900501b028359005363005084", - "0x2802836300502d0052420280283630050280070280320055193571a8007", - "0x2803300551a36435600736300701f00500f0281a80053630051a800504f", - "0x536300500c0051c602800c005363005364005010028028363005028007", - "0x501402804000536300535600501302803600536300503c00504e02803c", - "0x2803002802836300502800702802851b00502804d028219005363005036", - "0x4000536300503300501302822700536300521d00501702821d005363005", - "0x21900501802822d005363005040005219028219005363005227005014028", - "0x3630072311a800725302802836300502800702804600551c231005363007", - "0x36300504735736103110302802836300502800702804500551d047048007", - "0x5b02804800536300504800504f0282460053630052420052b7028242005", - "0x2824622d0480310052460053630052460052b602822d00536300522d005", - "0x2802836300535700508e02802836300536100508e028028363005028007", - "0x2802836300502800702802851e00502804d02824900536300504500504f", - "0x2836300535700508e02802836300536100508e028028363005046005047", - "0x524a00510c02824a0053630050280300282490053630051a800504f028", - "0x524b00536300524b0052b602822d00536300522d00505b02824b005363", - "0x501c02802836300536100508e02802836300502800702824b22d249031", - "0x702802851f00502804d02824c00536300503200504f02802836300501f", - "0x1c02802836300536100508e0280283630050c0005047028028363005028", - "0x24f00536300502803002824c00536300501800504f02802836300501f005", - "0x2520052b602802d00536300502d00505b02825200536300524f00510c028", - "0x509200501c02802836300502800702825202d24c031005252005363005", - "0x502800702802852000502804d02825300536300536000504f028028363", - "0x2800504f02802836300509200501c02802836300504d005047028028363", - "0x2825800536300525600510c028256005363005028030028253005363005", - "0x2580132530310052580053630052580052b602801300536300501300505b", - "0x536300502824c02804f00536300502824c02800a00536300502824c028", - "0x36300502805d02801300536300502824c0281c600536300502824c02800f", - "0x36300502836102802836300502824f02801700536300502824c02804d005", - "0x552136036100736300701800500f02801800536300500700500a028028", - "0x536000501002801c00536300500500503102802836300502800702801b", - "0x35f00536300500b0051c602800b00536300500b04f00725202800b005363", - "0x36100500f02801c00536300501c005092028361005363005361005013028", - "0x36300501c00503102802836300502800702802000552201f35e007363007", - "0x4e02802300536300535c0051c602835c00536300501f00501002835d005", - "0x36300535e00501302835b00536300535d00509202802d005363005023005", - "0x502800702802852300502804d02808400536300502d0050140280c0005", - "0x50170281a800536300502803002835900536300501c005031028028363", - "0x536300502000501302835b0053630053590050920283570053630051a8", - "0x2190280320c00073630050c00050710280840053630053570050140280c0", - "0x9200536300708400501802802836300502800b028356005363005032005", - "0x725202803300536300535b005031028028363005028007028364005524", - "0x709202800725302803300536300503300509202809200536300509200f", - "0x2836300535600524202802836300502800702803600552503c00c007363", - "0x4000509202800c00536300500c00504f028040005363005033005031028", - "0x502800702822700552621d2190073630070c000500f028040005363005", - "0x9202823100536300521d00525602822d005363005040005031028028363", - "0x36300523100525802804800536300521900501302804600536300522d005", - "0x36300504000503102802836300502800702802852700502804d028047005", - "0x5092028246005363005242005050028242005363005028030028045005", - "0x5363005246005258028048005363005227005013028046005363005045", - "0x24b00552824a005363007047005009028249005363005048005219028047", - "0x36300524a00501002824c005363005046005031028028363005028007028", - "0x2824f0053630050310051c602803100536300503100a007252028031005", - "0x25603152925325200736300724f00c0070ac02824c00536300524c005092", - "0x25200504f02800900536300524c005031028028363005028007028050258", - "0x736300524925200710d02824900536300524900505b028252005363005", - "0x552a05900536300705800510b02800900536300500900509202805805b", - "0x505900510e02826c00536300500900503102802836300502800702805c", - "0x1400536300727700502502826c00536300526c005092028277275007363", - "0x500a02806000536300526c00503102802836300502800702805e00552b", - "0x36300506000509202801400536300501404d00706902805f005363005275", - "0x283630050280070282bc00552c2af05d00736300705f00500f028060005", - "0x5d00501302804e0053630052af005010028042005363005060005031028", - "0x536300504e01300725202804200536300504200509202805d005363005", - "0x2802836300502800702806900552d30606700736300705d00500f02804e", - "0x5067005013028010005363005306005010028068005363005042005031", - "0x100053630050101c6007252028068005363005068005092028067005363", - "0x3102802836300502800702807100552e06f00600736300706700500f028", - "0x36300504e0051c602803000536300506f005010028347005363005068005", - "0x280300053630050300170072520280750053630050100051c6028074005", - "0x53470050920280060053630050060050130280770053630050300051c6", - "0x36300502800702804300552f34534600736300700600500f028347005363", - "0x509202807900536300534500525602807a005363005347005031028028", - "0x536300507900525802834200536300534600501302807f00536300507a", - "0x536300534700503102802836300502800702802853000502804d028081", - "0x7d00509202833f00536300534000505002834000536300502803002807d", - "0x8100536300533f00525802834200536300504300501302807f005363005", - "0x503102802836300502800702833d00553133e005363007081005009028", - "0x3370053630050282b402833b00536300533e00501002833c00536300507f", - "0x5b00504f02833600536300533b0051c602808c005363005342005219028", - "0x8c00536300508c00505b02833c00536300533c00509202805b005363005", - "0x5b00b11602833600536300533600501b028337005363005337005114028", - "0x553233300536300733400511502833408a33503136300533633708c33c", - "0x533300511302833200536300508a005031028028363005028007028088", - "0x2b302833200536300533200509202802836300502800b028330331007363", - "0x533200503102802836300502800702808e005533086005363007330005", - "0x2802836300532d00511c02832c32d00736300508600512002836f005363", - "0x533100500a02832a00536300532b0052b202832b00536300532c00511b", - "0x2832700536300532900501302832800536300536f005092028329005363", - "0x2802836300502800702802853400502804d02832600536300532a005122", - "0x533100500a02832500536300508e00512402808b005363005332005031", - "0x2832700536300532400501302832800536300508b005092028324005363", - "0x70283200055353230053630073260052b0028326005363005325005122", - "0x85005363005085005092028085005363005328005031028028363005028", - "0x3102802836300502800702831f00553609509300736300732700500f028", - "0x36300509800509202831e005363005095005256028098005363005085005", - "0x4d02831c00536300531e00525802831d005363005093005013028096005", - "0x3002831a005363005085005031028028363005028007028028537005028", - "0x536300531a005092028318005363005319005050028319005363005028", - "0x521902831c00536300531800525802831d00536300531f005013028096", - "0x502800702831500553831600536300731c00500902831700536300531d", - "0x1c6028313005363005316005010028314005363005096005031028028363", - "0x36300531400509202831200536300531200501b028312005363005313005", - "0x280070280a930c30e03153930f3110073630073123350070ac028314005", - "0x2831100536300531100504f02830b005363005314005031028028363005", - "0x50920280ac0b000736300531731100710d02831700536300531700505b", - "0x502800702830800553a30a0053630070ac00510b02830b00536300530b", - "0x283050b600736300530a00510e0280b400536300530b005031028028363", - "0x702830300553b0b90053630073050050250280b40053630050b4005092", - "0x3010053630050b600500a0283020053630050b4005031028028363005028", - "0x2fe00553c2ff30000736300730100500f028302005363005302005092028", - "0x3630052ff0052560280bf005363005302005031028028363005028007028", - "0x2580282fb0053630053000050130282fc0053630050bf0050920282fd005", - "0x3102802836300502800702802853d00502804d0280510053630052fd005", - "0x536300538c00505002838c00536300502803002838b005363005302005", - "0x52580282fb0053630052fe0050130282fc00536300538b00509202838d", - "0x3630050dc0052190280dc2fb0073630052fb00507102805100536300538d", - "0x280283630050280070280c600553e0c700536300705100500902838f005", - "0x50cb0051c60280cb0053630050c70050100280c90053630052fc005031", - "0x280c90053630050c90050920280cf0053630050cf00501b0280cf005363", - "0x24202802836300502800702830700553f3902fa0073630070cf0b00072ae", - "0x53630052fa00504f0283910053630050c900503102802836300538f005", - "0x55400d42f40073630072fb00500f0283910053630053910050920282fa", - "0x50d40052560280d50053630053910050310280283630050280070282f3", - "0x282f00053630052f40050130282f10053630050d5005092028392005363", - "0x2802836300502800702802854100502804d0282ea005363005392005258", - "0x3630052e70050500282e70053630050280300280da005363005391005031", - "0x2580282f00053630052f30050130282f10053630050da0050920282e5005", - "0x3630072ea0050090280d20053630052f00052190282ea0053630052e5005", - "0x282ef0053630052f10050310280283630050280070280db0055422e8005", - "0x52e100501b0282e10053630052e20051c60282e20053630052e8005010", - "0x2e00073630072e12fa0072ae0282ef0053630052ef0050920282e1005363", - "0x4f0280e10053630052ef0050310280283630050280070282ee0055430df", - "0x50d22e000710d0280d20053630050d200505b0282e00053630052e0005", - "0xe30053630072eb00510b0280e10053630050e10050920282eb2ec007363", - "0x510e0282de0053630050e10050310280283630050280070282ed005544", - "0x3630072d80050250282de0053630052de0050920282d82d60073630050e3", - "0x50310280283630050283610280283630050280070282d20055452d3005", - "0xdf3900b930f32307707507401425303c35f0142ad0280e90053630052de", - "0x3630052ce2d60071270282ce0053630052d00052ac0282d00053630052d3", - "0x920282ec0053630052ec00504f0282ca0053630052cd0051290282cd005", - "0x282ca0e92ec0310052ca0053630052ca0051280280e90053630050e9005", - "0x23102802836300535f00501f028028363005028361028028363005028007", - "0x280283630050b90052420280283630053900052310280283630050df005", - "0x2836300507700501f02802836300532300512602802836300530f00530a", - "0x36300501400524202802836300507400501f02802836300507500501f028", - "0x52de00503102802836300503c00527502802836300525300530a028028", - "0x2c90053630050f02d60071270280f00053630052d20052ab0280ec005363", - "0xec0050920282ec0053630052ec00504f0282c60053630052c9005129028", - "0x280070282c60ec2ec0310052c60053630052c60051280280ec005363005", - "0x3c00527502802836300535f00501f028028363005028361028028363005", - "0x52420280283630053900052310280283630050df005231028028363005", - "0x1f02802836300532300512602802836300530f00530a0280283630050b9", - "0x2802836300507400501f02802836300507500501f028028363005077005", - "0x53630050e100503102802836300525300530a028028363005014005242", - "0x50920282ec0053630052ec00504f0282c40053630052ed0052a90282c5", - "0x70282c42c52ec0310052c40053630052c40051280282c50053630052c5", - "0x27502802836300535f00501f02802836300525300530a028028363005028", - "0x280283630050b900524202802836300539000523102802836300503c005", - "0x2836300507700501f02802836300532300512602802836300530f00530a", - "0x36300501400524202802836300507400501f02802836300507500501f028", - "0x50920282c20053630052ee00504f0282c30053630052ef005031028028", - "0x504702802836300502800702802854600502804d0282c10053630052c3", - "0x27502802836300535f00501f02802836300525300530a0280283630050db", - "0x280283630050b900524202802836300539000523102802836300503c005", - "0x2836300507700501f02802836300532300512602802836300530f00530a", - "0x36300501400524202802836300507400501f02802836300507500501f028", - "0x50920282c20053630052fa00504f0282be0053630052f1005031028028", - "0x2ab0280f80053630050280300280283630050283610282c10053630052be", - "0x52bd0051290282bd0053630050fa0d20071270280fa0053630050f8005", - "0x50280070282bb2c12c20310052bb0053630052bb0051280282bb005363", - "0x3c00527502802836300535f00501f02802836300525300530a028028363", - "0x52420280283630050140052420280283630052fb00501c028028363005", - "0x1f02802836300532300512602802836300530f00530a0280283630050b9", - "0x2802836300507400501f02802836300507500501f028028363005077005", - "0x52ba0050920280fc00536300530700504f0282ba0053630050c9005031", - "0x50c600504702802836300502800702802854700502804d0280fe005363", - "0x3c00527502802836300535f00501f02802836300525300530a028028363", - "0x52420280283630050140052420280283630052fb00501c028028363005", - "0x1f02802836300532300512602802836300530f00530a0280283630050b9", - "0x2802836300507400501f02802836300507500501f028028363005077005", - "0x50fd0050920280fc0053630050b000504f0280fd0053630052fc005031", - "0xfb0052ab0280fb0053630050280300280283630050283610280fe005363", - "0x53630052b80051290282b80053630052b938f0071270282b9005363005", - "0x283630050280070281040fe0fc031005104005363005104005128028104", - "0x2836300535f00501f02802836300525300530a028028363005028361028", - "0x36300530f00530a02802836300501400524202802836300503c005275028", - "0x507500501f02802836300507700501f028028363005323005126028028", - "0x52ab0281060053630050b400503102802836300507400501f028028363", - "0x3630051030051290281030053630051050b6007127028105005363005303", - "0x1280281060053630051060050920280b00053630050b000504f0282b7005", - "0x283610280283630050280070282b71060b00310052b70053630052b7005", - "0x527502802836300535f00501f02802836300525300530a028028363005", - "0x30a02802836300501400524202802836300507400501f02802836300503c", - "0x2802836300507700501f02802836300532300512602802836300530f005", - "0x3630053080052a90282b600536300530b00503102802836300507500501f", - "0x1280282b60053630052b60050920280b00053630050b000504f02810c005", - "0x530a02802836300502800702810c2b60b003100510c00536300510c005", - "0x1f02802836300525300530a0280283630050a900530a02802836300530c", - "0x2802836300507500501f02802836300503c00527502802836300535f005", - "0x2836300532300512602802836300501400524202802836300507400501f", - "0x530e00504f02810d00536300531400503102802836300507700501f028", - "0x2800702802854800502804d02810e00536300510d00509202810b005363", - "0x501f02802836300525300530a028028363005315005047028028363005", - "0x1f02802836300507500501f02802836300503c00527502802836300535f", - "0x28028363005323005126028028363005014005242028028363005074005", - "0x36300533500504f02802500536300509600503102802836300507700501f", - "0x502803002802836300502836102810e00536300502500509202810b005", - "0x1160053630051143170071270281140053630052b40052ab0282b4005363", - "0x10e10b031005115005363005115005128028115005363005116005129028", - "0x2836300525300530a028028363005028361028028363005028007028115", - "0x36300507500501f02802836300503c00527502802836300535f00501f028", - "0x507700501f02802836300501400524202802836300507400501f028028", - "0x920282b300536300533500504f028113005363005328005031028028363", - "0x36300532700501302811c00536300532000512f028120005363005113005", - "0x36300525300530a02802836300502800702802854900502804d02811b005", - "0x507500501f02802836300503c00527502802836300535f00501f028028", - "0x7700501f02802836300501400524202802836300507400501f028028363", - "0x281220053630050880052a90282b200536300508a005031028028363005", - "0x51220051280282b20053630052b200509202833500536300533500504f", - "0x283630050283610280283630050280070281222b2335031005122005363", - "0x36300535f00501f02802836300525300530a02802836300533d005047028", - "0x507400501f02802836300507500501f02802836300503c005275028028", - "0x7f00503102802836300507700501f028028363005014005242028028363", - "0x282b300536300505b00504f0282b0005363005028030028124005363005", - "0x534200501302811c0053630052b000512f028120005363005124005092", - "0x282ad00536300511c0052ab0282ae00536300511b00521902811b005363", - "0x2b300504f0281270053630052ac0051290282ac0053630052ad2ae007127", - "0x1270053630051270051280281200053630051200050920282b3005363005", - "0x530a0280283630050283610280283630050280070281271202b3031005", - "0x1f02802836300503c00527502802836300535f00501f028028363005253", - "0x2802836300501400524202802836300501000501f02802836300504e005", - "0x5363005028030028129005363005068005031028028363005017005060", - "0x71270282ab0053630051280052ab028126005363005071005219028128", - "0x36300505b00504f02812f0053630052a90051290282a90053630052ab126", - "0x3100512f00536300512f00512802812900536300512900509202805b005", - "0x525300530a02802836300502836102802836300502800702812f12905b", - "0x4e00501f02802836300503c00527502802836300535f00501f028028363", - "0x50600280283630051c6005060028028363005014005242028028363005", - "0x282a800536300502803002812e005363005042005031028028363005017", - "0x1331340071270281330053630052a80052ab028134005363005069005219", - "0x5b00536300505b00504f0282a50053630052a70051290282a7005363005", - "0x12e05b0310052a50053630052a500512802812e00536300512e005092028", - "0x2836300525300530a0280283630050283610280283630050280070282a5", - "0x36300501300506002802836300503c00527502802836300535f00501f028", - "0x50170050600280283630051c6005060028028363005014005242028028", - "0x52190281390053630050280300282a4005363005060005031028028363", - "0x36300513a13b00712702813a0053630051390052ab02813b0053630052bc", - "0x9202805b00536300505b00504f0282a3005363005138005129028138005", - "0x282a32a405b0310052a30053630052a30051280282a40053630052a4005", - "0x1f02802836300525300530a028028363005028361028028363005028007", - "0x2802836300501300506002802836300503c00527502802836300535f005", - "0x2836300504d0050670280283630050170050600280283630051c6005060", - "0x2750071270282a100536300505e0052ab0282a200536300526c005031028", - "0x536300505b00504f0281410053630051420051290281420053630052a1", - "0x5b0310051410053630051410051280282a20053630052a200509202805b", - "0x36300525300530a0280283630050283610280283630050280070281412a2", - "0x504d00506702802836300503c00527502802836300535f00501f028028", - "0x170050600280283630051c6005060028028363005013005060028028363", - "0x2829e00536300505c0052a902829f005363005009005031028028363005", - "0x529e00512802829f00536300529f00509202805b00536300505b00504f", - "0x36300525800530a02802836300502800702829e29f05b03100529e005363", - "0x503c00527502802836300535f00501f02802836300505000530a028028", - "0x1c600506002802836300501300506002802836300504d005067028028363", - "0x4f02829d00536300524c005031028028363005017005060028028363005", - "0x2854a00502804d02814900536300529d005092028152005363005256005", - "0x2836300535f00501f02802836300524b005047028028363005028007028", - "0x36300501300506002802836300504d00506702802836300503c005275028", - "0x500a0050600280283630050170050600280283630051c6005060028028", - "0x9202815200536300500c00504f02814b005363005046005031028028363", - "0x2814d00536300502803002802836300502836102814900536300514b005", - "0x15000512902815000536300514e24900712702814e00536300514d0052ab", - "0x2800702829a14915203100529a00536300529a00512802829a005363005", - "0x506702802836300535f00501f02802836300500a005060028028363005", - "0x600280283630050c000501c02802836300501300506002802836300504d", - "0x2980053630050330050310280283630050170050600280283630051c6005", - "0x502804d02815a00536300529800509202829c00536300503600504f028", - "0x500a00506002802836300536400504702802836300502800702802854b", - "0x1300506002802836300504d00506702802836300535f00501f028028363", - "0x50600280283630051c60050600280283630050c000501c028028363005", - "0x2815900536300535b00503102802836300500f005060028028363005017", - "0x36300502836102815a00536300515900509202829c00536300502800504f", - "0x3560071270281570053630051580052ab028158005363005028030028028", - "0x5363005155005128028155005363005156005129028156005363005157", - "0x2802836300500a00506002802836300502800702815515a29c031005155", - "0x2836300504f00506002802836300501300506002802836300504d005067", - "0x36300500f0050600280283630050170050600280283630051c6005060028", - "0x1b005219028153005363005028030028154005363005005005031028028", - "0x53630052961640071270282960053630051530052ab028164005363005", - "0x509202802800536300502800504f028294005363005295005129028295", - "0x12e028294154028031005294005363005294005128028154005363005154", - "0x2804d00536300502824c02801300536300502805f0281c6005363005028", - "0x2802836300502824f0283610053630050282a802801700536300502812e", - "0x3136300700700500713402802836300503100531c028028363005028361", - "0x36300536000509202802836300502800702835e35f01c03154c01b04e360", - "0x2a702801b00536300501b00513302801f005363005360005031028360005", - "0x2a402801403001035c35d00b3630050200052a502802000536300501b005", - "0x36300502300513b02802300536300535d00513902835d00536300535d005", - "0x280840c000736300500a00513b02802836300502d00509602835b02d007", - "0x36300535b00513a02835b00536300535b00531a0280283630050c0005096", - "0x2836300535700508e0280323571a803136300535900513802835935b007", - "0x508400513a0283560053630051a80050fc028028363005032005275028", - "0x36300500c00508e02803c00c033031363005364005138028364084007363", - "0x130073060280360053630050330050fc02802836300503c005275028028", - "0x536300535c0052a302801f00536300501f00509202804e00536300504e", - "0x280300053630050300170072a20280100053630050101c60072a202835c", - "0x702802854d0283630070363560070fe02801400536300501404d007252", - "0x1f02802836300501400501f028028363005084005096028028363005028", - "0x2802836300509200501f02802836300503000527502802836300500f005", - "0x2836300501000527502802836300500b00531e02802836300535c0052a1", - "0x36300535b00509602802836300536100514202802836300504f00501f028", - "0x2804d02821900536300504000509202804000536300501f005031028028", - "0x513a02821d00536300501f00503102802836300502800702802854e005", - "0x22d00508e02804623122d03136300522700513802822735b00736300535b", - "0x13a0280480053630052310050fc028028363005046005275028028363005", - "0x508e028246242045031363005047005138028047084007363005084005", - "0x282490053630052420050fc028028363005246005275028028363005045", - "0x2800702802854f0283630072490480070fe02821d00536300521d005092", - "0x527502802836300500f00501f02802836300501400501f028028363005", - "0x31e02802836300535c0052a102802836300509200501f028028363005030", - "0x2802836300504f00501f02802836300501000527502802836300500b005", - "0x2836300508400509602802836300535b005096028028363005361005142", - "0x21900530702821900536300524a00509202824a00536300521d005031028", - "0x21d00503102802836300502800702802855000502804d02824b005363005", - "0x36300524f00508e02825325224f03136300535b00513802824c005363005", - "0x25600538f02825600536300525300514102802836300525200508e028028", - "0x36300505000508e02805b009050031363005084005138028258005363005", - "0x5800538f02805800536300505b00514102802836300500900508e028028", - "0x536300505c00501b02805c005363005059258007326028059005363005", - "0x2826c00555102836300705c00534202824c00536300524c00509202805c", - "0x536300535c00529f02827500536300524c005031028028363005028007", - "0x2805e27700736300501800529d02801800536300501836100729e028018", - "0x506000531e02805f06000736300500b00529d02802836300527700531e", - "0x2bc2af01436300505d00514902805d05e00736300505e005152028028363", - "0x30a0280283630052bc00527502807507434707106f006068069306067042", - "0x2802836300530600501f028028363005067005242028028363005042005", - "0x2836300500600512602802836300506800501f02802836300506900501f", - "0x36300534700523102802836300507100524202802836300506f00530a028", - "0x52af0051c6028028363005075005242028028363005074005231028028", - "0x34501436300534600514902834605f00736300505f005152028077005363", - "0x2802836300504300527502833c33d33e33f34007d08134207f07907a043", - "0x2836300507f00501f02802836300507900524202802836300507a00530a", - "0x36300507d00512602802836300508100501f02802836300534200501f028", - "0x533e00523102802836300533f00524202802836300534000530a028028", - "0x3450051c602802836300533c00524202802836300533d005231028028363", - "0x536300533700501b02833700536300533b07700732602833b005363005", - "0x2808c005552028363007337005342028275005363005275005092028337", - "0x736300505e005152028336005363005275005031028028363005028007", - "0x32d36f08e08633033133208833333408a01436300533500514902833505e", - "0x8800524202802836300533300530a02802836300508a00501f02832b32c", - "0x501f02802836300533100501f02802836300533200501f028028363005", - "0x24202802836300508e00530a028028363005086005126028028363005330", - "0x2802836300532c00523102802836300532d00523102802836300536f005", - "0x36300532a00538f02832a00536300533400514102802836300532b005242", - "0x32632701436300532800514902832805f00736300505f005152028329005", - "0x30a02802836300532700501f02831e09831f09509308532032332432508b", - "0x2802836300532400501f02802836300532500524202802836300508b005", - "0x2836300508500512602802836300532000501f02802836300532300501f", - "0x36300531f00523102802836300509500524202802836300509300530a028", - "0x532600514102802836300531e005242028028363005098005231028028", - "0x31c00536300531d32900732602831d00536300509600538f028096005363", - "0x31c00534202833600536300533600509202831c00536300531c00501b028", - "0x31900536300533600503102802836300502800702831a005553028363007", - "0x31431531631701436300531800514902831805e00736300505e005152028", - "0x31600527502802836300531700501f0280b030b0a930c30e30f311312313", - "0x501f02802836300531300501f028028363005314005242028028363005", - "0x30a02802836300530f00512602802836300531100501f028028363005312", - "0x280283630050a900523102802836300530c00524202802836300530e005", - "0x53630053150052f10280283630050b000524202802836300530b005231", - "0xb60b430801436300530a00514902830a05f00736300505f0051520280ac", - "0x527502802836300530800501f0282fd0bf2fe2ff3003013023030b9305", - "0x1f0280283630050b900501f0280283630053050052420280283630050b4", - "0x2802836300530100512602802836300530200501f028028363005303005", - "0x283630052fe0052310280283630052ff00524202802836300530000530a", - "0x3630050b60052f10280283630052fd0052420280283630050bf005231028", - "0x285540283630072fc0ac00714b0283190053630053190050920282fc005", - "0x2836300503000527502802836300500f00501f028028363005028007028", - "0x36300505e00531e02802836300505f00531e02802836300509200501f028", - "0x501400501f02802836300504f00501f028028363005010005275028028", - "0x4d0280510053630052fb0050920282fb005363005319005031028028363", - "0x15202838b005363005319005031028028363005028007028028555005028", - "0xc90c60c738f0dc38d01436300538c00514902838c05e00736300505e005", - "0x3630050dc00527502802836300538d00501f0282f43913073902fa0cf0cb", - "0x50c900501f0280283630050c600501f02802836300538f00530a028028", - "0x2fa00530a0280283630050cf0051260280283630050cb00501f028028363", - "0x5231028028363005307005231028028363005390005242028028363005", - "0x280d40053630050c700514d0280283630052f4005242028028363005391", - "0xd50053470280d50053630052f300500a0282f30d40073630050d40050e9", - "0x143630052f10051490282f105f00736300505f005152028392005363005", - "0x283630052f000501f0280df2e02e12e22ef0db2e80d22e52e70da2ea2f0", - "0x3630052e500501f0280283630050da00530a0280283630052ea005275028", - "0x50db0051260280283630052e800501f0280283630050d200501f028028", - "0x2e10052310280283630052e20052420280283630052ef00530a028028363", - "0x514d0280283630050df0052420280283630052e0005231028028363005", - "0x3630050e100500a0280e12ee0073630052ee0050e90282ee0053630052e7", - "0x330283920053630053920050330282eb0053630052ec0053470282ec005", - "0x72eb39200714e02838b00536300538b0050920282eb0053630052eb005", - "0x501f028028363005030005275028028363005028007028028556028363", - "0x27502802836300505e00531e02802836300505f00531e028028363005092", - "0x2802836300501400501f02802836300504f00501f028028363005010005", - "0x283630050d40052420280283630052ee00524202802836300500f00501f", - "0xe30050920282ed00536300502800504f0280e300536300538b005031028", - "0x38b00503102802836300502800702802855700502804d0282de005363005", - "0x2d60053630052d600509202802800536300502800504f0282d6005363005", - "0x2800a1500282ee0053630052ee00505b0280d40053630050d400505b028", - "0x2d00055580e90053630072d200529a0282d22d32d80313630052ee0d42d6", - "0x3630050e90052980282ce0053630052d3005031028028363005028007028", - "0x920280283630052ca0052420280283630052cd0052420280ec2ca2cd031", - "0x280070282c90055590f00053630070ec0052cd0282ce0053630052ce005", - "0x531e02802836300505f00531e0280283630050f0005047028028363005", - "0x1f02802836300504f00501f02802836300501000527502802836300505e", - "0x2802836300503000527502802836300500f00501f028028363005014005", - "0x3630052d800504f0282c60053630052ce00503102802836300509200501f", - "0x3070282c50053630052ed0053900282de0053630052c60050920282ed005", - "0x4702802836300502800702802855a00502804d0282c40053630052de005", - "0x736300505e0051520282c30053630052ce0050310280283630052c9005", - "0xfb0fd0fe0fc2ba2bb2bd0fa0f82be2c10143630052c20051490282c205e", - "0xf800530a0280283630052be0052750280283630052c100501f0282b82b9", - "0x501f0280283630052bb00501f0280283630050fa005242028028363005", - "0x2420280283630050fe00530a0280283630050fc0051260280283630052ba", - "0x280283630052b90052310280283630050fb0052310280283630050fd005", - "0x36300505f0051520281040053630052bd0051c60280283630052b8005242", - "0x2b402510e10b10d10c2b62b710310501436300510600514902810605f007", - "0x530a02802836300510300527502802836300510500501f028115116114", - "0x1f02802836300510d00501f0280283630052b60052420280283630052b7", - "0x2802836300502500530a02802836300510e00512602802836300510b005", - "0x283630051160052310280283630051140052310280283630052b4005242", - "0x11310400732602811300536300510c0051c6028028363005115005242028", - "0x2c30053630052c30050920282b30053630052b300501b0282b3005363005", - "0x2c300503102802836300502800702812000555b0283630072b3005342028", - "0x1436300511b00514902811b05e00736300505e00515202811c005363005", - "0x283630052b200501f0282a92ab1261281291272ac2ad2ae2b01241222b2", - "0x3630052b000524202802836300512400530a028028363005122005275028", - "0x51270051260280283630052ac00501f0280283630052ae00501f028028", - "0x12600523102802836300512800524202802836300512900530a028028363", - "0x51c60280283630052a90052420280283630052ab005231028028363005", - "0x36300512e00514902812e05f00736300505f00515202812f0053630052ad", - "0x3630052a800501f0282a12a22a313813a13b1392a42a52a71331342a8014", - "0x52a700524202802836300513300530a028028363005134005275028028", - "0x13b00512602802836300513900501f0280283630052a500501f028028363", - "0x523102802836300513800524202802836300513a00530a028028363005", - "0x1c60280283630052a10052420280283630052a20052310280283630052a3", - "0x514100501b02814100536300514212f0073260281420053630052a4005", - "0x555c02836300714100534202811c00536300511c005092028141005363", - "0x505e00515202829e00536300511c00503102802836300502800702829f", - "0x29c29829a15014e14d14b14915201436300529d00514902829d05e007363", - "0x30a02802836300514900527502802836300515200501f02815715815915a", - "0x2802836300514e00501f02802836300514d00524202802836300514b005", - "0x2836300529c00530a02802836300529800512602802836300515000501f", - "0x36300515800523102802836300515900523102802836300515a005242028", - "0x5f00515202815600536300529a0051c6028028363005157005242028028", - "0x29229329429529616415315401436300515500514902815505f007363005", - "0x2802836300515300527502802836300515400501f02816d28e28f290291", - "0x2836300529500501f02802836300529600524202802836300516400530a", - "0x36300529100530a02802836300529200512602802836300529400501f028", - "0x528e00523102802836300528f005231028028363005290005242028028", - "0x732602816f0053630052930051c602802836300516d005242028028363", - "0x36300529e00509202828c00536300528c00501b02828c00536300516f156", - "0x3102802836300502800702817100555d02836300728c00534202829e005", - "0x517200514902817205e00736300505e00515202828b00536300529e005", - "0x517400501f02828917c02428255e28628728814628a177175174014363", - "0x28a00524202802836300517700530a028028363005175005275028028363", - "0x501f02802836300528800501f02802836300514600501f028028363005", - "0x23102802836300528200524202802836300555e00530a028028363005287", - "0x2802836300528900524202802836300517c005231028028363005024005", - "0x27d00515902827d27f00736300527f00515a02827f00536300528600529c", - "0x5f00736300505f00515202827b00536300527c00515802827c005363005", - "0x19219327618c18a18927818718518418227901436300527a00514902827a", - "0x518400530a02802836300518200527502802836300527900501f028194", - "0x27800501f02802836300518700501f028028363005185005242028028363", - "0x524202802836300518c00530a02802836300518900501f028028363005", - "0x242028028363005192005231028028363005193005231028028363005276", - "0x736300519500515a02819500536300518a00529c028028363005194005", - "0x3302827200536300518d00515802818d005363005271005159028271195", - "0x36300528b00509202827200536300527200503302827b00536300527b005", - "0x31e02802836300502800702802855f02836300727227b00714e02828b005", - "0x2802836300504f00501f02802836300501000527502802836300505e005", - "0x2836300503000527502802836300500f00501f02802836300501400501f", - "0x36300519500512602802836300505f00531e02802836300509200501f028", - "0x2d800504f02827e00536300528b00503102802836300527f005126028028", - "0x702802856000502804d02819a00536300527e00509202826e005363005", - "0x2d80053630052d800504f02819c00536300528b005031028028363005028", - "0x19500515702827f00536300527f00515702819c00536300519c005092028", - "0x51550281a019e26d03136300519527f19c2d800a156028195005363005", - "0x36300519e00503102802836300502800702826a00556126b0053630071a0", - "0x2802836300526600512602826426526603136300526b005154028268005", - "0x3630072640052cd028268005363005268005092028028363005265005126", - "0x1f028028363005263005047028028363005028007028261005562263005", - "0x2802836300500f00501f02802836300501400501f02802836300504f005", - "0x2836300505f00531e02802836300509200501f028028363005030005275", - "0x36300526800503102802836300501000527502802836300505e00531e028", - "0x39002819a00536300526000509202826e00536300526d00504f028260005", - "0x2856300502804d02825c00536300519a00530702825f00536300526e005", - "0x5363005268005031028028363005261005047028028363005028007028", - "0x2571ac25901436300525a00514902825a05e00736300505e00515202825b", - "0x527502802836300525900501f02824124324724d24e2501b21b0251255", - "0x1f02802836300525500524202802836300525700530a0280283630051ac", - "0x280283630051b200501f0280283630051b000501f028028363005251005", - "0x2836300524700523102802836300524d005242028028363005250005126", - "0x36300524e0052f1028028363005241005242028028363005243005231028", - "0x1bd23a0143630051bb0051490281bb05f00736300505f00515202823f005", - "0x27502802836300523a00501f02822c22e2302321c423623b23818e2391bf", - "0x280283630052390052420280283630051bf00530a0280283630051bd005", - "0x2836300523b00501f02802836300523800501f02802836300518e00501f", - "0x363005230005231028028363005232005242028028363005236005126028", - "0x51c40052f102802836300522c00524202802836300522e005231028028", - "0x5640283630071c923f00714b02825b00536300525b0050920281c9005363", - "0x36300500f00501f02802836300501400501f028028363005028007028028", - "0x505f00531e02802836300509200501f028028363005030005275028028", - "0x4f00501f02802836300501000527502802836300505e00531e028028363", - "0x2822400536300526d00504f02822800536300525b005031028028363005", - "0x2802836300502800702802856500502804d028225005363005228005092", - "0x21f00514902821f05e00736300505e00515202822000536300525b005031", - "0x21e00501f0282111d82131d61d42152171d121822121a1cf21e014363005", - "0x524202802836300521a00530a0280283630051cf005275028028363005", - "0x1f0280283630051d100501f02802836300521800501f028028363005221", - "0x280283630051d400530a028028363005215005126028028363005217005", - "0x283630052110052420280283630051d8005231028028363005213005231", - "0x500a02820c2160073630052160050e90282160053630051d600514d028", - "0x736300505f00515202820a00536300520b00534702820b00536300520c", - "0x1ec1f11f81fb1fd1ff2011df20620720801436300520900514902820905f", - "0x20600530a02802836300520700527502802836300520800501f028566000", - "0x501f02802836300520100501f0280283630051df005242028028363005", - "0x30a0280283630051fb0051260280283630051fd00501f0280283630051ff", - "0x280283630050000052310280283630051ec0052310280283630051f8005", - "0x3630055670050e90285670053630051f100514d028028363005566005242", - "0x2856a00536300556900534702856900536300556800500a028568567007", - "0x522000509202856a00536300556a00503302820a00536300520a005033", - "0x2802836300502800702802856b02836300756a20a00714e028220005363", - "0x2836300509200501f02802836300503000527502802836300500f00501f", - "0x36300501000527502802836300505e00531e02802836300505f00531e028", - "0x556700524202802836300501400501f02802836300504f00501f028028", - "0x504f02856c005363005220005031028028363005216005242028028363", - "0x2802856f00502804d02856e00536300556c00509202856d00536300526d", - "0x536300526d00504f028570005363005220005031028028363005028007", - "0x505b02821600536300521600505b02857000536300557000509202826d", - "0x29a02857357257103136300556721657026d00a150028567005363005567", - "0x5572005031028028363005028007028576005575574005363007573005", - "0x2836300557700524202857957857703136300557400529802836d005363", - "0x75790052cd02836d00536300536d005092028028363005578005242028", - "0x2802836300557a00504702802836300502800702857c00557b57a005363", - "0x2836300505e00531e02802836300505f00531e02802836300509200501f", - "0x36300501400501f02802836300504f00501f028028363005010005275028", - "0x536d00503102802836300503000527502802836300500f00501f028028", - "0x2856e00536300557d00509202856d00536300557100504f02857d005363", - "0x58000502804d02857f00536300556e00530702857e00536300556d005390", - "0x36300536d00503102802836300557c005047028028363005028007028028", - "0x58336c01436300558200514902858205e00736300505e005152028581005", - "0x27502802836300536c00501f02858e58d58c58b58a589588587586585584", - "0x2802836300558500524202802836300558400530a028028363005583005", - "0x2836300558800501f02802836300558700501f02802836300558600501f", - "0x36300558b00524202802836300558a00530a028028363005589005126028", - "0x558c00515302802836300558e00524202802836300558d005231028028", - "0x59101436300559000514902859005f00736300505f00515202858f005363", - "0x2802836300559100501f02859b36a59a59959859759659559459336b592", - "0x2836300559300524202802836300536b00530a028028363005592005275", - "0x36300559600501f02802836300559500501f02802836300559400501f028", - "0x559900524202802836300559800530a028028363005597005126028028", - "0x59a00515302802836300559b00524202802836300536a005231028028363", - "0x2836300759c58f00714e02858100536300558100509202859c005363005", - "0x505e00531e02802836300505f00531e02802836300502800702802859d", - "0x1400501f02802836300504f00501f028028363005010005275028028363", - "0x501f02802836300503000527502802836300500f00501f028028363005", - "0x59f00536300557100504f02859e005363005581005031028028363005092", - "0x283630050280070280285a100502804d0285a000536300559e005092028", - "0x51490285a305e00736300505e0051520285a2005363005581005031028", - "0x501f0285ae36e5ad5ac5ab5aa5a95a85a75a63695a55a40143630055a3", - "0x24202802836300536900530a0280283630055a50052750280283630055a4", - "0x280283630055a800501f0280283630055a700501f0280283630055a6005", - "0x283630055ab00530a0280283630055aa0051260280283630055a900501f", - "0x3630055ae0052420280283630055ad0052310280283630055ac005242028", - "0x1490285b005f00736300505f0051520285af00536300536e005153028028", - "0x1f0285bc5bb5ba5b93685b85b75b65b55b45b35b25b10143630055b0005", - "0x280283630055b300530a0280283630055b20052750280283630055b1005", - "0x283630055b600501f0280283630055b500501f0280283630055b4005242", - "0x36300536800530a0280283630055b80051260280283630055b700501f028", - "0x55bc0052420280283630055ba0052310280283630055b9005242028028", - "0x14e0285a20053630055a20050920285bd0053630055bb005153028028363", - "0x36300505e00531e0280283630050280070280285be0283630075bd5af007", - "0x501400501f02802836300504f00501f028028363005010005275028028", - "0x9200501f02802836300503000527502802836300500f00501f028028363", - "0x4f0285bf0053630055a200503102802836300505f00531e028028363005", - "0x285c200502804d0285c10053630055bf0050920285c0005363005571005", - "0x36300505e0051490285c30053630055a2005031028028363005028007028", - "0x3630055c400501f0285cf5ce5cd5cc5cb3675ca5c95c85c75c65c55c4014", - "0x55c70052420280283630055c600530a0280283630055c5005275028028", - "0x5ca00501f0280283630055c900501f0280283630055c800501f028028363", - "0x52420280283630055cb00530a028028363005367005126028028363005", - "0x14d0280283630055ce0052310280283630055cd0052310280283630055cc", - "0x536600500a0283665d00073630055d00050e90285d00053630055cf005", - "0x5d45d301436300505f0051490285d20053630055d10053470285d1005363", - "0x2750280283630055d300501f0285de5dd5dc5db5da5d93705d85d75d65d5", - "0x280283630055d60052420280283630055d500530a0280283630055d4005", - "0x2836300537000501f0280283630055d800501f0280283630055d700501f", - "0x3630055db0052420280283630055da00530a0280283630055d9005126028", - "0x55de00514d0280283630055dd0052310280283630055dc005231028028", - "0x5e10053630055e000500a0285e05df0073630055df0050e90285df005363", - "0x5e20050330285d20053630055d20050330285e20053630055e1005347028", - "0x283630075e25d200714e0285c30053630055c30050920285e2005363005", - "0x504f00501f0280283630050100052750280283630050280070280285e3", - "0x3000527502802836300500f00501f02802836300501400501f028028363", - "0x52420280283630055df00524202802836300509200501f028028363005", - "0x36500536300557100504f0285e40053630055c30050310280283630055d0", - "0x283630050280070280285e600502804d0285e50053630055e4005092028", - "0x5e700509202857100536300557100504f0285e70053630055c3005031028", - "0x5df0053630055df00505b0285d00053630055d000505b0285e7005363005", - "0x53630075ea00529a0285ea5e95e80313630055df5d05e757100a150028", - "0x2980285ee0053630055e90050310280283630050280070285ed0055ec5eb", - "0x55f00052420280283630055ef0052420285f15f05ef0313630055eb005", - "0x55f35f20053630075f10052cd0285ee0053630055ee005092028028363", - "0x36300501400501f0280283630055f20050470280283630050280070285f4", - "0x509200501f02802836300503000527502802836300500f00501f028028", - "0x5ee00503102802836300504f00501f028028363005010005275028028363", - "0x5e50053630055f50050920283650053630055e800504f0285f5005363005", - "0x280283630055f40050470280283630050280070280285e600502804d028", - "0x4f5f70073260285f700536300501000538f0285f60053630055ee005031", - "0x5f60053630055f60050920285f80053630055f800501b0285f8005363005", - "0x5f60050310280283630050280070285fa0055f90283630075f8005342028", - "0x53630050925fc0073260285fc00536300503000538f0285fb005363005", - "0x53420285fb0053630055fb0050920285fd0053630055fd00501b0285fd", - "0x53630055fb0050310280283630050280070285ff0055fe0283630075fd", - "0x9202860100536300560100501b02860100536300500f014007326028600", - "0x5028007028603005602028363007601005342028600005363005600005", - "0x5164028605005363005028030028604005363005600005031028028363", - "0x53630055e800504f028607005363005606005296028606005363005605", - "0x529502804e00536300504e0050c00286040053630056040050920285e8", - "0x534002802836300502800702860704e6045e800a005607005363005607", - "0x28609005363005028020028608005363005600005031028028363005603", - "0x560a60900735c02860a00536300560a00501b02860a005363005028294", - "0x2860d00536300560b60c00702d02860c00536300502802302860b005363", - "0x56080050920285e80053630055e800504f02860e00536300560d005293", - "0x560e00536300560e00529502804e00536300504e0050c0028608005363", - "0x1f0280283630055ff00534002802836300502800702860e04e6085e800a", - "0x60f0053630055fb00503102802836300500f00501f028028363005014005", - "0x36300561100501b028611005363005028292028610005363005028020028", - "0x2d02861300536300502802302861200536300561161000735c028611005", - "0x55e800504f028372005363005614005293028614005363005612613007", - "0x2804e00536300504e0050c002860f00536300560f0050920285e8005363", - "0x2802836300502800702837204e60f5e800a005372005363005372005295", - "0x2836300500f00501f02802836300501400501f0280283630055fa005340", - "0x3630055f600503102802836300509200501f028028363005030005275028", - "0x61700501b028617005363005028291028616005363005028020028615005", - "0x61900536300502802302861800536300561761600735c028617005363005", - "0x504f02837300536300561a00529302861a00536300561861900702d028", - "0x536300504e0050c00286150053630056150050920285e80053630055e8", - "0x36300502800702837304e6155e800a00537300536300537300529502804e", - "0x503000527502802836300500f00501f02802836300501400501f028028", - "0x4f00501f02802836300501000527502802836300509200501f028028363", - "0x2861c0053630055e800504f02861b0053630055e9005031028028363005", - "0x61f00502804d02861e0053630055ed0052e002861d00536300561b005092", - "0x36300505f00531e02802836300509200501f028028363005028007028028", - "0x504f00501f02802836300501000527502802836300505e00531e028028", - "0x3000527502802836300500f00501f02802836300501400501f028028363", - "0x2861c00536300557100504f028620005363005572005031028028363005", - "0x61f00502804d02861e0053630055760052e002861d005363005620005092", - "0x36300501400501f02802836300504f00501f028028363005028007028028", - "0x509200501f02802836300503000527502802836300500f00501f028028", - "0x1000527502802836300505e00531e02802836300505f00531e028028363", - "0x2861c00536300526d00504f02862100536300519e005031028028363005", - "0x61f00502804d02861e00536300526a0052e002861d005363005621005092", - "0x36300505f00531e028028363005171005340028028363005028007028028", - "0x504f00501f02802836300501000527502802836300505e00531e028028", - "0x3000527502802836300500f00501f02802836300501400501f028028363", - "0x4f02862200536300529e00503102802836300509200501f028028363005", - "0x2862500502804d0286240053630056220050920286230053630052d8005", - "0x2836300505f00531e02802836300529f005340028028363005028007028", - "0x36300504f00501f02802836300501000527502802836300505e00531e028", - "0x503000527502802836300500f00501f02802836300501400501f028028", - "0x504f02862600536300511c00503102802836300509200501f028028363", - "0x2802862900502804d0286280053630056260050920286270053630052d8", - "0x2802836300505f00531e028028363005120005340028028363005028007", - "0x2836300504f00501f02802836300501000527502802836300505e00531e", - "0x36300503000527502802836300500f00501f02802836300501400501f028", - "0x2d800504f02862a0053630052c300503102802836300509200501f028028", - "0x702802862d00502804d02862c00536300562a00509202862b005363005", - "0x27502802836300505e00531e02802836300505f00531e028028363005028", - "0x2802836300501400501f02802836300504f00501f028028363005010005", - "0x2836300509200501f02802836300503000527502802836300500f00501f", - "0x62e00509202861c0053630052d800504f02862e0053630052d3005031028", - "0x62f00536300561e00529302861e0053630052d00052e002861d005363005", - "0x4e0050c002861d00536300561d00509202861c00536300561c00504f028", - "0x702862f04e61d61c00a00562f00536300562f00529502804e005363005", - "0x1f02802836300501400501f02802836300531a005340028028363005028", - "0x2802836300509200501f02802836300503000527502802836300500f005", - "0x2836300501000527502802836300505e00531e02802836300505f00531e", - "0x563000509202863000536300533600503102802836300504f00501f028", - "0x508c00534002802836300502800702802863200502804d028631005363", - "0x3000527502802836300500f00501f02802836300501400501f028028363", - "0x531e02802836300505f00531e02802836300509200501f028028363005", - "0x3102802836300504f00501f02802836300501000527502802836300505e", - "0x363005631005307028631005363005633005092028633005363005275005", - "0x3900282c40053630050510050920282c500536300502800504f028051005", - "0x36300562b00539002862c0053630052c400530702862b0053630052c5005", - "0x30702862300536300562700539002862800536300562c005307028627005", - "0x36300562400530702825f005363005623005390028624005363005628005", - "0x39002822500536300525c00530702822400536300525f00539002825c005", - "0x36300557e00539002857f00536300522500530702857e005363005224005", - "0x3070285c000536300559f0053900285a000536300557f00530702859f005", - "0x3630055c10053070283650053630055c00053900285c10053630055a0005", - "0x63500501b0286350053630050282900286340053630050280200285e5005", - "0x63700536300502802302863600536300563563400735c028635005363005", - "0x504f02863900536300563800529302863800536300563663700702d028", - "0x536300504e0050c00285e50053630055e5005092028365005363005365", - "0x36300502800702863904e5e536500a00563900536300563900529502804e", - "0x500f00501f02802836300501400501f02802836300526c005340028028", - "0x35c0052a102802836300509200501f028028363005030005275028028363", - "0x501f02802836300501000527502802836300500b00531e028028363005", - "0x2863a00536300524c00503102802836300536100514202802836300504f", - "0x536300502828f02837700536300502802002824b00536300563a005092", - "0x2302863c00536300563b37700735c02863b00536300563b00501b02863b", - "0x36300563e00529302863e00536300563c63d00702d02863d005363005028", - "0xc002824b00536300524b00509202802800536300502800504f02863f005", - "0x63f04e24b02800a00563f00536300563f00529502804e00536300504e005", - "0x2836300501700528e02802836300504d005060028028363005028007028", - "0x36300500f00501f02802836300500b00531e02802836300500a005096028", - "0x536100514202802836300509200501f02802836300504f00501f028028", - "0x1c0050920280283630050130050420280283630051c600528e028028363", - "0x2837800536300502802302864000536300501c00503102801c005363005", - "0x2800504f02864200536300564100529302864100536300535e37800702d", - "0x35f00536300535f0050c0028640005363005640005092028028005363005", - "0x36300500700531c02864235f64002800a005642005363005642005295028", - "0x532702801003100736300503100516d02800f005363005028020028028", - "0x36300500b00538d02804e0053630051c600f00735c0281c6005363005010", - "0x2804d00536300502816f02801400536300501304e00735c02801300b007", - "0x502824a02803000536300504d01400735c02804d00536300504d00501b", - "0x53630050170180072ee02801804f00736300504f00538d028017005363", - "0x24a02836000536300536103000735c02836100536300536100501b028361", - "0x501b01c0072ee02801c09200736300509200538d02801b005363005028", - "0x35e00536300535f36000735c02835f00536300535f00501b02835f005363", - "0x2000521902802836300501f00504002802001f00736300535e005036028", - "0x536300535d00505b02835c03100736300503100516d02835d005363005", - "0x3590840c003164335b02d02303136300735d00a35c00502800b31402835d", - "0x536300502300509202802836300535b005242028028363005028007028", - "0x35700735c0283570053630050280200281a8005363005023005031028023", - "0x36300535600503602835600536300509203200735c02803200536300504f", - "0x9202800c005363005033005219028028363005364005040028033364007", - "0x3102d1a800b31402800c00536300500c00505b0281a80053630051a8005", - "0x2802836300502800702822721d21903164404003603c03136300700c00b", - "0x504000521d02822d00536300503c00503102803c00536300503c005092", - "0x2822d00536300522d005092028046005363005231005227028231005363", - "0x4603622d0310050460053630050460050840280360053630050360050c0", - "0x363005219005031028219005363005219005092028028363005028007028", - "0x35b02804500536300522704700702d028047005363005028023028048005", - "0x36300521d0050c0028048005363005048005092028242005363005045005", - "0x36300502800702824221d04803100524200536300524200508402821d005", - "0x503100533d02802836300500b00501f02802836300504f00501f028028", - "0x50310280c00053630050c000509202802836300509200501f028028363", - "0x536300535924900702d0282490053630050280230282460053630050c0", - "0x50c002824600536300524600509202824b00536300524a00535b02824a", - "0x36102824b08424603100524b00536300524b005084028084005363005084", - "0x4f02809204f00b00a00a36300503100500702800a28c028028363005028", - "0x36300500b00509202804f00536300504f00530f02800a00536300500a005", - "0x502828b02809200b04f00a00a00509200536300509200517102800b005", - "0x502800700502802836300502836102802836300502824f02800a005363", - "0x504f00503102802836300502800702800f09200764504f00b007363007", - "0x2804e0070073630050070051740281c6005363005028172028010005363", - "0x4e00b0311750280100053630050100050920281c60053630051c6005308", - "0x1000503102802836300502800702803004d0076460140130073630071c6", - "0x1700536300501700509202801300536300501300504f028017005363005", - "0x3603610180313630050140170130310b4028014005363005014005308028", - "0x503102802836300502800702801b0056470310053630073600050b6028", - "0x35f00536300535f00530802835f00536300502817702801c005363005361", - "0x3117502801c00536300501c00509202803100536300503100a00728a028", - "0x3102802836300502800702835d02000764801f35e00736300735f007018", - "0x36300535c00509202835e00536300535e00504f02835c00536300501c005", - "0x2303136300501f35c35e0310b402801f00536300501f00530802835c005", - "0x280283630050280070280840056490c000536300735b0050b602835b02d", - "0x3630050c00053050281a800536300502817702835900536300502d005031", - "0x3560320313630053571a80071460281a80053630051a8005308028357005", - "0x9202800c0053630050320050b9028033005363005364023007288028364", - "0x36300700c00534202803300536300503300504f028359005363005359005", - "0x30502803600536300535900503102802836300502800702803c00564a028", - "0x356040033031287028036005363005036005092028040005363005031005", - "0x503600503102802836300502800702822d22700764b21d219007363007", - "0x2804800536300504600555e02804600536300521d005286028231005363", - "0x504800528202823100536300523100509202821900536300521900504f", - "0x36300522d00530a028028363005028007028048231219031005048005363", - "0x5028024028045005363005028020028047005363005036005031028028", - "0x24600536300524204500735c02824200536300524200501b028242005363", - "0x24a00517c02824a00536300524624900702d028249005363005028023028", - "0x4700536300504700509202822700536300522700504f02824b005363005", - "0x2802836300502800702824b04722703100524b00536300524b005282028", - "0x2836300535600530a02802836300503100528902802836300503c005340", - "0x36300502827f02824f00536300502802002824c005363005359005031028", - "0x2825300536300525224f00735c02825200536300525200501b028252005", - "0x525800517c02825800536300525325600702d028256005363005028023", - "0x2824c00536300524c00509202803300536300503300504f028050005363", - "0x28902802836300502800702805024c033031005050005363005050005282", - "0x536300508400517c02800900536300502d005031028028363005031005", - "0x528202800900536300500900509202802300536300502300504f02805b", - "0x35d00530a02802836300502800702805b00902303100505b00536300505b", - "0x2002805800536300501c005031028028363005031005289028028363005", - "0x5c00536300505c00501b02805c00536300502827d028059005363005028", - "0x27500702d02827500536300502802302826c00536300505c05900735c028", - "0x536300502000504f02805e00536300527700517c02827700536300526c", - "0x2003100505e00536300505e005282028058005363005058005092028020", - "0x500a00527c02802836300500700530a02802836300502800702805e058", - "0x4f02805f00536300501b00517c028060005363005361005031028028363", - "0x36300505f005282028060005363005060005092028018005363005018005", - "0x2836300503000530a02802836300502800702805f06001803100505f005", - "0x36300501000503102802836300500700530a02802836300500a00527c028", - "0x2bc00501b0282bc00536300502827d0282af00536300502802002805d005", - "0x670053630050280230280420053630052bc2af00735c0282bc005363005", - "0x504f02806900536300530600517c02830600536300504206700702d028", - "0x536300506900528202805d00536300505d00509202804d00536300504d", - "0x2802836300500a00527c02802836300502800702806905d04d031005069", - "0x536300502802002806800536300500f00503102802836300500700530a", - "0x600735c02806f00536300506f00501b02806f005363005028046028006", - "0x536300507134700702d02834700536300502802302807100536300506f", - "0x509202809200536300509200504f02807500536300507400517c028074", - "0x361028075068092031005075005363005075005282028068005363005068", - "0x27a02800b00536300502817202800a00536300502827b028028363005028", - "0x36300509200518202809200536300504f00b00727902804f005363005028", - "0x18702801000536300502818502800f00536300509200a007184028092005", - "0x36300504e0051890280283630051c600527802804e1c600736300500f005", - "0x18a02800500536300500500509202802800536300502800504f028013005", - "0x1300502800a27602801000536300501000518c028013005363005013005", - "0x702801800564c01700536300703000519302803004d014031363005010", - "0x36003136300501700519202836100536300504d005031028028363005028", - "0x502836f02802836300501c00504702802836300536000519402801c01b", - "0x9202801400536300501400504f02835e00536300502803202835f005363", - "0x36300535f00532c02801b00536300501b00518c028361005363005361005", - "0x36300535e35f01b36101400b19502835e00536300535e00503302835f005", - "0x36300502800702802300564d35c00536300735d00527102835d02001f031", - "0x470280c035b00736300535c00518d02802d005363005020005031028028", - "0x36300508400527e02835908400736300535b0052720280283630050c0005", - "0x3119a02802d00536300502d0050920281a800536300535900526e028028", - "0x2836300502800702800c03336403164e3560323570313630071a800702d", - "0x35600519c02803c005363005357005031028357005363005357005092028", - "0x3600536300503600530802821900536300502826d028040036007363005", - "0x4000530802803c00536300503c0050920280320053630050320050c0028", - "0x2836300502800702802864f02836300721903600714b028040005363005", - "0x36300503c00503102802836300503100531c02802836300504000530a028", - "0x22d00501b02822d00536300502819e02822700536300502802002821d005", - "0x4600536300502802302823100536300522d22700735c02822d005363005", - "0x504f0280470053630050480052c602804800536300523104600702d028", - "0x53630050320050c002821d00536300521d00509202801f00536300501f", - "0x36300502800702804703221d01f00a0050470053630050470050f0028032", - "0x450050920282420053630050281a002804500536300503c005031028028", - "0x2836300502800702802865002836300724204000714b028045005363005", - "0x36300502802002824600536300504500503102802836300503100531c028", - "0x735c02824a00536300524a00501b02824a00536300502819e028249005", - "0x36300524b24c00702d02824c00536300502802302824b00536300524a249", - "0x9202801f00536300501f00504f02825200536300524f0052c602824f005", - "0x3630052520050f00280320053630050320050c0028246005363005246005", - "0x36300504500503102802836300502800702825203224601f00a005252005", - "0x25800532c0282580053630050280fd028256005363005028185028253005", - "0x736300505000527202805000536300525825600726b028258005363005", - "0x509202805800536300505b00526e02802836300500900527e02805b009", - "0x705803225303119a02805800536300505800526a028253005363005253", - "0x26c00526802802836300502800702805e27727503165126c05c059031363", - "0x3102805900536300505900509202802836300503100531c028028363005", - "0x5d00536300502826602805f005363005028020028060005363005059005", - "0x280230282af00536300505d05f00735c02805d00536300505d00501b028", - "0x53630050420052c60280420053630052af2bc00702d0282bc005363005", - "0x50c002806000536300506000509202801f00536300501f00504f028067", - "0x2806705c06001f00a0050670053630050670050f002805c00536300505c", - "0x5363005275005031028275005363005275005092028028363005028007", - "0x501302802836300506900504002806806900736300505e005036028306", - "0x53630053060050920282770053630052770050c0028068005363005068", - "0x2802836300502800702807100565206f00600736300706800500f028306", - "0x36300506f00501002834700536300530600503102802836300500600501c", - "0x501b0280770053630050282650280750053630050740051c6028074005", - "0x36300534600501b028346005363005077075007326028075005363005075", - "0x345005653028363007346005342028347005363005347005092028346005", - "0x5363005028030028043005363005347005031028028363005028007028", - "0x4f02807f0053630050790050ec02807900536300507a0310072ca02807a", - "0x3630052770050c002804300536300504300509202801f00536300501f005", - "0x502800702807f27704301f00a00507f00536300507f0050f0028277005", - "0x34700503102802836300503100531c028028363005345005340028028363", - "0x1b02807d005363005028264028081005363005028020028342005363005", - "0x36300502802302834000536300507d08100735c02807d00536300507d005", - "0x2833d00536300533e0052c602833e00536300534033f00702d02833f005", - "0x52770050c002834200536300534200509202801f00536300501f00504f", - "0x2800702833d27734201f00a00533d00536300533d0050f0028277005363", - "0x503102802836300503100531c02802836300507100501c028028363005", - "0x2833700536300502826302833b00536300502802002833c005363005306", - "0x502802302808c00536300533733b00735c02833700536300533700501b", - "0x8a0053630053350052c602833500536300508c33600702d028336005363", - "0x2770050c002833c00536300533c00509202801f00536300501f00504f028", - "0x702808a27733c01f00a00508a00536300508a0050f0028277005363005", - "0x2836400536300536400509202802836300503100531c028028363005028", - "0x533400509202833300536300501f00504f028334005363005364005031", - "0x2833100536300500c00522d0283320053630050330050c0028088005363", - "0x3102802836300503100531c02802836300502800702802865400502804d", - "0x508600534602808e086007363005023005077028330005363005020005", - "0xc002808800536300533000509202833300536300501f00504f028028363", - "0x2865400502804d02833100536300508e00522d028332005363005007005", - "0x536300504d00503102802836300503100531c028028363005028007028", - "0x504f02802836300532d00534602832c32d00736300501800507702836f", - "0x53630050070050c002808800536300536f005092028333005363005014", - "0x32b00702d02832b00536300502802302833100536300532c00522d028332", - "0x536300533300504f02832900536300532a0052c602832a005363005331", - "0x50f00283320053630053320050c0028088005363005088005092028333", - "0x2826102802836300502836102832933208833300a005329005363005329", - "0x2800b00536300500b00503302800b00536300502826002800a005363005", - "0x36300502803202809200536300502803202804f00536300500b00a00725f", - "0x3302804f00536300504f00525c02802800536300502800504f02800f005", - "0x9204f02800a25b02800f00536300500f005033028092005363005092005", - "0x2800702801300565504e0053630071c600525a0281c601000736300500f", - "0x1ac02804d005363005028259028014005363005005005031028028363005", - "0x501800504702801801700736300504e00525702803000536300504d005", - "0x1b0028028363005361005251028360361007363005017005255028028363", - "0x36300501400509202801000536300501000504f02801b005363005360005", - "0x25002801b00536300501b0051b20280070053630050070050c0028014005", - "0x35e35f01c00a36300503001b00701401000b24e028030005363005030005", - "0x3102802836300502800702835d00565602000536300701f00524d02801f", - "0x2300524302835b02d02303136300502000524702835c00536300535f005", - "0x23f0280c000536300502d00524102802836300535b005047028028363005", - "0x36300508400523a0280840053630050c00051bb0280c00053630050c0005", - "0x3570052310280283630051a800523102800c0333643560323571a835900f", - "0x5231028028363005356005231028028363005032005231028028363005", - "0x1bd02802836300500c005231028028363005033005231028028363005364", - "0x536300535c00509202835900536300535900503302803c005363005028", - "0x531c02802836300502800702802865702836300703c35900714e02835c", - "0x2804000536300502802002803600536300535c005031028028363005031", - "0x521904000735c02821900536300521900501b02821900536300502819e", - "0x2822d00536300521d22700702d02822700536300502802302821d005363", - "0x503600509202801c00536300501c00504f02823100536300522d0052c6", - "0x52310053630052310050f002835e00536300535e0050c0028036005363", - "0x2804600536300535c00503102802836300502800702823135e03601c00a", - "0x50470050ec0280470053630050480310072ca028048005363005028030", - "0x2804600536300504600509202801c00536300501c00504f028045005363", - "0x35e04601c00a0050450053630050450050f002835e00536300535e0050c0", - "0x36300535f00503102802836300503100531c028028363005028007028045", - "0xc002824900536300524200509202824600536300501c00504f028242005", - "0x2865800502804d02824b00536300535d0052e002824a00536300535e005", - "0x536300500500503102802836300503100531c028028363005028007028", - "0x50c002824900536300524c00509202824600536300501000504f02824c", - "0x536300524b0052c602824b0053630050130052e002824a005363005007", - "0x50c002824900536300524900509202824600536300524600504f02824f", - "0x2824f24a24924600a00524f00536300524f0050f002824a00536300524a", - "0x2804f00536300502823902800b0053630050281bf028028363005028361", - "0x3100500a18e02804f00536300504f00518202800b00536300500b005182", - "0x2802836300502800702801304e1c603165901000f09203136300704f00b", - "0x5010005238028014005363005092005031028092005363005092005092", - "0x2803000536300503000523602802836300504d00523b02803004d007363", - "0x70300051c402801400536300501400509202800f00536300500f0050c0", - "0x2802836300501700523202802836300502800702801800565a017005363", - "0x536300502802002836100536300501400503102802836300500a00531c", - "0x36000735c02801b00536300501b00501b02801b005363005028230028360", - "0x536300501c35f00702d02835f00536300502802302801c00536300501b", - "0x509202802800536300502800504f02801f00536300535e0052c602835e", - "0x536300500f0050c0028007005363005007005301028361005363005361", - "0x502800702801f00f00736102800b00501f00536300501f0050f002800f", - "0x2822e028020005363005014005031028028363005018005047028028363", - "0x2802000536300502000509202835c00536300502823902835d005363005", - "0xf02000a18e02835c00536300535c00518202835d00536300535d005182", - "0x280283630050280070283590840c003165b35b02d02303136300735c35d", - "0x536300502300509202802836300500a00531c02802836300535b00523b", - "0x50282660283570053630050280200281a8005363005023005031028023", - "0x35600536300503235700735c02803200536300503200501b028032005363", - "0x330052c602803300536300535636400702d028364005363005028023028", - "0x1a80053630051a800509202802800536300502800504f02800c005363005", - "0xc0050f002802d00536300502d0050c0028007005363005007005301028", - "0x509202802836300502800702800c02d0071a802800b00500c005363005", - "0x736300535900503602803c0053630050c00050310280c00053630050c0", - "0x50c0028040005363005040005013028028363005036005040028040036", - "0x736300704000500f02803c00536300503c005092028084005363005084", - "0x3102802836300521900501c02802836300502800702822700565c21d219", - "0x3630052310051c602823100536300521d00501002822d00536300503c005", - "0x732602804600536300504600501b02804800536300502822c028046005", - "0x36300522d00509202804700536300504700501b028047005363005048046", - "0x3102802836300502800702804500565d02836300704700534202822d005", - "0x2490053630050282280282460053630050281c902824200536300522d005", - "0x9202824b24900736300524900522402824a246007363005246005224028", - "0x36300524b00518202824a00536300524a005182028242005363005242005", - "0x25825625303165e25224f24c03136300724b24a08424200a18e02824b005", - "0x36300524c00503102824c00536300524c005092028028363005028007028", - "0x9202824f00536300524f0050c0028252005363005252005236028050005", - "0x2800702805b00565f0090053630072520051c4028050005363005050005", - "0x28058005363005058005092028058005363005050005031028028363005", - "0x2800702806005e27703166027526c05c05900a36300700924f058031225", - "0x2805f005363005059005031028059005363005059005092028028363005", - "0x524600522002802836300505d0052680282af05d00736300526c005220", - "0x282af0053630052af0051820280283630052bc0052680280422bc007363", - "0x530a02806930600736300506700519c0280672af0073630052af005224", - "0x736300506800519c028068042007363005042005224028028363005069", - "0x52f10280710053630053060052f102802836300506f00530a02806f006", - "0x2805c00536300505c0050c002802836300502800b028347005363005006", - "0x34707100714b02805f00536300505f005092028275005363005275005182", - "0x2680280283630052af005268028028363005028007028028661028363007", - "0x2802836300500a00531c028028363005249005268028028363005275005", - "0x36300507400509202807400536300505f005031028028363005042005268", - "0x36300505f00503102802836300502800702802866200502804d028075005", - "0x19c02802836300534600530a0283453460073630052af00519c028077005", - "0x3630053450052f102802836300504300530a02807a043007363005042005", - "0x14b02807700536300507700509202807f00536300507a0052f1028079005", - "0x36300527500526802802836300502800702802866302836300707f079007", - "0x507700503102802836300500a00531c028028363005249005268028028", - "0x28081005363005075005307028075005363005342005092028342005363", - "0x2807d00536300507700503102802836300502800702802866400502804d", - "0x524900522002802836300534000526802833f340007363005275005220", - "0x33c33f00736300533f00522402802836300533e00526802833d33e007363", - "0x33d00522402802836300533700530a02833733b00736300533c00519c028", - "0x36300533500530a02833533600736300508c00519c02808c33d007363005", - "0x50920283340053630053360052f102808a00536300533b0052f1028028", - "0x36300502800702802866502836300733408a00714b02807d00536300507d", - "0x533d00526802802836300500a00531c02802836300533f005268028028", - "0x4d02808100536300533300509202833300536300507d005031028028363", - "0x19c02808800536300507d005031028028363005028007028028664005028", - "0x36300533d00519c02802836300533200530a02833133200736300533f005", - "0x2f102808e0053630053310052f102802836300533000530a028086330007", - "0x736f08e00714b02808800536300508800509202836f005363005086005", - "0x503102802836300500a00531c028028363005028007028028666028363", - "0x2802836300502836102808100536300532d00509202832d005363005088", - "0x536300532b00501b02832b00536300502821f02832c005363005028020", - "0x702d02832900536300502802302832a00536300532b32c00735c02832b", - "0x36300502800504f0283270053630053280052c602832800536300532a329", - "0xc0028007005363005007005301028081005363005081005092028028005", - "0x5c00708102800b0053270053630053270050f002805c00536300505c005", - "0x36300502821e028326005363005088005031028028363005028007028327", - "0x519c0283240053630050281cf02832500536300508b0050b902808b005", - "0x53630053230050b902802836300532000530a028320323007363005324", - "0x32500722102832500536300532500501b02809300536300502821a028085", - "0x3630050850950072ee02809500536300509500501b028095005363005093", - "0x502821702831e0053630050281d102809800536300502821802831f005", - "0x21502831c00536300531d00508102831d005363005028030028096005363", - "0x2800504f02831900536300531f0051d402831a00536300531c09631e031", - "0x7005363005007005301028326005363005326005092028028005363005", - "0x31a0051d602809800536300509800518202805c00536300505c0050c0028", - "0x9805c0073260280921d802831900536300531900521302831a005363005", - "0x31400521102802836300502800b02831431531631731800b36300531931a", - "0x5363005317005031028028363005028007028312005667313005363007", - "0x520c02831100536300531100509202830f005363005313005216028311", - "0x2836300502836102802836300502800702830c00566830e00536300730f", - "0x3630050280300280a900536300531100503102802836300530e005047028", - "0x280ac0053630050b00050ec0280b000536300530b00a0072ca02830b005", - "0x53160053010280a90053630050a900509202831800536300531800504f", - "0x50ac0053630050ac0050f00283150053630053150050c0028316005363", - "0x2802836300500a00531c0280283630050280070280ac3153160a931800b", - "0x530c30800735c02830800536300502802002830a005363005311005031", - "0x283050053630050b400522d0280b600536300530a0050920280b4005363", - "0x3102802836300500a00531c02802836300502800702802866900502804d", - "0x53030053460283023030073630053120050770280b9005363005317005", - "0x36102830500536300530200522d0280b60053630050b9005092028028363", - "0x30000536300530530100702d028301005363005028023028028363005028", - "0xb600509202831800536300531800504f0282ff0053630053000052c6028", - "0x3150053630053150050c00283160053630053160053010280b6005363005", - "0x3630050280070282ff3153160b631800b0052ff0053630052ff0050f0028", - "0x524600526802802836300524900526802802836300500a00531c028028", - "0x230282fe005363005277005031028277005363005277005092028028363", - "0x3630052fd0052c60282fd0053630050600bf00702d0280bf005363005028", - "0x3010282fe0053630052fe00509202802800536300502800504f0282fc005", - "0x3630052fc0050f002805e00536300505e0050c0028007005363005007005", - "0x505b0050470280283630050280070282fc05e0072fe02800b0052fc005", - "0x24600526802802836300524900526802802836300500a00531c028028363", - "0x24b0280510053630050280200282fb005363005050005031028028363005", - "0x36300538b05100735c02838b00536300538b00501b02838b005363005028", - "0x2c60280dc00536300538c38d00702d02838d00536300502802302838c005", - "0x3630052fb00509202802800536300502800504f02838f0053630050dc005", - "0xf002824f00536300524f0050c00280070053630050070053010282fb005", - "0x2802836300502800702838f24f0072fb02800b00538f00536300538f005", - "0x2836300524600526802802836300524900526802802836300500a00531c", - "0x50280230280c7005363005253005031028253005363005253005092028", - "0xcb0053630050c90052c60280c90053630052580c600702d0280c6005363", - "0x70053010280c70053630050c700509202802800536300502800504f028", - "0xcb0053630050cb0050f00282560053630052560050c0028007005363005", - "0x283630050450053400280283630050280070280cb2560070c702800b005", - "0x3630050280200280cf00536300522d00503102802836300500a00531c028", - "0x735c02839000536300539000501b0283900053630050282640282fa005", - "0x36300530739100702d0283910053630050280230283070053630053902fa", - "0x9202802800536300502800504f0280d40053630052f40052c60282f4005", - "0x3630050840050c00280070053630050070053010280cf0053630050cf005", - "0x280070280d40840070cf02800b0050d40053630050d40050f0028084005", - "0x503102802836300500a00531c02802836300522700501c028028363005", - "0x283920053630050282630280d50053630050280200282f300536300503c", - "0x50280230282f10053630053920d500735c02839200536300539200501b", - "0xda0053630052ea0052c60282ea0053630052f12f000702d0282f0005363", - "0x70053010282f30053630052f300509202802800536300502800504f028", - "0xda0053630050da0050f00280840053630050840050c0028007005363005", - "0x2836300500a00531c0280283630050280070280da0840072f302800b005", - "0x50280230282e70053630051c60050310281c60053630051c6005092028", - "0x2e80053630050d20052c60280d20053630050132e500702d0282e5005363", - "0x70053010282e70053630052e700509202802800536300502800504f028", - "0x2e80053630052e80050f002804e00536300504e0050c0028007005363005", - "0x536300502823902800a0053630050281bf0282e804e0072e702800b005", - "0xa20b02800b00536300500b00518202800a00536300500a00518202800b", - "0x36300502800702804e1c601003166a00f09204f03136300700b00a007005", - "0x520a02801300536300504f00503102804f00536300504f005092028028", - "0x536300504d00520802802836300501400520902804d01400736300500f", - "0x52070280130053630050130050920280920053630050920050c002804d", - "0x36300503000520602802836300502800702801700566b03000536300704d", - "0x502802002801800536300501300503102802836300503100531c028028", - "0x35c02836000536300536000501b028360005363005028230028361005363", - "0x501b01c00702d02801c00536300502802302801b005363005360361007", - "0x2802800536300502800504f02835e00536300535f0052c602835f005363", - "0x535e0050f00280920053630050920050c0028018005363005018005092", - "0x501700504702802836300502800702835e09201802800a00535e005363", - "0x282390280200053630050281df02801f005363005013005031028028363", - "0x2000536300502000518202801f00536300501f00509202835d005363005", - "0x2335c03136300735d02009201f00a20b02835d00536300535d005182028", - "0x2802836300502d0052090280283630050280070280840c035b03166c02d", - "0x36300535c00503102835c00536300535c00509202802836300503100531c", - "0x35700501b0283570053630050282660281a8005363005028020028359005", - "0x3560053630050280230280320053630053571a800735c028357005363005", - "0x504f0280330053630053640052c602836400536300503235600702d028", - "0x53630050230050c0028359005363005359005092028028005363005028", - "0x36300502800702803302335902800a0050330053630050330050f0028023", - "0x503602800c00536300535b00503102835b00536300535b005092028028", - "0x536300503600501302802836300503c00504002803603c007363005084", - "0x500f02800c00536300500c0050920280c00053630050c00050c0028036", - "0x504000501c02802836300502800702821d00566d219040007363007036", - "0x1c602822d00536300521900501002822700536300500c005031028028363", - "0x536300523100501b02804600536300502822c02823100536300522d005", - "0x9202804800536300504800501b028048005363005046231007326028231", - "0x502800702804700566e028363007048005342028227005363005227005", - "0x281ff028242005363005028201028045005363005227005031028028363", - "0x7363005246005224028249242007363005242005224028246005363005", - "0x18202824900536300524900518202804500536300504500509202824a246", - "0x66f24f24c24b03136300724a2490c004500a20b02824a00536300524a005", - "0x3102824b00536300524b005092028028363005028007028256253252031", - "0x36300524c0050c002824f00536300524f00520802825800536300524b005", - "0x567005000536300724f00520702825800536300525800509202824c005", - "0x505b00509202805b005363005258005031028028363005028007028009", - "0x27727503167126c05c05905800a36300705024c05b0311fd02805b005363", - "0x505800503102805800536300505800509202802836300502800702805e", - "0x2802836300505f00526802805d05f00736300505c005220028060005363", - "0x505d0051820280283630052af0052680282bc2af007363005242005220", - "0x6700736300504200519c02804205d00736300505d00522402805d005363", - "0x519c0280692bc0073630052bc00522402802836300530600530a028306", - "0x53630050670052f102802836300500600530a028006068007363005069", - "0x51820280590053630050590050c00280710053630050680052f102806f", - "0x36300707106f00714b02806000536300506000509202826c00536300526c", - "0x26c00526802802836300505d005268028028363005028007028028672028", - "0x526802802836300503100531c028028363005246005268028028363005", - "0x740053630053470050920283470053630050600050310280283630052bc", - "0x7500536300506000503102802836300502800702802867300502804d028", - "0x2bc00519c02802836300507700530a02834607700736300505d00519c028", - "0x7a0053630053460052f102802836300534500530a028043345007363005", - "0x7a00714b0280750053630050750050920280790053630050430052f1028", - "0x2802836300526c005268028028363005028007028028674028363007079", - "0x536300507500503102802836300503100531c028028363005246005268", - "0x2804d02834200536300507400530702807400536300507f00509202807f", - "0x5220028081005363005075005031028028363005028007028028675005", - "0x736300524600522002802836300507d00526802834007d00736300526c", - "0x19c02833d34000736300534000522402802836300533f00526802833e33f", - "0x36300533e00522402802836300533b00530a02833b33c00736300533d005", - "0x2802836300533600530a02833608c00736300533700519c02833733e007", - "0x508100509202808a00536300508c0052f102833500536300533c0052f1", - "0x2802836300502800702802867602836300708a33500714b028081005363", - "0x2836300533e00526802802836300503100531c028028363005340005268", - "0x502804d028342005363005334005092028334005363005081005031028", - "0x34000519c028333005363005081005031028028363005028007028028675", - "0x33100736300533e00519c02802836300508800530a028332088007363005", - "0x3300052f10280860053630053320052f102802836300533100530a028330", - "0x2836300708e08600714b02833300536300533300509202808e005363005", - "0x533300503102802836300503100531c028028363005028007028028677", - "0x21f02832d00536300502802002834200536300536f00509202836f005363", - "0x36300532c32d00735c02832c00536300532c00501b02832c005363005028", - "0x2c602832900536300532b32a00702d02832a00536300502802302832b005", - "0x36300534200509202802800536300502800504f028328005363005329005", - "0xa0053280053630053280050f00280590053630050590050c0028342005", - "0x1fb028327005363005333005031028028363005028007028328059342028", - "0x2836300508b00501f02808b0053630053260050b9028326005363005028", - "0x32300530a02832332400736300532500519c0283250053630050281f8028", - "0x1f102802836300532000501f0283200053630053240050b9028028363005", - "0x3270053630053270050920280930053630050281ec028085005363005028", - "0x32700a20b028093005363005093005182028085005363005085005182028", - "0x2836300502800702831d09631e03167809831f095031363007093085059", - "0x9800520802831c005363005095005031028095005363005095005092028", - "0x31c00536300531c00509202831f00536300531f0050c0028098005363005", - "0x503102802836300502800702831900567931a005363007098005207028", - "0x2831600536300502856602831700536300502800002831800536300531c", - "0x36300531800509202802800536300502800504f028315005363005028567", - "0x18202831700536300531700518202831f00536300531f0050c0028318005", - "0x36300531a005568028315005363005315005182028316005363005316005", - "0x2831131231331400a36300531a31531631731f31802809256902831a005", - "0x30f00556c02802836300502800702830e00567a30f00536300731100556a", - "0x2ca0280a900536300502803002830c005363005313005031028028363005", - "0x531400504f0280b000536300530b0050ec02830b0053630050a9031007", - "0x283120053630053120050c002830c00536300530c005092028314005363", - "0x280283630050280070280b031230c31400a0050b00053630050b00050f0", - "0x36300530e0052c60280ac00536300531300503102802836300503100531c", - "0xc00280ac0053630050ac00509202831400536300531400504f02830a005", - "0x30a3120ac31400a00530a00536300530a0050f0028312005363005312005", - "0x2836300503100531c028028363005319005047028028363005028007028", - "0x36300502824b0280b400536300502802002830800536300531c005031028", - "0x283050053630050b60b400735c0280b60053630050b600501b0280b6005", - "0x53030052c60283030053630053050b900702d0280b9005363005028023", - "0x2830800536300530800509202802800536300502800504f028302005363", - "0x31f30802800a0053020053630053020050f002831f00536300531f0050c0", - "0x36300531e00509202802836300503100531c028028363005028007028302", - "0x702d02830000536300502802302830100536300531e00503102831e005", - "0x36300502800504f0282fe0053630052ff0052c60282ff00536300531d300", - "0xf00280960053630050960050c0028301005363005301005092028028005", - "0x31c0280283630050280070282fe09630102800a0052fe0053630052fe005", - "0x28028363005242005268028028363005246005268028028363005031005", - "0x3630050280230280bf005363005275005031028275005363005275005092", - "0x282fb0053630052fc0052c60282fc00536300505e2fd00702d0282fd005", - "0x52770050c00280bf0053630050bf00509202802800536300502800504f", - "0x280070282fb2770bf02800a0052fb0053630052fb0050f0028277005363", - "0x526802802836300503100531c028028363005009005047028028363005", - "0x28051005363005258005031028028363005242005268028028363005246", - "0x536300538c00501b02838c00536300502824b02838b005363005028020", - "0x702d0280dc00536300502802302838d00536300538c38b00735c02838c", - "0x36300502800504f0280c700536300538f0052c602838f00536300538d0dc", - "0xf002824c00536300524c0050c0028051005363005051005092028028005", - "0x31c0280283630050280070280c724c05102800a0050c70053630050c7005", - "0x28028363005242005268028028363005246005268028028363005031005", - "0x3630050280230280c6005363005252005031028252005363005252005092", - "0x280cf0053630050cb0052c60280cb0053630052560c900702d0280c9005", - "0x52530050c00280c60053630050c600509202802800536300502800504f", - "0x280070280cf2530c602800a0050cf0053630050cf0050f0028253005363", - "0x503102802836300503100531c028028363005047005340028028363005", - "0x283070053630050282640283900053630050280200282fa005363005227", - "0x502802302839100536300530739000735c02830700536300530700501b", - "0x2f30053630050d40052c60280d40053630053912f400702d0282f4005363", - "0xc00050c00282fa0053630052fa00509202802800536300502800504f028", - "0x70282f30c02fa02800a0052f30053630052f30050f00280c0005363005", - "0x3102802836300503100531c02802836300521d00501c028028363005028", - "0x2f10053630050282630283920053630050280200280d500536300500c005", - "0x280230282f00053630052f139200735c0282f10053630052f100501b028", - "0x53630050da0052c60280da0053630052f02ea00702d0282ea005363005", - "0x50c00280d50053630050d500509202802800536300502800504f0282e7", - "0x282e70c00d502800a0052e70053630052e70050f00280c00053630050c0", - "0x1000536300501000509202802836300503100531c028028363005028007", - "0x4e0d200702d0280d20053630050280230282e5005363005010005031028", - "0x2800536300502800504f0280db0053630052e80052c60282e8005363005", - "0xdb0050f00281c60053630051c60050c00282e50053630052e5005092028", - "0x280070050280283630050283610280db1c62e502800a0050db005363005", - "0x4f00503102802836300502800702800f09200767b04f00b007363007005", - "0x536300504e00534702804e1c600736300500a005036028010005363005", - "0x1400503302801300536300501300503302801400536300502856d028013", - "0x36300701401300b03156e028010005363005010005092028014005363005", - "0x2836300503000523102802836300502800702801801700767c03004d007", - "0x36100509202804d00536300504d00504f028361005363005010005031028", - "0x502800702801c00567d01b3600073630071c6005570028361005363005", - "0x22d02835e00536300501b00501002835f005363005361005031028028363", - "0x36300535e00501b02835f00536300535f005092028360005363005360005", - "0x2836300502800702835d00567e02001f00736300736000557002835e005", - "0x1f00522d02802300536300502000501002835c00536300535f005031028", - "0x2300536300502300501b02835c00536300535c00509202801f005363005", - "0x310280283630050280070280c000567f35b02d00736300701f005570028", - "0x36300535900501b02835900536300535b00501002808400536300535c005", - "0x2802d00536300502d00522d0281a835900736300535900538d028359005", - "0x280070283570056800283630071a8005342028084005363005084005092", - "0x9202803200536300508400503102802836300535900501f028028363005", - "0x2803300568136435600736300735e04d007253028032005363005032005", - "0x736300502d00503602800c005363005032005031028028363005028007", - "0x509202804000536300503600521902802836300503c00504002803603c", - "0x2336400700c00b27702835600536300535600504f02800c00536300500c", - "0x24202802836300502800702804623122d03168222721d219031363007040", - "0x5363005219005031028219005363005219005092028028363005227005", - "0x50c002804500536300504800509202804700536300535600504f028048", - "0x531c02802836300502800702802868300502804d02824200536300521d", - "0x24600536300522d00503102822d00536300522d005092028028363005031", - "0x24a00557102824a00536300504624900702d028249005363005028023028", - "0x24600536300524600509202835600536300535600504f02824b005363005", - "0x24635600a00524b00536300524b0055720282310053630052310050c0028", - "0x502d00504002802836300503100531c02802836300502800702824b231", - "0x2802002824c00536300503200503102802836300502300501f028028363", - "0x2825200536300525200501b02825200536300502824b02824f005363005", - "0x25325600702d02825600536300502802302825300536300525224f00735c", - "0x3300536300503300504f028050005363005258005571028258005363005", - "0x500055720280070053630050070050c002824c00536300524c005092028", - "0x35700534002802836300502800702805000724c03300a005050005363005", - "0x32602805b00536300502824a028009005363005084005031028028363005", - "0x500900509202805800536300505800501b02805800536300505b359007", - "0x28028363005028007028059005684028363007058005342028009005363", - "0x35e04d00707f02805c00536300505c00509202805c005363005009005031", - "0x36300505c00503102802836300502800702827700568527526c007363007", - "0x21902802836300506000504002805f06000736300502d00503602805e005", - "0x36300526c00504f02805e00536300505e00509202805d00536300505f005", - "0x3060670316860422bc2af03136300705d02327500705e00b31402826c005", - "0x3630052af005092028028363005042005242028028363005028007028069", - "0x9202800600536300526c00504f0280680053630052af0050310282af005", - "0x2868700502804d0280710053630052bc0050c002806f005363005068005", - "0x536300506700509202802836300503100531c028028363005028007028", - "0x7400702d028074005363005028023028347005363005067005031028067", - "0x536300526c00504f028077005363005075005571028075005363005069", - "0x55720283060053630053060050c002834700536300534700509202826c", - "0x531c02802836300502800702807730634726c00a005077005363005077", - "0x3102802836300502300501f02802836300502d005040028028363005031", - "0x4300536300502824b02834500536300502802002834600536300505c005", - "0x2802302807a00536300504334500735c02804300536300504300501b028", - "0x536300507f00557102807f00536300507a07900702d028079005363005", - "0x50c002834600536300534600509202827700536300527700504f028342", - "0x2834200734627700a005342005363005342005572028007005363005007", - "0x2802836300535e00501f028028363005059005340028028363005028007", - "0x36300502300538d02807d005363005028573028081005363005009005031", - "0x33f00536300533f00501b02833f00536300507d340007326028340023007", - "0x702833e00568802836300733f005342028081005363005081005092028", - "0x2833d00536300508100503102802836300502300501f028028363005028", - "0x50070050c002833d00536300533d00509202804d00536300504d00504f", - "0x502d03100733d04d00b2fd02802d00536300502d00522d028007005363", - "0x34002802836300502800702808c33733b33c00a00508c33733b33c00a363", - "0x33600536300508100503102802836300502d00504002802836300533e005", - "0x8a00501b02808a005363005335023007326028335005363005028574028", - "0x68902836300708a00534202833600536300533600509202808a005363005", - "0x533600503102802836300503100531c028028363005028007028334005", - "0x501b028332005363005028051028088005363005028020028333005363", - "0x536300502802302833100536300533208800735c028332005363005332", - "0x4f02808e00536300508600557102808600536300533133000702d028330", - "0x3630050070050c002833300536300533300509202804d00536300504d005", - "0x502800702808e00733304d00a00508e00536300508e005572028007005", - "0x504f02836f005363005336005031028028363005334005340028028363", - "0x53630050070050c002806f00536300536f00509202800600536300504d", - "0x557602804500536300506f005307028047005363005006005390028071", - "0x536300532d03100736d02832d005363005028249028242005363005071", - "0x4700a00532b00536300532b00557202832b00536300532c00557702832c", - "0x3100531c0280283630050c000504002802836300502800702832b242045", - "0x503102802836300535e00501f02802836300502300501f028028363005", - "0x2832800536300502824b02832900536300502802002832a00536300535c", - "0x502802302832700536300532832900735c02832800536300532800501b", - "0x32500536300508b00557102808b00536300532732600702d028326005363", - "0x70050c002832a00536300532a00509202804d00536300504d00504f028", - "0x702832500732a04d00a005325005363005325005572028007005363005", - "0x1f02802836300503100531c02802836300535d005040028028363005028", - "0x32300536300502802002832400536300535f00503102802836300535e005", - "0x32032300735c02832000536300532000501b02832000536300502824b028", - "0x9500536300508509300702d028093005363005028023028085005363005", - "0x32400509202804d00536300504d00504f02831f005363005095005571028", - "0x31f00536300531f0055720280070053630050070050c0028324005363005", - "0x2802836300501c00504002802836300502800702831f00732404d00a005", - "0x536300502802002809800536300536100503102802836300503100531c", - "0x31e00735c02809600536300509600501b02809600536300502824b02831e", - "0x536300531d31c00702d02831c00536300502802302831d005363005096", - "0x509202804d00536300504d00504f02831900536300531a00557102831a", - "0x53630053190055720280070053630050070050c0028098005363005098", - "0x2836300501800523102802836300502800702831900709804d00a005319", - "0x3630050100050310280283630051c600504002802836300503100531c028", - "0x31600501b028316005363005028578028317005363005028020028318005", - "0x31400536300502802302831500536300531631700735c028316005363005", - "0x504f02831200536300531300557102831300536300531531400702d028", - "0x53630050070050c0028318005363005318005092028017005363005017", - "0x36300502800702831200731801700a005312005363005312005572028007", - "0x500f00503102802836300503100531c02802836300500a005040028028", - "0x501b02830e00536300502804602830f005363005028020028311005363", - "0x536300502802302830c00536300530e30f00735c02830e00536300530e", - "0x4f0280b000536300530b00557102830b00536300530c0a900702d0280a9", - "0x3630050070050c0028311005363005311005092028092005363005092005", - "0x50283610280b000731109200a0050b00053630050b0005572028007005", - "0x502800702809204f00768a00b00a007363007005028007005028028363", - "0x2801003100736300503100538d02800f00536300500b005031028028363", - "0x701000534202800f00536300500f00509202800a00536300500a00504f", - "0x1f02802836300500700531c0280283630050280070281c600568b028363", - "0x1300536300502802002804e00536300500f005031028028363005031005", - "0x1401300735c02801400536300501400501b028014005363005028579028", - "0x1700536300504d03000702d02803000536300502802302804d005363005", - "0x4e00509202800a00536300500a00504f0280180053630050170052c6028", - "0x2800702801804e00a0310050180053630050180050f002804e005363005", - "0x24a02836100536300500f0050310280283630051c6005340028028363005", - "0x36300500a00504f02801b005363005360031007326028360005363005028", - "0x38b02801b00536300501b00501b02836100536300536100509202800a005", - "0x502800702835e35f01c03100535e35f01c03136300501b00736100a00a", - "0x9200503102802836300503100501f02802836300500700531c028028363", - "0x1b02835d00536300502804602802000536300502802002801f005363005", - "0x36300502802302835c00536300535d02000735c02835d00536300535d005", - "0x2835b00536300502d0052c602802d00536300535c02300702d028023005", - "0x535b0050f002801f00536300501f00509202804f00536300504f00504f", - "0x700502800700502802836300502836102835b01f04f03100535b005363", - "0x36300500b00503102802836300502800702809204f00768c00b00a007363", - "0x2800a00536300500a00504f02801003100736300503100538d02800f005", - "0x280070281c600568d02836300701000534202800f00536300500f005092", - "0x3002804e00536300500f00503102802836300503100501f028028363005", - "0x3630050140050ec0280140053630050130070072ca028013005363005028", - "0xf002804e00536300504e00509202800a00536300500a00504f02804d005", - "0x534002802836300502800702804d04e00a03100504d00536300504d005", - "0x2801700536300502824a02803000536300500f0050310280283630051c6", - "0x3000509202800a00536300500a00504f028018005363005017031007326", - "0x501800703000a00a38c02801800536300501800501b028030005363005", - "0x3100501f02802836300502800702801b36036103100501b360361031363", - "0x2002801c00536300509200503102802836300500700531c028028363005", - "0x35e00536300535e00501b02835e00536300502804602835f005363005028", - "0x2000702d02802000536300502802302801f00536300535e35f00735c028", - "0x536300504f00504f02835c00536300535d0052c602835d00536300501f", - "0x4f03100535c00536300535c0050f002801c00536300501c00509202804f", - "0x557d02801000536300500f00557c02800f00536300502857a02835c01c", - "0x536300504e00557f0280283630051c600557e02804e1c6007363005010", - "0x1b02804d00b00736300500b00538d0280140053630050130051c6028013", - "0x501b02801703000736300504d014007031581028014005363005014005", - "0x536100536c028361018007363005017028007582028017005363005017", - "0x2802836300501b00558402801c01b007363005360005583028360005363", - "0x535e00558602835e00536300535f0052bd02835f00536300501c005585", - "0x2835d00536300502803202802000536300501f00533402801f35e007363", - "0x300050c702835c00536300535c00503302835c35d00736300535d005356", - "0x702035c03100500a03c02801800536300501800504f028030005363005", - "0x230050920280283630050280070283590840c003168e35b02d023031363", - "0x283570053630050285870281a8005363005023005031028023005363005", - "0x35d0050330281a80053630051a800509202803200536300535735e007588", - "0x35b00536300535b00501b02803200536300503200508802835d005363005", - "0x702803603c00c03168f03336435603136300703235d02d1a800a03c028", - "0x40005363005356005031028356005363005356005092028028363005028", - "0x521d00557d02821d00536300521900557c02821900536300502857a028", - "0x2823100536300522d00557f02802836300522700557e02822d227007363", - "0x4603003158102804600536300504600501b0280460053630052310051c6", - "0x504701800758202804700536300504700501b02804704800736300500b", - "0x5363005246005334028246242007363005242005586028242045007363", - "0x535602824b00536300502803202824a00536300504f35b0072ee028249", - "0x36300524c00503302804000536300504000509202824c24b00736300524b", - "0xc702803300536300503300501b02824a00536300524a00501b02824c005", - "0x24c36404000b00c02804500536300504500504f028048005363005048005", - "0x9202802836300502800702825825625303169025224f00736300724a249", - "0x536300502858702805000536300524f00503102824f00536300524f005", - "0x280580053630050920330072ee02805b005363005009242007588028009", - "0x505b00508802824b00536300524b005033028050005363005050005092", - "0x705805b24b25205000b00c02805800536300505800501b02805b005363", - "0x505900509202802836300502800702827727526c03169105c059007363", - "0x2ca02806000536300502803002805e005363005059005031028059005363", - "0x504500504f02805d00536300505f0050ec02805f00536300506000a007", - "0x280480053630050480050c702805e00536300505e005092028045005363", - "0x4805e04500b00505d00536300505d0050f002805c00536300505c0050c0", - "0x526c00509202802836300500a00531c02802836300502800702805d05c", - "0x282bc0053630052af0050920282af00536300526c00503102826c005363", - "0x69200502804d02806700536300527700522d0280420053630052750050c0", - "0x36300524200558902802836300500a00531c028028363005028007028028", - "0x509200501f02802836300524b00523102802836300503300501f028028", - "0x92028306005363005253005031028253005363005253005092028028363", - "0x36300525800522d0280420053630052560050c00282bc005363005306005", - "0x2c602806800536300506706900702d028069005363005028023028067005", - "0x3630052bc00509202804500536300504500504f028006005363005068005", - "0xf00280420053630050420050c00280480053630050480050c70282bc005", - "0x280283630050280070280060420482bc04500b005006005363005006005", - "0x2836300535b00501f02802836300500a00531c02802836300504f00501f", - "0x36300500c00509202802836300509200501f02802836300500b00501f028", - "0xc002807100536300506f00509202806f00536300500c00503102800c005", - "0x2869300502804d02807400536300503600522d02834700536300503c005", - "0x2836300500a00531c02802836300504f00501f028028363005028007028", - "0x36300509200501f02802836300500b00501f02802836300535d005231028", - "0xc00050310280c00053630050c000509202802836300535e005589028028", - "0x3470053630050840050c0028071005363005075005092028075005363005", - "0x7407700702d02807700536300502802302807400536300535900522d028", - "0x1800536300501800504f0283450053630053460052c6028346005363005", - "0x3470050c00280300053630050300050c7028071005363005071005092028", - "0x2834534703007101800b0053450053630053450050f0028347005363005", - "0x501000557c02801000536300502857a02800f09200736300504f0052f3", - "0x2802836300504e00557e02801304e0073630051c600557d0281c6005363", - "0x509200538d02804d0053630050140051c602801400536300501300557f", - "0x36300503004d03103158102804d00536300504d00501b028030092007363", - "0x36100736300501802800758202801800536300501800501b028018017007", - "0x58402835f01c00736300501b00558302801b00536300536000536c028360", - "0x536300535e0052bd02835e00536300535f00558502802836300501c005", - "0x3202835d00536300502000533402802001f00736300501f00558602801f", - "0x36300502300503302802335c00736300535c00535602835c005363005028", - "0x3c02836100536300536100504f0280170053630050170050c7028023005", - "0x50280070281a83590840316940c035b02d03136300735d02300a00500a", - "0x58702835700536300502d00503102802d00536300502d005092028028363", - "0x36300535700509202835600536300503201f007588028032005363005028", - "0x1b02835600536300535600508802835c00536300535c005033028357005", - "0x69500c03336403136300735635c35b35700a03c0280c00053630050c0005", - "0x3102836400536300536400509202802836300502800702804003603c031", - "0x36300500c00501b0280330053630050330050c0028219005363005364005", - "0x22721d0073630070c03610070ac02821900536300521900509202800c005", - "0x2804800536300521900503102802836300502800702804623122d031696", - "0x24203169704504700736300700c21d0070ac028048005363005048005092", - "0xf00539202824a005363005048005031028028363005028007028249246", - "0x30a02825625325224f00a36300524b22700703158a02824c24b007363005", - "0x2580053630052530050b902802836300525600530a028028363005252005", - "0x2836300500900530a02805805b00905000a36300524c04524f03158a028", - "0x36300502857a02805900536300505b0050b902802836300505800530a028", - "0x2827727500736300526c00557d02826c00536300505c00557c02805c005", - "0x36300505e0051c602805e00536300527700557f02802836300527500557e", - "0x5f00736300509206001703158102806000536300506000501b028060005", - "0x282bc2af00736300505d04700758202805d00536300505d00501b02805d", - "0x50280320280670053630050420053340280422bc0073630052bc005586", - "0x24a00536300524a005092028069306007363005306005356028306005363", - "0x5000530102825800536300525800501b028069005363005069005033028", - "0x5f00536300505f0050c702805900536300505900501b028050005363005", - "0x6800736300725806706903324a00b00c0282af0053630052af00504f028", - "0x6800536300506800509202802836300502800702834707106f031698006", - "0x752bc007588028075005363005028587028074005363005068005031028", - "0x306005363005306005033028074005363005074005092028077005363005", - "0x34600736300705907730600607400b00c028077005363005077005088028", - "0x34600536300534600509202802836300502800702807907a043031699345", - "0x34200b0072ca02834200536300502803002807f005363005346005031028", - "0x2af0053630052af00504f02807d0053630050810050ec028081005363005", - "0x5f0050c702805000536300505000530102807f00536300507f005092028", - "0x7d00536300507d0050f00283450053630053450050c002805f005363005", - "0x36300500b00531c02802836300502800702807d34505f05007f2af04f005", - "0x5092028340005363005043005031028043005363005043005092028028", - "0x536300507900522d02833e00536300507a0050c002833f005363005340", - "0x2836300500b00531c02802836300502800702802869a00502804d02833d", - "0x3630053060052310280283630052bc00558902802836300505900501f028", - "0x509202833c00536300506f00503102806f00536300506f005092028028", - "0x536300534700522d02833e0053630050710050c002833f00536300533c", - "0x52c602833700536300533d33b00702d02833b00536300502802302833d", - "0x536300533f0050920282af0053630052af00504f02808c005363005337", - "0x50c002805f00536300505f0050c702805000536300505000530102833f", - "0x33e05f05033f2af04f00508c00536300508c0050f002833e00536300533e", - "0x36300524900530a02802836300524600530a02802836300502800702808c", - "0x500f0050d502802836300509200501f02802836300500b00531c028028", - "0x2802002833600536300504800503102802836300522700530a028028363", - "0x2808a00536300508a00501b02808a00536300502824b028335005363005", - "0x33433300702d02833300536300502802302833400536300508a33500735c", - "0x24200536300524200504f0283320053630050880052c6028088005363005", - "0x170050c7028007005363005007005301028336005363005336005092028", - "0x3320053630053320050f00280330053630050330050c0028017005363005", - "0x36300523100530a02802836300502800702833203301700733624204f005", - "0x509200501f02802836300500b00531c02802836300504600530a028028", - "0x21900503102802836300500c00501f02802836300500f0050d5028028363", - "0x1b02808600536300502824b028330005363005028020028331005363005", - "0x36300502802302808e00536300508633000735c028086005363005086005", - "0x2832c00536300532d0052c602832d00536300508e36f00702d02836f005", - "0x500700530102833100536300533100509202822d00536300522d00504f", - "0x280330053630050330050c00280170053630050170050c7028007005363", - "0x36300502800702832c03301700733122d04f00532c00536300532c0050f0", - "0x509200501f02802836300500b00531c0280283630050c000501f028028", - "0x503102803c00536300503c00509202802836300500f0050d5028028363", - "0x53630050360050c002832a00536300532b00509202832b00536300503c", - "0x36300502800702802869b00502804d02832800536300504000522d028329", - "0x509200501f02802836300500b00531c02802836300535c005231028028", - "0x8400509202802836300501f00558902802836300500f0050d5028028363", - "0x32a005363005327005092028327005363005084005031028084005363005", - "0x50280230283280053630051a800522d0283290053630053590050c0028", - "0x32500536300508b0052c602808b00536300532832600702d028326005363", - "0x700530102832a00536300532a00509202836100536300536100504f028", - "0x3290053630053290050c00280170053630050170050c7028007005363005", - "0x502858b02832532901700732a36104f0053250053630053250050f0028", - "0x1b02800a00536300500a00501b02800b00536300502858c02800a005363", - "0x2800702802869c04f00536300700b00a00758d02800b00536300500b005", - "0x2804f00536300504f00558e028092005363005005005031028028363005", - "0x536300502859102801000536300502859002800f00536300504f00558f", - "0x50920281c60053630051c600501b02801000536300501000501b0281c6", - "0x502800702802869d04e0053630071c601000758d028092005363005092", - "0x58f02804e00536300504e00558e028013005363005092005031028028363", - "0x501300509202804d01400736300501400559202801400536300504e005", - "0x2802836300502800702803000569e02836300704d00536b028013005363", - "0x50170050920280180053630050280052ea028017005363005013005031", - "0x2800702802869f00502804d028360005363005014005593028361005363", - "0x59502801b005363005013005031028028363005014005594028028363005", - "0x35f00536300535f00501b02835f00536300502859602801c005363005028", - "0x1f00536300501f00559802801f35e00736300503035f01c02800a597028", - "0x1f00559902835e00536300535e0052ea02801b00536300501b005092028", - "0x35d00536300501b0050310280283630050280070280286a0020005363007", - "0x35d00509202801800536300535e0052ea02835c00536300502000558f028", - "0x702802869f00502804d02836000536300535c005593028361005363005", - "0x2802d00536300502859a02802300536300501b005031028028363005028", - "0x502d00559302836100536300502300509202801800536300535e0052ea", - "0x6a102836300735b00536b02835b360007363005360005592028360005363", - "0x53610050310280283630053600055940280283630050280070280c0005", - "0x281a800536300500f005593028359005363005084005092028084005363", - "0x283570053630053610050310280283630050280070280286a200502804d", - "0x280070280320056a302836300700f00536b028357005363005357005092", - "0x920283560053630053570050310280283630050c000536a028028363005", - "0x286a200502804d0281a8005363005360005593028359005363005356005", - "0x5363005357005031028028363005360005594028028363005028007028", - "0x559802800c0053630050c003300759b028033005363005028595028364", - "0x36300503c00559802803c00536300503200c00759b02800c00536300500c", - "0x286a403600536300703c00559902836400536300536400509202803c005", - "0x36300503600558f028040005363005364005031028028363005028007028", - "0x4d0281a8005363005219005593028359005363005040005092028219005", - "0x59a02821d0053630053640050310280283630050280070280286a2005028", - "0x536300522700559302835900536300521d005092028227005363005028", - "0x531c02802836300502800702822d0056a50283630071a800536b0281a8", - "0x28046005363005028020028231005363005359005031028028363005031", - "0x504804600735c02804800536300504800501b02804800536300502824b", - "0x2824200536300504704500702d028045005363005028023028047005363", - "0x52310050920280180053630050180052ea0282460053630052420052c6", - "0x52460053630052460050f00280070053630050070050c0028231005363", - "0x2824900536300535900503102802836300502800702824600723101800a", - "0x524c00558602824c00536300502859e02824b24a00736300522d00559c", - "0x2825300536300502803202825200536300524f00533402824f24c007363", - "0x256005033028249005363005249005092028256253007363005253005356", - "0x24a25225600724900b00c028252005363005252005088028256005363005", - "0x25800509202802836300502800702805805b0090316a6050258007363007", - "0x2805c005363005028587028059005363005258005031028258005363005", - "0x5900509202826c00536300505c24c00758802824c00536300524c00559f", - "0x26c00536300526c005088028253005363005253005033028059005363005", - "0x702805f06005e0316a727727500736300724b26c25305005900b00c028", - "0x5d005363005275005031028275005363005275005092028028363005028", - "0x2bc0050ec0282bc0053630052af0310072ca0282af005363005028030028", - "0x5d00536300505d0050920280180053630050180052ea028042005363005", - "0x5d01800a0050420053630050420050f00282770053630052770050c0028", - "0x505e00509202802836300503100531c028028363005028007028042277", - "0x2830600536300506700509202806700536300505e00503102805e005363", - "0x6a800502804d02806800536300505f00522d0280690053630050600050c0", - "0x36300524b00501f02802836300503100531c028028363005028007028028", - "0x500900509202802836300525300523102802836300524c005589028028", - "0x28306005363005006005092028006005363005009005031028009005363", - "0x36300502802302806800536300505800522d02806900536300505b0050c0", - "0x283470053630050710052c602807100536300506806f00702d02806f005", - "0x50690050c00283060053630053060050920280180053630050180052ea", - "0x2800702834706930601800a0053470053630053470050f0028069005363", - "0x503102802836300503100531c02802836300500f005594028028363005", - "0x2807700536300502824b028075005363005028020028074005363005092", - "0x502802302834600536300507707500735c02807700536300507700501b", - "0x7a0053630050430052c602804300536300534634500702d028345005363", - "0x70050c00280740053630050740050920280280053630050280052ea028", - "0x702807a00707402800a00507a00536300507a0050f0028007005363005", - "0x2807900536300500500503102802836300503100531c028028363005028", - "0x536300534200501b02834200536300502824b02807f005363005028020", - "0x702d02807d00536300502802302808100536300534207f00735c028342", - "0x3630050280052ea02833f0053630053400052c602834000536300508107d", - "0xf00280070053630050070050c0028079005363005079005092028028005", - "0x3136300703100500713402833f00707902800a00533f00536300533f005", - "0x36300504f00509202802836300502800702804e1c60100316a900f09204f", - "0x2a702800f00536300500f00513302801300536300504f00503102804f005", - "0x5a002836101801703004d00b3630050140052a502801400536300500f005", - "0x2802836300501800527502802836300501700527502802836300504d005", - "0x36300503000529f0280300053630050300052a302802836300536100501f", - "0x557d02801c00536300501b00557c02801b00536300502857a028360005", - "0x536300535e00557f02802836300535f00557e02835e35f00736300501c", - "0x1b02835d00b00736300500b00538d02802000536300501f0051c602801f", - "0x501b02802335c00736300535d020007031581028020005363005020005", - "0x535b00536c02835b02d007363005023028007582028023005363005023", - "0x280283630050840055840283590840073630050c00055830280c0005363", - "0x53570055860283570053630051a80052bd0281a8005363005359005585", - "0x28364005363005028032028356005363005032005334028032357007363", - "0x33005033028013005363005013005092028033364007363005364005356", - "0x35c00536300535c0050c7028360005363005360005319028033005363005", - "0x3c00c03136300735603309201300a03c02802d00536300502d00504f028", - "0xc00536300500c00509202802836300502800702821d2190400316aa036", - "0x22d35700758802822d00536300502858702822700536300500c005031028", - "0x364005363005364005033028227005363005227005092028231005363005", - "0x22700a03c02803600536300503600501b028231005363005231005088028", - "0x283630050280070282462420450316ab04704804603136300723136403c", - "0x360005149028249005363005046005031028046005363005046005092028", - "0x24a00501f02805905805b00905025825625325224f24c24b24a014363005", - "0x501f02802836300524c00530a02802836300524b005275028028363005", - "0x12602802836300525600501f02802836300525300501f028028363005252", - "0x2802836300500900524202802836300505000530a028028363005258005", - "0x2836300505900524202802836300505800523102802836300505b005231", - "0x50c002826c00536300505c00500a02805c24f00736300524f0050e9028", - "0x536300524900509202804700536300504700501b028048005363005048", - "0x2802836300502800702805e0056ac27727500736300726c00500f028249", - "0x36300527700501002806000536300524900503102802836300527500501c", - "0x50330282af00536300524f00500a02805d0053630050285a202805f005", - "0x536300505f00501b02806000536300506000509202805d00536300505d", - "0x3630050280070280670056ad0422bc00736300705d2af02d0315a302805f", - "0x50100280420053630050420055a4028306005363005060005031028028", - "0x600536300506800557c02806800536300502857a028069005363005042", - "0x7100557f02802836300506f00557e02807106f00736300500600557d028", - "0x7400536300507400501b0280740053630053470051c6028347005363005", - "0x2807700536300507700501b02807707500736300500b07435c031581028", - "0x3340280433450073630053450055860283453460073630050772bc007582", - "0x50790360072ee02807900536300505f0051c602807a005363005043005", - "0x2808134200736300534200535602834200536300502803202807f005363", - "0x507f00501b028081005363005081005033028306005363005306005092", - "0x280750053630050750050c702806900536300506900501b02807f005363", - "0x34007d00736300707f07a08104830600b00c02834600536300534600504f", - "0x2807d00536300507d00509202802836300502800702833d33e33f0316ae", - "0x533b34500758802833b00536300502858702833c00536300507d005031", - "0x33600536300508c0470072ee02808c0053630050690051c6028337005363", - "0x33700508802834200536300534200503302833c00536300533c005092028", - "0x33633734234033c00b00c02833600536300533600501b028337005363005", - "0x3350050920280283630050280070280883333340316af08a335007363007", - "0x28331005363005028030028332005363005335005031028335005363005", - "0x34600504f0280860053630053300050ec02833000536300533100a0072ca", - "0x750053630050750050c7028332005363005332005092028346005363005", - "0x33234600b0050860053630050860050f002808a00536300508a0050c0028", - "0x33400509202802836300500a00531c02802836300502800702808608a075", - "0x36f00536300508e00509202808e005363005334005031028334005363005", - "0x502804d02832c00536300508800522d02832d0053630053330050c0028", - "0x534500558902802836300500a00531c0280283630050280070280286b0", - "0x4700501f02802836300534200523102802836300506900501f028028363", - "0x2832b00536300533f00503102833f00536300533f005092028028363005", - "0x533d00522d02832d00536300533e0050c002836f00536300532b005092", - "0x2832900536300532c32a00702d02832a00536300502802302832c005363", - "0x536f00509202834600536300534600504f0283280053630053290052c6", - "0x2832d00536300532d0050c00280750053630050750050c702836f005363", - "0x2836300502800702832832d07536f34600b0053280053630053280050f0", - "0x36300505f00501f02802836300500a00531c02802836300503600501f028", - "0x506000503102802836300504700501f02802836300500b00501f028028", - "0x501b02808b005363005028263028326005363005028020028327005363", - "0x536300502802302832500536300508b32600735c02808b00536300508b", - "0x4f0283200053630053230052c602832300536300532532400702d028324", - "0x36300535c0050c7028327005363005327005092028067005363005067005", - "0xb0053200053630053200050f00280480053630050480050c002835c005", - "0x1f02802836300505e00501c02802836300502800702832004835c327067", - "0x2802836300500b00501f02802836300500a00531c028028363005036005", - "0x536300524900503102802836300524f00524202802836300504700501f", - "0x509500501b028095005363005028263028093005363005028020028085", - "0x2809800536300502802302831f00536300509509300735c028095005363", - "0x2d00504f02809600536300531e0052c602831e00536300531f09800702d", - "0x35c00536300535c0050c702808500536300508500509202802d005363005", - "0x8502d00b0050960053630050960050f00280480053630050480050c0028", - "0xa00531c02802836300503600501f02802836300502800702809604835c", - "0x509202802836300500b00501f02802836300536000531e028028363005", - "0x536300531d00509202831d005363005045005031028045005363005045", - "0x2804d02831900536300524600522d02831a0053630052420050c002831c", - "0xa00531c0280283630053640052310280283630050280070280286b1005", - "0x558902802836300500b00501f02802836300536000531e028028363005", - "0x318005363005040005031028040005363005040005092028028363005357", - "0x21d00522d02831a0053630052190050c002831c005363005318005092028", - "0x31600536300531931700702d028317005363005028023028319005363005", - "0x31c00509202802d00536300502d00504f0283150053630053160052c6028", - "0x31a00536300531a0050c002835c00536300535c0050c702831c005363005", - "0x36300502800702831531a35c31c02d00b0053150053630053150050f0028", - "0x501000509202802836300500b00501f02802836300500a00531c028028", - "0x2d028313005363005028023028314005363005010005031028010005363", - "0x502800504f0283110053630053120052c602831200536300504e313007", - "0x280070053630050070050c7028314005363005314005092028028005363", - "0x731402800b0053110053630053110050f00281c60053630051c60050c0", - "0x50285a60280100053630050283690280920053630050285a50283111c6", - "0x502836102802836300502824f0280140053630050285a702804e005363", - "0x50285a90280300053630050285a902804d0053630050285a8028028363", - "0x536300501801703004d00a5aa0280180053630050285a9028017005363", - "0x280286b23600053630073610055ac0283610053630053610055ab028361", - "0x73630050310055ad02801b00536300500a005031028028363005028007", - "0x285a902801f00536300535e0055ae02835e00536300502836e02835f01c", - "0x2835c0053630050285a902835d0053630050200055ae028020005363005", - "0x36300502d0055ae02802d0053630050285a902802300536300535c0055ae", - "0x536300535f0055b00280c000536300535b02335d01f00a5af02835b005", - "0x52e802801b00536300501b0050920280c00053630050c00055b102835f", - "0x280070283590056b30840053630070c035f0075b202801c00536300501c", - "0x55b50280283630050100055b40280283630050840055b3028028363005", - "0x5b70280283630050920055b602802836300500b00531c02802836300504e", - "0x1a800536300501b0050310280283630053600055b8028028363005014005", - "0x36300503200501b028032005363005028368028357005363005028020028", - "0x2d02836400536300502802302835600536300503235700735c028032005", - "0x502800504f02800c0053630050330052c6028033005363005356364007", - "0x280070053630050070052ef0280050053630050050050db028028005363", - "0x500c0050f00281a80053630051a800509202801c00536300501c0052e8", - "0x503102802836300502800702800c1a801c00700502804f00500c005363", - "0x400053630050360055ae0280360053630050285b902803c00536300501b", - "0x3630050285a902821d0053630052190055ae0282190053630050285a9028", - "0x55ae0282310053630050285a902822d0053630052270055ae028227005", - "0x480055b102804800536300504622d21d04000a5af028046005363005231", - "0x53630070483590075b202803c00536300503c005092028048005363005", - "0x5ba02824200536300503c0050310280283630050280070280450056b4047", - "0x2824a0053630050285bc0282490053630050285bb028246005363005028", - "0x524200509202824a00536300524a0055bf0282490053630052490055bd", - "0x6b524b01304f03136300724a2493600472460070050925c0028242005363", - "0x2825600536300524200503102802836300502800702825325224f24c00a", - "0x504f0920075c302802836300502800b02805025800736300524b0055c1", - "0x2560053630052560050920280130053630050130140075c402804f005363", - "0x503102802836300502800702805b0056b60090053630070500055c5028", - "0x53630070090055c6028058005363005058005092028058005363005256", - "0x9202826c00536300505800503102802836300502800702805c0056b7059", - "0x280070282770056b82750053630070590055c702826c00536300526c005", - "0x280600053630052750055c802805e00536300526c005031028028363005", - "0x6b900502804d02805d0053630050600055c902805f00536300505e005092", - "0x52af0050920282af00536300526c005031028028363005028007028028", - "0x280070280286b900502804d02805d0053630052770055c902805f005363", - "0x2805f0053630052bc0050920282bc005363005058005031028028363005", - "0x280283630050280070280286b900502804d02805d00536300505c0055c9", - "0x505b0055c902805f005363005042005092028042005363005256005031", - "0x3670281c600536300505d01c0075ca02802836300502836102805d005363", - "0x53630050285b90280283630050670055cb028306067007363005258005", - "0x3630050285a90280060053630050285a90280680053630050285a9028069", - "0x736300507100536702807100536300506f00606806900a5cc02806f005", - "0x55cd0283060053630053060055cd0280283630053470055cb028074347", - "0x51c604e0075cf0280750053630050743060075ce028074005363005074", - "0x283630050280070283460056ba0770053630070750052cd0281c6005363", - "0x36300505f00503102802836300500b00531c028028363005077005047028", - "0x502803202807a0053630050282490280430053630050285d0028345005", - "0x315d20283420053630050285d102807f005363005028366028079005363", - "0x50810055d302802800536300502800504f02808100536300507907a043", - "0x2834200536300534200503302807f00536300507f00501b028081005363", - "0x2834500536300534500509202834007d00736300534207f08102800a5d4", - "0x34500503102802836300502800702833e0056bb33f0053630073400055d5", - "0x2836300533b00504702833b33c00736300533f0055d602833d005363005", - "0x36300507d00504f02808c0053630050285d10283370053630050285d7028", - "0x3302833700536300533700501b02833c00536300533c0055d302807d005", - "0x9202833533600736300508c33733c07d00a5d402808c00536300508c005", - "0x280070283340056bc08a0053630073350055d502833d00536300533d005", - "0x33208800736300508a0055d602833300536300533d005031028028363005", - "0x53630050285d10283310053630050285d8028028363005332005047028", - "0x501b0280880053630050880055d302833600536300533600504f028330", - "0x33033108833600a5d4028330005363005330005033028331005363005331", - "0x536300708e0055d502833300536300533300509202808e086007363005", - "0x5d602832c00536300533300503102802836300502800702832d0056bd36f", - "0x536300502837002802836300532a00504702832a32b00736300536f005", - "0x32b0055d302808600536300508600504f0283280053630050285d9028329", - "0x32800536300532800503302832900536300532900501b02832b005363005", - "0x32c00536300532c00509202832632700736300532832932b08600a5d4028", - "0x50310280283630050280070283250056be08b0053630073260055d5028", - "0x283200053630050285da02832300536300502802002832400536300532c", - "0x8b0055d602808500536300532032300735c02832000536300532000501b", - "0x536300500f0100075db02802836300509300504702809300f007363005", - "0x55de0280283630050950055dd02831f09500736300500f0055dc02800f", - "0x9600501f02831d09631e0313630050980055df02809831f00736300531f", - "0x2831c31e00736300531e0055e002802836300531d005231028028363005", - "0x531900501b02831900536300531a00507402831a00536300531c0055e1", - "0x31700536300531e0055e202831800536300531908500735c028319005363", - "0x3170055e402832400536300532400509202832700536300532700504f028", - "0x531831732432700a36502831800536300531800522d028317005363005", - "0x6bf31300536300731400500602802836300502800b028314315316031363", - "0x31300506f028311005363005315005031028028363005028007028312005", - "0x31f00736300531f0055de02802836300530e00504702830e30f007363005", - "0x2310280283630050a90055e50280b030b0a903136300530c0055df02830c", - "0x3630050ac30f00735c0280ac00536300530b0051c60280283630050b0005", - "0x280283630053080055e50280b60b430803136300531f0055df02830a005", - "0x3630053050050740283050053630050b60051530280283630050b400501f", - "0x283020053630053110050920283030053630050b930a00735c0280b9005", - "0x280283630050280070280286c000502804d02830100536300530300522d", - "0x36300531200507702830000536300531500503102802836300531f0055e7", - "0x22d0283020053630053000050920280283630052ff0053460282fe2ff007", - "0x280bf0053630050280230280283630050283610283010053630052fe005", - "0x31600504f0282fc0053630052fd0052c60282fd0053630053010bf00702d", - "0x130053630050130052ef02804f00536300504f0050db028316005363005", - "0x2fc0050f00283020053630053020050920281c60053630051c60052e8028", - "0x5b40280283630050280070282fc3021c601304f31604f0052fc005363005", - "0x53630053250052c60282fb00536300532c005031028028363005010005", - "0x52ef02804f00536300504f0050db02832700536300532700504f028051", - "0x53630052fb0050920281c60053630051c60052e8028013005363005013", - "0x280070280512fb1c601304f32704f0050510053630050510050f00282fb", - "0x2c602838b0053630053330050310280283630050100055b4028028363005", - "0x36300504f0050db02808600536300508600504f02838c00536300532d005", - "0x920281c60053630051c60052e80280130053630050130052ef02804f005", - "0x1c601304f08604f00538c00536300538c0050f002838b00536300538b005", - "0x533d0050310280283630050100055b402802836300502800702838c38b", - "0x2833600536300533600504f0280dc0053630053340052c602838d005363", - "0x51c60052e80280130053630050130052ef02804f00536300504f0050db", - "0x50dc0053630050dc0050f002838d00536300538d0050920281c6005363", - "0x283630050100055b40280283630050280070280dc38d1c601304f33604f", - "0x7d00504f0280c700536300533e0052c602838f005363005345005031028", - "0x130053630050130052ef02804f00536300504f0050db02807d005363005", - "0xc70050f002838f00536300538f0050920281c60053630051c60052e8028", - "0x470280283630050280070280c738f1c601304f07d04f0050c7005363005", - "0xc600536300505f0050310280283630050100055b4028028363005346005", - "0xcb0050ec0280cb0053630050c900b0072ca0280c9005363005028030028", - "0x4f00536300504f0050db02802800536300502800504f0280cf005363005", - "0xc60050920281c60053630051c60052e80280130053630050130052ef028", - "0xcf0c61c601304f02804f0050cf0053630050cf0050f00280c6005363005", - "0x283630050100055b40280283630052520055e8028028363005028007028", - "0x3630050920055b602802836300500b00531c02802836300504e0055b5028", - "0x50280200282fa0053630052420050310280283630050140055b7028028", - "0x35c02830700536300530700501b0283070053630050285e9028390005363", - "0x53630050285bc0282f40053630050285bb028391005363005307390007", - "0x55bf0282f40053630052f40055bd02824f00536300524f0052ef0280d4", - "0x283920d52f30313630050d42f425324f01c00b5ea0280d40053630050d4", - "0x53630052fa00509202824c00536300524c0050db02802836300502800b", - "0x52ef0282f30053630052f30052e802839100536300539100522d0282fa", - "0x50280070282f00056c12f10053630073920055c50280d50053630050d5", - "0x5c60282ea0053630052ea0050920282ea0053630052fa005031028028363", - "0x52ea0050310280283630050280070282e70056c20da0053630072f1005", - "0x6c30d20053630070da0055c70282e50053630052e50050920282e5005363", - "0xd20055c80280db0053630052e50050310280283630050280070282e8005", - "0x2e10053630052ef0055c90282e20053630050db0050920282ef005363005", - "0x2e00053630052e50050310280283630050280070280286c400502804d028", - "0x502804d0282e10053630052e80055c90282e20053630052e0005092028", - "0xdf0050920280df0053630052ea0050310280283630050280070280286c4", - "0x70280286c400502804d0282e10053630052e70055c90282e2005363005", - "0x2e20053630052ee0050920282ee0053630052fa005031028028363005028", - "0x52e12f30075ca0280283630050283610282e10053630052f00055c9028", - "0x282eb0053630053912ec00702d0282ec0053630050280230280e1005363", - "0x524c0050db02802800536300502800504f0280e30053630052eb0052c6", - "0x280e10053630050e10052e80280d50053630050d50052ef02824c005363", - "0xd524c02804f0050e30053630050e30050f00282e20053630052e2005092", - "0x100055b40280283630050450055eb0280283630050280070280e32e20e1", - "0x55b602802836300500b00531c02802836300504e0055b5028028363005", - "0x310280283630053600055b80280283630050140055b7028028363005092", - "0x2d60053630050285ed0282de0053630050280200282ed00536300503c005", - "0x280230282d80053630052d62de00735c0282d60053630052d600501b028", - "0x53630052d20052c60282d20053630052d82d300702d0282d3005363005", - "0x52ef0280050053630050050050db02802800536300502800504f0280e9", - "0x53630052ed00509202801c00536300501c0052e8028007005363005007", - "0x280070280e92ed01c00700502804f0050e90053630050e90050f00282ed", - "0x531c02802836300504e0055b50280283630050100055b4028028363005", - "0x310280283630050140055b70280283630050920055b602802836300500b", - "0x2cd00536300502824b0282ce0053630050280200282d000536300500a005", - "0x280230282ca0053630052cd2ce00735c0282cd0053630052cd00501b028", - "0x53630050f00052c60280f00053630052ca0ec00702d0280ec005363005", - "0x52ef0280050053630050050050db02802800536300502800504f0282c9", - "0x53630052d00050920280310053630050310052e8028007005363005007", - "0x55ee0282c92d003100700502804f0052c90053630052c90050f00282d0", - "0x53630050310055ae02803100536300502836e028007005007363005028", - "0x50285a902804f00536300500b0055ae02800b0053630050285a902800a", - "0x5ae0280100053630050285a902800f0053630050920055ae028092005363", - "0x55ef02804e0053630051c600f04f00a00a5af0281c6005363005010005", - "0x53630050050052e802804e00536300504e0055b1028007005363005007", - "0x280283630050280070280140056c501300536300704e0070075f0028005", - "0x5f20280283630050280070280286c600502804d0280283630050130055f1", - "0x3000536300504d00516402804d005363005028030028028363005014005", - "0x170052950280050053630050050052e8028017005363005030005296028", - "0x3132802804f0310073630050310050dc028017005007005017005363005", - "0x2836300502800702801304e1c60316c701000f09203136300704f005028", - "0x50285f4028014005363005092005031028092005363005092005092028", - "0x320280170053630050285f502803000536300504d00533402804d005363", - "0x5363005018005033028014005363005014005092028018005363005028", - "0x533702801700536300501700501b028030005363005030005088028018", - "0x316c836036100736300701703001800f01400b00c028010005363005010", - "0x503102836100536300536100509202802836300502800702835f01c01b", - "0x36300501f00504002802001f00736300500b00503602835e005363005361", - "0x38d02835c0310073630050310050dc02835d005363005020005219028028", - "0x36035e00b27702835e00536300535e00509202802300a00736300500a005", - "0x283630050280070281a83590840316c90c035b02d03136300735d02335c", - "0x36300501000533d02802836300500700531c0280283630050c0005242028", - "0x502d00509202802836300500a00501f028028363005031005275028028", - "0x5da02803200536300502802002835700536300502d00503102802d005363", - "0x36300535603200735c02835600536300535600501b028356005363005028", - "0x735c02803300536300503300501b028033005363005028249028364005", - "0x536300503c00501b02803c0053630050285f602800c005363005033364", - "0x501b02804000536300502824602803600536300503c00c00735c02803c", - "0x536300502802302821900536300504003600735c028040005363005040", - "0x9202822d0053630052270052c602822700536300521921d00702d02821d", - "0x36300522d0050f002835b00536300535b0050c0028357005363005357005", - "0x536300508400509202802836300502800702822d35b35703100522d005", - "0x400280480460073630051a8005036028231005363005084005031028084", - "0x53630053590050c0028048005363005048005013028028363005046005", - "0x56ca0450470073630070480055f7028231005363005231005092028359", - "0x50450055a4028246005363005231005031028028363005028007028242", - "0x2824a0053630052490051c6028249005363005045005010028045005363", - "0x524b24a00732602824a00536300524a00501b02824b0053630050285f8", - "0x2804700536300504700501302824c00536300524c00501b02824c005363", - "0x2800702824f0056cb02836300724c005342028246005363005246005092", - "0x28252005363005252005092028252005363005246005031028028363005", - "0x501c0280283630050280070282580056cc2562530073630070470055f7", - "0x2560053630052560055a4028050005363005252005031028028363005253", - "0x50285fa02805b0053630050090051c6028009005363005256005010028", - "0x536300505805900732602805900a00736300500a00538d028058005363", - "0x501b02805000536300505000509202805c00536300505c00501b02805c", - "0x36300502800702826c0056cd02836300705c00534202805b00536300505b", - "0x50285fb02827500536300505000503102802836300500a00501f028028", - "0x5e00536300505e00501b02805e00536300527705b007326028277005363", - "0x70280600056ce02836300705e005342028275005363005275005092028", - "0x5d00536300505f00509202805f005363005275005031028028363005028", - "0x280283630050600053400280283630050280070280286cf00502804d028", - "0x2836300503100527502802836300501000533d02802836300500700531c", - "0x3630050285fc0282bc0053630050280200282af005363005275005031028", - "0x280670053630050422bc00735c02804200536300504200501b028042005", - "0x50690052c602806900536300506730600702d028306005363005028023", - "0x283590053630053590050c00282af0053630052af005092028068005363", - "0x3400280283630050280070280683592af0310050680053630050680050f0", - "0x6f0053630050282c302800600536300505000503102802836300526c005", - "0x1b02834700536300506f07100732602807100a00736300500a00538d028", - "0x363007347005342028006005363005006005092028347005363005347005", - "0x503102802836300500a00501f0280283630050280070280740056d0028", - "0x536300507705b0073260280770053630050282c9028075005363005006", - "0x534202807500536300507500509202834600536300534600501b028346", - "0x53630050750050310280283630050280070283450056d1028363007346", - "0x3630050280070280286d200502804d02807a005363005043005092028043", - "0x501000533d02802836300500700531c028028363005345005340028028", - "0x28020028079005363005075005031028028363005031005275028028363", - "0x2834200536300534200501b0283420053630050285fc02807f005363005", - "0x8107d00702d02807d00536300502802302808100536300534207f00735c", - "0x7900536300507900509202833f0053630053400052c6028340005363005", - "0x35907903100533f00536300533f0050f00283590053630053590050c0028", - "0x36300500600503102802836300507400534002802836300502800702833f", - "0x1b02833c00536300533d00a00732602833d0053630050285fd02833e005", - "0x36300733c00534202833e00536300533e00509202833c00536300533c005", - "0x33002833700536300533e00503102802836300502800702833b0056d3028", - "0x36300533600501b02833600536300508c05b00732602808c005363005028", - "0x3350056d4028363007336005342028337005363005337005092028336005", - "0x36300508a00509202808a005363005337005031028028363005028007028", - "0x33403136300703135905d03132802805d00536300507a00530702807a005", - "0x53630053340050920280283630050280070283303313320316d5088333", - "0x8e0052c102808e00536300502808a028086005363005334005031028334", - "0x2836300532d0050f802832c32d00736300536f0052be02836f005363005", - "0x32a00533402832a00536300532b0052bd02832b00536300532c0050fa028", - "0x28086005363005086005092028328005363005028032028329005363005", - "0x5088005337028329005363005329005088028328005363005328005033", - "0x3243250316d608b32632703136300732932833308600a03c028088005363", - "0x5327005031028327005363005327005092028028363005028007028323", - "0x283260053630053260050c002808b00536300508b00501b028320005363", - "0x280070280850056d702836300708b005342028320005363005320005092", - "0x28095005363005010005327028093005363005320005031028028363005", - "0x9800501b02809800536300531f09500732602831f005363005088005327", - "0x6d8028363007098005342028093005363005093005092028098005363005", - "0x50285f402809600536300509300503102802836300502800702831e005", - "0x31931a00736300531c0052be02831c00536300531d0052c102831d005363", - "0x53180052bd0283180053630053190050fa02802836300531a0050f8028", - "0x92028315005363005028032028316005363005317005334028317005363", - "0x363005316005088028315005363005315005033028096005363005096005", - "0x30e30f3110316d931231331403136300731631532609600a03c028316005", - "0x363005314005031028314005363005314005092028028363005028007028", - "0x732602831200536300531200501b0280a90053630050285f502830c005", - "0x3630053130050c002830b00536300530b00501b02830b0053630050a9312", - "0xb00056da02836300730b00534202830c00536300530c005092028313005", - "0x53630050280300280ac00536300530c005031028028363005028007028", - "0x920280b40053630053080050ec02830800536300530a0070072ca02830a", - "0x3630050b40050f00283130053630053130050c00280ac0053630050ac005", - "0x283630050b00053400280283630050280070280b43130ac0310050b4005", - "0x3630050280200280b600536300530c00503102802836300500700531c028", - "0x735c0280b90053630050b900501b0280b90053630050285ff028305005", - "0x36300530330200702d0283020053630050280230283030053630050b9305", - "0xc00280b60053630050b60050920283000053630053010052c6028301005", - "0x283003130b60310053000053630053000050f0028313005363005313005", - "0x31100536300531100509202802836300500700531c028028363005028007", - "0x30e2fe00702d0282fe0053630050280230282ff005363005311005031028", - "0x2ff0053630052ff0050920282fd0053630050bf0052c60280bf005363005", - "0x30f2ff0310052fd0053630052fd0050f002830f00536300530f0050c0028", - "0x36300500700531c02802836300531e0053400280283630050280070282fd", - "0x50286000282fb0053630050280200282fc005363005093005031028028", - "0x38b0053630050512fb00735c02805100536300505100501b028051005363", - "0x38d0052c602838d00536300538b38c00702d02838c005363005028023028", - "0x3260053630053260050c00282fc0053630052fc0050920280dc005363005", - "0x280283630050280070280dc3262fc0310050dc0053630050dc0050f0028", - "0x2836300501000533d02802836300500700531c028028363005085005340", - "0x36300502802002838f00536300532000503102802836300508800533d028", - "0x735c0280c60053630050c600501b0280c60053630050286010280c7005", - "0x3630050c90cb00702d0280cb0053630050280230280c90053630050c60c7", - "0xc002838f00536300538f0050920282fa0053630050cf0052c60280cf005", - "0x282fa32638f0310052fa0053630052fa0050f0028326005363005326005", - "0x2802836300508800533d02802836300500700531c028028363005028007", - "0x36300532500503102832500536300532500509202802836300501000533d", - "0x2c602839100536300532330700702d028307005363005028023028390005", - "0x3630053240050c00283900053630053900050920282f4005363005391005", - "0x3630050280070282f43243900310052f40053630052f40050f0028324005", - "0x533200509202802836300501000533d02802836300500700531c028028", - "0x2d0282f30053630050280230280d4005363005332005031028332005363", - "0x50d40050920283920053630050d50052c60280d50053630053302f3007", - "0x53920053630053920050f00283310053630053310050c00280d4005363", - "0x531c0280283630053350053400280283630050280070283923310d4031", - "0x3102802836300503100527502802836300501000533d028028363005007", - "0x2ea0053630050286030282f00053630050280200282f1005363005337005", - "0x280230280da0053630052ea2f000735c0282ea0053630052ea00501b028", - "0x53630052e50052c60282e50053630050da2e700702d0282e7005363005", - "0x50f00283590053630053590050c00282f10053630052f10050920280d2", - "0x33b0053400280283630050280070280d23592f10310050d20053630050d2", - "0x527502802836300501000533d02802836300500700531c028028363005", - "0x282e800536300533e00503102802836300505b00501f028028363005031", - "0x53630052ef00501b0282ef0053630050286040280db005363005028020", - "0x702d0282e10053630050280230282e20053630052ef0db00735c0282ef", - "0x3630052e80050920280df0053630052e00052c60282e00053630052e22e1", - "0x310050df0053630050df0050f00283590053630053590050c00282e8005", - "0x700531c02802836300525800501c0280283630050280070280df3592e8", - "0x501f02802836300503100527502802836300501000533d028028363005", - "0x280e10053630050280200282ee00536300525200503102802836300500a", - "0x52ec0e100735c0282ec0053630052ec00501b0282ec00536300502824b", - "0x282ed0053630052eb0e300702d0280e30053630050280230282eb005363", - "0x53590050c00282ee0053630052ee0050920282de0053630052ed0052c6", - "0x50280070282de3592ee0310052de0053630052de0050f0028359005363", - "0x1000533d02802836300500700531c02802836300524f005340028028363", - "0x501c02802836300500a00501f028028363005031005275028028363005", - "0x282d80053630050280200282d6005363005246005031028028363005047", - "0x52d32d800735c0282d30053630052d300501b0282d30053630050285fc", - "0x282d00053630052d20e900702d0280e90053630050280230282d2005363", - "0x53590050c00282d60053630052d60050920282ce0053630052d00052c6", - "0x50280070282ce3592d60310052ce0053630052ce0050f0028359005363", - "0x1000533d02802836300500700531c02802836300524200501c028028363", - "0x503102802836300500a00501f028028363005031005275028028363005", - "0x280ec00536300502824b0282ca0053630050280200282cd005363005231", - "0x50280230280f00053630050ec2ca00735c0280ec0053630050ec00501b", - "0x2c50053630052c60052c60282c60053630050f02c900702d0282c9005363", - "0x2c50050f00283590053630053590050c00282cd0053630052cd005092028", - "0x500700531c0280283630050280070282c53592cd0310052c5005363005", - "0xa00501f02802836300503100527502802836300501000533d028028363", - "0x3102801b00536300501b00509202802836300500b005040028028363005", - "0x36300535f2c300702d0282c30053630050280230282c400536300501b005", - "0xc00282c40053630052c40050920282c10053630052c20052c60282c2005", - "0x282c101c2c40310052c10053630052c10050f002801c00536300501c005", - "0x2802836300500b00504002802836300500700531c028028363005028007", - "0x53630051c600509202802836300500a00501f028028363005031005275", - "0xf800702d0280f80053630050280230282be0053630051c60050310281c6", - "0x53630052be0050920282bd0053630050fa0052c60280fa005363005013", - "0x2be0310052bd0053630052bd0050f002804e00536300504e0050c00282be", - "0x6db00a03100736300700700500f02800700536300500500500a0282bd04e", - "0x3100501302804f00536300500a00525602802836300502800702800b005", - "0x70280286dc00502804d02800f00536300504f005258028092005363005", - "0x281c6005363005010005050028010005363005028030028028363005028", - "0x509200507102800f0053630051c600525802809200536300500b005013", - "0x1400536300700f00500902801300536300504e00521902804e092007363", - "0x51c602803000536300501400501002802836300502800702804d0056dd", - "0x3630070170280072ae02801700536300501700501b028017005363005030", - "0x280283630050130052420280283630050280070283600056de361018007", - "0x536100535602801c09200736300509200507102801b005363005028032", - "0x735f01b01c01800a60502801b00536300501b00503302835f361007363", - "0x73630050920050710280283630050280070280200056df01f35e007363", - "0x2802336100736300536100535602835c00536300535d00534702835d092", - "0x35c35e03156e02801f00536300501f00501302835c00536300535c005033", - "0x2d00a6050280283630050280070280840c00076e035b02d007363007023", - "0x52190280283630050280070283570056e11a835900736300735b361092", - "0x53630051a800521902835600536300503200560602803200536300501f", - "0x4f02800c005363005033005608028033005363005356364007607028364", - "0x702800c35900700500c00536300500c005609028359005363005359005", - "0x26302803c00536300502802002802836300501f00501c028028363005028", - "0x36300503603c00735c02803600536300503600501b028036005363005028", - "0x60a02821d00536300504021900702d028219005363005028023028040005", - "0x36300522700560902835700536300535700504f02822700536300521d005", - "0x28028363005084005231028028363005028007028227357007005227005", - "0x2836300536100523102802836300509200501c02802836300501f00501c", - "0x36300523100501b02823100536300502860b02822d005363005028020028", - "0x2d02804800536300502802302804600536300523122d00735c028231005", - "0x50c000504f02804500536300504700560a028047005363005046048007", - "0x3630050280070280450c00070050450053630050450056090280c0005363", - "0x36300502802002802836300509200501c028028363005361005231028028", - "0x735c02824600536300524600501b028246005363005028263028242005", - "0x36300524924a00702d02824a005363005028023028249005363005246242", - "0x60902802000536300502000504f02824c00536300524b00560a02824b005", - "0x9200501c02802836300502800702824c02000700524c00536300524c005", - "0x60702825200536300524f00560c02824f005363005028030028028363005", - "0x536000504f028256005363005253005608028253005363005252013007", - "0x363005028007028256360007005256005363005256005609028360005363", - "0x36300502803002802836300509200501c02802836300504d005047028028", - "0x2800900536300505001300760702805000536300525800560c028258005", - "0x505b00560902802800536300502800504f02805b005363005009005608", - "0x36300700502800700502802836300502836102805b02800700505b005363", - "0x536300504f00503102802836300502800702800f0920076e204f00b007", - "0x9202800b00536300500b00504f0281c600a00736300500a00538d028010", - "0x502800702804e0056e30283630071c6005342028010005363005010005", - "0x560d02801300536300501000503102802836300500a00501f028028363", - "0x36300504d00560f02804d00536300501400700760e028014005363005031", - "0x61002801300536300501300509202800b00536300500b00504f028030005", - "0x534002802836300502800702803001300b031005030005363005030005", - "0xb00536300500b00504f02801700536300501000503102802836300504e", - "0x2836036101803136300500700b00761102800700536300500700505b028", - "0x702801c0056e401b005363007360005612028017005363005017005092", - "0x536300501b03100761302835f005363005017005031028028363005028", - "0x504f02802000536300501f00a00732602801f00536300502824a02835e", - "0x536300536100505b02835f00536300535f005092028018005363005018", - "0xb11602802000536300502000501b02835e00536300535e005114028361", - "0x502800702802335c35d03100502335c35d03136300502035e36135f018", - "0x1700503102802836300503100511c02802836300500a00501f028028363", - "0x536300535b36100760e02835b00536300501c00561402802d005363005", - "0x509202801800536300501800504f0280840053630050c000560f0280c0", - "0x702808402d01803100508400536300508400561002802d00536300502d", - "0x24202802836300503100511c02802836300500a00501f028028363005028", - "0x1a800536300502802002835900536300500f005031028028363005007005", - "0x3571a800735c02835700536300535700501b028357005363005028046028", - "0x36400536300503235600702d028356005363005028023028032005363005", - "0x35900509202809200536300509200504f028033005363005364005372028", - "0x28361028033359092031005033005363005033005610028359005363005", - "0x2800702809204f0076e500b00a007363007005028007005028028363005", - "0x2801000536300500700500a02800f00536300500b005031028028363005", - "0x536300500f00509202800a00536300500a00504f02802836300502800b", - "0x280283630050280070280130056e604e1c600736300701000500f02800f", - "0x501400509202804d00536300504e00525602801400536300500f005031", - "0x2801800536300504d0052580280170053630051c6005013028030005363", - "0x2836100536300500f0050310280283630050280070280286e700502804d", - "0x36300536100509202801b005363005360005050028360005363005028030", - "0x21902801800536300501b005258028017005363005013005013028030005", - "0x2800702835e0056e835f00536300701800500902801c005363005017005", - "0x2802000536300535f00501002801f005363005030005031028028363005", - "0x502000501b02801f00536300501f00509202835d00536300503100500a", - "0x36300502800702802d0056e902335c00736300735d00500f028020005363", - "0x52190280c000536300502300501002835b00536300501f005031028028", - "0x53630050c00051c60283590053630050200051c602808400536300535c", - "0x1b0283570053630051a83590073260281a80053630051a800501b0281a8", - "0x36300508400505b02835b00536300535b005092028357005363005357005", - "0x3610280283630050280070280320056ea028363007357005342028084005", - "0xa00536300500a00504f02835600536300535b005031028028363005028", - "0x8400505b02801c00536300501c00505b028356005363005356005092028", - "0x36403100500c03336403136300508401c35600a00a150028084005363005", - "0x36300503200534002802836300502836102802836300502800702800c033", - "0x3600533f02803600536300502803002803c00536300535b005031028028", - "0x36300521900561602821900536300504008401c031615028040005363005", - "0x61702803c00536300503c00509202800a00536300500a00504f02821d005", - "0x2836102802836300502800702821d03c00a03100521d00536300521d005", - "0x524202802836300502000501f02802836300502d00501c028028363005", - "0x2822d00536300502802002822700536300501f00503102802836300501c", - "0x523122d00735c02823100536300523100501b02823100536300502824b", - "0x2804700536300504604800702d028048005363005028023028046005363", - "0x522700509202800a00536300500a00504f028045005363005047005618", - "0x502800702804522700a031005045005363005045005617028227005363", - "0x503000503102802836300535e005047028028363005028361028028363", - "0x615028249005363005246005081028246005363005028030028242005363", - "0xa00504f02824b00536300524a00561602824a00536300524903101c031", - "0x24b00536300524b00561702824200536300524200509202800a005363005", - "0x24202802836300503100524202802836300502800702824b24200a031005", - "0x24f00536300502802002824c005363005092005031028028363005007005", - "0x25224f00735c02825200536300525200501b028252005363005028046028", - "0x25800536300525325600702d028256005363005028023028253005363005", - "0x24c00509202804f00536300504f00504f028050005363005258005618028", - "0x2836102805024c04f03100505000536300505000561702824c005363005", - "0x2800702809204f0076eb00b00a007363007005028007005028028363005", - "0x2801000536300500700515902800f00536300500b005031028028363005", - "0x536300500f00509202800a00536300500a00504f02802836300502800b", - "0x280283630050280070280130056ec04e1c600736300701000561902800f", - "0x501400509202804d00536300504e00561a02801400536300500f005031", - "0x2801800536300504d00561b0280170053630051c6005373028030005363", - "0x2836100536300500f0050310280283630050280070280286ed00502804d", - "0x36300536100509202801b00536300536000561c028360005363005028030", - "0x11b02801800536300501b00561b028017005363005013005373028030005", - "0x2800702835e0056ee35f00536300701800561d02801c005363005017005", - "0x2802000536300535f00561e02801f005363005030005031028028363005", - "0x502000562002801f00536300501f00509202835d005363005031005159", - "0x36300502800702802d0056ef02335c00736300735d005619028020005363", - "0x511b0280c000536300502300561e02835b00536300501f005031028028", - "0x36300535900562202835902000736300502000562102808400536300535c", - "0x1c602802836300503200530a02802836300535700508e0280323571a8031", - "0x3630050c00056210280c00053630050c00056200283560053630051a8005", - "0x2836300500c00508e02803c00c0330313630053640056220283640c0007", - "0x363560073260280360053630050330051c602802836300503c00530a028", - "0x35b00536300535b00509202804000536300504000501b028040005363005", - "0x70282190056f0028363007040005342028084005363005084005157028", - "0x2000736300502000562102821d00536300535b005031028028363005028", - "0x30a02802836300522d00501f02804623122d031363005227005622028227", - "0x73630050c00056210280480053630052310050fc028028363005046005", - "0x2802836300504500501f0282462420450313630050470056220280470c0", - "0x36300521d0050920282490053630052420050fc02802836300524600530a", - "0x6230280283630050280070280286f10283630072490480070fe02821d005", - "0x24a00536300521d0050310280283630050c0005623028028363005020005", - "0x283630050280070280286f200502804d02824b00536300524a005092028", - "0x1f02825325224f03136300502000562202824c00536300521d005031028", - "0x2560053630052530052f102802836300525200508e02802836300524f005", - "0x508e02802836300525800501f0280090502580313630050c0005622028", - "0x24c00536300524c00509202805b0053630050090052f1028028363005050", - "0x24c0050310280283630050280070280286f302836300705b25600714b028", - "0x70280286f400502804d028059005363005058005092028058005363005", - "0x4f02805c00536300524c005031028028363005028361028028363005028", - "0x36300501c00515702805c00536300505c00509202800a00536300500a005", - "0x3136300508401c05c00a00a15602808400536300508400515702801c005", - "0x36300521900534002802836300502800702827727526c03100527727526c", - "0x535b0050310280283630050200056230280283630050c0005623028028", - "0x2805900536300524b00530702824b00536300505e00509202805e005363", - "0x5f00536300506000533f028060005363005028030028028363005028361", - "0x4f0282af00536300505d00562602805d00536300505f08401c031624028", - "0x3630052af00562702805900536300505900509202800a00536300500a005", - "0x280283630050283610280283630050280070282af05900a0310052af005", - "0x2836300501c00512602802836300502000562302802836300502d005628", - "0x36300502824b0280420053630050280200282bc00536300501f005031028", - "0x2830600536300506704200735c02806700536300506700501b028067005", - "0x506800562a02806800536300530606900702d028069005363005028023", - "0x282bc0053630052bc00509202800a00536300500a00504f028006005363", - "0x3610280283630050280070280062bc00a031005006005363005006005627", - "0x2806f00536300503000503102802836300535e005047028028363005028", - "0x34703101c031624028347005363005071005081028071005363005028030", - "0xa00536300500a00504f028075005363005074005626028074005363005", - "0x6f00a03100507500536300507500562702806f00536300506f005092028", - "0x363005031005126028028363005007005126028028363005028007028075", - "0x5028046028346005363005028020028077005363005092005031028028", - "0x4300536300534534600735c02834500536300534500501b028345005363", - "0x7900562a02807900536300504307a00702d02807a005363005028023028", - "0x7700536300507700509202804f00536300504f00504f02807f005363005", - "0x2802836300502836102807f07704f03100507f00536300507f005627028", - "0x2802836300502800702809204f0076f500b00a007363007005028007005", - "0x36300502800b02801000536300500700562b02800f00536300500b005031", - "0x562c02800f00536300500f00509202800a00536300500a00504f028028", - "0x500f0050310280283630050280070280130056f604e1c6007363007010", - "0x2803000536300501400509202804d00536300504e00562e028014005363", - "0x6f700502804d02801800536300504d0056300280170053630051c600562f", - "0x36300502803002836100536300500f005031028028363005028007028028", - "0x62f02803000536300536100509202801b005363005360005631028360005", - "0x36300501700518902801800536300501b005630028017005363005013005", - "0x2802836300502800702835e0056f835f00536300701800563302801c005", - "0x536300535f00563402801f005363005030005031028028363005028361", - "0x518c02800a00536300500a00504f02835d005363005020005635028020", - "0x535d03100a03163602835d00536300535d005182028031005363005031", - "0x2d00536300702300527102801f00536300501f00509202802335c007363", - "0x518d0280c000536300501f00503102802836300502800702835b0056f9", - "0x536300535c00504f02802836300535900504702835908400736300502d", - "0x518c02801c00536300501c00518a0280c00053630050c000509202835c", - "0x310050323571a803136300508401c0c035c00a276028084005363005084", - "0x1f00503102802836300501c0051940280283630050280070280323571a8", - "0x35c00536300535c00504f02836400536300535b005637028356005363005", - "0x35635c031005364005363005364005638028356005363005356005092028", - "0x2836300535e005047028028363005028361028028363005028007028364", - "0x3101c03163902800c005363005028030028033005363005030005031028", - "0x536300500a00504f02803600536300503c00563a02803c00536300500c", - "0xa03100503600536300503600563802803300536300503300509202800a", - "0x503100527e028028363005007005194028028363005028007028036033", - "0x28046028219005363005028020028040005363005092005031028028363", - "0x536300521d21900735c02821d00536300521d00501b02821d005363005", - "0x563702823100536300522722d00702d02822d005363005028023028227", - "0x536300504000509202804f00536300504f00504f028046005363005231", - "0x2836300502836102804604004f031005046005363005046005638028040", - "0x2863b02809200536300504f00537702804f00b007363005007005272028", - "0xf00536300500f00563c02809200536300509200503302800f005363005", - "0x280283630051c600523102804e1c601003136300500f09202803163d028", - "0x36300501000504f02801300a00736300500a00535602802836300502800b", - "0x2310280283630050280070280140056fa02836300701300563e028010005", - "0x4d00536300500500503102802836300503100508e02802836300500a005", - "0x504d00509202801700536300501000504f0280300053630050280fd028", - "0x280070280286fb00502804d02836100536300503000532c028018005363", - "0x5a202836000536300500500503102802836300501400563f028028363005", - "0x36300536000509202801c00a00736300500a00535602801b005363005028", - "0x310280283630050280070280286fc02836300701b01c00714e028360005", - "0x736300500a00535602835e0053630050285d902835f005363005360005", - "0x286fd02836300735e01f00714e02835f00536300535f00509202801f00a", - "0x536300502856d02802000536300535f005031028028363005028007028", - "0x14e02802000536300502000509202835c00a00736300500a00535602835d", - "0x3630050200050310280283630050280070280286fe02836300735d35c007", - "0x9202835b00a00736300500a00535602802d005363005028640028023005", - "0x50280070280286ff02836300702d35b00714e028023005363005023005", - "0x53560280840053630050283780280c0005363005023005031028028363", - "0x708435900714e0280c00053630050c000509202835900a00736300500a", - "0x6410281a80053630050c0005031028028363005028007028028700028363", - "0x3630051a800509202803200a00736300500a005356028357005363005028", - "0x3102802836300502800702802870102836300735703200714e0281a8005", - "0x53630053560050920283640053630050286420283560053630051a8005", - "0x2836102802836300502800702802870202836300736400a00714e028356", - "0x523102802836300500b00527e02802836300503100508e028028363005", - "0x2800c00536300502802002803300536300535600503102802836300504e", - "0x503c00c00735c02803c00536300503c00501b02803c005363005028703", - "0x2821900536300503604000702d028040005363005028023028036005363", - "0x503300509202801000536300501000504f02821d005363005219005704", - "0x502800702821d03301003100521d00536300521d005705028033005363", - "0x509202822d005363005028706028227005363005356005031028028363", - "0x2802870700502804d02804600536300522d00532c028231005363005227", - "0x480053630051a800503102802836300500a005231028028363005028007", - "0x504700532c028231005363005048005092028047005363005028708028", - "0x282420053630050460050fc028045005363005231005307028046005363", - "0x3102802836300500a00523102802836300502800702802870900502804d", - "0x536300524600509202824900536300502870a0282460053630050c0005", - "0x50fc02824a00536300504500530702824200536300524900532c028045", - "0x523102802836300502800702802870b00502804d02824b005363005242", - "0x2824f00536300502870c02824c00536300502300503102802836300500a", - "0x524a00530702824b00536300524f00532c02824a00536300524c005092", - "0x2800702802870d00502804d02825300536300524b0050fc028252005363", - "0x70e02825600536300502000503102802836300500a005231028028363005", - "0x536300525800532c028252005363005256005092028258005363005028", - "0x2804d0280090053630052530050fc028050005363005252005307028253", - "0x35f00503102802836300500a00523102802836300502800702802870f005", - "0x2805000536300505b00509202805800536300502871002805b005363005", - "0x50090050fc02805900536300505000530702800900536300505800532c", - "0x500a00523102802836300502800702802871100502804d02805c005363", - "0x509202827500536300502871202826c005363005360005031028028363", - "0x736300505c0052ba02805c00536300527500532c02805900536300526c", - "0x36102802836300502800702805e00571402836300727700571302827705c", - "0x8e02802836300504e00523102802836300500b00527e028028363005028", - "0x6000536300505900503102802836300503100508e02802836300505c005", - "0x36300505d00501b02805d00536300502824b02805f005363005028020028", - "0x2d0282bc0053630050280230282af00536300505d05f00735c02805d005", - "0x501000504f0280670053630050420057040280420053630052af2bc007", - "0x5067005363005067005705028060005363005060005092028010005363", - "0x715028306005363005059005031028028363005028007028067060010031", - "0x509202802836300506800508e02800606806903136300505e031010031", - "0x7434700771607106f00736300700605c0690310fb028306005363005306", - "0x36300506f00504f028075005363005306005031028028363005028007028", - "0x71702836100536300507100532c028018005363005075005092028017005", - "0x707734600714e02834604e00736300504e005356028077005363005028", - "0x18005031028028363005028361028028363005028007028028718028363", - "0x7a00536300502871702804300536300536100b00726b028345005363005", - "0x4300518c02834500536300534500509202807a00536300507a005033028", - "0x2808134200771907f07900736300704e07a01703156e028043005363005", - "0x536300507900504f02807d005363005345005031028028363005028007", - "0x503302804300536300504300518c02807d00536300507d005092028079", - "0x3100533e33f34003136300507f04307d07900a71a02807f00536300507f", - "0x4300527e02802836300508100523102802836300502800702833e33f340", - "0x60b02833c00536300502802002833d005363005345005031028028363005", - "0x36300533b33c00735c02833b00536300533b00501b02833b005363005028", - "0x70402833600536300533708c00702d02808c005363005028023028337005", - "0x36300533d00509202834200536300534200504f028335005363005336005", - "0x36300502800702833533d34203100533500536300533500570502833d005", - "0x36300501800503102802836300504e005231028028363005028361028028", - "0x509202833400536300533400532c02833400536300502871b02808a005", - "0x33133200771c0883330073630073613340170310fb02808a00536300508a", - "0x508800b00726b02833000536300508a005031028028363005028007028", - "0x2836f00536300508e08600771d02808e005363005028030028086005363", - "0x533000509202833300536300533300504f02832d00536300536f00571e", - "0x502800702832d33033303100532d00536300532d005705028330005363", - "0x8a00503102802836300500b00527e02802836300533100508e028028363", - "0x1b02832a0053630050282b902832b00536300502802002832c005363005", - "0x36300502802302832900536300532a32b00735c02832a00536300532a005", - "0x2832600536300532700570402832700536300532932800702d028328005", - "0x532600570502832c00536300532c00509202833200536300533200504f", - "0x2836300502836102802836300502800702832632c332031005326005363", - "0x36300504e00523102802836300500b00527e02802836300507400508e028", - "0x50282b902832500536300502802002808b005363005306005031028028", - "0x32300536300532432500735c02832400536300532400501b028324005363", - "0x8500570402808500536300532332000702d028320005363005028023028", - "0x8b00536300508b00509202834700536300534700504f028093005363005", - "0x736300500500525502809308b347031005093005363005093005705028", - "0x2809203100736300503100535602804f00536300500b00571f02800b00a", - "0x2800702800f00572002836300709200563e02804f00536300504f005033", - "0x5033028010005363005028721028028363005007005231028028363005", - "0x36300502800504f0281c600536300501000a00725f028010005363005010", - "0x502800702802872200502804d0280130053630051c600525c02804e005", - "0x310053560280140053630050285a202802836300500f00563f028028363", - "0x36300502800702802872302836300701404d00714e02804d031007363005", - "0x714e0280170310073630050310053560280300053630050285d9028028", - "0x18005363005028725028028363005028007028028724028363007030017", - "0x36300501800563c028360005363005028727028361005363005028726028", - "0x4d02835f00536300536000503302801c00536300536100503302801b005", - "0x2872a02835e005363005028729028028363005028007028028728005028", - "0x2801b00536300535e00563c02802000536300502872b02801f005363005", - "0x501b00572c02835f00536300502000503302801c00536300501f005033", - "0x2802300536300535f00515302835c00536300501c00515302835d005363", - "0x72f02802d00536300502872e02802836300502800702802872d00502804d", - "0x35d00536300502d00563c0280c000536300502873002835b005363005028", - "0x2803163d0280230053630050c000503302835c00536300535b005033028", - "0x35c1a80077310280283630053590052310281a835908403136300535d007", - "0x736300735708400773202835700536300535700532c028357005363005", - "0x7363007023356032031734028028363005028007028364005733356032", - "0x536300500c00a00725f02802836300502800702803603c00773500c033", - "0x525502801300536300504000525c02804e00536300503300504f028040", - "0x53630050285a202822700536300521d00571f02821d219007363005013", - "0x3173402822d00536300522d00503302822700536300522700503302822d", - "0x37c02802836300502800702804704800773604623100736300722d22704e", - "0x504504623103163d02804500536300504500563c028045005363005028", - "0x24a005363005249005074028028363005246005231028249246242031363", - "0x24a24b00732602824b00536300524b00501b02824b005363005028737028", - "0x24c00536300524c00501b02821900536300521900525c02824c005363005", - "0x4f00773102825200536300502873902824f00536300524c219007738028", - "0x36300725324200773202825300536300525300532c028253005363005252", - "0x2800900536300502873b02802836300502800702805000573a258256007", - "0x25600773202805b00536300505b00532c02805b005363005009031007731", - "0x25805803173402802836300502800702805c00573c05905800736300705b", - "0x24f00725f02802836300502800702805e27700773d27526c007363007059", - "0x536300505f06000773e02805f005363005028030028060005363005275", - "0x537d02826c00536300526c00504f0282af00536300505d00573f02805d", - "0x505e0052310280283630050280070282af26c0070052af0053630052af", - "0x50287400282bc00536300502802002802836300524f005251028028363", - "0x670053630050422bc00735c02804200536300504200501b028042005363", - "0x6900574102806900536300506730600702d028306005363005028023028", - "0x6800536300506800537d02827700536300527700504f028068005363005", - "0x523102802836300524f005251028028363005028007028068277007005", - "0x1b02806f005363005028742028006005363005028020028028363005258", - "0x36300502802302807100536300506f00600735c02806f00536300506f005", - "0x2807500536300507400574102807400536300507134700702d028347005", - "0x2807505c00700507500536300507500537d02805c00536300505c00504f", - "0x2802836300503100523102802836300524f005251028028363005028007", - "0x536300534600501b028346005363005028742028077005363005028020", - "0x702d02804300536300502802302834500536300534607700735c028346", - "0x36300505000504f02807900536300507a00574102807a005363005345043", - "0x2836300502800702807905000700507900536300507900537d028050005", - "0x36300503100523102802836300504f005231028028363005047005231028", - "0x36300502874002807f005363005028020028028363005219005251028028", - "0x2808100536300534207f00735c02834200536300534200501b028342005", - "0x534000574102834000536300508107d00702d02807d005363005028023", - "0x533f00536300533f00537d02804800536300504800504f02833f005363", - "0x4f00523102802836300503600523102802836300502800702833f048007", - "0x2802002802836300500a005251028028363005031005231028028363005", - "0x2833d00536300533d00501b02833d00536300502874002833e005363005", - "0x33c33b00702d02833b00536300502802302833c00536300533d33e00735c", - "0x3c00536300503c00504f02808c005363005337005741028337005363005", - "0x23102802836300502800702808c03c00700508c00536300508c00537d028", - "0x2802836300500a00525102802836300503100523102802836300504f005", - "0x335005363005028742028336005363005028020028028363005023005231", - "0x2802302808a00536300533533600735c02833500536300533500501b028", - "0x536300533300574102833300536300508a33400702d028334005363005", - "0x36400700508800536300508800537d02836400536300536400504f028088", - "0x9200774304f00b007363007005028007005028028363005028361028088", - "0x503100574402801000536300504f00503102802836300502800702800f", - "0x4e0313630071c600b0077450280100053630050100050920281c6005363", - "0x1700536300501000503102802836300502800702803004d007746014013", - "0x1700509202836100536300504e00504f028018005363005014005747028", - "0x1c00536300501800574902801b005363005013005748028360005363005", - "0x35f00536300501000503102802836300502800702802874a00502804d028", - "0x504d00504f02801f00536300535e00574b02835e005363005028030028", - "0x2801b00536300503000574802836000536300535f005092028361005363", - "0x701c00574c02802000536300501b0051b002801c00536300501f005749", - "0x2300536300536000503102802836300502800702835c00574d35d005363", - "0x2300a74f02802300536300502300509202802d00536300535d00574e028", - "0x283630050280070283571a83590317500840c035b03136300702d00a007", - "0x36100504f02803200536300535b00503102835b00536300535b005092028", - "0xc00053630050c00050c0028032005363005032005092028361005363005", - "0x36100b24e0280840053630050840052500280200053630050200051b2028", - "0x2800702800c03336435600a00500c03336435600a3630050840200c0032", - "0x31028359005363005359005092028028363005020005243028028363005", - "0x36300535703600702d02803600536300502802302803c005363005359005", - "0x9202836100536300536100504f028219005363005040005751028040005", - "0x3630052190057520281a80053630051a80050c002803c00536300503c005", - "0x36300535c0050470280283630050280070282191a803c36100a005219005", - "0x2003175302822700536300502803002821d005363005360005031028028", - "0x36300536100504f02823100536300522d00575402822d00536300522700a", - "0x7520280070053630050070050c002821d00536300521d005092028361005", - "0x75502802836300502800702823100721d36100a005231005363005231005", - "0x4600536300500f00503102802836300503100524302802836300500a005", - "0x36300504700501b028047005363005028046028048005363005028020028", - "0x2d02824200536300502802302804500536300504704800735c028047005", - "0x509200504f028249005363005246005751028246005363005045242007", - "0x280070053630050070050c0028046005363005046005092028092005363", - "0x2802836300502836102824900704609200a005249005363005249005752", - "0x33e0281c601000f03136300509200575702809200b00736300500b005756", - "0x36300501300522402801304e00736300500f0052200280283630051c6005", - "0x2802836300503000530a02803004d00736300501400519c028014013007", - "0x2800702801800575902836300701700575802801700536300504d0052f1", - "0x1b36000736300501300519c028361005363005005005031028028363005", - "0x536100509202801c00536300501b0052f102802836300536000530a028", - "0x2802836300502800702835f00575a02836300701c005758028361005363", - "0x2836300501000526802802836300500a00526802802836300504e005268", - "0x36300536100503102802836300500b00575c02802836300504f00575b028", - "0x4d02802000536300535e00509202801f00536300502800504f02835e005", - "0x503102802836300535f00575e02802836300502800702802875d005028", - "0x2802875f00502804d02835c00536300535d00509202835d005363005361", - "0x2802836300501300526802802836300501800575e028028363005028007", - "0x504e00519c02835c005363005023005092028023005363005005005031", - "0x3590840073630050c000519c0280c000536300502876002835b02d007363", - "0x3080283573590073630053590051740281a835b00736300535b005174028", - "0x3640077613560320073630073571a8028031175028357005363005357005", - "0x36300535c00503102802836300535600530a028028363005028007028033", - "0x14b02800c00536300500c00509202803200536300503200504f02800c005", - "0x36300500a00526802802836300502800702802876202836300735935b007", - "0x500b00575c02802836300504f00575b028028363005010005268028028", - "0xc00503102802836300502d00530a02802836300508400530a028028363", - "0x2000536300503c00509202801f00536300503200504f02803c005363005", - "0x3600536300500c00503102802836300502800702802875d00502804d028", - "0x32031175028036005363005036005092028084005363005084005308028", - "0x530a02802836300502800702822721d00776321904000736300708402d", - "0x75b02802836300501000526802802836300500a005268028028363005219", - "0x22d00536300503600503102802836300500b00575c02802836300504f005", - "0x502876402802000536300522d00509202801f00536300504000504f028", - "0x28048005363005046005766028046005363005231005765028231005363", - "0x50310050c0028007005363005007005301028047005363005048005381", - "0x702804703100702001f00b005047005363005047005767028031005363", - "0x2804500536300503600503102802836300522700530a028028363005028", - "0x76800502804d02824600536300504500509202824200536300521d00504f", - "0x36300535b00530a02802836300503300530a028028363005028007028028", - "0x535900530a02802836300502d00530a02802836300508400530a028028", - "0x9202824200536300536400504f02824900536300535c005031028028363", - "0x524b00522402824b24a007363005010005220028246005363005249005", - "0x2836300525200530a02825224f00736300524c00519c02824c24b007363", - "0x36300725300575802802836300502800b02825300536300524f0052f1028", - "0x19c028258005363005246005031028028363005028007028256005769028", - "0x3630050090052f102802836300505000530a02800905000736300524b005", - "0x5800576a02836300705b00575802825800536300525800509202805b005", - "0x2802836300524a005268028028363005028361028028363005028007028", - "0x2836300500a00526802802836300500b00575c02802836300504f00575b", - "0x5900509202805c00536300524200504f028059005363005258005031028", - "0x5800575e02802836300502800702802876b00502804d02826c005363005", - "0x28277005363005275005092028275005363005258005031028028363005", - "0x26802802836300525600575e02802836300502800702802876c00502804d", - "0x536300505e00509202805e00536300524600503102802836300524b005", - "0x502876002805f06000736300524a00519c028028363005028361028277", - "0x5f00736300505f0051740282bc2af00736300505d00519c02805d005363", - "0x1750280670053630050670053080280672bc0073630052bc005174028042", - "0x2802836300502800702800606800776d069306007363007067042242031", - "0x36300530600504f02806f00536300527700503102802836300506900530a", - "0x2876e0283630072bc05f00714b02806f00536300506f005092028306005", - "0x2836300500b00575c02802836300504f00575b028028363005028007028", - "0x36300506000530a0280283630052af00530a02802836300500a005268028", - "0x509202805c00536300530600504f02807100536300506f005031028028", - "0x503102802836300502800702802876b00502804d02826c005363005071", - "0x53630053470050920282af0053630052af00530802834700536300506f", - "0x502800702834607700776f0750740073630072af060306031175028347", - "0xb00575c02802836300504f00575b02802836300507500530a028028363", - "0x4f02834500536300534700503102802836300500a005268028028363005", - "0x536300502876402826c00536300534500509202805c005363005074005", - "0x538102807900536300507a00576602807a005363005043005765028043", - "0x53630050310050c002800700536300500700530102807f005363005079", - "0x502800702807f03100726c05c00b00507f00536300507f005767028031", - "0x504f02834200536300534700503102802836300534600530a028028363", - "0x2802877000502804d02807d005363005342005092028081005363005077", - "0x2802836300505f00530a02802836300500600530a028028363005028007", - "0x283630052bc00530a02802836300506000530a0280283630052af00530a", - "0x34000509202808100536300506800504f028340005363005277005031028", - "0xa00536300500a0051820280310053630050310050c002807d005363005", - "0x33f00a36300500b00a03107d08100b77102800b00536300500b0051d6028", - "0x2836300502800702833700577333b00536300733c00577202833c33d33e", - "0x8c00509202833600536300533b00577402808c00536300533e005031028", - "0x36300502800702808a0057753350053630073360051c402808c005363005", - "0x509202833f00536300533f00504f02833400536300508c005031028028", - "0x536300533d0050c0028007005363005007005301028334005363005334", - "0xb36300533533d00733433f00b77702833500536300533500577602833d", - "0x502800702808e005778086005363007330005382028330331332088333", - "0x77a02832d00536300508600577902836f005363005088005031028028363", - "0x36300532d00577a02802836300532c00575b02832b32c00736300504f005", - "0x77b02832800536300532b00577b02802836300532a00575b02832932a007", - "0x3630053270051c60283260053630053280051c6028327005363005329005", - "0x2832500536300532500501b02832500536300508b32600732602808b005", - "0x2800702832400577c02836300732500534202836f00536300536f005092", - "0x77d02832000536300502803002832300536300536f005031028028363005", - "0x363005093005381028093005363005085005766028085005363005320005", - "0x30102832300536300532300509202833300536300533300504f028095005", - "0x3630050950057670283310053630053310050c0028332005363005332005", - "0x532400534002802836300502800702809533133232333300b005095005", - "0x576502809800536300502877e02831f00536300536f005031028028363", - "0x536300509600538102809600536300531e00576602831e005363005098", - "0x530102831f00536300531f00509202833300536300533300504f02831d", - "0x536300531d0057670283310053630053310050c0028332005363005332", - "0x36300504f00575b02802836300502800702831d33133231f33300b00531d", - "0x504f02831a00536300508e00577f02831c005363005088005031028028", - "0x536300533200530102831c00536300531c005092028333005363005333", - "0x33300b00531a00536300531a0057670283310053630053310050c0028332", - "0x575b02802836300508a00504702802836300502800702831a33133231c", - "0x2831800536300502802002831900536300508c00503102802836300504f", - "0x531731800735c02831700536300531700501b02831700536300502824b", - "0x2831400536300531631500702d028315005363005028023028316005363", - "0x531900509202833f00536300533f00504f02831300536300531400577f", - "0x2833d00536300533d0050c0028007005363005007005301028319005363", - "0x2836300502800702831333d00731933f00b005313005363005313005767", - "0x533700577f02831200536300533e00503102802836300504f00575b028", - "0x2831200536300531200509202833f00536300533f00504f028311005363", - "0x531100576702833d00536300533d0050c0028007005363005007005301", - "0x2809200a00736300500a00522402831133d00731233f00b005311005363", - "0x519c0281c601000736300501000522402801000f007363005092005220", - "0x536300504e0052f102802836300501300530a02801304e0073630051c6", - "0x503102802836300502800702804d005780028363007014005758028014", - "0x36300501700530a02801801700736300501000519c028030005363005005", - "0x57580280300053630050300050920283610053630050180052f1028028", - "0x2836300500f005268028028363005028007028360005781028363007361", - "0x36300500b00526802802836300504f00520602802836300500a005268028", - "0x2800504f02801b005363005030005031028028363005031005268028028", - "0x702802878200502804d02835f00536300501b00509202801c005363005", - "0x2835e00536300503000503102802836300536000575e028028363005028", - "0x2802836300502800702802878300502804d02801f00536300535e005092", - "0x536300500500503102802836300501000526802802836300504d00575e", - "0x78402835c35d00736300500f00519c02801f005363005020005092028020", - "0x36300535c00517402835b02d00736300502300519c028023005363005028", - "0x8400536300508400530802808435b00736300535b0051740280c035c007", - "0x3630050280070280323570077851a83590073630070840c0028031175028", - "0x35900504f02835600536300501f0050310280283630051a800530a028028", - "0x2836300735b35c00714b028356005363005356005092028359005363005", - "0x504f00520602802836300500a005268028028363005028007028028786", - "0x2d00530a02802836300503100526802802836300500b005268028028363", - "0x4f02836400536300535600503102802836300535d00530a028028363005", - "0x2878200502804d02835f00536300536400509202801c005363005359005", - "0x36300502d005308028033005363005356005031028028363005028007028", - "0xc00736300702d35d35903117502803300536300503300509202802d005", - "0x26802802836300503c00530a02802836300502800702804003600778703c", - "0x2802836300500b00526802802836300504f00520602802836300500a005", - "0x36300500c00504f028219005363005033005031028028363005031005268", - "0x30702821d00536300501c00539002835f00536300521900509202801c005", - "0x30a02802836300502800702802878800502804d02822700536300535f005", - "0x536300503600504f02822d005363005033005031028028363005040005", - "0x36300502800702802878900502804d02804600536300522d005092028231", - "0x502d00530a02802836300535c00530a02802836300503200530a028028", - "0x1f00503102802836300535b00530a02802836300535d00530a028028363", - "0x4600536300504800509202823100536300535700504f028048005363005", - "0x22402824204500736300504700522002804700b00736300500b005224028", - "0x24a00530a02824a24900736300524600519c028246242007363005242005", - "0x578a02836300724b00575802824b0053630052490052f1028028363005", - "0x524200519c02824f00536300504600503102802836300502800702824c", - "0x282560053630052530052f102802836300525200530a028253252007363", - "0x2800702825800578b02836300725600575802824f00536300524f005092", - "0x3002805000536300524f005031028028363005045005268028028363005", - "0x536300523100504f02805b00536300500900533f028009005363005028", - "0x2804d02805c00536300505b00507d028059005363005050005092028058", - "0x24f00503102802836300525800575e02802836300502800702802878c005", - "0x702802878d00502804d02827500536300526c00509202826c005363005", - "0x3102802836300524200526802802836300524c00575e028028363005028", - "0x36300504500519c028275005363005277005092028277005363005046005", - "0x282af05d00736300505f00519c02805f00536300502878402806005e007", - "0x53080280422af0073630052af0051740282bc060007363005060005174", - "0x6806900778e3060670073630070422bc231031175028042005363005042", - "0x536300527500503102802836300530600530a028028363005028007028", - "0x714b02800600536300500600509202806700536300506700504f028006", - "0x2836300505d00530a02802836300502800702802878f0283630072af060", - "0x36300502803002806f00536300500600503102802836300505e00530a028", - "0x9202805800536300506700504f02834700536300507100533f028071005", - "0x2878c00502804d02805c00536300534700507d02805900536300506f005", - "0x36300505d005308028074005363005006005031028028363005028007028", - "0x7500736300705d05e06703117502807400536300507400509202805d005", - "0x3102802836300507700530a028028363005028007028345346007790077", - "0x536300507a00533f02807a005363005028030028043005363005074005", - "0x507d02805900536300504300509202805800536300507500504f028079", - "0x530a02802836300502800702802878c00502804d02805c005363005079", - "0x2834200536300502803002807f005363005074005031028028363005345", - "0x507f00509202805800536300534600504f028081005363005342005081", - "0x2800702802878c00502804d02805c00536300508100507d028059005363", - "0x530a02802836300506000530a02802836300506800530a028028363005", - "0x310280283630052af00530a02802836300505e00530a02802836300505d", - "0x536300534000508102834000536300502803002807d005363005275005", - "0x507d02805900536300507d00509202805800536300506900504f02833f", - "0x536300533e00507d02833e00536300505c00533c02805c00536300533f", - "0x4702802836300502800702833c00579133d00536300733e0052cd02833e", - "0x33700536300502879202833b00536300505900503102802836300533d005", - "0x509202808c00536300508c00579402808c337007363005337005793028", - "0x8833333408a3353361c636300708c00b05803179502833b00536300533b", - "0x533b00503102802836300502800702832d36f08e031796086330331332", - "0x536300533032b00728802832b00536300508633600728802832c005363", - "0x2832800536300533232900728802832900536300533132a00728802832a", - "0x7288028326005363005333327007288028327005363005088328007288", - "0x533500579702832500536300508a08b00728802808b005363005334326", - "0x2803100536300503100518202832500536300532500504f028324005363", - "0x325031798028323005363005323005182028323324007363005324005224", - "0x93005794028093337007363005337005793028085320007363005323031", - "0x31c31d09631e09831f09500f363005093085320031799028093005363005", - "0x728802831900536300531a09500728802802836300531f00579a02831a", - "0x9631700728802831700536300531d31800728802831800536300531c319", - "0x536300531500504f02831500536300531e316007288028316005363005", - "0x18202831400536300531400518202831400a00736300500a005224028315", - "0x5794028312313007363005324314315031798028324005363005324005", - "0x30b0a930c30e30f31100f363005337312313031799028337005363005337", - "0x28802830a0053630050ac31100728802802836300530f00579a0280ac0b0", - "0xb40072880280b400536300530b3080072880283080053630050b030a007", - "0x536300502879b02830500536300530c0b60072880280b60053630050a9", - "0xb900518202832c00536300532c00509202830300536300502879c0280b9", - "0x30500536300530500504f0283030053630053030051820280b9005363005", - "0x70280bf2fe2ff03179d3003013020313630073030b900732c00a20b028", - "0x2fd005363005302005031028302005363005302005092028028363005028", - "0x2fd0050920283010053630053010050c0028300005363005300005208028", - "0x3630050280070282fb00579e2fc0053630073000052070282fd005363005", - "0xa79f0280510053630050510050920280510053630052fd005031028028", - "0x3630050280070280c738f0dc0317a038d38c38b0313630070982fc301051", - "0x50920280c600536300538b00503102838b00536300538b005092028028", - "0x30e04f38c0c600a79f02838d00536300538d0055680280c60053630050c6", - "0x50920280283630050280070283073902fa0317a10cf0cb0c9031363007", - "0x53630053910050920283910053630050c90050310280c90053630050c9", - "0x2f40313630070cf38d0cb39100a7a20280cf0053630050cf005568028391", - "0x53630052f40050920280283630050280070282f13920d50317a32f30d4", - "0x55680282f00053630052f00050920282f00053630052f40050310282f4", - "0x317a42e52e70da2ea00a3630072f30d42f00311fd0282f30053630052f3", - "0x2ea0050920280283630052e50052680280283630050280070280db2e80d2", - "0x2e20073630052e70052200282ef0053630052ea0050310282ea005363005", - "0x52680280df2e000736300500a0052200280283630052e20052680282e1", - "0x2e10073630052e10052240282e10053630052e10051820280283630052e0", - "0x52240280283630052ec00530a0282ec0e10073630052ee00519c0282ee", - "0x52ed00530a0282ed0e30073630052eb00519c0282eb0df0073630050df", - "0xc00282d60053630050e30052f10282de0053630050e10052f1028028363", - "0x72d62de00714b0282ef0053630052ef0050920280da0053630050da005", - "0x52680280283630052e10052680280283630050280070280287a5028363", - "0x282d30053630050280300282d80053630052ef0050310280283630050df", - "0x52d200507d0280e90053630052d80050920282d20053630052d300533f", - "0x52ef0050310280283630050280070280287a600502804d0282d0005363", - "0x280283630052cd00530a0282ca2cd0073630052e100519c0282ce005363", - "0x52ca0052f10280283630050ec00530a0280f00ec0073630050df00519c", - "0x282ce0053630052ce0050920282c60053630050f00052f10282c9005363", - "0x52ce0050310280283630050280070280287a70283630072c62c900714b", - "0x920282c30053630052c400533f0282c40053630050280300282c5005363", - "0x287a600502804d0282d00053630052c300507d0280e90053630052c5005", - "0x53630050280300282c20053630052ce005031028028363005028007028", - "0x507d0280e90053630052c20050920282be0053630052c10050810282c1", - "0x53630050f80057a90280f80053630052d00057a80282d00053630052be", - "0x50c00280e90053630050e900509202830500536300530500504f0280fa", - "0x280fa0da0e930500a0050fa0053630050fa0057aa0280da0053630050da", - "0xd20053630050d200509202802836300500a005268028028363005028007", - "0xdb2bb00702d0282bb0053630050280230282bd0053630050d2005031028", - "0x30500536300530500504f0280fc0053630052ba0057ab0282ba005363005", - "0xfc0057aa0282e80053630052e80050c00282bd0053630052bd005092028", - "0xa0052680280283630050280070280fc2e82bd30500a0050fc005363005", - "0x280fe0053630050d50050310280d50053630050d5005092028028363005", - "0x50fb0057ab0280fb0053630052f10fd00702d0280fd005363005028023", - "0x280fe0053630050fe00509202830500536300530500504f0282b9005363", - "0x3920fe30500a0052b90053630052b90057aa0283920053630053920050c0", - "0x36300538d00520602802836300500a0052680280283630050280070282b9", - "0x280230282b80053630052fa0050310282fa0053630052fa005092028028", - "0x53630051060057ab02810600536300530710400702d028104005363005", - "0x50c00282b80053630052b800509202830500536300530500504f028105", - "0x281053902b830500a0051050053630051050057aa028390005363005390", - "0x2802836300504f00520602802836300500a005268028028363005028007", - "0x3630050dc0050310280dc0053630050dc00509202802836300530e005268", - "0x7ab0282b60053630050c72b700702d0282b7005363005028023028103005", - "0x36300510300509202830500536300530500504f02810c0053630052b6005", - "0xa00510c00536300510c0057aa02838f00536300538f0050c0028103005", - "0x52680280283630052fb00504702802836300502800702810c38f103305", - "0x26802802836300530e00526802802836300504f00520602802836300500a", - "0x10b00536300502802002810d0053630052fd005031028028363005098005", - "0x10e10b00735c02810e00536300510e00501b02810e00536300502824b028", - "0x1140053630053010050c00282b400536300510d005092028025005363005", - "0x283630050280070280287ac00502804d02811600536300502500522d028", - "0x36300530e00526802802836300504f00520602802836300500a005268028", - "0x2ff0050310282ff0053630052ff005092028028363005098005268028028", - "0x1140053630052fe0050c00282b4005363005115005092028115005363005", - "0x11611300702d0281130053630050280230281160053630050bf00522d028", - "0x30500536300530500504f0281200053630052b30057ab0282b3005363005", - "0x1200057aa0281140053630051140050c00282b40053630052b4005092028", - "0xa0052680280283630050280070281201142b430500a005120005363005", - "0x57ad02802836300503100526802802836300504f005206028028363005", - "0x536300532d08e00728802811c00536300533b005031028028363005337", - "0x2824b0281220053630050280200282b200536300536f11b00728802811b", - "0x536300512412200735c02812400536300512400501b028124005363005", - "0x57ab0282ad0053630052b02ae00702d0282ae0053630050280230282b0", - "0x536300511c0050920282b20053630052b200504f0282ac0053630052ad", - "0x2b200a0052ac0053630052ac0057aa0280070053630050070050c002811c", - "0xa00526802802836300533c0050470280283630050280070282ac00711c", - "0x526802802836300500b00526802802836300504f005206028028363005", - "0x21d00536300505800504f028127005363005059005031028028363005031", - "0x512900533f028129005363005028030028227005363005127005092028", - "0x282ab0053630051260057a90281260053630051280057a8028128005363", - "0x722721d00a0052ab0053630052ab0057aa0280070053630050070050c0", - "0xb00a03100a3630050070057af0280070280073630050280057ae0282ab", - "0x504f0057b002802836300500b0057b002802836300500a0057b002804f", - "0x7ae02800f0053630050920057b20280920053630050310057b1028028363", - "0x7b002801401304e1c600a3630050100057af028010005007363005005005", - "0x280283630050140057b00280283630050130057b002802836300504e005", - "0x3000f00732602803000536300504d0057b202804d0053630051c60057b1", - "0x7b302836300701700534202801700536300501700501b028017005363005", - "0x57af0283610280073630050280057ae028028363005028007028018005", - "0x501c0057b00280283630053600057b002835f01c01b36000a363005361", - "0x57b202835e00536300501b0057b102802836300535f0057b0028028363", - "0x3630050200057af0280200050073630050050057ae02801f00536300535e", - "0x280283630050230057b002802836300535d0057b002802d02335c35d00a", - "0x36300535b0057b202835b00536300535c0057b102802836300502d0057b0", - "0x2808400536300508400501b0280840053630050c001f0073260280c0005", - "0x50280057ae0280283630050280070283590057b4028363007084005342", - "0x53570057b002836435603235700a3630051a80057af0281a8028007363", - "0x3560057b10280283630053640057b00280283630050320057b0028028363", - "0x50073630050050057ae02800c0053630050330057b2028033005363005", - "0x280283630050360057b002821d21904003600a36300503c0057af02803c", - "0x53630052190057b102802836300521d0057b00280283630050400057b0", - "0x1b02823100536300522d00c00732602822d0053630052270057b2028227", - "0x50280070280460057b5028363007231005342028231005363005231005", - "0x283630050480057b002824204504704800a3630050280057af028028363", - "0x3630052420057b10280283630050450057b00280283630050470057b0028", - "0x24c24b24a00a3630050050057af0282490053630052460057b2028246005", - "0x524c0057b002802836300524b0057b002802836300524a0057b002824f", - "0x3260282530053630052520057b202825200536300524f0057b1028028363", - "0x725600534202825600536300525600501b028256005363005253249007", - "0x810280500053630050280300280283630050280070282580057b6028363", - "0x2800702800900500500900536300500900507d028009005363005050005", - "0x533f02805b005363005028030028028363005258005340028028363005", - "0x502800702805800500505800536300505800507d02805800536300505b", - "0x280055cb0280283630050050055cb028028363005046005340028028363", - "0x53590053400280283630050280070280287b700502804d028028363005", - "0x502804d0280283630050280055cb0280283630050050055cb028028363", - "0x50050055cb0280283630050180053400280283630050280070280287b7", - "0x5900533f0280590053630050280300280283630050280055cb028028363", - "0x503100535602805c00500505c00536300505c00507d02805c005363005", - "0x2836300502800702800b0057b802836300700a00563e02800a031007363", - "0x536300502803002802836300503100523102802836300500700501f028", - "0x4f02800f0053630050920057ba02809200536300504f0050077b902804f", - "0x702800f02800700500f00536300500f0057bb028028005363005028005", - "0x1c60100313630050050057bc02802836300500b00563f028028363005028", - "0x2801403100736300503100535602801304e00736300504e00535602804e", - "0x283630050280070280180170077bd03004d007363007014013028031734", - "0x3610050330283600300073630050300053560283610053630050285d1028", - "0x2835e35f0077be01c01b00736300736136004d03156e028361005363005", - "0x2801f0053630050285d102802836300501c005231028028363005028007", - "0x2000714e02801b00536300501b00504f028020030007363005030005356", - "0x280283630050310052310280283630050280070280287bf02836300701f", - "0x35d03001b03156e02835d00536300535d00503302835d0053630050285d1", - "0x36300502871702802836300502800702835b02d0077c002335c007363007", - "0x2835c00536300535c00504f0280840230073630050230053560280c0005", - "0x3630050287170280283630050280070280287c10283630070c008400714e", - "0x283590053630053590050330281a8023007363005023005356028359005", - "0x283630050280070283643560077c20323570073630073591a835c03156e", - "0x3c0317c300c0330073630070073570070ac028028363005032005231028", - "0x503300504f02821900536300502827a028028363005028007028040036", - "0x2822d00536300521900530802822700536300500c00530802821d005363", - "0x2821d00536300503c00504f0280283630050280070280287c400502804d", - "0x36300502871702822d005363005036005308028227005363005040005308", - "0x28231005363005231005033028046023007363005023005356028231005", - "0x283630050280070282420450077c504704800736300723104621d03156e", - "0x480077c602804700536300504700503302804800536300504800504f028", - "0x2800702824b0057c824a0053630072490057c7028249246007363005047", - "0x3136300524c22d2460317ca02824c00536300524a0057c9028028363005", - "0x282580053630052270050b90282560053630052530050b902825325224f", - "0x36300504e0053560280090053630050285d10280500053630052520050b9", - "0x736300705b00924f03156e02800900536300500900503302805b04e007", - "0x2827500536300502821a02802836300502800702826c05c0077cb059058", - "0x2770072ee02827700536300527700501b028277005363005275256007221", - "0x5900736300505900535602806000536300502871702805e005363005258", - "0x3156e02805e00536300505e00501b02806000536300506000503302805f", - "0x2310280283630050280070280422bc0077cc2af05d00736300706005f058", - "0x670053630050670050330280670053630050287170280283630052af005", - "0x3630050280070280060680077cd06930600736300706705905d03156e028", - "0x77c602806900536300506900503302830600536300530600504f028028", - "0x70280740057ce3470053630070710057c702807106f007363005069306", - "0x770053630050750057cf0280750053630053470057c9028028363005028", - "0x34534600722102834500536300502821a0283460053630050770050b9028", - "0x7900536300504300501b02807a00536300506f00504f028043005363005", - "0x280283630050100057d10280283630050280070280287d000502804d028", - "0x2836300505e00501f02802836300504e005231028028363005023005231", - "0x3630050740050770280283630051c600501f02802836300505000501f028", - "0x22d02808100536300506f00504f02802836300507f00534602834207f007", - "0x2310280283630050280070280287d200502804d02807d005363005342005", - "0x280283630050230052310280283630050100057d1028028363005006005", - "0x283630051c600501f02802836300505e00501f02802836300504e005231", - "0x536300502860b02834000536300502802002802836300505000501f028", - "0x4f02833e00536300533f34000735c02833f00536300533f00501b02833f", - "0x287d200502804d02807d00536300533e00522d028081005363005068005", - "0x53630052bc00504f028028363005042005231028028363005028007028", - "0x2833c33d0073630050592bc0077c60280590053630050590050330282bc", - "0x33b0057c90280283630050280070283370057d333b00536300733c0057c7", - "0x3350053630053360050b902833600536300508c0057cf02808c005363005", - "0x1c600722102807900536300533500501b02807a00536300533d00504f028", - "0x36300508a0500072ee02808a00536300508a00501b02808a005363005079", - "0x8833300736300733407a0077d402833400536300533400501b028334005", - "0x5d20283310053630050880100077d60280283630050280070283320057d5", - "0x3300055d302808600536300533300504f02833000536300504e05e331031", - "0x100057d10280283630050280070280287d700502804d02808e005363005", - "0x501f02802836300504e005231028028363005023005231028028363005", - "0x1b02832d00536300502824b02836f00536300502802002802836300505e", - "0x533200504f02832c00536300532d36f00735c02832d00536300532d005", - "0x280070280287d800502804d02832a00536300532c00522d02832b005363", - "0x52310280283630050230052310280283630050100057d1028028363005", - "0x1f02802836300505000501f02802836300505e00501f02802836300504e", - "0x3630053290053460283283290073630053370050770280283630051c6005", - "0x539002807d00536300532800522d02808100536300533d00504f028028", - "0x280287d800502804d02832a00536300507d0057d902832b005363005081", - "0x280283630050100057d102802836300526c005231028028363005028007", - "0x2836300525600501f02802836300504e005231028028363005023005231", - "0x36300525800501f02802836300505000501f0280283630051c600501f028", - "0x532600501b02832600536300502860b028327005363005028020028028", - "0x32b00536300505c00504f02808b00536300532632700735c028326005363", - "0x283630050280070280287d800502804d02832a00536300508b00522d028", - "0x36300504e0052310280283630050230052310280283630050100057d1028", - "0x522d00530a0280283630051c600501f02802836300522700530a028028", - "0x4f02802836300532500534602832432500736300524b005077028028363", - "0x287d800502804d02832a00536300532400522d02832b005363005246005", - "0x283630050100057d1028028363005242005231028028363005028007028", - "0x36300522700530a02802836300504e005231028028363005023005231028", - "0x36300502802002802836300522d00530a0280283630051c600501f028028", - "0x735c02832000536300532000501b02832000536300502860b028323005", - "0x36300508500522d02832b00536300504500504f028085005363005320323", - "0x7da02809500536300532a09300702d02809300536300502802302832a005", - "0x36300531f0057bb02832b00536300532b00504f02831f005363005095005", - "0x2802836300536400523102802836300502800702831f32b00700531f005", - "0x2836300502800702831c31d0960317db31e0980073630070073560070ac", - "0x531e00530802831900536300509800504f02831a00536300502827a028", - "0x280070280287dc00502804d02831700536300531a005308028318005363", - "0x2831800536300531c00530802831900536300509600504f028028363005", - "0x502300535602831900536300531900504f02831700536300531d005308", - "0x73630053163190077c6028316005363005316005033028316023007363", - "0x280283630050280070283120057dd3130053630073140057c7028314315", - "0x2830c30e30f0313630053113183150317ca0283110053630053130057c9", - "0x36300502300535602830b0053630050287170280a90053630053170050b9", - "0x73630070b030b30f03156e02830b00536300530b0050330280b0023007", - "0xac0053630050ac00504f0280283630050280070280b43080077de30a0ac", - "0x7c70283050b600736300530a0ac0077c602830a00536300530a005033028", - "0x50b90057c90280283630050280070283030057df0b9005363007305005", - "0x283000053630053010050b90283010053630053020057cf028302005363", - "0x3630050285d10282fe00536300530c0050b90282ff00536300530e0050b9", - "0x280bf0053630050bf0050330282fd04e00736300504e0053560280bf005", - "0x2836300502800702838b0510077e02fb2fc0073630072fd0bf0b603156e", - "0x72ee02838c00536300538c00501b02838c0053630053000a9007221028", - "0x73630052fb0053560280dc00536300502871702838d0053630052ff38c", - "0x56e02838d00536300538d00501b0280dc0053630050dc00503302838f2fb", - "0x280283630050280070280cb0c90077e10c60c70073630070dc38f2fc031", - "0x53630050cf0050330280cf0053630050287170280283630050c6005231", - "0x50280070283913070077e23902fa0073630070cf2fb0c703156e0280cf", - "0x7c60283900053630053900050330282fa0053630052fa00504f028028363", - "0x280d50057e32f30053630070d40057c70280d42f40073630053902fa007", - "0x53630053920057cf0283920053630052f30057c9028028363005028007", - "0x2f00072210282ea00536300502821a0282f00053630052f10050b90282f1", - "0x53630050da00501b0282e70053630052f400504f0280da0053630052ea", - "0x283630050100057d10280283630050280070280287e400502804d0282e5", - "0x3630052fe00501f02802836300504e005231028028363005023005231028", - "0x50d50050770280283630051c600501f02802836300538d00501f028028", - "0x280db0053630052f400504f0280283630050d20053460282e80d2007363", - "0x280283630050280070280287e500502804d0282ef0053630052e800522d", - "0x283630050230052310280283630050100057d1028028363005391005231", - "0x3630051c600501f0280283630052fe00501f02802836300504e005231028", - "0x36300502860b0282e200536300502802002802836300538d00501f028028", - "0x282e00053630052e12e200735c0282e10053630052e100501b0282e1005", - "0x7e500502804d0282ef0053630052e000522d0280db00536300530700504f", - "0x3630050c900504f0280283630050cb005231028028363005028007028028", - "0x2ee0df0073630052fb0c90077c60282fb0053630052fb0050330280c9005", - "0x57c90280283630050280070282ec0057e60e10053630072ee0057c7028", - "0x53630050e30050b90280e30053630052eb0057cf0282eb0053630050e1", - "0x72210282e50053630052ed00501b0282e70053630050df00504f0282ed", - "0x52de38d0072ee0282de0053630052de00501b0282de0053630052e51c6", - "0x2d80073630072d62e70077d40282d60053630052d600501b0282d6005363", - "0x280e90053630052d30100077d60280283630050280070282d20057e72d3", - "0x55d30280860053630052d800504f0282d000536300504e2fe0e90315d2", - "0x536300508e0057e80282ce00536300508600539002808e0053630052d0", - "0x283630050100057d10280283630050280070280287e900502804d0282cd", - "0x3630052fe00501f02802836300504e005231028028363005023005231028", - "0x50ec00501b0280ec00536300502824b0282ca005363005028020028028", - "0x2c90053630052d200504f0280f00053630050ec2ca00735c0280ec005363", - "0x283630050280070280287ea00502804d0282c60053630050f000522d028", - "0x36300504e0052310280283630050230052310280283630050100057d1028", - "0x51c600501f02802836300538d00501f0280283630052fe00501f028028", - "0x4f0280283630052c50053460282c42c50073630052ec005077028028363", - "0x3630050db0053900282ef0053630052c400522d0280db0053630050df005", - "0x50280070280287ea00502804d0282c60053630052ef0057d90282c9005", - "0x230052310280283630050100057d102802836300538b005231028028363", - "0x501f0280283630052fe00501f02802836300504e005231028028363005", - "0x1f02802836300530000501f0280283630050a900501f0280283630051c6", - "0x282c200536300502860b0282c30053630050280200280283630052ff005", - "0x5100504f0282c10053630052c22c300735c0282c20053630052c200501b", - "0x70280287ea00502804d0282c60053630052c100522d0282c9005363005", - "0x2310280283630050230052310280283630050100057d1028028363005028", - "0x280283630050a900501f0280283630051c600501f02802836300504e005", - "0x736300530300507702802836300530c00530a02802836300530e00530a", - "0x522d0282c90053630050b600504f0280283630052be0053460280f82be", - "0x52310280283630050280070280287ea00502804d0282c60053630050f8", - "0x2310280283630050230052310280283630050100057d10280283630050b4", - "0x280283630051c600501f02802836300530c00530a02802836300504e005", - "0xfa00536300502802002802836300530e00530a0280283630050a900501f", - "0x2bd0fa00735c0282bd0053630052bd00501b0282bd00536300502860b028", - "0x2c60053630052bb00522d0282c900536300530800504f0282bb005363005", - "0x280283630050100057d10280283630050280070280287ea00502804d028", - "0x2836300531700530a02802836300504e005231028028363005023005231", - "0x36300531200507702802836300531800530a0280283630051c600501f028", - "0x22d0282c900536300531500504f0280283630052ba0053460280fc2ba007", - "0x3630052c60fe00702d0280fe0053630050280230282c60053630050fc005", - "0x7bb0282c90053630052c900504f0280fb0053630050fd0057da0280fd005", - "0x35c0070ac0280283630050280070280fb2c90070050fb0053630050fb005", - "0x2827a0280283630050280070281051061040317eb2b82b9007363007007", - "0x2b60053630052b80053080282b70053630052b900504f028103005363005", - "0x283630050280070280287ec00502804d02810c005363005103005308028", - "0x1060053080282b60053630051050053080282b700536300510400504f028", - "0x10b0053630052b60050b902810d00536300510c0050b902810c005363005", - "0x10e00503302802504e00736300504e00535602810e0053630050285d1028", - "0x281151160077ed1142b400736300702510e2b703156e02810e005363005", - "0x114007363005114005356028113005363005028717028028363005028007", - "0x11c1200073630071132b32b403156e0281130053630051130050330282b3", - "0x2871702802836300511c0052310280283630050280070282b211b0077ee", - "0x36300712211412003156e028122005363005122005033028122005363005", - "0x536300512400504f0280283630050280070282ad2ae0077ef2b0124007", - "0x281272ac0073630052b01240077c60282b00053630052b0005033028124", - "0x1290057c90280283630050280070281280057f01290053630071270057c7", - "0x2a90053630052ab0050b90282ab0053630051260057cf028126005363005", - "0x2ac00504f02812e00536300512f2a900722102812f00536300502821a028", - "0x70280287f100502804d02813400536300512e00501b0282a8005363005", - "0x2310280283630050230052310280283630050100057d1028028363005028", - "0x2802836300510d00501f02802836300510b00501f02802836300504e005", - "0x51330053460282a71330073630051280050770280283630051c600501f", - "0x4d0282a40053630052a700522d0282a50053630052ac00504f028028363", - "0x57d10280283630052ad0052310280283630050280070280287f2005028", - "0x1f02802836300504e005231028028363005023005231028028363005010", - "0x2802836300510d00501f0280283630051c600501f02802836300510b005", - "0x536300513b00501b02813b00536300502860b028139005363005028020", - "0x22d0282a50053630052ae00504f02813a00536300513b13900735c02813b", - "0x2310280283630050280070280287f200502804d0282a400536300513a005", - "0x536300511400503302811b00536300511b00504f0280283630052b2005", - "0x7f32a20053630072a30057c70282a313800736300511411b0077c6028114", - "0x1420057cf0281420053630052a20057c90280283630050280070282a1005", - "0x2a800536300513800504f02829f0053630051410050b9028141005363005", - "0x501b02829e0053630051341c600722102813400536300529f00501b028", - "0x36300529d00501b02829d00536300529e10d0072ee02829e00536300529e", - "0x36300502800702814b0057f414915200736300729d2a80077d402829d005", - "0x14e00536300504e10b14d0315d202814d0053630051490100077d6028028", - "0x2cd0057bc0282cd00536300514e0055d30282ce00536300515200504f028", - "0x502329a1500315d202802836300529800523102829829a150031363005", - "0x2815900536300515a29c0077b902815a00536300502803002829c005363", - "0x51580057bb0282ce0053630052ce00504f0281580053630051590057ba", - "0x283630050100057d10280283630050280070281582ce007005158005363", - "0x36300510b00501f02802836300504e005231028028363005023005231028", - "0x515600501b02815600536300502824b028157005363005028020028028", - "0x15400536300514b00504f02815500536300515615700735c028156005363", - "0x283630050280070280287f500502804d02815300536300515500522d028", - "0x36300504e0052310280283630050230052310280283630050100057d1028", - "0x51c600501f02802836300510d00501f02802836300510b00501f028028", - "0x4f0280283630051640053460282961640073630052a1005077028028363", - "0x3630052a50053900282a400536300529600522d0282a5005363005138005", - "0x50280070280287f500502804d0281530053630052a40057d9028154005", - "0x230052310280283630050100057d1028028363005115005231028028363", - "0x501f02802836300510b00501f02802836300504e005231028028363005", - "0x60b02829500536300502802002802836300510d00501f0280283630051c6", - "0x36300529429500735c02829400536300529400501b028294005363005028", - "0x2302815300536300529300522d02815400536300511600504f028293005", - "0x3630052910057da02829100536300515329200702d028292005363005028", - "0x70052900053630052900057bb02815400536300515400504f028290005", - "0x50100057d102802836300535b005231028028363005028007028290154", - "0x1c600501f02802836300504e00523102802836300500700501f028028363", - "0x501b02828e00536300502860b02828f005363005028020028028363005", - "0x536300502802302816d00536300528e28f00735c02828e00536300528e", - "0x4f02817100536300528c0057da02828c00536300516d16f00702d02816f", - "0x702817102d0070051710053630051710057bb02802d00536300502d005", - "0x71702802836300503000523102802836300504e005231028028363005028", - "0x36300528b00503302817203100736300503100535602828b005363005028", - "0x2800702828a1770077f617517400736300728b17201b03156e02828b005", - "0x5033028146005363005028717028028363005175005231028028363005", - "0x55e2860077f728728800736300714603117403156e028146005363005146", - "0x36300528700503302828800536300528800504f028028363005028007028", - "0x17c0053630070240057c70280242820073630052872880077c6028287005", - "0x57cf02827f00536300517c0057c90280283630050280070282890057f8", - "0x27b00536300502821a02827c00536300527d0050b902827d00536300527f", - "0x501b02827900536300528200504f02827a00536300527b27c007221028", - "0x57d10280283630050280070280287f900502804d02818200536300527a", - "0x770280283630051c600501f02802836300500700501f028028363005010", - "0x36300528200504f028028363005184005346028185184007363005289005", - "0x50280070280287fa00502804d02827800536300518500522d028187005", - "0x1c600501f0280283630050100057d102802836300555e005231028028363", - "0x2860b02818900536300502802002802836300500700501f028028363005", - "0x536300518a18900735c02818a00536300518a00501b02818a005363005", - "0x2804d02827800536300518c00522d02818700536300528600504f02818c", - "0x17700504f02802836300528a0052310280283630050280070280287fa005", - "0x73630050311770077c6028031005363005031005033028177005363005", - "0x280283630050280070281940057fb1920053630071930057c7028193276", - "0x52710050b90282710053630051950057cf0281950053630051920057c9", - "0x2818200536300518d00501b02827900536300527600504f02818d005363", - "0x70072ee02827200536300527200501b0282720053630051821c6007221", - "0x36300727e2790077d402827e00536300527e00501b02827e005363005272", - "0x536300519a0100077d602802836300502800702819c0057fc19a26e007", - "0x19e26d0315d20281a000536300502803202819e00536300502824902826d", - "0x536300526a26b0077b902826a00536300502803002826b0053630051a0", - "0x57bb02826e00536300526e00504f0282660053630052680057ba028268", - "0x50100057d102802836300502800702826626e007005266005363005266", - "0x26400501b02826400536300502824b028265005363005028020028028363", - "0x26100536300502802302826300536300526426500735c028264005363005", - "0x504f02825f0053630052600057da02826000536300526326100702d028", - "0x2800702825f19c00700525f00536300525f0057bb02819c00536300519c", - "0x501f02802836300500700501f0280283630050100057d1028028363005", - "0x2836300525c00534602825b25c0073630051940050770280283630051c6", - "0x502802302827800536300525b00522d02818700536300527600504f028", - "0x1ac0053630052590057da02825900536300527825a00702d02825a005363", - "0x1ac1870070051ac0053630051ac0057bb02818700536300518700504f028", - "0x2836300503000523102802836300535e005231028028363005028007028", - "0x563e02835f00536300535f00504f02825704e00736300504e005356028", - "0x283630051c600501f0280283630050280070282550057fd028363007257", - "0x280300282510053630050310070100315d202802836300504e005231028", - "0x53630051b20057ba0281b20053630051b02510077b90281b0005363005", - "0x35f0070052500053630052500057bb02835f00536300535f00504f028250", - "0x536300502871702802836300525500563f028028363005028007028250", - "0x56e02824e00536300524e00503302824d03100736300503100535602824e", - "0x2802836300502800702823f2410077fe24324700736300724e24d35f031", - "0x73630050310053560281bb005363005028717028028363005243005231", - "0x1bd0073630071bb23a24703156e0281bb0053630051bb00503302823a031", - "0x281bd0053630051bd00504f02802836300502800702818e2390077ff1bf", - "0x57c702823b2380073630051bf1bd0077c60281bf0053630051bf005033", - "0x3630052360057c90280283630050280070281c400580023600536300723b", - "0x21a02822e0053630052300050b90282300053630052320057cf028232005", - "0x36300523800504f0281c900536300522c22e00722102822c005363005028", - "0x502800702802880100502804d0282240053630051c900501b028228005", - "0x700501f0280283630050100057d10280283630051c600501f028028363", - "0x507702802836300504e005231028028363005031005231028028363005", - "0x536300523800504f0280283630052250053460282202250073630051c4", - "0x36300502800702802880200502804d02821e00536300522000522d02821f", - "0x504e0052310280283630051c600501f02802836300518e005231028028", - "0x3100523102802836300500700501f0280283630050100057d1028028363", - "0x501b02821a00536300502860b0281cf005363005028020028028363005", - "0x36300523900504f02822100536300521a1cf00735c02821a00536300521a", - "0x502800702802880200502804d02821e00536300522100522d02821f005", - "0x535602824100536300524100504f02802836300523f005231028028363", - "0x52182410077c6028218005363005218005033028218031007363005031", - "0x3630050280070281d40058032150053630072170057c70282171d1007363", - "0x50b90282130053630051d60057cf0281d60053630052150057c9028028", - "0x53630051d800501b0282280053630051d100504f0281d8005363005213", - "0x502800702820b20c00780421621100736300703104e228031734028224", - "0x2820a00536300520a00501b02820a0053630052241c6007221028028363", - "0x300282080053630052162090100315d202820900536300520a0070072ee", - "0x3630052060057ba0282060053630052072080077b9028207005363005028", - "0x70051df0053630051df0057bb02821100536300521100504f0281df005", - "0x51c600501f02802836300520b0052310280283630050280070281df211", - "0x700501f0280283630050100057d102802836300522400501f028028363", - "0x501b0281ff005363005028740028201005363005028020028028363005", - "0x53630050280230281fd0053630051ff20100735c0281ff0053630051ff", - "0x4f0281f10053630051f80057da0281f80053630051fd1fb00702d0281fb", - "0x70281f120c0070051f10053630051f10057bb02820c00536300520c005", - "0x1f0280283630050100057d10280283630051c600501f028028363005028", - "0x2802836300504e005231028028363005031005231028028363005007005", - "0x51d100504f0280283630051ec0053460280001ec0073630051d4005077", - "0x2d02856600536300502802302821e00536300500000522d02821f005363", - "0x521f00504f0285680053630055670057da02856700536300521e566007", - "0x36300502800702856821f0070055680053630055680057bb02821f005363", - "0x500700501f0280283630050100057d1028028363005018005231028028", - "0x310052310280283630051c600501f02802836300504e005231028028363", - "0x501b02856a005363005028740028569005363005028020028028363005", - "0x536300502802302856c00536300556a56900735c02856a00536300556a", - "0x4f02857000536300556e0057da02856e00536300556c56d00702d02856d", - "0x3610285700170070055700053630055700057bb028017005363005017005", - "0x702809204f00780500b00a007363007005028007005028028363005028", - "0x1000536300500700580602800f00536300500b005031028028363005028", - "0x1000580702800f00536300500f00509202800a00536300500a00504f028", - "0x36300500f00503102802836300502800702801300580804e1c6007363007", - "0x38602803000536300504d00580a02804d00536300504e005809028014005", - "0x501703100735c02801700536300501700501b028017005363005030005", - "0x2800a00536300500a00504f0283610053630051c60055e2028018005363", - "0x501800522d0283610053630053610055e4028014005363005014005092", - "0x1b36003100501c01b36003136300501836101400a00a365028018005363", - "0x36300500f0050310280283630050130055e502802836300502800702801c", - "0x2d802801f00536300535e0310072d602835e00536300502803002835f005", - "0x36300535f00509202800a00536300500a00504f02802000536300501f005", - "0x36300502800702802035f00a0310050200053630050200052d302835f005", - "0x509200503102802836300503100504002802836300500700580b028028", - "0x501b02802300536300502804602835c00536300502802002835d005363", - "0x536300502802302802d00536300502335c00735c028023005363005023", - "0x4f0280840053630050c00052d20280c000536300502d35b00702d02835b", - "0x3630050840052d302835d00536300535d00509202804f00536300504f005", - "0x700700500f02800700536300500500500a02808435d04f031005084005", - "0x536300500a00501002802836300502800702800b00580c00a031007363", - "0x501b02803100536300503100501302809200536300504f0051c602804f", - "0x280070281c600580d01000f00736300703100500f028092005363005092", - "0x2801300536300500f00501302804e005363005010005256028028363005", - "0x2802836300502800702802880e00502804d02801400536300504e005258", - "0x3630051c600501302803000536300504d00505002804d005363005028030", - "0x28017013007363005013005071028014005363005030005258028013005", - "0x702836000580f361005363007014005009028018005363005017005219", - "0x1c00536300501b0051c602801b005363005361005010028028363005028", - "0x581035e35f00736300701c02800708602801c00536300501c00501b028", - "0x36300535f00504f02802836300501800524202802836300502800702801f", - "0x2836300502800702835c00581135d02000736300701300500f02835f005", - "0x2300525802802d00536300502000501302802300536300535d005256028", - "0x502803002802836300502800702802881200502804d02835b005363005", - "0x2802d00536300535c0050130280840053630050c00050500280c0005363", - "0x735b00500902835900536300502d00521902835b005363005084005258", - "0x320053630051a80050100280283630050280070283570058131a8005363", - "0x35f0070ac02835600536300535600501b0283560053630050320051c6028", - "0x3181502802836300502800702803603c00c031814033364007363007356", - "0x536400504f02821900536300504000581602804000536300503335e092", - "0x521900536300521900581702835900536300535900505b028364005363", - "0x530a02802836300503c00530a028028363005028007028219359364031", - "0x4f02802836300535e00508e02802836300509200501f028028363005036", - "0x4702802836300502800702802881800502804d02821d00536300500c005", - "0x2802836300535e00508e02802836300509200501f028028363005357005", - "0x36300522700581902822700536300502803002821d00536300535f00504f", - "0x3100522d00536300522d00581702835900536300535900505b02822d005", - "0x1300501c02802836300509200501f02802836300502800702822d35921d", - "0x2800702802881a00502804d02823100536300501f00504f028028363005", - "0x501c02802836300509200501f028028363005360005047028028363005", - "0x2804600536300502803002823100536300502800504f028028363005013", - "0x504800581702801800536300501800505b028048005363005046005819", - "0x5363005028030028028363005028007028048018231031005048005363", - "0x504f02824200536300504700581902804500536300500b005219028047", - "0x536300524200581702804500536300504500505b028028005363005028", - "0x36300502881b02800a03100736300500700519c028242045028031005242", - "0x4f03136300500b0310280317ca02800b00536300500b00581c02800b005", - "0x36300502800702804e00581e1c601000736300709204f00781d02800f092", - "0x2836300502800702804d00581f01401300736300700f01000781d028028", - "0x81b0280170053630051c603000726b02803000536300501400500726b028", - "0x501800a0130317ca02801800536300501800581c028018005363005028", - "0x36300736036100781d02801700536300501700518c02801b360361031363", - "0x736300701b01c00781d02802836300502800702835e00582035f01c007", - "0x35c00536300502001700726b02802836300502800702835d00582102001f", - "0x2300771d02802d00536300502803002802300536300535f35c00726b028", - "0x536300501f00504f0280c000536300535b00571e02835b00536300502d", - "0x280283630050280070280c001f0070050c00053630050c000570502801f", - "0x8400536300502802002802836300535f00508e02802836300501700527e", - "0x35908400735c02835900536300535900501b02835900536300502824b028", - "0x320053630051a800522d02835700536300535d00504f0281a8005363005", - "0x2802836300501700527e02802836300502800702802882200502804d028", - "0x36400536300502824b02835600536300502802002802836300501b00530a", - "0x504f02803300536300536435600735c02836400536300536400501b028", - "0xc00536300502802302803200536300503300522d02835700536300535e", - "0x504f02803600536300503c00570402803c00536300503200c00702d028", - "0x28007028036357007005036005363005036005705028357005363005357", - "0x508e02802836300500500527e02802836300500a00530a028028363005", - "0x1b02821900536300502824b0280400053630050280200280283630051c6", - "0x504d00504f02821d00536300521904000735c028219005363005219005", - "0x2800702802882300502804d02822d00536300521d00522d028227005363", - "0x530a02802836300500500527e02802836300500a00530a028028363005", - "0x1b02804600536300502824b02823100536300502802002802836300500f", - "0x504e00504f02804800536300504623100735c028046005363005046005", - "0x2d02804700536300502802302822d00536300504800522d028227005363", - "0x522700504f02824200536300504500570402804500536300522d047007", - "0x363005028361028242227007005242005363005242005705028227005363", - "0x36300502800702809204f00782400b00a007363007005028007005028028", - "0x310053560280100053630050285a202800f00536300500b005031028028", - "0x536300500f00509202800a00536300500a00504f0281c6031007363005", - "0x50310280283630050280070280288250283630070101c600714e02800f", - "0x1300536300501300532c02801300536300502836f02804e00536300500f", - "0x4d00503302804d0053630050285a202801400536300501300700726b028", - "0x1400536300501400518c02804e00536300504e00509202804d005363005", - "0x36300502800702836101800782601703000736300704d03100a03156e028", - "0x509202803000536300503000504f02836000536300504e005031028028", - "0x536300501700503302801400536300501400518c028360005363005360", - "0x2835f01c01b03100535f01c01b03136300501701436003000a71a028017", - "0x2802836300501400527e028028363005361005231028028363005028007", - "0x536300502860b02801f00536300502802002835e00536300504e005031", - "0x2302835d00536300502001f00735c02802000536300502000501b028020", - "0x36300502300570402802300536300535d35c00702d02835c005363005028", - "0x70502835e00536300535e00509202801800536300501800504f02802d005", - "0x523102802836300502800702802d35e01803100502d00536300502d005", - "0x280c000536300502871b02835b00536300500f005031028028363005031", - "0x50280300280840053630050c000700726b0280c00053630050c000532c", - "0x3570053630051a800571e0281a800536300535908400771d028359005363", - "0x35700570502835b00536300535b00509202800a00536300500a00504f028", - "0x500700527e02802836300502800702835735b00a031005357005363005", - "0x28020028032005363005092005031028028363005031005231028028363", - "0x2836400536300536400501b028364005363005028046028356005363005", - "0x3300c00702d02800c00536300502802302803300536300536435600735c", - "0x4f00536300504f00504f02803600536300503c00570402803c005363005", - "0x3204f031005036005363005036005705028032005363005032005092028", - "0x3100582702836300700700534202800700500736300500500538d028036", - "0x536300502800525c02802836300500500501f028028363005028007028", - "0x28032028028363005031005340028028363005028007028028005005028", - "0x536300500a02800725f02800a00536300500a00503302800a005363005", - "0x732602809200500736300500500538d02804f00536300502824a02800b", - "0x36300500b00525c02800f00536300500f00501b02800f00536300504f092", - "0x1f02802836300502800702801000582802836300700f00534202800b005", - "0x502800702800b00500500b00536300500b00525c028028363005005005", - "0x1c60050330281c6005363005028032028028363005010005340028028363", - "0x1300536300502816f02804e0053630051c600b00725f0281c6005363005", - "0x1b02804d00536300501301400732602801400500736300500500538d028", - "0x36300704d00534202804e00536300504e00525c02804d00536300504d005", - "0x525c02802836300500500501f028028363005028007028030005829028", - "0x36300503000534002802836300502800702804e00500504e00536300504e", - "0x4e00725f028017005363005017005033028017005363005028032028028", - "0x500736300500500538d02836100536300502882a028018005363005017", - "0x25c02801b00536300501b00501b02801b005363005361360007326028360", - "0x502800702801c00582b02836300701b005342028018005363005018005", - "0x1800500501800536300501800525c02802836300500500501f028028363", - "0x35f00536300502803202802836300501c005340028028363005028007028", - "0x2882c02835e00536300535f01800725f02835f00536300535f005033028", - "0x36300501f02000732602802000500736300500500538d02801f005363005", - "0x34202835e00536300535e00525c02835d00536300535d00501b02835d005", - "0x36300500500501f02802836300502800702835c00582d02836300735d005", - "0x34002802836300502800702835e00500535e00536300535e00525c028028", - "0x2300536300502300503302802300536300502803202802836300535c005", - "0x500538d02835b00536300502882e02802d00536300502335e00725f028", - "0x36300508400501b02808400536300535b0c00073260280c0005007363005", - "0x35900582f02836300708400534202802d00536300502d00525c028084005", - "0x536300502d00525c02802836300500500501f028028363005028007028", - "0x2803202802836300535900534002802836300502800702802d00500502d", - "0x53630051a802d00725f0281a80053630051a80050330281a8005363005", - "0x732602835600500736300500500538d028032005363005028830028357", - "0x36300535700525c02836400536300536400501b028364005363005032356", - "0x1f028028363005028007028033005831028363007364005342028357005", - "0x502800702835700500535700536300535700525c028028363005005005", - "0xc00503302800c005363005028032028028363005033005340028028363", - "0x360053630050285f502803c00536300500c35700725f02800c005363005", - "0x1b02821900536300503604000732602804000500736300500500538d028", - "0x36300721900534202803c00536300503c00525c028219005363005219005", - "0x525c02802836300500500501f02802836300502800702821d005832028", - "0x36300521d00534002802836300502800702803c00500503c00536300503c", - "0x3c00725f028227005363005227005033028227005363005028032028028", - "0x500736300500500538d02823100536300502883302822d005363005227", - "0x25c02804800536300504800501b028048005363005231046007326028046", - "0x502800702804700583402836300704800534202822d00536300522d005", - "0x22d00500522d00536300522d00525c02802836300500500501f028028363", - "0x45005363005028032028028363005047005340028028363005028007028", - "0x2883502824200536300504522d00725f028045005363005045005033028", - "0x36300524624900732602824900500736300500500538d028246005363005", - "0x34202824200536300524200525c02824a00536300524a00501b02824a005", - "0x36300500500501f02802836300502800702824b00583602836300724a005", - "0x34002802836300502800702824200500524200536300524200525c028028", - "0x24c00536300524c00503302824c00536300502803202802836300524b005", - "0x500538d02825200536300502833302824f00536300524c24200725f028", - "0x36300525600501b028256005363005252253007326028253005007363005", - "0x25800583702836300725600534202824f00536300524f00525c028256005", - "0x536300524f00525c02802836300500500501f028028363005028007028", - "0x2803202802836300525800534002802836300502800702824f00500524f", - "0x536300505024f00725f028050005363005050005033028050005363005", - "0x732602805800500736300500500538d02805b005363005028838028009", - "0x36300500900525c02805900536300505900501b02805900536300505b058", - "0x1f02802836300502800702805c005839028363007059005342028009005", - "0x502800702800900500500900536300500900525c028028363005005005", - "0x26c00503302826c00536300502803202802836300505c005340028028363", - "0x2770053630050282e502827500536300526c00900725f02826c005363005", - "0x1b02806000536300527705e00732602805e00500736300500500538d028", - "0x36300706000534202827500536300527500525c028060005363005060005", - "0x525c02802836300500500501f02802836300502800702805f00583a028", - "0x36300505f005340028028363005028007028275005005275005363005275", - "0x27500725f02805d00536300505d00503302805d005363005028032028028", - "0x500736300500500538d0282bc00536300502883b0282af00536300505d", - "0x25c02806700536300506700501b0280670053630052bc042007326028042", - "0x502800702830600583c0283630070670053420282af0053630052af005", - "0x2af0050052af0053630052af00525c02802836300500500501f028028363", - "0x69005363005028032028028363005306005340028028363005028007028", - "0x2883d0280680053630050692af00725f028069005363005069005033028", - "0x36300500606f00732602806f00500736300500500538d028006005363005", - "0x34202806800536300506800525c02807100536300507100501b028071005", - "0x36300500500501f02802836300502800702834700583e028363007071005", - "0x34002802836300502800702806800500506800536300506800525c028028", - "0x74005363005074005033028074005363005028032028028363005347005", - "0x500732602807700536300502824602807500536300507406800725f028", - "0x536300507500525c02834600536300534600501b028346005363005077", - "0x525c02802836300502800702834500583f028363007346005342028075", - "0x363005345005340028028363005028007028075005005075005363005075", - "0x7500725f028043005363005043005033028043005363005028032028028", - "0xa00575702807a00500507a00536300507a00525c02807a005363005043", - "0x700500a84002800f00b00736300500b00522402809204f00b031363005", - "0x2802836300502800702804d01401303184104e1c601003136300709200f", - "0x504e005236028030005363005010005031028010005363005010005092", - "0x280300053630050300050920281c60053630051c60050c002804e005363", - "0x3000503102802836300502800702801800584201700536300704e0051c4", - "0x9202801b005363005028844028360005363005028843028361005363005", - "0x36300501b005182028360005363005360005182028361005363005361005", - "0x35d02001f03184535e35f01c03136300701b3601c636100a18e02801b005", - "0x36300501c00503102801c00536300501c005092028028363005028007028", - "0x9202835f00536300535f0050c002835e00536300535e00523602835c005", - "0x2800702802d00584602300536300735e0051c402835c00536300535c005", - "0x7930280c000536300502884702835b00536300535c005031028028363005", - "0x535b0050920280840053630050840057940280840c00073630050c0005", - "0xc0333643560323571a83591c636300708400b02803179502835b005363", - "0x536300535b00503102802836300502800702821d21904003184803603c", - "0x2823100536300503c22d00728802822d005363005036359007288028227", - "0x728802804800536300503304600728802804600536300500c231007288", - "0x32045007288028045005363005356047007288028047005363005364048", - "0x53630051a8005797028246005363005357242007288028242005363005", - "0x522402803100536300503100518202824600536300524600504f028249", - "0x24a03124603179802824a00536300524a00518202824a249007363005249", - "0x36300524f00579402824f0c00073630050c000579302824c24b007363005", - "0x2805805b00905025825625325200f36300524f24c24b03179902824f005", - "0x5b05900728802805900536300505825200728802802836300525300579a", - "0x36300505026c00728802826c00536300500905c00728802805c005363005", - "0x19c02805e005363005028760028277005363005258275007288028275005", - "0x5f0053080282af05d00736300525600519c02805f06000736300505e005", - "0x3630072af05f27703117502822700536300522700509202805f005363005", - "0x53630052270050310280283630050280070283060670078490422bc007", - "0x2bc00504f02800600536300506800533f028068005363005028030028069", - "0x34700536300504200530802807100536300506900509202806f005363005", - "0x2836300502800702802884a00502804d02807400536300500600507d028", - "0x5077005081028077005363005028030028075005363005227005031028", - "0x2807100536300507500509202806f00536300506700504f028346005363", - "0x506000530802807400536300534600507d028347005363005306005308", - "0x702807907a00784b04334500736300705d06006f031175028060005363", - "0x34200536300534500504f02807f005363005071005031028028363005028", - "0x34700530802807d00536300504300530802808100536300507f005092028", - "0x7100503102802836300502800702802884c00502804d028340005363005", - "0x2833e00536300533e00530802833e00536300502817202833f005363005", - "0x784d33c33d00736300733e34707a03117502833f00536300533f005092", - "0x33d00504f02808c00536300533f00503102802836300502800702833733b", - "0x7d00536300507900530802808100536300508c005092028342005363005", - "0x2833500584e3360053630070740052cd02834000536300533c005308028", - "0x8a005363005081005031028028363005336005047028028363005028007", - "0x24900518202804f00536300504f00518202834200536300534200504f028", - "0x50c000579402833333400736300524904f342031798028249005363005", - "0x32d36f08e08633033133208800f3630050c03333340317990280c0005363", - "0x32c00728802832c00536300532d08800728802802836300533200579a028", - "0x508632a00728802832a00536300508e32b00728802832b00536300536f", - "0x536300534007d007279028328005363005330329007288028329005363", - "0x504f02832700536300532700518202808a00536300508a005092028327", - "0x3185032508b32603136300732702335f08a00a84f028328005363005328", - "0x5031028326005363005326005092028028363005028007028320323324", - "0x5363005325005776028085005363005085005092028085005363005326", - "0x2809631e09803185131f09509303136300733101708b08500a84f028325", - "0x5363005093005031028093005363005093005092028028363005028007", - "0xa85202831f00536300531f00577602831d00536300531d00509202831d", - "0x36300502800702831631731803185331931a31c03136300731f32509531d", - "0x585402831500536300531c00503102831c00536300531c005092028028", - "0x5363005313005856028313005363005314005855028314005363005319", - "0x50c002831500536300531500509202832800536300532800504f028312", - "0x2831231a31532800a00531200536300531200585702831a00536300531a", - "0x5363005318005031028318005363005318005092028028363005028007", - "0x585802830e00536300531630f00702d02830f005363005028023028311", - "0x536300531100509202832800536300532800504f02830c00536300530e", - "0x32800a00530c00536300530c0058570283170053630053170050c0028311", - "0x9800509202802836300532500523202802836300502800702830c317311", - "0x2830b0053630050280230280a9005363005098005031028098005363005", - "0x32800504f0280ac0053630050b00058580280b000536300509630b00702d", - "0x31e00536300531e0050c00280a90053630050a9005092028328005363005", - "0x283630050280070280ac31e0a932800a0050ac0053630050ac005857028", - "0x363005324005092028028363005331005268028028363005017005232028", - "0x702d02830800536300502802302830a005363005324005031028324005", - "0x36300532800504f0280b60053630050b40058580280b4005363005320308", - "0x8570283230053630053230050c002830a00536300530a005092028328005", - "0x470280283630050280070280b632330a32800a0050b60053630050b6005", - "0x2802836300501700523202802836300507d00530a028028363005335005", - "0x283630050c00057ad02802836300502300523202802836300534000530a", - "0x36300508100503102802836300504f005268028028363005249005268028", - "0x4d0283030053630053050050920280b900536300534200504f028305005", - "0x530a02802836300533700530a028028363005028007028028859005028", - "0x23202802836300507400533e028028363005017005232028028363005079", - "0x280283630052490052680280283630050c00057ad028028363005023005", - "0x36300533b00504f02830200536300533f00503102802836300504f005268", - "0x2885a0283010053630050280200283030053630053020050920280b9005", - "0x536300530030100735c02830000536300530000501b028300005363005", - "0x58580280bf0053630052ff2fe00702d0282fe0053630050280230282ff", - "0x53630053030050920280b90053630050b900504f0282fd0053630050bf", - "0xb900a0052fd0053630052fd00585702835f00536300535f0050c0028303", - "0x310052680280283630050170052320280283630050280070282fd35f303", - "0x57ad02802836300502300523202802836300504f005268028028363005", - "0x536300521d0400072880282fc00536300535b0050310280283630050c0", - "0x2824b02838b0053630050280200280510053630052192fb0072880282fb", - "0x536300538c38b00735c02838c00536300538c00501b02838c005363005", - "0x585802838f00536300538d0dc00702d0280dc00536300502802302838d", - "0x53630052fc00509202805100536300505100504f0280c700536300538f", - "0x5100a0050c70053630050c700585702835f00536300535f0050c00282fc", - "0xb00526802802836300502d0050470280283630050280070280c735f2fc", - "0x5268028028363005031005268028028363005017005232028028363005", - "0x280c90053630050280200280c600536300535c00503102802836300504f", - "0x50cb0c900735c0280cb0053630050cb00501b0280cb00536300502824b", - "0x2839000536300535f0050c00282fa0053630050c60050920280cf005363", - "0x2802836300502800702802885b00502804d0283070053630050cf00522d", - "0x2836300503100526802802836300501700523202802836300500b005268", - "0x501f00503102801f00536300501f00509202802836300504f005268028", - "0x283900053630050200050c00282fa005363005391005092028391005363", - "0x53072f400702d0282f400536300502802302830700536300535d00522d", - "0x2802800536300502800504f0282f30053630050d40058580280d4005363", - "0x52f30058570283900053630053900050c00282fa0053630052fa005092", - "0x500b0052680280283630050280070282f33902fa02800a0052f3005363", - "0x3000503102802836300504f005268028028363005031005268028028363", - "0x2f100536300539200585502839200536300501800585c0280d5005363005", - "0xd500509202802800536300502800504f0282f00053630052f1005856028", - "0x2f00053630052f00058570281c60053630051c60050c00280d5005363005", - "0x2802836300500b0052680280283630050280070282f01c60d502800a005", - "0x536300501300509202802836300504f005268028028363005031005268", - "0xda00702d0280da0053630050280230282ea005363005013005031028013", - "0x536300502800504f0282e50053630052e70058580282e700536300504d", - "0x58570280140053630050140050c00282ea0053630052ea005092028028", - "0x5f02804f00536300502885d0282e50142ea02800a0052e50053630052e5", - "0x3122502802836300502836102802836300502824f02800f005363005028", - "0x36300502800702804d01401303185e04e1c609201000a36300700a031005", - "0x785f028030005363005010005031028010005363005010005092028028", - "0x501800586102836101800736300501700586002801700536300504e1c6", - "0x864028360005363005361005863028361005363005361005862028028363", - "0x536300501b00518902801c00536300502818502801b005363005360005", - "0x530102803000536300503000509202802800536300502800504f02835f", - "0x536300501c00518c02835f00536300535f00518a028007005363005007", - "0x36300501c35f00703002800b86502809200536300509200f00730602801c", - "0x36300702000519302800b00536300500b04f00786602802000b01f35e00a", - "0x2802300536300501f00503102802836300502800702835c00586735d005", - "0xc000504702802836300502d0051940280c035b02d03136300535d005192", - "0x504f02835900536300502803202808400536300502836f028028363005", - "0x536300535b00518c02802300536300502300509202835e00536300535e", - "0xb19502835900536300535900503302808400536300508400532c02835b", - "0x8683560053630070320052710280323571a803136300535908435b02335e", - "0x35600518d028033005363005357005031028028363005028007028364005", - "0x3600736300500c00527202802836300503c00504702803c00c007363005", - "0x3300509202821900536300504000526e02802836300503600527e028040", - "0x4623103186922d22721d03136300721909203303119a028033005363005", - "0x521d00503102821d00536300521d005092028028363005028007028048", - "0x24200536300524200530802824204500736300522d00519c028047005363", - "0x86a02804500536300504500530802824924600736300524200b00786a028", - "0x524b00530802824c00536300502886b02824b24a007363005045246007", - "0x3136300524c24b1a80317ca02824c00536300524c00581c02824b005363", - "0xb90282560053630052530050b902802836300525200530a02825325224f", - "0x36300505025600722102805000536300502821a028258005363005249005", - "0x2ee02825800536300525800501b02800900536300500900501b028009005", - "0x505800586c02805800536300505b0051d402805b005363005258009007", - "0x2824f00536300524f00504f02805c00536300505900586d028059005363", - "0x52270050c002824a00536300524a005301028047005363005047005092", - "0x702805c22724a04724f00b00505c00536300505c00586e028227005363", - "0x26c005363005231005031028231005363005231005092028028363005028", - "0x460050c002827700536300526c0050920282750053630051a800504f028", - "0x702802886f00502804d02806000536300504800522d02805e005363005", - "0x5d00736300536400507702805f005363005357005031028028363005028", - "0x5f0050920282750053630051a800504f02802836300505d0053460282af", - "0x600053630052af00522d02805e0053630050920050c0028277005363005", - "0x2bc00536300501f00503102802836300502800702802886f00502804d028", - "0x35e00504f02802836300504200534602806704200736300535c005077028", - "0x5e0053630050920050c00282770053630052bc005092028275005363005", - "0x6030600702d02830600536300502802302806000536300506700522d028", - "0x27500536300527500504f028068005363005069005870028069005363005", - "0x5e0050c002800b00536300500b005301028277005363005277005092028", - "0x2806805e00b27727500b00506800536300506800586e02805e005363005", - "0x2802836300500f00504202802836300504f005871028028363005028007", - "0x363005028023028006005363005013005031028013005363005013005092", - "0x2834700536300507100587002807100536300504d06f00702d02806f005", - "0x500700530102800600536300500600509202802800536300502800504f", - "0x534700536300534700586e0280140053630050140050c0028007005363", - "0x500700519c02800a03100736300500500519c02834701400700602800b", - "0x736300500b00517402809203100736300503100517402804f00b007363", - "0x36300504e02800728802804e1c601003136300500f09200714602800f00b", - "0x4d03136300501403100714602801404f00736300504f005174028013005", - "0x7363007030010018031287028018005363005017013007288028017030", - "0x2835f00536300502887302802836300502800702801c01b007872360361", - "0x535f00587402801f00536300536000530802835e00536300536100504f", - "0x36300502887602802836300502800702802887500502804d028020005363", - "0x87402801f00536300501c00530802835e00536300501b00504f02835d005", - "0xb35c00714602835c00a00736300500a00517402802000536300535d005", - "0x1f0c00312870280c000536300535b35e00728802835b02d023031363005", - "0x50288730280283630050280070283571a800787735908400736300702d", - "0x2836400536300535900530802835600536300508400504f028032005363", - "0x2802836300502800702802887800502804d028033005363005032005874", - "0x3630053570053080283560053630051a800504f02800c005363005028876", - "0x3c00736300702304d35603128702803300536300500c005874028364005", - "0x4f02821d005363005028873028028363005028007028219040007879036", - "0x36300521d00587402822d00536300503600530802822700536300503c005", - "0x536300502887602802836300502800702802887a00502804d028231005", - "0x587402822d00536300521900530802822700536300504000504f028046", - "0x22700728802804504704803136300504f00a007146028231005363005046", - "0x24b24a00787b24924600736300704722d242031287028242005363005045", - "0x536300524600504f02824c005363005028873028028363005028007028", - "0x2804d02825300536300524c00587402825200536300524900530802824f", - "0x24a00504f02825600536300502887602802836300502800702802887c005", - "0x25300536300525600587402825200536300524b00530802824f005363005", - "0x530802805000536300525800587e02825800536300503302000787d028", - "0x5905800787f05b00900736300705025224f031287028050005363005050", - "0x536300500900504f02805c005363005028873028028363005028007028", - "0x2804d02827700536300505c00587402827500536300505b00530802826c", - "0x5800504f02805e005363005028876028028363005028007028028880005", - "0x27700536300505e00587402827500536300505900530802826c005363005", - "0x788202806000536300506000588102806000536300525323100787d028", - "0x36300505d00530802805d00536300505f00588302805f005363005277060", - "0x280070280670420078842bc2af00736300705d04826c03128702805d005", - "0x280690053630052bc0053080283060053630052af00504f028028363005", - "0x2830600536300504200504f02802836300502800702802888500502804d", - "0x4f0280680053630050692753641c600a886028069005363005067005308", - "0x888028068306007005068005363005068005887028306005363005306005", - "0x588a02802836300502800702800a005889031007007363007005028007", - "0x536300500700504f02800b00536300500b00588b02800b005363005031", - "0x589001000588f00f00588e09200588d04f00536301700b00588c028007", - "0x89701700589603000589504d00589401400589301300589204e0058911c6", - "0x2836300502800702801c00589b01b00589a360005899361005898018005", - "0x36300535f00581c02835f00536300502889c02802836300504f005047028", - "0x36300509200504702802836300502800702802889d00502804d02835e005", - "0x502804d02835e00536300501f00581c02801f00536300502889e028028", - "0x36300502889f02802836300500f00504702802836300502800702802889d", - "0x502800702802889d00502804d02835e00536300502000581c028020005", - "0x35d00581c02835d0053630050288a0028028363005010005047028028363", - "0x1c600504702802836300502800702802889d00502804d02835e005363005", - "0x4d02835e00536300535c00581c02835c00536300502886b028028363005", - "0x288a102802836300504e00504702802836300502800702802889d005028", - "0x702802889d00502804d02835e00536300502300581c028023005363005", - "0x81c02802d0053630050288a2028028363005013005047028028363005028", - "0x4702802836300502800702802889d00502804d02835e00536300502d005", - "0x35e00536300535b00581c02835b0053630050288a3028028363005014005", - "0x2802836300504d00504702802836300502800702802889d00502804d028", - "0x2889d00502804d02835e0053630050c000581c0280c000536300502881b", - "0x840053630050288a4028028363005030005047028028363005028007028", - "0x2836300502800702802889d00502804d02835e00536300508400581c028", - "0x36300535900581c0283590053630050288a5028028363005017005047028", - "0x36300501800504702802836300502800702802889d00502804d02835e005", - "0x502804d02835e0053630051a800581c0281a80053630050288a6028028", - "0x3630050288a702802836300536100504702802836300502800702802889d", - "0x502800702802889d00502804d02835e00536300535700581c028357005", - "0x3200581c0280320053630050288a8028028363005360005047028028363", - "0x1b00504702802836300502800702802889d00502804d02835e005363005", - "0x4d02835e00536300535600581c0283560053630050288a9028028363005", - "0x288aa02802836300501c00504702802836300502800702802889d005028", - "0x3300536300535e0058ab02835e00536300536400581c028364005363005", - "0xc0058ad02800700536300500700504f02800c0053630050330058ac028", - "0x536300502802002802836300502800702800c00700700500c005363005", - "0x3c00735c02803600536300503600501b0280360053630050288ae02803c", - "0x536300504021900702d028219005363005028023028040005363005036", - "0x58ad02800a00536300500a00504f02822700536300521d00539302821d", - "0x502800700502802836300502836102822700a007005227005363005227", - "0x504f00503102802836300502800702800f0920078af04f00b007363007", - "0x504f02802836300502800b0281c600536300503100562b028010005363", - "0x73630071c600562c02801000536300501000509202800b00536300500b", - "0x2804d0053630050100050310280283630050280070280140058b001304e", - "0x504e00562f02801700536300504d00509202803000536300501300562e", - "0x280070280288b100502804d028361005363005030005630028018005363", - "0x63102801b005363005028030028360005363005010005031028028363005", - "0x36300501400562f02801700536300536000509202801c00536300501b005", - "0x63302835f00536300501800518902836100536300501c005630028018005", - "0x36300502836102802836300502800702801f0058b235e005363007361005", - "0x563502835d00536300535e005634028020005363005017005031028028", - "0x536300500700530102800b00536300500b00504f02835c00536300535d", - "0xa8b302835c00536300535c00518202800a00536300500a00518c028007", - "0x27102802000536300502000509202835b02d02303136300535c00a00700b", - "0x50200050310280283630050280070280840058b40c000536300735b005", - "0x280283630053570050470283571a80073630050c000518d028359005363", - "0x502d00530102835900536300535900509202802300536300502300504f", - "0x281a80053630051a800518c02835f00536300535f00518a02802d005363", - "0x3336435603200a00503336435603200a3630051a835f02d35902300b865", - "0x536300502000503102802836300535f005194028028363005028007028", - "0x509202802300536300502300504f02803c00536300508400563702800c", - "0x536300503c00563802802d00536300502d00530102800c00536300500c", - "0x2802836300502836102802836300502800702803c02d00c02300a00503c", - "0x536300502803002803600536300501700503102802836300501f005047", - "0x2821d00536300521900563a02821900536300504000a35f031639028040", - "0x500700530102803600536300503600509202800b00536300500b00504f", - "0x2800702821d00703600b00a00521d00536300521d005638028007005363", - "0x503102802836300500a00527e028028363005031005194028028363005", - "0x2823100536300502804602822d00536300502802002822700536300500f", - "0x502802302804600536300523122d00735c02823100536300523100501b", - "0x4500536300504700563702804700536300504604800702d028048005363", - "0x700530102822700536300522700509202809200536300509200504f028", - "0x19c02804500722709200a005045005363005045005638028007005363005", - "0x2881b02809204f00736300500b00500786a02800b00a007363005031005", - "0xf00536300500f00581c02809200536300509200530802800f005363005", - "0x4f00536300504f00530102804e1c601003136300500f0920280317ca028", - "0x2802836300502800702804d0058b50140130073630071c601000781d028", - "0x26b0280283630050280070280180058b601703000736300704e01300781d", - "0x4f00786a02836000536300501436100726b028361005363005017007007", - "0x536300501c00530802835f00536300502881b02801c01b00736300500a", - "0x1f35e03136300535f01c0300317ca02835f00536300535f00581c02801c", - "0x781d02801b00536300501b00530102836000536300536000518c028020", - "0x35d00781d0280283630050280070280230058b735c35d00736300701f35e", - "0x35b36000726b0280283630050280070280c00058b835b02d007363007020", - "0x1a800536300502803002835900536300535c08400726b028084005363005", - "0x504f02803200536300535700571e0283570053630051a835900771d028", - "0x536300503200570502801b00536300501b00530102802d00536300502d", - "0x2802836300536000527e02802836300502800702803201b02d031005032", - "0x36400536300502824b02835600536300502802002802836300535c00508e", - "0x504f02803300536300536435600735c02836400536300536400501b028", - "0x280288b900502804d02803c00536300503300522d02800c0053630050c0", - "0x2802836300502000530a02802836300536000527e028028363005028007", - "0x536300504000501b02804000536300502824b028036005363005028020", - "0x22d02800c00536300502300504f02821900536300504003600735c028040", - "0x36300503c21d00702d02821d00536300502802302803c005363005219005", - "0x30102800c00536300500c00504f02822d005363005227005704028227005", - "0x2822d01b00c03100522d00536300522d00570502801b00536300501b005", - "0x2802836300500a00530a02802836300500700527e028028363005028007", - "0x4600536300502824b02823100536300502802002802836300501400508e", - "0x504f02804800536300504623100735c02804600536300504600501b028", - "0x280288ba00502804d02804500536300504800522d028047005363005018", - "0x2802836300500a00530a02802836300500700527e028028363005028007", - "0x24600536300502824b02824200536300502802002802836300504e00530a", - "0x504f02824900536300524624200735c02824600536300524600501b028", - "0x24a00536300502802302804500536300524900522d02804700536300504d", - "0x504f02824c00536300524b00570402824b00536300504524a00702d028", - "0x536300524c00570502804f00536300504f005301028047005363005047", - "0x70050281fd1d11ec02800a18a1d11ec02800a34524c04f04703100524c", - "0x1ec02800a0da0310070050281fd1d11ec02800a18a1d11ec02800a028031", - "0x1ec02800a18a1d11ec02800a1750310070050281fd1d11ec02800a18a1d1", - "0x70050281fd1d11ec02800a18a1d11ec02800a5f80310070050281fd1d1", - "0x1ec02800a8bc0310070050281fd1d11ec02800a18a1d11ec02800a8bb031", - "0x1ec02800a18a1d11ec02800a8bd0310070050281fd1d11ec02800a18a1d1", - "0x70050281fd1d11ec02800a18a1d11ec02800a8be0310070050281fd1d1", - "0x1ec02800a8c00310070050281fd1d11ec02800a18a1d11ec02800a8bf031", - "0x1ec02800a18a1d11ec02800a8c10310070050281fd1d11ec02800a18a1d1", - "0x70050281fd1d11ec02800a18a1d11ec02800a8c20310070050281fd1d1", - "0x1ec02800a8c40310070050281fd1d11ec02800a18a1d11ec02800a8c3031", - "0x1ec02800a18a1d11ec02800a8c50310070050281fd1d11ec02800a18a1d1", - "0x281fd1d11ec23f02800b18a1d11ec23f02800b8c60310070050281fd1d1", - "0x8c80310070050281fd1d11ec02800a18a1d11ec02800a8c700a031007005", - "0x18a1d11ec02800a8c90310070050281fd1d11ec02800a18a1d11ec02800a", - "0x1fd1d11ec02800a18a1d11ec02800a8ca0310070050281fd1d11ec02800a", - "0x70050281fd1d11ec04002800b18a1d11ec04002800b8cb031007005028", - "0x2800a8cd0310070050281fd1d11ec02800a18a1d11ec02800a8cc00a031", - "0x2800a18a1d11ec02800a8ce0310070050281fd1d11ec02800a18a1d11ec", - "0x50281fd1d11ec02800a18a1d11ec02800a8cf0310070050281fd1d11ec", - "0x2800a8d10310070050281fd1d11ec02800a18a1d11ec02800a8d0031007", - "0x2800a18a1d11ec02800a8d20310070050281fd1d11ec02800a18a1d11ec", - "0x1fd1d11ec02825500b18a1d11ec02825500b8d30310070050281fd1d11ec", - "0x1fd1d11ec04002825504f18a1d11ec04002825504f8d400a031007005028", - "0x70050281fd1d11ec02800a18a1d11ec02800a8d500b00a031007005028", - "0x8d700a0310070050281fd1d11ec25a02800b18a1d11ec25a02800b8d6031", - "0x2800a8d800a0310070050281fd1d11ec02825500b18a1d11ec02825500b", - "0x1d11ec0df0e30e10280928d90310070050281fd1d11ec02800a18a1d11ec", - "0xe102800b8da04f00b00a0310070050281fd1d11ec0df0e30e102809218a", - "0x18a1d11ec02800a8db00a0310070050281fd1d11ec0e102800b18a1d11ec", - "0x1fd1d11ec02800a18a1d11ec02800a8dc0310070050281fd1d11ec02800a", - "0x8de0310070050281fd1d11ec02800a18a1d11ec02800a8dd031007005028", - "0x18a1d11ec02800a8df0310070050281fd1d11ec02800a18a1d11ec02800a", - "0x1fd1d11ec02800a18a1d11ec02800a8e00310070050281fd1d11ec02800a", - "0xa0310070050282131ec02803100605918a1ec02800b8e1031007005028", - "0x5918a1ec02800a8e303100700502821a1ec02803118a0591ec02800a8e2", - "0x282281d11ec0310f82251b01d11ec00b8e403100700502821a1ec028031", - "0xa0310070050282281d11ec0312251941b01d11ec00b8e500a031007005", - "0xb00a0310070050282321d11ec02800a18908e18908e1d11ec0280928e6", - "0x2391ec02803118a1ec0280318e800502823818a02803118a0280078e704f", - "0x2823a1d11ec02800a00600600618d18e1b01d11ec0280108e9007005028", - "0x1ec0310060060060062251b01d11ec00f8ea00f09204f00b00a031007005", - "0x1ec23f02800a2411ec23f02800a8eb09204f00b00a0310070050281fd1d1", - "0x2800a8ed0070050282471ec02803100c1ec0280318ec031007005028243", - "0x2800a1b01d11ec02800a8ee0310070050282281d11ec02800a1b01d11ec", - "0x2281d10401ec02800b1b01d10401ec02800b8ef0310070050282281d11ec", - "0x310070050282281d11ec02800a1b01d11ec02800a8f000a031007005028", - "0x2800a8f200a0310070050282501d11ec02800a0591b01d11ec02800b8f1", - "0x1ec0280310061b01ec02800a8f30310070050282281ec0280310061b01ec", - "0x1d12551ec02800b0060060061b01d12551ec02800f8f4031007005028228", - "0x2804f2571b01d12550401ec0280928f509204f00b00a031007005028228", - "0x25a00a1b01d11ec25a00a8f604f00b00a0310070050282281d12550401ec", - "0x1d12551ec02800b0061b01d12551ec02804f8f70310070050282281d11ec", - "0xe10df0e302804f1b01ec0e10df0e302804f8f800b00a031007005028228", - "0x1b01d11ec04f8fa02823a0e10070e10058f900b00a0310070050282281ec", - "0x26b02800718a0280078fb00b00a0310070050282281d11ec031059006194", - "0xa8fd00a03100700502826d1ec02803100618218a1ec02800b8fc005028", - "0x280311851851ec02800a8fe0310070050282761ec02803118a18a1ec028", - "0x3100700502828a1ec02803116d1751ec02800a8ff0310070050282781ec", - "0x14902800a90100a03100700502828b1ec02803108108e16d1ec02800b900", - "0x1d11ec02800a14e14d1d11ec02800b902031007005028296028007081081", - "0x1d10401ec02800b06f2ae03c1d10401ec02809290300a03100700502829a", - "0x1ec02800a12003c03c03c1d11ec02809290404f00b00a0310070050282b0", - "0x2800a9060050280f80052fa2fa00790504f00b00a0310070050282bd1d1", - "0x21a1ec0280310593051ec02800a9070310070050282fd0280070810060b9", - "0x703c16d02803190900502831d18a02803118a028007908031007005028", - "0x90b03100700502828b1ec02803108116d1ec02800a90a00700502828b028", - "0x283461d11ec02800a2ae03c1d11ec02800b90c005028149005006149007", - "0x70050283471d10401ec02800b0741d10401ec02800b90d00a031007005", - "0x26c02800708102800790f0070050282af02800703c03c02803190e00a031", - "0x91100a03100700502828a0401ec02800a16d1750401ec02800b910005028", - "0x91203100700502828b04002803103c16d04002800a" + "0x70060050040030bc0070060050040030bb0070060050040030ba007006", + "0x500400305c0050bf0050be02805702a02d0050b90050290280570260bd", + "0xc30070070c40c30050070c40c30390c20c10070060050040030c0007081", + "0xca0c90050c60050af0c800a0070c40c30c70050c60050af0c50310070c4", + "0x260cd00702800702f02e0c90050b00050af0cc0050070ab0ae0cb0050ab", + "0x50350d30d20050560d10020d00cf0050cf0050cf0050cf0050ce028065", + "0x2e0280070d500500400300500700500702f02e0050070d40050040030d2", + "0x700600500400304f0070cf0050040030d20050350d602800702800702f", + "0x30da0050da0050da0050da0050290280d90260020d80d20050560a80d7", + "0xdd0dc0050290280af0260d20050560ad0db0050ab0aa0310070cf005004", + "0x30280070cf0050040030cf0050cf0050cf0050cf005029028065026039", + "0x503f03e0e100503f03e0020e00df00503f03e0020de0920070cf005004", + "0x30e50070060050040030e40070060050040030e300503f03e0020e20b9", + "0x30e90070060050040030e80070060050040030390e70e6007006005004", + "0x50ef02802f0260ee0050ed02802f0260390ec0390eb0050070ea005004", + "0x30f20070060050040030f10070060050040030f0007006005004003006", + "0x2803a02a0310070810050040030f40070060050040030f3007006005004", + "0x305c0050f80050f702805702a0f600502902802f02602d00502d0050f5", + "0x700c0050040030fc0050fb00503c0050440030fa0050f900503c005044", + "0x310000700c0050040030ff00700c0050040030fe00700c0050040030fd", + "0x700c00500400310400510300503c00504400310200510100503c005044", + "0x310800700c00500400310700700c00500400310600700c005004003105", + "0x700c00500400310c00510b00503c00504400310a00510900503c005044", + "0x311000700c00500400310f00700c00500400310e00700c00500400310d", + "0x700c00500400311300502500503c00504400311200511100503c005044", + "0x311700700c00500400311600700c00500400311500700c005004003114", + "0x700c00500400311b00700c00500400303911a11900511800503c005044", + "0x2802f02600600502d00511e02803a02a02d00511d00511c02803a02a0cd", + "0x503c00503c00512202809902605c00512100512002805702a11f005029", + "0x500400312600512500503c00504400312400512300503c0050440030f6", + "0x700c00500400312900700c00500400312800700c00500400312700700c", + "0x700c00500400312d00700600500400312c00512b00503c00504400312a", + "0x700c00500400313100513000503c00504400312f00700c00500400312e", + "0x513500503c00504400313400700600500400313300700c005004003132", + "0x700c00500400313900700c00500400313800513700503c005044003136", + "0x313d00700600500400313c00700c00500400313b00700c00500400313a", + "0x314100700c00500400314000700600500400313f00513e00503c005044", + "0x514300503c00504400314300502400503c00504400314200700c005004", + "0x5081005081005081005081005029028145026144007081005004003143", + "0x514702802f0261460050350b3081005056055081005081005081005081", + "0x514d00514c02805702a02d00514b00514a005029028099026039149148", + "0x515600515500515400515300515200515100515000514f00514e00305c", + "0x500400315900708100500400315800708100500400314f005035034157", + "0x708100500400315c00708100500400315b00708100500400315a007081", + "0x514600502902805702615f00708100500400315e00708100500400315d", + "0x700600500400316200708100500400305c00516100516002805702a02d", + "0x3166007006005004003165007006005004003164007006005004003163", + "0x505605516900700c00500400316800700600500400316700700c005004", + "0x2a02d00516a00502902805702616c00516b02802f02616a0050350b308e", + "0x517002802f02616f0050350b303c00505605505c00516e00516d028057", + "0x305c00517400517302805702a02d00516a0051720050290280b7026171", + "0x500400317600700600500400317500700600500400302800700c005004", + "0x2802f02600500700c00500400300700700c005004003002178177007006", + "0x317b00700600500400317a00700600500400317900503f03e00c005029", + "0x505605517e00700600500400317d00700600500400317c007006005004", + "0x518200518200502902809902618100518002802f02617f0050350b3096", + "0x2618600518502802f0260590050350b305c00518400518302805702a0f6", + "0x503503405c00518900518802805702a0f6005187005187005029028099", + "0x519100519100519000518f00518e02818d02603918c18b00503503418a", + "0x500600518700500c005191005006005194028193026192005035034006", + "0x3e18a00503f03e18700508100508100518700500c005182005006005006", + "0x2602d00517f00519602805702a02d00518200519502803a02a19100503f", + "0x519a02803a02a05c00519900519802805702a197005187005029028057", + "0x305c00519d00519c02805702a19b00518700502902803a02602d005187", + "0x2802f02619f00700600500400300500708e00500400319e007006005004", + "0x70060050040031a20070060050040031a10070060050040030ee0051a0", + "0x1a50070070060050040030180070060050040031a40070060050040031a3", + "0x30021a91a80070060050040031a70070060050040031a6005035053039", + "0x50040031aa007006005004003005007081005004003007007081005004", + "0x2600c00500c00502902803a0261ac0070060050040030021ab013007006", + "0x261b10280270261b00070060050040030021af1ae0050060051ad02803a", + "0x700600500400305c0051b40051b302805702a0060051b200502902803a", + "0x1b90060050561b805c0051790051b702805702a1b60070060050040031b5", + "0x2a05c0051bd0051bc02805702a02d0050290281bb0260021ba0060050c4", + "0x51c002805702a1bf00518700502902803a02602d00518a0051be02803a", + "0x518b0051c302803a02a19100508e00508e0051c202809902605c0051c1", + "0x2a02d00508e00502902803a0261c400700600500400318b00503f03e02d", + "0x31c700700600500400302800708e00500400305c0051c60051c5028057", + "0x51cb0051ca02805702a02d0051b20050290281c90261c8007006005004", + "0x31ce0070060050040031cd0070060050040030391cc00600503505305c", + "0x51d10051d002805702a02d0050590050290280570261cf007006005004", + "0x70060050040031d300503f03e0021d218700503f03e05900503f03e05c", + "0x2805702a1d600518700502902805702602d0050590051d502805702a1d4", + "0x503f03e02d0051da0051d902803a02a00600503503405c0051d80051d7", + "0x30280070060050040030050070060050040031db007006005004003006", + "0x50040031dd0070060050040031dc007006005004003030007006005004", + "0x2805702a0391df02800708100500400318700502902802f0261de007006", + "0x50060051e402803a02a0391e31e200700600500400305c0051e10051e0", + "0x51ed0281ec1870050051eb0281ea0281e90281e80281e71e60021e502d", + "0x71f20060050051f10060050051f00060050051ef1ee0050051ed028005", + "0x71f202d0050051f50281f41f30050051ed1860050051ed0280071f3005", + "0x1860050051f90060050051ed0281f80281f71f30050051f60050071f3005", + "0x1fd0050051fc0060050051fb0060050051f91fa0050051f91da0050051f9", + "0x51ed0050071ff0050071f205c0050051f50580050051f50060050051fe", + "0x52042030050051fc0282022010050051ed0282001ff0050051ed1d3005", + "0x51f90590050052070282060282050810050051ed1fa005005204081005", + "0x590050051ed0280071ff0050071f21e10050051f51870050051f5059005", + "0x20a0050051fc02d0050051f92090050051fc2080050051fc0810050051f9", + "0x20e0050051fc20d0050051fc20c0050051fc20b0050051fc1870050051f9", + "0x51ed0280072130050071f202821200600500521102821000600500520f", + "0x2150310052141870050051ed2130050051f60050072130050071f2213005", + "0x51fc0282171910050051f91d60050051f61d80050051eb2160050051f6", + "0x521105900500520f18700500520f1d300500520f2190050051f9218005", + "0x52141870050052111d300500521121b0050051f921a0050051f9059005", + "0x2821f00600500521e1860050052041d10050051eb21d0050051f621c031", + "0x2210050051fc2200050051fc0580050051f905c0050051eb046031005214", + "0x51ed0050070f60050071f20282250282242230050051f92220050051fc", + "0x2270050051f90f60050051f90280070f60050071f22260050051f90f6005", + "0x51f92290050051f60480310052142270050051ed1b20050051f5028228", + "0x1910050051ed1fa0050051ed22d0050051fc02822c22b00700522a1cb005", + "0x52072300050051fc08e0050051f902822f22e0050051fc047031005214", + "0x282321c60050051f92310050051f604503100521408e0050051ed08e005", + "0x51f623703100521418b00500520f0282362350050051fc028234028233", + "0x51f61c10050051eb23a0050051f623903100521418b005005211238005", + "0x51ed1b20050051f91b200500520718b0050051f918a0050051f91bf005", + "0x51f91bd0050051f923c0050051f623b03100521418a0050051ed18b005", + "0x60050052432420050051ed02824102824023f03100521402823e23d005", + "0xc0050051f90282480282472460050051f92450310052142440050051ed", + "0x521402824b1790050051eb24a0050051f624903100521400c0050051ed", + "0x51fc24f03100521424e0310052140400050051ed24d03100521424c031", + "0x51fc1b40050051eb2530050051f62520310052142510050051fc250005", + "0x28255191005005204006005005204009031005214050031005214254005", + "0x2570050051ed2570050051f51ae0050051f505b0310052142560050051ed", + "0x2570050051f92570050052071ee0050051f10280050051f1058031005214", + "0xc0050051f11ae0050051eb1ae0050051f92570050051eb257005005204", + "0x25a0050051fc05c0310052140590310052142590050051ed2580050051fc", + "0x25c0310052140df0050051ed0e30050051ed0e10050051ed25b0050051fc", + "0x2600050051fc25f0050051fc25e03100521405c0050051ed25d031005214", + "0x2660050051fc0282650282640f60050051f62630050051ed028262028261", + "0x51f902826c26b0050051ed26a0050051fc0282690282682670050051fc", + "0x51ed0280072160050071f21d80050051f50280071d60050071f226d005", + "0x71f21d10050051f50050072160050071f20050071d60050071f2216005", + "0x2826e18700500520400500721d0050071f221d0050051ed02800721d005", + "0x51fc2290050051ed0280072290050071f21cb0050051f526f0050051fc", + "0x51fc2730050051fc0282722710050051fc0050072290050071f2270005", + "0x51f12750050051eb2750050051f92750050052072750050051f5274005", + "0x2780050051fc02827708e0050051f108e0050052042760050051fc0ee005", + "0x1c60050051f52310050051ed0050072310050071f227a0050051fc028279", + "0x2380050051ed0280072380050071f218b0050051f50280072310050071f2", + "0x51f619d0050051eb27b0050051f605e0310052140050072380050071f2", + "0x51eb27c0050051f606003100521417f0050051ed0960050051fb19b005", + "0x71f21820050051f517f0050051f917f0050052071970050051f6199005", + "0x2827e27d0050051f600500727d0050071f227d0050051ed02800727d005", + "0x2800723a0050071f21c10050051f50280071bf0050071f218a0050051f5", + "0x500723a0050071f20050071bf0050071f21820050051f923a0050051ed", + "0x51f02800050051ed02827f18a00500520f19100500520f02d0050051f1", + "0x520418b00500520718b0050051f018f0050051ed1920050051eb192005", + "0x51f91900050051f91910050052111900050051ed18b0050051eb18b005", + "0x520418a00500520718a00500521118a0050051f01910050051f1281005", + "0x51f605f0310052140282831870050051f102828218a0050051eb18a005", + "0x521e1820050051eb1820050052041820050051f11890050051eb284005", + "0x51f11840050051eb2850050051f605d0310052141820050051ed096005", + "0x2860050051fc23c0050051ed02800723c0050071f21bd0050051f5081005", + "0x51fc2890050051fc2880050051fc2870050051fc00500723c0050071f2", + "0x520f2460050051ed00600500528c22700500520428b0050051f928a005", + "0x17900500521128e0050051fc02828d00c0050052040240050051fc179005", + "0x24a0050051ed02800724a0050071f21790050051f502829102829002828f", + "0x51fc2930050051fc1790050051f900500724a0050071f22920050051fc", + "0x51ed03c0050051f51430050051fc03c0050051fb2950050051f9294005", + "0x51f516f0050051f916f00500520708e0050051fb03c0050051fe03c005", + "0x51eb2970050051f629603100521416a0050051ed1720050051ed172005", + "0x520716e0050051eb2990050051f62980310052141720050051f9174005", + "0x29c0050051fc03c0050051eb02829b29a0050051f516a0050051f916a005", + "0x3c0050051f929a0050051ed08e0050051fe29e0050051fc29d0050051fc", + "0x810050051fb2a20050051fc2a10050051fc2a00050051fc29f0050051fc", + "0x2a40050051f60420310052141460050051ed0810050051fe2a30050051fc", + "0x1460050051f91460050052071610050051eb0282a70280072a60050072a5", + "0x2a80050051f606703100521414b0050051ed14a0050051ed14a0050051f5", + "0x51eb14f0050051f02aa0050051ed0282a914a0050051f914d0050051eb", + "0x750050052070282ae2ad0050051fc2ac0050051fc2ab0050051fc14f005", + "0x2af0050051fc0740050051f90750050051f60750050051ed0750050051f9", + "0x3c0050052042b30050051fc2b20050051fc2b10050051fc2b00050051fc", + "0x51fc2b60050051fc1310050051fc2b50050051fc03c0050052070282b4", + "0x2bc0050051f52bb0050051fc2ba0050051fc2b90050051fc0282b82b7005", + "0x2be0050051f62bd03100521406f0050051ed2bc0050051ed06f0050051f5", + "0x51ed2c00050051f92c00050052070282bf11f0050051f61210050051eb", + "0x51fc2c20050051fc2c10050051fc11d0050051f92c00050051f62c0005", + "0x2c70050051fc2c60050051fc2c50050051fc10c0050051fc0282c42c3005", + "0x6903100521411d0050051ed2ca0050051fc2c90050051fc2c80050051fc", + "0x71f20060050052ce0282cd2cc0050051fc0f80050051f92cb0050051f6", + "0x1d30050051f12d00050051fc2cf0050051fc2530050051ed005007253005", + "0x51fc2d20050051fc2d10050051fc0280072530050071f21b40050051f5", + "0x282d52d40050051eb2d40050051f92d40050052072d40050051f52d3005", + "0xee0050052042d60050051eb2d60050051f92d60050052072d60050051f5", + "0x2db0050051fc2da0050051fc0282d90ee0050051f90282d82d70050051fc", + "0x51ed0282df1a60050052042de0050051fc2dd0050051fc1a60050052dc", + "0x51f90282e20282e126d0050051ed2e00050051fc1a60050051f91a6005", + "0x52e618f0050051f90ee0050051ed2e500700522a0282e40282e326b005", + "0x520f0e100500520f0b900500520f0e300500520f1da0050051ed006005", + "0x282ea2e90050051ed2e90050051f52e80050051fc2e70050051fc0df005", + "0x2ef0050051ed2ee0050051f50cf0050052ed2ec0050051fc0d20050052eb", + "0x2f30050051f92f20050051f92f10050051f90d20050052f02ee0050051ed", + "0x2f80050051fc2f70050051fc2f60050051f92f50050051f92f40050051f9", + "0xd40050051ed0d50050051ed2fb0050051fc2fa0050051fc0d20050052f9", + "0x52fe0df0050052110e30050052110dc0050d20050072fd0d20050052fc", + "0x52070283000da0050051ed0282ff0070070052fe0310070052fe00a007", + "0x52110680310052143010050051ed3010050051f53010050051f9301005", + "0x51ed0b90050051f53030050051fc3020050051fc0510050051fb0e1005", + "0x51fc3050050051fc0bf0050051eb3040050051f60060310052140b9005", + "0x51f90b90050052070b90050052113080050051fc3070050051fc306005", + "0x51f505100500521e0b60050052040b900500530a3090050052040b9005", + "0x51f93090050051f90b60050051f906f03100521430b0050051ed30b005", + "0xa90050052eb30f0050051fc2ef0050051f902830e30d0050051fc30c005", + "0x31200700522a3100050051f93110050051f90a90050052f03100050051ed", + "0x3170050051fc3160050051fc0060050053153140050051fc3130050051fc", + "0x31c0050051fc31b0050051fc31a0050051fc3190050051fc3180050051fc", + "0x19b0050071f200600500532031f0050051fc31e0050051fc31d0050051fc", + "0x27b0050071f227b0050051ed02800727b0050071f219d0050051f5028007", + "0x51f50280071970050071f200500719b0050071f23210050051fc005007", + "0x3220050051f607103100521427c0050051ed02800727c0050071f2199005", + "0x1890050051f500500727c0050071f20050071970050071f20960050051fe", + "0x960050051ef0050072840050071f22840050051ed0280072840050071f2", + "0x50073230050071f23230050051ed1810050051ed0280073230050071f2", + "0x960050051eb0960050052040960050051ed0960050051f03230050051f6", + "0x51f92850050051ed0280072850050071f21840050051f50960050051f9", + "0x3240050071f203c0050051ef1720050051eb0050072850050071f2181005", + "0x3240050051f60050073240050071f23240050051ed1710050051ed028007", + "0x51ed0050072970050071f232503100521403c0050051f103c0050051f0", + "0x3260050051fc08e00500521e0280072970050071f21740050051f5297005", + "0x32a0050051fc3290050051fc0850050051f90283280283270850050051ed", + "0x51ed0050072990050071f232c0050051fc08b0050051fc32b0050051fc", + "0x51fc3300050051fc32f0050051fc32e0050051fc32d0050051fc299005", + "0x52140860050051fc0283350283343330050051fc3320050051fc331005", + "0x8100500521e0280072990050071f216e0050051f53360050051fc074031", + "0x33a0050051fc3390050051fc0880050051fc3380050051fc3370050051fc", + "0x8c0050051fc33c0050051fc0850050051f133b0050051fc08a0050051fc", + "0x51fc3410050051fc02834008100508e00500733f02833e33d0050051fc", + "0x71f21610050051f53440050051fc3430050051fc075031005214342005", + "0x51fc0050072a40050071f23450050051fc2a40050051ed0280072a4005", + "0x1480050051ed0280073480050071f207d00500534714a0050051eb346005", + "0x2834907f0050051f13480050051f60050073480050071f23480050051ed", + "0x280072a80050071f214d0050051f52a80050051ed0050072a80050071f2", + "0x51f906f0050051f902834a2bc0050051eb2bc00500520414b0050051f9", + "0x500711f0050071f234b0050051fc0430050051fc0090050051f92bc005", + "0x51f60770310052142be0050051ed0280072be0050071f21210050051f5", + "0x51eb3250050051f634c0310052140740050051ed0770050051eb34c005", + "0x2bd0050051fc02800711f0050071f206f0050051eb06f005005207071005", + "0x51ed0420050052042980050051fc0670050051fc0050072be0050071f2", + "0x51fc2960050051f902834e34b03100521403c0050052dc02834d042005", + "0x280072cb0050071f20f80050051f502835002834f25d0050051fc25e005", + "0x51eb3010050052040420050051f90050072cb0050071f22cb0050051ed", + "0xbf0050051f50060050cf0050073510cf0050051f10cf0050051f9301005", + "0x51f60430310052140b90050051eb3040050051ed0280073040050071f2", + "0x51fe0283530b40050051f900c0050052dc02835205b0050051eb25c005", + "0x30b0050051eb0b90050051f10050073040050071f20590050051f1051005", + "0x51f530b0050051f90283540510050051f10510050051f00510050051ef", + "0x51fc0050073220050071f23220050051ed0280073220050071f2096005", + "0x24d0050051fc24e0050051fc08e00500c00500733f0090050051ed24f005", + "0x23b0050051fc23f0050051fc2450050051fc2490050051fc24c0050051fc", + "0x51fc2150050051fc21c0050051fc0283552370050051fc2390050051fc", + "0x34c0050071f20770050051f50280070750050071f2028358028357356005", + "0x750050071f23590050051fc00500734c0050071f234c0050051ed028007", + "0x51ed0360050051f90360050052070360050051f504000500520f005007", + "0x2835c04000500521107a03100521403600500535b03600500535a036005", + "0x71f23250050051ed0280073250050071f20710050051f535d0050051fc", + "0x1aa0050051fc0320050051ed35f0050051fc35e0050051f9005007325005", + "0x3610050073603610050051ed00c005361005007351032005032005007360", + "0x8100500733f2960050051ed2960050051f500c005084005007351032005", + "0x51fc3640050051fc3630050051f63630050051ed3630050053620c0005", + "0x51fc3690050051fc3680050051fc3670050051fc3660050051fc365005", + "0x51fc0920050051fc1c80050051fc04e0050051fc04d0050051fc030005", + "0x2800725c0050071f205b0050051f50070050051fc0310050051fc04f005", + "0x2836a07903100521400500725c0050071f20050050051fc25c0050051ed", + "0x2809204f0070cb00b00a00736b00700502800700502802836b005028028", + "0x536b00503100500a02800f00536b00500b00503102802836b005028007", + "0x500f00509202800a00536b00500a00504f02802836b00502800b028010", + "0x36b00502800702801300536904e1c800736b00701000500f02800f00536b", + "0x51c802804d00536b00504e00501002801400536b00500f005031028028", + "0x536b00501400509202801700536b00503000504e02803000536b00504d", + "0x2804d02836800536b00501700501402836900536b0051c8005013028018", + "0x2803002801b00536b00500f00503102802836b005028007028028020005", + "0x1800536b00501b00509202836700536b00501c00501702801c00536b005", + "0x36800501802836800536b00536700501402836900536b005013005013028", + "0x2802836b00502836902802836b00502800702801f0050b936600536b007", + "0x36600a00736802802000536b00502000509202802000536b005018005031", + "0x36b00502000503102802836b0050280070280230050ac36436500736b007", + "0xf02802d00536b00502d00509202836500536b00536500504f02802d005", + "0x2d00503102802836b00502800702808400531f0c036300736b007369005", + "0x36300536b0053630050130281aa00536b0050c000501002836100536b005", + "0x36300500f0281aa00536b0051aa00501b02836100536b005361005092028", + "0x36b00535f00501c02802836b00502800702835d00524e03235f00736b007", + "0x51aa00501f02802836b00536400536602802836b005032005367028028", + "0x2836502803300536b00502802002836c00536b00536100503102802836b", + "0x536b00500c03300736402800c00536b00500c00501b02800c00536b005", + "0x536302804000536b00503c03600702d02803600536b00502802302803c", + "0x536b00536c00509202836500536b00536500504f02835e00536b005040", + "0x36500a00535e00536b00535e00508402800700536b0050070050c002836c", + "0x36100503102802836b00535d00501c02802836b00502800702835e00736c", + "0x2835900536b00535900509202835600536b00502836102835900536b005", + "0x732d21c21500736b00735635936503135f02835600536b0053560051aa", + "0x1aa0051c802804700536b00521c00503102802836b005028007028048046", + "0x535d02802836b00502800b02823700536b00502803202804500536b005", + "0x504700509202823b36400736b00536400536c02823923700736b005237", + "0x2821500536b00521500504f02823900536b00523900503302804700536b", + "0x2800702824d24c24903133b24523f00736b00704523b23900704700b00c", + "0x2824e00536b00523f00503102823f00536b00523f00509202802836b005", + "0x24524e00a03c02823700536b00523700503302824e00536b00524e005092", + "0x2802836b00502800702805805b00903134405025224f03136b007364237", + "0x536b00524f00503102824f00536b00524f00509202802836b005028369", + "0x5c00736402805000536b00505000501b02805c00536b005028020028059", + "0x36b00525d00504002825e25d00736b00525c00503602825c00536b005050", + "0x535602806000536b00505e00535902805e00536b00525e00535e028028", + "0x536b00505900509202821500536b00521500504f02805f00536b005060", + "0x21500a00505f00536b00505f00508402825200536b0052520050c0028059", + "0x503102800900536b00500900509202802836b00502800702805f252059", + "0x536b00505b0050c002829600536b00505d00509202805d00536b005009", + "0x36b00502800702802808600502804d02804200536b005058005215028298", + "0x524900509202802836b00523700521c02802836b005364005366028028", + "0x2829600536b00506700509202806700536b00524900503102824900536b", + "0x36b00502836902804200536b00524d00521502829800536b00524c0050c0", + "0x536302806900536b0050422bd00702d0282bd00536b005028023028028", + "0x536b00529600509202821500536b00521500504f02806800536b005069", + "0x21500a00506800536b00506800508402829800536b0052980050c0028296", + "0x1aa00501f02802836b00536400536602802836b005028007028068298296", + "0x4602806f00536b00502802002800600536b00504800503102802836b005", + "0x36b00507106f00736402807100536b00507100501b02807100536b005028", + "0x36302807500536b00532507400702d02807400536b005028023028325005", + "0x36b00500600509202804600536b00504600504f02807700536b005075005", + "0xa00507700536b00507700508402800700536b0050070050c0028006005", + "0x536602802836b00508400501c02802836b005028007028077007006046", + "0x2834b00536b00502802002834c00536b00502d00503102802836b005364", + "0x504334b00736402804300536b00504300501b02804300536b005028048", + "0x2807f00536b00507a07900702d02807900536b00502802302807a00536b", + "0x534c00509202836500536b00536500504f02834800536b00507f005363", + "0x534800536b00534800508402800700536b0050070050c002834c00536b", + "0x3102802836b00536900501c02802836b00502800702834800734c36500a", + "0x36b00508100509202807d00536b00502300504f02808100536b005020005", + "0x2836b00502836902802836b00502800702802830400502804d028346005", + "0x36b00501800503102802836b00536900501c02802836b00501f005047028", + "0x2002834600536b00534500509202807d00536b00500a00504f028345005", + "0x34300536b00534300501b02834300536b00502804502834400536b005028", + "0x34100702d02834100536b00502802302834200536b005343344007364028", + "0x536b00507d00504f02808c00536b00533d00536302833d00536b005342", + "0x508402800700536b0050070050c002834600536b00534600509202807d", + "0x523702802836b00502800702808c00734607d00a00508c00536b00508c", + "0x2833b00536b00502802002833c00536b00509200503102802836b005031", + "0x508a33b00736402808a00536b00508a00501b02808a00536b005028046", + "0x2808800536b00533a33900702d02833900536b00502802302833a00536b", + "0x533c00509202804f00536b00504f00504f02833800536b005088005363", + "0x533800536b00533800508402800700536b0050070050c002833c00536b", + "0xa00736b00700502800700502802836b00502802802833800733c04f00a", + "0x2800f00536b00500b00503102802836b00502800702809204f00729f00b", + "0x500f00509202800a00536b00500a00504f02801000536b00503100500a", + "0x36b0050280070280130050ee04e1c800736b00701000500f02800f00536b", + "0x500f00503102802836b00504e00536702802836b0051c800501c028028", + "0x501b02803000536b00502836502804d00536b00502802002801400536b", + "0x536b00502802302801700536b00503004d00736402803000536b005030", + "0x4f02836800536b00536900536302836900536b00501701800702d028018", + "0x36b0050070050c002801400536b00501400509202800a00536b00500a005", + "0x502800702836800701400a00a00536800536b005368005084028007005", + "0x2836102801b00536b00500f00503102802836b00501300501c02802836b", + "0x1c00536b00501c0051aa02801b00536b00501b00509202801c00536b005", + "0x36b00502800702802001f00715736636700736b00701c01b00a03135f028", + "0x36400501b02836400536b00502823902836500536b005366005031028028", + "0x736b00736436700736802836500536b00536500509202836400536b005", + "0x280c000536b00536500503102802836b00502800702836300513502d023", + "0x736b00508400535d02836100536b00502823b02808400536b005028032", + "0x280c000536b0050c000509202835f02d00736b00502d00536c0281aa084", + "0x502300504f02836100536b00536100501b0281aa00536b0051aa005033", + "0x3336c03112b35d03200736b00736135f1aa0070c000b00c02802300536b", + "0x503200503102803200536b00503200509202802836b00502800702800c", + "0x3302803c00536b00503c00509202803600536b00502823f02803c00536b", + "0x8435d03c00b00c02803600536b00503600501b02808400536b005084005", + "0x9202802836b0050280070282153563590312ba35e04000736b00703602d", + "0x536b00502802002821c00536b00504000503102804000536b005040005", + "0x535e02802836b00504800504002804704800736b005046005036028046", + "0x536b00523700535602823700536b00504500535902804500536b005047", + "0x50c002821c00536b00521c00509202802300536b00502300504f028239", + "0x2823935e21c02300a00523900536b00523900508402835e00536b00535e", + "0x536b00535900503102835900536b00535900509202802836b005028007", + "0x50c002824500536b00523b00509202823f00536b00502300504f02823b", + "0x2802814600502804d02824c00536b00521500521502824900536b005356", + "0x2802836b00502d00536602802836b00508400521c02802836b005028007", + "0x502300504f02824d00536b00536c00503102836c00536b00536c005092", + "0x2824900536b0050330050c002824500536b00524d00509202823f00536b", + "0x2802836b00502800702802814600502804d02824c00536b00500c005215", + "0x536b00502824502824f00536b00502802002824e00536b005365005031", + "0x4f02805000536b00525224f00736402825200536b00525200501b028252", + "0x36b0050070050c002824500536b00524e00509202823f00536b005363005", + "0x702d02800900536b00502802302824c00536b005050005215028249005", + "0x36b00523f00504f02805800536b00505b00536302805b00536b00524c009", + "0x8402824900536b0052490050c002824500536b00524500509202823f005", + "0x3102802836b00502800702805824924523f00a00505800536b005058005", + "0x25c00536b00502804602805c00536b00502802002805900536b005020005", + "0x2802302825d00536b00525c05c00736402825c00536b00525c00501b028", + "0x536b00505e00536302805e00536b00525d25e00702d02825e00536b005", + "0x50c002805900536b00505900509202801f00536b00501f00504f028060", + "0x2806000705901f00a00506000536b00506000508402800700536b005007", + "0x5f00536b00509200503102802836b00503100523702802836b005028007", + "0x36b00529600501b02829600536b00502804602805d00536b005028020028", + "0x2d02804200536b00502802302829800536b00529605d007364028296005", + "0x504f00504f0282bd00536b00506700536302806700536b005298042007", + "0x2800700536b0050070050c002805f00536b00505f00509202804f00536b", + "0xb00536b0050282490282bd00705f04f00a0052bd00536b0052bd005084", + "0x2802836b00502802802802836b00502824c02809200536b005028249028", + "0x2802836b00502800702804e1c800736d01000f00736b007005028007005", + "0x36b00502800b02801400536b00503100500a02801300536b005010005031", + "0x500f02801300536b00501300509202800f00536b00500f00504f028028", + "0x501300503102802836b00502800702801700528403004d00736b007014", + "0x2836800536b0053690051c802836900536b00503000501002801800536b", + "0x504d00501302801c00536b00501800509202801b00536b00536800504e", + "0x2800702802828100502804d02836600536b00501b00501402836700536b", + "0x1702802000536b00502803002801f00536b00501300503102802836b005", + "0x36b00501700501302801c00536b00501f00509202836500536b005020005", + "0x536e04f00536b00736600501802836600536b005365005014028367005", + "0x536b00501c00503102802836b00502836902802836b005028007028364", + "0x24e02802300536b00502300509202804f00536b00504f09200724d028023", + "0x503102802836b0050280070280c000536f36302d00736b00704f00f007", + "0x536b00508400509202802d00536b00502d00504f02808400536b005023", + "0x2802836b00502800702835f0053701aa36100736b00736700500f028084", + "0xa00b00724d02800a00536b0051aa00501002803200536b005084005031", + "0x1302802836b00502800b02835d00536b00500a0051c802800a00536b005", + "0x36b00736100500f02803200536b00503200509202836100536b005361005", + "0x3c00536b00503200503102802836b00502800702800c00525903336c007", + "0x36c00501302804000536b00503c00509202803600536b00503300524f028", + "0x70280281b400502804d02835900536b00503600525202835e00536b005", + "0x2821500536b00502803002835600536b00503200503102802836b005028", + "0x500c00501302804000536b00535600509202821c00536b005215005050", + "0x37104600536b00735900500902835900536b00521c00525202835e00536b", + "0x36b00504000503102802836b00502836902802836b005028007028048005", + "0x535e02823700536b00502802002804500536b005046005010028047005", + "0x536b00502d00504f02823b00536b0050450051c802823900536b00535e", + "0x521502823900536b00523900505b02804700536b00504700509202802d", + "0x23723904702d00b05802823b00536b00523b00501b02823700536b005237", + "0x702824d00537224c00536b00724900505902824924523f03136b00523b", + "0x24f00736b00524c00505c02824e00536b00524500503102802836b005028", + "0x900537305000536b00725200525c02824e00536b00524e005092028252", + "0x36b00524f00500a02805b00536b00524e00503102802836b005028007028", + "0x20c05c05900736b00705800500f02805b00536b00505b005092028058005", + "0x505c00536702802836b00505900501c02802836b00502800702825c005", + "0x36300525d02802836b00535d00501f02802836b00505000504002802836b", + "0x36502825e00536b00502802002825d00536b00505b00503102802836b005", + "0x36b00505e25e00736402805e00536b00505e00501b02805e00536b005028", + "0x36302805d00536b00506005f00702d02805f00536b005028023028060005", + "0x36b00525d00509202823f00536b00523f00504f02829600536b00505d005", + "0xa00529600536b00529600508402800700536b0050070050c002825d005", + "0x503102802836b00525c00501c02802836b00502800702829600725d23f", + "0x29800536b00529800509202804200536b00502836102829800536b00505b", + "0x3742bd06700736b00704229823f03135f02804200536b0050420051aa028", + "0x503602800600536b0052bd00503102802836b005028007028068069007", + "0x536b00507100535e02802836b00506f00504002807106f00736b005050", + "0xb25e02806700536b00506700504f02800600536b005006005092028325", + "0x502800702804334b34c03137507707507403136b00732535d363007006", + "0x35902807a00536b00507400503102807400536b00507400509202802836b", + "0x36b00506700504f02807f00536b00507900535602807900536b005077005", + "0x8402807500536b0050750050c002807a00536b00507a005092028067005", + "0x9202802836b00502800702807f07507a06700a00507f00536b00507f005", + "0x536b00502802302834800536b00534c00503102834c00536b00534c005", + "0x4f02834600536b00507d00536302807d00536b00504308100702d028081", + "0x36b00534b0050c002834800536b00534800509202806700536b005067005", + "0x502800702834634b34806700a00534600536b00534600508402834b005", + "0x36300525d02802836b00535d00501f02802836b00505000504002802836b", + "0x4602834400536b00502802002834500536b00506800503102802836b005", + "0x36b00534334400736402834300536b00534300501b02834300536b005028", + "0x36302833d00536b00534234100702d02834100536b005028023028342005", + "0x36b00534500509202806900536b00506900504f02808c00536b00533d005", + "0xa00508c00536b00508c00508402800700536b0050070050c0028345005", + "0x523702802836b00500900504702802836b00502800702808c007345069", + "0x3102802836b00536300525d02802836b00535d00501f02802836b00524f", + "0x36b00533c00509202833b00536b00523f00504f02833c00536b00524e005", + "0x36b00536300525d02802836b00502800702802837600502804d02808a005", + "0x24d00536302833a00536b00524500503102802836b00535d00501f028028", + "0x33a00536b00533a00509202823f00536b00523f00504f02833900536b005", + "0x33a23f00a00533900536b00533900508402800700536b0050070050c0028", + "0x36b00504800504702802836b00502836902802836b005028007028339007", + "0x535e00501c02802836b00536300525d02802836b00535d00501f028028", + "0x9202833b00536b00502d00504f02808800536b00504000503102802836b", + "0x33700536b00502805e02833800536b00502802002808a00536b005088005", + "0x2802302833600536b00533733800736402833700536b00533700501b028", + "0x536b00508e00536302808e00536b00533608600702d02808600536b005", + "0x50c002808a00536b00508a00509202833b00536b00533b00504f028377", + "0x2837700708a33b00a00537700536b00537700508402800700536b005007", + "0x2802836b00536300525d02802836b00535f00501c02802836b005028007", + "0x536b00502802002833300536b00508400503102802836b00500b005060", + "0x33200736402833100536b00533100501b02833100536b005028048028332", + "0x536b00533032f00702d02832f00536b00502802302833000536b005331", + "0x509202802d00536b00502d00504f02832d00536b00532e00536302832e", + "0x536b00532d00508402800700536b0050070050c002833300536b005333", + "0x2836b00536700501c02802836b00502800702832d00733302d00a00532d", + "0x50c000504f02832c00536b00502300503102802836b00500b005060028", + "0x2800702802837800502804d02832b00536b00532c00509202808b00536b", + "0x36700501c02802836b00536400504702802836b00502836902802836b005", + "0x503102802836b00509200506002802836b00500b00506002802836b005", + "0x536b00532a00509202808b00536b00500f00504f02832a00536b00501c", + "0x532600501b02832600536b00502804502832900536b00502802002832b", + "0x2809300536b00502802302808500536b00532632900736402832600536b", + "0x8b00504f02832400536b00509500536302809500536b00508509300702d", + "0x700536b0050070050c002832b00536b00532b00509202808b00536b005", + "0x2836b00502800702832400732b08b00a00532400536b005324005084028", + "0x36b00503100523702802836b00500b00506002802836b005092005060028", + "0x502804602832300536b00502802002809800536b00504e005031028028", + "0x32200536b00509632300736402809600536b00509600501b02809600536b", + "0x31f00536302831f00536b00532232100702d02832100536b005028023028", + "0x9800536b0050980050920281c800536b0051c800504f02831e00536b005", + "0x981c800a00531e00536b00531e00508402800700536b0050070050c0028", + "0x502829602809200536b00502805d02800b00536b00502805f02831e007", + "0x2824902801400536b00502824902804e00536b00502824902801000536b", + "0x2802802802836b00502824c02801800536b00502824902803000536b005", + "0x2800702801c01b00737936836900736b00700502800700502802836b005", + "0x2836600536b00503100500a02836700536b00536800503102802836b005", + "0x536b00536700509202836900536b00536900504f02802836b00502800b", + "0x2802836b00502800702836500537a02001f00736b00736600500f028367", + "0x50230051c802802300536b00502000501002836400536b005367005031", + "0x280c000536b00536400509202836300536b00502d00504e02802d00536b", + "0x37b00502804d02836100536b00536300501402808400536b00501f005013", + "0x36b0050280300281aa00536b00536700503102802836b005028007028028", + "0x130280c000536b0051aa00509202803200536b00535f00501702835f005", + "0x36b00736100501802836100536b00503200501402808400536b005365005", + "0x503102802836b00502836902802836b00502800702835d00537c1c8005", + "0x36b00536c0050920281c800536b0051c804e00724d02836c00536b0050c0", + "0x36b00502800702803c00537d00c03300736b0071c836900724e02836c005", + "0x509202803300536b00503300504f02803600536b00536c005031028028", + "0x2800702835900537e35e04000736b00708400500f02803600536b005036", + "0x2804d00536b00535e00501002835600536b00503600503102802836b005", + "0x502800b02821500536b00504d0051c802804d00536b00504d03000724d", + "0xf02835600536b00535600509202804000536b00504000501302802836b", + "0x35600503102802836b00502800702804800537f04621c00736b007040005", + "0x23700536b00504700509202804500536b00504600524f02804700536b005", + "0x502804d02823b00536b00504500525202823900536b00521c005013028", + "0x502803002823f00536b00535600503102802836b005028007028028380", + "0x2823700536b00523f00509202824900536b00524500505002824500536b", + "0x723b00500902823b00536b00524900525202823900536b005048005013", + "0x24e00536b00523700503102802836b00502800702824d00538124c00536b", + "0x523900535e02825200536b00502802002824f00536b00524c005010028", + "0x2803300536b00503300504f02800900536b00524f0051c802805000536b", + "0x525200521502805000536b00505000505b02824e00536b00524e005092", + "0x500925205024e03300b05802800900536b00500900501b02825200536b", + "0x502800702825c00538205c00536b00705900505902805905805b03136b", + "0x2805e25e00736b00505c00505c02825d00536b00505800503102802836b", + "0x702806000538300f00536b00705e00525c02825d00536b00525d005092", + "0x5d00536b00525e00500a02805f00536b00525d00503102802836b005028", + "0x505f00509202800f00536b00500f01000729802802836b00502800b028", + "0x36b00502800702804200538429829600736b00705d00500f02805f00536b", + "0x51c80282bd00536b00529800501002806700536b00505f005031028028", + "0x536b00506700509202806800536b00506900504e02806900536b0052bd", + "0x2804d02807100536b00506800501402806f00536b005296005013028006", + "0x2803002832500536b00505f00503102802836b005028007028028385005", + "0x600536b00532500509202807500536b00507400501702807400536b005", + "0x7100501802807100536b00507500501402806f00536b005042005013028", + "0x2802836b00502836902802836b00502800702807700538601300536b007", + "0x34c00509202801300536b00501301400724d02834c00536b005006005031", + "0x2800702807a00538704334b00736b00701305b00724e02834c00536b005", + "0x2834b00536b00534b00504f02807900536b00534c00503102802836b005", + "0x2808100538834807f00736b00706f00500f02807900536b005079005092", + "0x536b00534800501002807d00536b00507900503102802836b005028007", + "0xb02834600536b0050170051c802801700536b00501701800724d028017", + "0x7d00536b00507d00509202807f00536b00507f00501302802836b005028", + "0x3102802836b00502800702834300538934434500736b00707f00500f028", + "0x36b00534200509202834100536b00534400524f02834200536b00507d005", + "0x4d02833c00536b00534100525202808c00536b00534500501302833d005", + "0x3002833b00536b00507d00503102802836b00502800702802838a005028", + "0x536b00533b00509202833a00536b00508a00505002808a00536b005028", + "0x500902833c00536b00533a00525202808c00536b00534300501302833d", + "0x2836b00502836902802836b00502800702808800538b33900536b00733c", + "0x502802002833700536b00533900501002833800536b00533d005031028", + "0x2808e00536b0053370051c802808600536b00508c00535e02833600536b", + "0x508600505b02833800536b00533800509202834b00536b00534b00504f", + "0x2808e00536b00508e00501b02833600536b00533600521502808600536b", + "0x536b00733200505902833233337703136b00508e33608633834b00b058", + "0x5c02832f00536b00533300503102802836b00502800702833000538c331", + "0x732d00525c02832f00536b00532f00509202832d32e00736b005331005", + "0x32b00536b00532f00503102802836b00502800702808b00538d32c00536b", + "0x32a00500f02832b00536b00532b00509202832a00536b00532e00500a028", + "0x36b00532900501c02802836b00502800702808500538e32632900736b007", + "0x500b00504202802836b00504300525d02802836b005326005367028028", + "0x34600501f02802836b00532c00504002802836b00509200506702802836b", + "0x525d02802836b00521500501f02802836b00500f00504002802836b005", + "0x2809500536b00502802002809300536b00532b00503102802836b00500c", + "0x532409500736402832400536b00532400501b02832400536b005028365", + "0x2809600536b00509832300702d02832300536b00502802302809800536b", + "0x509300509202837700536b00537700504f02832200536b005096005363", + "0x532200536b00532200508402800700536b0050070050c002809300536b", + "0x3102802836b00508500501c02802836b00502800702832200709337700a", + "0x536b00532100509202831f00536b00502836102832100536b00532b005", + "0x31d31e00736b00731f32137703135f02831f00536b00531f0051aa028321", + "0x3602831a00536b00531d00503102802836b00502800702831b31c00738f", + "0x36b00531800535e02802836b00531900504002831831900736b00500f005", + "0x25e02831e00536b00531e00504f02831a00536b00531a005092028317005", + "0x280070283100a931103139031331431603136b00731721500c00731a00b", + "0x280b000536b00531600503102831600536b00531600509202802836b005", + "0x530f00535e02802836b0050ac00504002830f0ac00736b00532c005036", + "0x2831300536b00531300505b0280b000536b0050b000509202830d00536b", + "0x70280b930b0b603139104f00a0b403136b00730d3460433140b000b25e", + "0x30900536b0050b40050310280b400536b0050b400509202802836b005028", + "0x530900509202831e00536b00531e00504f02830800536b005028020028", + "0x2831300536b00531300505b02830800536b00530800521502830900536b", + "0xa06802804f00536b00504f09200706902800a00536b00500a00b0072bd", + "0x53920bf00536b00730500500602830530630703136b00531330830931e", + "0x50bf00506f02830300536b00530600503102802836b005028007028304", + "0x2830700536b00530700504f02802836b00505100504702805130200736b", + "0x504f00505b02830200536b00530200521502830300536b005303005092", + "0x39500500602839539439303136b00504f30230330700a06802804f00536b", + "0x536b00539400503102802836b0050280070283960051e60dc00536b007", + "0x50470280cb0c900736b0050dc00506f0280c600536b0050280200280c7", + "0x2836b0050cf0050400283010cf00736b0050c900503602802836b0050cb", + "0x507402830c00536b00539700532502839730100736b005301005071028", + "0x36b0053980c600736402839800536b00539800501b02839800536b00530c", + "0x9202839300536b00539300504f0280d400536b00530100535e0282fb005", + "0x36b0052fb0052150280d400536b0050d400505b0280c700536b0050c7005", + "0x73990050060283990d52fa03136b0052fb0d40c739300a0750282fb005", + "0x2f100536b0050d500503102802836b0050280070282f700539a2f800536b", + "0xda00503602802836b0052ee0050470282ee0da00736b0052f800506f028", + "0x2ef00536b0050d200535e02802836b0052ec0050400280d22ec00736b005", + "0x2fa00504f0282f600536b0050db0053560280db00536b0052ef005359028", + "0xa00536b00500a0050c00282f100536b0052f10050920282fa00536b005", + "0x2836b0050280070282f600a2f12fa00a0052f600536b0052f6005084028", + "0x2fa00504f0282e800536b0052f70053630282e900536b0050d5005031028", + "0xa00536b00500a0050c00282e900536b0052e90050920282fa00536b005", + "0x2836b0050280070282e800a2e92fa00a0052e800536b0052e8005084028", + "0x534c0282f50df00736b0053960050770282e700536b005394005031028", + "0x2f300536b0052e70050920280e100536b00539300504f02802836b0050df", + "0x502804d0280e300536b0052f50052150282f200536b00500a0050c0028", + "0x530600503102802836b00504f00523702802836b00502800702802839b", + "0x2802836b0052e000534c0282de2e000736b0053040050770282f400536b", + "0x500a0050c00282f300536b0052f40050920280e100536b00530700504f", + "0x2800702802839b00502804d0280e300536b0052de0052150282f200536b", + "0x506702802836b00500b00504202802836b00531300523702802836b005", + "0x2dd00536b0050b60050310280b600536b0050b600509202802836b005092", + "0x30b0050c00282f300536b0052dd0050920280e100536b00531e00504f028", + "0x702802839b00502804d0280e300536b0050b90052150282f200536b005", + "0x6702802836b00500b00504202802836b00504300525d02802836b005028", + "0x2802836b00534600501f02802836b00532c00504002802836b005092005", + "0x531e00504f0281a600536b00531100503102831100536b005311005092", + "0x282f200536b0050a90050c00282f300536b0051a60050920280e100536b", + "0x50e32db00702d0282db00536b0050280230280e300536b005310005215", + "0x280e100536b0050e100504f0282d700536b0052da0053630282da00536b", + "0x52d70050840282f200536b0052f20050c00282f300536b0052f3005092", + "0x504300525d02802836b0050280070282d72f22f30e100a0052d700536b", + "0x32c00504002802836b00509200506702802836b00500b00504202802836b", + "0x501f02802836b00500f00504002802836b00534600501f02802836b005", + "0x280ea00536b00531b00503102802836b00500c00525d02802836b005215", + "0x536b0052d600501b0282d600536b0050280460280ee00536b005028020", + "0x702d0282d300536b0050280230282d400536b0052d60ee0073640282d6", + "0x36b00531c00504f0282d100536b0052d20053630282d200536b0052d42d3", + "0x8402800700536b0050070050c00280ea00536b0050ea00509202831c005", + "0x4702802836b0050280070282d10070ea31c00a0052d100536b0052d1005", + "0x2802836b00504300525d02802836b00532e00523702802836b00508b005", + "0x2836b00534600501f02802836b00509200506702802836b00500b005042", + "0x36b00500c00525d02802836b00521500501f02802836b00500f005040028", + "0x50920282cf00536b00537700504f0282d000536b00532f005031028028", + "0x525d02802836b00502800702802839c00502804d0282cc00536b0052d0", + "0x6702802836b00500b00504202802836b00504300525d02802836b00500c", + "0x2802836b00500f00504002802836b00534600501f02802836b005092005", + "0x36b0053300053630280f600536b00533300503102802836b00521500501f", + "0xc00280f600536b0050f600509202837700536b00537700504f0280f8005", + "0xf80070f637700a0050f800536b0050f800508402800700536b005007005", + "0x2802836b00508800504702802836b00502836902802836b005028007028", + "0x2836b00504300525d02802836b00500c00525d02802836b00500f005040", + "0x36b00521500501f02802836b00509200506702802836b00500b005042028", + "0x533d00503102802836b00508c00501c02802836b00534600501f028028", + "0x282cc00536b0052cb0050920282cf00536b00534b00504f0282cb00536b", + "0x536b0052c900501b0282c900536b00502834b0282ca00536b005028020", + "0x702d0280fc00536b0050280230280fa00536b0052c92ca0073640282c9", + "0x36b0052cf00504f0280f900536b0050fb0053630280fb00536b0050fa0fc", + "0x8402800700536b0050070050c00282cc00536b0052cc0050920282cf005", + "0x1c02802836b0050280070280f90072cc2cf00a0050f900536b0050f9005", + "0x2802836b00500c00525d02802836b00500f00504002802836b005081005", + "0x2836b00509200506702802836b00500b00504202802836b00504300525d", + "0x36b00507900503102802836b00501800506002802836b00521500501f028", + "0x10200501b02810200536b0050280430282c700536b0050280200282c8005", + "0x10300536b00502802302810400536b0051022c700736402810200536b005", + "0x504f0282c600536b00510100536302810100536b00510410300702d028", + "0x536b0050070050c00282c800536b0052c800509202834b00536b00534b", + "0x36b0050280070282c60072c834b00a0052c600536b0052c6005084028007", + "0x501800506002802836b00500c00525d02802836b00500f005040028028", + "0x21500501f02802836b00509200506702802836b00500b00504202802836b", + "0x4f0282c500536b00534c00503102802836b00506f00501c02802836b005", + "0x2839d00502804d02810b00536b0052c500509202810a00536b00507a005", + "0x2802836b00507700504702802836b00502836902802836b005028007028", + "0x2836b00501800506002802836b00500c00525d02802836b00500f005040", + "0x36b00521500501f02802836b00509200506702802836b00500b005042028", + "0x500600503102802836b00501400506002802836b00506f00501c028028", + "0x2810b00536b00510900509202810a00536b00505b00504f02810900536b", + "0x536b0052c300501b0282c300536b00502807a02810c00536b005028020", + "0x702d02811200536b0050280230282c200536b0052c310c0073640282c3", + "0x36b00510a00504f02802500536b00511300536302811300536b0052c2112", + "0x8402800700536b0050070050c002810b00536b00510b00509202810a005", + "0x4702802836b00502800702802500710b10a00a00502500536b005025005", + "0x2802836b00501800506002802836b00500c00525d02802836b005060005", + "0x2836b00521500501f02802836b00509200506702802836b00500b005042", + "0x36b00501000507902802836b00525e00523702802836b005014005060028", + "0x50920282c100536b00505b00504f02811100536b00525d005031028028", + "0x525d02802836b00502800702802839e00502804d02811d00536b005111", + "0x6702802836b00500b00504202802836b00501800506002802836b00500c", + "0x2802836b00501400506002802836b00521500501f02802836b005092005", + "0x36b00525c00536302811900536b00505800503102802836b005010005079", + "0xc002811900536b00511900509202805b00536b00505b00504f028118005", + "0x11800711905b00a00511800536b00511800508402800700536b005007005", + "0x2802836b00524d00504702802836b00502836902802836b005028007028", + "0x2836b00501800506002802836b00500c00525d02802836b005010005079", + "0x36b00521500501f02802836b00509200506702802836b00500b005042028", + "0x523700503102802836b00523900501c02802836b005014005060028028", + "0x2811d00536b0052c00050920282c100536b00503300504f0282c000536b", + "0x536b00512100501b02812100536b00502805e02811f00536b005028020", + "0x702d0282bc00536b0050280230282be00536b00512111f007364028121", + "0x36b0052c100504f0282ba00536b0052bb0053630282bb00536b0052be2bc", + "0x8402800700536b0050070050c002811d00536b00511d0050920282c1005", + "0x1c02802836b0050280070282ba00711d2c100a0052ba00536b0052ba005", + "0x2802836b00500c00525d02802836b00501000507902802836b005359005", + "0x2836b00509200506702802836b00500b00504202802836b005018005060", + "0x36b00503600503102802836b00503000506002802836b005014005060028", + "0x12500501b02812500536b00502804802812600536b005028020028124005", + "0x2b900536b00502802302812300536b00512512600736402812500536b005", + "0x504f02812c00536b0052b70053630282b700536b0051232b900702d028", + "0x536b0050070050c002812400536b00512400509202803300536b005033", + "0x36b00502800702812c00712403300a00512c00536b00512c005084028007", + "0x501800506002802836b00503000506002802836b005010005079028028", + "0x8400501c02802836b00509200506702802836b00500b00504202802836b", + "0x4f02812b00536b00536c00503102802836b00501400506002802836b005", + "0x2839f00502804d02813100536b00512b0050920282b600536b00503c005", + "0x2802836b00535d00504702802836b00502836902802836b005028007028", + "0x2836b00501800506002802836b00503000506002802836b005010005079", + "0x36b00508400501c02802836b00509200506702802836b00500b005042028", + "0x50c000503102802836b00504e00506002802836b005014005060028028", + "0x2813100536b0051300050920282b600536b00536900504f02813000536b", + "0x536b0052b300501b0282b300536b0050280450282b500536b005028020", + "0x702d02813600536b0050280230282b200536b0052b32b50073640282b3", + "0x36b0052b600504f02813700536b00513800536302813800536b0052b2136", + "0x8402800700536b0050070050c002813100536b0051310050920282b6005", + "0x7902802836b0050280070281370071312b600a00513700536b005137005", + "0x2802836b00501800506002802836b00503000506002802836b005010005", + "0x2836b00504e00506002802836b00509200506702802836b00500b005042", + "0x36b00501c00503102802836b00503100523702802836b005014005060028", + "0x2b000501b0282b000536b0050280460282b100536b005028020028135005", + "0x13f00536b0050280230282af00536b0052b02b10073640282b000536b005", + "0x504f0282ad00536b00513e00536302813e00536b0052af13f00702d028", + "0x536b0050070050c002813500536b00513500509202801b00536b00501b", + "0x36b0050280280282ad00713501b00a0052ad00536b0052ad005084028007", + "0x36b00502800702809204f0073a000b00a00736b007005028007005028028", + "0x2800b02801000536b00503100500a02800f00536b00500b005031028028", + "0x2800f00536b00500f00509202800a00536b00500a00504f02802836b005", + "0x503102802836b0050280070280130053a104e1c800736b00701000500f", + "0x536b00504d0051c802804d00536b00504e00501002801400536b00500f", + "0x501302801800536b00501400509202801700536b00503000504e028030", + "0x280283a200502804d02836800536b00501700501402836900536b0051c8", + "0x1c00536b00502803002801b00536b00500f00503102802836b005028007", + "0x1300501302801800536b00501b00509202836700536b00501c005017028", + "0x36600536b00736800501802836800536b00536700501402836900536b005", + "0x501800503102802836b00502836902802836b00502800702801f0053a3", + "0x36500736b00736600a00707f02802000536b00502000509202802000536b", + "0x4f02802d00536b00502000503102802836b0050280070280230053a4364", + "0x36b00736900500f02802d00536b00502d00509202836500536b005365005", + "0x36100536b00502d00503102802836b0050280070280840053a50c0363007", + "0x502800b02835f00536b0051aa0051c80281aa00536b0050c0005010028", + "0x9202836300536b00536300501302835f00536b00535f00501b02802836b", + "0x50280070280320053a602836b00735f00534802836100536b005361005", + "0x508102836c00536b00502803002835d00536b00536100503102802836b", + "0x536b00503300507d02800c00536b00535d00509202803300536b00536c", + "0x2836b00503200534602802836b0050280070280283a700502804d02803c", + "0x504000534502804000536b00502803002803600536b005361005031028", + "0x2803c00536b00535e00507d02800c00536b00503600509202835e00536b", + "0x2836902802836b0050280070282150053a835635900736b00736300500f", + "0x534402802836b00535600536702802836b00535900501c02802836b005", + "0x2821c00536b00500c00503102802836b00536400534302802836b00503c", + "0x536b00504800501b02804800536b00502836502804600536b005028020", + "0x702d02804500536b00502802302804700536b005048046007364028048", + "0x36b00536500504f02823900536b00523700536302823700536b005047045", + "0x8402800700536b0050070050c002821c00536b00521c005092028365005", + "0x1c02802836b00502800702823900721c36500a00523900536b005239005", + "0x23f00536b00502836102823b00536b00500c00503102802836b005215005", + "0x36503135f02823f00536b00523f0051aa02823b00536b00523b005092028", + "0x2836902802836b00502800702824d24c0073a924924500736b00723f23b", + "0x2824f00536b00503c00534202824e00536b00524900503102802836b005", + "0x36b0050070050c002824e00536b00524e00509202825200536b005028341", + "0x8c02824f00536b00524f00507d02836400536b00536400533d028007005", + "0x24500536b00524500504f02805b00905003136b00524f36425200724e00b", + "0x533b02802836b0050280070280590053aa05800536b00705b00533c028", + "0x2825c00536b00502802002805c00536b00505000503102802836b005058", + "0x525e00535e02802836b00525d00504002825e25d00736b00525c005036", + "0x2805f00536b00506000535602806000536b00505e00535902805e00536b", + "0x50090050c002805c00536b00505c00509202824500536b00524500504f", + "0x2800702805f00905c24500a00505f00536b00505f00508402800900536b", + "0x2829600536b00505900536302805d00536b00505000503102802836b005", + "0x50090050c002805d00536b00505d00509202824500536b00524500504f", + "0x2800702829600905d24500a00529600536b00529600508402800900536b", + "0x36400534302802836b00503c00534402802836b00502836902802836b005", + "0x4602804200536b00502802002829800536b00524d00503102802836b005", + "0x36b00506704200736402806700536b00506700501b02806700536b005028", + "0x36302806800536b0052bd06900702d02806900536b0050280230282bd005", + "0x36b00529800509202824c00536b00524c00504f02800600536b005068005", + "0xa00500600536b00500600508402800700536b0050070050c0028298005", + "0x534302802836b00508400501c02802836b00502800702800600729824c", + "0x2807100536b00502802002806f00536b00502d00503102802836b005364", + "0x532507100736402832500536b00532500501b02832500536b005028048", + "0x2807700536b00507407500702d02807500536b00502802302807400536b", + "0x506f00509202836500536b00536500504f02834c00536b005077005363", + "0x534c00536b00534c00508402800700536b0050070050c002806f00536b", + "0x3102802836b00536900501c02802836b00502800702834c00706f36500a", + "0x36b00534b00509202804300536b00502300504f02834b00536b005020005", + "0x2836b00502836902802836b0050280070280283ab00502804d02807a005", + "0x36b00501800503102802836b00536900501c02802836b00501f005047028", + "0x2002807a00536b00507900509202804300536b00500a00504f028079005", + "0x34800536b00534800501b02834800536b00502804502807f00536b005028", + "0x7d00702d02807d00536b00502802302808100536b00534807f007364028", + "0x536b00504300504f02834500536b00534600536302834600536b005081", + "0x508402800700536b0050070050c002807a00536b00507a005092028043", + "0x523702802836b00502800702834500707a04300a00534500536b005345", + "0x2834300536b00502802002834400536b00509200503102802836b005031", + "0x534234300736402834200536b00534200501b02834200536b005028046", + "0x2808c00536b00534133d00702d02833d00536b00502802302834100536b", + "0x534400509202804f00536b00504f00504f02833c00536b00508c005363", + "0x533c00536b00533c00508402800700536b0050070050c002834400536b", + "0xa00736b00700502800700502802836b00502802802833c00734404f00a", + "0x2800f00536b00500b00503102802836b00502800702809204f0073ac00b", + "0x500f00509202800a00536b00500a00504f02801000536b00503100500a", + "0x36b0050280070280130053ad04e1c800736b00701000500f02800f00536b", + "0x500f00503102802836b00504e00536702802836b0051c800501c028028", + "0x501b02803000536b00502836502804d00536b00502802002801400536b", + "0x536b00502802302801700536b00503004d00736402803000536b005030", + "0x4f02836800536b00536900536302836900536b00501701800702d028018", + "0x36b0050070050c002801400536b00501400509202800a00536b00500a005", + "0x502800702836800701400a00a00536800536b005368005084028007005", + "0x2836102801b00536b00500f00503102802836b00501300501c02802836b", + "0x1c00536b00501c0051aa02801b00536b00501b00509202801c00536b005", + "0x36b00502800702802001f0073ae36636700736b00701c01b00a03135f028", + "0x36400533a02836400536b00502808a02836500536b005366005031028028", + "0x9202836300536b00502803202802d00536b00502833902802300536b005", + "0x36b00502300508802836300536b00536300503302836500536b005365005", + "0xc02836700536b00536700504f02802d00536b00502d00501b028023005", + "0x502800702835f1aa3610313af0840c000736b00702d02336300736500b", + "0x2002803200536b0050c00050310280c000536b0050c000509202802836b", + "0x36b00536c00504002803336c00736b00535d00503602835d00536b005028", + "0x535602803c00536b00500c00535902800c00536b00503300535e028028", + "0x536b00503200509202836700536b00536700504f02803600536b00503c", + "0x36700a00503600536b00503600508402808400536b0050840050c0028032", + "0x503102836100536b00536100509202802836b005028007028036084032", + "0x536b00535f35e00702d02835e00536b00502802302804000536b005361", + "0x509202836700536b00536700504f02835600536b005359005363028359", + "0x536b0053560050840281aa00536b0051aa0050c002804000536b005040", + "0x536b00502000503102802836b0050280070283561aa04036700a005356", + "0x504600501b02804600536b00502804602821c00536b005028020028215", + "0x2804700536b00502802302804800536b00504621c00736402804600536b", + "0x1f00504f02823700536b00504500536302804500536b00504804700702d", + "0x700536b0050070050c002821500536b00521500509202801f00536b005", + "0x2836b00502800702823700721501f00a00523700536b005237005084028", + "0x36b00502802002823900536b00509200503102802836b005031005237028", + "0x736402823f00536b00523f00501b02823f00536b00502804602823b005", + "0x36b00524524900702d02824900536b00502802302824500536b00523f23b", + "0x9202804f00536b00504f00504f02824d00536b00524c00536302824c005", + "0x36b00524d00508402800700536b0050070050c002823900536b005239005", + "0x700502800700502802836b00502802802824d00723904f00a00524d005", + "0x36b00500b00503102802836b00502800702809204f0073b000b00a00736b", + "0xa00504f02802836b00502800b02801000536b00503100500a02800f005", + "0x1c800736b00701000500f02800f00536b00500f00509202800a00536b005", + "0x1002801400536b00500f00503102802836b0050280070280130053b104e", + "0x36b00503000504e02803000536b00504d0051c802804d00536b00504e005", + "0x1402836900536b0051c800501302801800536b005014005092028017005", + "0x3102802836b0050280070280283b200502804d02836800536b005017005", + "0x536b00501c00501702801c00536b00502803002801b00536b00500f005", + "0x501402836900536b00501300501302801800536b00501b005092028367", + "0x502800702801f0053b336600536b00736800501802836800536b005367", + "0x2000509202802000536b00501800503102802836b00502836902802836b", + "0x280070280230053b436436500736b00736600a00724e02802000536b005", + "0x504f02802836b00502800b02802d00536b00502000503102802836b005", + "0x736b00736900500f02802d00536b00502d00509202836500536b005365", + "0x2836100536b00502d00503102802836b0050280070280840053b50c0363", + "0x535f00504e02835f00536b0051aa0051c80281aa00536b0050c0005010", + "0x2836c00536b00536300501302835d00536b00536100509202803200536b", + "0x2802836b0050280070280283b600502804d02803300536b005032005014", + "0x36b00503c00501702803c00536b00502803002800c00536b00502d005031", + "0x1402836c00536b00508400501302835d00536b00500c005092028036005", + "0x2800702835e0053b704000536b00703300501802803300536b005036005", + "0x2835900536b00535900509202835900536b00535d00503102802836b005", + "0x3102802836b00502800702821c0053b821535600736b00704036500707f", + "0x36b00504600509202835600536b00535600504f02804600536b005359005", + "0x2836b0050280070280450053b904704800736b00736c00500f028046005", + "0x2836b00504700536702802836b00504800501c02802836b005028369028", + "0x36b00504600503102802836b00536400525d02802836b005215005343028", + "0x23b00501b02823b00536b00502836502823900536b005028020028237005", + "0x24500536b00502802302823f00536b00523b23900736402823b00536b005", + "0x504f02824c00536b00524900536302824900536b00523f24500702d028", + "0x536b0050070050c002823700536b00523700509202835600536b005356", + "0x36b00502800702824c00723735600a00524c00536b00524c005084028007", + "0x502836102824d00536b00504600503102802836b00504500501c028028", + "0x2824e00536b00524e0051aa02824d00536b00524d00509202824e00536b", + "0x2836b0050280070280090500073ba25224f00736b00724e24d35603135f", + "0x536b00502834102805b00536b00525200503102802836b005028369028", + "0x533802800700536b0050070050c002805b00536b00505b005092028058", + "0x36405800705b00b33702821500536b00521500533d02836400536b005364", + "0x725c00533c02824f00536b00524f00504f02825c05c05903136b005215", + "0x2802836b00525d00533b02802836b00502800702825e0053bb25d00536b", + "0x36b00506000503602806000536b00502802002805e00536b005059005031", + "0x35902829600536b00505d00535e02802836b00505f00504002805d05f007", + "0x36b00524f00504f02804200536b00529800535602829800536b005296005", + "0x8402805c00536b00505c0050c002805e00536b00505e00509202824f005", + "0x3102802836b00502800702804205c05e24f00a00504200536b005042005", + "0x36b00524f00504f0282bd00536b00525e00536302806700536b005059005", + "0x8402805c00536b00505c0050c002806700536b00506700509202824f005", + "0x36902802836b0050280070282bd05c06724f00a0052bd00536b0052bd005", + "0x3102802836b00536400525d02802836b00521500534302802836b005028", + "0x600536b00502804602806800536b00502802002806900536b005009005", + "0x2802302806f00536b00500606800736402800600536b00500600501b028", + "0x536b00532500536302832500536b00506f07100702d02807100536b005", + "0x50c002806900536b00506900509202805000536b00505000504f028074", + "0x2807400706905000a00507400536b00507400508402800700536b005007", + "0x25d02802836b00536c00501c02802836b00502836902802836b005028007", + "0x536b00521c00504f02807500536b00535900503102802836b005364005", + "0x36b0050280070280283bc00502804d02834c00536b005075005092028077", + "0x36b00536c00501c02802836b00535e00504702802836b005028369028028", + "0x36500504f02834b00536b00535d00503102802836b00536400525d028028", + "0x2804300536b00502802002834c00536b00534b00509202807700536b005", + "0x507a04300736402807a00536b00507a00501b02807a00536b005028048", + "0x2834800536b00507907f00702d02807f00536b00502802302807900536b", + "0x534c00509202807700536b00507700504f02808100536b005348005363", + "0x508100536b00508100508402800700536b0050070050c002834c00536b", + "0x3102802836b00536900501c02802836b00502800702808100734c07700a", + "0x36b00507d00509202834600536b00502300504f02807d00536b005020005", + "0x2836b00502836902802836b0050280070280283bd00502804d028345005", + "0x36b00501800503102802836b00536900501c02802836b00501f005047028", + "0x2002834500536b00534400509202834600536b00500a00504f028344005", + "0x34200536b00534200501b02834200536b00502804502834300536b005028", + "0x33d00702d02833d00536b00502802302834100536b005342343007364028", + "0x536b00534600504f02833c00536b00508c00536302808c00536b005341", + "0x508402800700536b0050070050c002834500536b005345005092028346", + "0x523702802836b00502800702833c00734534600a00533c00536b00533c", + "0x2808a00536b00502802002833b00536b00509200503102802836b005031", + "0x533a08a00736402833a00536b00533a00501b02833a00536b005028046", + "0x2833800536b00533908800702d02808800536b00502802302833900536b", + "0x533b00509202804f00536b00504f00504f02833700536b005338005363", + "0x533700536b00533700508402800700536b0050070050c002833b00536b", + "0x2809200536b00502824902800b00536b00502824902833700733b04f00a", + "0xf00736b00700502800700502802836b00502802802802836b00502824c", + "0x2801300536b00501000503102802836b00502800702804e1c80073be010", + "0x536b00500f00504f02802836b00502800b02801400536b00503100500a", + "0x53bf03004d00736b00701400500f02801300536b00501300509202800f", + "0x503000501002801800536b00501300503102802836b005028007028017", + "0x2801b00536b00536800504e02836800536b0053690051c802836900536b", + "0x501b00501402836700536b00504d00501302801c00536b005018005092", + "0x501300503102802836b0050280070280283c000502804d02836600536b", + "0x9202836500536b00502000501702802000536b00502803002801f00536b", + "0x36b00536500501402836700536b00501700501302801c00536b00501f005", + "0x2802836b0050280070283640053c104f00536b007366005018028366005", + "0x36b00504f09200724d02802300536b00501c00503102802836b005028369", + "0x36302d00736b00704f00f00724e02802300536b00502300509202804f005", + "0x504f02808400536b00502300503102802836b0050280070280c00053c2", + "0x736b00736700500f02808400536b00508400509202802d00536b00502d", + "0x2803200536b00508400503102802836b00502800702835f0053c31aa361", + "0xa0051c802800a00536b00500a00b00724d02800a00536b0051aa005010", + "0x9202836100536b00536100501302802836b00502800b02835d00536b005", + "0x702800c0053c403336c00736b00736100500f02803200536b005032005", + "0x3600536b00503300524f02803c00536b00503200503102802836b005028", + "0x3600525202835e00536b00536c00501302804000536b00503c005092028", + "0x3200503102802836b0050280070280283c500502804d02835900536b005", + "0x2821c00536b00521500505002821500536b00502803002835600536b005", + "0x521c00525202835e00536b00500c00501302804000536b005356005092", + "0x2836b0050280070280480053c604600536b00735900500902835900536b", + "0x36b00504600501002804700536b00504000503102802836b005028369028", + "0x51c802823900536b00535e00535e02823700536b005028020028045005", + "0x536b00504700509202802d00536b00502d00504f02823b00536b005045", + "0x501b02823700536b00523700521502823900536b00523900505b028047", + "0x2824924523f03136b00523b23723904702d00b05802823b00536b00523b", + "0x24500503102802836b00502800702824d0053c724c00536b007249005059", + "0x536b00524e00509202825224f00736b00524c00505c02824e00536b005", + "0x3102802836b0050280070280090053c805000536b00725200525c02824e", + "0x36b00505b00509202805800536b00524f00500a02805b00536b00524e005", + "0x2836b00502800702825c0053c905c05900736b00705800500f02805b005", + "0x36b00505000504002802836b00505c00536702802836b00505900501c028", + "0x505b00503102802836b00536300525d02802836b00535d00501f028028", + "0x501b02805e00536b00502836502825e00536b00502802002825d00536b", + "0x536b00502802302806000536b00505e25e00736402805e00536b00505e", + "0x4f02829600536b00505d00536302805d00536b00506005f00702d02805f", + "0x36b0050070050c002825d00536b00525d00509202823f00536b00523f005", + "0x502800702829600725d23f00a00529600536b005296005084028007005", + "0x2836102829800536b00505b00503102802836b00525c00501c02802836b", + "0x4200536b0050420051aa02829800536b00529800509202804200536b005", + "0x36b0050280070280680690073ca2bd06700736b00704229823f03135f028", + "0x4002807106f00736b00505000503602800600536b0052bd005031028028", + "0x2802836b00502800b02832500536b00507100535e02802836b00506f005", + "0x700600b25e02806700536b00506700504f02800600536b005006005092", + "0x2836b00502800702804334b34c0313cb07707507403136b00732535d363", + "0x507400503102807400536b00507400509202802836b005077005237028", + "0x501b02807f00536b00502833602807900536b00502802002807a00536b", + "0x36b00507a00509202834800536b00507f07900736402807f00536b00507f", + "0x4d02834600536b00534800521502807d00536b0050750050c0028081005", + "0x3102834c00536b00534c00509202802836b0050280070280283cc005028", + "0x36b00534b0050c002808100536b00534500509202834500536b00534c005", + "0x502802302802836b00502836902834600536b00504300521502807d005", + "0x34200536b00534300536302834300536b00534634400702d02834400536b", + "0x7d0050c002808100536b00508100509202806700536b00506700504f028", + "0x702834207d08106700a00534200536b00534200508402807d00536b005", + "0x25d02802836b00535d00501f02802836b00505000504002802836b005028", + "0x33d00536b00502802002834100536b00506800503102802836b005363005", + "0x8c33d00736402808c00536b00508c00501b02808c00536b005028046028", + "0x8a00536b00533c33b00702d02833b00536b00502802302833c00536b005", + "0x34100509202806900536b00506900504f02833a00536b00508a005363028", + "0x33a00536b00533a00508402800700536b0050070050c002834100536b005", + "0x2802836b00500900504702802836b00502800702833a00734106900a005", + "0x2836b00536300525d02802836b00535d00501f02802836b00524f005237", + "0x33900509202808800536b00523f00504f02833900536b00524e005031028", + "0x36300525d02802836b0050280070280283cd00502804d02833800536b005", + "0x36302833700536b00524500503102802836b00535d00501f02802836b005", + "0x36b00533700509202823f00536b00523f00504f02833600536b00524d005", + "0xa00533600536b00533600508402800700536b0050070050c0028337005", + "0x4800504702802836b00502836902802836b00502800702833600733723f", + "0x501c02802836b00536300525d02802836b00535d00501f02802836b005", + "0x8800536b00502d00504f02808600536b00504000503102802836b00535e", + "0x36b00502805e02808e00536b00502802002833800536b005086005092028", + "0x2833300536b00537708e00736402837700536b00537700501b028377005", + "0x533100536302833100536b00533333200702d02833200536b005028023", + "0x2833800536b00533800509202808800536b00508800504f02833000536b", + "0x733808800a00533000536b00533000508402800700536b0050070050c0", + "0x36b00536300525d02802836b00535f00501c02802836b005028007028330", + "0x502802002832f00536b00508400503102802836b00500b005060028028", + "0x36402832d00536b00532d00501b02832d00536b00502804802832e00536b", + "0x532c08b00702d02808b00536b00502802302832c00536b00532d32e007", + "0x2802d00536b00502d00504f02832a00536b00532b00536302832b00536b", + "0x532a00508402800700536b0050070050c002832f00536b00532f005092", + "0x536700501c02802836b00502800702832a00732f02d00a00532a00536b", + "0x504f02832900536b00502300503102802836b00500b00506002802836b", + "0x280283ce00502804d02808500536b00532900509202832600536b0050c0", + "0x1c02802836b00536400504702802836b00502836902802836b005028007", + "0x2802836b00509200506002802836b00500b00506002802836b005367005", + "0x509300509202832600536b00500f00504f02809300536b00501c005031", + "0x501b02832400536b00502804502809500536b00502802002808500536b", + "0x536b00502802302809800536b00532409500736402832400536b005324", + "0x4f02832200536b00509600536302809600536b00509832300702d028323", + "0x36b0050070050c002808500536b00508500509202832600536b005326005", + "0x502800702832200708532600a00532200536b005322005084028007005", + "0x3100523702802836b00500b00506002802836b00509200506002802836b", + "0x4602831f00536b00502802002832100536b00504e00503102802836b005", + "0x36b00531e31f00736402831e00536b00531e00501b02831e00536b005028", + "0x36302831b00536b00531d31c00702d02831c00536b00502802302831d005", + "0x36b0053210050920281c800536b0051c800504f02831a00536b00531b005", + "0xa00531a00536b00531a00508402800700536b0050070050c0028321005", + "0x24c02809200536b00502824902800b00536b00502829602831a0073211c8", + "0x1000f00736b00700502800700502802836b00502802802802836b005028", + "0xa02801300536b00501000503102802836b00502800702804e1c80073cf", + "0xf00536b00500f00504f02802836b00502800b02801400536b005031005", + "0x170053d003004d00736b00701400500f02801300536b005013005092028", + "0x36b00503000524f02801800536b00501300503102802836b005028007028", + "0x25202801b00536b00504d00501302836800536b005018005092028369005", + "0x3102802836b0050280070280283d100502804d02801c00536b005369005", + "0x536b00536600505002836600536b00502803002836700536b005013005", + "0x525202801b00536b00501700501302836800536b00536700509202801f", + "0x50280070283650053d202000536b00701c00500902801c00536b00501f", + "0x2000501002836400536b00536800503102802836b00502836902802836b", + "0x536b00504f0051c802804f00536b00504f09200724d02804f00536b005", + "0x3d336302d00736b00702300f00708602836400536b005364005092028023", + "0x502800b02808400536b00536400503102802836b0050280070280c0005", + "0xf02808400536b00508400509202802d00536b00502d00504f02802836b", + "0x8400503102802836b00502800702835f0053d41aa36100736b00701b005", + "0x36c00536b00503200509202835d00536b0051aa00524f02803200536b005", + "0x502804d02800c00536b00535d00525202803300536b005361005013028", + "0x502803002803c00536b00508400503102802836b0050280070280283d5", + "0x2836c00536b00503c00509202804000536b00503600505002803600536b", + "0x700c00500902800c00536b00504000525202803300536b00535f005013", + "0x35600536b00536c00503102802836b0050280070283590053d635e00536b", + "0x503300535e02821c00536b00502802002821500536b00535e005010028", + "0x2802d00536b00502d00504f02804800536b0052150051c802804600536b", + "0x521c00521502804600536b00504600505b02835600536b005356005092", + "0x504821c04635602d00b05802804800536b00504800501b02821c00536b", + "0x502800702823b0053d723900536b00723700505902823704504703136b", + "0x2824924500736b00523900505c02823f00536b00504500503102802836b", + "0x702824c0053d800a00536b00724900525c02823f00536b00523f005092", + "0x24e00536b00524500500a02824d00536b00523f00503102802836b005028", + "0x524d00509202800a00536b00500a00b00729802802836b00502800b028", + "0x36b0050280070280500053d925224f00736b00724e00500f02824d00536b", + "0x509202805b00536b00525200524f02800900536b00524d005031028028", + "0x536b00505b00525202805900536b00524f00501302805800536b005009", + "0x536b00524d00503102802836b0050280070280283da00502804d02805c", + "0x25c00509202825e00536b00525d00505002825d00536b00502803002825c", + "0x5c00536b00525e00525202805900536b00505000501302805800536b005", + "0x2836902802836b0050280070280600053db05e00536b00705c005009028", + "0x2805d00536b00505e00501002805f00536b00505800503102802836b005", + "0x36b00505d0051c802829800536b00505900535e02829600536b005028020", + "0x5b02805f00536b00505f00509202804700536b00504700504f028042005", + "0x36b00504200501b02829600536b00529600521502829800536b005298005", + "0x690050590280692bd06703136b00504229629805f04700b058028042005", + "0x536b0052bd00503102802836b0050280070280060053dc06800536b007", + "0x25c02806f00536b00506f00509202832507100736b00506800505c02806f", + "0x506f00503102802836b0050280070280750053dd07400536b007325005", + "0x2807700536b00507700509202834c00536b00507100500a02807700536b", + "0x501c02802836b00502800702807a0053de04334b00736b00734c00500f", + "0x8e02802836b00500a00504002802836b00504300536702802836b00534b", + "0x7900536b00507700503102802836b00507400504002802836b005363005", + "0x36b00534800501b02834800536b00502836502807f00536b005028020028", + "0x2d02807d00536b00502802302808100536b00534807f007364028348005", + "0x506700504f02834500536b00534600536302834600536b00508107d007", + "0x2800700536b0050070050c002807900536b00507900509202806700536b", + "0x2802836b00502800702834500707906700a00534500536b005345005084", + "0x536b00502836102834400536b00507700503102802836b00507a00501c", + "0x3135f02834300536b0053430051aa02834400536b005344005092028343", + "0x3102802836b00502800702808c33d0073df34134200736b007343344067", + "0x736b00507400503602833b00536b00502837702833c00536b005341005", + "0x8e02808833900736b00536300533302802836b00508a00504002833a08a", + "0x36b00533800504002833733800736b00500a00503602802836b005339005", + "0x50c002833c00536b00533c00509202834200536b00534200504f028028", + "0x536b00533a00501302833b00536b00533b00533202800700536b005007", + "0x9233102833700536b00533700501302808800536b00508800533202833a", + "0x36b00737700533002837708e08633600a36b00533708833a33b00733c342", + "0x3102802836b00533300532f02802836b0050280070283320053e0333005", + "0x736b00533000503602833000536b00502802002833100536b005086005", + "0x535902832d00536b00532e00535e02802836b00532f00504002832e32f", + "0x536b00533600504f02808b00536b00532c00535602832c00536b00532d", + "0x508402808e00536b00508e0050c002833100536b005331005092028336", + "0x503102802836b00502800702808b08e33133600a00508b00536b00508b", + "0x536b00533600504f02832a00536b00533200536302832b00536b005086", + "0x508402808e00536b00508e0050c002832b00536b00532b005092028336", + "0x504002802836b00502800702832a08e32b33600a00532a00536b00532a", + "0x3102802836b00507400504002802836b00536300508e02802836b00500a", + "0x8500536b00502804602832600536b00502802002832900536b00508c005", + "0x2802302809300536b00508532600736402808500536b00508500501b028", + "0x536b00532400536302832400536b00509309500702d02809500536b005", + "0x50c002832900536b00532900509202833d00536b00533d00504f028098", + "0x2809800732933d00a00509800536b00509800508402800700536b005007", + "0x2802836b00507100523702802836b00507500504702802836b005028007", + "0x536b00506f00503102802836b00536300508e02802836b00500a005040", + "0x2804d02832200536b00532300509202809600536b00506700504f028323", + "0x36300508e02802836b00500a00504002802836b0050280070280283e1005", + "0x2831f00536b00500600536302832100536b0052bd00503102802836b005", + "0x50070050c002832100536b00532100509202806700536b00506700504f", + "0x2800702831f00732106700a00531f00536b00531f00508402800700536b", + "0xa00504002802836b00506000504702802836b00502836902802836b005", + "0x503102802836b00505900501c02802836b00536300508e02802836b005", + "0x536b00531e00509202809600536b00504700504f02831e00536b005058", + "0x531c00501b02831c00536b00502805e02831d00536b005028020028322", + "0x2831a00536b00502802302831b00536b00531c31d00736402831c00536b", + "0x9600504f02831800536b00531900536302831900536b00531b31a00702d", + "0x700536b0050070050c002832200536b00532200509202809600536b005", + "0x2836b00502800702831800732209600a00531800536b005318005084028", + "0x36b00524500523702802836b00536300508e02802836b00524c005047028", + "0x4700504f02831700536b00523f00503102802836b00500b005079028028", + "0x70280283e200502804d02831400536b00531700509202831600536b005", + "0x3102802836b00500b00507902802836b00536300508e02802836b005028", + "0x36b00504700504f02831100536b00523b00536302831300536b005045005", + "0x8402800700536b0050070050c002831300536b005313005092028047005", + "0x36902802836b00502800702831100731304700a00531100536b005311005", + "0x8e02802836b00500b00507902802836b00535900504702802836b005028", + "0xa900536b00536c00503102802836b00503300501c02802836b005363005", + "0x502802002831400536b0050a900509202831600536b00502d00504f028", + "0x3640280b000536b0050b000501b0280b000536b00502804802831000536b", + "0x50ac30f00702d02830f00536b0050280230280ac00536b0050b0310007", + "0x2831600536b00531600504f0280b400536b00530d00536302830d00536b", + "0x50b400508402800700536b0050070050c002831400536b005314005092", + "0x500b00507902802836b0050280070280b400731431600a0050b400536b", + "0x504f0280b600536b00536400503102802836b00501b00501c02802836b", + "0x280283e300502804d0280b900536b0050b600509202830b00536b0050c0", + "0x7902802836b00536500504702802836b00502836902802836b005028007", + "0x2802836b00509200506002802836b00501b00501c02802836b00500b005", + "0x530900509202830b00536b00500f00504f02830900536b005368005031", + "0x501b02830700536b00502804502830800536b0050280200280b900536b", + "0x536b00502802302830600536b00530730800736402830700536b005307", + "0x4f02830400536b0050bf0053630280bf00536b00530630500702d028305", + "0x36b0050070050c00280b900536b0050b900509202830b00536b00530b005", + "0x50280070283040070b930b00a00530400536b005304005084028007005", + "0x3100523702802836b00509200506002802836b00500b00507902802836b", + "0x4602830200536b00502802002830300536b00504e00503102802836b005", + "0x36b00505130200736402805100536b00505100501b02805100536b005028", + "0x36302839500536b00539339400702d02839400536b005028023028393005", + "0x36b0053030050920281c800536b0051c800504f0280dc00536b005395005", + "0xa0050dc00536b0050dc00508402800700536b0050070050c0028303005", + "0xb00a00736b00700502800700502802836b0050280280280dc0073031c8", + "0xa02800f00536b00500b00503102802836b00502800702809204f0073e4", + "0xa00536b00500a00504f02802836b00502800b02801000536b005031005", + "0x130053e504e1c800736b00701000500f02800f00536b00500f005092028", + "0x36b00504e00501002801400536b00500f00503102802836b005028007028", + "0x9202801700536b00503000504e02803000536b00504d0051c802804d005", + "0x36b00501700501402836900536b0051c800501302801800536b005014005", + "0x36b00500f00503102802836b0050280070280283e600502804d028368005", + "0x509202836700536b00501c00501702801c00536b00502803002801b005", + "0x536b00536700501402836900536b00501300501302801800536b00501b", + "0x36902802836b00502800702801f0053e736600536b007368005018028368", + "0x2000536b00502000509202802000536b00501800503102802836b005028", + "0x2802836b0050280070280230053e836436500736b00736600a00724e028", + "0x536b00536500504f02802836b00502800b02802d00536b005020005031", + "0x53e90c036300736b00736900500f02802d00536b00502d005092028365", + "0x50c000501002836100536b00502d00503102802836b005028007028084", + "0x2803200536b00535f00504e02835f00536b0051aa0051c80281aa00536b", + "0x503200501402836c00536b00536300501302835d00536b005361005092", + "0x502d00503102802836b0050280070280283ea00502804d02803300536b", + "0x9202803600536b00503c00501702803c00536b00502803002800c00536b", + "0x36b00503600501402836c00536b00508400501302835d00536b00500c005", + "0x2802836b00502800702835e0053eb04000536b007033005018028033005", + "0x4036500707f02835900536b00535900509202835900536b00535d005031", + "0x36b00535900503102802836b00502800702821c0053ec21535600736b007", + "0xf02804600536b00504600509202835600536b00535600504f028046005", + "0x502836902802836b0050280070280450053ed04704800736b00736c005", + "0x21500534302802836b00504700536702802836b00504800501c02802836b", + "0x2002823700536b00504600503102802836b00536400525d02802836b005", + "0x23b00536b00523b00501b02823b00536b00502836502823900536b005028", + "0x24500702d02824500536b00502802302823f00536b00523b239007364028", + "0x536b00535600504f02824c00536b00524900536302824900536b00523f", + "0x508402800700536b0050070050c002823700536b005237005092028356", + "0x501c02802836b00502800702824c00723735600a00524c00536b00524c", + "0x2824e00536b00502836102824d00536b00504600503102802836b005045", + "0x24d35603135f02824e00536b00524e0051aa02824d00536b00524d005092", + "0x25200503102802836b0050280070280090500073ee25224f00736b00724e", + "0x24f00536b00524f00504f02805b00536b00505b00509202805b00536b005", + "0x2800702825e25d25c0313ef05c05905803136b00736400705b03132e028", + "0x2805e00536b00505800503102805800536b00505800509202802836b005", + "0x506000501b02805f00536b00521500532d02806000536b00505c00532d", + "0x5d00536b00505d00501b02805d00536b00505f06000732c02806000536b", + "0x5d00534802805e00536b00505e00509202805900536b0050590050c0028", + "0x3102802836b00502836902802836b0050280070282960053f002836b007", + "0x736b00504200503602804200536b00502802002829800536b00505e005", + "0x535902806900536b0052bd00535e02802836b0050670050400282bd067", + "0x536b00524f00504f02800600536b00506800535602806800536b005069", + "0x508402805900536b0050590050c002829800536b00529800509202824f", + "0x534602802836b00502800702800605929824f00a00500600536b005006", + "0x2807100536b00502802002806f00536b00505e00503102802836b005296", + "0x532507100736402832500536b00532500501b02832500536b00502808b", + "0x2807700536b0050590050c002807500536b00506f00509202807400536b", + "0x2802836b0050280070280283f100502804d02834c00536b005074005215", + "0x36b00525c00503102825c00536b00525c00509202802836b005215005343", + "0x21502807700536b00525d0050c002807500536b00534b00509202834b005", + "0x2804300536b00502802302802836b00502836902834c00536b00525e005", + "0x24f00504f02807900536b00507a00536302807a00536b00534c04300702d", + "0x7700536b0050770050c002807500536b00507500509202824f00536b005", + "0x2836b00502800702807907707524f00a00507900536b005079005084028", + "0x2836b00536400525d02802836b00521500534302802836b005028369028", + "0x36b00502804602834800536b00502802002807f00536b005009005031028", + "0x2807d00536b00508134800736402808100536b00508100501b028081005", + "0x534500536302834500536b00507d34600702d02834600536b005028023", + "0x2807f00536b00507f00509202805000536b00505000504f02834400536b", + "0x707f05000a00534400536b00534400508402800700536b0050070050c0", + "0x2836b00536c00501c02802836b00502836902802836b005028007028344", + "0x521c00504f02834300536b00535900503102802836b00536400525d028", + "0x280070280283f200502804d02834100536b00534300509202834200536b", + "0x36c00501c02802836b00535e00504702802836b00502836902802836b005", + "0x4f02833d00536b00535d00503102802836b00536400525d02802836b005", + "0x536b00502802002834100536b00533d00509202834200536b005365005", + "0x8c00736402833c00536b00533c00501b02833c00536b00502804802808c", + "0x536b00533b08a00702d02808a00536b00502802302833b00536b00533c", + "0x509202834200536b00534200504f02833900536b00533a00536302833a", + "0x536b00533900508402800700536b0050070050c002834100536b005341", + "0x2836b00536900501c02802836b00502800702833900734134200a005339", + "0x8800509202833800536b00502300504f02808800536b005020005031028", + "0x502836902802836b0050280070280283f300502804d02833700536b005", + "0x1800503102802836b00536900501c02802836b00501f00504702802836b", + "0x33700536b00533600509202833800536b00500a00504f02833600536b005", + "0x36b00508e00501b02808e00536b00502804502808600536b005028020028", + "0x2d02833300536b00502802302837700536b00508e08600736402808e005", + "0x533800504f02833100536b00533200536302833200536b005377333007", + "0x2800700536b0050070050c002833700536b00533700509202833800536b", + "0x2802836b00502800702833100733733800a00533100536b005331005084", + "0x536b00502802002833000536b00509200503102802836b005031005237", + "0x32f00736402832e00536b00532e00501b02832e00536b00502804602832f", + "0x536b00532d32c00702d02832c00536b00502802302832d00536b00532e", + "0x509202804f00536b00504f00504f02832b00536b00508b00536302808b", + "0x536b00532b00508402800700536b0050070050c002833000536b005330", + "0x36b00700502800700502802836b00502802802832b00733004f00a00532b", + "0x536b00500b00503102802836b00502800702809204f0073f400b00a007", + "0x500a00504f02802836b00502800b02801000536b00503100500a02800f", + "0x4e1c800736b00701000500f02800f00536b00500f00509202800a00536b", + "0x524f02801400536b00500f00503102802836b0050280070280130053f5", + "0x536b0051c800501302803000536b00501400509202804d00536b00504e", + "0x36b0050280070280283f600502804d02801800536b00504d005252028017", + "0x36800505002836800536b00502803002836900536b00500f005031028028", + "0x1700536b00501300501302803000536b00536900509202801b00536b005", + "0x283670053f701c00536b00701800500902801800536b00501b005252028", + "0x2836600536b00503000503102802836b00502836902802836b005028007", + "0x502000501b02802000536b00501f0051c802801f00536b00501c005010", + "0x36500736b00702000a00708602836600536b00536600509202802000536b", + "0x4f02802d00536b00536600503102802836b0050280070280230053f8364", + "0x36b00701700500f02802d00536b00502d00509202836500536b005365005", + "0x2802836b00536300501c02802836b0050280070280840053f90c0363007", + "0x536b00502d00503102802836b00536400508e02802836b0050c0005367", + "0x535f00501b02835f00536b0050283650281aa00536b005028020028361", + "0x2835d00536b00502802302803200536b00535f1aa00736402835f00536b", + "0x36500504f02803300536b00536c00536302836c00536b00503235d00702d", + "0x700536b0050070050c002836100536b00536100509202836500536b005", + "0x2836b00502800702803300736136500a00503300536b005033005084028", + "0x36b00502836102800c00536b00502d00503102802836b00508400501c028", + "0x35f02803c00536b00503c0051aa02800c00536b00500c00509202803c005", + "0x2802836b00502800702835935e0073fa04003600736b00703c00c365031", + "0x503600504f02835600536b00535600509202835600536b005040005031", + "0x450470480313fb04621c21503136b00736400735603132b02803600536b", + "0x36b00521500503102821500536b00521500509202802836b005028007028", + "0x736402804600536b00504600501b02823900536b005028020028237005", + "0x523f00504002824523f00736b00523b00503602823b00536b005046239", + "0x35602824c00536b00524900535902824900536b00524500535e02802836b", + "0x36b00523700509202803600536b00503600504f02824d00536b00524c005", + "0xa00524d00536b00524d00508402821c00536b00521c0050c0028237005", + "0x3102804800536b00504800509202802836b00502800702824d21c237036", + "0x36b00504524f00702d02824f00536b00502802302824e00536b005048005", + "0x9202803600536b00503600504f02805000536b005252005363028252005", + "0x36b00505000508402804700536b0050470050c002824e00536b00524e005", + "0x36b00536400508e02802836b00502800702805004724e03600a005050005", + "0x502804602805b00536b00502802002800900536b005359005031028028", + "0x5900536b00505805b00736402805800536b00505800501b02805800536b", + "0x25c00536302825c00536b00505905c00702d02805c00536b005028023028", + "0x900536b00500900509202835e00536b00535e00504f02825d00536b005", + "0x935e00a00525d00536b00525d00508402800700536b0050070050c0028", + "0x536600503102802836b00501700501c02802836b00502800702825d007", + "0x2806000536b00525e00509202805e00536b00502300504f02825e00536b", + "0x504702802836b00502836902802836b0050280070280283fc00502804d", + "0x2805f00536b00503000503102802836b00501700501c02802836b005367", + "0x36b00502802002806000536b00505f00509202805e00536b00500a00504f", + "0x736402829600536b00529600501b02829600536b00502804502805d005", + "0x36b00529804200702d02804200536b00502802302829800536b00529605d", + "0x9202805e00536b00505e00504f0282bd00536b005067005363028067005", + "0x36b0052bd00508402800700536b0050070050c002806000536b005060005", + "0x36b00503100523702802836b0050280070282bd00706005e00a0052bd005", + "0x502804602806800536b00502802002806900536b005092005031028028", + "0x6f00536b00500606800736402800600536b00500600501b02800600536b", + "0x32500536302832500536b00506f07100702d02807100536b005028023028", + "0x6900536b00506900509202804f00536b00504f00504f02807400536b005", + "0x6904f00a00507400536b00507400508402800700536b0050070050c0028", + "0x36b00502802802802836b00502824c02800b00536b00502832a028074007", + "0x36b00502800702801000f0073fd09204f00736b007005028007005028028", + "0x505b02804f00536b00504f00504f0281c800536b005092005031028028", + "0x1c800509202801401304e03136b00503104f00732902803100536b005031", + "0x36b00502800702804d0053fe00a00536b0070140053260281c800536b005", + "0x509202804e00536b00504e00504f02803000536b0051c8005031028028", + "0x36b00500a00b00708502801300536b00501300505b02803000536b005030", + "0x36b00736900509502836901801703136b00501303004e03109302800a005", + "0x2801c00536b00501800503102802836b00502800702801b0053ff368005", + "0x36600509802801c00536b00501c00509202836636700736b005368005324", + "0x536b00501c00503102802836b00502800702802000540001f00536b007", + "0x500f02836500536b00536500509202836400536b00536700500a028365", + "0x536500503102802836b00502800702836300540102d02300736b007364", + "0x2802300536b00502300501302808400536b00502d0050100280c000536b", + "0x702300500f02808400536b00508400501b0280c000536b0050c0005092", + "0x536b0050c000503102802836b00502800702835f0054021aa36100736b", + "0x509202836100536b00536100501302835d00536b0051aa005010028032", + "0x736b00736100500f02835d00536b00535d00501b02803200536b005032", + "0x2803c00536b00503200503102802836b00502800702800c00540303336c", + "0x503c00509202836c00536b00536c00501302803600536b005033005010", + "0x35e04000736b00736c00500f02803600536b00503600501b02803c00536b", + "0x35e00536702802836b00504000501c02802836b005028007028359005404", + "0x501f02802836b00503600501f02802836b00508400501f02802836b005", + "0x3102802836b00500a00509602802836b00501f00532302802836b00535d", + "0x21c00536b00502836502821500536b00502802002835600536b00503c005", + "0x2802302804600536b00521c21500736402821c00536b00521c00501b028", + "0x536b00504700536302804700536b00504604800702d02804800536b005", + "0x50c002835600536b00535600509202801700536b00501700504f028045", + "0x2804500735601700a00504500536b00504500508402800700536b005007", + "0x23700536b00503c00503102802836b00535900501c02802836b005028007", + "0x52390051aa02823700536b00523700509202823900536b005028361028", + "0x702824924500740523f23b00736b00723923701703135f02823900536b", + "0x24d00536b0050840051c802824c00536b00523f00503102802836b005028", + "0x502834102824f00536b0050360051c802824e00536b00535d0051c8028", + "0x2802836b00505000532102800905000736b00525200532202825200536b", + "0x50070050c002824c00536b00524c00509202823b00536b00523b00504f", + "0x2801f00536b00501f00531e02800a00536b00500a00531f02800700536b", + "0x524f00501b02824e00536b00524e00501b02824d00536b00524d00501b", + "0x5805b00a36b00524f24e24d01f00a00900724c23b01031d02824f00536b", + "0x2802836b00502800702825d00540625c00536b00705c00531c02805c059", + "0x536b00502802002825e00536b00505800503102802836b00525c00531b", + "0x535e02802836b00506000504002805f06000736b00505e00503602805e", + "0x536b00529600535602829600536b00505d00535902805d00536b00505f", + "0x50c002825e00536b00525e00509202805b00536b00505b00504f028298", + "0x2829805925e05b00a00529800536b00529800508402805900536b005059", + "0x536b00525d00536302804200536b00505800503102802836b005028007", + "0x50c002804200536b00504200509202805b00536b00505b00504f028067", + "0x2806705904205b00a00506700536b00506700508402805900536b005059", + "0x2802836b00503600501f02802836b00508400501f02802836b005028007", + "0x2836b00500a00509602802836b00501f00532302802836b00535d00501f", + "0x36b00502804602806900536b0050280200282bd00536b005249005031028", + "0x2800600536b00506806900736402806800536b00506800501b028068005", + "0x507100536302807100536b00500606f00702d02806f00536b005028023", + "0x282bd00536b0052bd00509202824500536b00524500504f02832500536b", + "0x72bd24500a00532500536b00532500508402800700536b0050070050c0", + "0x36b00500a00509602802836b00500c00501c02802836b005028007028325", + "0x501f00532302802836b00535d00501f02802836b00508400501f028028", + "0x2804302807500536b00502802002807400536b00503200503102802836b", + "0x536b00507707500736402807700536b00507700501b02807700536b005", + "0x536302804300536b00534c34b00702d02834b00536b00502802302834c", + "0x536b00507400509202801700536b00501700504f02807a00536b005043", + "0x1700a00507a00536b00507a00508402800700536b0050070050c0028074", + "0xa00509602802836b00535f00501c02802836b00502800702807a007074", + "0x503102802836b00501f00532302802836b00508400501f02802836b005", + "0x2834800536b00502807a02807f00536b00502802002807900536b0050c0", + "0x502802302808100536b00534807f00736402834800536b00534800501b", + "0x34500536b00534600536302834600536b00508107d00702d02807d00536b", + "0x70050c002807900536b00507900509202801700536b00501700504f028", + "0x702834500707901700a00534500536b00534500508402800700536b005", + "0x32302802836b00500a00509602802836b00536300501c02802836b005028", + "0x34300536b00502802002834400536b00536500503102802836b00501f005", + "0x34234300736402834200536b00534200501b02834200536b00502805e028", + "0x8c00536b00534133d00702d02833d00536b00502802302834100536b005", + "0x34400509202801700536b00501700504f02833c00536b00508c005363028", + "0x33c00536b00533c00508402800700536b0050070050c002834400536b005", + "0x2802836b00502000504702802836b00502800702833c00734401700a005", + "0x536b00501c00503102802836b00536700523702802836b00500a005096", + "0x533a00501b02833a00536b00502804802808a00536b00502802002833b", + "0x2808800536b00502802302833900536b00533a08a00736402833a00536b", + "0x1700504f02833700536b00533800536302833800536b00533908800702d", + "0x700536b0050070050c002833b00536b00533b00509202801700536b005", + "0x2836b00502800702833700733b01700a00533700536b005337005084028", + "0x501b00536302833600536b00501800503102802836b00500a005096028", + "0x2833600536b00533600509202801700536b00501700504f02808600536b", + "0x733601700a00508600536b00508600508402800700536b0050070050c0", + "0x36b00501300523702802836b00504d00504702802836b005028007028086", + "0x502802002808e00536b0051c800503102802836b00500b00531a028028", + "0x36402833300536b00533300501b02833300536b00502804502837700536b", + "0x533233100702d02833100536b00502802302833200536b005333377007", + "0x2804e00536b00504e00504f02832f00536b00533000536302833000536b", + "0x532f00508402800700536b0050070050c002808e00536b00508e005092", + "0x503100523702802836b00502800702832f00708e04e00a00532f00536b", + "0x2802002832e00536b00501000503102802836b00500b00531a02802836b", + "0x2832c00536b00532c00501b02832c00536b00502804602832d00536b005", + "0x8b32b00702d02832b00536b00502802302808b00536b00532c32d007364", + "0xf00536b00500f00504f02832900536b00532a00536302832a00536b005", + "0x32900508402800700536b0050070050c002832e00536b00532e005092028", + "0x2824902800b00536b00502824902832900732e00f00a00532900536b005", + "0x2800700502802836b00502802802802836b00502824c02809200536b005", + "0x1000503102802836b00502800702804e1c800740701000f00736b007005", + "0x4f02802836b00502800b02801400536b00503100500a02801300536b005", + "0x36b00701400500f02801300536b00501300509202800f00536b00500f005", + "0x1800536b00501300503102802836b00502800702801700540803004d007", + "0x36800504e02836800536b0053690051c802836900536b005030005010028", + "0x36700536b00504d00501302801c00536b00501800509202801b00536b005", + "0x2836b00502800702802840900502804d02836600536b00501b005014028", + "0x502000501702802000536b00502803002801f00536b005013005031028", + "0x2836700536b00501700501302801c00536b00501f00509202836500536b", + "0x702836400540a04f00536b00736600501802836600536b005365005014", + "0x24d02802300536b00501c00503102802836b00502836902802836b005028", + "0x4f00f00707f02802300536b00502300509202804f00536b00504f092007", + "0x36b00502300503102802836b0050280070280c000540b36302d00736b007", + "0xf02808400536b00508400509202802d00536b00502d00504f028084005", + "0x8400503102802836b00502800702835f00540c1aa36100736b007367005", + "0x536b00500a00b00724d02800a00536b0051aa00501002803200536b005", + "0x536100501302802836b00502800b02835d00536b00500a0051c802800a", + "0x3336c00736b00736100500f02803200536b00503200509202836100536b", + "0x524f02803c00536b00503200503102802836b00502800702800c00540d", + "0x536b00536c00501302804000536b00503c00509202803600536b005033", + "0x36b00502800702802840e00502804d02835900536b00503600525202835e", + "0x21500505002821500536b00502803002835600536b005032005031028028", + "0x35e00536b00500c00501302804000536b00535600509202821c00536b005", + "0x2804800540f04600536b00735900500902835900536b00521c005252028", + "0x2804700536b00504000503102802836b00502836902802836b005028007", + "0x36b00535e00535e02823700536b00502802002804500536b005046005010", + "0x9202802d00536b00502d00504f02823b00536b0050450051c8028239005", + "0x36b00523700521502823900536b00523900505b02804700536b005047005", + "0x36b00523b23723904702d00b05802823b00536b00523b00501b028237005", + "0x36b00502800702824d00541024c00536b00724900505902824924523f031", + "0x9202825224f00736b00524c00505c02824e00536b005245005031028028", + "0x2800702800900541105000536b00725200525c02824e00536b00524e005", + "0x2805800536b00524f00500a02805b00536b00524e00503102802836b005", + "0x2825c00541205c05900736b00705800500f02805b00536b00505b005092", + "0x2802836b00505c00536702802836b00505900501c02802836b005028007", + "0x2836b00536300534302802836b00535d00501f02802836b005050005040", + "0x36b00502836502825e00536b00502802002825d00536b00505b005031028", + "0x2806000536b00505e25e00736402805e00536b00505e00501b02805e005", + "0x505d00536302805d00536b00506005f00702d02805f00536b005028023", + "0x2825d00536b00525d00509202823f00536b00523f00504f02829600536b", + "0x725d23f00a00529600536b00529600508402800700536b0050070050c0", + "0x36b00505b00503102802836b00525c00501c02802836b005028007028296", + "0x51aa02829800536b00529800509202804200536b005028361028298005", + "0x680690074132bd06700736b00704229823f03135f02804200536b005042", + "0x36b00505000503602800600536b0052bd00503102802836b005028007028", + "0x9202832500536b00507100535e02802836b00506f00504002807106f007", + "0x36300700600b31902806700536b00506700504f02800600536b005006005", + "0x2802836b00502800702804334b34c03141407707507403136b00732535d", + "0x507700535902807a00536b00507400503102807400536b005074005092", + "0x2806700536b00506700504f02807f00536b00507900535602807900536b", + "0x507f00508402807500536b0050750050c002807a00536b00507a005092", + "0x534c00509202802836b00502800702807f07507a06700a00507f00536b", + "0x2d02808100536b00502802302834800536b00534c00503102834c00536b", + "0x506700504f02834600536b00507d00536302807d00536b005043081007", + "0x2834b00536b00534b0050c002834800536b00534800509202806700536b", + "0x2802836b00502800702834634b34806700a00534600536b005346005084", + "0x2836b00536300534302802836b00535d00501f02802836b005050005040", + "0x36b00502804602834400536b00502802002834500536b005068005031028", + "0x2834200536b00534334400736402834300536b00534300501b028343005", + "0x533d00536302833d00536b00534234100702d02834100536b005028023", + "0x2834500536b00534500509202806900536b00506900504f02808c00536b", + "0x734506900a00508c00536b00508c00508402800700536b0050070050c0", + "0x36b00524f00523702802836b00500900504702802836b00502800702808c", + "0x524e00503102802836b00536300534302802836b00535d00501f028028", + "0x2808a00536b00533c00509202833b00536b00523f00504f02833c00536b", + "0x1f02802836b00536300534302802836b00502800702802841500502804d", + "0x536b00524d00536302833a00536b00524500503102802836b00535d005", + "0x50c002833a00536b00533a00509202823f00536b00523f00504f028339", + "0x2833900733a23f00a00533900536b00533900508402800700536b005007", + "0x1f02802836b00504800504702802836b00502836902802836b005028007", + "0x2802836b00535e00501c02802836b00536300534302802836b00535d005", + "0x508800509202833b00536b00502d00504f02808800536b005040005031", + "0x501b02833700536b00502805e02833800536b00502802002808a00536b", + "0x536b00502802302833600536b00533733800736402833700536b005337", + "0x4f02837700536b00508e00536302808e00536b00533608600702d028086", + "0x36b0050070050c002808a00536b00508a00509202833b00536b00533b005", + "0x502800702837700708a33b00a00537700536b005377005084028007005", + "0xb00506002802836b00536300534302802836b00535f00501c02802836b", + "0x4802833200536b00502802002833300536b00508400503102802836b005", + "0x36b00533133200736402833100536b00533100501b02833100536b005028", + "0x36302832e00536b00533032f00702d02832f00536b005028023028330005", + "0x36b00533300509202802d00536b00502d00504f02832d00536b00532e005", + "0xa00532d00536b00532d00508402800700536b0050070050c0028333005", + "0x506002802836b00536700501c02802836b00502800702832d00733302d", + "0x8b00536b0050c000504f02832c00536b00502300503102802836b00500b", + "0x2836b00502800702802841600502804d02832b00536b00532c005092028", + "0x2836b00536700501c02802836b00536400504702802836b005028369028", + "0x36b00501c00503102802836b00509200506002802836b00500b005060028", + "0x2002832b00536b00532a00509202808b00536b00500f00504f02832a005", + "0x32600536b00532600501b02832600536b00502804502832900536b005028", + "0x9300702d02809300536b00502802302808500536b005326329007364028", + "0x536b00508b00504f02832400536b00509500536302809500536b005085", + "0x508402800700536b0050070050c002832b00536b00532b00509202808b", + "0x506002802836b00502800702832400732b08b00a00532400536b005324", + "0x3102802836b00503100523702802836b00500b00506002802836b005092", + "0x9600536b00502804602832300536b00502802002809800536b00504e005", + "0x2802302832200536b00509632300736402809600536b00509600501b028", + "0x536b00531f00536302831f00536b00532232100702d02832100536b005", + "0x50c002809800536b0050980050920281c800536b0051c800504f02831e", + "0x2831e0070981c800a00531e00536b00531e00508402800700536b005007", + "0x2809204f00741700b00a00736b00700502800700502802836b005028028", + "0x536b00503100500a02800f00536b00500b00503102802836b005028007", + "0x500f00509202800a00536b00500a00504f02802836b00502800b028010", + "0x36b00502800702801300541804e1c800736b00701000500f02800f00536b", + "0x51c802804d00536b00504e00501002801400536b00500f005031028028", + "0x536b00501400509202801700536b00503000504e02803000536b00504d", + "0x2804d02836800536b00501700501402836900536b0051c8005013028018", + "0x2803002801b00536b00500f00503102802836b005028007028028419005", + "0x1800536b00501b00509202836700536b00501c00501702801c00536b005", + "0x36800501802836800536b00536700501402836900536b005013005013028", + "0x2802836b00502836902802836b00502800702801f00541a36600536b007", + "0x36600a00707f02802000536b00502000509202802000536b005018005031", + "0x36b00502000503102802836b00502800702802300541b36436500736b007", + "0xf02802d00536b00502d00509202836500536b00536500504f02802d005", + "0x2d00503102802836b00502800702808400541c0c036300736b007369005", + "0x36300536b0053630050130281aa00536b0050c000501002836100536b005", + "0x36300500f0281aa00536b0051aa00501b02836100536b005361005092028", + "0x36b00536100503102802836b00502800702835d00541d03235f00736b007", + "0x9202835f00536b00535f00501302803300536b00503200501002836c005", + "0x36b00735f00500f02803300536b00503300501b02836c00536b00536c005", + "0x4000536b00536c00503102802836b00502800702803600541e03c00c007", + "0x4000509202800c00536b00500c00501302835e00536b00503c005010028", + "0x35900736b00700c00500f02835e00536b00535e00501b02804000536b005", + "0x1002821c00536b00504000503102802836b00502800702821500541f356", + "0x36b00521c00509202835900536b00535900501302804600536b005356005", + "0x42004704800736b00735900500f02804600536b00504600501b02821c005", + "0x504700536702802836b00504800501c02802836b005028007028045005", + "0x35e00501f02802836b00504600501f02802836b0051aa00501f02802836b", + "0x503102802836b00536400534302802836b00503300501f02802836b005", + "0x2823b00536b00502836502823900536b00502802002823700536b00521c", + "0x502802302823f00536b00523b23900736402823b00536b00523b00501b", + "0x24c00536b00524900536302824900536b00523f24500702d02824500536b", + "0x70050c002823700536b00523700509202836500536b00536500504f028", + "0x702824c00723736500a00524c00536b00524c00508402800700536b005", + "0x2824d00536b00521c00503102802836b00504500501c02802836b005028", + "0x36b00524e0051aa02824d00536b00524d00509202824e00536b005028361", + "0x2800702800905000742125224f00736b00724e24d36503135f02824e005", + "0x2805800536b0051aa0051c802805b00536b00525200503102802836b005", + "0x50460051c802805c00536b00535e0051c802805900536b0050330051c8", + "0x2805e25e00736b00525d00532202825d00536b00502834102825c00536b", + "0x36b0050070050c002805b00536b00505b00509202802836b00525e005321", + "0x1b02805800536b00505800501b02836400536b00536400533d028007005", + "0x36b00525c00501b02805c00536b00505c00501b02805900536b005059005", + "0x2805d05f06003136b00525c05c05905836405e00705b00f31802825c005", + "0x505f0050c002806000536b00506000509202824f00536b00524f00504f", + "0x2800702805d05f06024f00a00505d00536b00505d00508402805f00536b", + "0x501f02802836b00504600501f02802836b0051aa00501f02802836b005", + "0x3102802836b00536400534302802836b00503300501f02802836b00535e", + "0x4200536b00502804602829800536b00502802002829600536b005009005", + "0x2802302806700536b00504229800736402804200536b00504200501b028", + "0x536b00506900536302806900536b0050672bd00702d0282bd00536b005", + "0x50c002829600536b00529600509202805000536b00505000504f028068", + "0x2806800729605000a00506800536b00506800508402800700536b005007", + "0x2802836b00536400534302802836b00521500501c02802836b005028007", + "0x2836b00503300501f02802836b00535e00501f02802836b0051aa00501f", + "0x36b00502804302806f00536b00502802002800600536b005040005031028", + "0x2832500536b00507106f00736402807100536b00507100501b028071005", + "0x507500536302807500536b00532507400702d02807400536b005028023", + "0x2800600536b00500600509202836500536b00536500504f02807700536b", + "0x700636500a00507700536b00507700508402800700536b0050070050c0", + "0x36b00536400534302802836b00503600501c02802836b005028007028077", + "0x536c00503102802836b00503300501f02802836b0051aa00501f028028", + "0x501b02804300536b00502807a02834b00536b00502802002834c00536b", + "0x536b00502802302807a00536b00504334b00736402804300536b005043", + "0x4f02834800536b00507f00536302807f00536b00507a07900702d028079", + "0x36b0050070050c002834c00536b00534c00509202836500536b005365005", + "0x502800702834800734c36500a00534800536b005348005084028007005", + "0x1aa00501f02802836b00536400534302802836b00535d00501c02802836b", + "0x5e02807d00536b00502802002808100536b00536100503102802836b005", + "0x36b00534607d00736402834600536b00534600501b02834600536b005028", + "0x36302834300536b00534534400702d02834400536b005028023028345005", + "0x36b00508100509202836500536b00536500504f02834200536b005343005", + "0xa00534200536b00534200508402800700536b0050070050c0028081005", + "0x534302802836b00508400501c02802836b005028007028342007081365", + "0x2833d00536b00502802002834100536b00502d00503102802836b005364", + "0x508c33d00736402808c00536b00508c00501b02808c00536b005028048", + "0x2808a00536b00533c33b00702d02833b00536b00502802302833c00536b", + "0x534100509202836500536b00536500504f02833a00536b00508a005363", + "0x533a00536b00533a00508402800700536b0050070050c002834100536b", + "0x3102802836b00536900501c02802836b00502800702833a00734136500a", + "0x36b00533900509202808800536b00502300504f02833900536b005020005", + "0x2836b00502836902802836b00502800702802842200502804d028338005", + "0x36b00501800503102802836b00536900501c02802836b00501f005047028", + "0x2002833800536b00533700509202808800536b00500a00504f028337005", + "0x8600536b00508600501b02808600536b00502804502833600536b005028", + "0x37700702d02837700536b00502802302808e00536b005086336007364028", + "0x536b00508800504f02833200536b00533300536302833300536b00508e", + "0x508402800700536b0050070050c002833800536b005338005092028088", + "0x523702802836b00502800702833200733808800a00533200536b005332", + "0x2833000536b00502802002833100536b00509200503102802836b005031", + "0x532f33000736402832f00536b00532f00501b02832f00536b005028046", + "0x2832c00536b00532e32d00702d02832d00536b00502802302832e00536b", + "0x533100509202804f00536b00504f00504f02808b00536b00532c005363", + "0x508b00536b00508b00508402800700536b0050070050c002833100536b", + "0xa00736b00700502800700502802836b00502802802808b00733104f00a", + "0x2800f00536b00500b00503102802836b00502800702809204f00742300b", + "0x536b00500a00504f02802836b00502800b02801000536b00503100500a", + "0x542404e1c800736b00701000500f02800f00536b00500f00509202800a", + "0x504e00501002801400536b00500f00503102802836b005028007028013", + "0x2801700536b00503000504e02803000536b00504d0051c802804d00536b", + "0x501700501402836900536b0051c800501302801800536b005014005092", + "0x500f00503102802836b00502800702802842500502804d02836800536b", + "0x9202836700536b00501c00501702801c00536b00502803002801b00536b", + "0x36b00536700501402836900536b00501300501302801800536b00501b005", + "0x2802836b00502800702801f00542636600536b007368005018028368005", + "0x536b00502000509202802000536b00501800503102802836b005028369", + "0x2836b00502800702802300542736436500736b00736600a00707f028020", + "0x2d00509202836500536b00536500504f02802d00536b005020005031028", + "0x50280070280840054280c036300736b00736900500f02802d00536b005", + "0x36400534302802836b0050c000536702802836b00536300501c02802836b", + "0x3650281aa00536b00502802002836100536b00502d00503102802836b005", + "0x36b00535f1aa00736402835f00536b00535f00501b02835f00536b005028", + "0x36302836c00536b00503235d00702d02835d00536b005028023028032005", + "0x36b00536100509202836500536b00536500504f02803300536b00536c005", + "0xa00503300536b00503300508402800700536b0050070050c0028361005", + "0x503102802836b00508400501c02802836b005028007028033007361365", + "0xc00536b00500c00509202803c00536b00502836102800c00536b00502d", + "0x42904003600736b00703c00c36503135f02803c00536b00503c0051aa028", + "0x509202835600536b00504000503102802836b00502800702835935e007", + "0x736400735603131702803600536b00503600504f02835600536b005356", + "0x521500509202802836b00502800702804704804603142a21c21500736b", + "0x3602823700536b00502802002804500536b00521500503102821500536b", + "0x36b00523b00535e02802836b00523900504002823b23900736b005237005", + "0x4f02824900536b00524500535602824500536b00523f00535902823f005", + "0x36b00521c0050c002804500536b00504500509202803600536b005036005", + "0x502800702824921c04503600a00524900536b00524900508402821c005", + "0x2302824c00536b00504600503102804600536b00504600509202802836b", + "0x36b00524e00536302824e00536b00504724d00702d02824d00536b005028", + "0xc002824c00536b00524c00509202803600536b00503600504f02824f005", + "0x24f04824c03600a00524f00536b00524f00508402804800536b005048005", + "0x536b00535900503102802836b00536400534302802836b005028007028", + "0x500900501b02800900536b00502804602805000536b005028020028252", + "0x2805800536b00502802302805b00536b00500905000736402800900536b", + "0x35e00504f02805c00536b00505900536302805900536b00505b05800702d", + "0x700536b0050070050c002825200536b00525200509202835e00536b005", + "0x2836b00502800702805c00725235e00a00505c00536b00505c005084028", + "0x502300504f02825c00536b00502000503102802836b00536900501c028", + "0x2800702802842b00502804d02825e00536b00525c00509202825d00536b", + "0x36900501c02802836b00501f00504702802836b00502836902802836b005", + "0x2825d00536b00500a00504f02805e00536b00501800503102802836b005", + "0x536b00502804502806000536b00502802002825e00536b00505e005092", + "0x2302805d00536b00505f06000736402805f00536b00505f00501b02805f", + "0x36b00529800536302829800536b00505d29600702d02829600536b005028", + "0xc002825e00536b00525e00509202825d00536b00525d00504f028042005", + "0x4200725e25d00a00504200536b00504200508402800700536b005007005", + "0x536b00509200503102802836b00503100523702802836b005028007028", + "0x506900501b02806900536b0050280460282bd00536b005028020028067", + "0x2800600536b00502802302806800536b0050692bd00736402806900536b", + "0x4f00504f02807100536b00506f00536302806f00536b00506800600702d", + "0x700536b0050070050c002806700536b00506700509202804f00536b005", + "0x536b00502824902807100706704f00a00507100536b005071005084028", + "0x36b00700502800700502802836b00502802802802836b00502824c02800b", + "0x536b00509200503102802836b00502800702801000f00742c09204f007", + "0x509202804f00536b00504f00504f02804e00536b00503100500a0281c8", + "0x2800702804d00542d01401300736b00704e00500f0281c800536b0051c8", + "0x2800a00536b00501400501002803000536b0051c800503102802836b005", + "0x502800b02801700536b00500a0051c802800a00536b00500a00b00724d", + "0xf02803000536b00503000509202801300536b00501300501302802836b", + "0x3000503102802836b00502800702836800542e36901800736b007013005", + "0x36700536b00501b00509202801c00536b00536900524f02801b00536b005", + "0x502804d02801f00536b00501c00525202836600536b005018005013028", + "0x502803002802000536b00503000503102802836b00502800702802842f", + "0x2836700536b00502000509202836400536b00536500505002836500536b", + "0x701f00500902801f00536b00536400525202836600536b005368005013", + "0x3102802836b00502836902802836b00502800702802d00543002300536b", + "0x536b0050280200280c000536b00502300501002836300536b005367005", + "0x504f0281aa00536b0050c00051c802836100536b00536600535e028084", + "0x536b00536100505b02836300536b00536300509202804f00536b00504f", + "0xb0580281aa00536b0051aa00501b02808400536b005084005215028361", + "0x43136c00536b00735d00505902835d03235f03136b0051aa08436136304f", + "0x36c00505c02800c00536b00503200503102802836b005028007028033005", + "0x536b00703600525c02800c00536b00500c00509202803603c00736b005", + "0xa02835900536b00500c00503102802836b00502800702835e005432040", + "0x36b00735600500f02835900536b00535900509202835600536b00503c005", + "0x2802836b00521500501c02802836b00502800702804600543321c215007", + "0x2836b00501700501f02802836b00504000504002802836b00521c005367", + "0x36b00502836502804700536b00502802002804800536b005359005031028", + "0x2823700536b00504504700736402804500536b00504500501b028045005", + "0x523b00536302823b00536b00523723900702d02823900536b005028023", + "0x2804800536b00504800509202835f00536b00535f00504f02823f00536b", + "0x704835f00a00523f00536b00523f00508402800700536b0050070050c0", + "0x36b00535900503102802836b00504600501c02802836b00502800702823f", + "0x51aa02824500536b00524500509202824900536b005028361028245005", + "0x24f24e00743424d24c00736b00724924535f03135f02824900536b005249", + "0x36b00504000503602825200536b00524d00503102802836b005028007028", + "0x9202805b00536b00500900535e02802836b005050005040028009050007", + "0x1700725200a31602824c00536b00524c00504f02825200536b005252005", + "0x509202802836b00502800702825d25c05c03143505905800736b00705b", + "0x5e00536b00502802002825e00536b00505800503102805800536b005058", + "0x5f00535e02802836b00506000504002805f06000736b00505e005036028", + "0x29800536b00529600535602829600536b00505d00535902805d00536b005", + "0x590050c002825e00536b00525e00509202824c00536b00524c00504f028", + "0x702829805925e24c00a00529800536b00529800508402805900536b005", + "0x4200536b00505c00503102805c00536b00505c00509202802836b005028", + "0x2bd0053630282bd00536b00525d06700702d02806700536b005028023028", + "0x4200536b00504200509202824c00536b00524c00504f02806900536b005", + "0x4224c00a00506900536b00506900508402825c00536b00525c0050c0028", + "0x501700501f02802836b00504000504002802836b00502800702806925c", + "0x2804602800600536b00502802002806800536b00524f00503102802836b", + "0x536b00506f00600736402806f00536b00506f00501b02806f00536b005", + "0x536302807400536b00507132500702d02832500536b005028023028071", + "0x536b00506800509202824e00536b00524e00504f02807500536b005074", + "0x24e00a00507500536b00507500508402800700536b0050070050c0028068", + "0x3c00523702802836b00535e00504702802836b005028007028075007068", + "0x4f02807700536b00500c00503102802836b00501700501f02802836b005", + "0x2843600502804d02834b00536b00507700509202834c00536b00535f005", + "0x536b00503200503102802836b00501700501f02802836b005028007028", + "0x509202835f00536b00535f00504f02807a00536b005033005363028043", + "0x536b00507a00508402800700536b0050070050c002804300536b005043", + "0x2802836b00502836902802836b00502800702807a00704335f00a00507a", + "0x2836b00536600501c02802836b00501700501f02802836b00502d005047", + "0x7900509202834c00536b00504f00504f02807900536b005367005031028", + "0x1b02834800536b00502804802807f00536b00502802002834b00536b005", + "0x36b00502802302808100536b00534807f00736402834800536b005348005", + "0x2834500536b00534600536302834600536b00508107d00702d02807d005", + "0x50070050c002834b00536b00534b00509202834c00536b00534c00504f", + "0x2800702834500734b34c00a00534500536b00534500508402800700536b", + "0x503102802836b00500b00506002802836b00504d00501c02802836b005", + "0x2834200536b00502804502834300536b00502802002834400536b0051c8", + "0x502802302834100536b00534234300736402834200536b00534200501b", + "0x33c00536b00508c00536302808c00536b00534133d00702d02833d00536b", + "0x70050c002834400536b00534400509202804f00536b00504f00504f028", + "0x702833c00734404f00a00533c00536b00533c00508402800700536b005", + "0x3102802836b00500b00506002802836b00503100523702802836b005028", + "0x33a00536b00502804602808a00536b00502802002833b00536b005010005", + "0x2802302833900536b00533a08a00736402833a00536b00533a00501b028", + "0x536b00533800536302833800536b00533908800702d02808800536b005", + "0x50c002833b00536b00533b00509202800f00536b00500f00504f028337", + "0x2833700733b00f00a00533700536b00533700508402800700536b005007", + "0x2800f09200743704f00b00736b00700702800700502802836b005028028", + "0x536b00500a00500a02801000536b00504f00503102802836b005028007", + "0x500f02801000536b00501000509202800b00536b00500b00504f0281c8", + "0x504e00501c02802836b00502800702801400543801304e00736b0071c8", + "0x2802002804d00536b00501000503102802836b00501300536702802836b", + "0x2801700536b00501700501b02801700536b00502836502803000536b005", + "0x1836900702d02836900536b00502802302801800536b005017030007364", + "0xb00536b00500b00504f02801b00536b00536800536302836800536b005", + "0x310050c002804d00536b00504d00509202800500536b005005005314028", + "0x2801b03104d00500b00b00501b00536b00501b00508402803100536b005", + "0x1c00536b00501000503102802836b00501400501c02802836b005028007", + "0x53670051aa02801c00536b00501c00509202836700536b005028361028", + "0x702836502000743901f36600736b00736701c00b03135f02836700536b", + "0x2300736b00500500531302836400536b00501f00503102802836b005028", + "0x509202802300536b00502300531402836600536b00536600504f02802d", + "0x2d36402336600a0a902802d00536b00502d00531102836400536b005364", + "0x536b00502802002802836b0053610053100283610840c036300a36b005", + "0x535e02802836b00535f00504002803235f00736b0051aa0050360281aa", + "0x536b00536c00535602836c00536b00535d00535902835d00536b005032", + "0x50920280c000536b0050c000531402836300536b00536300504f028033", + "0x536b00503300508402803100536b0050310050c002808400536b005084", + "0x36b00536500503102802836b0050280070280330310840c036300b005033", + "0x3600501b02803600536b00502804602803c00536b00502802002800c005", + "0x35e00536b00502802302804000536b00503603c00736402803600536b005", + "0x504f02835600536b00535900536302835900536b00504035e00702d028", + "0x536b00500c00509202800500536b00500500531402802000536b005020", + "0x2000b00535600536b00535600508402803100536b0050310050c002800c", + "0x503102802836b00500a00523702802836b00502800702835603100c005", + "0x2804600536b00502804602821c00536b00502802002821500536b00500f", + "0x502802302804800536b00504621c00736402804600536b00504600501b", + "0x23700536b00504500536302804500536b00504804700702d02804700536b", + "0x21500509202800500536b00500500531402809200536b00509200504f028", + "0x23700536b00523700508402803100536b0050310050c002821500536b005", + "0x536b00502824902800b00536b00502824902823703121500509200b005", + "0x36b00700502800700502802836b00502802802802836b00502824c028092", + "0x536b00501000503102802836b00502800702804e1c800743a01000f007", + "0x500f00504f02802836b00502800b02801400536b00503100500a028013", + "0x3004d00736b00701400500f02801300536b00501300509202800f00536b", + "0x501002801800536b00501300503102802836b00502800702801700543b", + "0x536b00536800504e02836800536b0053690051c802836900536b005030", + "0x501402836700536b00504d00501302801c00536b00501800509202801b", + "0x503102802836b00502800702802843c00502804d02836600536b00501b", + "0x36500536b00502000501702802000536b00502803002801f00536b005013", + "0x36500501402836700536b00501700501302801c00536b00501f005092028", + "0x36b00502800702836400543d04f00536b00736600501802836600536b005", + "0x4f09200724d02802300536b00501c00503102802836b005028369028028", + "0x736b00704f00f00707f02802300536b00502300509202804f00536b005", + "0x2808400536b00502300503102802836b0050280070280c000543e36302d", + "0x736700500f02808400536b00508400509202802d00536b00502d00504f", + "0x536b00508400503102802836b00502800702835f00543f1aa36100736b", + "0x1c802800a00536b00500a00b00724d02800a00536b0051aa005010028032", + "0x36100536b00536100501302802836b00502800b02835d00536b00500a005", + "0xc00544003336c00736b00736100500f02803200536b005032005092028", + "0x36b00503300524f02803c00536b00503200503102802836b005028007028", + "0x25202835e00536b00536c00501302804000536b00503c005092028036005", + "0x3102802836b00502800702802844100502804d02835900536b005036005", + "0x536b00521500505002821500536b00502803002835600536b005032005", + "0x525202835e00536b00500c00501302804000536b00535600509202821c", + "0x502800702804800544204600536b00735900500902835900536b00521c", + "0x2002804500536b00504600501002804700536b00504000503102802836b", + "0x536b0050450051c802823900536b00535e00535e02823700536b005028", + "0x505b02804700536b00504700509202802d00536b00502d00504f02823b", + "0x536b00523b00501b02823700536b00523700521502823900536b005239", + "0x724900505902824924523f03136b00523b23723904702d00b05802823b", + "0x24e00536b00524500503102802836b00502800702824d00544324c00536b", + "0x525c02824e00536b00524e00509202825224f00736b00524c00505c028", + "0x36b00524e00503102802836b00502800702800900544405000536b007252", + "0xf02805b00536b00505b00509202805800536b00524f00500a02805b005", + "0x5b00503102802836b00502800702825c00544505c05900736b007058005", + "0x5e00536b00525e0051c802825e00536b00505c00501002825d00536b005", + "0x36b00505900501302805e00536b00505e00501b02802836b00502800b028", + "0x6000544602836b00705e00534802825d00536b00525d005092028059005", + "0x536b00502803002805f00536b00525d00503102802836b005028007028", + "0x507d02829800536b00505f00509202829600536b00505d00508102805d", + "0x534602802836b00502800702802844700502804d02804200536b005296", + "0x282bd00536b00502803002806700536b00525d00503102802836b005060", + "0x506900507d02829800536b00506700509202806900536b0052bd005345", + "0x36b00502800702806f00544800606800736b00705900500f02804200536b", + "0x36b00500600536702802836b00506800501c02802836b005028369028028", + "0x535d00501f02802836b00504200534402802836b005050005040028028", + "0x2802002807100536b00529800503102802836b00536300534302802836b", + "0x2807400536b00507400501b02807400536b00502836502832500536b005", + "0x7507700702d02807700536b00502802302807500536b005074325007364", + "0x23f00536b00523f00504f02834b00536b00534c00536302834c00536b005", + "0x34b00508402800700536b0050070050c002807100536b005071005092028", + "0x6f00501c02802836b00502800702834b00707123f00a00534b00536b005", + "0x9202807a00536b00502836102804300536b00529800503102802836b005", + "0x7a04323f03135f02807a00536b00507a0051aa02804300536b005043005", + "0x36b00502836902802836b00502800702808134800744907f07900736b007", + "0x503602834600536b00504200534202807d00536b00507f005031028028", + "0x536b00534400535e02802836b00534500504002834434500736b005050", + "0x504f02834600536b00534600507d02807d00536b00507d005092028343", + "0x33d34134200a36b00734634335d36300707d04f0b002807900536b005079", + "0x2802836b00533d00525d02802836b00502800702808a33b33c03144a08c", + "0x36b00534200503102834200536b00534200509202802836b00508c005237", + "0x4002833808800736b00533900503602833900536b00502802002833a005", + "0x536b00533700535902833700536b00533800535e02802836b005088005", + "0x509202807900536b00507900504f02808600536b005336005356028336", + "0x536b00508600508402834100536b0053410050c002833a00536b00533a", + "0x536b00533c00509202802836b00502800702808634133a07900a005086", + "0x37700702d02837700536b00502802302808e00536b00533c00503102833c", + "0x536b00507900504f02833200536b00533300536302833300536b00508a", + "0x508402833b00536b00533b0050c002808e00536b00508e005092028079", + "0x2836902802836b00502800702833233b08e07900a00533200536b005332", + "0x501f02802836b00504200534402802836b00505000504002802836b005", + "0x2833100536b00508100503102802836b00536300534302802836b00535d", + "0x536b00532f00501b02832f00536b00502804602833000536b005028020", + "0x702d02832d00536b00502802302832e00536b00532f33000736402832f", + "0x36b00534800504f02808b00536b00532c00536302832c00536b00532e32d", + "0x8402800700536b0050070050c002833100536b005331005092028348005", + "0x1c02802836b00502800702808b00733134800a00508b00536b00508b005", + "0x2802836b00505000504002802836b00536300534302802836b00525c005", + "0x536b00502802002832b00536b00505b00503102802836b00535d00501f", + "0x32a00736402832900536b00532900501b02832900536b00502807a02832a", + "0x536b00532608500702d02808500536b00502802302832600536b005329", + "0x509202823f00536b00523f00504f02809500536b005093005363028093", + "0x536b00509500508402800700536b0050070050c002832b00536b00532b", + "0x2836b00500900504702802836b00502800702809500732b23f00a005095", + "0x36b00535d00501f02802836b00524f00523702802836b005363005343028", + "0x509202809800536b00523f00504f02832400536b00524e005031028028", + "0x534302802836b00502800702802844b00502804d02832300536b005324", + "0x2809600536b00524500503102802836b00535d00501f02802836b005363", + "0x509600509202823f00536b00523f00504f02832200536b00524d005363", + "0x532200536b00532200508402800700536b0050070050c002809600536b", + "0x504702802836b00502836902802836b00502800702832200709623f00a", + "0x1c02802836b00536300534302802836b00535d00501f02802836b005048", + "0x536b00502d00504f02832100536b00504000503102802836b00535e005", + "0x502805e02831f00536b00502802002832300536b005321005092028098", + "0x31d00536b00531e31f00736402831e00536b00531e00501b02831e00536b", + "0x31b00536302831b00536b00531d31c00702d02831c00536b005028023028", + "0x32300536b00532300509202809800536b00509800504f02831a00536b005", + "0x32309800a00531a00536b00531a00508402800700536b0050070050c0028", + "0x536300534302802836b00535f00501c02802836b00502800702831a007", + "0x2802002831900536b00508400503102802836b00500b00506002802836b", + "0x2831700536b00531700501b02831700536b00502804802831800536b005", + "0x31631400702d02831400536b00502802302831600536b005317318007364", + "0x2d00536b00502d00504f02831100536b00531300536302831300536b005", + "0x31100508402800700536b0050070050c002831900536b005319005092028", + "0x36700501c02802836b00502800702831100731902d00a00531100536b005", + "0x4f0280a900536b00502300503102802836b00500b00506002802836b005", + "0x2844c00502804d0280b000536b0050a900509202831000536b0050c0005", + "0x2802836b00536400504702802836b00502836902802836b005028007028", + "0x2836b00509200506002802836b00500b00506002802836b00536700501c", + "0xac00509202831000536b00500f00504f0280ac00536b00501c005031028", + "0x1b02830d00536b00502804502830f00536b0050280200280b000536b005", + "0x36b0050280230280b400536b00530d30f00736402830d00536b00530d005", + "0x280b900536b00530b00536302830b00536b0050b40b600702d0280b6005", + "0x50070050c00280b000536b0050b000509202831000536b00531000504f", + "0x280070280b90070b031000a0050b900536b0050b900508402800700536b", + "0x523702802836b00500b00506002802836b00509200506002802836b005", + "0x2830800536b00502802002830900536b00504e00503102802836b005031", + "0x530730800736402830700536b00530700501b02830700536b005028046", + "0x280bf00536b00530630500702d02830500536b00502802302830600536b", + "0x53090050920281c800536b0051c800504f02830400536b0050bf005363", + "0x530400536b00530400508402800700536b0050070050c002830900536b", + "0xa00736b00700502800700502802836b0050280280283040073091c800a", + "0x2800f00536b00500b00503102802836b00502800702809204f00744d00b", + "0x536b00500a00504f02802836b00502800b02801000536b00503100500a", + "0x544e04e1c800736b00701000500f02800f00536b00500f00509202800a", + "0x504e00524f02801400536b00500f00503102802836b005028007028013", + "0x2801700536b0051c800501302803000536b00501400509202804d00536b", + "0x2802836b00502800702802844f00502804d02801800536b00504d005252", + "0x36b00536800505002836800536b00502803002836900536b00500f005031", + "0x25202801700536b00501300501302803000536b00536900509202801b005", + "0x2800702836700545001c00536b00701800500902801800536b00501b005", + "0x501002836600536b00503000503102802836b00502836902802836b005", + "0x536b00502000501b02802000536b00501f0051c802801f00536b00501c", + "0x45136436500736b00702000a0070ac02836600536b005366005092028020", + "0x4f0280c000536b00536600503102802836b00502800702836302d023031", + "0x36b00701700500f0280c000536b0050c000509202836500536b005365005", + "0x2802836b00508400501c02802836b0050280070281aa005452361084007", + "0x536b0050c000503102802836b00536400530f02802836b005361005367", + "0x535d00501b02835d00536b00502836502803200536b00502802002835f", + "0x2803300536b00502802302836c00536b00535d03200736402835d00536b", + "0x36500504f02803c00536b00500c00536302800c00536b00536c03300702d", + "0x700536b0050070050c002835f00536b00535f00509202836500536b005", + "0x2836b00502800702803c00735f36500a00503c00536b00503c005084028", + "0x36b00502836102803600536b0050c000503102802836b0051aa00501c028", + "0x35f02804000536b0050400051aa02803600536b005036005092028040005", + "0x2802836b00502800702821535600745335935e00736b007040036365031", + "0x521c00509202835e00536b00535e00504f02821c00536b005359005031", + "0x3136b00536421c35e0310b402836400536b00536400530d02821c00536b", + "0x2836b00502800702823700545404500536b0070470050b6028047048046", + "0x504500530b02823b00536b00502802002823900536b005048005031028", + "0x24900536b00524523b00736402824500536b00523f0050b902823f00536b", + "0x24d00535e02802836b00524c00504002824d24c00736b005249005036028", + "0x25200536b00524f00535602824f00536b00524e00535902824e00536b005", + "0x70050c002823900536b00523900509202804600536b00504600504f028", + "0x702825200723904600a00525200536b00525200508402800700536b005", + "0x900536b00523700536302805000536b00504800503102802836b005028", + "0x70050c002805000536b00505000509202804600536b00504600504f028", + "0x702800900705004600a00500900536b00500900508402800700536b005", + "0x2805b00536b00521500503102802836b00536400530f02802836b005028", + "0x536b00505900501b02805900536b00502804602805800536b005028020", + "0x702d02825c00536b00502802302805c00536b005059058007364028059", + "0x36b00535600504f02825e00536b00525d00536302825d00536b00505c25c", + "0x8402800700536b0050070050c002805b00536b00505b005092028356005", + "0x30f02802836b00502800702825e00705b35600a00525e00536b00525e005", + "0x2802836b00501700501c02802836b00536300530f02802836b00502d005", + "0x505e00509202806000536b00502300504f02805e00536b005366005031", + "0x36b00502836902802836b00502800702802845500502804d02805f00536b", + "0x503000503102802836b00501700501c02802836b005367005047028028", + "0x2805f00536b00505d00509202806000536b00500a00504f02805d00536b", + "0x536b00529800501b02829800536b00502804502829600536b005028020", + "0x702d02806700536b00502802302804200536b005298296007364028298", + "0x36b00506000504f02806900536b0052bd0053630282bd00536b005042067", + "0x8402800700536b0050070050c002805f00536b00505f005092028060005", + "0x23702802836b00502800702806900705f06000a00506900536b005069005", + "0x600536b00502802002806800536b00509200503102802836b005031005", + "0x6f00600736402806f00536b00506f00501b02806f00536b005028046028", + "0x7400536b00507132500702d02832500536b00502802302807100536b005", + "0x6800509202804f00536b00504f00504f02807500536b005074005363028", + "0x7500536b00507500508402800700536b0050070050c002806800536b005", + "0x736b00700502800700502802836b00502802802807500706804f00a005", + "0xf00536b00500b00503102802836b00502800702809204f00745600b00a", + "0xf00509202800a00536b00500a00504f02801000536b00503100500a028", + "0x502800702801300545704e1c800736b00701000500f02800f00536b005", + "0xf00503102802836b00504e00536702802836b0051c800501c02802836b", + "0x1b02803000536b00502836502804d00536b00502802002801400536b005", + "0x36b00502802302801700536b00503004d00736402803000536b005030005", + "0x2836800536b00536900536302836900536b00501701800702d028018005", + "0x50070050c002801400536b00501400509202800a00536b00500a00504f", + "0x2800702836800701400a00a00536800536b00536800508402800700536b", + "0x36102801b00536b00500f00503102802836b00501300501c02802836b005", + "0x536b00501c0051aa02801b00536b00501b00509202801c00536b005028", + "0x502800702802001f00745836636700736b00701c01b00a03135f02801c", + "0x504f02836400536b00502834102836500536b00536600503102802836b", + "0x536b0050070050c002836500536b00536500509202836700536b005367", + "0x70c000533c0280c036302d02300a36b00536400736536700a309028007", + "0x2802836b00508400533b02802836b00502800702836100545908400536b", + "0x36b00535f00503602835f00536b0050280200281aa00536b00502d005031", + "0x35902836c00536b00535d00535e02802836b00503200504002835d032007", + "0x36b00502300504f02800c00536b00503300535602803300536b00536c005", + "0x8402836300536b0053630050c00281aa00536b0051aa005092028023005", + "0x3102802836b00502800702800c3631aa02300a00500c00536b00500c005", + "0x36b00502300504f02803600536b00536100536302803c00536b00502d005", + "0x8402836300536b0053630050c002803c00536b00503c005092028023005", + "0x3102802836b00502800702803636303c02300a00503600536b005036005", + "0x35900536b00502804602835e00536b00502802002804000536b005020005", + "0x2802302835600536b00535935e00736402835900536b00535900501b028", + "0x536b00521c00536302821c00536b00535621500702d02821500536b005", + "0x50c002804000536b00504000509202801f00536b00501f00504f028046", + "0x2804600704001f00a00504600536b00504600508402800700536b005007", + "0x4800536b00509200503102802836b00503100523702802836b005028007", + "0x36b00504500501b02804500536b00502804602804700536b005028020028", + "0x2d02823900536b00502802302823700536b005045047007364028045005", + "0x504f00504f02823f00536b00523b00536302823b00536b005237239007", + "0x2800700536b0050070050c002804800536b00504800509202804f00536b", + "0x2802836b00502802802823f00704804f00a00523f00536b00523f005084", + "0x2802836b00502800702809204f00745a00b00a00736b007005028007005", + "0x500a00504f02801000536b00503100500a02800f00536b00500b005031", + "0x4e1c800736b00701000500f02800f00536b00500f00509202800a00536b", + "0x4e00536702802836b0051c800501c02802836b00502800702801300545b", + "0x36502804d00536b00502802002801400536b00500f00503102802836b005", + "0x36b00503004d00736402803000536b00503000501b02803000536b005028", + "0x36302836900536b00501701800702d02801800536b005028023028017005", + "0x36b00501400509202800a00536b00500a00504f02836800536b005369005", + "0xa00536800536b00536800508402800700536b0050070050c0028014005", + "0x503102802836b00501300501c02802836b00502800702836800701400a", + "0x1b00536b00501b00509202801c00536b00502836102801b00536b00500f", + "0x45c36636700736b00701c01b00a03135f02801c00536b00501c0051aa028", + "0x2834102836500536b00536600503102802836b00502800702802001f007", + "0x36500536b00536500509202836700536b00536700504f02836400536b005", + "0x2d02300a36b00536400736536700a30802800700536b0050070050c0028", + "0x2802836b00502800702836100545d08400536b0070c000533c0280c0363", + "0x536b0050280200281aa00536b00502d00503102802836b00508400533b", + "0x535e02802836b00503200504002835d03200736b00535f00503602835f", + "0x536b00503300535602803300536b00536c00535902836c00536b00535d", + "0x50c00281aa00536b0051aa00509202802300536b00502300504f02800c", + "0x2800c3631aa02300a00500c00536b00500c00508402836300536b005363", + "0x536b00536100536302803c00536b00502d00503102802836b005028007", + "0x50c002803c00536b00503c00509202802300536b00502300504f028036", + "0x2803636303c02300a00503600536b00503600508402836300536b005363", + "0x35e00536b00502802002804000536b00502000503102802836b005028007", + "0x35935e00736402835900536b00535900501b02835900536b005028046028", + "0x21c00536b00535621500702d02821500536b00502802302835600536b005", + "0x4000509202801f00536b00501f00504f02804600536b00521c005363028", + "0x4600536b00504600508402800700536b0050070050c002804000536b005", + "0x2802836b00503100523702802836b00502800702804600704001f00a005", + "0x536b00502804602804700536b00502802002804800536b005092005031", + "0x2302823700536b00504504700736402804500536b00504500501b028045", + "0x36b00523b00536302823b00536b00523723900702d02823900536b005028", + "0xc002804800536b00504800509202804f00536b00504f00504f02823f005", + "0x23f00704804f00a00523f00536b00523f00508402800700536b005007005", + "0xf09200745e04f00b00736b00700702800700502802836b005028028028", + "0x36b00500a00500a02801000536b00504f00503102802836b005028007028", + "0xf02801000536b00501000509202800b00536b00500b00504f0281c8005", + "0x4e00501c02802836b00502800702801400545f01304e00736b0071c8005", + "0x2002804d00536b00501000503102802836b00501300536702802836b005", + "0x1700536b00501700501b02801700536b00502836502803000536b005028", + "0x36900702d02836900536b00502802302801800536b005017030007364028", + "0x536b00500b00504f02801b00536b00536800536302836800536b005018", + "0x50c002804d00536b00504d00509202800500536b00500500530702800b", + "0x1b03104d00500b00b00501b00536b00501b00508402803100536b005031", + "0x536b00501000503102802836b00501400501c02802836b005028007028", + "0x3670051aa02801c00536b00501c00509202836700536b00502836102801c", + "0x2836502000746001f36600736b00736701c00b03135f02836700536b005", + "0x2300536b00502834102836400536b00501f00503102802836b005028007", + "0x500530702836400536b00536400509202836600536b00536600504f028", + "0x2303100536436600b30602803100536b0050310050c002800500536b005", + "0x2835f0054611aa00536b00736100533c0283610840c036302d00b36b005", + "0x3200536b00536300503102802836b0051aa00533b02802836b005028007", + "0x36c00504002803336c00736b00535d00503602835d00536b005028020028", + "0x2803c00536b00500c00535902800c00536b00503300535e02802836b005", + "0x50c000530702802d00536b00502d00504f02803600536b00503c005356", + "0x2808400536b0050840050c002803200536b0050320050920280c000536b", + "0x2836b0050280070280360840320c002d00b00503600536b005036005084", + "0x2d00504f02835e00536b00535f00536302804000536b005363005031028", + "0x4000536b0050400050920280c000536b0050c000530702802d00536b005", + "0xc002d00b00535e00536b00535e00508402808400536b0050840050c0028", + "0x2802002835900536b00536500503102802836b00502800702835e084040", + "0x2821500536b00521500501b02821500536b00502804602835600536b005", + "0x21c04600702d02804600536b00502802302821c00536b005215356007364", + "0x2000536b00502000504f02804700536b00504800536302804800536b005", + "0x310050c002835900536b00535900509202800500536b005005005307028", + "0x2804703135900502000b00504700536b00504700508402803100536b005", + "0x4500536b00500f00503102802836b00500a00523702802836b005028007", + "0x36b00523900501b02823900536b00502804602823700536b005028020028", + "0x2d02823f00536b00502802302823b00536b005239237007364028239005", + "0x509200504f02824900536b00524500536302824500536b00523b23f007", + "0x2804500536b00504500509202800500536b00500500530702809200536b", + "0x4500509200b00524900536b00524900508402803100536b0050310050c0", + "0x746200b00a00736b00700502800700502802836b005028028028249031", + "0x3100500a02800f00536b00500b00503102802836b00502800702809204f", + "0xf00536b00500f00509202800a00536b00500a00504f02801000536b005", + "0x1c02802836b00502800702801300546304e1c800736b00701000500f028", + "0x1400536b00500f00503102802836b00504e00536702802836b0051c8005", + "0x36b00503000501b02803000536b00502836502804d00536b005028020028", + "0x2d02801800536b00502802302801700536b00503004d007364028030005", + "0x500a00504f02836800536b00536900536302836900536b005017018007", + "0x2800700536b0050070050c002801400536b00501400509202800a00536b", + "0x2802836b00502800702836800701400a00a00536800536b005368005084", + "0x536b00502836102801b00536b00500f00503102802836b00501300501c", + "0x3135f02801c00536b00501c0051aa02801b00536b00501b00509202801c", + "0x3102802836b00502800702802001f00746436636700736b00701c01b00a", + "0x536b00536700504f02836400536b00502834102836500536b005366005", + "0xa30502800700536b0050070050c002836500536b005365005092028367", + "0x46508400536b0070c000533c0280c036302d02300a36b005364007365367", + "0x502d00503102802836b00508400533b02802836b005028007028361005", + "0x2835d03200736b00535f00503602835f00536b0050280200281aa00536b", + "0x36b00536c00535902836c00536b00535d00535e02802836b005032005040", + "0x9202802300536b00502300504f02800c00536b005033005356028033005", + "0x36b00500c00508402836300536b0053630050c00281aa00536b0051aa005", + "0x36b00502d00503102802836b00502800702800c3631aa02300a00500c005", + "0x9202802300536b00502300504f02803600536b00536100536302803c005", + "0x36b00503600508402836300536b0053630050c002803c00536b00503c005", + "0x36b00502000503102802836b00502800702803636303c02300a005036005", + "0x35900501b02835900536b00502804602835e00536b005028020028040005", + "0x21500536b00502802302835600536b00535935e00736402835900536b005", + "0x504f02804600536b00521c00536302821c00536b00535621500702d028", + "0x536b0050070050c002804000536b00504000509202801f00536b00501f", + "0x36b00502800702804600704001f00a00504600536b005046005084028007", + "0x502802002804800536b00509200503102802836b005031005237028028", + "0x36402804500536b00504500501b02804500536b00502804602804700536b", + "0x523723900702d02823900536b00502802302823700536b005045047007", + "0x2804f00536b00504f00504f02823f00536b00523b00536302823b00536b", + "0x523f00508402800700536b0050070050c002804800536b005048005092", + "0x502800700502802836b00502802802823f00704804f00a00523f00536b", + "0x500b00503102802836b00502800702809204f00746600b00a00736b007", + "0x2800a00536b00500a00504f02801000536b00503100500a02800f00536b", + "0x2801300546704e1c800736b00701000500f02800f00536b00500f005092", + "0x536b00504e00501002801400536b00500f00503102802836b005028007", + "0x501b02801400536b0050140050920281c800536b0051c800501302804d", + "0x2800702801800546801703000736b0071c800500f02804d00536b00504d", + "0x2836800536b00501700501002836900536b00501400503102802836b005", + "0x536800501b02836900536b00536900509202803000536b005030005013", + "0x36b00502800702836700546901c01b00736b00703000500f02836800536b", + "0x536800501f02802836b00501c00536702802836b00501b00501c028028", + "0x2802002836600536b00536900503102802836b00504d00501f02802836b", + "0x2802000536b00502000501b02802000536b00502836502801f00536b005", + "0x36536400702d02836400536b00502802302836500536b00502001f007364", + "0xa00536b00500a00504f02802d00536b00502300536302802300536b005", + "0x2d00508402800700536b0050070050c002836600536b005366005092028", + "0x36700501c02802836b00502800702802d00736600a00a00502d00536b005", + "0x920280c000536b00502836102836300536b00536900503102802836b005", + "0xc036300a03135f0280c000536b0050c00051aa02836300536b005363005", + "0x536100503102802836b00502800702835f1aa00746a36108400736b007", + "0x2836c00536b0053680051c802835d00536b00504d0051c802803200536b", + "0x8400504f02803300536b00503300501b02803300536b00536c35d00732c", + "0x46b02836b00703300534802803200536b00503200509202808400536b005", + "0x502802002803c00536b00503200503102802836b00502800702800c005", + "0x36402804000536b00504000501b02804000536b0050280bf02803600536b", + "0x35900504002835635900736b00535e00503602835e00536b005040036007", + "0x2821c00536b00521500535902821500536b00535600535e02802836b005", + "0x503c00509202808400536b00508400504f02804600536b00521c005356", + "0x504600536b00504600508402800700536b0050070050c002803c00536b", + "0x3102802836b00500c00534602802836b00502800702804600703c08400a", + "0x4500536b00502830402804700536b00502802002804800536b005032005", + "0x2802302823700536b00504504700736402804500536b00504500501b028", + "0x536b00523b00536302823b00536b00523723900702d02823900536b005", + "0x50c002804800536b00504800509202808400536b00508400504f02823f", + "0x2823f00704808400a00523f00536b00523f00508402800700536b005007", + "0x2802836b00504d00501f02802836b00536800501f02802836b005028007", + "0x536b00502804602824900536b00502802002824500536b00535f005031", + "0x2302824d00536b00524c24900736402824c00536b00524c00501b02824c", + "0x36b00524f00536302824f00536b00524d24e00702d02824e00536b005028", + "0xc002824500536b0052450050920281aa00536b0051aa00504f028252005", + "0x2520072451aa00a00525200536b00525200508402800700536b005007005", + "0x2836b00504d00501f02802836b00501800501c02802836b005028007028", + "0x36b00502804802800900536b00502802002805000536b005014005031028", + "0x2805800536b00505b00900736402805b00536b00505b00501b02805b005", + "0x505c00536302805c00536b00505805900702d02805900536b005028023", + "0x2805000536b00505000509202800a00536b00500a00504f02825c00536b", + "0x705000a00a00525c00536b00525c00508402800700536b0050070050c0", + "0x36b00500f00503102802836b00501300501c02802836b00502800702825c", + "0x5e00501b02805e00536b00502804502825e00536b00502802002825d005", + "0x5f00536b00502802302806000536b00505e25e00736402805e00536b005", + "0x504f02829600536b00505d00536302805d00536b00506005f00702d028", + "0x536b0050070050c002825d00536b00525d00509202800a00536b00500a", + "0x36b00502800702829600725d00a00a00529600536b005296005084028007", + "0x502802002829800536b00509200503102802836b005031005237028028", + "0x36402806700536b00506700501b02806700536b00502804602804200536b", + "0x52bd06900702d02806900536b0050280230282bd00536b005067042007", + "0x2804f00536b00504f00504f02800600536b00506800536302806800536b", + "0x500600508402800700536b0050070050c002829800536b005298005092", + "0x502800700502802836b00502802802800600729804f00a00500600536b", + "0x500b00503102802836b00502800702809204f00746c00b00a00736b007", + "0x504f02802836b00502800b02801000536b00503100500a02800f00536b", + "0x736b00701000500f02800f00536b00500f00509202800a00536b00500a", + "0x2801400536b00500f00503102802836b00502800702801300546d04e1c8", + "0x51c800501302803000536b00501400509202804d00536b00504e00524f", + "0x2800702802846e00502804d02801800536b00504d00525202801700536b", + "0x5002836800536b00502803002836900536b00500f00503102802836b005", + "0x36b00501300501302803000536b00536900509202801b00536b005368005", + "0x546f01c00536b00701800500902801800536b00501b005252028017005", + "0x536b00503000503102802836b00502836902802836b005028007028367", + "0x1700535e02802000536b00502802002801f00536b00501c005010028366", + "0xa00536b00500a00504f02836400536b00501f0051c802836500536b005", + "0x2000521502836500536b00536500505b02836600536b005366005092028", + "0x36402036536600a00b05802836400536b00536400501b02802000536b005", + "0x280070280840054700c000536b00736300505902836302d02303136b005", + "0x35f1aa00736b0050c000505c02836100536b00502d00503102802836b005", + "0x2835d00547103200536b00735f00525c02836100536b005361005092028", + "0x536b0051aa00500a02836c00536b00536100503102802836b005028007", + "0x547203c00c00736b00703300500f02836c00536b00536c005092028033", + "0x36b00503c00536702802836b00500c00501c02802836b005028007028036", + "0x502802002804000536b00536c00503102802836b005032005040028028", + "0x36402835900536b00535900501b02835900536b00502836502835e00536b", + "0x535621500702d02821500536b00502802302835600536b00535935e007", + "0x2802300536b00502300504f02804600536b00521c00536302821c00536b", + "0x504600508402800700536b0050070050c002804000536b005040005092", + "0x503600501c02802836b00502800702804600704002300a00504600536b", + "0x509202804700536b00502836102804800536b00536c00503102802836b", + "0x704704802303135f02804700536b0050470051aa02804800536b005048", + "0x36b00523700503102802836b00502800702823b23900747323704500736b", + "0x509202804500536b00504500504f02824500536b00502834102823f005", + "0x536b00503200521502800700536b0050070050c002823f00536b00523f", + "0x24e00530202824e24d24c24900a36b00503224500723f04500b303028032", + "0x536b00524c00503102802836b00502800702825200547424f00536b007", + "0x532102805805b00736b00524f00505102800900536b005028020028050", + "0x736b00505900503602805900536b00505800900736402802836b00505b", + "0x535902825d00536b00525c00535e02802836b00505c00504002825c05c", + "0x536b00524900504f02805e00536b00525e00535602825e00536b00525d", + "0x508402824d00536b00524d0050c002805000536b005050005092028249", + "0x503102802836b00502800702805e24d05024900a00505e00536b00505e", + "0x536b00524900504f02805f00536b00525200536302806000536b00524c", + "0x508402824d00536b00524d0050c002806000536b005060005092028249", + "0x504002802836b00502800702805f24d06024900a00505f00536b00505f", + "0x2829600536b00502802002805d00536b00523b00503102802836b005032", + "0x529829600736402829800536b00529800501b02829800536b005028046", + "0x282bd00536b00504206700702d02806700536b00502802302804200536b", + "0x505d00509202823900536b00523900504f02806900536b0052bd005363", + "0x506900536b00506900508402800700536b0050070050c002805d00536b", + "0x23702802836b00535d00504702802836b00502800702806900705d23900a", + "0x536b00502300504f02806800536b00536100503102802836b0051aa005", + "0x36b00502800702802847500502804d02806f00536b005068005092028006", + "0x504f02832500536b00508400536302807100536b00502d005031028028", + "0x536b0050070050c002807100536b00507100509202802300536b005023", + "0x36b00502800702832500707102300a00532500536b005325005084028007", + "0x36b00501700501c02802836b00536700504702802836b005028369028028", + "0x509202800600536b00500a00504f02807400536b005030005031028028", + "0x2807700536b00502804502807500536b00502802002806f00536b005074", + "0x502802302834c00536b00507707500736402807700536b00507700501b", + "0x7a00536b00504300536302804300536b00534c34b00702d02834b00536b", + "0x70050c002806f00536b00506f00509202800600536b00500600504f028", + "0x702807a00706f00600a00507a00536b00507a00508402800700536b005", + "0x2807900536b00509200503102802836b00503100523702802836b005028", + "0x536b00534800501b02834800536b00502804602807f00536b005028020", + "0x702d02807d00536b00502802302808100536b00534807f007364028348", + "0x36b00504f00504f02834500536b00534600536302834600536b00508107d", + "0x8402800700536b0050070050c002807900536b00507900509202804f005", + "0x502802836b00502802802834500707904f00a00534500536b005345005", + "0x3102802836b00502800702809204f00747600b00a00736b007005028007", + "0x36b00500a00504f02801000536b00503100500a02800f00536b00500b005", + "0x47704e1c800736b00701000500f02800f00536b00500f00509202800a005", + "0x504e00536702802836b0051c800501c02802836b005028007028013005", + "0x2836502804d00536b00502802002801400536b00500f00503102802836b", + "0x536b00503004d00736402803000536b00503000501b02803000536b005", + "0x536302836900536b00501701800702d02801800536b005028023028017", + "0x536b00501400509202800a00536b00500a00504f02836800536b005369", + "0xa00a00536800536b00536800508402800700536b0050070050c0028014", + "0xf00503102802836b00501300501c02802836b005028007028368007014", + "0x2801b00536b00501b00509202801c00536b00502836102801b00536b005", + "0x747836636700736b00701c01b00a03135f02801c00536b00501c0051aa", + "0x502802002836500536b00536600503102802836b00502800702802001f", + "0x36402802300536b00502300501b02802300536b00502839302836400536b", + "0x502d36300702d02836300536b00502802302802d00536b005023364007", + "0x2836700536b00536700504f02808400536b0050c00053630280c000536b", + "0x508400508402800700536b0050070050c002836500536b005365005092", + "0x502000503102802836b00502800702808400736536700a00508400536b", + "0x501b02835f00536b0050280460281aa00536b00502802002836100536b", + "0x536b00502802302803200536b00535f1aa00736402835f00536b00535f", + "0x4f02803300536b00536c00536302836c00536b00503235d00702d02835d", + "0x36b0050070050c002836100536b00536100509202801f00536b00501f005", + "0x502800702803300736101f00a00503300536b005033005084028007005", + "0x2802002800c00536b00509200503102802836b00503100523702802836b", + "0x2803600536b00503600501b02803600536b00502804602803c00536b005", + "0x4035e00702d02835e00536b00502802302804000536b00503603c007364", + "0x4f00536b00504f00504f02835600536b00535900536302835900536b005", + "0x35600508402800700536b0050070050c002800c00536b00500c005092028", + "0x2800700502802836b00502802802835600700c04f00a00535600536b005", + "0xb00503102802836b00502800702809204f00747900b00a00736b007005", + "0xa00536b00500a00504f02801000536b00503100500a02800f00536b005", + "0x1300547a04e1c800736b00701000500f02800f00536b00500f005092028", + "0x36b00504e00501002801400536b00500f00503102802836b005028007028", + "0x1b02801400536b0050140050920281c800536b0051c800501302804d005", + "0x702801800547b01703000736b0071c800500f02804d00536b00504d005", + "0x1f02802836b00501700536702802836b00503000501c02802836b005028", + "0x36800536b00502802002836900536b00501400503102802836b00504d005", + "0x1b36800736402801b00536b00501b00501b02801b00536b005028365028", + "0x36600536b00501c36700702d02836700536b00502802302801c00536b005", + "0x36900509202800a00536b00500a00504f02801f00536b005366005363028", + "0x1f00536b00501f00508402800700536b0050070050c002836900536b005", + "0x2802836b00501800501c02802836b00502800702801f00736900a00a005", + "0x36b00502000509202836500536b00502836102802000536b005014005031", + "0x36400736b00736502000a03135f02836500536b0053650051aa028020005", + "0x280c000536b00502300503102802836b00502800702836302d00747c023", + "0x36b00536400504f02836100536b00502834102808400536b00504d0051c8", + "0x39402808400536b00508400501b0280c000536b0050c0005092028364005", + "0x47d35d00536b00703200533c02803235f1aa03136b0050843610c036400a", + "0x535f00503102802836b00535d00533b02802836b00502800702836c005", + "0x2803603c00736b00500c00503602800c00536b00502802002803300536b", + "0x36b00504000535902804000536b00503600535e02802836b00503c005040", + "0x920281aa00536b0051aa00504f02835900536b00535e00535602835e005", + "0x36b00535900508402800700536b0050070050c002803300536b005033005", + "0x36b00535f00503102802836b0050280070283590070331aa00a005359005", + "0x920281aa00536b0051aa00504f02821500536b00536c005363028356005", + "0x36b00521500508402800700536b0050070050c002835600536b005356005", + "0x36b00504d00501f02802836b0050280070282150073561aa00a005215005", + "0x502804602804600536b00502802002821c00536b005363005031028028", + "0x4700536b00504804600736402804800536b00504800501b02804800536b", + "0x23700536302823700536b00504704500702d02804500536b005028023028", + "0x21c00536b00521c00509202802d00536b00502d00504f02823900536b005", + "0x21c02d00a00523900536b00523900508402800700536b0050070050c0028", + "0x500f00503102802836b00501300501c02802836b005028007028239007", + "0x501b02824500536b00502804502823f00536b00502802002823b00536b", + "0x536b00502802302824900536b00524523f00736402824500536b005245", + "0x4f02824e00536b00524d00536302824d00536b00524924c00702d02824c", + "0x36b0050070050c002823b00536b00523b00509202800a00536b00500a005", + "0x502800702824e00723b00a00a00524e00536b00524e005084028007005", + "0x2802002824f00536b00509200503102802836b00503100523702802836b", + "0x2805000536b00505000501b02805000536b00502804602825200536b005", + "0x905b00702d02805b00536b00502802302800900536b005050252007364", + "0x4f00536b00504f00504f02805900536b00505800536302805800536b005", + "0x5900508402800700536b0050070050c002824f00536b00524f005092028", + "0x2800700502802836b00502802802805900724f04f00a00505900536b005", + "0xb00503102802836b00502800702809204f00747e00b00a00736b007005", + "0xa00536b00500a00504f02801000536b00503100500a02800f00536b005", + "0x1300547f04e1c800736b00701000500f02800f00536b00500f005092028", + "0x36b00504e00501002801400536b00500f00503102802836b005028007028", + "0x1b02801400536b0050140050920281c800536b0051c800501302804d005", + "0x702801800548001703000736b0071c800500f02804d00536b00504d005", + "0x1f02802836b00501700536702802836b00503000501c02802836b005028", + "0x36800536b00502802002836900536b00501400503102802836b00504d005", + "0x1b36800736402801b00536b00501b00501b02801b00536b005028365028", + "0x36600536b00501c36700702d02836700536b00502802302801c00536b005", + "0x36900509202800a00536b00500a00504f02801f00536b005366005363028", + "0x1f00536b00501f00508402800700536b0050070050c002836900536b005", + "0x2802836b00501800501c02802836b00502800702801f00736900a00a005", + "0x36b00502000509202836500536b00502836102802000536b005014005031", + "0x36400736b00736502000a03135f02836500536b0053650051aa028020005", + "0x280c000536b00502300503102802836b00502800702836302d007481023", + "0x36b00536400504f02836100536b00502834102808400536b00504d0051c8", + "0x39502808400536b00508400501b0280c000536b0050c0005092028364005", + "0x48235d00536b00703200533c02803235f1aa03136b0050843610c036400a", + "0x535f00503102802836b00535d00533b02802836b00502800702836c005", + "0x2803603c00736b00500c00503602800c00536b00502802002803300536b", + "0x36b00504000535902804000536b00503600535e02802836b00503c005040", + "0x920281aa00536b0051aa00504f02835900536b00535e00535602835e005", + "0x36b00535900508402800700536b0050070050c002803300536b005033005", + "0x36b00535f00503102802836b0050280070283590070331aa00a005359005", + "0x920281aa00536b0051aa00504f02821500536b00536c005363028356005", + "0x36b00521500508402800700536b0050070050c002835600536b005356005", + "0x36b00504d00501f02802836b0050280070282150073561aa00a005215005", + "0x502804602804600536b00502802002821c00536b005363005031028028", + "0x4700536b00504804600736402804800536b00504800501b02804800536b", + "0x23700536302823700536b00504704500702d02804500536b005028023028", + "0x21c00536b00521c00509202802d00536b00502d00504f02823900536b005", + "0x21c02d00a00523900536b00523900508402800700536b0050070050c0028", + "0x500f00503102802836b00501300501c02802836b005028007028239007", + "0x501b02824500536b00502804502823f00536b00502802002823b00536b", + "0x536b00502802302824900536b00524523f00736402824500536b005245", + "0x4f02824e00536b00524d00536302824d00536b00524924c00702d02824c", + "0x36b0050070050c002823b00536b00523b00509202800a00536b00500a005", + "0x502800702824e00723b00a00a00524e00536b00524e005084028007005", + "0x2802002824f00536b00509200503102802836b00503100523702802836b", + "0x2805000536b00505000501b02805000536b00502804602825200536b005", + "0x905b00702d02805b00536b00502802302800900536b005050252007364", + "0x4f00536b00504f00504f02805900536b00505800536302805800536b005", + "0x5900508402800700536b0050070050c002824f00536b00524f005092028", + "0x2800700502802836b00502802802805900724f04f00a00505900536b005", + "0xb00503102802836b00502800702809204f00748300b00a00736b007005", + "0x4f02802836b00502800b02801000536b00503100500a02800f00536b005", + "0x36b00701000500f02800f00536b00500f00509202800a00536b00500a005", + "0x1400536b00500f00503102802836b00502800702801300548404e1c8007", + "0x3000504e02803000536b00504d0051c802804d00536b00504e005010028", + "0x36900536b0051c800501302801800536b00501400509202801700536b005", + "0x2836b00502800702802848500502804d02836800536b005017005014028", + "0x501c00501702801c00536b00502803002801b00536b00500f005031028", + "0x2836900536b00501300501302801800536b00501b00509202836700536b", + "0x702801f00548636600536b00736800501802836800536b005367005014", + "0x9202802000536b00501800503102802836b00502836902802836b005028", + "0x2802300548736436500736b00736600a00724e02802000536b005020005", + "0x536b00536500504f02802d00536b00502000503102802836b005028007", + "0x54880c036300736b00736900500f02802d00536b00502d005092028365", + "0x50c000501002836100536b00502d00503102802836b005028007028084", + "0x2836100536b00536100509202836300536b0053630050130281aa00536b", + "0x2835d00548903235f00736b00736300500f0281aa00536b0051aa00501b", + "0x536b00503200501002836c00536b00536100503102802836b005028007", + "0x501b02836c00536b00536c00509202835f00536b00535f005013028033", + "0x2800702803600548a03c00c00736b00735f00500f02803300536b005033", + "0x501f02802836b00503c00536702802836b00500c00501c02802836b005", + "0x3102802836b00536400525d02802836b00503300501f02802836b0051aa", + "0x35900536b00502836502835e00536b00502802002804000536b00536c005", + "0x2802302835600536b00535935e00736402835900536b00535900501b028", + "0x536b00521c00536302821c00536b00535621500702d02821500536b005", + "0x50c002804000536b00504000509202836500536b00536500504f028046", + "0x2804600704036500a00504600536b00504600508402800700536b005007", + "0x4800536b00536c00503102802836b00503600501c02802836b005028007", + "0x50470051aa02804800536b00504800509202804700536b005028361028", + "0x702823b23900748b23704500736b00704704836503135f02804700536b", + "0x24500536b0050330051c802823f00536b00523700503102802836b005028", + "0x504500504f02824924500736b0052450050dc02802836b00502800b028", + "0x548c02836b00724900534802823f00536b00523f00509202804500536b", + "0x36b0051aa00501f02802836b00524500501f02802836b00502800702824c", + "0x24d00509202824d00536b00523f00503102802836b00536400525d028028", + "0x702802848d00502804d02824f00536b0050070050c002824e00536b005", + "0x2825200536b00523f00503102802836b00524c00534602802836b005028", + "0x50090050c702800936400736b00536400539602805000536b005028020", + "0x5900536b0051aa0051c802805800536b00505b05000736402805b00536b", + "0x23f02825c00536b00505c05800736402805c05900736b0050590050dc028", + "0x36b00525e00501b02825e00536b00525d24500732c02825d00536b005028", + "0x5f06000736b00505e00503602805e00536b00525e25c00736402825e005", + "0x525200509202805d00536b00505f00535e02802836b005060005040028", + "0x705d05936400725200b25e02805d00536b00505d00505b02825200536b", + "0x4200523702802836b0050280070280692bd06703148e04229829603136b", + "0x2806800536b00529600503102829600536b00529600509202802836b005", + "0x36b00502836902824f00536b0052980050c002824e00536b005068005092", + "0x504002807106f00736b00500600503602800600536b005028020028028", + "0x7400536b00532500535902832500536b00507100535e02802836b00506f", + "0x24e00509202804500536b00504500504f02807500536b005074005356028", + "0x7500536b00507500508402824f00536b00524f0050c002824e00536b005", + "0x9202802836b00502836902802836b00502800702807524f24e04500a005", + "0x536b00502802302807700536b00506700503102806700536b005067005", + "0x4f02804300536b00534b00536302834b00536b00506934c00702d02834c", + "0x36b0052bd0050c002807700536b00507700509202804500536b005045005", + "0x50280070280432bd07704500a00504300536b0050430050840282bd005", + "0x36400525d02802836b00503300501f02802836b0051aa00501f02802836b", + "0x4602807900536b00502802002807a00536b00523b00503102802836b005", + "0x36b00507f07900736402807f00536b00507f00501b02807f00536b005028", + "0x36302807d00536b00534808100702d02808100536b005028023028348005", + "0x36b00507a00509202823900536b00523900504f02834600536b00507d005", + "0xa00534600536b00534600508402800700536b0050070050c002807a005", + "0x525d02802836b00535d00501c02802836b00502800702834600707a239", + "0x2834500536b00536100503102802836b0051aa00501f02802836b005364", + "0x536b00534300501b02834300536b00502805e02834400536b005028020", + "0x702d02834100536b00502802302834200536b005343344007364028343", + "0x36b00536500504f02808c00536b00533d00536302833d00536b005342341", + "0x8402800700536b0050070050c002834500536b005345005092028365005", + "0x1c02802836b00502800702808c00734536500a00508c00536b00508c005", + "0x33c00536b00502d00503102802836b00536400525d02802836b005084005", + "0x36b00508a00501b02808a00536b00502804802833b00536b005028020028", + "0x2d02833900536b00502802302833a00536b00508a33b00736402808a005", + "0x536500504f02833800536b00508800536302808800536b00533a339007", + "0x2800700536b0050070050c002833c00536b00533c00509202836500536b", + "0x2802836b00502800702833800733c36500a00533800536b005338005084", + "0x36b00502300504f02833700536b00502000503102802836b00536900501c", + "0x502800702802848f00502804d02808600536b005337005092028336005", + "0x536900501c02802836b00501f00504702802836b00502836902802836b", + "0x9202833600536b00500a00504f02808e00536b00501800503102802836b", + "0x33300536b00502804502837700536b00502802002808600536b00508e005", + "0x2802302833200536b00533337700736402833300536b00533300501b028", + "0x536b00533000536302833000536b00533233100702d02833100536b005", + "0x50c002808600536b00508600509202833600536b00533600504f02832f", + "0x2832f00708633600a00532f00536b00532f00508402800700536b005007", + "0x32e00536b00509200503102802836b00503100523702802836b005028007", + "0x36b00532c00501b02832c00536b00502804602832d00536b005028020028", + "0x2d02832b00536b00502802302808b00536b00532c32d00736402832c005", + "0x504f00504f02832900536b00532a00536302832a00536b00508b32b007", + "0x2800700536b0050070050c002832e00536b00532e00509202804f00536b", + "0x2802836b00502802802832900732e04f00a00532900536b005329005084", + "0x2802836b00502800702800f09200749004f00b00736b007007005007005", + "0x500b00504f0281c800536b00500a00500a02801000536b00504f005031", + "0x1304e00736b0071c800500f02801000536b00501000509202800b00536b", + "0x501002804d00536b00501000503102802836b005028007028014005491", + "0x536b00504d00509202804e00536b00504e00501302803000536b005013", + "0x549201801700736b00704e00500f02803000536b00503000501b02804d", + "0x501800501002836800536b00504d00503102802836b005028007028369", + "0x2836800536b00536800509202801700536b00501700501302801b00536b", + "0x2836600549336701c00736b00701700500f02801b00536b00501b00501b", + "0x536b00536700501002801f00536b00536800503102802836b005028007", + "0x501b02801f00536b00501f00509202801c00536b00501c005013028020", + "0x2800702802300549436436500736b00701c00500f02802000536b005020", + "0x501f02802836b00536400536702802836b00536500501c02802836b005", + "0x3102802836b00501b00501f02802836b00502000501f02802836b005030", + "0xc000536b00502836502836300536b00502802002802d00536b00501f005", + "0x2802302808400536b0050c03630073640280c000536b0050c000501b028", + "0x536b0051aa0053630281aa00536b00508436100702d02836100536b005", + "0x509202800b00536b00500b00504f02802800536b0050280050c602835f", + "0x536b00535f00508402803100536b0050310050c002802d00536b00502d", + "0x36b00502300501c02802836b00502800702835f03102d00b02800b00535f", + "0x3200509202835d00536b00502836102803200536b00501f005031028028", + "0x36b00735d03200b03135f02835d00536b00535d0051aa02803200536b005", + "0x536b00503300503102802836b00502800702803c00c00749503336c007", + "0x51c802835e00536b00501b0051c802804000536b0050300051c8028036", + "0x36c00536b00536c00504f02835600536b00502834102835900536b005020", + "0x310050c002802800536b0050280050c602803600536b005036005092028", + "0x35e00536b00535e00501b02804000536b00504000501b02803100536b005", + "0x535935e04035603102803636c00f0c902835900536b00535900501b028", + "0x702823700549604500536b00704700533c02804704804621c21500b36b", + "0x2823900536b00521c00503102802836b00504500533b02802836b005028", + "0x523f00504002824523f00736b00523b00503602823b00536b005028020", + "0x35602824c00536b00524900535902824900536b00524500535e02802836b", + "0x36b00521500504f02804600536b0050460050c602824d00536b00524c005", + "0x8402804800536b0050480050c002823900536b005239005092028215005", + "0x2802836b00502800702824d04823921504600b00524d00536b00524d005", + "0x50460050c602824f00536b00523700536302824e00536b00521c005031", + "0x2824e00536b00524e00509202821500536b00521500504f02804600536b", + "0x24e21504600b00524f00536b00524f00508402804800536b0050480050c0", + "0x502000501f02802836b00503000501f02802836b00502800702824f048", + "0x2802002825200536b00503c00503102802836b00501b00501f02802836b", + "0x2800900536b00500900501b02800900536b00502804602805000536b005", + "0x5b05800702d02805800536b00502802302805b00536b005009050007364", + "0x2800536b0050280050c602805c00536b00505900536302805900536b005", + "0x310050c002825200536b00525200509202800c00536b00500c00504f028", + "0x2805c03125200c02800b00505c00536b00505c00508402803100536b005", + "0x2802836b00501b00501f02802836b00536600501c02802836b005028007", + "0x536b00502802002825c00536b00536800503102802836b00503000501f", + "0x25d00736402825e00536b00525e00501b02825e00536b00502805e02825d", + "0x536b00505e06000702d02806000536b00502802302805e00536b00525e", + "0x504f02802800536b0050280050c602805d00536b00505f00536302805f", + "0x536b0050310050c002825c00536b00525c00509202800b00536b00500b", + "0x502800702805d03125c00b02800b00505d00536b00505d005084028031", + "0x4d00503102802836b00503000501f02802836b00536900501c02802836b", + "0x1b02804200536b00502804802829800536b00502802002829600536b005", + "0x36b00502802302806700536b00504229800736402804200536b005042005", + "0x2806800536b00506900536302806900536b0050672bd00702d0282bd005", + "0x529600509202800b00536b00500b00504f02802800536b0050280050c6", + "0x506800536b00506800508402803100536b0050310050c002829600536b", + "0x2802836b00501400501c02802836b00502800702806803129600b02800b", + "0x536b00502804502806f00536b00502802002800600536b005010005031", + "0x2302832500536b00507106f00736402807100536b00507100501b028071", + "0x36b00507500536302807500536b00532507400702d02807400536b005028", + "0x9202800b00536b00500b00504f02802800536b0050280050c6028077005", + "0x36b00507700508402803100536b0050310050c002800600536b005006005", + "0x500a00523702802836b00502800702807703100600b02800b005077005", + "0x2804602834b00536b00502802002834c00536b00500f00503102802836b", + "0x536b00504334b00736402804300536b00504300501b02804300536b005", + "0x536302807f00536b00507a07900702d02807900536b00502802302807a", + "0x536b00509200504f02802800536b0050280050c602834800536b00507f", + "0x508402803100536b0050310050c002834c00536b00534c005092028092", + "0x502802836b00502802802834803134c09202800b00534800536b005348", + "0x3102802836b00502800702801000f00749709204f00736b007031005007", + "0x36b00504f00504f02804e00536b00500b00500a0281c800536b005092005", + "0x49801401300736b00704e00500f0281c800536b0051c800509202804f005", + "0x1400501002803000536b0051c800503102802836b00502800702804d005", + "0x1302802836b00502800b02801800536b0050170051c802801700536b005", + "0x36b00501800501b02803000536b00503000509202801300536b005013005", + "0x2836b00502800702801b00549936836900736b00701300500f028018005", + "0x1c00509202836700536b00536800524f02801c00536b005030005031028", + "0x2000536b00536700525202801f00536b00536900501302836600536b005", + "0x36500536b00503000503102802836b00502800702802849a00502804d028", + "0x536500509202802300536b00536400505002836400536b005028030028", + "0x2802000536b00502300525202801f00536b00501b00501302836600536b", + "0x36600503102802836b00502800702836300549b02d00536b007020005009", + "0x36100536b0050840051c802808400536b00502d0050100280c000536b005", + "0x4f0070ac0280c000536b0050c000509202836100536b00536100501b028", + "0x503102802836b00502800702836c35d03203149c35f1aa00736b007361", + "0x536b0050330050920281aa00536b0051aa00504f02803300536b0050c0", + "0x2802836b00502800702803600549d03c00c00736b00701f00500f028033", + "0x504000509202835e00536b00503c00524f02804000536b005033005031", + "0x2821500536b00535e00525202835600536b00500c00501302835900536b", + "0x2821c00536b00503300503102802836b00502800702802849e00502804d", + "0x36b00521c00509202804800536b00504600505002804600536b005028030", + "0x902821500536b00504800525202835600536b005036005013028359005", + "0x535900503102802836b00502800702804500549f04700536b007215005", + "0x2823b00536b0052390051c802823900536b00504700501002823700536b", + "0x23b1aa0070ac02823700536b00523700509202823b00536b00523b00501b", + "0x23700503102802836b00502800702824d24c2490314a024523f00736b007", + "0x24e00536b00524e00509202823f00536b00523f00504f02824e00536b005", + "0x36902802836b0050280070280500054a125224f00736b00735600500f028", + "0x30f02802836b00525200536702802836b00524f00501c02802836b005028", + "0x2802836b00501800501f02802836b00524500530f02802836b00535f005", + "0x536b00502836502805b00536b00502802002800900536b00524e005031", + "0x2302805900536b00505805b00736402805800536b00505800501b028058", + "0x36b00525c00536302825c00536b00505905c00702d02805c00536b005028", + "0x30702823f00536b00523f00504f02802800536b0050280050c602825d005", + "0x36b00500a0050c002800900536b00500900509202800700536b005007005", + "0x702825d00a00900723f02804f00525d00536b00525d00508402800a005", + "0x2825e00536b00524e00503102802836b00505000501c02802836b005028", + "0x36b00505e0051aa02825e00536b00525e00509202805e00536b005028361", + "0x2800702829605d0074a205f06000736b00705e25e23f03135f02805e005", + "0x70cb02829800536b00505f00503102802836b00502836902802836b005", + "0x36b00502834102806700536b0050420180070cf02804200536b00524535f", + "0x30702829800536b00529800509202806000536b00506000504f0282bd005", + "0x36b00500a0050c002802800536b0050280050c602800700536b005007005", + "0x672bd00a02800729806009239702806700536b00506700530102800a005", + "0x750054a307400536b00732500533c02832507106f00606806904f36b005", + "0x536b00506800503102802836b00507400533b02802836b005028007028", + "0x504002804334b00736b00534c00503602834c00536b005028020028077", + "0x7900536b00507a00535902807a00536b00504300535e02802836b00534b", + "0x6900504f02806f00536b00506f0050c602807f00536b005079005356028", + "0x7700536b00507700509202800600536b00500600530702806900536b005", + "0x6906f04f00507f00536b00507f00508402807100536b0050710050c0028", + "0x36302834800536b00506800503102802836b00502800702807f071077006", + "0x36b00506900504f02806f00536b00506f0050c602808100536b005075005", + "0xc002834800536b00534800509202800600536b005006005307028069005", + "0x34800606906f04f00508100536b00508100508402807100536b005071005", + "0x36b00535f00530f02802836b00502836902802836b005028007028081071", + "0x529600503102802836b00501800501f02802836b00524500530f028028", + "0x501b02834500536b00502804602834600536b00502802002807d00536b", + "0x536b00502802302834400536b00534534600736402834500536b005345", + "0xc602834100536b00534200536302834200536b00534434300702d028343", + "0x36b00500700530702805d00536b00505d00504f02802800536b005028005", + "0x8402800a00536b00500a0050c002807d00536b00507d005092028007005", + "0x2836b00502800702834100a07d00705d02804f00534100536b005341005", + "0x2836b00524d00530f02802836b00524c00530f02802836b005028369028", + "0x36b00501800501f02802836b00535f00530f02802836b00535600501c028", + "0x509202808c00536b00524900504f02833d00536b005237005031028028", + "0x2836902802836b0050280070280284a400502804d02833c00536b00533d", + "0x530f02802836b00535600501c02802836b00504500504702802836b005", + "0x2833b00536b00535900503102802836b00501800501f02802836b00535f", + "0x508c00530c02833c00536b00533b00509202808c00536b0051aa00504f", + "0x280070280284a500502804d02833a00536b00533c00539802808a00536b", + "0x36c00530f02802836b00535d00530f02802836b00502836902802836b005", + "0x503102802836b00501800501f02802836b00501f00501c02802836b005", + "0x536b00533900509202808800536b00503200504f02833900536b0050c0", + "0x2802836b00502836902802836b0050280070280284a600502804d028338", + "0x2836b00501800501f02802836b00501f00501c02802836b005363005047", + "0x33700509202808800536b00504f00504f02833700536b005366005031028", + "0x33a00536b00533800539802808a00536b00508800530c02833800536b005", + "0x502804d02808600536b00533a00539802833600536b00508a00530c028", + "0x51c800503102802836b00504d00501c02802836b0050280070280284a7", + "0x2808600536b00508e00509202833600536b00504f00504f02808e00536b", + "0x536b00533300501b02833300536b00502804502837700536b005028020", + "0x702d02833100536b00502802302833200536b005333377007364028333", + "0x36b0050280050c602832f00536b00533000536302833000536b005332331", + "0x9202800700536b00500700530702833600536b00533600504f028028005", + "0x36b00532f00508402800a00536b00500a0050c002808600536b005086005", + "0xb00523702802836b00502800702832f00a08600733602804f00532f005", + "0x4602832d00536b00502802002832e00536b00501000503102802836b005", + "0x36b00532c32d00736402832c00536b00532c00501b02832c00536b005028", + "0x36302832a00536b00508b32b00702d02832b00536b00502802302808b005", + "0x36b00500f00504f02802800536b0050280050c602832900536b00532a005", + "0xc002832e00536b00532e00509202800700536b00500700530702800f005", + "0x32e00700f02804f00532900536b00532900508402800a00536b00500a005", + "0x74a800b00a00736b00700502800700502802836b00502802802832900a", + "0x3100500a02800f00536b00500b00503102802836b00502800702809204f", + "0x9202800a00536b00500a00504f02802836b00502800b02801000536b005", + "0x70280130054a904e1c800736b00701000500f02800f00536b00500f005", + "0x4d00536b00504e00501002801400536b00500f00503102802836b005028", + "0x1400509202801700536b00503000504e02803000536b00504d0051c8028", + "0x36800536b00501700501402836900536b0051c800501302801800536b005", + "0x1b00536b00500f00503102802836b0050280070280284aa00502804d028", + "0x501b00509202836700536b00501c00501702801c00536b005028030028", + "0x2836800536b00536700501402836900536b00501300501302801800536b", + "0x502836902802836b00502800702801f0054ab36600536b007368005018", + "0x24e02802000536b00502000509202802000536b00501800503102802836b", + "0x503102802836b0050280070280230054ac36436500736b00736600a007", + "0x536b00502d00509202836500536b00536500504f02802d00536b005020", + "0x2802836b0050280070280840054ad0c036300736b00736900500f02802d", + "0x51aa0051c80281aa00536b0050c000501002836100536b00502d005031", + "0x509202836300536b00536300501302802836b00502800b02835f00536b", + "0x736b00736300500f02835f00536b00535f00501b02836100536b005361", + "0x2803300536b00536100503102802836b00502800702836c0054ae35d032", + "0x503200501302803c00536b00503300509202800c00536b00535d00524f", + "0x280070280284af00502804d02804000536b00500c00525202803600536b", + "0x5002835900536b00502803002835e00536b00536100503102802836b005", + "0x36b00536c00501302803c00536b00535e00509202835600536b005359005", + "0x54b021500536b00704000500902804000536b005356005252028036005", + "0x521500501002804600536b00503c00503102802836b00502800702821c", + "0x2804700536b00504700501b02804700536b0050480051c802804800536b", + "0x2390314b123704500736b0070473650070ac02804600536b005046005092", + "0x4500504f02824500536b00504600503102802836b00502800702823f23b", + "0x24900736b00703600500f02824500536b00524500509202804500536b005", + "0x24f02824e00536b00524500503102802836b00502800702824d0054b224c", + "0x36b00524900501302825200536b00524e00509202824f00536b00524c005", + "0x50280070280284b300502804d02800900536b00524f005252028050005", + "0x505002805800536b00502803002805b00536b00524500503102802836b", + "0x536b00524d00501302825200536b00505b00509202805900536b005058", + "0x25c0054b405c00536b00700900500902800900536b005059005252028050", + "0x36b00505c00501002825d00536b00525200503102802836b005028007028", + "0x9202805e00536b00505e00501b02805e00536b00525e0051c802825e005", + "0x29605d0314b505f06000736b00705e0450070ac02825d00536b00525d005", + "0x506000504f02804200536b00525d00503102802836b005028007028298", + "0x2bd06700736b00705000500f02804200536b00504200509202806000536b", + "0x506700501c02802836b00502836902802836b0050280070280690054b6", + "0x5f00530f02802836b00535f00501f02802836b0052bd00536702802836b", + "0x503102802836b00523700530f02802836b00536400525d02802836b005", + "0x2806f00536b00502836502800600536b00502802002806800536b005042", + "0x502802302807100536b00506f00600736402806f00536b00506f00501b", + "0x7500536b00507400536302807400536b00507132500702d02832500536b", + "0x70050c002806800536b00506800509202806000536b00506000504f028", + "0x702807500706806000a00507500536b00507500508402800700536b005", + "0x2807700536b00504200503102802836b00506900501c02802836b005028", + "0x36b00534c0051aa02807700536b00507700509202834c00536b005028361", + "0x2800702807907a0074b704334b00736b00734c07706003135f02834c005", + "0x2802002807f00536b00504300503102802836b00502836902802836b005", + "0x36b00508135f0070cf02808100536b00505f2370070cb02834800536b005", + "0x30102802836b0053460050d402834534600736b00507d0052fb02807d005", + "0x53440050d502834434500736b0053450052fa02834500536b005345005", + "0x2834100536b0053430051c802802836b00534200539902834234300736b", + "0x501f02833c08c00736b0053450050d502833d00536b005341348007364", + "0x536b00533b0052f702808a33b00736b00533c0052f802802836b00508c", + "0x2f702808800536b00533933d00736402833900536b00533a0050b902833a", + "0x533708800736402833700536b0053380050b902833800536b00508a005", + "0x2837708e00736b00533600503602808600536b0050282f102833600536b", + "0x36b00507f00509202833300536b00537700535e02802836b00508e005040", + "0x4f02833300536b00533300505b02808600536b00508600501b02807f005", + "0x33033133203136b00733308636400707f00b25e02834b00536b00534b005", + "0x9202802836b00533000523702802836b00502800702832d32e32f0314b8", + "0x536b00502802002832c00536b00533200503102833200536b005332005", + "0x535e02802836b00532b00504002832a32b00736b00508b00503602808b", + "0x536b00532600535602832600536b00532900535902832900536b00532a", + "0x50c002832c00536b00532c00509202834b00536b00534b00504f028085", + "0x2808533132c34b00a00508500536b00508500508402833100536b005331", + "0x536b00532f00503102832f00536b00532f00509202802836b005028007", + "0x536302832400536b00532d09500702d02809500536b005028023028093", + "0x536b00509300509202834b00536b00534b00504f02809800536b005324", + "0x34b00a00509800536b00509800508402832e00536b00532e0050c0028093", + "0x535f00501f02802836b00502836902802836b00502800702809832e093", + "0x23700530f02802836b00536400525d02802836b00505f00530f02802836b", + "0x4602809600536b00502802002832300536b00507900503102802836b005", + "0x36b00532209600736402832200536b00532200501b02832200536b005028", + "0x36302831e00536b00532131f00702d02831f00536b005028023028321005", + "0x36b00532300509202807a00536b00507a00504f02831d00536b00531e005", + "0xa00531d00536b00531d00508402800700536b0050070050c0028323005", + "0x29600530f02802836b00502836902802836b00502800702831d00732307a", + "0x501f02802836b00505000501c02802836b00529800530f02802836b005", + "0x3102802836b00536400525d02802836b00523700530f02802836b00535f", + "0x36b00531c00509202831b00536b00505d00504f02831c00536b00525d005", + "0x2836b00502836902802836b0050280070280284b900502804d02831a005", + "0x36b00535f00501f02802836b00505000501c02802836b00525c005047028", + "0x525200503102802836b00536400525d02802836b00523700530f028028", + "0x2831a00536b00531900509202831b00536b00504500504f02831900536b", + "0x4ba00502804d02831700536b00531a00539802831800536b00531b00530c", + "0x2836b00523b00530f02802836b00502836902802836b005028007028028", + "0x36b00535f00501f02802836b00503600501c02802836b00523f00530f028", + "0x23900504f02831600536b00504600503102802836b00536400525d028028", + "0x70280284bb00502804d02831300536b00531600509202831400536b005", + "0x501c02802836b00521c00504702802836b00502836902802836b005028", + "0x3102802836b00536400525d02802836b00535f00501f02802836b005036", + "0x36b00531100509202831400536b00536500504f02831100536b00503c005", + "0x30c02831700536b00531300539802831800536b00531400530c028313005", + "0x284bc00502804d02831000536b0053170053980280a900536b005318005", + "0x2836b00536400525d02802836b00508400501c02802836b005028007028", + "0xb00050920280a900536b00536500504f0280b000536b00502d005031028", + "0x1b02830f00536b0050280480280ac00536b00502802002831000536b005", + "0x36b00502802302830d00536b00530f0ac00736402830f00536b00530f005", + "0x2830b00536b0050b60053630280b600536b00530d0b400702d0280b4005", + "0x50070050c002831000536b0053100050920280a900536b0050a900504f", + "0x2800702830b0073100a900a00530b00536b00530b00508402800700536b", + "0x4f0280b900536b00502000503102802836b00536900501c02802836b005", + "0x284bd00502804d02830800536b0050b900509202830900536b005023005", + "0x2802836b00501f00504702802836b00502836902802836b005028007028", + "0x36b00500a00504f02830700536b00501800503102802836b00536900501c", + "0x2804502830600536b00502802002830800536b005307005092028309005", + "0x536b00530530600736402830500536b00530500501b02830500536b005", + "0x536302830300536b0050bf30400702d02830400536b0050280230280bf", + "0x536b00530800509202830900536b00530900504f02830200536b005303", + "0x30900a00530200536b00530200508402800700536b0050070050c0028308", + "0x9200503102802836b00503100523702802836b005028007028302007308", + "0x1b02839400536b00502804602839300536b00502802002805100536b005", + "0x36b00502802302839500536b00539439300736402839400536b005394005", + "0x280c700536b00539600536302839600536b0053950dc00702d0280dc005", + "0x50070050c002805100536b00505100509202804f00536b00504f00504f", + "0x280280280c700705104f00a0050c700536b0050c700508402800700536b", + "0x2800702800f0920074be04f00b00736b00700702800700502802836b005", + "0x281c800536b00500a00500a02801000536b00504f00503102802836b005", + "0x71c800500f02801000536b00501000509202800b00536b00500b00504f", + "0x2836b00504e00501c02802836b0050280070280140054bf01304e00736b", + "0x36b00502802002804d00536b00501000503102802836b005013005367028", + "0x736402801700536b00501700501b02801700536b005028365028030005", + "0x36b00501836900702d02836900536b00502802302801800536b005017030", + "0xda02800b00536b00500b00504f02801b00536b005368005363028368005", + "0x36b0050310050c002804d00536b00504d00509202800500536b005005005", + "0x2800702801b03104d00500b00b00501b00536b00501b005084028031005", + "0x36102801c00536b00501000503102802836b00501400501c02802836b005", + "0x536b0053670051aa02801c00536b00501c00509202836700536b005028", + "0x50280070283650200074c001f36600736b00736701c00b03135f028367", + "0x50da02802300536b00502834102836400536b00501f00503102802836b", + "0x536b0050310050c002836400536b00536400509202800500536b005005", + "0x536600504f0280840c036302d00a36b00502303136400500a2ee028031", + "0x2836b0050280070281aa0054c136100536b00708400533c02836600536b", + "0x36b00502802002835f00536b00536300503102802836b00536100533b028", + "0x35e02802836b00535d00504002836c35d00736b005032005036028032005", + "0x36b00500c00535602800c00536b00503300535902803300536b00536c005", + "0x9202802d00536b00502d0050da02836600536b00536600504f02803c005", + "0x36b00503c0050840280c000536b0050c00050c002835f00536b00535f005", + "0x536300503102802836b00502800702803c0c035f02d36600b00503c005", + "0x2836600536b00536600504f02804000536b0051aa00536302803600536b", + "0x50c00050c002803600536b00503600509202802d00536b00502d0050da", + "0x70280400c003602d36600b00504000536b0050400050840280c000536b", + "0x2835900536b00502802002835e00536b00536500503102802836b005028", + "0x535635900736402835600536b00535600501b02835600536b005028046", + "0x2804600536b00521521c00702d02821c00536b00502802302821500536b", + "0x50050050da02802000536b00502000504f02804800536b005046005363", + "0x2803100536b0050310050c002835e00536b00535e00509202800500536b", + "0x2836b00502800702804803135e00502000b00504800536b005048005084", + "0x36b00502802002804700536b00500f00503102802836b00500a005237028", + "0x736402823700536b00523700501b02823700536b005028046028045005", + "0x36b00523923b00702d02823b00536b00502802302823900536b005237045", + "0xda02809200536b00509200504f02824500536b00523f00536302823f005", + "0x36b0050310050c002804700536b00504700509202800500536b005005005", + "0x2802802824503104700509200b00524500536b005245005084028031005", + "0x2800702800f0920074c204f00b00736b00700700500700502802836b005", + "0x281c800536b00500a00500a02801000536b00504f00503102802836b005", + "0x71c800500f02801000536b00501000509202800b00536b00500b00504f", + "0x536b00501000503102802836b0050280070280140054c301304e00736b", + "0x509202804e00536b00504e00501302803000536b00501300501002804d", + "0x736b00704e00500f02803000536b00503000501b02804d00536b00504d", + "0x36702802836b00501700501c02802836b0050280070283690054c4018017", + "0x36800536b00504d00503102802836b00503000501f02802836b005018005", + "0x36b00501c00501b02801c00536b00502836502801b00536b005028020028", + "0x2d02836600536b00502802302836700536b00501c01b00736402801c005", + "0x50280050c602802000536b00501f00536302801f00536b005367366007", + "0x2836800536b00536800509202800b00536b00500b00504f02802800536b", + "0x36800b02800b00502000536b00502000508402803100536b0050310050c0", + "0x504d00503102802836b00536900501c02802836b005028007028020031", + "0x1aa02836500536b00536500509202836400536b00502836102836500536b", + "0x3630074c502d02300736b00736436500b03135f02836400536b005364005", + "0x50300051c802808400536b00502d00503102802836b0050280070280c0", + "0x9202802300536b00502300504f0281aa00536b00502834102836100536b", + "0x36b0050310050c002802800536b0050280050c602808400536b005084005", + "0x53611aa03102808402304f2ec02836100536b00536100501b028031005", + "0x702803c0054c600c00536b00703300533c02803336c35d03235f00b36b", + "0x2803600536b00503200503102802836b00500c00533b02802836b005028", + "0x535e00504002835935e00736b00504000503602804000536b005028020", + "0x35602821500536b00535600535902835600536b00535900535e02802836b", + "0x36b00535f00504f02835d00536b00535d0050c602821c00536b005215005", + "0x8402836c00536b00536c0050c002803600536b00503600509202835f005", + "0x2802836b00502800702821c36c03635f35d00b00521c00536b00521c005", + "0x535d0050c602804800536b00503c00536302804600536b005032005031", + "0x2804600536b00504600509202835f00536b00535f00504f02835d00536b", + "0x4635f35d00b00504800536b00504800508402836c00536b00536c0050c0", + "0x50c000503102802836b00503000501f02802836b00502800702804836c", + "0x501b02823700536b00502804602804500536b00502802002804700536b", + "0x536b00502802302823900536b00523704500736402823700536b005237", + "0xc602824500536b00523f00536302823f00536b00523923b00702d02823b", + "0x36b00504700509202836300536b00536300504f02802800536b005028005", + "0xb00524500536b00524500508402803100536b0050310050c0028047005", + "0x3102802836b00501400501c02802836b005028007028245031047363028", + "0x24d00536b00502804502824c00536b00502802002824900536b005010005", + "0x2802302824e00536b00524d24c00736402824d00536b00524d00501b028", + "0x536b00525200536302825200536b00524e24f00702d02824f00536b005", + "0x509202800b00536b00500b00504f02802800536b0050280050c6028050", + "0x536b00505000508402803100536b0050310050c002824900536b005249", + "0x36b00500a00523702802836b00502800702805003124900b02800b005050", + "0x502804602805b00536b00502802002800900536b00500f005031028028", + "0x5900536b00505805b00736402805800536b00505800501b02805800536b", + "0x25c00536302825c00536b00505905c00702d02805c00536b005028023028", + "0x9200536b00509200504f02802800536b0050280050c602825d00536b005", + "0x25d00508402803100536b0050310050c002800900536b005009005092028", + "0x700502802836b00502802802825d03100909202800b00525d00536b005", + "0x503102802836b00502800702809204f0074c700b00a00736b007005028", + "0x536b00500a00504f02801000536b00503100500a02800f00536b00500b", + "0x54c804e1c800736b00701000500f02800f00536b00500f00509202800a", + "0x504e00501002801400536b00500f00503102802836b005028007028013", + "0x2801400536b0050140050920281c800536b0051c800501302804d00536b", + "0x280180054c901703000736b0071c800500f02804d00536b00504d00501b", + "0x2802836b00501700536702802836b00503000501c02802836b005028007", + "0x536b00502802002836900536b00501400503102802836b00504d00501f", + "0x36800736402801b00536b00501b00501b02801b00536b005028365028368", + "0x536b00501c36700702d02836700536b00502802302801c00536b00501b", + "0x509202800a00536b00500a00504f02801f00536b005366005363028366", + "0x536b00501f00508402800700536b0050070050c002836900536b005369", + "0x2836b00501800501c02802836b00502800702801f00736900a00a00501f", + "0x502000509202836500536b00502836102802000536b005014005031028", + "0x736b00736502000a03135f02836500536b0053650051aa02802000536b", + "0xc000536b00502300503102802836b00502800702836302d0074ca023364", + "0x36b00536100501b02836100536b0050280d202808400536b005028020028", + "0x1b02835f00536b0050282ef0281aa00536b005361084007364028361005", + "0x504d0051c802803200536b00535f1aa00736402835f00536b00535f005", + "0x2802836b00536c00504002803336c00736b00503200503602835d00536b", + "0x500c00505b0280c000536b0050c000509202800c00536b00503300535e", + "0x36b00700c35d0070c000a31602836400536b00536400504f02800c00536b", + "0x36b00503c00509202802836b00502800702835935e0400314cb03603c007", + "0x503602821500536b00502802002835600536b00503c00503102803c005", + "0x536b00504600535e02802836b00521c00504002804621c00736b005215", + "0x504f02804500536b00504700535602804700536b005048005359028048", + "0x536b0050360050c002835600536b00535600509202836400536b005364", + "0x36b00502800702804503635636400a00504500536b005045005084028036", + "0x2802302823700536b00504000503102804000536b005040005092028028", + "0x536b00523b00536302823b00536b00535923900702d02823900536b005", + "0x50c002823700536b00523700509202836400536b00536400504f02823f", + "0x2823f35e23736400a00523f00536b00523f00508402835e00536b00535e", + "0x24500536b00536300503102802836b00504d00501f02802836b005028007", + "0x36b00524c00501b02824c00536b00502804602824900536b005028020028", + "0x2d02824e00536b00502802302824d00536b00524c24900736402824c005", + "0x502d00504f02825200536b00524f00536302824f00536b00524d24e007", + "0x2800700536b0050070050c002824500536b00524500509202802d00536b", + "0x2802836b00502800702825200724502d00a00525200536b005252005084", + "0x536b00502802002805000536b00500f00503102802836b00501300501c", + "0x900736402805b00536b00505b00501b02805b00536b005028045028009", + "0x536b00505805900702d02805900536b00502802302805800536b00505b", + "0x509202800a00536b00500a00504f02825c00536b00505c00536302805c", + "0x536b00525c00508402800700536b0050070050c002805000536b005050", + "0x2836b00503100523702802836b00502800702825c00705000a00a00525c", + "0x36b00502804602825e00536b00502802002825d00536b005092005031028", + "0x2806000536b00505e25e00736402805e00536b00505e00501b02805e005", + "0x505d00536302805d00536b00506005f00702d02805f00536b005028023", + "0x2825d00536b00525d00509202804f00536b00504f00504f02829600536b", + "0x725d04f00a00529600536b00529600508402800700536b0050070050c0", + "0x100074cc00f09200736b00700a02800700502802836b005028028028296", + "0x504f00500a02804e00536b00500f00503102802836b0050280070281c8", + "0x2804e00536b00504e00509202809200536b00509200504f02801300536b", + "0x501c02802836b0050280070280300054cd04d01400736b00701300500f", + "0x2801700536b00504e00503102802836b00504d00536702802836b005014", + "0x536b00536900501b02836900536b00502836502801800536b005028020", + "0x702d02801b00536b00502802302836800536b005369018007364028369", + "0x36b00509200504f02836700536b00501c00536302801c00536b00536801b", + "0x2e902800700536b0050070052f602800500536b0050050050db028092005", + "0x36b00500b0050c002801700536b00501700509202803100536b005031005", + "0x2836700b01703100700509209200536700536b00536700508402800b005", + "0x36600536b00504e00503102802836b00503000501c02802836b005028007", + "0x501f0051aa02836600536b00536600509202801f00536b005028361028", + "0x70280233640074ce36502000736b00701f36609203135f02801f00536b", + "0x2836300536b00502834102802d00536b00536500503102802836b005028", + "0x50310052e902800700536b0050070052f602802000536b00502000504f", + "0x2802d00536b00502d00509202800500536b0050050050db02803100536b", + "0x533c02803235f1aa3610840c004f36b00536302d00503100702004f2e8", + "0x36b00535d00533b02802836b00502800702836c0054cf35d00536b007032", + "0xc00503602800c00536b00502802002803300536b00535f005031028028", + "0x4000536b00503600535e02802836b00503c00504002803603c00736b005", + "0xc000504f02835900536b00535e00535602835e00536b005040005359028", + "0x8400536b0050840052f60281aa00536b0051aa0050db0280c000536b005", + "0xb0050c002803300536b00503300509202836100536b0053610052e9028", + "0xb0333610841aa0c009200535900536b00535900508402800b00536b005", + "0x536c00536302835600536b00535f00503102802836b005028007028359", + "0x281aa00536b0051aa0050db0280c000536b0050c000504f02821500536b", + "0x535600509202836100536b0053610052e902808400536b0050840052f6", + "0x521500536b00521500508402800b00536b00500b0050c002835600536b", + "0x36b00502300503102802836b00502800702821500b3563610841aa0c0092", + "0x4800501b02804800536b00502804602804600536b00502802002821c005", + "0x4500536b00502802302804700536b00504804600736402804800536b005", + "0x504f02823900536b00523700536302823700536b00504704500702d028", + "0x536b0050070052f602800500536b0050050050db02836400536b005364", + "0x50c002821c00536b00521c00509202803100536b0050310052e9028007", + "0x21c03100700536409200523900536b00523900508402800b00536b00500b", + "0x51c800503102802836b00504f00523702802836b00502800702823900b", + "0x501b02824500536b00502804602823f00536b00502802002823b00536b", + "0x536b00502802302824900536b00524523f00736402824500536b005245", + "0x4f02824e00536b00524d00536302824d00536b00524924c00702d02824c", + "0x36b0050070052f602800500536b0050050050db02801000536b005010005", + "0xc002823b00536b00523b00509202803100536b0050310052e9028007005", + "0x3100700501009200524e00536b00524e00508402800b00536b00500b005", + "0x4d004f00b00736b00700702800700502802836b00502802802824e00b23b", + "0x500a02801000536b00504f00503102802836b00502800702800f092007", + "0x536b00501000509202800b00536b00500b00504f0281c800536b00500a", + "0x2802836b0050280070280140054d101304e00736b0071c800500f028010", + "0x536b00501000503102802836b00501300536702802836b00504e00501c", + "0x501700501b02801700536b00502836502803000536b00502802002804d", + "0x2836900536b00502802302801800536b00501703000736402801700536b", + "0xb00504f02801b00536b00536800536302836800536b00501836900702d", + "0x4d00536b00504d00509202800500536b0050050050db02800b00536b005", + "0x500b00b00501b00536b00501b00508402803100536b0050310050c0028", + "0x1000503102802836b00501400501c02802836b00502800702801b03104d", + "0x2801c00536b00501c00509202836700536b00502836102801c00536b005", + "0x74d201f36600736b00736701c00b03135f02836700536b0053670051aa", + "0x50050db02836400536b00501f00503102802836b005028007028365020", + "0x2802836b00502800b02802d02300736b0050050052e702800500536b005", + "0x702d00531c02836400536b00536400509202836600536b00536600504f", + "0x2802836b00536300531b02802836b0050280070280c00054d336300536b", + "0x50230052e702802300536b0050230050db02808400536b005364005031", + "0x35f00536b0071aa00531c02808400536b0050840050920281aa36100736b", + "0x535f00531b02802836b00502836902802836b0050280070280320054d4", + "0x503602836c00536b00502802002835d00536b00508400503102802836b", + "0x536b00500c00535e02802836b00503300504002800c03300736b00536c", + "0x504f02804000536b00503600535602803600536b00503c00535902803c", + "0x536b00535d00509202836100536b0053610050db02836600536b005366", + "0x36600b00504000536b00504000508402803100536b0050310050c002835d", + "0xdb02835e00536b00508400503102802836b00502800702804003135d361", + "0x36b0050320050df02835600536b00535e00509202835900536b005361005", + "0x36b00536400503102802836b0050280070280284d500502804d028215005", + "0xdf02835600536b00521c00509202835900536b0050230050db02821c005", + "0x4600536b00521500536302802836b00502836902821500536b0050c0005", + "0x35600509202835900536b0053590050db02836600536b00536600504f028", + "0x4600536b00504600508402803100536b0050310050c002835600536b005", + "0x536b00536500503102802836b00502800702804603135635936600b005", + "0x504500501b02804500536b00502804602804700536b005028020028048", + "0x2823900536b00502802302823700536b00504504700736402804500536b", + "0x2000504f02823f00536b00523b00536302823b00536b00523723900702d", + "0x4800536b00504800509202800500536b0050050050db02802000536b005", + "0x502000b00523f00536b00523f00508402803100536b0050310050c0028", + "0xf00503102802836b00500a00523702802836b00502800702823f031048", + "0x1b02824c00536b00502804602824900536b00502802002824500536b005", + "0x36b00502802302824d00536b00524c24900736402824c00536b00524c005", + "0x2825200536b00524f00536302824f00536b00524d24e00702d02824e005", + "0x524500509202800500536b0050050050db02809200536b00509200504f", + "0x525200536b00525200508402803100536b0050310050c002824500536b", + "0x9200536b00502824902800b00536b00502824902825203124500509200b", + "0x736b00700502800700502802836b00502802802802836b00502824c028", + "0x1300536b00501000503102802836b00502800702804e1c80074d601000f", + "0x36b00500f00504f02802836b00502800b02801400536b00503100500a028", + "0x4d703004d00736b00701400500f02801300536b00501300509202800f005", + "0x3000501002801800536b00501300503102802836b005028007028017005", + "0x1b00536b00536800504e02836800536b0053690051c802836900536b005", + "0x1b00501402836700536b00504d00501302801c00536b005018005092028", + "0x1300503102802836b0050280070280284d800502804d02836600536b005", + "0x2836500536b00502000501702802000536b00502803002801f00536b005", + "0x536500501402836700536b00501700501302801c00536b00501f005092", + "0x2836b0050280070283640054d904f00536b00736600501802836600536b", + "0x504f09200724d02802300536b00501c00503102802836b005028369028", + "0x2d00736b00704f00f00724e02802300536b00502300509202804f00536b", + "0x4f02808400536b00502300503102802836b0050280070280c00054da363", + "0x36b00736700500f02808400536b00508400509202802d00536b00502d005", + "0x3200536b00508400503102802836b00502800702835f0054db1aa361007", + "0x51c802800a00536b00500a00b00724d02800a00536b0051aa005010028", + "0x2836100536b00536100501302802836b00502800b02835d00536b00500a", + "0x2800c0054dc03336c00736b00736100500f02803200536b005032005092", + "0x536b00503300524f02803c00536b00503200503102802836b005028007", + "0x525202835e00536b00536c00501302804000536b00503c005092028036", + "0x503102802836b0050280070280284dd00502804d02835900536b005036", + "0x21c00536b00521500505002821500536b00502803002835600536b005032", + "0x21c00525202835e00536b00500c00501302804000536b005356005092028", + "0x36b0050280070280480054de04600536b00735900500902835900536b005", + "0x504600501002804700536b00504000503102802836b005028369028028", + "0x1c802823900536b00535e00535e02823700536b00502802002804500536b", + "0x36b00504700509202802d00536b00502d00504f02823b00536b005045005", + "0x1b02823700536b00523700521502823900536b00523900505b028047005", + "0x24924523f03136b00523b23723904702d00b05802823b00536b00523b005", + "0x503102802836b00502800702824d0054df24c00536b007249005059028", + "0x36b00524e00509202825224f00736b00524c00505c02824e00536b005245", + "0x2802836b0050280070280090054e005000536b00725200525c02824e005", + "0x505b00509202805800536b00524f00500a02805b00536b00524e005031", + "0x36b00502800702825c0054e105c05900736b00705800500f02805b00536b", + "0x505000504002802836b00505c00536702802836b00505900501c028028", + "0x5b00503102802836b00536300525d02802836b00535d00501f02802836b", + "0x1b02805e00536b00502836502825e00536b00502802002825d00536b005", + "0x36b00502802302806000536b00505e25e00736402805e00536b00505e005", + "0x2829600536b00505d00536302805d00536b00506005f00702d02805f005", + "0x50070050c002825d00536b00525d00509202823f00536b00523f00504f", + "0x2800702829600725d23f00a00529600536b00529600508402800700536b", + "0x36102829800536b00505b00503102802836b00525c00501c02802836b005", + "0x536b0050420051aa02829800536b00529800509202804200536b005028", + "0x50280070280680690074e22bd06700736b00704229823f03135f028042", + "0x509202806f00536b00502834102800600536b0052bd00503102802836b", + "0x536b00536300533802800700536b0050070050c002800600536b005006", + "0x4f2f502805000536b00505000521502835d00536b00535d00501b028363", + "0x6700536b00506700504f02807432507103136b00505035d36306f007006", + "0x533b02802836b0050280070280770054e307500536b00707400533c028", + "0x2834b00536b00502802002834c00536b00507100503102802836b005075", + "0x507a00535e02802836b00504300504002807a04300736b00534b005036", + "0x2834800536b00507f00535602807f00536b00507900535902807900536b", + "0x53250050c002834c00536b00534c00509202806700536b00506700504f", + "0x2800702834832534c06700a00534800536b00534800508402832500536b", + "0x2807d00536b00507700536302808100536b00507100503102802836b005", + "0x53250050c002808100536b00508100509202806700536b00506700504f", + "0x2800702807d32508106700a00507d00536b00507d00508402832500536b", + "0x525d02802836b00535d00501f02802836b00505000504002802836b005", + "0x2834500536b00502802002834600536b00506800503102802836b005363", + "0x534434500736402834400536b00534400501b02834400536b005028046", + "0x2834100536b00534334200702d02834200536b00502802302834300536b", + "0x534600509202806900536b00506900504f02833d00536b005341005363", + "0x533d00536b00533d00508402800700536b0050070050c002834600536b", + "0x23702802836b00500900504702802836b00502800702833d00734606900a", + "0x2802836b00536300525d02802836b00535d00501f02802836b00524f005", + "0x508c00509202833c00536b00523f00504f02808c00536b00524e005031", + "0x536300525d02802836b0050280070280284e400502804d02833b00536b", + "0x536302808a00536b00524500503102802836b00535d00501f02802836b", + "0x536b00508a00509202823f00536b00523f00504f02833a00536b00524d", + "0x23f00a00533a00536b00533a00508402800700536b0050070050c002808a", + "0x504800504702802836b00502836902802836b00502800702833a00708a", + "0x35e00501c02802836b00536300525d02802836b00535d00501f02802836b", + "0x2833c00536b00502d00504f02833900536b00504000503102802836b005", + "0x536b00502805e02808800536b00502802002833b00536b005339005092", + "0x2302833700536b00533808800736402833800536b00533800501b028338", + "0x36b00508600536302808600536b00533733600702d02833600536b005028", + "0xc002833b00536b00533b00509202833c00536b00533c00504f02808e005", + "0x8e00733b33c00a00508e00536b00508e00508402800700536b005007005", + "0x2836b00536300525d02802836b00535f00501c02802836b005028007028", + "0x36b00502802002837700536b00508400503102802836b00500b005060028", + "0x736402833200536b00533200501b02833200536b005028048028333005", + "0x36b00533133000702d02833000536b00502802302833100536b005332333", + "0x9202802d00536b00502d00504f02832e00536b00532f00536302832f005", + "0x36b00532e00508402800700536b0050070050c002837700536b005377005", + "0x36b00536700501c02802836b00502800702832e00737702d00a00532e005", + "0xc000504f02832d00536b00502300503102802836b00500b005060028028", + "0x70280284e500502804d02808b00536b00532d00509202832c00536b005", + "0x501c02802836b00536400504702802836b00502836902802836b005028", + "0x3102802836b00509200506002802836b00500b00506002802836b005367", + "0x36b00532b00509202832c00536b00500f00504f02832b00536b00501c005", + "0x32900501b02832900536b00502804502832a00536b00502802002808b005", + "0x8500536b00502802302832600536b00532932a00736402832900536b005", + "0x504f02809500536b00509300536302809300536b00532608500702d028", + "0x536b0050070050c002808b00536b00508b00509202832c00536b00532c", + "0x36b00502800702809500708b32c00a00509500536b005095005084028007", + "0x503100523702802836b00500b00506002802836b005092005060028028", + "0x2804602809800536b00502802002832400536b00504e00503102802836b", + "0x536b00532309800736402832300536b00532300501b02832300536b005", + "0x536302832100536b00509632200702d02832200536b005028023028096", + "0x536b0053240050920281c800536b0051c800504f02831f00536b005321", + "0x1c800a00531f00536b00531f00508402800700536b0050070050c0028324", + "0x4e600b00a00736b00700502800700502802836b00502802802831f007324", + "0x500a02800f00536b00500b00503102802836b00502800702809204f007", + "0x536b00500f00509202800a00536b00500a00504f02801000536b005031", + "0x2802836b0050280070280130054e704e1c800736b00701000500f02800f", + "0x51c800501302804d00536b00504e00501002801400536b00500f005031", + "0x2804d00536b00504d00501b02801400536b0050140050920281c800536b", + "0x501c02802836b0050280070280180054e801703000736b0071c800500f", + "0x3102802836b00504d00501f02802836b00501700536702802836b005030", + "0x1b00536b00502836502836800536b00502802002836900536b005014005", + "0x2802302801c00536b00501b36800736402801b00536b00501b00501b028", + "0x536b00536600536302836600536b00501c36700702d02836700536b005", + "0x50c002836900536b00536900509202800a00536b00500a00504f02801f", + "0x2801f00736900a00a00501f00536b00501f00508402800700536b005007", + "0x2000536b00501400503102802836b00501800501c02802836b005028007", + "0x53650051aa02802000536b00502000509202836500536b005028361028", + "0x702836302d0074e902336400736b00736502000a03135f02836500536b", + "0x2808400536b0050280200280c000536b00502300503102802836b005028", + "0x1aa0050360281aa00536b00536108400736402836100536b00504d0051c8", + "0x35d00536b00503200535e02802836b00535f00504002803235f00736b005", + "0x36400504f02803300536b00536c00535602836c00536b00535d005359028", + "0x700536b0050070050c00280c000536b0050c000509202836400536b005", + "0x2836b0050280070280330070c036400a00503300536b005033005084028", + "0x36b00502802002800c00536b00536300503102802836b00504d00501f028", + "0x736402803600536b00503600501b02803600536b00502804602803c005", + "0x36b00504035e00702d02835e00536b00502802302804000536b00503603c", + "0x9202802d00536b00502d00504f02835600536b005359005363028359005", + "0x36b00535600508402800700536b0050070050c002800c00536b00500c005", + "0x36b00501300501c02802836b00502800702835600700c02d00a005356005", + "0x502804502821c00536b00502802002821500536b00500f005031028028", + "0x4800536b00504621c00736402804600536b00504600501b02804600536b", + "0x4500536302804500536b00504804700702d02804700536b005028023028", + "0x21500536b00521500509202800a00536b00500a00504f02823700536b005", + "0x21500a00a00523700536b00523700508402800700536b0050070050c0028", + "0x509200503102802836b00503100523702802836b005028007028237007", + "0x501b02823f00536b00502804602823b00536b00502802002823900536b", + "0x536b00502802302824500536b00523f23b00736402823f00536b00523f", + "0x4f02824d00536b00524c00536302824c00536b00524524900702d028249", + "0x36b0050070050c002823900536b00523900509202804f00536b00504f005", + "0x502802802824d00723904f00a00524d00536b00524d005084028007005", + "0x502800702809204f0074ea00b00a00736b00700502800700502802836b", + "0x4f02801000536b00503100500a02800f00536b00500b00503102802836b", + "0x36b00701000500f02800f00536b00500f00509202800a00536b00500a005", + "0x2802836b0051c800501c02802836b0050280070280130054eb04e1c8007", + "0x536b00502802002801400536b00500f00503102802836b00504e005367", + "0x4d00736402803000536b00503000501b02803000536b00502836502804d", + "0x536b00501701800702d02801800536b00502802302801700536b005030", + "0x509202800a00536b00500a00504f02836800536b005369005363028369", + "0x536b00536800508402800700536b0050070050c002801400536b005014", + "0x2836b00501300501c02802836b00502800702836800701400a00a005368", + "0x501b00509202801c00536b00502836102801b00536b00500f005031028", + "0x736b00701c01b00a03135f02801c00536b00501c0051aa02801b00536b", + "0x36500536b00536600503102802836b00502800702802001f0074ec366367", + "0x2300504002802d02300736b00536400503602836400536b005028020028", + "0x280c000536b00536300535902836300536b00502d00535e02802836b005", + "0x536500509202836700536b00536700504f02808400536b0050c0005356", + "0x508400536b00508400508402800700536b0050070050c002836500536b", + "0x2836100536b00502000503102802836b00502800702808400736536700a", + "0x536b00535f00501b02835f00536b0050280460281aa00536b005028020", + "0x702d02835d00536b00502802302803200536b00535f1aa00736402835f", + "0x36b00501f00504f02803300536b00536c00536302836c00536b00503235d", + "0x8402800700536b0050070050c002836100536b00536100509202801f005", + "0x23702802836b00502800702803300736101f00a00503300536b005033005", + "0x3c00536b00502802002800c00536b00509200503102802836b005031005", + "0x3603c00736402803600536b00503600501b02803600536b005028046028", + "0x35900536b00504035e00702d02835e00536b00502802302804000536b005", + "0xc00509202804f00536b00504f00504f02835600536b005359005363028", + "0x35600536b00535600508402800700536b0050070050c002800c00536b005", + "0x736b00700702800700502802836b00502802802835600700c04f00a005", + "0x1000536b00504f00503102802836b00502800702800f0920074ed04f00b", + "0x1000509202800b00536b00500b00504f0281c800536b00500a00500a028", + "0x50280070280140054ee01304e00736b0071c800500f02801000536b005", + "0x1000503102802836b00501300536702802836b00504e00501c02802836b", + "0x1b02801700536b00502836502803000536b00502802002804d00536b005", + "0x36b00502802302801800536b00501703000736402801700536b005017005", + "0x2801b00536b00536800536302836800536b00501836900702d028369005", + "0x504d00509202800500536b00500500530702800b00536b00500b00504f", + "0x501b00536b00501b00508402803100536b0050310050c002804d00536b", + "0x2802836b00501400501c02802836b00502800702801b03104d00500b00b", + "0x36b00501c00509202836700536b00502836102801c00536b005010005031", + "0x36600736b00736701c00b03135f02836700536b0053670051aa02801c005", + "0x2836400536b00501f00503102802836b0050280070283650200074ef01f", + "0x536b00502300503302802d00536b0050282f302802300536b0050280e1", + "0xc036300a36b00502d0230050312f202802d00536b00502d005033028023", + "0x36100521c02802836b00508400521c02802836b0050c000521c028361084", + "0x2803235f00736b0051aa0050360281aa00536b00502802002802836b005", + "0x36b00535d00535902835d00536b00503200535e02802836b00535f005040", + "0x30702836600536b00536600504f02803300536b00536c00535602836c005", + "0x36b0050310050c002836400536b00536400509202836300536b005363005", + "0x2800702803303136436336600b00503300536b005033005084028031005", + "0x4602803c00536b00502802002800c00536b00536500503102802836b005", + "0x36b00503603c00736402803600536b00503600501b02803600536b005028", + "0x36302835900536b00504035e00702d02835e00536b005028023028040005", + "0x36b00500500530702802000536b00502000504f02835600536b005359005", + "0x8402803100536b0050310050c002800c00536b00500c005092028005005", + "0x2802836b00502800702835603100c00502000b00535600536b005356005", + "0x536b00502802002821500536b00500f00503102802836b00500a005237", + "0x21c00736402804600536b00504600501b02804600536b00502804602821c", + "0x536b00504804700702d02804700536b00502802302804800536b005046", + "0x530702809200536b00509200504f02823700536b005045005363028045", + "0x536b0050310050c002821500536b00521500509202800500536b005005", + "0x502802802823703121500509200b00523700536b005237005084028031", + "0x502800702800f0920074f004f00b00736b00700700500700502802836b", + "0x4f0281c800536b00500a00500a02801000536b00504f00503102802836b", + "0x36b0071c800500f02801000536b00501000509202800b00536b00500b005", + "0x2802836b00504e00501c02802836b0050280070280140054f101304e007", + "0x536b00502802002804d00536b00501000503102802836b005013005367", + "0x3000736402801700536b00501700501b02801700536b005028365028030", + "0x536b00501836900702d02836900536b00502802302801800536b005017", + "0x504f02802800536b0050280050c602801b00536b005368005363028368", + "0x536b0050310050c002804d00536b00504d00509202800b00536b00500b", + "0x502800702801b03104d00b02800b00501b00536b00501b005084028031", + "0x2836102801c00536b00501000503102802836b00501400501c02802836b", + "0x36700536b0053670051aa02801c00536b00501c00509202836700536b005", + "0x36b0050280070283650200074f201f36600736b00736701c00b03135f028", + "0x502823f02802300536b00502823b02836400536b00501f005031028028", + "0x2802d00536b00502d00501b02802300536b00502300501b02802d00536b", + "0x2802002802836b0050c000501f0280c036300736b00502d0230280310e3", + "0x2836b0053610050400281aa36100736b00508400503602808400536b005", + "0x3200535602803200536b00535f00535902835f00536b0051aa00535e028", + "0x36600536b00536600504f02836300536b0053630050c602835d00536b005", + "0x35d00508402803100536b0050310050c002836400536b005364005092028", + "0x503102802836b00502800702835d03136436636300b00535d00536b005", + "0x2800c00536b00502804602803300536b00502802002836c00536b005365", + "0x502802302803c00536b00500c03300736402800c00536b00500c00501b", + "0x35e00536b00504000536302804000536b00503c03600702d02803600536b", + "0x36c00509202802000536b00502000504f02802800536b0050280050c6028", + "0x35e00536b00535e00508402803100536b0050310050c002836c00536b005", + "0x2836b00500a00523702802836b00502800702835e03136c02002800b005", + "0x36b00502804602835600536b00502802002835900536b00500f005031028", + "0x2821c00536b00521535600736402821500536b00521500501b028215005", + "0x504800536302804800536b00521c04600702d02804600536b005028023", + "0x2809200536b00509200504f02802800536b0050280050c602804700536b", + "0x504700508402803100536b0050310050c002835900536b005359005092", + "0x2800700502802836b00502802802804703135909202800b00504700536b", + "0x4f00503102802836b00502800702800f0920074f304f00b00736b007007", + "0xb00536b00500b00504f0281c800536b00500a00500a02801000536b005", + "0x140054f401304e00736b0071c800500f02801000536b005010005092028", + "0x2836b00501300536702802836b00504e00501c02802836b005028007028", + "0x36b00502836502803000536b00502802002804d00536b005010005031028", + "0x2801800536b00501703000736402801700536b00501700501b028017005", + "0x536800536302836800536b00501836900702d02836900536b005028023", + "0x2800500536b0050050052f402800b00536b00500b00504f02801b00536b", + "0x501b00508402803100536b0050310050c002804d00536b00504d005092", + "0x1400501c02802836b00502800702801b03104d00500b00b00501b00536b", + "0x9202836700536b00502836102801c00536b00501000503102802836b005", + "0x36701c00b03135f02836700536b0053670051aa02801c00536b00501c005", + "0x501f00503102802836b0050280070283650200074f501f36600736b007", + "0x2823b02802d00536b00502823b02802300536b00502823b02836400536b", + "0x2808400536b0050c00053450280c000536b00502803002836300536b005", + "0x8400536b00508400507d02802836b00502800b02836100536b00502823f", + "0x840052e002836400536b00536400509202836600536b00536600504f028", + "0x2836b0051aa00504702802836b00502800702835f0054f61aa00536b007", + "0x230072de02802300536b00502300501b02803200536b005364005031028", + "0x2d00536b00502d00501b02836c00536b00502823f02835d00536b005361", + "0x501b02835d00536b00535d00501b02803300536b00536c02d0072de028", + "0x36303335d00500a2dd02836300536b00536300501b02803300536b005033", + "0x36b00503600501f02802836b00503c00501f02804003603c00c00a36b005", + "0x3200509202835e00536b00500c0052f402802836b00504000501f028028", + "0x35f00504702802836b0050280070280284f700502804d02835900536b005", + "0x2802d00536b00502d00501b02835600536b00536400503102802836b005", + "0x21500501b02802300536b00502300501b02821500536b00536102d0072de", + "0x536321502300500a2dd02836300536b00536300501b02821500536b005", + "0x536b00504600501b02804500536b00502823f02804704804621c00a36b", + "0x1b02823700536b00523700501b02823700536b0050450460072de028046", + "0x4823721c00a2dd02804700536b00504700501b02804800536b005048005", + "0x523f00501f02802836b00523b00501f02824523f23b23900a36b005047", + "0x509202835e00536b0052390052f402802836b00524500501f02802836b", + "0x3602824900536b00502802002802836b00502836902835900536b005356", + "0x36b00524d00535e02802836b00524c00504002824d24c00736b005249005", + "0x4f02825200536b00524f00535602824f00536b00524e00535902824e005", + "0x36b00535900509202835e00536b00535e0052f402836600536b005366005", + "0xb00525200536b00525200508402803100536b0050310050c0028359005", + "0x2805000536b00536500503102802836b00502800702825203135935e366", + "0x536b00505b00501b02805b00536b00502804602800900536b005028020", + "0x702d02805900536b00502802302805800536b00505b00900736402805b", + "0x36b00502000504f02825c00536b00505c00536302805c00536b005058059", + "0xc002805000536b00505000509202800500536b0050050052f4028020005", + "0x3105000502000b00525c00536b00525c00508402803100536b005031005", + "0x36b00500f00503102802836b00500a00523702802836b00502800702825c", + "0x5e00501b02805e00536b00502804602825e00536b00502802002825d005", + "0x5f00536b00502802302806000536b00505e25e00736402805e00536b005", + "0x504f02829600536b00505d00536302805d00536b00506005f00702d028", + "0x536b00525d00509202800500536b0050050052f402809200536b005092", + "0x9200b00529600536b00529600508402803100536b0050310050c002825d", + "0x4f00b00736b00700702800700502802836b00502802802829603125d005", + "0xa02801000536b00504f00503102802836b00502800702800f0920074f8", + "0x36b00501000509202800b00536b00500b00504f0281c800536b00500a005", + "0x2836b0050280070280140054f901304e00736b0071c800500f028010005", + "0x36b00501000503102802836b00501300536702802836b00504e00501c028", + "0x1700501b02801700536b00502836502803000536b00502802002804d005", + "0x36900536b00502802302801800536b00501703000736402801700536b005", + "0x504f02801b00536b00536800536302836800536b00501836900702d028", + "0x536b00504d00509202800500536b0050050050da02800b00536b00500b", + "0xb00b00501b00536b00501b00508402803100536b0050310050c002804d", + "0x503102802836b00501400501c02802836b00502800702801b03104d005", + "0x1c00536b00501c00509202836700536b00502836102801c00536b005010", + "0x4fa01f36600736b00736701c00b03135f02836700536b0053670051aa028", + "0x281a602836400536b00501f00503102802836b005028007028365020007", + "0x2802300536b00502300501b02802d00536b0050282db02802300536b005", + "0x536400509202836600536b00536600504f02802d00536b00502d00501b", + "0x2836b0050280070280284fb36300536b00702d0230072da02836400536b", + "0x36b0050280ea02808400536b0050282d70280c000536b005364005031028", + "0x2d602836300536b0053630050ee02836100536b00536100501b028361005", + "0x2802002802836b00535f0052d402835f1aa00736b00536336108400500a", + "0x2836b00535d00504002836c35d00736b00503200503602803200536b005", + "0xc00535602800c00536b00503300535902803300536b00536c00535e028", + "0x1aa00536b0051aa0050da02836600536b00536600504f02803c00536b005", + "0x3c00508402803100536b0050310050c00280c000536b0050c0005092028", + "0x503102802836b00502800702803c0310c01aa36600b00503c00536b005", + "0x2835e00536b00502824502804000536b00502802002803600536b005364", + "0x502802302835900536b00535e04000736402835e00536b00535e00501b", + "0x21c00536b00521500536302821500536b00535935600702d02835600536b", + "0x3600509202800500536b0050050050da02836600536b00536600504f028", + "0x21c00536b00521c00508402803100536b0050310050c002803600536b005", + "0x536b00536500503102802836b00502800702821c03103600536600b005", + "0x504700501b02804700536b00502804602804800536b005028020028046", + "0x2823700536b00502802302804500536b00504704800736402804700536b", + "0x2000504f02823b00536b00523900536302823900536b00504523700702d", + "0x4600536b00504600509202800500536b0050050050da02802000536b005", + "0x502000b00523b00536b00523b00508402803100536b0050310050c0028", + "0xf00503102802836b00500a00523702802836b00502800702823b031046", + "0x1b02824900536b00502804602824500536b00502802002823f00536b005", + "0x36b00502802302824c00536b00524924500736402824900536b005249005", + "0x2824f00536b00524e00536302824e00536b00524c24d00702d02824d005", + "0x523f00509202800500536b0050050050da02809200536b00509200504f", + "0x524f00536b00524f00508402803100536b0050310050c002823f00536b", + "0x736b00700502800700502802836b00502802802824f03123f00509200b", + "0xf00536b00500b00503102802836b00502800702809204f0074fc00b00a", + "0xf00509202800a00536b00500a00504f02801000536b00503100500a028", + "0x50280070280130054fd04e1c800736b00701000500f02800f00536b005", + "0x1f02804d00536b00504e00501002801400536b00500f00503102802836b", + "0x536b0050140050920281c800536b0051c800501302802836b00504d005", + "0x2802836b0050280070280180054fe01703000736b0071c800500f028014", + "0x503000501302836800536b00501700501002836900536b005014005031", + "0x2836800536b00536800501b02836900536b00536900509202803000536b", + "0x501c02802836b0050280070283670054ff01c01b00736b00703000500f", + "0x3102802836b00536800501f02802836b00501c00536702802836b00501b", + "0x2000536b00502836502801f00536b00502802002836600536b005369005", + "0x2802302836500536b00502001f00736402802000536b00502000501b028", + "0x536b00502300536302802300536b00536536400702d02836400536b005", + "0x50c002836600536b00536600509202800a00536b00500a00504f02802d", + "0x2802d00736600a00a00502d00536b00502d00508402800700536b005007", + "0x36300536b00536900503102802836b00536700501c02802836b005028007", + "0x50c00051aa02836300536b0053630050920280c000536b005028361028", + "0x702835f1aa00750036108400736b0070c036300a03135f0280c000536b", + "0x2835d00536b00502802002803200536b00536100503102802836b005028", + "0x3300503602803300536b00536c35d00736402836c00536b0053680051c8", + "0x3600536b00503c00535e02802836b00500c00504002803c00c00736b005", + "0x8400504f02835e00536b00504000535602804000536b005036005359028", + "0x700536b0050070050c002803200536b00503200509202808400536b005", + "0x2836b00502800702835e00703208400a00535e00536b00535e005084028", + "0x36b00502802002835900536b00535f00503102802836b00536800501f028", + "0x736402821500536b00521500501b02821500536b005028046028356005", + "0x36b00521c04600702d02804600536b00502802302821c00536b005215356", + "0x920281aa00536b0051aa00504f02804700536b005048005363028048005", + "0x36b00504700508402800700536b0050070050c002835900536b005359005", + "0x36b00501800501c02802836b0050280070280470073591aa00a005047005", + "0x502804802823700536b00502802002804500536b005014005031028028", + "0x23b00536b00523923700736402823900536b00523900501b02823900536b", + "0x24500536302824500536b00523b23f00702d02823f00536b005028023028", + "0x4500536b00504500509202800a00536b00500a00504f02824900536b005", + "0x4500a00a00524900536b00524900508402800700536b0050070050c0028", + "0x500f00503102802836b00501300501c02802836b005028007028249007", + "0x501b02824e00536b00502804502824d00536b00502802002824c00536b", + "0x536b00502802302824f00536b00524e24d00736402824e00536b00524e", + "0x4f02800900536b00505000536302805000536b00524f25200702d028252", + "0x36b0050070050c002824c00536b00524c00509202800a00536b00500a005", + "0x502800702800900724c00a00a00500900536b005009005084028007005", + "0x2802002805b00536b00509200503102802836b00503100523702802836b", + "0x2805900536b00505900501b02805900536b00502804602805800536b005", + "0x5c25c00702d02825c00536b00502802302805c00536b005059058007364", + "0x4f00536b00504f00504f02825e00536b00525d00536302825d00536b005", + "0x25e00508402800700536b0050070050c002805b00536b00505b005092028", + "0x2800700502802836b00502802802825e00705b04f00a00525e00536b005", + "0xb00503102802836b00502800702809204f00750100b00a00736b007005", + "0xa00536b00500a00504f02801000536b00503100500a02800f00536b005", + "0x1300550204e1c800736b00701000500f02800f00536b00500f005092028", + "0x36b00504e00501002801400536b00500f00503102802836b005028007028", + "0x51c800501302802836b00502800b02802836b00504d00501f02804d005", + "0x1703000736b0071c800500f02801400536b0050140050920281c800536b", + "0x501002836900536b00501400503102802836b005028007028018005503", + "0x536b00501b00504e02801b00536b0053680051c802836800536b005017", + "0x501402836600536b00503000501302836700536b00536900509202801c", + "0x503102802836b00502800702802850400502804d02801f00536b00501c", + "0x36400536b00536500501702836500536b00502803002802000536b005014", + "0x36400501402836600536b00501800501302836700536b005020005092028", + "0x36b00502800702802d00550502300536b00701f00501802801f00536b005", + "0x536300509202836300536b00536700503102802836b005028369028028", + "0x50280070283610055060840c000736b00702300a00736802836300536b", + "0x920280c000536b0050c000504f0281aa00536b00536300503102802836b", + "0x702835d00550703235f00736b00736600500f0281aa00536b0051aa005", + "0x3300536b00503200501002836c00536b0051aa00503102802836b005028", + "0x3300501b02836c00536b00536c00509202835f00536b00535f005013028", + "0x502800702803600550803c00c00736b00735f00500f02803300536b005", + "0x3300501f02802836b00503c00536702802836b00500c00501c02802836b", + "0x2002804000536b00536c00503102802836b00508400536602802836b005", + "0x35900536b00535900501b02835900536b00502836502835e00536b005028", + "0x21500702d02821500536b00502802302835600536b00535935e007364028", + "0x536b0050c000504f02804600536b00521c00536302821c00536b005356", + "0x508402800700536b0050070050c002804000536b0050400050920280c0", + "0x501c02802836b0050280070280460070400c000a00504600536b005046", + "0x2804700536b00502836102804800536b00536c00503102802836b005036", + "0x480c003135f02804700536b0050470051aa02804800536b005048005092", + "0x23700503102802836b00502800702823b23900750923704500736b007047", + "0x2824900536b00502803202824500536b0050330051c802823f00536b005", + "0x24900503302823f00536b00523f00509202824c24500736b0052450050dc", + "0x24c08424900723f00b00c02804500536b00504500504f02824900536b005", + "0x24d00509202802836b00502800702805025224f03150a24e24d00736b007", + "0x2805b00536b00502802002800900536b00524d00503102824d00536b005", + "0x504002805c05900736b00505800503602805800536b00524505b007364", + "0x25d00536b00525c00535902825c00536b00505c00535e02802836b005059", + "0x900509202804500536b00504500504f02825e00536b00525d005356028", + "0x25e00536b00525e00508402824e00536b00524e0050c002800900536b005", + "0x2802836b00524500501f02802836b00502800702825e24e00904500a005", + "0x36b00502802302805e00536b00524f00503102824f00536b00524f005092", + "0x2805d00536b00505f00536302805f00536b00505006000702d028060005", + "0x52520050c002805e00536b00505e00509202804500536b00504500504f", + "0x2800702805d25205e04500a00505d00536b00505d00508402825200536b", + "0x503102802836b00508400536602802836b00503300501f02802836b005", + "0x2804200536b00502804602829800536b00502802002829600536b00523b", + "0x502802302806700536b00504229800736402804200536b00504200501b", + "0x6800536b00506900536302806900536b0050672bd00702d0282bd00536b", + "0x70050c002829600536b00529600509202823900536b00523900504f028", + "0x702806800729623900a00506800536b00506800508402800700536b005", + "0x3102802836b00508400536602802836b00535d00501c02802836b005028", + "0x7100536b00502805e02806f00536b00502802002800600536b0051aa005", + "0x2802302832500536b00507106f00736402807100536b00507100501b028", + "0x536b00507500536302807500536b00532507400702d02807400536b005", + "0x50c002800600536b0050060050920280c000536b0050c000504f028077", + "0x280770070060c000a00507700536b00507700508402800700536b005007", + "0x34c00536b00536300503102802836b00536600501c02802836b005028007", + "0x502804d02804300536b00534c00509202834b00536b00536100504f028", + "0x36b00502d00504702802836b00502836902802836b00502800702802850b", + "0xa00504f02807a00536b00536700503102802836b00536600501c028028", + "0x2807900536b00502802002804300536b00507a00509202834b00536b005", + "0x507f07900736402807f00536b00507f00501b02807f00536b005028048", + "0x2807d00536b00534808100702d02808100536b00502802302834800536b", + "0x504300509202834b00536b00534b00504f02834600536b00507d005363", + "0x534600536b00534600508402800700536b0050070050c002804300536b", + "0x3102802836b00501300501c02802836b00502800702834600704334b00a", + "0x34300536b00502804502834400536b00502802002834500536b00500f005", + "0x2802302834200536b00534334400736402834300536b00534300501b028", + "0x536b00533d00536302833d00536b00534234100702d02834100536b005", + "0x50c002834500536b00534500509202800a00536b00500a00504f02808c", + "0x2808c00734500a00a00508c00536b00508c00508402800700536b005007", + "0x33c00536b00509200503102802836b00503100523702802836b005028007", + "0x36b00508a00501b02808a00536b00502804602833b00536b005028020028", + "0x2d02833900536b00502802302833a00536b00508a33b00736402808a005", + "0x504f00504f02833800536b00508800536302808800536b00533a339007", + "0x2800700536b0050070050c002833c00536b00533c00509202804f00536b", + "0x2802836b00502802802833800733c04f00a00533800536b005338005084", + "0x2802836b00502800702809204f00750c00b00a00736b007005028007005", + "0x500a00504f02801000536b00503100500a02800f00536b00500b005031", + "0x4e1c800736b00701000500f02800f00536b00500f00509202800a00536b", + "0x501002801400536b00500f00503102802836b00502800702801300550d", + "0x536b0050140050920281c800536b0051c800501302804d00536b00504e", + "0x550e01703000736b0071c800500f02804d00536b00504d00501b028014", + "0x501700501002836900536b00501400503102802836b005028007028018", + "0x2836900536b00536900509202803000536b00503000501302836800536b", + "0x2836700550f01c01b00736b00703000500f02836800536b00536800501b", + "0x2802836b00501c00536702802836b00501b00501c02802836b005028007", + "0x536b00536900503102802836b00536800501f02802836b00504d00501f", + "0x502000501b02802000536b00502836502801f00536b005028020028366", + "0x2836400536b00502802302836500536b00502001f00736402802000536b", + "0xa00504f02802d00536b00502300536302802300536b00536536400702d", + "0x700536b0050070050c002836600536b00536600509202800a00536b005", + "0x2836b00502800702802d00736600a00a00502d00536b00502d005084028", + "0x36b00502836102836300536b00536900503102802836b00536700501c028", + "0x35f0280c000536b0050c00051aa02836300536b0053630050920280c0005", + "0x2802836b00502800702835f1aa00751036108400736b0070c036300a031", + "0x36b00535d00533a02835d00536b00502808a02803200536b005361005031", + "0xdc02800c00536b0053680051c802803300536b00504d0051c802836c005", + "0x502803202803600536b00500c03c0072de02803c03300736b005033005", + "0x2804000536b00504000503302803200536b00503200509202804000536b", + "0x508400504f02803600536b00503600501b02836c00536b00536c005088", + "0x21535603151135935e00736b00703636c04000703200b00c02808400536b", + "0x535e00503102835e00536b00535e00509202802836b00502800702821c", + "0x2804700536b00503304800736402804800536b00502802002804600536b", + "0x523700535e02802836b00504500504002823704500736b005047005036", + "0x2823f00536b00523b00535602823b00536b00523900535902823900536b", + "0x53590050c002804600536b00504600509202808400536b00508400504f", + "0x2800702823f35904608400a00523f00536b00523f00508402835900536b", + "0x3102835600536b00535600509202802836b00503300501f02802836b005", + "0x36b00521c24900702d02824900536b00502802302824500536b005356005", + "0x9202808400536b00508400504f02824d00536b00524c00536302824c005", + "0x36b00524d00508402821500536b0052150050c002824500536b005245005", + "0x36b00504d00501f02802836b00502800702824d21524508400a00524d005", + "0x502802002824e00536b00535f00503102802836b00536800501f028028", + "0x36402825200536b00525200501b02825200536b00502804602824f00536b", + "0x505000900702d02800900536b00502802302805000536b00525224f007", + "0x281aa00536b0051aa00504f02805800536b00505b00536302805b00536b", + "0x505800508402800700536b0050070050c002824e00536b00524e005092", + "0x501800501c02802836b00502800702805800724e1aa00a00505800536b", + "0x2802002805900536b00501400503102802836b00504d00501f02802836b", + "0x2825c00536b00525c00501b02825c00536b00502804802805c00536b005", + "0x25d25e00702d02825e00536b00502802302825d00536b00525c05c007364", + "0xa00536b00500a00504f02806000536b00505e00536302805e00536b005", + "0x6000508402800700536b0050070050c002805900536b005059005092028", + "0x1300501c02802836b00502800702806000705900a00a00506000536b005", + "0x4502805d00536b00502802002805f00536b00500f00503102802836b005", + "0x36b00529605d00736402829600536b00529600501b02829600536b005028", + "0x36302806700536b00529804200702d02804200536b005028023028298005", + "0x36b00505f00509202800a00536b00500a00504f0282bd00536b005067005", + "0xa0052bd00536b0052bd00508402800700536b0050070050c002805f005", + "0x503102802836b00503100523702802836b0050280070282bd00705f00a", + "0x2800600536b00502804602806800536b00502802002806900536b005092", + "0x502802302806f00536b00500606800736402800600536b00500600501b", + "0x7400536b00532500536302832500536b00506f07100702d02807100536b", + "0x70050c002806900536b00506900509202804f00536b00504f00504f028", + "0x36902807400706904f00a00507400536b00507400508402800700536b005", + "0x702800f09200751204f00b00736b00700502800700502802836b005028", + "0xa00736b00500a0050dc02801000536b00504f00503102802836b005028", + "0x534802801000536b00501000509202800b00536b00500b00504f0281c8", + "0x2836b00500a00501f02802836b00502800702804e00551302836b0071c8", + "0x70072d202801400536b0050310052d302801300536b005010005031028", + "0x536b00500b00504f02803000536b00504d0052d102804d00536b005014", + "0xb03100503000536b0050300052d002801300536b00501300509202800b", + "0x501000503102802836b00504e00534602802836b005028007028030013", + "0x509202802836b00502800b02801800536b00500700500a02801700536b", + "0x2800702801b00551436836900736b00701800500f02801700536b005017", + "0x2836700536b00536800501002801c00536b00501700503102802836b005", + "0x501c00509202801f00536b00536600504e02836600536b0053670051c8", + "0x2836400536b00501f00501402836500536b00536900501302802000536b", + "0x2802300536b00501700503102802836b00502800702802851500502804d", + "0x36b00502300509202836300536b00502d00501702802d00536b005028030", + "0x35e02836400536b00536300501402836500536b00501b005013028020005", + "0x2800702836100551608400536b0073640050180280c000536b005365005", + "0x73640281aa00536b00502000503102802836b00502836902802836b005", + "0x36b00503200a00732c02803200536b00502823f02835f00536b005084031", + "0x5b0281aa00536b0051aa00509202800b00536b00500b00504f02835d005", + "0x36b00535d00501b02835f00536b00535f0052150280c000536b0050c0005", + "0x3336c03100500c03336c03136b00535d35f0c01aa00b00b05802835d005", + "0x2836b00500a00501f02802836b00502836902802836b00502800702800c", + "0x53610052cf02803c00536b00502000503102802836b005031005040028", + "0x35e00536b0050400052d102804000536b0050360c00072d202803600536b", + "0x35e0052d002803c00536b00503c00509202800b00536b00500b00504f028", + "0x500a00501f02802836b00502800702835e03c00b03100535e00536b005", + "0xf00503102802836b00500700523702802836b00503100504002802836b", + "0x1b02821500536b00502804602835600536b00502802002835900536b005", + "0x36b00502802302821c00536b00521535600736402821500536b005215005", + "0x2804700536b0050480052cc02804800536b00521c04600702d028046005", + "0x50470052d002835900536b00535900509202809200536b00509200504f", + "0x700502800700502802836b00502836902804735909203100504700536b", + "0x36b00500b00503102802836b00502800702809204f00751700b00a00736b", + "0x9202800a00536b00500a00504f02801000536b00503100500a02800f005", + "0x702801300551804e1c800736b00701000500f02800f00536b00500f005", + "0x4d00536b00504e00501002801400536b00500f00503102802836b005028", + "0x700736402803000536b00503000501b02803000536b00504d0051c8028", + "0x536b00500a00504f02801800536b0051c800535e02801700536b005030", + "0x505b02801700536b00501700521502801400536b00501400509202800a", + "0x3100501b36836903136b00501801701400a00a06802801800536b005018", + "0xf00503102802836b00501300501c02802836b00502800702801b368369", + "0x36600536b0053670070070f602836700536b00502803002801c00536b005", + "0x1c00509202800a00536b00500a00504f02801f00536b0053660050f8028", + "0x2800702801f01c00a03100501f00536b00501f0052cb02801c00536b005", + "0x503102802836b00503100523702802836b00500700504002802836b005", + "0x2836400536b00502804602836500536b00502802002802000536b005092", + "0x502802302802300536b00536436500736402836400536b00536400501b", + "0xc000536b0053630052ca02836300536b00502302d00702d02802d00536b", + "0xc00052cb02802000536b00502000509202804f00536b00504f00504f028", + "0x502800700502802836b0050283690280c002004f0310050c000536b005", + "0x500b00503102802836b00502800702809204f00751900b00a00736b007", + "0x2800a00536b00500a00504f02801000536b00500700500a02800f00536b", + "0x2801300551a04e1c800736b00701000500f02800f00536b00500f005092", + "0x536b00504e00501002801400536b00500f00503102802836b005028007", + "0x736402803000536b00503000501b02803000536b00504d0051c802804d", + "0x36b00500a00504f02801800536b0051c800535e02801700536b005030031", + "0x21502801800536b00501800505b02801400536b00501400509202800a005", + "0x501b36836903136b00501701801400a00a07502801700536b005017005", + "0x503102802836b00501300501c02802836b00502800702801b368369031", + "0x536b0053670310070f602836700536b00502803002801c00536b00500f", + "0x509202800a00536b00500a00504f02801f00536b0053660050f8028366", + "0x702801f01c00a03100501f00536b00501f0052cb02801c00536b00501c", + "0x3102802836b00503100504002802836b00500700523702802836b005028", + "0x36400536b00502804602836500536b00502802002802000536b005092005", + "0x2802302802300536b00536436500736402836400536b00536400501b028", + "0x536b0053630052ca02836300536b00502302d00702d02802d00536b005", + "0x52cb02802000536b00502000509202804f00536b00504f00504f0280c0", + "0x2823b02800b00536b0050280200280c002004f0310050c000536b0050c0", + "0x536b00504f00b00736402804f00536b00504f00501b02804f00536b005", + "0x535e02802836b00500f00504002801000f00736b005092005036028092", + "0x736b0051c80052c90281c800536b0051c800505b0281c800536b005010", + "0x36b00701304e00502800a0fa0280131c800736b0051c80052c902804e1c8", + "0x36b00501400509202802836b00502800702801801703003151b04d014007", + "0x31702836900536b00536900509202836900536b005014005031028014005", + "0x2836b00502800702836636701c03151c01b36800736b00703104d369031", + "0x50280fc02801f00536b00536800503102836800536b005368005092028", + "0x2802000536b00502000501b02801f00536b00501f00509202802000536b", + "0x502800702836302d02303151d36436500736b0071c802001b01f00a316", + "0x8a0280c000536b00536500503102836500536b00536500509202802836b", + "0x1aa00536b0050280fc02836100536b00508400533a02808400536b005028", + "0x535f0050330280c000536b0050c000509202835f00536b005028032028", + "0x281aa00536b0051aa00501b02836100536b00536100508802835f00536b", + "0x2800702800c03336c03151e35d03200736b0071aa36135f3640c000b00c", + "0x2803c00536b00503200503102803200536b00503200509202802836b005", + "0x700a0052e002803c00536b00503c00509202835d00536b00535d0050c0", + "0x2802836b00503600504702802836b00502800702804000551f03600536b", + "0x53590070070fb02835900536b00502803002835e00536b00503c005031", + "0x2835e00536b00535e00509202821500536b0053560050f902835600536b", + "0x21535d35e03100521500536b0052150052c802835d00536b00535d0050c0", + "0x2836b00500700532102802836b00504000504702802836b005028007028", + "0x36b0050282c702804600536b00502802002821c00536b00503c005031028", + "0x2804700536b00504804600736402804800536b00504800501b028048005", + "0x523700510202823700536b00504704500702d02804500536b005028023", + "0x2835d00536b00535d0050c002821c00536b00521c00509202823900536b", + "0x32102802836b00502800702823935d21c03100523900536b0052390052c8", + "0x36c00536b00536c00509202802836b00500a00534402802836b005007005", + "0xc23f00702d02823f00536b00502802302823b00536b00536c005031028", + "0x23b00536b00523b00509202824900536b00524500510202824500536b005", + "0x3323b03100524900536b0052490052c802803300536b0050330050c0028", + "0x36b00500a00534402802836b00500700532102802836b005028007028249", + "0x2802302824c00536b00502300503102802300536b005023005092028028", + "0x536b00524e00510202824e00536b00536324d00702d02824d00536b005", + "0x52c802802d00536b00502d0050c002824c00536b00524c00509202824f", + "0x700532102802836b00502800702824f02d24c03100524f00536b00524f", + "0x509202802836b0051c800523702802836b00500a00534402802836b005", + "0x5000536b00502802302825200536b00501c00503102801c00536b00501c", + "0x509202805b00536b00500900510202800900536b00536605000702d028", + "0x536b00505b0052c802836700536b0053670050c002825200536b005252", + "0x2802836b00500700532102802836b00502800702805b36725203100505b", + "0x2836b00503100534302802836b0051c800523702802836b00500a005344", + "0x502802302805800536b00503000503102803000536b005030005092028", + "0x25c00536b00505c00510202805c00536b00501805900702d02805900536b", + "0x25c0052c802801700536b0050170050c002805800536b005058005092028", + "0x502810402800b00536b00502802002825c01705803100525c00536b005", + "0x2802836b00509200504002800f09200736b00500b00503602804f00536b", + "0x4f00501b0281c803100736b00503100539602801000536b00500f00535e", + "0x3152001401304e03136b00701004f1c800502800b25e02804f00536b005", + "0x4e00509202802836b00501400523702802836b00502800702801703004d", + "0x2836900536b00502802002801800536b00504e00503102804e00536b005", + "0x502803002801b00536b00536836900736402836800536b00500a00532d", + "0x2836600536b00536700510302836700536b00501c00508102801c00536b", + "0x502810102801f00536b00536601b00736402836600536b00536600501b", + "0x2802836b00536500504002836436500736b00501f00503602802000536b", + "0x502000501b02801800536b00501800509202802300536b00536400535e", + "0x702302003101301800b25e02802300536b00502300505b02802000536b", + "0xc000523702802836b0050280070281aa3610840315210c036302d03136b", + "0x3102802d00536b00502d00509202802836b00500700532102802836b005", + "0x35d00536b0050282c602803200536b00502802002835f00536b00502d005", + "0x2802302836c00536b00535d03200736402835d00536b00535d00501b028", + "0x536b00500c00510202800c00536b00536c03300702d02803300536b005", + "0x52c802836300536b0053630050c002835f00536b00535f00509202803c", + "0x1aa00504002802836b00502800702803c36335f03100503c00536b00503c", + "0x2803600536b00508400503102808400536b00508400509202802836b005", + "0x36b00535e00510a02835e00536b0050400052c502804000536b00502808a", + "0x10c02821500536b00535600510902802836b00535900510b028356359007", + "0x536b00502803202804600536b00521c00533a02821c00536b005215005", + "0x508802804800536b00504800503302803600536b005036005092028048", + "0x3152223704504703136b00704604836103600a03c02804600536b005046", + "0x503102804700536b00504700509202802836b00502800702823f23b239", + "0x23700536b00523700501b02824900536b00502833902824500536b005047", + "0x50c002824c00536b00524c00501b02824c00536b00524923700732c028", + "0x2836b00724c00534802824500536b00524500509202804500536b005045", + "0x2803002824e00536b00524500503102802836b00502800702824d005523", + "0x536b0052520050f902825200536b00524f0070070fb02824f00536b005", + "0x52c802804500536b0050450050c002824e00536b00524e005092028050", + "0x24d00534602802836b00502800702805004524e03100505000536b005050", + "0x2002800900536b00524500503102802836b00500700532102802836b005", + "0x5800536b00505800501b02805800536b0050282c302805b00536b005028", + "0x5c00702d02805c00536b00502802302805900536b00505805b007364028", + "0x536b00500900509202825d00536b00525c00510202825c00536b005059", + "0x903100525d00536b00525d0052c802804500536b0050450050c0028009", + "0x523900509202802836b00500700532102802836b00502800702825d045", + "0x2d02805e00536b00502802302825e00536b00523900503102823900536b", + "0x525e00509202805f00536b00506000510202806000536b00523f05e007", + "0x505f00536b00505f0052c802823b00536b00523b0050c002825e00536b", + "0x534302802836b00500700532102802836b00502800702805f23b25e031", + "0x2804d00536b00504d00509202802836b00503100525d02802836b00500a", + "0x501729600702d02829600536b00502802302805d00536b00504d005031", + "0x2805d00536b00505d00509202804200536b00529800510202829800536b", + "0x4203005d03100504200536b0050420052c802803000536b0050300050c0", + "0x1c801000752400f09200736b00700502800700502802836b005028369028", + "0x36b00500b0052c202804e00536b00500f00503102802836b005028007028", + "0x4d03100736b0050310052c202801400536b00501300511202801300b007", + "0x4d00711302804e00536b00504e00509202809200536b00509200504f028", + "0x3000536b00504e00503102802836b00502800702802852502836b007014", + "0x507102801800536b00501700535e02801704f00736b00504f005071028", + "0x36b00503000509202836800536b00536900535e02836900a00736b00500a", + "0x2801f36636703152601c01b00736b00736801800703000a0fa028030005", + "0x536b00501b00503102801b00536b00501b00509202802836b005028007", + "0x1c0050c002836500536b00536500533202836500536b005028025028020", + "0x36b00736503109203111102802000536b00502000509202801c00536b005", + "0x536b00502000503102802836b00502800702836302d007527023364007", + "0x50c00280c000536b0050c000509202836400536b00536400504f0280c0", + "0x536b00500a00501302802300536b00502300533202801c00536b00501c", + "0x9233102804f00536b00504f00501302800b00536b00500b00533202800a", + "0x35f1aa36108400a00535f1aa36108400a36b00504f00b00a02301c0c0364", + "0x2836b00504f00501c02802836b00536300508e02802836b005028007028", + "0x36b00502000503102802836b00500a00501c02802836b00500b00508e028", + "0x36c00501b02836c00536b0050282c102835d00536b005028020028032005", + "0xc00536b00502802302803300536b00536c35d00736402836c00536b005", + "0x504f02803600536b00503c00511d02803c00536b00503300c00702d028", + "0x536b00501c0050c002803200536b00503200509202802d00536b00502d", + "0x36b00502800702803601c03202d00a00503600536b00503600511902801c", + "0x500a00501c02802836b00500b00508e02802836b00504f00501c028028", + "0x503102836700536b00536700509202802836b00503100508e02802836b", + "0x536b00501f35e00702d02835e00536b00502802302804000536b005367", + "0x509202809200536b00509200504f02835600536b00535900511d028359", + "0x536b00535600511902836600536b0053660050c002804000536b005040", + "0x2836b00504f00501c02802836b00502800702835636604009200a005356", + "0x36b00504e00503102802836b00500a00501c02802836b00500b00508e028", + "0x2c002804600536b00521c03100711802821c00536b005028030028215005", + "0x36b00521500509202809200536b00509200504f02804800536b005046005", + "0xa00504800536b00504800511902800700536b0050070050c0028215005", + "0x508e02802836b00504f00501c02802836b005028007028048007215092", + "0x3102802836b00503100508e02802836b00500a00501c02802836b00500b", + "0x23700536b00502804602804500536b00502802002804700536b0051c8005", + "0x2802302823900536b00523704500736402823700536b00523700501b028", + "0x536b00523f00511d02823f00536b00523923b00702d02823b00536b005", + "0x50c002804700536b00504700509202801000536b00501000504f028245", + "0x2824500704701000a00524500536b00524500511902800700536b005007", + "0x2800b00552800a03100736b00700700500f02800700536b00500500500a", + "0x536b00503100501302804f00536b00500a00524f02802836b005028007", + "0x36b00502800702802852900502804d02800f00536b00504f005252028092", + "0xb0050130281c800536b00501000505002801000536b005028030028028", + "0x9200736b00509200507102800f00536b0051c800525202809200536b005", + "0x4d00552a01400536b00700f00500902801300536b00504e00535e02804e", + "0x36b0050300051c802803000536b00501400501002802836b005028007028", + "0x36901800736b00701702800708602801700536b00501700501b028017005", + "0x1800504f02802836b00501300523702802836b00502800702836800552b", + "0x502800702836700552c01c01b00736b00709200500f02801800536b005", + "0x25202801f00536b00501b00501302836600536b00501c00524f02802836b", + "0x3002802836b00502800702802852d00502804d02802000536b005366005", + "0x536b00536700501302836400536b00536500505002836500536b005028", + "0x35e02802301f00736b00501f00507102802000536b00536400525202801f", + "0x280070280c000552e36300536b00702000500902802d00536b005023005", + "0x2836100536b0050840051c802808400536b00536300501002802836b005", + "0x3200552f35f1aa00736b00736101800708602836100536b00536100501b", + "0x536b0051aa00504f02802836b00502d00523702802836b005028007028", + "0x2802836b00502800702803300553036c35d00736b00701f00500f0281aa", + "0x503c00504e02803c00536b00500c0051c802800c00536b00536c005010", + "0x2835e00536b00503600501402804000536b00535d00501302803600536b", + "0x1702835900536b00502803002802836b00502800702802853100502804d", + "0x36b00535600501402804000536b00503300501302835600536b005359005", + "0x553221c00536b00735e00501802821500536b00504000535e02835e005", + "0x4500553304704800736b00721c1aa00724e02802836b005028007028046", + "0x23700512102823700536b00504735f36903111f02802836b005028007028", + "0x21500536b00521500505b02804800536b00504800504f02823900536b005", + "0x2802836b00502800702823921504803100523900536b0052390052be028", + "0x536b00504500504f02802836b00535f00508e02802836b00536900508e", + "0x2836b00504600504702802836b00502800702802853400502804d02823b", + "0x36b0051aa00504f02802836b00535f00508e02802836b00536900508e028", + "0x505b02824500536b00523f0052bc02823f00536b00502803002823b005", + "0x702824521523b03100524500536b0052450052be02821500536b005215", + "0x4f02802836b00501f00501c02802836b00536900508e02802836b005028", + "0x4702802836b00502800702802853500502804d02824900536b005032005", + "0x2802836b00501f00501c02802836b00536900508e02802836b0050c0005", + "0x36b00524c0052bc02824c00536b00502803002824900536b00501800504f", + "0x3100524d00536b00524d0052be02802d00536b00502d00505b02824d005", + "0x36800504f02802836b00509200501c02802836b00502800702824d02d249", + "0x4d00504702802836b00502800702802853600502804d02824e00536b005", + "0x3002824e00536b00502800504f02802836b00509200501c02802836b005", + "0x536b00501300505b02825200536b00524f0052bc02824f00536b005028", + "0x536b00502824902825201324e03100525200536b0052520052be028013", + "0x36b00502824902800f00536b00502824902804f00536b00502824902800a", + "0x502824902804d00536b00502805d02801300536b0050282490281c8005", + "0x500700500a02802836b00502836902802836b00502824c02801700536b", + "0x36b00502800702801b00553736836900736b00701800500f02801800536b", + "0x724d02800b00536b00536800501002801c00536b005005005031028028", + "0x36b00536900501302836700536b00500b0051c802800b00536b00500b04f", + "0x53801f36600736b00736900500f02801c00536b00501c005092028369005", + "0x1f00501002836500536b00501c00503102802836b005028007028020005", + "0x2d00536b00502300504e02802300536b0053640051c802836400536b005", + "0x2d0050140280c000536b00536600501302836300536b005365005092028", + "0x1c00503102802836b00502800702802853900502804d02808400536b005", + "0x2835f00536b0051aa0050170281aa00536b00502803002836100536b005", + "0x535f0050140280c000536b00502000501302836300536b005361005092", + "0x35d00536b00503200535e0280320c000736b0050c000507102808400536b", + "0x2800702836c00553a09200536b00708400501802802836b00502800b028", + "0x9200536b00509200f00724d02803300536b00536300503102802836b005", + "0x553b03c00c00736b00709202800724e02803300536b005033005092028", + "0x36b00503300503102802836b00535d00523702802836b005028007028036", + "0xf02804000536b00504000509202800c00536b00500c00504f028040005", + "0x4000503102802836b00502800702835600553c35935e00736b0070c0005", + "0x4600536b00521500509202821c00536b00535900524f02821500536b005", + "0x502804d02804700536b00521c00525202804800536b00535e005013028", + "0x502803002804500536b00504000503102802836b00502800702802853d", + "0x2804600536b00504500509202823900536b00523700505002823700536b", + "0x504800535e02804700536b00523900525202804800536b005356005013", + "0x2836b00502800702824500553e23f00536b00704700500902823b00536b", + "0xa00724d02803100536b00523f00501002824900536b005046005031028", + "0x536b00524900509202824c00536b0050310051c802803100536b005031", + "0x502800702805025224f03153f24e24d00736b00724c00c0070ac028249", + "0x5b02824d00536b00524d00504f02800900536b00524900503102802836b", + "0x900509202805805b00736b00523b24d0072bb02823b00536b00523b005", + "0x36b00502800702805c00554005900536b0070580052ba02800900536b005", + "0x9202825e25d00736b00505900512402825c00536b005009005031028028", + "0x2800702805e00554101400536b00725e00512602825c00536b00525c005", + "0x2805f00536b00525d00500a02806000536b00525c00503102802836b005", + "0x5f00500f02806000536b00506000509202801400536b00501404d007069", + "0x36b00506000503102802836b00502800702829800554229605d00736b007", + "0x9202805d00536b00505d00501302804e00536b005296005010028042005", + "0x705d00500f02804e00536b00504e01300724d02804200536b005042005", + "0x536b00504200503102802836b0050280070280690055432bd06700736b", + "0x509202806700536b00506700501302801000536b0052bd005010028068", + "0x36b00706700500f02801000536b0050101c800724d02806800536b005068", + "0x32500536b00506800503102802836b00502800702807100554406f006007", + "0x100051c802807400536b00504e0051c802803000536b00506f005010028", + "0x536b0050300051c802803000536b00503001700724d02807500536b005", + "0x500f02832500536b00532500509202800600536b005006005013028077", + "0x532500503102802836b00502800702804300554534b34c00736b007006", + "0x2807f00536b00507a00509202807900536b00534b00524f02807a00536b", + "0x54600502804d02808100536b00507900525202834800536b00534c005013", + "0x36b00502803002807d00536b00532500503102802836b005028007028028", + "0x1302807f00536b00507d00509202834500536b005346005050028346005", + "0x36b00708100500902808100536b00534500525202834800536b005043005", + "0x2834200536b00507f00503102802836b005028007028343005547344005", + "0x36b00534800535e02833d00536b00502812502834100536b005344005010", + "0x9202805b00536b00505b00504f02833c00536b0053410051c802808c005", + "0x36b00533d00512302808c00536b00508c00505b02834200536b005342005", + "0x36b00533c33d08c34205b00b2b902833c00536b00533c00501b02833d005", + "0x36b00502800702808800554833900536b00733a0052b702833a08a33b031", + "0xb02833633700736b00533900512c02833800536b00508a005031028028", + "0x8600536b00733600512b02833800536b00533800509202802836b005028", + "0x52b602837700536b00533800503102802836b00502800702808e005549", + "0x536b00533200513002802836b00533300513102833233300736b005086", + "0x509202832f00536b00533700500a02833000536b0053310052b5028331", + "0x536b0053300052b302832d00536b00532f00501302832e00536b005377", + "0x536b00533800503102802836b00502800702802854a00502804d02832c", + "0x509202832a00536b00533700500a02832b00536b00508e0052b202808b", + "0x536b00532b0052b302832d00536b00532a00501302832e00536b00508b", + "0x3102802836b00502800702832600554b32900536b00732c00513602832c", + "0x36b00732d00500f02808500536b00508500509202808500536b00532e005", + "0x9800536b00508500503102802836b00502800702832400554c095093007", + "0x9300501302809600536b00509800509202832300536b00509500524f028", + "0x702802854d00502804d02832100536b00532300525202832200536b005", + "0x2831e00536b00502803002831f00536b00508500503102802836b005028", + "0x532400501302809600536b00531f00509202831d00536b00531e005050", + "0x2831c00536b00532200535e02832100536b00531d00525202832200536b", + "0x9600503102802836b00502800702831a00554e31b00536b007321005009", + "0x31700536b0053180051c802831800536b00531b00501002831900536b005", + "0x33b0070ac02831900536b00531900509202831700536b00531700501b028", + "0x503102802836b0050280070280a931131303154f31431600736b007317", + "0x536b00531c00505b02831600536b00531600504f02831000536b005319", + "0x2831000536b0053100050920280ac0b000736b00531c3160072bb02831c", + "0x31000503102802836b00502800702830d00555030f00536b0070ac0052ba", + "0x536b0050b400509202830b0b600736b00530f0051240280b400536b005", + "0x3102802836b0050280070283090055510b900536b00730b0051260280b4", + "0x36b00530800509202830700536b0050b600500a02830800536b0050b4005", + "0x2836b0050280070280bf00555230530600736b00730700500f028308005", + "0x30400509202830300536b00530500524f02830400536b005308005031028", + "0x39300536b00530300525202805100536b00530600501302830200536b005", + "0x39400536b00530800503102802836b00502800702802855300502804d028", + "0x53940050920280dc00536b00539500505002839500536b005028030028", + "0x2839300536b0050dc00525202805100536b0050bf00501302830200536b", + "0x3930050090280c700536b00539600535e02839605100736b005051005071", + "0x536b00530200503102802836b0050280070280c90055540c600536b007", + "0x501b02830100536b0050cf0051c80280cf00536b0050c60050100280cb", + "0x36b0073010b00071380280cb00536b0050cb00509202830100536b005301", + "0x2802836b0050c700523702802836b00502800702839800555530c397007", + "0x52fb00509202839700536b00539700504f0282fb00536b0050cb005031", + "0x36b0050280070280d50055562fa0d400736b00705100500f0282fb00536b", + "0x50920282f800536b0052fa00524f02839900536b0052fb005031028028", + "0x536b0052f80052520282f100536b0050d40050130282f700536b005399", + "0x536b0052fb00503102802836b00502800702802855700502804d0280da", + "0x2ee0050920280d200536b0052ec0050500282ec00536b0050280300282ee", + "0xda00536b0050d20052520282f100536b0050d50050130282f700536b005", + "0x282f60055580db00536b0070da0050090282ef00536b0052f100535e028", + "0x536b0050db0050100282e900536b0052f700503102802836b005028007", + "0x50920282e700536b0052e700501b0282e700536b0052e80051c80282e8", + "0x70280e10055592f50df00736b0072e73970071380282e900536b0052e9", + "0xdf00536b0050df00504f0282f300536b0052e900503102802836b005028", + "0x920280e32f200736b0052ef0df0072bb0282ef00536b0052ef00505b028", + "0x280070282e000555a2f400536b0070e30052ba0282f300536b0052f3005", + "0x1a62dd00736b0052f40051240282de00536b0052f300503102802836b005", + "0x282da00555b2db00536b0071a60051260282de00536b0052de005092028", + "0x282d700536b0052de00503102802836b00502836902802836b005028007", + "0x280ea00536b0052db2f530c0b931432907707507401424e03c367014137", + "0x2d60052b00282d600536b0050ee2dd0072b10280ee00536b0050ea005135", + "0x2d700536b0052d70050920282f200536b0052f200504f0282d400536b005", + "0x2802836b0050280070282d42d72f20310052d400536b0052d40052af028", + "0x2802836b0052f500521c02802836b00536700501f02802836b005028369", + "0x2836b00531400530f02802836b0050b900523702802836b00530c00521c", + "0x36b00507500501f02802836b00507700501f02802836b00532900513f028", + "0x524e00530f02802836b00501400523702802836b00507400501f028028", + "0x513e0282d300536b0052de00503102802836b00503c00525d02802836b", + "0x36b0052d10052b00282d100536b0052d22dd0072b10282d200536b0052da", + "0x2af0282d300536b0052d30050920282f200536b0052f200504f0282d0005", + "0x2836902802836b0050280070282d02d32f20310052d000536b0052d0005", + "0x521c02802836b00503c00525d02802836b00536700501f02802836b005", + "0x30f02802836b0050b900523702802836b00530c00521c02802836b0052f5", + "0x2802836b00507700501f02802836b00532900513f02802836b005314005", + "0x2836b00501400523702802836b00507400501f02802836b00507500501f", + "0x52e00052ad0282cf00536b0052f300503102802836b00524e00530f028", + "0x282cf00536b0052cf0050920282f200536b0052f200504f0282cc00536b", + "0x30f02802836b0050280070282cc2cf2f20310052cc00536b0052cc0052af", + "0x2802836b00503c00525d02802836b00536700501f02802836b00524e005", + "0x2836b00531400530f02802836b0050b900523702802836b00530c00521c", + "0x36b00507500501f02802836b00507700501f02802836b00532900513f028", + "0x52e900503102802836b00501400523702802836b00507400501f028028", + "0x282cb00536b0050f60050920280f800536b0050e100504f0280f600536b", + "0x30f02802836b0052f600504702802836b00502800702802855c00502804d", + "0x2802836b00503c00525d02802836b00536700501f02802836b00524e005", + "0x2836b00531400530f02802836b0050b900523702802836b00530c00521c", + "0x36b00507500501f02802836b00507700501f02802836b00532900513f028", + "0x52f700503102802836b00501400523702802836b00507400501f028028", + "0x282cb00536b0052ca0050920280f800536b00539700504f0282ca00536b", + "0xfa00536b0052c900513e0282c900536b00502803002802836b005028369", + "0x52af0280fb00536b0050fc0052b00280fc00536b0050fa2ef0072b1028", + "0x24e00530f02802836b0050280070280fb2cb0f80310050fb00536b0050fb", + "0x501c02802836b00503c00525d02802836b00536700501f02802836b005", + "0x30f02802836b0050b900523702802836b00501400523702802836b005051", + "0x2802836b00507700501f02802836b00532900513f02802836b005314005", + "0x536b0050cb00503102802836b00507400501f02802836b00507500501f", + "0x2804d0282c700536b0050f90050920282c800536b00539800504f0280f9", + "0x24e00530f02802836b0050c900504702802836b00502800702802855d005", + "0x501c02802836b00503c00525d02802836b00536700501f02802836b005", + "0x30f02802836b0050b900523702802836b00501400523702802836b005051", + "0x2802836b00507700501f02802836b00532900513f02802836b005314005", + "0x536b00530200503102802836b00507400501f02802836b00507500501f", + "0x283690282c700536b0051020050920282c800536b0050b000504f028102", + "0x2b102810300536b00510400513e02810400536b00502803002802836b005", + "0x52c60052af0282c600536b0051010052b002810100536b0051030c7007", + "0x2836b00502836902802836b0050280070282c62c72c80310052c600536b", + "0x36b00503c00525d02802836b00536700501f02802836b00524e00530f028", + "0x532900513f02802836b00531400530f02802836b005014005237028028", + "0x7400501f02802836b00507500501f02802836b00507700501f02802836b", + "0x2810a00536b00530900513e0282c500536b0050b400503102802836b005", + "0xb000504f02810900536b00510b0052b002810b00536b00510a0b60072b1", + "0x10900536b0051090052af0282c500536b0052c50050920280b000536b005", + "0x530f02802836b00502836902802836b0050280070281092c50b0031005", + "0x1f02802836b00503c00525d02802836b00536700501f02802836b00524e", + "0x2802836b00531400530f02802836b00501400523702802836b005074005", + "0x2836b00507500501f02802836b00507700501f02802836b00532900513f", + "0xb000504f0282c300536b00530d0052ad02810c00536b005310005031028", + "0x2c300536b0052c30052af02810c00536b00510c0050920280b000536b005", + "0x30f02802836b00531100530f02802836b0050280070282c310c0b0031005", + "0x2802836b00536700501f02802836b00524e00530f02802836b0050a9005", + "0x2836b00507400501f02802836b00507500501f02802836b00503c00525d", + "0x36b00507700501f02802836b00532900513f02802836b005014005237028", + "0x509202811200536b00531300504f0282c200536b005319005031028028", + "0x504702802836b00502800702802855e00502804d02811300536b0052c2", + "0x25d02802836b00536700501f02802836b00524e00530f02802836b00531a", + "0x2802836b00507400501f02802836b00507500501f02802836b00503c005", + "0x2836b00507700501f02802836b00532900513f02802836b005014005237", + "0x2500509202811200536b00533b00504f02802500536b005096005031028", + "0x513e02811100536b00502803002802836b00502836902811300536b005", + "0x36b00511d0052b002811d00536b0052c131c0072b10282c100536b005111", + "0x36b00502800702811911311203100511900536b0051190052af028119005", + "0x36b00536700501f02802836b00524e00530f02802836b005028369028028", + "0x507400501f02802836b00507500501f02802836b00503c00525d028028", + "0x32e00503102802836b00507700501f02802836b00501400523702802836b", + "0x11f00536b0051180050920282c000536b00533b00504f02811800536b005", + "0x502804d0282be00536b00532d00501302812100536b0053260052ac028", + "0x536700501f02802836b00524e00530f02802836b00502800702802855f", + "0x7400501f02802836b00507500501f02802836b00503c00525d02802836b", + "0x503102802836b00507700501f02802836b00501400523702802836b005", + "0x536b00533b00504f0282bb00536b0050880052ad0282bc00536b00508a", + "0x33b0310052bb00536b0052bb0052af0282bc00536b0052bc00509202833b", + "0x36b00534300504702802836b00502836902802836b0050280070282bb2bc", + "0x503c00525d02802836b00536700501f02802836b00524e00530f028028", + "0x1400523702802836b00507400501f02802836b00507500501f02802836b", + "0x300282ba00536b00507f00503102802836b00507700501f02802836b005", + "0x536b0052ba0050920282c000536b00505b00504f02812400536b005028", + "0x535e0282be00536b00534800501302812100536b0051240052ac02811f", + "0x36b0051251260072b102812500536b00512100513e02812600536b0052be", + "0x920282c000536b0052c000504f0282b900536b0051230052b0028123005", + "0x282b911f2c00310052b900536b0052b90052af02811f00536b00511f005", + "0x1f02802836b00524e00530f02802836b00502836902802836b005028007", + "0x2802836b00504e00501f02802836b00503c00525d02802836b005367005", + "0x2836b00501700506002802836b00501400523702802836b00501000501f", + "0x507100535e02812c00536b0050280300282b700536b005068005031028", + "0x13100536b0052b612b0072b10282b600536b00512c00513e02812b00536b", + "0x2b700509202805b00536b00505b00504f02813000536b0051310052b0028", + "0x280070281302b705b03100513000536b0051300052af0282b700536b005", + "0x36700501f02802836b00524e00530f02802836b00502836902802836b005", + "0x523702802836b00504e00501f02802836b00503c00525d02802836b005", + "0x3102802836b00501700506002802836b0051c800506002802836b005014", + "0x536b00506900535e0282b300536b0050280300282b500536b005042005", + "0x2b002813800536b0051362b20072b102813600536b0052b300513e0282b2", + "0x36b0052b500509202805b00536b00505b00504f02813700536b005138005", + "0x36b0050280070281372b505b03100513700536b0051370052af0282b5005", + "0x36b00536700501f02802836b00524e00530f02802836b005028369028028", + "0x501400523702802836b00501300506002802836b00503c00525d028028", + "0x6000503102802836b00501700506002802836b0051c800506002802836b", + "0x282b000536b00529800535e0282b100536b00502803002813500536b005", + "0x13f0052b002813f00536b0052af2b00072b10282af00536b0052b100513e", + "0x13500536b00513500509202805b00536b00505b00504f02813e00536b005", + "0x2802836b00502800702813e13505b03100513e00536b00513e0052af028", + "0x2802836b00536700501f02802836b00524e00530f02802836b005028369", + "0x2836b0051c800506002802836b00501300506002802836b00503c00525d", + "0x36b00525c00503102802836b00504d00506702802836b005017005060028", + "0x282ab00536b0052ac25d0072b10282ac00536b00505e00513e0282ad005", + "0x52ad00509202805b00536b00505b00504f02814f00536b0052ab0052b0", + "0x502800702814f2ad05b03100514f00536b00514f0052af0282ad00536b", + "0x536700501f02802836b00524e00530f02802836b00502836902802836b", + "0x1300506002802836b00504d00506702802836b00503c00525d02802836b", + "0x503102802836b00501700506002802836b0051c800506002802836b005", + "0x536b00505b00504f02814800536b00505c0052ad02814600536b005009", + "0x5b03100514800536b0051480052af02814600536b00514600509202805b", + "0x505000530f02802836b00525200530f02802836b005028007028148146", + "0x4d00506702802836b00503c00525d02802836b00536700501f02802836b", + "0x506002802836b0051c800506002802836b00501300506002802836b005", + "0x14b00536b00524f00504f02814a00536b00524900503102802836b005017", + "0x2836b00502800702802856000502804d02814d00536b00514a005092028", + "0x36b00503c00525d02802836b00536700501f02802836b005245005047028", + "0x51c800506002802836b00501300506002802836b00504d005067028028", + "0x4600503102802836b00500a00506002802836b00501700506002802836b", + "0x14d00536b0052a800509202814b00536b00500c00504f0282a800536b005", + "0x536b0052a600513e0282a600536b00502803002802836b005028369028", + "0x2af02815600536b0051570052b002815700536b0052aa23b0072b10282aa", + "0x506002802836b00502800702815614d14b03100515600536b005156005", + "0x6002802836b00504d00506702802836b00536700501f02802836b00500a", + "0x2802836b0051c800506002802836b0050c000501c02802836b005013005", + "0x36b00503600504f02815500536b00503300503102802836b005017005060", + "0x502800702802856100502804d02815300536b005155005092028154005", + "0x36700501f02802836b00500a00506002802836b00536c00504702802836b", + "0x501c02802836b00501300506002802836b00504d00506702802836b005", + "0x6002802836b00501700506002802836b0051c800506002802836b0050c0", + "0x536b00502800504f02815200536b00536300503102802836b00500f005", + "0x36b00502803002802836b00502836902815300536b005152005092028154", + "0x2816100536b00515035d0072b102815000536b00515100513e028151005", + "0x2a41531540310052a400536b0052a40052af0282a400536b0051610052b0", + "0x2836b00504d00506702802836b00500a00506002802836b005028007028", + "0x36b0051c800506002802836b00504f00506002802836b005013005060028", + "0x500500503102802836b00500f00506002802836b005017005060028028", + "0x13e0282a100536b00501b00535e0282a200536b0050280300282a300536b", + "0x529f0052b002829f00536b0052a02a10072b10282a000536b0052a2005", + "0x282a300536b0052a300509202802800536b00502800504f02829e00536b", + "0x281c800536b0050282ab02829e2a302803100529e00536b00529e0052af", + "0x1700536b0050282ab02804d00536b00502824902801300536b00502805f", + "0x2802836b00502836902802836b00502824c02836900536b00502814f028", + "0x1c03156201b04e36803136b00700700500714602802836b005031005321", + "0x36800503102836800536b00536800509202802836b005028007028366367", + "0x2000536b00501b00514a02801b00536b00501b00514802801f00536b005", + "0x36500536b00536500514d02801403001036436500b36b00502000514b028", + "0x509602836302d00736b0050230052a602802300536b0053650052a8028", + "0x2836b0050c00050960280840c000736b00500a0052a602802836b00502d", + "0x515702836136300736b0053630052aa02836300536b00536300531f028", + "0x36b00503200525d02802836b00535f00508e02803235f1aa03136b005361", + "0x15702836c08400736b0050840052aa02835d00536b0051aa005112028028", + "0x503c00525d02802836b00500c00508e02803c00c03303136b00536c005", + "0x2804e00536b00504e0130072bd02803600536b00503300511202802836b", + "0x101c800715502836400536b00536400515602801f00536b00501f005092", + "0x36b00501404d00724d02803000536b00503001700715502801000536b005", + "0x9602802836b00502800702802856302836b00703635d007113028014005", + "0x2802836b00500f00501f02802836b00501400501f02802836b005084005", + "0x2836b00536400515402802836b00509200501f02802836b00503000525d", + "0x36b00504f00501f02802836b00501000525d02802836b00500b005323028", + "0x501f00503102802836b00536300509602802836b005369005153028028", + "0x2800702802856400502804d02835e00536b00504000509202804000536b", + "0x35636300736b0053630052aa02835900536b00501f00503102802836b005", + "0x525d02802836b00521500508e02804621c21503136b005356005157028", + "0x8400736b0050840052aa02804800536b00521c00511202802836b005046", + "0x25d02802836b00504500508e02823923704503136b005047005157028047", + "0x536b00535900509202823b00536b00523700511202802836b005239005", + "0x501f02802836b00502800702802856502836b00723b048007113028359", + "0x1f02802836b00503000525d02802836b00500f00501f02802836b005014", + "0x2802836b00500b00532302802836b00536400515402802836b005092005", + "0x2836b00536900515302802836b00504f00501f02802836b00501000525d", + "0x36b00535900503102802836b00508400509602802836b005363005096028", + "0x4d02824500536b00535e00539802835e00536b00523f00509202823f005", + "0x15702824900536b00535900503102802836b005028007028028566005028", + "0x524d00508e02802836b00524c00508e02824e24d24c03136b005363005", + "0x15702825200536b00524f0050c702824f00536b00524e00515202802836b", + "0x500900508e02802836b00505000508e02805b00905003136b005084005", + "0x32c02805900536b0050580050c702805800536b00505b00515202802836b", + "0x524900509202805c00536b00505c00501b02805c00536b005059252007", + "0x2802836b00502800702825c00556702836b00705c00534802824900536b", + "0x1836900715002801800536b00536400515102825d00536b005249005031", + "0x2836b00525e00532302805e25e00736b00501800516102801800536b005", + "0x5e0052a402802836b00506000532302805f06000736b00500b005161028", + "0x60680692bd06704229829601436b00505d0052a302805d05e00736b005", + "0x2802836b00504200530f02802836b00529800525d02807507432507106f", + "0x2836b00506900501f02802836b0052bd00501f02802836b005067005237", + "0x36b00506f00530f02802836b00500600513f02802836b00506800501f028", + "0x507400521c02802836b00532500521c02802836b005071005237028028", + "0x52a402807700536b0052960051c802802836b00507500523702802836b", + "0x8134807f07907a04334b01436b00534c0052a302834c05f00736b00505f", + "0x2836b00507a00530f02802836b00504300525d02834234334434534607d", + "0x36b00534800501f02802836b00507f00501f02802836b005079005237028", + "0x534600530f02802836b00507d00513f02802836b00508100501f028028", + "0x34300521c02802836b00534400521c02802836b00534500523702802836b", + "0x32c02834100536b00534b0051c802802836b00534200523702802836b005", + "0x525d00509202833d00536b00533d00501b02833d00536b005341077007", + "0x2802836b00502800702808c00556802836b00733d00534802825d00536b", + "0x33b0052a302833b05e00736b00505e0052a402833c00536b00525d005031", + "0x8a00501f02833133233337708e08633633733808833933a08a01436b005", + "0x501f02802836b00508800523702802836b00533900530f02802836b005", + "0x13f02802836b00533600501f02802836b00533700501f02802836b005338", + "0x2802836b00537700523702802836b00508e00530f02802836b005086005", + "0x2836b00533100523702802836b00533200521c02802836b00533300521c", + "0x5f0052a402832f00536b0053300050c702833000536b00533a005152028", + "0x8532632932a32b08b32c32d01436b00532e0052a302832e05f00736b005", + "0x2802836b00508b00530f02802836b00532d00501f028323098324095093", + "0x2836b00532900501f02802836b00532a00501f02802836b00532b005237", + "0x36b00509300530f02802836b00508500513f02802836b00532600501f028", + "0x509800521c02802836b00532400521c02802836b005095005237028028", + "0x50c702809600536b00532c00515202802836b00532300523702802836b", + "0x36b00532100501b02832100536b00532232f00732c02832200536b005096", + "0x31f00556902836b00732100534802833c00536b00533c005092028321005", + "0x36b00505e0052a402831e00536b00533c00503102802836b005028007028", + "0x31131331431631731831931a31b31c01436b00531d0052a302831d05e007", + "0x523702802836b00531b00525d02802836b00531c00501f0280b03100a9", + "0x1f02802836b00531700501f02802836b00531800501f02802836b005319", + "0x2802836b00531300530f02802836b00531400513f02802836b005316005", + "0x2836b00531000521c02802836b0050a900521c02802836b005311005237", + "0x505f0052a40280ac00536b00531a0052f702802836b0050b0005237028", + "0x3063073083090b930b0b60b430d01436b00530f0052a302830f05f00736b", + "0x23702802836b0050b400525d02802836b00530d00501f0283033040bf305", + "0x2802836b00530900501f02802836b0050b900501f02802836b00530b005", + "0x2836b00530600530f02802836b00530700513f02802836b00530800501f", + "0x36b00530400521c02802836b0050bf00521c02802836b005305005237028", + "0x31e00509202830200536b0050b60052f702802836b005303005237028028", + "0x2836b00502800702802856a02836b0073020ac0072a202831e00536b005", + "0x36b00509200501f02802836b00503000525d02802836b00500f00501f028", + "0x501000525d02802836b00505e00532302802836b00505f005323028028", + "0x31e00503102802836b00501400501f02802836b00504f00501f02802836b", + "0x702802856b00502804d02839300536b00505100509202805100536b005", + "0x5e00736b00505e0052a402839400536b00531e00503102802836b005028", + "0x2fb39830c3973010cf0cb0c90c60c73960dc01436b0053950052a3028395", + "0x50c700530f02802836b00539600525d02802836b0050dc00501f0280d4", + "0xcf00501f02802836b0050cb00501f02802836b0050c900501f02802836b", + "0x523702802836b00539700530f02802836b00530100513f02802836b005", + "0x23702802836b0052fb00521c02802836b00539800521c02802836b00530c", + "0x736b0052fa0052c90282fa00536b0050c60052a102802836b0050d4005", + "0x2a40282f800536b00539900532502839900536b0050d500500a0280d52fa", + "0x2ef0d22ec2ee0da2f101436b0052f70052a30282f705f00736b00505f005", + "0x36b0050da00525d02802836b0052f100501f0282f50df2e72e82e92f60db", + "0x52ef00501f02802836b0050d200501f02802836b0052ee00530f028028", + "0x2e900530f02802836b0052f600513f02802836b0050db00501f02802836b", + "0x521c02802836b0052e700521c02802836b0052e800523702802836b005", + "0x280e100536b0052ec0052a102802836b0052f500523702802836b0050df", + "0x2f20053250282f200536b0052f300500a0282f30e100736b0050e10052c9", + "0xe300536b0050e30050330282f800536b0052f80050330280e300536b005", + "0x702802856c02836b0070e32f80072a002839400536b005394005092028", + "0x32302802836b00509200501f02802836b00503000525d02802836b005028", + "0x2802836b00501000525d02802836b00505e00532302802836b00505f005", + "0x2836b00500f00501f02802836b00501400501f02802836b00504f00501f", + "0x36b00539400503102802836b0052fa00523702802836b0050e1005237028", + "0x4d0282de00536b0052f40050920282e000536b00502800504f0282f4005", + "0x4f0282dd00536b00539400503102802836b00502800702802856d005028", + "0x36b0052fa00505b0282dd00536b0052dd00509202802800536b005028005", + "0x3136b0050e12fa2dd02800a29f0280e100536b0050e100505b0282fa005", + "0x2836b0050280070280ea00556e2d700536b0072da00529e0282da2db1a6", + "0x2370282d32d42d603136b0052d700529d0280ee00536b0052db005031028", + "0xee00536b0050ee00509202802836b0052d400523702802836b0052d6005", + "0x504702802836b0050280070282d100556f2d200536b0072d30052e0028", + "0x25d02802836b00505e00532302802836b00505f00532302802836b0052d2", + "0x2802836b00501400501f02802836b00504f00501f02802836b005010005", + "0x2836b00509200501f02802836b00503000525d02802836b00500f00501f", + "0x2d00050920282e000536b0051a600504f0282d000536b0050ee005031028", + "0x2cc00536b0052de0053980282cf00536b0052e000530c0282de00536b005", + "0x2802836b0052d100504702802836b00502800702802857000502804d028", + "0xf80052a30280f805e00736b00505e0052a40280f600536b0050ee005031", + "0x2cb00501f0281011031041022c72c80f90fb0fc0fa2c92ca2cb01436b005", + "0x523702802836b0052c900530f02802836b0052ca00525d02802836b005", + "0x13f02802836b0050f900501f02802836b0050fb00501f02802836b0050fa", + "0x2802836b00510200523702802836b0052c700530f02802836b0052c8005", + "0x2836b00510100523702802836b00510300521c02802836b00510400521c", + "0x52a30282c505f00736b00505f0052a40282c600536b0050fc0051c8028", + "0x501f02811911d2c11110251131122c22c310c10910b10a01436b0052c5", + "0x23702802836b00510900530f02802836b00510b00525d02802836b00510a", + "0x2802836b00511200501f02802836b0052c200501f02802836b00510c005", + "0x2836b00511100523702802836b00502500530f02802836b00511300513f", + "0x36b00511900523702802836b00511d00521c02802836b0052c100521c028", + "0x1b0282c000536b0051182c600732c02811800536b0052c30051c8028028", + "0x36b0072c00053480280f600536b0050f60050920282c000536b0052c0005", + "0x2a402812100536b0050f600503102802836b00502800702811f005571028", + "0x1251261242ba2bb2bc01436b0052be0052a30282be05e00736b00505e005", + "0x36b0052bb00525d02802836b0052bc00501f0281312b612b12c2b72b9123", + "0x512600501f02802836b00512400523702802836b0052ba00530f028028", + "0x2b700530f02802836b0052b900513f02802836b00512300501f02802836b", + "0x521c02802836b00512b00521c02802836b00512c00523702802836b005", + "0x2813000536b0051250051c802802836b00513100523702802836b0052b6", + "0x1371381362b22b301436b0052b50052a30282b505f00736b00505f0052a4", + "0x52b200525d02802836b0052b300501f0282ac2ad13e13f2af2b02b1135", + "0x13700501f02802836b00513800523702802836b00513600530f02802836b", + "0x530f02802836b0052b000513f02802836b0052b100501f02802836b005", + "0x21c02802836b00513e00521c02802836b00513f00523702802836b0052af", + "0x2ab00536b0051350051c802802836b0052ac00523702802836b0052ad005", + "0x509202814f00536b00514f00501b02814f00536b0052ab13000732c028", + "0x36b00502800702814600557202836b00714f00534802812100536b005121", + "0x2a302814a05e00736b00505e0052a402814800536b005121005031028028", + "0x1f0281501511521531541551561572aa2a62a814d14b01436b00514a005", + "0x2802836b0052a800530f02802836b00514d00525d02802836b00514b005", + "0x2836b00515700501f02802836b0052aa00501f02802836b0052a6005237", + "0x36b00515300523702802836b00515400530f02802836b00515500513f028", + "0x515000523702802836b00515100521c02802836b00515200521c028028", + "0x282a405f00736b00505f0052a402816100536b0051560051c802802836b", + "0x2829916e29a16c16a29c29d29e29f2a02a12a22a301436b0052a40052a3", + "0x2836b0052a100530f02802836b0052a200525d02802836b0052a300501f", + "0x36b00529e00501f02802836b00529f00501f02802836b0052a0005237028", + "0x516c00523702802836b00516a00530f02802836b00529c00513f028028", + "0x29900523702802836b00516e00521c02802836b00529a00521c02802836b", + "0x17100536b00516f16100732c02816f00536b00529d0051c802802836b005", + "0x17100534802814800536b00514800509202817100536b00517100501b028", + "0x17400536b00514800503102802836b00502800702817200557302836b007", + "0x29229329414301436b0052970052a302829705e00736b00505e0052a4028", + "0x29400525d02802836b00514300501f02828728828928a29517902428e574", + "0x501f02802836b00529200523702802836b00529300530f02802836b005", + "0x30f02802836b00502400501f02802836b00528e00501f02802836b005574", + "0x2802836b00528900521c02802836b00528a00523702802836b005295005", + "0x536b00517900529c02802836b00528700523702802836b00528800521c", + "0x29a02818100536b00517f00516c02817f28600736b00528600516a028286", + "0x51840052a302818405f00736b00505f0052a402818200536b005181005", + "0x528500501f02828b28118a28019219118f19028418918718628501436b", + "0x18900523702802836b00518700530f02802836b00518600525d02802836b", + "0x501f02802836b00519000501f02802836b00528400501f02802836b005", + "0x21c02802836b00528000523702802836b00519200530f02802836b00518f", + "0x2802836b00528b00523702802836b00528100521c02802836b00518a005", + "0x19700516c02819727d00736b00527d00516a02827d00536b00519100529c", + "0x18200536b00518200503302827c00536b00519900529a02819900536b005", + "0x1820072a002817400536b00517400509202827c00536b00527c005033028", + "0x2802836b00505e00532302802836b00502800702802857502836b00727c", + "0x2836b00501400501f02802836b00504f00501f02802836b00501000525d", + "0x36b00509200501f02802836b00503000525d02802836b00500f00501f028", + "0x528600513f02802836b00527d00513f02802836b00505f005323028028", + "0x9202819d00536b0051a600504f02819b00536b00517400503102802836b", + "0x3102802836b00502800702802857600502804d02827b00536b00519b005", + "0x36b00527a0050920281a600536b0051a600504f02827a00536b005174005", + "0x29902827d00536b00527d00516e02828600536b00528600516e02827a005", + "0x57727400536b00727500516f02827527627803136b00527d28627a1a600a", + "0x27400517102827100536b00527600503102802836b005028007028273005", + "0x2836b00526f00513f02802836b00527000513f02826a26f27003136b005", + "0x2826b00557826d00536b00726a0052e002827100536b005271005092028", + "0x2802836b00504f00501f02802836b00526d00504702802836b005028007", + "0x2836b00503000525d02802836b00500f00501f02802836b00501400501f", + "0x36b00505e00532302802836b00505f00532302802836b00509200501f028", + "0x27800504f02826700536b00527100503102802836b00501000525d028028", + "0x26600536b00519d00530c02827b00536b00526700509202819d00536b005", + "0x2836b00502800702802857900502804d02826300536b00527b005398028", + "0x505e0052a402826000536b00527100503102802836b00526b005047028", + "0x1b22542562571ae25825925a25b01436b00525f0052a302825f05e00736b", + "0x30f02802836b00525a00525d02802836b00525b00501f0282502512531b4", + "0x2802836b0051ae00501f02802836b00525800523702802836b005259005", + "0x2836b00525400513f02802836b00525600501f02802836b00525700501f", + "0x36b00525100521c02802836b00525300521c02802836b0051b4005237028", + "0x5f0052a402824a00536b0051b20052f702802836b005250005237028028", + "0x18b23a1c11bf23c1bd24224401436b0052460052a302824605f00736b005", + "0x2802836b00524200525d02802836b00524400501f0282311c623523d238", + "0x2836b0051bf00501f02802836b00523c00523702802836b0051bd00530f", + "0x36b00518b00513f02802836b00523a00501f02802836b0051c100501f028", + "0x51c600521c02802836b00523500521c02802836b00523d005237028028", + "0x509202823000536b0052380052f702802836b00523100523702802836b", + "0x36b00502800702802857a02836b00723024a0072a202826000536b005260", + "0x503000525d02802836b00500f00501f02802836b00501400501f028028", + "0x5e00532302802836b00505f00532302802836b00509200501f02802836b", + "0x503102802836b00504f00501f02802836b00501000525d02802836b005", + "0x536b00522e00509202822d00536b00527800504f02822e00536b005260", + "0x536b00526000503102802836b00502800702802857b00502804d0281cb", + "0x22122222701436b0052260052a302822605e00736b00505e0052a4028229", + "0x525d02802836b00522700501f0281d81d621821a1d321b22321d1d1220", + "0x1f02802836b00522000523702802836b00522100530f02802836b005222", + "0x2802836b00522300501f02802836b00521d00501f02802836b0051d1005", + "0x2836b00521800521c02802836b0051d300530f02802836b00521b00513f", + "0x36b00521a0052a102802836b0051d800523702802836b0051d600521c028", + "0x2821300536b0051da00500a0281da21600736b0052160052c9028216005", + "0x20e0052a302820e05f00736b00505f0052a402821900536b005213005325", + "0x20d00501f0281f31fa1fd1ff2012031e120820920a20b20c20d01436b005", + "0x523702802836b00520b00530f02802836b00520c00525d02802836b005", + "0x1f02802836b00520800501f02802836b00520900501f02802836b00520a", + "0x2802836b00520100530f02802836b00520300513f02802836b0051e1005", + "0x2836b0051f300523702802836b0051fa00521c02802836b0051fd00521c", + "0x500a0280001ee00736b0051ee0052c90281ee00536b0051ff0052a1028", + "0x536b00521900503302857d00536b00557c00532502857c00536b005000", + "0x72a002822900536b00522900509202857d00536b00557d005033028219", + "0x2836b00500f00501f02802836b00502800702802857e02836b00757d219", + "0x36b00505f00532302802836b00509200501f02802836b00503000525d028", + "0x504f00501f02802836b00501000525d02802836b00505e005323028028", + "0x21600523702802836b0051ee00523702802836b00501400501f02802836b", + "0x2858000536b00527800504f02857f00536b00522900503102802836b005", + "0x2802836b00502800702802858200502804d02858100536b00557f005092", + "0x558300509202827800536b00527800504f02858300536b005229005031", + "0x281ee00536b0051ee00505b02821600536b00521600505b02858300536b", + "0x58700536b00758600529e02858658558403136b0051ee21658327800a29f", + "0x529d02837500536b00558500503102802836b005028007028589005588", + "0x36b00558b00523702802836b00558a00523702858c58b58a03136b005587", + "0x58f00558e58d00536b00758c0052e002837500536b005375005092028028", + "0x2836b00509200501f02802836b00558d00504702802836b005028007028", + "0x36b00501000525d02802836b00505e00532302802836b00505f005323028", + "0x500f00501f02802836b00501400501f02802836b00504f00501f028028", + "0x504f02859000536b00537500503102802836b00503000525d02802836b", + "0x536b00558000530c02858100536b00559000509202858000536b005584", + "0x36b00502800702802859300502804d02859200536b005581005398028591", + "0x5e0052a402859400536b00537500503102802836b00558f005047028028", + "0x59c59b59a59959859759637401436b0055950052a302859505e00736b005", + "0x2802836b00559600525d02802836b00537400501f0285a15a059f59e59d", + "0x2836b00559900501f02802836b00559800523702802836b00559700530f", + "0x36b00559c00513f02802836b00559b00501f02802836b00559a00501f028", + "0x55a000521c02802836b00559e00523702802836b00559d00530f028028", + "0x52a40285a200536b00559f00517202802836b0055a100523702802836b", + "0x5a95a85a75a63735a55a401436b0055a30052a30285a305f00736b00505f", + "0x2836b0055a500525d02802836b0055a400501f0285ae3725ad5ac5ab5aa", + "0x36b0055a700501f02802836b0055a600523702802836b00537300530f028", + "0x55aa00513f02802836b0055a900501f02802836b0055a800501f028028", + "0x37200521c02802836b0055ac00523702802836b0055ab00530f02802836b", + "0x920285af00536b0055ad00517202802836b0055ae00523702802836b005", + "0x50280070280285b002836b0075af5a20072a002859400536b005594005", + "0x1000525d02802836b00505e00532302802836b00505f00532302802836b", + "0x501f02802836b00501400501f02802836b00504f00501f02802836b005", + "0x3102802836b00509200501f02802836b00503000525d02802836b00500f", + "0x36b0055b10050920285b200536b00558400504f0285b100536b005594005", + "0x36b00559400503102802836b0050280070280285b400502804d0285b3005", + "0x5b85b701436b0055b60052a30285b605e00736b00505e0052a40285b5005", + "0x25d02802836b0055b700501f0285c13765c05bf5be5bd5bc5bb5ba5b9371", + "0x2802836b0055b900523702802836b00537100530f02802836b0055b8005", + "0x2836b0055bc00501f02802836b0055bb00501f02802836b0055ba00501f", + "0x36b0055bf00523702802836b0055be00530f02802836b0055bd00513f028", + "0x537600517202802836b0055c100523702802836b0055c000521c028028", + "0x5c401436b0055c30052a30285c305f00736b00505f0052a40285c200536b", + "0x2802836b0055c400501f0285cf5ce5cd5cc3705cb5ca5c95c85c75c65c5", + "0x2836b0055c700523702802836b0055c600530f02802836b0055c500525d", + "0x36b0055ca00501f02802836b0055c900501f02802836b0055c800501f028", + "0x55cc00523702802836b00537000530f02802836b0055cb00513f028028", + "0x5ce00517202802836b0055cf00523702802836b0055cd00521c02802836b", + "0x2836b0075d05c20072a00285b500536b0055b50050920285d000536b005", + "0x501000525d02802836b00505e00532302802836b0050280070280285d1", + "0xf00501f02802836b00501400501f02802836b00504f00501f02802836b", + "0x532302802836b00509200501f02802836b00503000525d02802836b005", + "0x5d300536b00558400504f0285d200536b0055b500503102802836b00505f", + "0x2836b0050280070280285d500502804d0285d400536b0055d2005092028", + "0x5db5da5d95d85d701436b00505e0052a30285d600536b0055b5005031028", + "0x55d800525d02802836b0055d700501f0285e25e15e05df5de36f5dd5dc", + "0x5db00501f02802836b0055da00523702802836b0055d900530f02802836b", + "0x513f02802836b0055dd00501f02802836b0055dc00501f02802836b005", + "0x21c02802836b0055df00523702802836b0055de00530f02802836b00536f", + "0x5e300536b0055e20052a102802836b0055e100521c02802836b0055e0005", + "0x53250285e400536b00536e00500a02836e5e300736b0055e30052c9028", + "0x5ec3785eb5ea5e95e85e75e601436b00505f0052a30285e500536b0055e4", + "0x2802836b0055e700525d02802836b0055e600501f0285f15f05ef5ee5ed", + "0x2836b0055ea00501f02802836b0055e900523702802836b0055e800530f", + "0x36b0055ec00513f02802836b00537800501f02802836b0055eb00501f028", + "0x55ef00521c02802836b0055ee00523702802836b0055ed00530f028028", + "0x52c90285f200536b0055f10052a102802836b0055f000521c02802836b", + "0x36b0055f40053250285f400536b0055f300500a0285f35f200736b0055f2", + "0x920285f500536b0055f50050330285e500536b0055e50050330285f5005", + "0x50280070280285f602836b0075f55e50072a00285d600536b0055d6005", + "0x1400501f02802836b00504f00501f02802836b00501000525d02802836b", + "0x501f02802836b00503000525d02802836b00500f00501f02802836b005", + "0x3102802836b0055e300523702802836b0055f200523702802836b005092", + "0x36b0055f700509202836d00536b00558400504f0285f700536b0055d6005", + "0x36b0055d600503102802836b0050280070280285f900502804d0285f8005", + "0x5b0285fa00536b0055fa00509202858400536b00558400504f0285fa005", + "0x5e35fa58400a29f0285f200536b0055f200505b0285e300536b0055e3005", + "0x70286000055ff5fe00536b0075fd00529e0285fd5fc5fb03136b0055f2", + "0x60203136b0055fe00529d02860100536b0055fc00503102802836b005028", + "0x60100509202802836b00560300523702802836b005602005237028604603", + "0x36b00502800702860700560660500536b0076040052e002860100536b005", + "0x500f00501f02802836b00501400501f02802836b005605005047028028", + "0x1000525d02802836b00509200501f02802836b00503000525d02802836b", + "0x4f02860800536b00560100503102802836b00504f00501f02802836b005", + "0x285f900502804d0285f800536b00560800509202836d00536b0055fb005", + "0x536b00560100503102802836b00560700504702802836b005028007028", + "0x1b02860b00536b00504f60a00732c02860a00536b0050100050c7028609", + "0x36b00760b00534802860900536b00560900509202860b00536b00560b005", + "0xc702860e00536b00560900503102802836b00502800702860d00560c028", + "0x561000501b02861000536b00509260f00732c02860f00536b005030005", + "0x561102836b00761000534802860e00536b00560e00509202861000536b", + "0xf01400732c02861300536b00560e00503102802836b005028007028612", + "0x61300536b00561300509202861400536b00561400501b02861400536b005", + "0x61300503102802836b00502800702861600561502836b007614005348028", + "0x2861900536b00561800517402861800536b00502803002861700536b005", + "0x56170050920285fb00536b0055fb00504f02861a00536b005619005297", + "0x561a00536b00561a00514302804e00536b00504e0050c002861700536b", + "0x3102802836b00561600534602802836b00502800702861a04e6175fb00a", + "0x61d00536b00502829402861c00536b00502802002861b00536b005613005", + "0x2802302861e00536b00561d61c00736402861d00536b00561d00501b028", + "0x536b00562000529302862000536b00561e61f00702d02861f00536b005", + "0x50c002861b00536b00561b0050920285fb00536b0055fb00504f028621", + "0x2862104e61b5fb00a00562100536b00562100514302804e00536b00504e", + "0x2802836b00501400501f02802836b00561200534602802836b005028007", + "0x536b00502802002862200536b00560e00503102802836b00500f00501f", + "0x62300736402862400536b00562400501b02862400536b005028292028623", + "0x536b00562562600702d02862600536b00502802302862500536b005624", + "0x50920285fb00536b0055fb00504f02837a00536b005627005293028627", + "0x536b00537a00514302804e00536b00504e0050c002862200536b005622", + "0x2836b00560d00534602802836b00502800702837a04e6225fb00a00537a", + "0x36b00503000525d02802836b00500f00501f02802836b00501400501f028", + "0x502802002862800536b00560900503102802836b00509200501f028028", + "0x36402862a00536b00562a00501b02862a00536b00502857402862900536b", + "0x562b62c00702d02862c00536b00502802302862b00536b00562a629007", + "0x285fb00536b0055fb00504f02837b00536b00562d00529302862d00536b", + "0x537b00514302804e00536b00504e0050c002862800536b005628005092", + "0x501400501f02802836b00502800702837b04e6285fb00a00537b00536b", + "0x9200501f02802836b00503000525d02802836b00500f00501f02802836b", + "0x503102802836b00504f00501f02802836b00501000525d02802836b005", + "0x536b00562e00509202862f00536b0055fb00504f02862e00536b0055fc", + "0x36b00502800702802863200502804d02863100536b0056000050df028630", + "0x505e00532302802836b00505f00532302802836b00509200501f028028", + "0x1400501f02802836b00504f00501f02802836b00501000525d02802836b", + "0x503102802836b00503000525d02802836b00500f00501f02802836b005", + "0x536b00563300509202862f00536b00558400504f02863300536b005585", + "0x36b00502800702802863200502804d02863100536b0055890050df028630", + "0x500f00501f02802836b00501400501f02802836b00504f00501f028028", + "0x5f00532302802836b00509200501f02802836b00503000525d02802836b", + "0x503102802836b00501000525d02802836b00505e00532302802836b005", + "0x536b00563400509202862f00536b00527800504f02863400536b005276", + "0x36b00502800702802863200502804d02863100536b0052730050df028630", + "0x505e00532302802836b00505f00532302802836b005172005346028028", + "0x1400501f02802836b00504f00501f02802836b00501000525d02802836b", + "0x501f02802836b00503000525d02802836b00500f00501f02802836b005", + "0x63600536b0051a600504f02863500536b00514800503102802836b005092", + "0x2836b00502800702802863800502804d02863700536b005635005092028", + "0x36b00505e00532302802836b00505f00532302802836b005146005346028", + "0x501400501f02802836b00504f00501f02802836b00501000525d028028", + "0x9200501f02802836b00503000525d02802836b00500f00501f02802836b", + "0x2863a00536b0051a600504f02863900536b00512100503102802836b005", + "0x2802836b00502800702802863c00502804d02863b00536b005639005092", + "0x2836b00505e00532302802836b00505f00532302802836b00511f005346", + "0x36b00501400501f02802836b00504f00501f02802836b00501000525d028", + "0x509200501f02802836b00503000525d02802836b00500f00501f028028", + "0x9202863e00536b0051a600504f02863d00536b0050f600503102802836b", + "0x32302802836b00502800702802864000502804d02863f00536b00563d005", + "0x2802836b00501000525d02802836b00505e00532302802836b00505f005", + "0x2836b00500f00501f02802836b00501400501f02802836b00504f00501f", + "0x36b0052db00503102802836b00509200501f02802836b00503000525d028", + "0xdf02863000536b00564100509202862f00536b0051a600504f028641005", + "0x36b00562f00504f02864200536b00563100529302863100536b0050ea005", + "0x14302804e00536b00504e0050c002863000536b00563000509202862f005", + "0x34602802836b00502800702864204e63062f00a00564200536b005642005", + "0x2802836b00500f00501f02802836b00501400501f02802836b00531f005", + "0x2836b00505f00532302802836b00509200501f02802836b00503000525d", + "0x36b00504f00501f02802836b00501000525d02802836b00505e005323028", + "0x2804d02864400536b00564300509202864300536b00533c005031028028", + "0x1400501f02802836b00508c00534602802836b005028007028028645005", + "0x501f02802836b00503000525d02802836b00500f00501f02802836b005", + "0x25d02802836b00505e00532302802836b00505f00532302802836b005092", + "0x64600536b00525d00503102802836b00504f00501f02802836b005010005", + "0x2800504f02839300536b00564400539802864400536b005646005092028", + "0x63e00536b0052cf00530c0282cc00536b0053930050920282cf00536b005", + "0x63f00539802863a00536b00563e00530c02863f00536b0052cc005398028", + "0x63700536b00563b00539802863600536b00563a00530c02863b00536b005", + "0x26600530c02826300536b00563700539802826600536b00563600530c028", + "0x59100536b00522d00530c0281cb00536b00526300539802822d00536b005", + "0x5920053980285b200536b00559100530c02859200536b0051cb005398028", + "0x5d400536b0055b30053980285d300536b0055b200530c0285b300536b005", + "0x50280200285f800536b0055d400539802836d00536b0055d300530c028", + "0x36402864800536b00564800501b02864800536b00502828e02864700536b", + "0x564964a00702d02864a00536b00502802302864900536b005648647007", + "0x2836d00536b00536d00504f02864c00536b00564b00529302864b00536b", + "0x564c00514302804e00536b00504e0050c00285f800536b0055f8005092", + "0x525c00534602802836b00502800702864c04e5f836d00a00564c00536b", + "0x3000525d02802836b00500f00501f02802836b00501400501f02802836b", + "0x532302802836b00536400515402802836b00509200501f02802836b005", + "0x15302802836b00504f00501f02802836b00501000525d02802836b00500b", + "0x536b00564d00509202864d00536b00524900503102802836b005369005", + "0x564e00501b02864e00536b00502802402837f00536b005028020028245", + "0x2865000536b00502802302864f00536b00564e37f00736402864e00536b", + "0x2800504f02865200536b00565100529302865100536b00564f65000702d", + "0x4e00536b00504e0050c002824500536b00524500509202802800536b005", + "0x2836b00502800702865204e24502800a00565200536b005652005143028", + "0x36b00500a00509602802836b00501700517902802836b00504d005060028", + "0x504f00501f02802836b00500f00501f02802836b00500b005323028028", + "0x1c800517902802836b00536900515302802836b00509200501f02802836b", + "0x3102801c00536b00501c00509202802836b00501300504202802836b005", + "0x36b00536638000702d02838000536b00502802302865300536b00501c005", + "0x9202802800536b00502800504f02865500536b005654005293028654005", + "0x36b00565500514302836700536b0053670050c002865300536b005653005", + "0x36b00502802002802836b00500700532102865536765302800a005655005", + "0x281c800536b00501000532d02801003100736b00503100529502800f005", + "0x736402801300b00736b00500b0050dc02804e00536b0051c800f007364", + "0x536b00504d00501b02804d00536b0050280ea02801400536b00501304e", + "0x50dc02801700536b00502823f02803000536b00504d01400736402804d", + "0x536900501b02836900536b0050170180072de02801804f00736b00504f", + "0x2801b00536b00502823f02836800536b00536903000736402836900536b", + "0x501b02836700536b00501b01c0072de02801c09200736b0050920050dc", + "0x36b00536600503602836600536b00536736800736402836700536b005367", + "0x29502836500536b00502000535e02802836b00501f00504002802001f007", + "0x502800b31902836500536b00536500505b02836403100736b005031005", + "0x2836b0050280070283610840c003165636302d02303136b00736500a364", + "0x502300503102802300536b00502300509202802836b005363005237028", + "0x2803200536b00504f35f00736402835f00536b0050280200281aa00536b", + "0x504002803336c00736b00535d00503602835d00536b005092032007364", + "0x1aa00536b0051aa00509202800c00536b00503300535e02802836b00536c", + "0x3c03136b00700c00b03102d1aa00b31902800c00536b00500c00505b028", + "0x536b00503c00509202802836b00502800702835635935e031657040036", + "0x535602821c00536b00504000535902821500536b00503c00503102803c", + "0x536b0050360050c002821500536b00521500509202804600536b00521c", + "0x2836b00502800702804603621503100504600536b005046005084028036", + "0x502802302804800536b00535e00503102835e00536b00535e005092028", + "0x23700536b00504500536302804500536b00535604700702d02804700536b", + "0x23700508402835900536b0053590050c002804800536b005048005092028", + "0x504f00501f02802836b00502800702823735904803100523700536b005", + "0x9200501f02802836b00503100534302802836b00500b00501f02802836b", + "0x2823900536b0050c00050310280c000536b0050c000509202802836b005", + "0x523f00536302823f00536b00536123b00702d02823b00536b005028023", + "0x2808400536b0050840050c002823900536b00523900509202824500536b", + "0x28a02802836b00502836902824508423903100524500536b005245005084", + "0xa00536b00500a00504f02809204f00b00a00a36b00503100500702800a", + "0x9200528902800b00536b00500b00509202804f00536b00504f005314028", + "0x2824c02800a00536b00502828802809200b04f00a00a00509200536b005", + "0x65804f00b00736b00700502800700502802836b00502836902802836b005", + "0x2828702801000536b00504f00503102802836b00502800702800f092007", + "0x536b0051c800530d02804e00700736b0050070052860281c800536b005", + "0x1401300736b0071c804e00b03117f02801000536b0050100050920281c8", + "0x4f02801700536b00501000503102802836b00502800702803004d007659", + "0x36b00501400530d02801700536b00501700509202801300536b005013005", + "0x36b0073680050b602836836901803136b0050140170130310b4028014005", + "0x2801c00536b00536900503102802836b00502800702801b00565a031005", + "0x503100a00718202836700536b00536700530d02836700536b005028181", + "0x736b00736700701803117f02801c00536b00501c00509202803100536b", + "0x36400536b00501c00503102802836b00502800702836502000765b01f366", + "0x1f00530d02836400536b00536400509202836600536b00536600504f028", + "0x3630050b602836302d02303136b00501f3643660310b402801f00536b005", + "0x536b00502d00503102802836b00502800702808400565c0c000536b007", + "0x1aa00530d02835f00536b0050c000530b0281aa00536b005028181028361", + "0x36c02300728502836c35d03203136b00535f1aa0071840281aa00536b005", + "0x36100536b00536100509202800c00536b0050320050b902803300536b005", + "0x702803c00565d02836b00700c00534802803300536b00503300504f028", + "0x4000536b00503100530b02803600536b00536100503102802836b005028", + "0x65e35935e00736b00735d04003303118602803600536b005036005092028", + "0x518702821c00536b00503600503102802836b005028007028215356007", + "0x536b00535e00504f02804800536b00504600518902804600536b005359", + "0x35e03100504800536b00504800528402821c00536b00521c00509202835e", + "0x503600503102802836b00521500530f02802836b00502800702804821c", + "0x501b02823700536b00502819002804500536b00502802002804700536b", + "0x536b00502802302823900536b00523704500736402823700536b005237", + "0x4f02824500536b00523f00518f02823f00536b00523923b00702d02823b", + "0x36b00524500528402804700536b00504700509202835600536b005356005", + "0x2836b00503c00534602802836b005028007028245047356031005245005", + "0x36b00536100503102802836b00535d00530f02802836b005031005191028", + "0x24d00501b02824d00536b00502819202824c00536b005028020028249005", + "0x24f00536b00502802302824e00536b00524d24c00736402824d00536b005", + "0x504f02805000536b00525200518f02825200536b00524e24f00702d028", + "0x536b00505000528402824900536b00524900509202803300536b005033", + "0x2802836b00503100519102802836b005028007028050249033031005050", + "0x502300504f02805b00536b00508400518f02800900536b00502d005031", + "0x505b00536b00505b00528402800900536b00500900509202802300536b", + "0x519102802836b00536500530f02802836b00502800702805b009023031", + "0x2805900536b00502802002805800536b00501c00503102802836b005031", + "0x505c05900736402805c00536b00505c00501b02805c00536b005028280", + "0x2825e00536b00525c25d00702d02825d00536b00502802302825c00536b", + "0x505800509202802000536b00502000504f02805e00536b00525e00518f", + "0x502800702805e05802003100505e00536b00505e00528402805800536b", + "0x36900503102802836b00500a00518a02802836b00500700530f02802836b", + "0x1800536b00501800504f02805f00536b00501b00518f02806000536b005", + "0x6001803100505f00536b00505f00528402806000536b005060005092028", + "0x36b00500a00518a02802836b00503000530f02802836b00502800702805f", + "0x502802002805d00536b00501000503102802836b00500700530f028028", + "0x36402829800536b00529800501b02829800536b00502828002829600536b", + "0x504206700702d02806700536b00502802302804200536b005298296007", + "0x2804d00536b00504d00504f02806900536b0052bd00518f0282bd00536b", + "0x6905d04d03100506900536b00506900528402805d00536b00505d005092", + "0x2836b00500700530f02802836b00500a00518a02802836b005028007028", + "0x36b00502804602800600536b00502802002806800536b00500f005031028", + "0x2807100536b00506f00600736402806f00536b00506f00501b02806f005", + "0x507400518f02807400536b00507132500702d02832500536b005028023", + "0x2806800536b00506800509202809200536b00509200504f02807500536b", + "0x28102802836b00502836902807506809203100507500536b005075005284", + "0x2804f00536b00502828b02800b00536b00502828702800a00536b005028", + "0xa00719902809200536b00509200519702809200536b00504f00b00727d", + "0x1c800736b00500f00519b02801000536b00502827c02800f00536b005092", + "0x2800504f02801300536b00504e00527b02802836b0051c800519d02804e", + "0x1300536b00501300527a02800500536b00500500509202802800536b005", + "0x4d01403136b00501001300502800a27602801000536b005010005278028", + "0x3102802836b00502800702801800565f01700536b007030005275028030", + "0x36800527302801c01b36803136b00501700527402836900536b00504d005", + "0x2803202836700536b00502837702802836b00501c00504702802836b005", + "0x36900536b00536900509202801400536b00501400504f02836600536b005", + "0x36600503302836700536b00536700533202801b00536b00501b005278028", + "0x27002836502001f03136b00536636701b36901400b27102836600536b005", + "0x502000503102802836b00502800702802300566036400536b007365005", + "0x2802836b0050c00050470280c036300736b00536400526f02802d00536b", + "0x536100526b02802836b00508400526d02836108400736b00536300526a", + "0x3136b0071aa00702d03126702802d00536b00502d0050920281aa00536b", + "0x36b00535f00509202802836b00502800702800c03336c03166135d03235f", + "0x2804003600736b00535d00526602803c00536b00535f00503102835f005", + "0x36b0050320050c002803600536b00503600530d02835e00536b005028263", + "0x2a202804000536b00504000530d02803c00536b00503c005092028032005", + "0x36b00504000530f02802836b00502800702802866202836b00735e036007", + "0x502802002835900536b00503c00503102802836b005031005321028028", + "0x36402821500536b00521500501b02821500536b00502826002835600536b", + "0x521c04600702d02804600536b00502802302821c00536b005215356007", + "0x2801f00536b00501f00504f02804700536b00504800510202804800536b", + "0x50470052c802803200536b0050320050c002835900536b005359005092", + "0x503c00503102802836b00502800702804703235901f00a00504700536b", + "0x2a202804500536b00504500509202823700536b00502825f02804500536b", + "0x36b00503100532102802836b00502800702802866302836b007237040007", + "0x502826002823b00536b00502802002823900536b005045005031028028", + "0x24500536b00523f23b00736402823f00536b00523f00501b02823f00536b", + "0x24c00510202824c00536b00524524900702d02824900536b005028023028", + "0x23900536b00523900509202801f00536b00501f00504f02824d00536b005", + "0x23901f00a00524d00536b00524d0052c802803200536b0050320050c0028", + "0x502827c02824e00536b00504500503102802836b00502800702824d032", + "0x25b02825200536b00525200533202825200536b00502802502824f00536b", + "0x900526d02805b00900736b00505000526a02805000536b00525224f007", + "0x2824e00536b00524e00509202805800536b00505b00526b02802836b005", + "0x66425c05c05903136b00705803224e03126702805800536b00505800525a", + "0x532102802836b00525c00525902802836b00502800702805e25e25d031", + "0x6000536b00505900503102805900536b00505900509202802836b005031", + "0x36b00505d00501b02805d00536b00502825802805f00536b005028020028", + "0x2d02829800536b00502802302829600536b00505d05f00736402805d005", + "0x501f00504f02806700536b00504200510202804200536b005296298007", + "0x2805c00536b00505c0050c002806000536b00506000509202801f00536b", + "0x2802836b00502800702806705c06001f00a00506700536b0050670052c8", + "0x505e0050360282bd00536b00525d00503102825d00536b00525d005092", + "0x2806800536b00506800501302802836b00506900504002806806900736b", + "0x706800500f0282bd00536b0052bd00509202825e00536b00525e0050c0", + "0x2836b00500600501c02802836b00502800702807100566506f00600736b", + "0x740051c802807400536b00506f00501002832500536b0052bd005031028", + "0x2807500536b00507500501b02807700536b0050281ae02807500536b005", + "0x32500509202834c00536b00534c00501b02834c00536b00507707500732c", + "0x2836b00502800702834b00566602836b00734c00534802832500536b005", + "0x7a0310070fb02807a00536b00502803002804300536b005325005031028", + "0x1f00536b00501f00504f02807f00536b0050790050f902807900536b005", + "0x7f0052c802825e00536b00525e0050c002804300536b005043005092028", + "0x34b00534602802836b00502800702807f25e04301f00a00507f00536b005", + "0x2002834800536b00532500503102802836b00503100532102802836b005", + "0x7d00536b00507d00501b02807d00536b00502825702808100536b005028", + "0x34500702d02834500536b00502802302834600536b00507d081007364028", + "0x536b00501f00504f02834300536b00534400510202834400536b005346", + "0x52c802825e00536b00525e0050c002834800536b00534800509202801f", + "0x501c02802836b00502800702834325e34801f00a00534300536b005343", + "0x2834200536b0052bd00503102802836b00503100532102802836b005071", + "0x536b00533d00501b02833d00536b00502825602834100536b005028020", + "0x702d02833c00536b00502802302808c00536b00533d34100736402833d", + "0x36b00501f00504f02808a00536b00533b00510202833b00536b00508c33c", + "0x2c802825e00536b00525e0050c002834200536b00534200509202801f005", + "0x32102802836b00502800702808a25e34201f00a00508a00536b00508a005", + "0x536b00536c00503102836c00536b00536c00509202802836b005031005", + "0x50c002808800536b00533a00509202833900536b00501f00504f02833a", + "0x2802866700502804d02833700536b00500c00521502833800536b005033", + "0x33600536b00502000503102802836b00503100532102802836b005028007", + "0x1f00504f02802836b00508600534c02808e08600736b005023005077028", + "0x33800536b0050070050c002808800536b00533600509202833900536b005", + "0x2836b00502800702802866700502804d02833700536b00508e005215028", + "0x501800507702837700536b00504d00503102802836b005031005321028", + "0x2833900536b00501400504f02802836b00533300534c02833233300736b", + "0x533200521502833800536b0050070050c002808800536b005377005092", + "0x2833000536b00533733100702d02833100536b00502802302833700536b", + "0x508800509202833900536b00533900504f02832f00536b005330005102", + "0x532f00536b00532f0052c802833800536b0053380050c002808800536b", + "0x1b202800a00536b00502825402802836b00502836902832f33808833900a", + "0x36b00500b00a0071b402800b00536b00500b00503302800b00536b005028", + "0x2800504f02800f00536b00502803202809200536b00502803202804f005", + "0x9200536b00509200503302804f00536b00504f00525302802800536b005", + "0x1c801000736b00500f09204f02800a25102800f00536b00500f005033028", + "0x503102802836b00502800702801300566804e00536b0071c8005250028", + "0x3000536b00504d00524602804d00536b00502824a02801400536b005005", + "0x1700524202802836b00501800504702801801700736b00504e005244028", + "0x1b00536b00536800523c02802836b0053690051bd02836836900736b005", + "0x70050c002801400536b00501400509202801000536b00501000504f028", + "0x3000536b0050300051c102801b00536b00501b0051bf02800700536b005", + "0x701f00518b02801f36636701c00a36b00503001b00701401000b23a028", + "0x36400536b00536700503102802836b00502800702836500566902000536b", + "0x504702802836b00502300523d02836302d02303136b005020005238028", + "0xc000536b0050c00051c60280c000536b00502d00523502802836b005363", + "0x35d03235f1aa36100f36b00508400523002808400536b0050c0005231028", + "0x521c02802836b00535f00521c02802836b0051aa00521c02800c03336c", + "0x21c02802836b00536c00521c02802836b00535d00521c02802836b005032", + "0x2803c00536b00502822e02802836b00500c00521c02802836b005033005", + "0x3c3610072a002836400536b00536400509202836100536b005361005033", + "0x3102802836b00503100532102802836b00502800702802866a02836b007", + "0x35e00536b00502826002804000536b00502802002803600536b005364005", + "0x2802302835900536b00535e04000736402835e00536b00535e00501b028", + "0x536b00521500510202821500536b00535935600702d02835600536b005", + "0x50c002803600536b00503600509202801c00536b00501c00504f02821c", + "0x2821c36603601c00a00521c00536b00521c0052c802836600536b005366", + "0x4800536b00502803002804600536b00536400503102802836b005028007", + "0x504f02804500536b0050470050f902804700536b0050480310070fb028", + "0x536b0053660050c002804600536b00504600509202801c00536b00501c", + "0x36b00502800702804536604601c00a00504500536b0050450052c8028366", + "0x1c00504f02823700536b00536700503102802836b005031005321028028", + "0x23f00536b0053660050c002823b00536b00523700509202823900536b005", + "0x2836b00502800702802866b00502804d02824500536b0053650050df028", + "0x501000504f02824900536b00500500503102802836b005031005321028", + "0x2823f00536b0050070050c002823b00536b00524900509202823900536b", + "0x523900504f02824c00536b00524500510202824500536b0050130050df", + "0x2823f00536b00523f0050c002823b00536b00523b00509202823900536b", + "0x2802836b00502836902824c23f23b23900a00524c00536b00524c0052c8", + "0x536b00500b00519702804f00536b0050281cb02800b00536b00502822d", + "0x9203136b00704f00b03100500a22902804f00536b00504f00519702800b", + "0x536b00509200509202802836b00502800702801304e1c803166c01000f", + "0x22702803004d00736b00501000522602801400536b005092005031028092", + "0x536b00500f0050c002803000536b00503000522202802836b00504d005", + "0x1800566d01700536b00703000522102801400536b00501400509202800f", + "0x2836b00500a00532102802836b00501700522002802836b005028007028", + "0x36b0050281d102836800536b00502802002836900536b005014005031028", + "0x2801c00536b00501b36800736402801b00536b00501b00501b02801b005", + "0x536600510202836600536b00501c36700702d02836700536b005028023", + "0x2836900536b00536900509202802800536b00502800504f02801f00536b", + "0x501f0052c802800f00536b00500f0050c002800700536b005007005307", + "0x1800504702802836b00502800702801f00f00736902800b00501f00536b", + "0x1cb02836500536b00502821d02802000536b00501400503102802836b005", + "0x536b00536500519702802000536b00502000509202836400536b005028", + "0x2303136b00736436500f02000a22902836400536b005364005197028365", + "0x2836b00536300522702802836b0050280070283610840c003166e36302d", + "0x502300503102802300536b00502300509202802836b00500a005321028", + "0x501b02803200536b00502825802835f00536b0050280200281aa00536b", + "0x536b00502802302835d00536b00503235f00736402803200536b005032", + "0x4f02800c00536b00503300510202803300536b00535d36c00702d02836c", + "0x36b0050070053070281aa00536b0051aa00509202802800536b005028005", + "0xb00500c00536b00500c0052c802802d00536b00502d0050c0028007005", + "0x280c000536b0050c000509202802836b00502800702800c02d0071aa028", + "0x3600504002804003600736b00536100503602803c00536b0050c0005031", + "0x2808400536b0050840050c002804000536b00504000501302802836b005", + "0x2835600566f35935e00736b00704000500f02803c00536b00503c005092", + "0x21500536b00503c00503102802836b00535e00501c02802836b005028007", + "0x502822302804600536b00521c0051c802821c00536b005359005010028", + "0x4700536b00504804600732c02804600536b00504600501b02804800536b", + "0x4700534802821500536b00521500509202804700536b00504700501b028", + "0x23700536b00521500503102802836b00502800702804500567002836b007", + "0x36b00523900521a02823b00536b0050281d302823900536b00502821b028", + "0x23700536b00523700509202824523b00736b00523b00521a02823f239007", + "0x23700a22902824500536b00524500519702823f00536b00523f005197028", + "0x2836b00502800702825224f24e03167124d24c24903136b00724523f084", + "0x24d00522202805000536b00524900503102824900536b005249005092028", + "0x5000536b00505000509202824c00536b00524c0050c002824d00536b005", + "0x503102802836b00502800702805b00567200900536b00724d005221028", + "0x700924c05803121802805800536b00505800509202805800536b005050", + "0x509202802836b00502800702806005e25e03167325d25c05c05900a36b", + "0x736b00525c0051d602805f00536b00505900503102805900536b005059", + "0x25902804229800736b0052390051d602802836b00505d00525902829605d", + "0x736b00529600521a02829600536b00529600519702802836b005298005", + "0x21a02802836b00506900530f0280692bd00736b005067005266028067296", + "0x6f00530f02806f00600736b00506800526602806804200736b005042005", + "0x2832500536b0050060052f702807100536b0052bd0052f702802836b005", + "0x536b00525d00519702805c00536b00505c0050c002802836b00502800b", + "0x2802867402836b0073250710072a202805f00536b00505f00509202825d", + "0x2802836b00525d00525902802836b00529600525902802836b005028007", + "0x2836b00504200525902802836b00500a00532102802836b00523b005259", + "0x502804d02807500536b00507400509202807400536b00505f005031028", + "0x29600526602807700536b00505f00503102802836b005028007028028675", + "0x4300736b00504200526602802836b00534c00530f02834b34c00736b005", + "0x7a0052f702807900536b00534b0052f702802836b00504300530f02807a", + "0x2836b00707f0790072a202807700536b00507700509202807f00536b005", + "0x523b00525902802836b00525d00525902802836b005028007028028676", + "0x509202834800536b00507700503102802836b00500a00532102802836b", + "0x2802867700502804d02808100536b00507500539802807500536b005348", + "0x736b00525d0051d602807d00536b00507700503102802836b005028007", + "0x25902834334400736b00523b0051d602802836b005346005259028345346", + "0x36b00534200526602834234500736b00534500521a02802836b005344005", + "0x2808c34300736b00534300521a02802836b00533d00530f02833d341007", + "0x53410052f702802836b00533b00530f02833b33c00736b00508c005266", + "0x2807d00536b00507d00509202833a00536b00533c0052f702808a00536b", + "0x534500525902802836b00502800702802867802836b00733a08a0072a2", + "0x7d00503102802836b00534300525902802836b00500a00532102802836b", + "0x702802867700502804d02808100536b00533900509202833900536b005", + "0x33800736b00534500526602808800536b00507d00503102802836b005028", + "0x530f02808633600736b00534300526602802836b00533800530f028337", + "0x37700536b0050860052f702808e00536b0053370052f702802836b005336", + "0x702802867902836b00737708e0072a202808800536b005088005092028", + "0x2833300536b00508800503102802836b00500a00532102802836b005028", + "0x33200536b00502802002802836b00502836902808100536b005333005092", + "0x33133200736402833100536b00533100501b02833100536b0050281d8028", + "0x32e00536b00533032f00702d02832f00536b00502802302833000536b005", + "0x8100509202802800536b00502800504f02832d00536b00532e005102028", + "0x5c00536b00505c0050c002800700536b00500700530702808100536b005", + "0x36b00502800702832d05c00708102800b00532d00536b00532d0052c8028", + "0x8b0050b902808b00536b00502821602832c00536b005088005031028028", + "0x32632900736b00532a00526602832a00536b0050281da02832b00536b005", + "0x36b00502821302808500536b0053290050b902802836b00532600530f028", + "0x2809500536b00509332b00721902832b00536b00532b00501b028093005", + "0x502820e02832400536b0050850950072de02809500536b00509500501b", + "0x2803002809600536b00502820c02832300536b00502820d02809800536b", + "0x36b00532109632303120b02832100536b00532200508102832200536b005", + "0x9202802800536b00502800504f02831e00536b00532400520a02831f005", + "0x36b00505c0050c002800700536b00500700530702832c00536b00532c005", + "0x20802831f00536b00531f00520902809800536b00509800519702805c005", + "0x31d00b36b00531e31f09805c00732c0280921e102831e00536b00531e005", + "0x567a31800536b00731900520302802836b00502800b02831931a31b31c", + "0x531800520102831600536b00531c00503102802836b005028007028317", + "0x67b31300536b0073140051ff02831600536b00531600509202831400536b", + "0x36b00531300504702802836b00502836902802836b005028007028311005", + "0xa0070fb02831000536b0050280300280a900536b005316005031028028", + "0x536b00531d00504f0280ac00536b0050b00050f90280b000536b005310", + "0x50c002831b00536b00531b0053070280a900536b0050a900509202831d", + "0xac31a31b0a931d00b0050ac00536b0050ac0052c802831a00536b00531a", + "0x536b00531600503102802836b00500a00532102802836b005028007028", + "0x50920280b400536b00531130d00736402830d00536b00502802002830f", + "0x2802867c00502804d02830b00536b0050b40052150280b600536b00530f", + "0xb900536b00531c00503102802836b00500a00532102802836b005028007", + "0xb900509202802836b00530900534c02830830900736b005317005077028", + "0x2302802836b00502836902830b00536b0053080052150280b600536b005", + "0x36b00530600510202830600536b00530b30700702d02830700536b005028", + "0x3070280b600536b0050b600509202831d00536b00531d00504f028305005", + "0x36b0053050052c802831a00536b00531a0050c002831b00536b00531b005", + "0x500a00532102802836b00502800702830531a31b0b631d00b005305005", + "0x25e00509202802836b00523900525902802836b00523b00525902802836b", + "0x2830400536b0050280230280bf00536b00525e00503102825e00536b005", + "0x2800504f02830200536b00530300510202830300536b00506030400702d", + "0x700536b0050070053070280bf00536b0050bf00509202802800536b005", + "0xbf02800b00530200536b0053020052c802805e00536b00505e0050c0028", + "0xa00532102802836b00505b00504702802836b00502800702830205e007", + "0x503102802836b00523900525902802836b00523b00525902802836b005", + "0x2839400536b00502824502839300536b00502802002805100536b005050", + "0x502802302839500536b00539439300736402839400536b00539400501b", + "0xc700536b00539600510202839600536b0053950dc00702d0280dc00536b", + "0x700530702805100536b00505100509202802800536b00502800504f028", + "0xc700536b0050c70052c802824c00536b00524c0050c002800700536b005", + "0x2836b00500a00532102802836b0050280070280c724c00705102800b005", + "0x36b00524e00509202802836b00523900525902802836b00523b005259028", + "0x702d0280c900536b0050280230280c600536b00524e00503102824e005", + "0x36b00502800504f0280cf00536b0050cb0051020280cb00536b0052520c9", + "0xc002800700536b0050070053070280c600536b0050c6005092028028005", + "0x24f0070c602800b0050cf00536b0050cf0052c802824f00536b00524f005", + "0x36b00500a00532102802836b00504500534602802836b0050280070280cf", + "0x502825702839700536b00502802002830100536b005215005031028028", + "0x39800536b00530c39700736402830c00536b00530c00501b02830c00536b", + "0xd40051020280d400536b0053982fb00702d0282fb00536b005028023028", + "0x30100536b00530100509202802800536b00502800504f0282fa00536b005", + "0x2fa0052c802808400536b0050840050c002800700536b005007005307028", + "0x501c02802836b0050280070282fa08400730102800b0052fa00536b005", + "0x280d500536b00503c00503102802836b00500a00532102802836b005356", + "0x536b0052f800501b0282f800536b00502825602839900536b005028020", + "0x702d0282f100536b0050280230282f700536b0052f83990073640282f8", + "0x36b00502800504f0282ee00536b0050da0051020280da00536b0052f72f1", + "0xc002800700536b0050070053070280d500536b0050d5005092028028005", + "0x840070d502800b0052ee00536b0052ee0052c802808400536b005084005", + "0x36b0051c800509202802836b00500a00532102802836b0050280070282ee", + "0x702d0280d200536b0050280230282ec00536b0051c80050310281c8005", + "0x36b00502800504f0280db00536b0052ef0051020282ef00536b0050130d2", + "0xc002800700536b0050070053070282ec00536b0052ec005092028028005", + "0x4e0072ec02800b0050db00536b0050db0052c802804e00536b00504e005", + "0x500a00519702800b00536b0050281cb02800a00536b00502822d0280db", + "0x36b00700b00a00700500a1fd02800b00536b00500b00519702800a00536b", + "0x504f00509202802836b00502800702804e1c801003167d00f09204f031", + "0x4d01400736b00500f0051fa02801300536b00504f00503102804f00536b", + "0x50920050c002804d00536b00504d0051ee02802836b0050140051f3028", + "0x67e03000536b00704d00500002801300536b00501300509202809200536b", + "0x503100532102802836b00503000557c02802836b005028007028017005", + "0x281d102836900536b00502802002801800536b00501300503102802836b", + "0x536b00536836900736402836800536b00536800501b02836800536b005", + "0x510202836700536b00501b01c00702d02801c00536b00502802302801b", + "0x536b00501800509202802800536b00502800504f02836600536b005367", + "0x2800a00536600536b0053660052c802809200536b0050920050c0028018", + "0x1300503102802836b00501700504702802836b005028007028366092018", + "0x9202836500536b0050281cb02802000536b00502857d02801f00536b005", + "0x36b00536500519702802000536b00502000519702801f00536b00501f005", + "0x840c036303167f02d02336403136b00736502009201f00a1fd028365005", + "0x2836b00503100532102802836b00502d0051f302802836b005028007028", + "0x502802002836100536b00536400503102836400536b005364005092028", + "0x36402835f00536b00535f00501b02835f00536b0050282580281aa00536b", + "0x503235d00702d02835d00536b00502802302803200536b00535f1aa007", + "0x2802800536b00502800504f02803300536b00536c00510202836c00536b", + "0x50330052c802802300536b0050230050c002836100536b005361005092", + "0x536300509202802836b00502800702803302336102800a00503300536b", + "0x3603c00736b00508400503602800c00536b00536300503102836300536b", + "0x50c00050c002803600536b00503600501302802836b00503c005040028", + "0x35e04000736b00703600500f02800c00536b00500c0050920280c000536b", + "0xc00503102802836b00504000501c02802836b005028007028359005680", + "0x21c00536b0052150051c802821500536b00535e00501002835600536b005", + "0x4621c00732c02821c00536b00521c00501b02804600536b005028223028", + "0x35600536b00535600509202804800536b00504800501b02804800536b005", + "0x35600503102802836b00502800702804700568102836b007048005348028", + "0x21a02823900536b00502858002823700536b00502857f02804500536b005", + "0x4500509202823f23900736b00523900521a02823b23700736b005237005", + "0x23f00536b00523f00519702823b00536b00523b00519702804500536b005", + "0x702824f24e24d03168224c24924503136b00723f23b0c004500a1fd028", + "0x25200536b00524500503102824500536b00524500509202802836b005028", + "0x25200509202824900536b0052490050c002824c00536b00524c0051ee028", + "0x36b00502800702800900568305000536b00724c00500002825200536b005", + "0x3158102805b00536b00505b00509202805b00536b005252005031028028", + "0x36b00502800702805e25e25d03168425c05c05905800a36b00705024905b", + "0x51d602806000536b00505800503102805800536b005058005092028028", + "0x736b0052370051d602802836b00505f00525902805d05f00736b00505c", + "0x521a02805d00536b00505d00519702802836b005296005259028298296", + "0x52bd00530f0282bd06700736b00504200526602804205d00736b00505d", + "0x606800736b00506900526602806929800736b00529800521a02802836b", + "0x50680052f702806f00536b0050670052f702802836b00500600530f028", + "0x2825c00536b00525c00519702805900536b0050590050c002807100536b", + "0x2800702802868502836b00707106f0072a202806000536b005060005092", + "0x525902802836b00525c00525902802836b00505d00525902802836b005", + "0x3102802836b00529800525902802836b00503100532102802836b005239", + "0x2868600502804d02807400536b00532500509202832500536b005060005", + "0x36b00505d00526602807500536b00506000503102802836b005028007028", + "0x2804334b00736b00529800526602802836b00507700530f02834c077007", + "0x36b0050430052f702807a00536b00534c0052f702802836b00534b00530f", + "0x2868702836b00707907a0072a202807500536b005075005092028079005", + "0x2836b00523900525902802836b00525c00525902802836b005028007028", + "0x507f00509202807f00536b00507500503102802836b005031005321028", + "0x2800702802868800502804d02834800536b00507400539802807400536b", + "0x34607d00736b00525c0051d602808100536b00507500503102802836b005", + "0x34500525902834434500736b0052390051d602802836b00507d005259028", + "0x34200736b00534300526602834334600736b00534600521a02802836b005", + "0x526602833d34400736b00534400521a02802836b00534100530f028341", + "0x536b0053420052f702802836b00533c00530f02833c08c00736b00533d", + "0x72a202808100536b00508100509202808a00536b00508c0052f702833b", + "0x2836b00534600525902802836b00502800702802868902836b00708a33b", + "0x36b00508100503102802836b00534400525902802836b005031005321028", + "0x502800702802868800502804d02834800536b00533a00509202833a005", + "0x2833808800736b00534600526602833900536b00508100503102802836b", + "0x533700530f02833633700736b00534400526602802836b00508800530f", + "0x9202808e00536b0053360052f702808600536b0053380052f702802836b", + "0x502800702802868a02836b00708e0860072a202833900536b005339005", + "0x509202837700536b00533900503102802836b00503100532102802836b", + "0x2833200536b0050281d802833300536b00502802002834800536b005377", + "0x502802302833100536b00533233300736402833200536b00533200501b", + "0x32e00536b00532f00510202832f00536b00533133000702d02833000536b", + "0x590050c002834800536b00534800509202802800536b00502800504f028", + "0x702832e05934802800a00532e00536b00532e0052c802805900536b005", + "0x2832c00536b00502858302832d00536b00533900503102802836b005028", + "0x536b00502858402802836b00508b00501f02808b00536b00532c0050b9", + "0x50b902802836b00532900530f02832932a00736b00532b00526602832b", + "0x2808500536b00502858502802836b00532600501f02832600536b00532a", + "0x36b00508500519702832d00536b00532d00509202809300536b005028586", + "0x3136b00709308505932d00a1fd02809300536b005093005197028085005", + "0x36b00509500509202802836b00502800702832209632303168b098324095", + "0xc002809800536b0050980051ee02832100536b005095005031028095005", + "0x36b00709800500002832100536b00532100509202832400536b005324005", + "0x2831d00536b00532100503102802836b00502800702831e00568c31f005", + "0x31a00536b00502837502831b00536b00502858902831c00536b005028587", + "0x3240050c002831d00536b00531d00509202802800536b00502800504f028", + "0x31b00536b00531b00519702831c00536b00531c00519702832400536b005", + "0x2809258b02831f00536b00531f00558a02831a00536b00531a005197028", + "0x536b00731600558c02831631731831900a36b00531f31a31b31c32431d", + "0x503102802836b00531400558d02802836b00502800702831300568d314", + "0x536b0050a90310070fb0280a900536b00502803002831100536b005318", + "0x509202831900536b00531900504f0280b000536b0053100050f9028310", + "0x536b0050b00052c802831700536b0053170050c002831100536b005311", + "0x2836b00503100532102802836b0050280070280b031731131900a0050b0", + "0x31900504f02830f00536b0053130051020280ac00536b005318005031028", + "0x31700536b0053170050c00280ac00536b0050ac00509202831900536b005", + "0x2836b00502800702830f3170ac31900a00530f00536b00530f0052c8028", + "0x36b00532100503102802836b00503100532102802836b00531e005047028", + "0xb600501b0280b600536b0050282450280b400536b00502802002830d005", + "0xb900536b00502802302830b00536b0050b60b40073640280b600536b005", + "0x504f02830800536b00530900510202830900536b00530b0b900702d028", + "0x536b0053240050c002830d00536b00530d00509202802800536b005028", + "0x36b00502800702830832430d02800a00530800536b0053080052c8028324", + "0x32300503102832300536b00532300509202802836b005031005321028028", + "0x30500536b00532230600702d02830600536b00502802302830700536b005", + "0x30700509202802800536b00502800504f0280bf00536b005305005102028", + "0xbf00536b0050bf0052c802809600536b0050960050c002830700536b005", + "0x2802836b00503100532102802836b0050280070280bf09630702800a005", + "0x536b00525d00509202802836b00523700525902802836b005239005259", + "0x30300702d02830300536b00502802302830400536b00525d00503102825d", + "0x536b00502800504f02805100536b00530200510202830200536b00505e", + "0x52c802825e00536b00525e0050c002830400536b005304005092028028", + "0x504702802836b00502800702805125e30402800a00505100536b005051", + "0x25902802836b00523900525902802836b00503100532102802836b005009", + "0x39400536b00502802002839300536b00525200503102802836b005237005", + "0x39539400736402839500536b00539500501b02839500536b005028245028", + "0xc700536b0050dc39600702d02839600536b0050280230280dc00536b005", + "0x39300509202802800536b00502800504f0280c600536b0050c7005102028", + "0xc600536b0050c60052c802824900536b0052490050c002839300536b005", + "0x2802836b00503100532102802836b0050280070280c624939302800a005", + "0x536b00524d00509202802836b00523700525902802836b005239005259", + "0xcb00702d0280cb00536b0050280230280c900536b00524d00503102824d", + "0x536b00502800504f02830100536b0050cf0051020280cf00536b00524f", + "0x52c802824e00536b00524e0050c00280c900536b0050c9005092028028", + "0x534602802836b00502800702830124e0c902800a00530100536b005301", + "0x2839700536b00535600503102802836b00503100532102802836b005047", + "0x536b00539800501b02839800536b00502825702830c00536b005028020", + "0x702d0280d400536b0050280230282fb00536b00539830c007364028398", + "0x36b00502800504f0280d500536b0052fa0051020282fa00536b0052fb0d4", + "0x2c80280c000536b0050c00050c002839700536b005397005092028028005", + "0x1c02802836b0050280070280d50c039702800a0050d500536b0050d5005", + "0x39900536b00500c00503102802836b00503100532102802836b005359005", + "0x36b0052f700501b0282f700536b0050282560282f800536b005028020028", + "0x2d0280da00536b0050280230282f100536b0052f72f80073640282f7005", + "0x502800504f0282ec00536b0052ee0051020282ee00536b0052f10da007", + "0x280c000536b0050c00050c002839900536b00539900509202802800536b", + "0x2802836b0050280070282ec0c039902800a0052ec00536b0052ec0052c8", + "0x36b00501000503102801000536b00501000509202802836b005031005321", + "0x1020280db00536b00504e2ef00702d0282ef00536b0050280230280d2005", + "0x36b0050d200509202802800536b00502800504f0282f600536b0050db005", + "0xa0052f600536b0052f60052c80281c800536b0051c80050c00280d2005", + "0x4f00b00736b00700502800700502802836b0050283690282f61c80d2028", + "0x3602801000536b00504f00503102802836b00502800702800f09200768e", + "0x36b00502858f02801300536b00504e00532502804e1c800736b00500a005", + "0x9202801400536b00501400503302801300536b005013005033028014005", + "0x1700768f03004d00736b00701401300b03159002801000536b005010005", + "0x36b00501000503102802836b00503000521c02802836b005028007028018", + "0x59102836900536b00536900509202804d00536b00504d00504f028369005", + "0x36900503102802836b00502800702801c00569001b36800736b0071c8005", + "0x36800536b00536800521502836600536b00501b00501002836700536b005", + "0x36800559102836600536b00536600501b02836700536b005367005092028", + "0x36b00536700503102802836b00502800702836500569102001f00736b007", + "0x9202801f00536b00501f00521502802300536b005020005010028364005", + "0x36b00701f00559102802300536b00502300501b02836400536b005364005", + "0x8400536b00536400503102802836b0050280070280c000569236302d007", + "0x3610050dc02836100536b00536100501b02836100536b005363005010028", + "0x536b00508400509202802d00536b00502d0052150281aa36100736b005", + "0x501f02802836b00502800702835f00569302836b0071aa005348028084", + "0x3200536b00503200509202803200536b00508400503102802836b005361", + "0x2802836b00502800702803300569436c35d00736b00736604d00724e028", + "0x3c00504002803603c00736b00502d00503602800c00536b005032005031", + "0x2800c00536b00500c00509202804000536b00503600535e02802836b005", + "0x35935e03136b00704002336c00700c00b25e02835d00536b00535d00504f", + "0x2802836b00535600523702802836b00502800702804621c215031695356", + "0x535d00504f02804800536b00535e00503102835e00536b00535e005092", + "0x2823700536b0053590050c002804500536b00504800509202804700536b", + "0x9202802836b00503100532102802836b00502800702802869600502804d", + "0x536b00502802302823900536b00521500503102821500536b005215005", + "0x4f02824500536b00523f00559202823f00536b00504623b00702d02823b", + "0x36b00521c0050c002823900536b00523900509202835d00536b00535d005", + "0x502800702824521c23935d00a00524500536b00524500559402821c005", + "0x2300501f02802836b00502d00504002802836b00503100532102802836b", + "0x24502824c00536b00502802002824900536b00503200503102802836b005", + "0x36b00524d24c00736402824d00536b00524d00501b02824d00536b005028", + "0x59202825200536b00524e24f00702d02824f00536b00502802302824e005", + "0x36b00524900509202803300536b00503300504f02805000536b005252005", + "0xa00505000536b00505000559402800700536b0050070050c0028249005", + "0x503102802836b00535f00534602802836b005028007028050007249033", + "0x536b00505b36100732c02805b00536b00502823f02800900536b005084", + "0x534802800900536b00500900509202805800536b00505800501b028058", + "0x536b00500900503102802836b00502800702805900569702836b007058", + "0x69825d25c00736b00736604d00707f02805c00536b00505c00509202805c", + "0x2d00503602805e00536b00505c00503102802836b00502800702825e005", + "0x5d00536b00505f00535e02802836b00506000504002805f06000736b005", + "0x5e00b31902825c00536b00525c00504f02805e00536b00505e005092028", + "0x36b0050280070280692bd06703169904229829603136b00705d02325d007", + "0x29600503102829600536b00529600509202802836b005042005237028028", + "0x6f00536b00506800509202800600536b00525c00504f02806800536b005", + "0x2836b00502800702802869a00502804d02807100536b0052980050c0028", + "0x506700503102806700536b00506700509202802836b005031005321028", + "0x2807500536b00506907400702d02807400536b00502802302832500536b", + "0x532500509202825c00536b00525c00504f02807700536b005075005592", + "0x507700536b0050770055940282bd00536b0052bd0050c002832500536b", + "0x4002802836b00503100532102802836b0050280070280772bd32525c00a", + "0x34c00536b00505c00503102802836b00502300501f02802836b00502d005", + "0x36b00504300501b02804300536b00502824502834b00536b005028020028", + "0x2d02807900536b00502802302807a00536b00504334b007364028043005", + "0x525e00504f02834800536b00507f00559202807f00536b00507a079007", + "0x2800700536b0050070050c002834c00536b00534c00509202825e00536b", + "0x2802836b00502800702834800734c25e00a00534800536b005348005594", + "0x536b00500900503102802836b00536600501f02802836b005059005346", + "0x732c02834602300736b0050230050dc02807d00536b005028595028081", + "0x36b00508100509202834500536b00534500501b02834500536b00507d346", + "0x1f02802836b00502800702834400569b02836b007345005348028081005", + "0x536b00504d00504f02834300536b00508100503102802836b005023005", + "0x521502800700536b0050070050c002834300536b00534300509202804d", + "0x8c33d34134200a36b00502d03100734304d00b30302802d00536b00502d", + "0x2802836b00534400534602802836b00502800702808c33d34134200a005", + "0x536b00502837402833c00536b00508100503102802836b00502d005040", + "0x9202808a00536b00508a00501b02808a00536b00533b02300732c02833b", + "0x502800702833a00569c02836b00708a00534802833c00536b00533c005", + "0x2802002833900536b00533c00503102802836b00503100532102802836b", + "0x2833800536b00533800501b02833800536b00502839302808800536b005", + "0x33733600702d02833600536b00502802302833700536b005338088007364", + "0x4d00536b00504d00504f02808e00536b00508600559202808600536b005", + "0x8e00559402800700536b0050070050c002833900536b005339005092028", + "0x33a00534602802836b00502800702808e00733904d00a00508e00536b005", + "0x2800600536b00504d00504f02837700536b00533c00503102802836b005", + "0x500600530c02807100536b0050070050c002806f00536b005377005092", + "0x2823700536b00507100559602804500536b00506f00539802804700536b", + "0x533200559802833200536b00533303100759702833300536b00502823b", + "0x2800702833123704504700a00533100536b00533100559402833100536b", + "0x501f02802836b00503100532102802836b0050c000504002802836b005", + "0x2833000536b00536400503102802836b00536600501f02802836b005023", + "0x536b00532e00501b02832e00536b00502824502832f00536b005028020", + "0x702d02832c00536b00502802302832d00536b00532e32f00736402832e", + "0x36b00504d00504f02832b00536b00508b00559202808b00536b00532d32c", + "0x59402800700536b0050070050c002833000536b00533000509202804d005", + "0x4002802836b00502800702832b00733004d00a00532b00536b00532b005", + "0x2802836b00536600501f02802836b00503100532102802836b005365005", + "0x536b00502824502832900536b00502802002832a00536b005367005031", + "0x2302808500536b00532632900736402832600536b00532600501b028326", + "0x36b00509500559202809500536b00508509300702d02809300536b005028", + "0xc002832a00536b00532a00509202804d00536b00504d00504f028324005", + "0x32400732a04d00a00532400536b00532400559402800700536b005007005", + "0x2836b00503100532102802836b00501c00504002802836b005028007028", + "0x36b00502824502832300536b00502802002809800536b005369005031028", + "0x2832200536b00509632300736402809600536b00509600501b028096005", + "0x531f00559202831f00536b00532232100702d02832100536b005028023", + "0x2809800536b00509800509202804d00536b00504d00504f02831e00536b", + "0x709804d00a00531e00536b00531e00559402800700536b0050070050c0", + "0x36b00503100532102802836b00501800521c02802836b00502800702831e", + "0x502802002831d00536b00501000503102802836b0051c8005040028028", + "0x36402831b00536b00531b00501b02831b00536b00502859902831c00536b", + "0x531a31900702d02831900536b00502802302831a00536b00531b31c007", + "0x2801700536b00501700504f02831700536b00531800559202831800536b", + "0x531700559402800700536b0050070050c002831d00536b00531d005092", + "0x500a00504002802836b00502800702831700731d01700a00531700536b", + "0x2802002831600536b00500f00503102802836b00503100532102802836b", + "0x2831300536b00531300501b02831300536b00502804602831400536b005", + "0x3110a900702d0280a900536b00502802302831100536b005313314007364", + "0x9200536b00509200504f0280b000536b00531000559202831000536b005", + "0xb000559402800700536b0050070050c002831600536b005316005092028", + "0x2800700502802836b0050283690280b000731609200a0050b000536b005", + "0xb00503102802836b00502800702809204f00769d00b00a00736b007005", + "0x536b00500a00504f02801003100736b0050310050dc02800f00536b005", + "0x281c800569e02836b00701000534802800f00536b00500f00509202800a", + "0x2802836b00503100501f02802836b00500700532102802836b005028007", + "0x536b00502859a02801300536b00502802002804e00536b00500f005031", + "0x2302804d00536b00501401300736402801400536b00501400501b028014", + "0x36b00501700510202801700536b00504d03000702d02803000536b005028", + "0x2c802804e00536b00504e00509202800a00536b00500a00504f028018005", + "0x534602802836b00502800702801804e00a03100501800536b005018005", + "0x2836800536b00502823f02836900536b00500f00503102802836b0051c8", + "0x36900509202800a00536b00500a00504f02801b00536b00536803100732c", + "0x501b00736900a00a39402801b00536b00501b00501b02836900536b005", + "0x700532102802836b00502800702836636701c03100536636701c03136b", + "0x2002801f00536b00509200503102802836b00503100501f02802836b005", + "0x36500536b00536500501b02836500536b00502804602802000536b005028", + "0x2300702d02802300536b00502802302836400536b005365020007364028", + "0x536b00504f00504f02836300536b00502d00510202802d00536b005364", + "0x4f03100536300536b0053630052c802801f00536b00501f00509202804f", + "0x769f00b00a00736b00700502800700502802836b00502836902836301f", + "0x310050dc02800f00536b00500b00503102802836b00502800702809204f", + "0x536b00500f00509202800a00536b00500a00504f02801003100736b005", + "0x501f02802836b0050280070281c80056a002836b00701000534802800f", + "0x2801300536b00502803002804e00536b00500f00503102802836b005031", + "0xa00504f02804d00536b0050140050f902801400536b0050130070070fb", + "0x4d00536b00504d0052c802804e00536b00504e00509202800a00536b005", + "0x3102802836b0051c800534602802836b00502800702804d04e00a031005", + "0x36b00501703100732c02801700536b00502823f02803000536b00500f005", + "0x1b02803000536b00503000509202800a00536b00500a00504f028018005", + "0x501b36836903136b00501800703000a00a39502801800536b005018005", + "0x532102802836b00503100501f02802836b00502800702801b368369031", + "0x2836700536b00502802002801c00536b00509200503102802836b005007", + "0x536636700736402836600536b00536600501b02836600536b005028046", + "0x2836500536b00501f02000702d02802000536b00502802302801f00536b", + "0x501c00509202804f00536b00504f00504f02836400536b005365005102", + "0x502859b02836401c04f03100536400536b0053640052c802801c00536b", + "0x4e1c800736b00501000559d02801000536b00500f00559c02800f00536b", + "0x50130051c802801300536b00504e00559f02802836b0051c800559e028", + "0x1400536b00501400501b02804d00b00736b00500b0050dc02801400536b", + "0x2801700536b00501700501b02801703000736b00504d0140070310e3028", + "0x55a202836800536b0053690055a102836901800736b0050170280075a0", + "0x536b00501c0055a402802836b00501b0055a302801c01b00736b005368", + "0x33a02801f36600736b0053660055a502836600536b00536700510c028367", + "0x736b00536500535d02836500536b00502803202802000536b00501f005", + "0x4f02803000536b0050300050c602836400536b005364005033028364365", + "0x6a136302d02303136b00702036403100500a03c02801800536b005018005", + "0x3102802300536b00502300509202802836b0050280070283610840c0031", + "0x36b00535f3660075a602835f00536b0050283730281aa00536b005023005", + "0x8802836500536b0053650050330281aa00536b0051aa005092028032005", + "0x36502d1aa00a03c02836300536b00536300501b02803200536b005032005", + "0x9202802836b00502800702803603c00c0316a203336c35d03136b007032", + "0x536b00502859b02804000536b00535d00503102835d00536b00535d005", + "0x59e02821535600736b00535900559d02835900536b00535e00559c02835e", + "0x536b00521c0051c802821c00536b00521500559f02802836b005356005", + "0x4704800736b00500b0460300310e302804600536b00504600501b028046", + "0x5a502823704500736b0050470180075a002804700536b00504700501b028", + "0x4f3630072de02823b00536b00523900533a02823923700736b005237005", + "0x24924500736b00524500535d02824500536b00502803202823f00536b005", + "0x23f00501b02824900536b00524900503302804000536b005040005092028", + "0x4800536b0050480050c602803300536b00503300501b02823f00536b005", + "0x24c00736b00723f23b24936c04000b00c02804500536b00504500504f028", + "0x24c00536b00524c00509202802836b00502800702825224f24e0316a324d", + "0x92370075a602800900536b00502837302805000536b00524c005031028", + "0x536b00505000509202805800536b0050920330072de02805b00536b005", + "0x501b02805b00536b00505b00508802824500536b005245005033028050", + "0x316a405c05900736b00705805b24524d05000b00c02805800536b005058", + "0x503102805900536b00505900509202802836b00502800702825e25d25c", + "0x536b00506000a0070fb02806000536b00502803002805e00536b005059", + "0x509202804500536b00504500504f02805d00536b00505f0050f902805f", + "0x536b00505c0050c002804800536b0050480050c602805e00536b00505e", + "0x502800702805d05c04805e04500b00505d00536b00505d0052c802805c", + "0x503102825c00536b00525c00509202802836b00500a00532102802836b", + "0x536b00525d0050c002829800536b00529600509202829600536b00525c", + "0x36b0050280070280286a500502804d02806700536b00525e005215028042", + "0x503300501f02802836b0052370055a702802836b00500a005321028028", + "0x24e00509202802836b00509200501f02802836b00524500521c02802836b", + "0x29800536b0052bd0050920282bd00536b00524e00503102824e00536b005", + "0x502802302806700536b00525200521502804200536b00524f0050c0028", + "0x600536b00506800510202806800536b00506706900702d02806900536b", + "0x480050c602829800536b00529800509202804500536b00504500504f028", + "0x600536b0050060052c802804200536b0050420050c002804800536b005", + "0x2836b00504f00501f02802836b00502800702800604204829804500b005", + "0x36b00500b00501f02802836b00536300501f02802836b00500a005321028", + "0xc00503102800c00536b00500c00509202802836b00509200501f028028", + "0x32500536b00503c0050c002807100536b00506f00509202806f00536b005", + "0x2836b0050280070280286a600502804d02807400536b005036005215028", + "0x36b00536500521c02802836b00500a00532102802836b00504f00501f028", + "0x53660055a702802836b00509200501f02802836b00500b00501f028028", + "0x9202807500536b0050c00050310280c000536b0050c000509202802836b", + "0x36b00536100521502832500536b0050840050c002807100536b005075005", + "0x10202834c00536b00507407700702d02807700536b005028023028074005", + "0x36b00507100509202801800536b00501800504f02834b00536b00534c005", + "0x2c802832500536b0053250050c002803000536b0050300050c6028071005", + "0x736b00504f0050d502834b32503007101800b00534b00536b00534b005", + "0x559d0281c800536b00501000559c02801000536b00502859b02800f092", + "0x536b00501300559f02802836b00504e00559e02801304e00736b0051c8", + "0x1b02803009200736b0050920050dc02804d00536b0050140051c8028014", + "0x501b02801801700736b00503004d0310310e302804d00536b00504d005", + "0x53680055a102836836900736b0050180280075a002801800536b005018", + "0x2802836b00501c0055a302836701c00736b00501b0055a202801b00536b", + "0x501f0055a502801f00536b00536600510c02836600536b0053670055a4", + "0x2836400536b00502803202836500536b00502000533a02802001f00736b", + "0x170050c602802300536b00502300503302802336400736b00536400535d", + "0x736502300a00500a03c02836900536b00536900504f02801700536b005", + "0x2d00509202802836b0050280070281aa3610840316a70c036302d03136b", + "0x2803200536b00502837302835f00536b00502d00503102802d00536b005", + "0x36400503302835f00536b00535f00509202835d00536b00503201f0075a6", + "0xc000536b0050c000501b02835d00536b00535d00508802836400536b005", + "0x702804003603c0316a800c03336c03136b00735d36436335f00a03c028", + "0x35e00536b00536c00503102836c00536b00536c00509202802836b005028", + "0x35e00509202800c00536b00500c00501b02803300536b0050330050c0028", + "0x2804621c2150316a935635900736b0070c03690070ac02835e00536b005", + "0x536b00504800509202804800536b00535e00503102802836b005028007", + "0x502800702823b2392370316aa04504700736b00700c3590070ac028048", + "0x2824924500736b00500f0052f802823f00536b00504800503102802836b", + "0x2802836b00524d00530f02824f24e24d24c00a36b0052453560070315a8", + "0x24904524c0315a802825200536b00524e0050b902802836b00524f00530f", + "0x36b00505800530f02802836b00500900530f02805805b00905000a36b005", + "0x5c00559c02805c00536b00502859b02805900536b00505b0050b9028028", + "0x2836b00525d00559e02825e25d00736b00525c00559d02825c00536b005", + "0x6000501b02806000536b00505e0051c802805e00536b00525e00559f028", + "0x505d00501b02805d05f00736b0050920600170310e302806000536b005", + "0x736b0052980055a502829829600736b00505d0470075a002805d00536b", + "0x535d0282bd00536b00502803202806700536b00504200533a028042298", + "0x36b00506900503302823f00536b00523f0050920280692bd00736b0052bd", + "0x1b02805000536b00505000530702825200536b00525200501b028069005", + "0x36b00529600504f02805f00536b00505f0050c602805900536b005059005", + "0x32507106f0316ab00606800736b00725206706903323f00b00c028296005", + "0x36b00506800503102806800536b00506800509202802836b005028007028", + "0x9202807700536b0050752980075a602807500536b005028373028074005", + "0x36b0050770050880282bd00536b0052bd00503302807400536b005074005", + "0x7907a0430316ac34b34c00736b0070590772bd00607400b00c028077005", + "0x36b00534c00503102834c00536b00534c00509202802836b005028007028", + "0xf902808100536b00534800b0070fb02834800536b00502803002807f005", + "0x36b00507f00509202829600536b00529600504f02807d00536b005081005", + "0xc002805f00536b00505f0050c602805000536b00505000530702807f005", + "0x5f05007f29604f00507d00536b00507d0052c802834b00536b00534b005", + "0x504300509202802836b00500b00532102802836b00502800702807d34b", + "0x2834500536b00534600509202834600536b00504300503102804300536b", + "0x6ad00502804d02834300536b00507900521502834400536b00507a0050c0", + "0x36b00505900501f02802836b00500b00532102802836b005028007028028", + "0x506f00509202802836b0052bd00521c02802836b0052980055a7028028", + "0x2834500536b00534200509202834200536b00506f00503102806f00536b", + "0x36b00502802302834300536b00532500521502834400536b0050710050c0", + "0x2808c00536b00533d00510202833d00536b00534334100702d028341005", + "0x505000530702834500536b00534500509202829600536b00529600504f", + "0x2834400536b0053440050c002805f00536b00505f0050c602805000536b", + "0x36b00502800702808c34405f05034529604f00508c00536b00508c0052c8", + "0x500b00532102802836b00523b00530f02802836b00523900530f028028", + "0x35600530f02802836b00500f00539902802836b00509200501f02802836b", + "0x24502833b00536b00502802002833c00536b00504800503102802836b005", + "0x36b00508a33b00736402808a00536b00508a00501b02808a00536b005028", + "0x10202808800536b00533a33900702d02833900536b00502802302833a005", + "0x36b00533c00509202823700536b00523700504f02833800536b005088005", + "0xc002801700536b0050170050c602800700536b00500700530702833c005", + "0x1700733c23704f00533800536b0053380052c802803300536b005033005", + "0x504600530f02802836b00521c00530f02802836b005028007028338033", + "0xf00539902802836b00509200501f02802836b00500b00532102802836b", + "0x2002833700536b00535e00503102802836b00500c00501f02802836b005", + "0x8600536b00508600501b02808600536b00502824502833600536b005028", + "0x37700702d02837700536b00502802302808e00536b005086336007364028", + "0x536b00521500504f02833200536b00533300510202833300536b00508e", + "0x50c602800700536b00500700530702833700536b005337005092028215", + "0x536b0053320052c802803300536b0050330050c002801700536b005017", + "0x50c000501f02802836b00502800702833203301700733721504f005332", + "0xf00539902802836b00509200501f02802836b00500b00532102802836b", + "0x2833100536b00503c00503102803c00536b00503c00509202802836b005", + "0x504000521502832f00536b0050360050c002833000536b005331005092", + "0x536400521c02802836b0050280070280286ae00502804d02832e00536b", + "0xf00539902802836b00509200501f02802836b00500b00532102802836b", + "0x3102808400536b00508400509202802836b00501f0055a702802836b005", + "0x36b0053610050c002833000536b00532d00509202832d00536b005084005", + "0x702d02832c00536b00502802302832e00536b0051aa00521502832f005", + "0x36b00536900504f02832b00536b00508b00510202808b00536b00532e32c", + "0xc602800700536b00500700530702833000536b005330005092028369005", + "0x36b00532b0052c802832f00536b00532f0050c002801700536b005017005", + "0x285aa02800a00536b0050285a902832b32f01700733036904f00532b005", + "0xb00536b00500b00501b02800a00536b00500a00501b02800b00536b005", + "0x503102802836b0050280070280286af04f00536b00700b00a0072da028", + "0x536b00504f0055ab02804f00536b00504f0050ee02809200536b005005", + "0x501000501b0281c800536b0050285ad02801000536b0050285ac02800f", + "0x2809200536b0050920050920281c800536b0051c800501b02801000536b", + "0x9200503102802836b0050280070280286b004e00536b0071c80100072da", + "0x1400536b00504e0055ab02804e00536b00504e0050ee02801300536b005", + "0x55ae02801300536b00501300509202804d01400736b005014005372028", + "0x536b00501300503102802836b0050280070280300056b102836b00704d", + "0x55af02836900536b00501700509202801800536b0050280050da028017", + "0x55b102802836b0050280070280286b200502804d02836800536b005014", + "0x2801c00536b0050282d702801b00536b00501300503102802836b005014", + "0x36701c02800a2d602836700536b00536700501b02836700536b0050285b2", + "0x36b00501b00509202801f00536b00501f0055b302801f36600736b005030", + "0x286b302000536b00701f0055b502836600536b0053660050da02801b005", + "0x36b0050200055ab02836500536b00501b00503102802836b005028007028", + "0x5af02836900536b00536500509202801800536b0053660050da028364005", + "0x3102802836b0050280070280286b200502804d02836800536b005364005", + "0x536b0053660050da02802d00536b0050285b602802300536b00501b005", + "0x537202836800536b00502d0055af02836900536b005023005092028018", + "0x50280070280c00056b402836b0073630055ae02836336800736b005368", + "0x509202808400536b00536900503102802836b0053680055b102802836b", + "0x280286b500502804d0281aa00536b00500f0055af02836100536b005084", + "0x536b00535f00509202835f00536b00536900503102802836b005028007", + "0x55b702802836b0050280070280320056b602836b00700f0055ae02835f", + "0x36100536b00535d00509202835d00536b00535f00503102802836b0050c0", + "0x2836b0050280070280286b500502804d0281aa00536b0053680055af028", + "0x36b0050282d702836c00536b00535f00503102802836b0053680055b1028", + "0x2800c00536b00500c0055b302800c00536b0050c00330075b8028033005", + "0x36c00509202803c00536b00503c0055b302803c00536b00503200c0075b8", + "0x2836b0050280070280286b703600536b00703c0055b502836c00536b005", + "0x4000509202835e00536b0050360055ab02804000536b00536c005031028", + "0x70280286b500502804d0281aa00536b00535e0055af02836100536b005", + "0x2835600536b0050285b602835900536b00536c00503102802836b005028", + "0x71aa0055ae0281aa00536b0053560055af02836100536b005359005092", + "0x3102802836b00503100532102802836b0050280070282150056b802836b", + "0x4800536b00502824502804600536b00502802002821c00536b005361005", + "0x2802302804700536b00504804600736402804800536b00504800501b028", + "0x536b00523700510202823700536b00504704500702d02804500536b005", + "0x50c002821c00536b00521c00509202801800536b0050180050da028239", + "0x2823900721c01800a00523900536b0052390052c802800700536b005007", + "0x736b00521500537102823b00536b00536100503102802836b005028007", + "0x33a02824c24900736b0052490055a502824900536b0050285b902824523f", + "0x736b00524e00535d02824e00536b00502803202824d00536b00524c005", + "0x8802824f00536b00524f00503302823b00536b00523b00509202824f24e", + "0x6b905025200736b00723f24d24f00723b00b00c02824d00536b00524d005", + "0x3102825200536b00525200509202802836b00502800702805805b009031", + "0x536b0052490055ba02805c00536b00502837302805900536b005252005", + "0x3302805900536b00505900509202825c00536b00505c2490075a6028249", + "0x24e05005900b00c02825c00536b00525c00508802824e00536b00524e005", + "0x9202802836b00502800702805f06005e0316ba25e25d00736b00724525c", + "0x536b00502803002805d00536b00525d00503102825d00536b00525d005", + "0xda02804200536b0052980050f902829800536b0052960310070fb028296", + "0x36b00525e0050c002805d00536b00505d00509202801800536b005018005", + "0x502800702804225e05d01800a00504200536b0050420052c802825e005", + "0x503102805e00536b00505e00509202802836b00503100532102802836b", + "0x536b0050600050c00282bd00536b00506700509202806700536b00505e", + "0x36b0050280070280286bb00502804d02806800536b00505f005215028069", + "0x52490055a702802836b00524500501f02802836b005031005321028028", + "0x503102800900536b00500900509202802836b00524e00521c02802836b", + "0x536b00505b0050c00282bd00536b00500600509202800600536b005009", + "0x6f00702d02806f00536b00502802302806800536b005058005215028069", + "0x536b0050180050da02832500536b00507100510202807100536b005068", + "0x52c802806900536b0050690050c00282bd00536b0052bd005092028018", + "0x55b102802836b0050280070283250692bd01800a00532500536b005325", + "0x2807400536b00509200503102802836b00503100532102802836b00500f", + "0x536b00507700501b02807700536b00502824502807500536b005028020", + "0x702d02834b00536b00502802302834c00536b005077075007364028077", + "0x36b0050280050da02807a00536b00504300510202804300536b00534c34b", + "0x2c802800700536b0050070050c002807400536b005074005092028028005", + "0x32102802836b00502800702807a00707402800a00507a00536b00507a005", + "0x7f00536b00502802002807900536b00500500503102802836b005031005", + "0x34807f00736402834800536b00534800501b02834800536b005028245028", + "0x34600536b00508107d00702d02807d00536b00502802302808100536b005", + "0x7900509202802800536b0050280050da02834500536b005346005102028", + "0x34500536b0053450052c802800700536b0050070050c002807900536b005", + "0x100316bc00f09204f03136b00703100500714602834500707902800a005", + "0x4f00503102804f00536b00504f00509202802836b00502800702804e1c8", + "0x1400536b00500f00514a02800f00536b00500f00514802801300536b005", + "0x2802836b00504d0055bb02836901801703004d00b36b00501400514b028", + "0x2836b00536900501f02802836b00501800525d02802836b00501700525d", + "0x502859b02836800536b00503000515102803000536b005030005156028", + "0x36636700736b00501c00559d02801c00536b00501b00559c02801b00536b", + "0x501f0051c802801f00536b00536600559f02802836b00536700559e028", + "0x2000536b00502000501b02836500b00736b00500b0050dc02802000536b", + "0x2802300536b00502300501b02802336400736b0053650200070310e3028", + "0x55a20280c000536b0053630055a102836302d00736b0050230280075a0", + "0x536b0053610055a402802836b0050840055a302836108400736b0050c0", + "0x33a02803235f00736b00535f0055a502835f00536b0051aa00510c0281aa", + "0x736b00536c00535d02836c00536b00502803202835d00536b005032005", + "0x31e02803300536b00503300503302801300536b00501300509202803336c", + "0x36b00502d00504f02836400536b0053640050c602836800536b005368005", + "0x35935e0400316bd03603c00c03136b00735d03309201300a03c02802d005", + "0x36b00500c00503102800c00536b00500c00509202802836b005028007028", + "0x9202821c00536b00521535f0075a602821500536b005028373028356005", + "0x36b00521c00508802836c00536b00536c00503302835600536b005356005", + "0x3136b00721c36c03c35600a03c02803600536b00503600501b02821c005", + "0x36b00504600509202802836b0050280070282392370450316be047048046", + "0x24924523f01436b0053680052a302823b00536b005046005031028046005", + "0x525d02802836b00523f00501f02805905805b00905025224f24e24d24c", + "0x1f02802836b00524d00501f02802836b00524900530f02802836b005245", + "0x2802836b00525200513f02802836b00524f00501f02802836b00524e005", + "0x2836b00505b00521c02802836b00500900523702802836b00505000530f", + "0x36b00524c0052c902802836b00505900523702802836b00505800521c028", + "0x2804800536b0050480050c002825c00536b00505c00500a02805c24c007", + "0x725c00500f02823b00536b00523b00509202804700536b00504700501b", + "0x2836b00525d00501c02802836b00502800702805e0056bf25e25d00736b", + "0x50280e102805f00536b00525e00501002806000536b00523b005031028", + "0x2805d00536b00505d00503302829600536b00524c00500a02805d00536b", + "0x29602d0315bc02805f00536b00505f00501b02806000536b005060005092", + "0x506000503102802836b0050280070280670056c004229800736b00705d", + "0x2806900536b00504200501002804200536b0050420055bd0282bd00536b", + "0x36b00500600559d02800600536b00506800559c02806800536b00502859b", + "0x1c802832500536b00507100559f02802836b00506f00559e02807106f007", + "0xb0743640310e302807400536b00507400501b02807400536b005325005", + "0x36b0050772980075a002807700536b00507700501b02807707500736b005", + "0x7a00536b00504300533a02804334b00736b00534b0055a502834b34c007", + "0x2803202807f00536b0050790360072de02807900536b00505f0051c8028", + "0x536b0052bd00509202808134800736b00534800535d02834800536b005", + "0x501b02807f00536b00507f00501b02808100536b0050810050330282bd", + "0x536b00534c00504f02807500536b0050750050c602806900536b005069", + "0x283433443450316c134607d00736b00707f07a0810482bd00b00c02834c", + "0x536b00507d00503102807d00536b00507d00509202802836b005028007", + "0x51c802833d00536b00534134b0075a602834100536b005028373028342", + "0x36b00534200509202833c00536b00508c0470072de02808c00536b005069", + "0x1b02833d00536b00533d00508802834800536b005348005033028342005", + "0x6c208a33b00736b00733c33d34834634200b00c02833c00536b00533c005", + "0x3102833b00536b00533b00509202802836b00502800702808833933a031", + "0x36b00533700a0070fb02833700536b00502803002833800536b00533b005", + "0x9202834c00536b00534c00504f02808600536b0053360050f9028336005", + "0x36b00508a0050c002807500536b0050750050c602833800536b005338005", + "0x2800702808608a07533834c00b00508600536b0050860052c802808a005", + "0x3102833a00536b00533a00509202802836b00500a00532102802836b005", + "0x36b0053390050c002837700536b00508e00509202808e00536b00533a005", + "0x50280070280286c300502804d02833200536b005088005215028333005", + "0x6900501f02802836b00534b0055a702802836b00500a00532102802836b", + "0x509202802836b00504700501f02802836b00534800521c02802836b005", + "0x536b00533100509202833100536b00534500503102834500536b005345", + "0x2802302833200536b00534300521502833300536b0053440050c0028377", + "0x536b00532f00510202832f00536b00533233000702d02833000536b005", + "0x50c602837700536b00537700509202834c00536b00534c00504f02832e", + "0x536b00532e0052c802833300536b0053330050c002807500536b005075", + "0x36b00503600501f02802836b00502800702832e33307537734c00b00532e", + "0x500b00501f02802836b00505f00501f02802836b00500a005321028028", + "0x2802002832d00536b00506000503102802836b00504700501f02802836b", + "0x2808b00536b00508b00501b02808b00536b00502825602832c00536b005", + "0x32b32a00702d02832a00536b00502802302832b00536b00508b32c007364", + "0x6700536b00506700504f02832600536b00532900510202832900536b005", + "0x480050c002836400536b0053640050c602832d00536b00532d005092028", + "0x2832604836432d06700b00532600536b0053260052c802804800536b005", + "0x2802836b00503600501f02802836b00505e00501c02802836b005028007", + "0x2836b00504700501f02802836b00500b00501f02802836b00500a005321", + "0x36b00502802002808500536b00523b00503102802836b00524c005237028", + "0x736402809500536b00509500501b02809500536b005028256028093005", + "0x36b00532409800702d02809800536b00502802302832400536b005095093", + "0x9202802d00536b00502d00504f02809600536b005323005102028323005", + "0x36b0050480050c002836400536b0053640050c602808500536b005085005", + "0x2800702809604836408502d00b00509600536b0050960052c8028048005", + "0x532302802836b00500a00532102802836b00503600501f02802836b005", + "0x2804500536b00504500509202802836b00500b00501f02802836b005368", + "0x52370050c002832100536b00532200509202832200536b005045005031", + "0x280070280286c400502804d02831e00536b00523900521502831f00536b", + "0x532302802836b00500a00532102802836b00536c00521c02802836b005", + "0x9202802836b00535f0055a702802836b00500b00501f02802836b005368", + "0x36b00531d00509202831d00536b00504000503102804000536b005040005", + "0x2302831e00536b00535900521502831f00536b00535e0050c0028321005", + "0x36b00531b00510202831b00536b00531e31c00702d02831c00536b005028", + "0xc602832100536b00532100509202802d00536b00502d00504f02831a005", + "0x36b00531a0052c802831f00536b00531f0050c002836400536b005364005", + "0x500a00532102802836b00502800702831a31f36432102d00b00531a005", + "0x503102801000536b00501000509202802836b00500b00501f02802836b", + "0x536b00504e31800702d02831800536b00502802302831900536b005010", + "0x509202802800536b00502800504f02831600536b005317005102028317", + "0x536b0051c80050c002800700536b0050070050c602831900536b005319", + "0x50285be0283161c800731902800b00531600536b0053160052c80281c8", + "0x2837602804e00536b0050285c002801000536b0050285bf02809200536b", + "0x50285c102802836b00502836902802836b00502824c02801400536b005", + "0x285c202801700536b0050285c202803000536b0050285c202804d00536b", + "0x53690055c402836900536b00501801703004d00a5c302801800536b005", + "0x2802836b0050280070280286c536800536b0073690055c502836900536b", + "0x50285c702836701c00736b0050310055c602801b00536b00500a005031", + "0x5c802802000536b0050285c202801f00536b0053660055c802836600536b", + "0x536b0053640055c802836400536b0050285c202836500536b005020005", + "0x1f00a5c902836300536b00502d0055c802802d00536b0050285c2028023", + "0x50c00055cb02836700536b0053670055ca0280c000536b005363023365", + "0x2801c00536b00501c0050db02801b00536b00501b0050920280c000536b", + "0x55cc02802836b0050280070283610056c608400536b0070c0367007370", + "0x32102802836b00504e0055ce02802836b0050100055cd02802836b005084", + "0x2802836b0050140055d002802836b0050920055cf02802836b00500b005", + "0x536b0050280200281aa00536b00501b00503102802836b0053680055d2", + "0x35f00736402803200536b00503200501b02803200536b0050285d302835f", + "0x536b00535d36c00702d02836c00536b00502802302835d00536b005032", + "0x52f602802800536b00502800504f02800c00536b005033005102028033", + "0x536b00501c0050db02800700536b0050070052e902800500536b005005", + "0x2804f00500c00536b00500c0052c80281aa00536b0051aa00509202801c", + "0x2803c00536b00501b00503102802836b00502800702800c1aa01c007005", + "0x536b0050285c202804000536b0050360055c802803600536b0050285d4", + "0x3560055c802835600536b0050285c202835900536b00535e0055c802835e", + "0x2804600536b00521c0055c802821c00536b0050285c202821500536b005", + "0x9202804800536b0050480055cb02804800536b00504621535904000a5c9", + "0x70280450056c704700536b00704836100737002803c00536b00503c005", + "0x2823900536b0050285d602823700536b00503c00503102802836b005028", + "0x536b00523b0055d902823f00536b0050285d802823b00536b0050285d7", + "0x925db02823700536b00523700509202823f00536b00523f0055da02823b", + "0x2824e24d24c24900a6c824501304f03136b00723f23b368047239007005", + "0x736b0052450055dc02824f00536b00523700503102802836b005028007", + "0x736f02804f00536b00504f0920075dd02802836b00502800b028050252", + "0x36b0070500055de02824f00536b00524f00509202801300536b005013014", + "0x2805800536b00524f00503102802836b00502800702805b0056c9009005", + "0x702805c0056ca05900536b0070090055df02805800536b005058005092", + "0x25c00536b00525c00509202825c00536b00505800503102802836b005028", + "0x503102802836b00502800702825e0056cb25d00536b0070590055e0028", + "0x536b00505e00509202806000536b00525d0055e102805e00536b00525c", + "0x36b0050280070280286cc00502804d02805d00536b0050600055e202805f", + "0x55e202805f00536b00529600509202829600536b00525c005031028028", + "0x503102802836b0050280070280286cc00502804d02805d00536b00525e", + "0x536b00505c0055e202805f00536b00529800509202829800536b005058", + "0x536b00524f00503102802836b0050280070280286cc00502804d02805d", + "0x2836902805d00536b00505b0055e202805f00536b005042005092028042", + "0x6700736b00525200536e0281c800536b00505d01c0075e302802836b005", + "0x36b0050285c202806900536b0050285d402802836b0050670055e40282bd", + "0x6900a5e502806f00536b0050285c202800600536b0050285c2028068005", + "0x3250055e402807432500736b00507100536e02807100536b00506f006068", + "0x2807400536b0050740055e60282bd00536b0052bd0055e602802836b005", + "0x52e00281c800536b0051c804e0075e802807500536b0050742bd0075e7", + "0x36b00507700504702802836b00502800702834c0056cd07700536b007075", + "0x50285e902834b00536b00505f00503102802836b00500b005321028028", + "0x285ea02807900536b00502803202807a00536b00502823b02804300536b", + "0x536b00507907a04303137802834800536b0050285eb02807f00536b005", + "0x501b02808100536b0050810055ec02802800536b00502800504f028081", + "0x34807f08102800a5ed02834800536b00534800503302807f00536b00507f", + "0x536b0073460055ee02834b00536b00534b00509202834607d00736b005", + "0x5ef02834300536b00534b00503102802836b0050280070283440056ce345", + "0x536b0050285f002802836b00534100504702834134200736b005345005", + "0x3420055ec02807d00536b00507d00504f02808c00536b0050285eb02833d", + "0x8c00536b00508c00503302833d00536b00533d00501b02834200536b005", + "0x34300536b00534300509202833b33c00736b00508c33d34207d00a5ed028", + "0x503102802836b00502800702833a0056cf08a00536b00733b0055ee028", + "0x36b00533800504702833808800736b00508a0055ef02833900536b005343", + "0x533c00504f02833600536b0050285eb02833700536b0050285f1028028", + "0x2833700536b00533700501b02808800536b0050880055ec02833c00536b", + "0x2808e08600736b00533633708833c00a5ed02833600536b005336005033", + "0x70283330056d037700536b00708e0055ee02833900536b005339005092", + "0x33100736b0053770055ef02833200536b00533900503102802836b005028", + "0x36b0050282f302832f00536b0050285f202802836b005330005047028330", + "0x1b02833100536b0053310055ec02808600536b00508600504f02832e005", + "0x32f33108600a5ed02832e00536b00532e00503302832f00536b00532f005", + "0x36b00732c0055ee02833200536b00533200509202832c32d00736b00532e", + "0x2832a00536b00533200503102802836b00502800702832b0056d108b005", + "0x536b00532600501b02832600536b0050285f302832900536b005028020", + "0x2809300f00736b00508b0055ef02808500536b005326329007364028326", + "0x500f0055f502800f00536b00500f0100075f402802836b005093005047", + "0x9832400736b00532400536d02802836b0050950055f702832409500736b", + "0x521c02802836b00509600501f02832209632303136b0050980055f8028", + "0x536b0053210055fb02832132300736b0053230055fa02802836b005322", + "0x736402831e00536b00531e00501b02831e00536b00531f00507402831f", + "0x36b00532d00504f02831c00536b0053230055fc02831d00536b00531e085", + "0x21502831c00536b00531c0055fd02832a00536b00532a00509202832d005", + "0x2831931a31b03136b00531d31c32a32d00a5fe02831d00536b00531d005", + "0x50280070283170056d231800536b00731900500602802836b00502800b", + "0x2831331400736b00531800506f02831600536b00531a00503102802836b", + "0x53110055f802831132400736b00532400536d02802836b005313005047", + "0x2802836b0050b000521c02802836b0050a90056000280b03100a903136b", + "0x3240055f802830f00536b0050ac3140073640280ac00536b0053100051c8", + "0x2836b0050b400501f02802836b00530d0056000280b60b430d03136b005", + "0x30f0073640280b900536b00530b00507402830b00536b0050b6005172028", + "0x536b00530900521502830800536b00531600509202830900536b0050b9", + "0x2836b00532400560102802836b0050280070280286d300502804d028307", + "0x534c0280bf30500736b00531700507702830600536b00531a005031028", + "0x30700536b0050bf00521502830800536b00530600509202802836b005305", + "0x36b00530730400702d02830400536b00502802302802836b005028369028", + "0x2f602831b00536b00531b00504f02830200536b005303005102028303005", + "0x36b0051c80050db02801300536b0050130052e902804f00536b00504f005", + "0x4f00530200536b0053020052c802830800536b0053080050920281c8005", + "0x2802836b0050100055cd02802836b0050280070283023081c801304f31b", + "0x532d00504f02839300536b00532b00510202805100536b005332005031", + "0x2801300536b0050130052e902804f00536b00504f0052f602832d00536b", + "0x53930052c802805100536b0050510050920281c800536b0051c80050db", + "0x55cd02802836b0050280070283930511c801304f32d04f00539300536b", + "0x39500536b00533300510202839400536b00533900503102802836b005010", + "0x130052e902804f00536b00504f0052f602808600536b00508600504f028", + "0x39400536b0053940050920281c800536b0051c80050db02801300536b005", + "0x50280070283953941c801304f08604f00539500536b0053950052c8028", + "0x51020280dc00536b00534300503102802836b0050100055cd02802836b", + "0x536b00504f0052f602833c00536b00533c00504f02839600536b00533a", + "0x50920281c800536b0051c80050db02801300536b0050130052e902804f", + "0xdc1c801304f33c04f00539600536b0053960052c80280dc00536b0050dc", + "0x36b00534b00503102802836b0050100055cd02802836b005028007028396", + "0x2f602807d00536b00507d00504f0280c600536b0053440051020280c7005", + "0x36b0051c80050db02801300536b0050130052e902804f00536b00504f005", + "0x4f0050c600536b0050c60052c80280c700536b0050c70050920281c8005", + "0x2802836b00534c00504702802836b0050280070280c60c71c801304f07d", + "0x536b0050280300280c900536b00505f00503102802836b0050100055cd", + "0x4f02830100536b0050cf0050f90280cf00536b0050cb00b0070fb0280cb", + "0x36b0050130052e902804f00536b00504f0052f602802800536b005028005", + "0x2c80280c900536b0050c90050920281c800536b0051c80050db028013005", + "0x2836b0050280070283010c91c801304f02804f00530100536b005301005", + "0x36b00504e0055ce02802836b0050100055cd02802836b00524d005602028", + "0x50140055d002802836b0050920055cf02802836b00500b005321028028", + "0x2860302830c00536b00502802002839700536b00523700503102802836b", + "0x536b00539830c00736402839800536b00539800501b02839800536b005", + "0x524c0052e90282fa00536b0050285d80280d400536b0050285d70282fb", + "0x282fa00536b0052fa0055da0280d400536b0050d40055d902824c00536b", + "0x2802836b00502800b0282f83990d503136b0052fa0d424e24c01c00b604", + "0x52fb00521502839700536b00539700509202824900536b0052490052f6", + "0x2839900536b0053990052e90280d500536b0050d50050db0282fb00536b", + "0x39700503102802836b0050280070282f10056d42f700536b0072f80055de", + "0x2ee00536b0072f70055df0280da00536b0050da0050920280da00536b005", + "0x50920280d200536b0050da00503102802836b0050280070282ec0056d5", + "0x50280070280db0056d62ef00536b0072ee0055e00280d200536b0050d2", + "0x920282e900536b0052ef0055e10282f600536b0050d200503102802836b", + "0x286d700502804d0282e700536b0052e90055e20282e800536b0052f6005", + "0x36b0050df0050920280df00536b0050d200503102802836b005028007028", + "0x50280070280286d700502804d0282e700536b0050db0055e20282e8005", + "0x5e20282e800536b0052f50050920282f500536b0050da00503102802836b", + "0x3102802836b0050280070280286d700502804d0282e700536b0052ec005", + "0x36b0052f10055e20282e800536b0050e10050920280e100536b005397005", + "0x280230282f300536b0052e70d50075e302802836b0050283690282e7005", + "0x536b0050e30051020280e300536b0052fb2f200702d0282f200536b005", + "0x52e902824900536b0052490052f602802800536b00502800504f0282f4", + "0x536b0052e80050920282f300536b0052f30050db02839900536b005399", + "0x280070282f42e82f339924902804f0052f400536b0052f40052c80282e8", + "0x55ce02802836b0050100055cd02802836b00504500560502802836b005", + "0x5d002802836b0050920055cf02802836b00500b00532102802836b00504e", + "0x2e000536b00503c00503102802836b0053680055d202802836b005014005", + "0x36b0052dd00501b0282dd00536b0050286070282de00536b005028020028", + "0x2d0282db00536b0050280230281a600536b0052dd2de0073640282dd005", + "0x502800504f0282d700536b0052da0051020282da00536b0051a62db007", + "0x2800700536b0050070052e902800500536b0050050052f602802800536b", + "0x52d70052c80282e000536b0052e000509202801c00536b00501c0050db", + "0x55cd02802836b0050280070282d72e001c00700502804f0052d700536b", + "0x5cf02802836b00500b00532102802836b00504e0055ce02802836b005010", + "0xea00536b00500a00503102802836b0050140055d002802836b005092005", + "0x36b0052d600501b0282d600536b0050282450280ee00536b005028020028", + "0x2d0282d300536b0050280230282d400536b0052d60ee0073640282d6005", + "0x502800504f0282d100536b0052d20051020282d200536b0052d42d3007", + "0x2800700536b0050070052e902800500536b0050050052f602802800536b", + "0x52d10052c80280ea00536b0050ea00509202803100536b0050310050db", + "0x700500736b0050280056080282d10ea03100700502804f0052d100536b", + "0x36b0050285c202800a00536b0050310055c802803100536b0050285c7028", + "0x55c802809200536b0050285c202804f00536b00500b0055c802800b005", + "0x1c800536b0050100055c802801000536b0050285c202800f00536b005092", + "0x2800700536b00500700560902804e00536b0051c800f04f00a00a5c9028", + "0x4e00700760a02800500536b0050050050db02804e00536b00504e0055cb", + "0x2836b00501300560b02802836b0050280070280140056d801300536b007", + "0x2802836b00501400560d02802836b0050280070280286d900502804d028", + "0x36b00503000529702803000536b00504d00517402804d00536b005028030", + "0x700501700536b00501700514302800500536b0050050050db028017005", + "0x3136b00704f00502803132e02804f03100736b005031005396028017005", + "0x36b00509200509202802836b00502800702801304e1c80316da01000f092", + "0x533a02804d00536b00502860e02801400536b005092005031028092005", + "0x2801800536b00502803202801700536b00502860f02803000536b00504d", + "0x503000508802801800536b00501800503302801400536b005014005092", + "0x2801000536b00501000533d02801700536b00501700501b02803000536b", + "0x2800702836701c01b0316db36836900736b00701703001800f01400b00c", + "0x2836600536b00536900503102836900536b00536900509202802836b005", + "0x502000535e02802836b00501f00504002802001f00736b00500b005036", + "0xa00736b00500a0050dc02836403100736b00503100539602836500536b", + "0x3136b00736502336436836600b25e02836600536b005366005092028023", + "0x36b0050c000523702802836b0050280070281aa3610840316dc0c036302d", + "0x503100525d02802836b00501000534302802836b005007005321028028", + "0x503102802d00536b00502d00509202802836b00500a00501f02802836b", + "0x2835d00536b0050285f302803200536b00502802002835f00536b00502d", + "0x502823b02836c00536b00535d03200736402835d00536b00535d00501b", + "0xc00536b00503336c00736402803300536b00503300501b02803300536b", + "0x3c00c00736402803c00536b00503c00501b02803c00536b005028610028", + "0x2804000536b00504000501b02804000536b00502823902803600536b005", + "0x35e35900702d02835900536b00502802302835e00536b005040036007364", + "0x35f00536b00535f00509202821500536b00535600510202835600536b005", + "0x36335f03100521500536b0052150052c802836300536b0053630050c0028", + "0x508400503102808400536b00508400509202802836b005028007028215", + "0x2802836b00504600504002804804600736b0051aa00503602821c00536b", + "0x521c00509202836100536b0053610050c002804800536b005048005013", + "0x36b0050280070282370056dd04504700736b00704800561202821c00536b", + "0x501002804500536b0050450055bd02823900536b00521c005031028028", + "0x24500536b00502861302823f00536b00523b0051c802823b00536b005045", + "0x501b02824900536b00524523f00732c02823f00536b00523f00501b028", + "0x536b00523900509202804700536b00504700501302824900536b005249", + "0x503102802836b00502800702824c0056de02836b007249005348028239", + "0x736b00704700561202824d00536b00524d00509202824d00536b005239", + "0x3102802836b00524e00501c02802836b0050280070282520056df24f24e", + "0x36b00524f00501002824f00536b00524f0055bd02805000536b00524d005", + "0x50dc02805800536b00502861402805b00536b0050090051c8028009005", + "0x505c00501b02805c00536b00505805900732c02805900a00736b00500a", + "0x2805b00536b00505b00501b02805000536b00505000509202805c00536b", + "0x500a00501f02802836b00502800702825c0056e002836b00705c005348", + "0x732c02825e00536b00502861602825d00536b00505000503102802836b", + "0x36b00525d00509202805e00536b00505e00501b02805e00536b00525e05b", + "0x3102802836b0050280070280600056e102836b00705e00534802825d005", + "0x286e200502804d02805d00536b00505f00509202805f00536b00525d005", + "0x2836b00500700532102802836b00506000534602802836b005028007028", + "0x36b00525d00503102802836b00503100525d02802836b005010005343028", + "0x4200501b02804200536b00502861702829800536b005028020028296005", + "0x2bd00536b00502802302806700536b00504229800736402804200536b005", + "0x509202806800536b00506900510202806900536b0050672bd00702d028", + "0x536b0050680052c802836100536b0053610050c002829600536b005296", + "0x2802836b00525c00534602802836b005028007028068361296031005068", + "0x36b00500a0050dc02806f00536b00502810102800600536b005050005031", + "0x32500536b00532500501b02832500536b00506f07100732c02807100a007", + "0x70280740056e302836b00732500534802800600536b005006005092028", + "0x2807500536b00500600503102802836b00500a00501f02802836b005028", + "0x534c00501b02834c00536b00507705b00732c02807700536b0050282c7", + "0x56e402836b00734c00534802807500536b00507500509202834c00536b", + "0x504300509202804300536b00507500503102802836b00502800702834b", + "0x534b00534602802836b0050280070280286e500502804d02807a00536b", + "0x3100525d02802836b00501000534302802836b00500700532102802836b", + "0x61702807f00536b00502802002807900536b00507500503102802836b005", + "0x36b00534807f00736402834800536b00534800501b02834800536b005028", + "0x10202834600536b00508107d00702d02807d00536b005028023028081005", + "0x36b0053610050c002807900536b00507900509202834500536b005346005", + "0x36b00502800702834536107903100534500536b0053450052c8028361005", + "0x502861802834400536b00500600503102802836b005074005346028028", + "0x34200536b00534200501b02834200536b00534300a00732c02834300536b", + "0x70283410056e602836b00734200534802834400536b005344005092028", + "0x2808c00536b00502833602833d00536b00534400503102802836b005028", + "0x33d00509202833c00536b00533c00501b02833c00536b00508c05b00732c", + "0x2836b00502800702833b0056e702836b00733c00534802833d00536b005", + "0x7a00539802807a00536b00508a00509202808a00536b00533d005031028", + "0x3373380316e808833933a03136b00703136105d03132e02805d00536b005", + "0x533a00503102833a00536b00533a00509202802836b005028007028336", + "0x10a02837700536b00508e0052c502808e00536b00502808a02808600536b", + "0x36b00533200510902802836b00533300510b02833233300736b005377005", + "0x3202832f00536b00533000533a02833000536b00533100510c028331005", + "0x536b00532e00503302808600536b00508600509202832e00536b005028", + "0xa03c02808800536b00508800533d02832f00536b00532f00508802832e", + "0x36b00502800702832932a32b0316e908b32c32d03136b00732f32e339086", + "0x501b02832600536b00532d00503102832d00536b00532d005092028028", + "0x536b00532600509202832c00536b00532c0050c002808b00536b00508b", + "0x503102802836b0050280070280850056ea02836b00708b005348028326", + "0x536b00508800532d02809500536b00501000532d02809300536b005326", + "0x9202809800536b00509800501b02809800536b00532409500732c028324", + "0x50280070283230056eb02836b00709800534802809300536b005093005", + "0x52c502832200536b00502860e02809600536b00509300503102802836b", + "0x36b00531f00510b02831e31f00736b00532100510a02832100536b005322", + "0x533a02831c00536b00531d00510c02831d00536b00531e005109028028", + "0x9600536b00509600509202831a00536b00502803202831b00536b00531c", + "0x9600a03c02831b00536b00531b00508802831a00536b00531a005033028", + "0x2836b0050280070283133143160316ec31731831903136b00731b31a32c", + "0x502860f02831100536b00531900503102831900536b005319005092028", + "0x31000536b0050a931700732c02831700536b00531700501b0280a900536b", + "0x31100509202831800536b0053180050c002831000536b00531000501b028", + "0x2836b0050280070280b00056ed02836b00731000534802831100536b005", + "0x30f0070070fb02830f00536b0050280300280ac00536b005311005031028", + "0xac00536b0050ac0050920280b400536b00530d0050f902830d00536b005", + "0x3180ac0310050b400536b0050b40052c802831800536b0053180050c0028", + "0x36b00500700532102802836b0050b000534602802836b0050280070280b4", + "0x502861902830b00536b0050280200280b600536b005311005031028028", + "0x30900536b0050b930b0073640280b900536b0050b900501b0280b900536b", + "0x30700510202830700536b00530930800702d02830800536b005028023028", + "0x31800536b0053180050c00280b600536b0050b600509202830600536b005", + "0x2802836b0050280070283063180b603100530600536b0053060052c8028", + "0x36b00531600503102831600536b00531600509202802836b005007005321", + "0x10202830400536b0053130bf00702d0280bf00536b005028023028305005", + "0x36b0053140050c002830500536b00530500509202830300536b005304005", + "0x36b00502800702830331430503100530300536b0053030052c8028314005", + "0x509300503102802836b00500700532102802836b005323005346028028", + "0x501b02839300536b00502861a02805100536b00502802002830200536b", + "0x536b00502802302839400536b00539305100736402839300536b005393", + "0x9202839600536b0050dc0051020280dc00536b00539439500702d028395", + "0x36b0053960052c802832c00536b00532c0050c002830200536b005302005", + "0x2836b00508500534602802836b00502800702839632c302031005396005", + "0x36b00508800534302802836b00501000534302802836b005007005321028", + "0x502861b0280c600536b0050280200280c700536b005326005031028028", + "0xcb00536b0050c90c60073640280c900536b0050c900501b0280c900536b", + "0x30100510202830100536b0050cb0cf00702d0280cf00536b005028023028", + "0x32c00536b00532c0050c00280c700536b0050c700509202839700536b005", + "0x2802836b00502800702839732c0c703100539700536b0053970052c8028", + "0x2836b00501000534302802836b00508800534302802836b005007005321", + "0x502802302830c00536b00532b00503102832b00536b00532b005092028", + "0xd400536b0052fb0051020282fb00536b00532939800702d02839800536b", + "0xd40052c802832a00536b00532a0050c002830c00536b00530c005092028", + "0x500700532102802836b0050280070280d432a30c0310050d400536b005", + "0x503102833800536b00533800509202802836b00501000534302802836b", + "0x536b0053360d500702d0280d500536b0050280230282fa00536b005338", + "0x50c00282fa00536b0052fa0050920282f800536b005399005102028399", + "0x70282f83372fa0310052f800536b0052f80052c802833700536b005337", + "0x34302802836b00500700532102802836b00533b00534602802836b005028", + "0x2f700536b00533d00503102802836b00503100525d02802836b005010005", + "0x36b0050da00501b0280da00536b00502861c0282f100536b005028020028", + "0x2d0282ec00536b0050280230282ee00536b0050da2f10073640280da005", + "0x52f70050920282ef00536b0050d20051020280d200536b0052ee2ec007", + "0x52ef00536b0052ef0052c802836100536b0053610050c00282f700536b", + "0x532102802836b00534100534602802836b0050280070282ef3612f7031", + "0x1f02802836b00503100525d02802836b00501000534302802836b005007", + "0x2f600536b0050280200280db00536b00534400503102802836b00505b005", + "0x2e92f60073640282e900536b0052e900501b0282e900536b00502861d028", + "0xdf00536b0052e82e700702d0282e700536b0050280230282e800536b005", + "0x3610050c00280db00536b0050db0050920282f500536b0050df005102028", + "0x280070282f53610db0310052f500536b0052f50052c802836100536b005", + "0x534302802836b00500700532102802836b00525200501c02802836b005", + "0x3102802836b00500a00501f02802836b00503100525d02802836b005010", + "0x2f200536b0050282450282f300536b0050280200280e100536b00524d005", + "0x280230280e300536b0052f22f30073640282f200536b0052f200501b028", + "0x536b0052e00051020282e000536b0050e32f400702d0282f400536b005", + "0x52c802836100536b0053610050c00280e100536b0050e10050920282de", + "0x24c00534602802836b0050280070282de3610e10310052de00536b0052de", + "0x525d02802836b00501000534302802836b00500700532102802836b005", + "0x3102802836b00504700501c02802836b00500a00501f02802836b005031", + "0x2db00536b0050286170281a600536b0050280200282dd00536b005239005", + "0x280230282da00536b0052db1a60073640282db00536b0052db00501b028", + "0x536b0050ea0051020280ea00536b0052da2d700702d0282d700536b005", + "0x52c802836100536b0053610050c00282dd00536b0052dd0050920280ee", + "0x23700501c02802836b0050280070280ee3612dd0310050ee00536b0050ee", + "0x525d02802836b00501000534302802836b00500700532102802836b005", + "0x282d600536b00521c00503102802836b00500a00501f02802836b005031", + "0x536b0052d300501b0282d300536b0050282450282d400536b005028020", + "0x702d0282d100536b0050280230282d200536b0052d32d40073640282d3", + "0x36b0052d60050920282cf00536b0052d00051020282d000536b0052d22d1", + "0x310052cf00536b0052cf0052c802836100536b0053610050c00282d6005", + "0x1000534302802836b00500700532102802836b0050280070282cf3612d6", + "0x504002802836b00500a00501f02802836b00503100525d02802836b005", + "0x2cc00536b00501b00503102801b00536b00501b00509202802836b00500b", + "0xf80051020280f800536b0053670f600702d0280f600536b005028023028", + "0x1c00536b00501c0050c00282cc00536b0052cc0050920282cb00536b005", + "0x2802836b0050280070282cb01c2cc0310052cb00536b0052cb0052c8028", + "0x2836b00503100525d02802836b00500b00504002802836b005007005321", + "0x51c80050310281c800536b0051c800509202802836b00500a00501f028", + "0x280fa00536b0050132c900702d0282c900536b0050280230282ca00536b", + "0x504e0050c00282ca00536b0052ca0050920280fc00536b0050fa005102", + "0x500500a0280fc04e2ca0310050fc00536b0050fc0052c802804e00536b", + "0x502800702800b0056ee00a03100736b00700700500f02800700536b005", + "0x25202809200536b00503100501302804f00536b00500a00524f02802836b", + "0x3002802836b0050280070280286ef00502804d02800f00536b00504f005", + "0x536b00500b0050130281c800536b00501000505002801000536b005028", + "0x35e02804e09200736b00509200507102800f00536b0051c8005252028092", + "0x2800702804d0056f001400536b00700f00500902801300536b00504e005", + "0x2801700536b0050300051c802803000536b00501400501002802836b005", + "0x3680056f136901800736b00701702800713802801700536b00501700501b", + "0x1b00536b00502803202802836b00501300523702802836b005028007028", + "0x3302836736900736b00536900535d02801c09200736b005092005071028", + "0x56f201f36600736b00736701b01c01800a61e02801b00536b00501b005", + "0x36500532502836509200736b00509200507102802836b005028007028020", + "0x536b00536400503302802336900736b00536900535d02836400536b005", + "0x36302d00736b00702336436603159002801f00536b00501f005013028364", + "0x736b00736336909202d00a61e02802836b0050280070280840c00076f3", + "0x2803200536b00501f00535e02802836b00502800702835f0056f41aa361", + "0x35d36c00762002836c00536b0051aa00535e02835d00536b00503200561f", + "0x36100536b00536100504f02800c00536b00503300562102803300536b005", + "0x1c02802836b00502800702800c36100700500c00536b00500c005622028", + "0x2803600536b00502825602803c00536b00502802002802836b00501f005", + "0x502802302804000536b00503603c00736402803600536b00503600501b", + "0x35600536b00535900562302835900536b00504035e00702d02835e00536b", + "0x35635f00700535600536b00535600562202835f00536b00535f00504f028", + "0x2836b00501f00501c02802836b00508400521c02802836b005028007028", + "0x536b00502802002802836b00536900521c02802836b00509200501c028", + "0x21500736402821c00536b00521c00501b02821c00536b005028624028215", + "0x536b00504604800702d02804800536b00502802302804600536b00521c", + "0x56220280c000536b0050c000504f02804500536b005047005623028047", + "0x536900521c02802836b0050280070280450c000700504500536b005045", + "0x502825602823700536b00502802002802836b00509200501c02802836b", + "0x23b00536b00523923700736402823900536b00523900501b02823900536b", + "0x24500562302824500536b00523b23f00702d02823f00536b005028023028", + "0x24900536b00524900562202802000536b00502000504f02824900536b005", + "0x2803002802836b00509200501c02802836b005028007028249020007005", + "0x536b00524d01300762002824d00536b00524c00562502824c00536b005", + "0x562202836800536b00536800504f02824f00536b00524e00562102824e", + "0x504d00504702802836b00502800702824f36800700524f00536b00524f", + "0x25200562502825200536b00502803002802836b00509200501c02802836b", + "0x536b00500900562102800900536b00505001300762002805000536b005", + "0x2800700505b00536b00505b00562202802800536b00502800504f02805b", + "0x920076f504f00b00736b00700502800700502802836b00502836902805b", + "0x500a0050dc02801000536b00504f00503102802836b00502800702800f", + "0x1000536b00501000509202800b00536b00500b00504f0281c800a00736b", + "0xa00501f02802836b00502800702804e0056f602836b0071c8005348028", + "0x2801400536b00503100562602801300536b00501000503102802836b005", + "0xb00504f02803000536b00504d00537a02804d00536b005014007007627", + "0x3000536b00503000562802801300536b00501300509202800b00536b005", + "0x3102802836b00504e00534602802836b00502800702803001300b031005", + "0x36b00500700505b02800b00536b00500b00504f02801700536b005010005", + "0x536b00501700509202836836901803136b00500700b007629028007005", + "0x3102802836b00502800702801c0056f701b00536b00736800562a028017", + "0x36b00502823f02836600536b00501b03100762b02836700536b005017005", + "0x2801800536b00501800504f02802000536b00501f00a00732c02801f005", + "0x536600512302836900536b00536900505b02836700536b005367005092", + "0x502036636936701800b2b902802000536b00502000501b02836600536b", + "0xa00501f02802836b00502800702802336436503100502336436503136b", + "0x62c02802d00536b00501700503102802836b00503100513102802836b005", + "0x50c000537a0280c000536b00536336900762702836300536b00501c005", + "0x2802d00536b00502d00509202801800536b00501800504f02808400536b", + "0x1f02802836b00502800702808402d01803100508400536b005084005628", + "0x2802836b00500700523702802836b00503100513102802836b00500a005", + "0x536b0050280460281aa00536b00502802002836100536b00500f005031", + "0x2302803200536b00535f1aa00736402835f00536b00535f00501b02835f", + "0x36b00536c00562d02836c00536b00503235d00702d02835d00536b005028", + "0x62802836100536b00536100509202809200536b00509200504f028033005", + "0x700502802836b00502836902803336109203100503300536b005033005", + "0x503102802836b00502800702809204f0076f800b00a00736b007005028", + "0x2802836b00502800b02801000536b00500700500a02800f00536b00500b", + "0x701000500f02800f00536b00500f00509202800a00536b00500a00504f", + "0x536b00500f00503102802836b0050280070280130056f904e1c800736b", + "0x501302803000536b00501400509202804d00536b00504e00524f028014", + "0x280286fa00502804d02801800536b00504d00525202801700536b0051c8", + "0x36800536b00502803002836900536b00500f00503102802836b005028007", + "0x1300501302803000536b00536900509202801b00536b005368005050028", + "0x1c00536b00501700535e02801800536b00501b00525202801700536b005", + "0x503102802836b0050280070283660056fb36700536b007018005009028", + "0x536b00503100500a02802000536b00536700501002801f00536b005030", + "0x500f02802000536b00502000501b02801f00536b00501f005092028365", + "0x501f00503102802836b00502800702802d0056fc02336400736b007365", + "0x2808400536b00536400535e0280c000536b00502300501002836300536b", + "0x51aa00501b0281aa00536b0050c00051c802836100536b0050200051c8", + "0x35f00536b00535f00501b02835f00536b0051aa36100732c0281aa00536b", + "0x35f00534802808400536b00508400505b02836300536b005363005092028", + "0x3102802836b00502836902802836b0050280070280320056fd02836b007", + "0x36b00535d00509202800a00536b00500a00504f02835d00536b005363005", + "0x29f02808400536b00508400505b02801c00536b00501c00505b02835d005", + "0x502800702800c03336c03100500c03336c03136b00508401c35d00a00a", + "0x536300503102802836b00503200534602802836b00502836902802836b", + "0x37b02804000536b00503600534502803600536b00502803002803c00536b", + "0xa00504f02835900536b00535e00562e02835e00536b00504008401c031", + "0x35900536b00535900562f02803c00536b00503c00509202800a00536b005", + "0x501c02802836b00502836902802836b00502800702835903c00a031005", + "0x3102802836b00501c00523702802836b00502000501f02802836b00502d", + "0x21c00536b00502824502821500536b00502802002835600536b00501f005", + "0x2802302804600536b00521c21500736402821c00536b00521c00501b028", + "0x536b00504700563002804700536b00504604800702d02804800536b005", + "0x562f02835600536b00535600509202800a00536b00500a00504f028045", + "0x502836902802836b00502800702804535600a03100504500536b005045", + "0x2803002823700536b00503000503102802836b00536600504702802836b", + "0x36b00523b03101c03137b02823b00536b00523900508102823900536b005", + "0x9202800a00536b00500a00504f02824500536b00523f00562e02823f005", + "0x2824523700a03100524500536b00524500562f02823700536b005237005", + "0x2802836b00500700523702802836b00503100523702802836b005028007", + "0x536b00502804602824c00536b00502802002824900536b005092005031", + "0x2302824e00536b00524d24c00736402824d00536b00524d00501b02824d", + "0x36b00525200563002825200536b00524e24f00702d02824f00536b005028", + "0x62f02824900536b00524900509202804f00536b00504f00504f028050005", + "0x700502802836b00502836902805024904f03100505000536b005050005", + "0x503102802836b00502800702809204f0076fe00b00a00736b007005028", + "0x2802836b00502800b02801000536b00500700516c02800f00536b00500b", + "0x701000563102800f00536b00500f00509202800a00536b00500a00504f", + "0x536b00500f00503102802836b0050280070280130056ff04e1c800736b", + "0x563402803000536b00501400509202804d00536b00504e005633028014", + "0x2802870000502804d02801800536b00504d00563502801700536b0051c8", + "0x36800536b00502803002836900536b00500f00503102802836b005028007", + "0x1300563402803000536b00536900509202801b00536b005368005636028", + "0x1c00536b00501700513002801800536b00501b00563502801700536b005", + "0x503102802836b00502800702836600570136700536b007018005637028", + "0x536b00503100516c02802000536b00536700563902801f00536b005030", + "0x563102802000536b00502000563a02801f00536b00501f005092028365", + "0x501f00503102802836b00502800702802d00570202336400736b007365", + "0x2808400536b0053640051300280c000536b00502300563902836300536b", + "0x8e02803235f1aa03136b00536100563d02836102000736b00502000563b", + "0x35d00536b0051aa0051c802802836b00503200530f02802836b00535f005", + "0x563d02836c0c000736b0050c000563b0280c000536b0050c000563a028", + "0x36b00503c00530f02802836b00500c00508e02803c00c03303136b00536c", + "0x1b02804000536b00503635d00732c02803600536b0050330051c8028028", + "0x36b00508400516e02836300536b00536300509202804000536b005040005", + "0x3102802836b00502800702835e00570302836b007040005348028084005", + "0x535600563d02835602000736b00502000563b02835900536b005363005", + "0x2802836b00504600530f02802836b00521500501f02804621c21503136b", + "0x4700563d0280470c000736b0050c000563b02804800536b00521c005112", + "0x2836b00523900530f02802836b00504500501f02823923704503136b005", + "0x4800711302835900536b00535900509202823b00536b005237005112028", + "0x2802836b00502000563e02802836b00502800702802870402836b00723b", + "0x36b00523f00509202823f00536b00535900503102802836b0050c000563e", + "0x36b00535900503102802836b00502800702802870500502804d028245005", + "0x2802836b00524c00501f02824e24d24c03136b00502000563d028249005", + "0x36b0050c000563d02824f00536b00524e0052f702802836b00524d00508e", + "0x2f702802836b00505000508e02802836b00525200501f028009050252031", + "0x705b24f0072a202824900536b00524900509202805b00536b005009005", + "0x9202805800536b00524900503102802836b00502800702802870602836b", + "0x36902802836b00502800702802870700502804d02805900536b005058005", + "0xa00536b00500a00504f02805c00536b00524900503102802836b005028", + "0x8400516e02801c00536b00501c00516e02805c00536b00505c005092028", + "0x25c03100525e25d25c03136b00508401c05c00a00a29902808400536b005", + "0x50c000563e02802836b00535e00534602802836b00502800702825e25d", + "0x509202805e00536b00536300503102802836b00502000563e02802836b", + "0x2802836b00502836902805900536b00524500539802824500536b00505e", + "0x5f08401c03163f02805f00536b00506000534502806000536b005028030", + "0xa00536b00500a00504f02829600536b00505d00564102805d00536b005", + "0x5900a03100529600536b00529600564202805900536b005059005092028", + "0x2836b00502d00564302802836b00502836902802836b005028007028296", + "0x36b00501f00503102802836b00501c00513f02802836b00502000563e028", + "0x6700501b02806700536b00502824502804200536b005028020028298005", + "0x6900536b0050280230282bd00536b00506704200736402806700536b005", + "0x504f02800600536b00506800564402806800536b0052bd06900702d028", + "0x536b00500600564202829800536b00529800509202800a00536b00500a", + "0x4702802836b00502836902802836b00502800702800629800a031005006", + "0x7100536b00502803002806f00536b00503000503102802836b005366005", + "0x64102807400536b00532503101c03163f02832500536b005071005081028", + "0x36b00506f00509202800a00536b00500a00504f02807500536b005074005", + "0x36b00502800702807506f00a03100507500536b00507500564202806f005", + "0x509200503102802836b00503100513f02802836b00500700513f028028", + "0x501b02834b00536b00502804602834c00536b00502802002807700536b", + "0x536b00502802302804300536b00534b34c00736402834b00536b00534b", + "0x4f02807f00536b00507900564402807900536b00504307a00702d02807a", + "0x36b00507f00564202807700536b00507700509202804f00536b00504f005", + "0x36b00700502800700502802836b00502836902807f07704f03100507f005", + "0x536b00500b00503102802836b00502800702809204f00770800b00a007", + "0x500a00504f02802836b00502800b02801000536b00500700564602800f", + "0x4e1c800736b00701000564702800f00536b00500f00509202800a00536b", + "0x564802801400536b00500f00503102802836b005028007028013005709", + "0x536b0051c800564902803000536b00501400509202804d00536b00504e", + "0x36b00502800702802870a00502804d02801800536b00504d00564a028017", + "0x36800564b02836800536b00502803002836900536b00500f005031028028", + "0x1700536b00501300564902803000536b00536900509202801b00536b005", + "0x1800564c02801c00536b00501700527b02801800536b00501b00564a028", + "0x2802836b00502836902802836b00502800702836600570b36700536b007", + "0x502000537f02802000536b00536700564d02801f00536b005030005031", + "0x2803100536b00503100527802800a00536b00500a00504f02836500536b", + "0x9202802336400736b00536503100a03164e02836500536b005365005197", + "0x2800702836300570c02d00536b00702300527002801f00536b00501f005", + "0x36108400736b00502d00526f0280c000536b00501f00503102802836b005", + "0x50c000509202836400536b00536400504f02802836b005361005047028", + "0x2808400536b00508400527802801c00536b00501c00527a0280c000536b", + "0x2800702803235f1aa03100503235f1aa03136b00508401c0c036400a276", + "0x64f02835d00536b00501f00503102802836b00501c00527302802836b005", + "0x36b00535d00509202836400536b00536400504f02836c00536b005363005", + "0x36b00502800702836c35d36403100536c00536b00536c00565002835d005", + "0x36b00503000503102802836b00536600504702802836b005028369028028", + "0x2803c00536b00500c03101c03165102800c00536b005028030028033005", + "0x503300509202800a00536b00500a00504f02803600536b00503c005652", + "0x502800702803603300a03100503600536b00503600565002803300536b", + "0x9200503102802836b00503100526d02802836b00500700527302802836b", + "0x1b02835900536b00502804602835e00536b00502802002804000536b005", + "0x36b00502802302835600536b00535935e00736402835900536b005359005", + "0x2804600536b00521c00564f02821c00536b00535621500702d028215005", + "0x504600565002804000536b00504000509202804f00536b00504f00504f", + "0x36b00500700526a02802836b00502836902804604004f03100504600536b", + "0x3302800f00536b00502838002809200536b00504f00565302804f00b007", + "0xf09202803165502800f00536b00500f00565402809200536b005092005", + "0x2802836b00502800b02802836b0051c800521c02804e1c801003136b005", + "0x1300570d02801000536b00501000504f02801300a00736b00500a00535d", + "0x2802836b00500a00521c02802836b00502800702801400570e02836b007", + "0x536b00502802502804d00536b00500500503102802836b00503100508e", + "0x533202801800536b00504d00509202801700536b00501000504f028030", + "0x571002802836b00502800702802870f00502804d02836900536b005030", + "0x2801b00536b0050280e102836800536b00500500503102802836b005014", + "0x1c0072a002836800536b00536800509202801c00a00736b00500a00535d", + "0x36700536b00536800503102802836b00502800702802871102836b00701b", + "0x36700509202801f00a00736b00500a00535d02836600536b0050282f3028", + "0x2836b00502800702802871202836b00736601f0072a002836700536b005", + "0x500a00535d02836500536b00502858f02802000536b005367005031028", + "0x2836b0073653640072a002802000536b00502000509202836400a00736b", + "0x502871402802300536b00502000503102802836b005028007028028713", + "0x2300536b00502300509202836300a00736b00500a00535d02802d00536b", + "0x2300503102802836b00502800702802871502836b00702d3630072a0028", + "0x36100a00736b00500a00535d02808400536b0050287160280c000536b005", + "0x702802871702836b0070843610072a00280c000536b0050c0005092028", + "0x2835f00536b0050287180281aa00536b0050c000503102802836b005028", + "0x320072a00281aa00536b0051aa00509202803200a00736b00500a00535d", + "0x35d00536b0051aa00503102802836b00502800702802871902836b00735f", + "0x36c00a0072a002835d00536b00535d00509202836c00536b00502871a028", + "0x508e02802836b00502836902802836b00502800702802871b02836b007", + "0x3102802836b00504e00521c02802836b00500b00526d02802836b005031", + "0x3c00536b00502871c02800c00536b00502802002803300536b00535d005", + "0x2802302803600536b00503c00c00736402803c00536b00503c00501b028", + "0x536b00535e00571d02835e00536b00503604000702d02804000536b005", + "0x571e02803300536b00503300509202801000536b00501000504f028359", + "0x35d00503102802836b00502800702835903301003100535900536b005359", + "0x2821c00536b00535600509202821500536b00502871f02835600536b005", + "0x2802836b00502800702802872000502804d02804600536b005215005332", + "0x536b00502872102804800536b0051aa00503102802836b00500a00521c", + "0x539802804600536b00504700533202821c00536b005048005092028047", + "0x2802872200502804d02823700536b00504600511202804500536b00521c", + "0x23900536b0050c000503102802836b00500a00521c02802836b005028007", + "0x523b00533202804500536b00523900509202823b00536b005028723028", + "0x2824500536b00523700511202823f00536b00504500539802823700536b", + "0x3102802836b00500a00521c02802836b00502800702802872400502804d", + "0x536b00524900509202824c00536b00502872502824900536b005023005", + "0x511202824d00536b00523f00539802824500536b00524c00533202823f", + "0x521c02802836b00502800702802872600502804d02824e00536b005245", + "0x2825200536b00502872702824f00536b00502000503102802836b00500a", + "0x524d00539802824e00536b00525200533202824d00536b00524f005092", + "0x2800702802872800502804d02800900536b00524e00511202805000536b", + "0x72902805b00536b00536700503102802836b00500a00521c02802836b005", + "0x536b00505800533202805000536b00505b00509202805800536b005028", + "0x2804d02805c00536b00500900511202805900536b005050005398028009", + "0x36800503102802836b00500a00521c02802836b00502800702802872a005", + "0x2805900536b00525c00509202825d00536b00502872b02825c00536b005", + "0x25e00572c02825e05c00736b00505c0052c202805c00536b00525d005332", + "0x26d02802836b00502836902802836b00502800702805e00572d02836b007", + "0x2802836b00505c00508e02802836b00504e00521c02802836b00500b005", + "0x536b00502802002806000536b00505900503102802836b00503100508e", + "0x5f00736402805d00536b00505d00501b02805d00536b00502824502805f", + "0x536b00529629800702d02829800536b00502802302829600536b00505d", + "0x509202801000536b00501000504f02806700536b00504200571d028042", + "0x702806706001003100506700536b00506700571e02806000536b005060", + "0x36b00505e03101003172e0282bd00536b00505900503102802836b005028", + "0x282bd00536b0052bd00509202802836b00506800508e028006068069031", + "0x2836b00502800702807432500772f07106f00736b00700605c069031111", + "0x7500509202801700536b00506f00504f02807500536b0052bd005031028", + "0x2807700536b00502873002836900536b00507100533202801800536b005", + "0x702802873102836b00707734c0072a002834c04e00736b00504e00535d", + "0x25b02834b00536b00501800503102802836b00502836902802836b005028", + "0x36b00507a00503302807a00536b00502873002804300536b00536900b007", + "0x59002804300536b00504300527802834b00536b00534b00509202807a005", + "0x2802836b00502800702808134800773207f07900736b00704e07a017031", + "0x507d00509202807900536b00507900504f02807d00536b00534b005031", + "0x2807f00536b00507f00503302804300536b00504300527802807d00536b", + "0x2800702834434534603100534434534603136b00507f04307d07900a733", + "0x503102802836b00504300526d02802836b00508100521c02802836b005", + "0x2834100536b00502862402834200536b00502802002834300536b00534b", + "0x502802302833d00536b00534134200736402834100536b00534100501b", + "0x33b00536b00533c00571d02833c00536b00533d08c00702d02808c00536b", + "0x33b00571e02834300536b00534300509202834800536b00534800504f028", + "0x36b00502836902802836b00502800702833b34334803100533b00536b005", + "0x502873402808a00536b00501800503102802836b00504e00521c028028", + "0x2808a00536b00508a00509202833a00536b00533a00533202833a00536b", + "0x2836b00502800702833733800773508833900736b00736933a017031111", + "0x2803002808600536b00508800b00725b02833600536b00508a005031028", + "0x536b00537700573702837700536b00508e08600773602808e00536b005", + "0x571e02833600536b00533600509202833900536b00533900504f028333", + "0x33700508e02802836b00502800702833333633903100533300536b005333", + "0x2002833200536b00508a00503102802836b00500b00526d02802836b005", + "0x33000536b00533000501b02833000536b0050282c102833100536b005028", + "0x32e00702d02832e00536b00502802302832f00536b005330331007364028", + "0x536b00533800504f02832c00536b00532d00571d02832d00536b00532f", + "0x33803100532c00536b00532c00571e02833200536b005332005092028338", + "0x36b00507400508e02802836b00502836902802836b00502800702832c332", + "0x52bd00503102802836b00504e00521c02802836b00500b00526d028028", + "0x501b02832a00536b0050282c102832b00536b00502802002808b00536b", + "0x536b00502802302832900536b00532a32b00736402832a00536b00532a", + "0x4f02809300536b00508500571d02808500536b00532932600702d028326", + "0x36b00509300571e02808b00536b00508b00509202832500536b005325005", + "0xb00573802800b00a00736b00500500524202809308b325031005093005", + "0x536b00504f00503302809203100736b00503100535d02804f00536b005", + "0x521c02802836b00502800702800f00573902836b00709200570d02804f", + "0x2801000536b00501000503302801000536b00502873a02802836b005007", + "0x1c800525302804e00536b00502800504f0281c800536b00501000a0071b4", + "0xf00571002802836b00502800702802873b00502804d02801300536b005", + "0x2804d03100736b00503100535d02801400536b0050280e102802836b005", + "0x36b0050282f302802836b00502800702802873c02836b00701404d0072a0", + "0x73d02836b0070300170072a002801703100736b00503100535d028030005", + "0x536b00502873f02801800536b00502873e02802836b005028007028028", + "0x36900503302801b00536b00501800565402836800536b005028740028369", + "0x702802874100502804d02836700536b00536800503302801c00536b005", + "0x74402801f00536b00502874302836600536b00502874202802836b005028", + "0x536b00501f00503302801b00536b00536600565402802000536b005028", + "0x517202836500536b00501b00574502836700536b00502000503302801c", + "0x2802874600502804d02802300536b00536700517202836400536b00501c", + "0x2836300536b00502874702802d00536b00502838402802836b005028007", + "0x36b00536300503302836500536b00502d0056540280c000536b005028748", + "0x8403136b00536500702803165502802300536b0050c0005033028364005", + "0x33202835f00536b0053641aa00774902802836b00536100521c0281aa361", + "0x2836c00574b35d03200736b00735f08400774a02835f00536b00535f005", + "0x3603c00774d00c03300736b00702335d03203174c02802836b005028007", + "0x503300504f02804000536b00500c00a0071b402802836b005028007028", + "0x35935e00736b00501300524202801300536b00504000525302804e00536b", + "0x535600503302821500536b0050280e102835600536b005359005738028", + "0x736b00721535604e03174c02821500536b00521500503302835600536b", + "0x2804500536b00502874f02802836b00502800702804704800774e04621c", + "0x2823b23923703136b00504504621c03165502804500536b005045005654", + "0x536b00502838502823f00536b00523b00507402802836b00523900521c", + "0x25302824900536b00523f24500732c02824500536b00524500501b028245", + "0x524935e00775002824900536b00524900501b02835e00536b00535e005", + "0x2824e00536b00524d04f00774902824d00536b00502875102824c00536b", + "0x5000575225224f00736b00724e23700774a02824e00536b00524e005332", + "0x36b00500903100774902800900536b00502875302802836b005028007028", + "0x5905800736b00705b24f00774a02805b00536b00505b00533202805b005", + "0x25d25c00736b00705925205803174c02802836b00502800702805c005754", + "0x2806000536b00525d24c0071b402802836b00502800702805e25e007755", + "0x505d00575702805d00536b00505f06000775602805f00536b005028030", + "0x529600536b00529600575802825c00536b00525c00504f02829600536b", + "0x24c0051bd02802836b00505e00521c02802836b00502800702829625c007", + "0x501b02804200536b00502875902829800536b00502802002802836b005", + "0x536b00502802302806700536b00504229800736402804200536b005042", + "0x4f02806800536b00506900575a02806900536b0050672bd00702d0282bd", + "0x702806825e00700506800536b00506800575802825e00536b00525e005", + "0x2002802836b00525200521c02802836b00524c0051bd02802836b005028", + "0x6f00536b00506f00501b02806f00536b00502875b02800600536b005028", + "0x32500702d02832500536b00502802302807100536b00506f006007364028", + "0x536b00505c00504f02807500536b00507400575a02807400536b005071", + "0x2802836b00502800702807505c00700507500536b00507500575802805c", + "0x7700536b00502802002802836b00503100521c02802836b00524c0051bd", + "0x34c07700736402834c00536b00534c00501b02834c00536b00502875b028", + "0x7a00536b00534b04300702d02804300536b00502802302834b00536b005", + "0x7900575802805000536b00505000504f02807900536b00507a00575a028", + "0x36b00504700521c02802836b00502800702807905000700507900536b005", + "0x535e0051bd02802836b00503100521c02802836b00504f00521c028028", + "0x34800501b02834800536b00502875902807f00536b00502802002802836b", + "0x7d00536b00502802302808100536b00534807f00736402834800536b005", + "0x504f02834500536b00534600575a02834600536b00508107d00702d028", + "0x2800702834504800700534500536b00534500575802804800536b005048", + "0x521c02802836b00504f00521c02802836b00503600521c02802836b005", + "0x75902834400536b00502802002802836b00500a0051bd02802836b005031", + "0x36b00534334400736402834300536b00534300501b02834300536b005028", + "0x75a02833d00536b00534234100702d02834100536b005028023028342005", + "0x36b00508c00575802803c00536b00503c00504f02808c00536b00533d005", + "0x2802836b00504f00521c02802836b00502800702808c03c00700508c005", + "0x2836b00502300521c02802836b00500a0051bd02802836b00503100521c", + "0x36b00533b00501b02833b00536b00502875b02833c00536b005028020028", + "0x2d02833a00536b00502802302808a00536b00533b33c00736402833b005", + "0x536c00504f02808800536b00533900575a02833900536b00508a33a007", + "0x36b00502836902808836c00700508800536b00508800575802836c00536b", + "0x36b00502800702800f09200775c04f00b00736b007005028007005028028", + "0x50920281c800536b00503100575d02801000536b00504f005031028028", + "0x3004d00775f01401304e03136b0071c800b00775e02801000536b005010", + "0x36b00501400576002801700536b00501000503102802836b005028007028", + "0x76102836800536b00501700509202836900536b00504e00504f028018005", + "0x2876300502804d02801c00536b00501800576202801b00536b005013005", + "0x536b00502803002836700536b00501000503102802836b005028007028", + "0x509202836900536b00504d00504f02801f00536b005366005764028366", + "0x536b00501f00576202801b00536b00503000576102836800536b005367", + "0x36400576636500536b00701c00576502802000536b00501b00523c02801c", + "0x36b00536500576702802300536b00536800503102802836b005028007028", + "0x3136b00702d00a00702300a76802802300536b00502300509202802d005", + "0x36b00536300509202802836b00502800702835f1aa3610317690840c0363", + "0x9202836900536b00536900504f02803200536b005363005031028363005", + "0x36b0050200051bf0280c000536b0050c00050c002803200536b005032005", + "0x36b0050840200c003236900b23a02808400536b0050840051c1028020005", + "0x523d02802836b00502800702800c03336c35d00a00500c03336c35d00a", + "0x3c00536b00536100503102836100536b00536100509202802836b005020", + "0x4000576a02804000536b00535f03600702d02803600536b005028023028", + "0x3c00536b00503c00509202836900536b00536900504f02835e00536b005", + "0x3c36900a00535e00536b00535e00576b0281aa00536b0051aa0050c0028", + "0x536800503102802836b00536400504702802836b00502800702835e1aa", + "0x21500536b00535600a02003176c02835600536b00502803002835900536b", + "0x35900509202836900536b00536900504f02821c00536b00521500576d028", + "0x21c00536b00521c00576b02800700536b0050070050c002835900536b005", + "0x2802836b00500a00576e02802836b00502800702821c00735936900a005", + "0x536b00502802002804600536b00500f00503102802836b00503100523d", + "0x4800736402804700536b00504700501b02804700536b005028046028048", + "0x536b00504523700702d02823700536b00502802302804500536b005047", + "0x509202809200536b00509200504f02823b00536b00523900576a028239", + "0x536b00523b00576b02800700536b0050070050c002804600536b005046", + "0x736b00500b00576f02802836b00502836902823b00704609200a00523b", + "0x2802836b0051c80053440281c801000f03136b00509200577002809200b", + "0x526602801401300736b00501300521a02801304e00736b00500f0051d6", + "0x536b00504d0052f702802836b00503000530f02803004d00736b005014", + "0x503102802836b00502800702801800577202836b007017005771028017", + "0x36b00536800530f02801b36800736b00501300526602836900536b005005", + "0x577102836900536b00536900509202801c00536b00501b0052f7028028", + "0x2836b00504e00525902802836b00502800702836700577302836b00701c", + "0x36b00504f00577402802836b00501000525902802836b00500a005259028", + "0x2800504f02836600536b00536900503102802836b00500b005389028028", + "0x702802877500502804d02802000536b00536600509202801f00536b005", + "0x2836500536b00536900503102802836b00536700577602802836b005028", + "0x2802836b00502800702802877700502804d02836400536b005365005092", + "0x536b00500500503102802836b00501300525902802836b005018005776", + "0x77802836302d00736b00504e00526602836400536b005023005092028023", + "0x36b00536300528602836108400736b0050c00052660280c000536b005028", + "0x35f00536b00535f00530d02835f36100736b0053610052860281aa363007", + "0x36b00502800702803336c00777935d03200736b00735f1aa02803117f028", + "0x3200504f02800c00536b00536400503102802836b00535d00530f028028", + "0x2836b0073613630072a202800c00536b00500c00509202803200536b005", + "0x501000525902802836b00500a00525902802836b00502800702802877a", + "0x8400530f02802836b00500b00538902802836b00504f00577402802836b", + "0x4f02803c00536b00500c00503102802836b00502d00530f02802836b005", + "0x2877500502804d02802000536b00503c00509202801f00536b005032005", + "0x36b00508400530d02803600536b00500c00503102802836b005028007028", + "0x4000736b00708402d03203117f02803600536b005036005092028084005", + "0x25902802836b00535e00530f02802836b00502800702835635900777b35e", + "0x2802836b00504f00577402802836b00501000525902802836b00500a005", + "0x36b00504000504f02821500536b00503600503102802836b00500b005389", + "0x577d02821c00536b00502877c02802000536b00521500509202801f005", + "0x536b00504800577f02804800536b00504600577e02804600536b00521c", + "0x538a02803100536b0050310050c002800700536b005007005307028047", + "0x30f02802836b00502800702804703100702001f00b00504700536b005047", + "0x536b00535900504f02804500536b00503600503102802836b005356005", + "0x36b00502800702802878000502804d02823900536b005045005092028237", + "0x508400530f02802836b00536300530f02802836b00503300530f028028", + "0x36400503102802836b00536100530f02802836b00502d00530f02802836b", + "0x23900536b00523b00509202823700536b00536c00504f02823b00536b005", + "0x26602824924500736b00524500521a02824523f00736b0050100051d6028", + "0x36b00524c0052f702802836b00524d00530f02824d24c00736b005249005", + "0x702824f00578102836b00724e00577102802836b00502800b02824e005", + "0x5000736b00524500526602825200536b00523900503102802836b005028", + "0x25200509202805b00536b0050090052f702802836b00505000530f028009", + "0x2836b00502800702805800578202836b00705b00577102825200536b005", + "0x2836b00504f00577402802836b00523f00525902802836b005028369028", + "0x36b00525200503102802836b00500a00525902802836b00500b005389028", + "0x4d02825c00536b00505900509202805c00536b00523700504f028059005", + "0x503102802836b00505800577602802836b005028007028028783005028", + "0x2802878400502804d02825e00536b00525d00509202825d00536b005252", + "0x2802836b00524500525902802836b00524f00577602802836b005028007", + "0x36b00502836902825e00536b00505e00509202805e00536b005239005031", + "0x526602805d00536b00502877802805f06000736b00523f005266028028", + "0x529800528602804205f00736b00505f00528602829829600736b00505d", + "0x36b00706704223703117f02806700536b00506700530d02806729800736b", + "0x2836b00506900530f02802836b0050280070280060680077850692bd007", + "0x6f0050920282bd00536b0052bd00504f02806f00536b00525e005031028", + "0x2836b00502800702802878602836b00729805f0072a202806f00536b005", + "0x36b00500a00525902802836b00500b00538902802836b00504f005774028", + "0x506f00503102802836b00506000530f02802836b00529600530f028028", + "0x2825c00536b00507100509202805c00536b0052bd00504f02807100536b", + "0x2832500536b00506f00503102802836b00502800702802878300502804d", + "0x602bd03117f02832500536b00532500509202829600536b00529600530d", + "0x7500530f02802836b00502800702834c07700778707507400736b007296", + "0x525902802836b00500b00538902802836b00504f00577402802836b005", + "0x5c00536b00507400504f02834b00536b00532500503102802836b00500a", + "0x504300577d02804300536b00502877c02825c00536b00534b005092028", + "0x2807f00536b00507900577f02807900536b00507a00577e02807a00536b", + "0x507f00538a02803100536b0050310050c002800700536b005007005307", + "0x34c00530f02802836b00502800702807f03100725c05c00b00507f00536b", + "0x2808100536b00507700504f02834800536b00532500503102802836b005", + "0x2802836b00502800702802878800502804d02807d00536b005348005092", + "0x2836b00529600530f02802836b00505f00530f02802836b00500600530f", + "0x36b00525e00503102802836b00529800530f02802836b00506000530f028", + "0xc002807d00536b00534600509202808100536b00506800504f028346005", + "0x36b00500b00520902800a00536b00500a00519702803100536b005031005", + "0x578a02834234334434500a36b00500b00a03107d08100b78902800b005", + "0x36b00534400503102802836b00502800702833d00578b34100536b007342", + "0x22102808c00536b00508c00509202833c00536b00534100578c02808c005", + "0x508c00503102802836b00502800702808a00578d33b00536b00733c005", + "0x2833a00536b00533a00509202834500536b00534500504f02833a00536b", + "0x533b00578e02834300536b0053430050c002800700536b005007005307", + "0x2833633733808833900b36b00533b34300733a34500b78f02833b00536b", + "0x8800503102802836b00502800702808e00579108600536b007336005790", + "0x33200736b00504f00579302833300536b00508600579202837700536b005", + "0x577402832f33000736b00533300579302802836b005332005774028331", + "0x32d00536b00532f00579402832e00536b00533100579402802836b005330", + "0x32c00732c02808b00536b00532d0051c802832c00536b00532e0051c8028", + "0x536b00537700509202832b00536b00532b00501b02832b00536b00508b", + "0x503102802836b00502800702832a00579502836b00732b005348028377", + "0x8500536b00532600579602832600536b00502803002832900536b005377", + "0x33900504f02809500536b00509300577f02809300536b00508500577e028", + "0x33800536b00533800530702832900536b00532900509202833900536b005", + "0x32933900b00509500536b00509500538a02833700536b0053370050c0028", + "0x37700503102802836b00532a00534602802836b005028007028095337338", + "0x2832300536b00509800577d02809800536b00502879702832400536b005", + "0x533900504f02832200536b00509600577f02809600536b00532300577e", + "0x2833800536b00533800530702832400536b00532400509202833900536b", + "0x33832433900b00532200536b00532200538a02833700536b0053370050c0", + "0x508800503102802836b00504f00577402802836b005028007028322337", + "0x2833900536b00533900504f02831f00536b00508e00579802832100536b", + "0x53370050c002833800536b00533800530702832100536b005321005092", + "0x702831f33733832133900b00531f00536b00531f00538a02833700536b", + "0x3102802836b00504f00577402802836b00508a00504702802836b005028", + "0x31c00536b00502824502831d00536b00502802002831e00536b00508c005", + "0x2802302831b00536b00531c31d00736402831c00536b00531c00501b028", + "0x536b00531900579802831900536b00531b31a00702d02831a00536b005", + "0x530702831e00536b00531e00509202834500536b00534500504f028318", + "0x536b00531800538a02834300536b0053430050c002800700536b005007", + "0x36b00504f00577402802836b00502800702831834300731e34500b005318", + "0x504f02831600536b00533d00579802831700536b005344005031028028", + "0x536b00500700530702831700536b00531700509202834500536b005345", + "0x34500b00531600536b00531600538a02834300536b0053430050c0028007", + "0x736b0050920051d602809200a00736b00500a00521a028316343007317", + "0x1304e00736b0051c80052660281c801000736b00501000521a02801000f", + "0x701400577102801400536b00504e0052f702802836b00501300530f028", + "0x2803000536b00500500503102802836b00502800702804d00579902836b", + "0x50180052f702802836b00501700530f02801801700736b005010005266", + "0x579a02836b00736900577102803000536b00503000509202836900536b", + "0x36b00500a00525902802836b00500f00525902802836b005028007028368", + "0x503100525902802836b00500b00525902802836b00504f00557c028028", + "0x9202801c00536b00502800504f02801b00536b00503000503102802836b", + "0x77602802836b00502800702802879b00502804d02836700536b00501b005", + "0x536b00536600509202836600536b00503000503102802836b005368005", + "0x2836b00504d00577602802836b00502800702802879c00502804d02801f", + "0x502000509202802000536b00500500503102802836b005010005259028", + "0x2802300536b00502879d02836436500736b00500f00526602801f00536b", + "0x52860280c036400736b00536400528602836302d00736b005023005266", + "0x840c002803117f02808400536b00508400530d02808436300736b005363", + "0x51aa00530f02802836b00502800702803235f00779e1aa36100736b007", + "0x9202836100536b00536100504f02835d00536b00501f00503102802836b", + "0x502800702802879f02836b0073633640072a202835d00536b00535d005", + "0xb00525902802836b00504f00557c02802836b00500a00525902802836b", + "0x530f02802836b00502d00530f02802836b00503100525902802836b005", + "0x1c00536b00536100504f02836c00536b00535d00503102802836b005365", + "0x2836b00502800702802879b00502804d02836700536b00536c005092028", + "0x3300509202802d00536b00502d00530d02803300536b00535d005031028", + "0x280400360077a003c00c00736b00702d36536103117f02803300536b005", + "0x2802836b00500a00525902802836b00503c00530f02802836b005028007", + "0x2836b00503100525902802836b00500b00525902802836b00504f00557c", + "0x35e00509202801c00536b00500c00504f02835e00536b005033005031028", + "0x35600536b00536700539802835900536b00501c00530c02836700536b005", + "0x2802836b00504000530f02802836b0050280070280287a100502804d028", + "0x521500509202821c00536b00503600504f02821500536b005033005031", + "0x503200530f02802836b0050280070280287a200502804d02804600536b", + "0x36500530f02802836b00502d00530f02802836b00536400530f02802836b", + "0x4f02804800536b00501f00503102802836b00536300530f02802836b005", + "0x36b00500b00521a02804600536b00504800509202821c00536b00535f005", + "0x23700736b00523700521a02823704500736b0050470051d602804700b007", + "0x52f702802836b00523f00530f02823f23b00736b005239005266028239", + "0x36b0050280070282490057a302836b00724500577102824500536b00523b", + "0x30f02824e24d00736b00523700526602824c00536b005046005031028028", + "0x536b00524c00509202824f00536b00524e0052f702802836b00524d005", + "0x525902802836b0050280070282520057a402836b00724f00577102824c", + "0x2800900536b00502803002805000536b00524c00503102802836b005045", + "0x505000509202805800536b00521c00504f02805b00536b005009005345", + "0x280070280287a500502804d02805c00536b00505b00507d02805900536b", + "0x9202825c00536b00524c00503102802836b00525200577602802836b005", + "0x77602802836b0050280070280287a600502804d02825d00536b00525c005", + "0x25e00536b00504600503102802836b00523700525902802836b005249005", + "0x2879d02806005e00736b00504500526602825d00536b00525e005092028", + "0x736b00506000528602829605d00736b00505f00526602805f00536b005", + "0x2804200536b00504200530d02804229600736b005296005286028298060", + "0x2836b0050280070280680690077a72bd06700736b00704229821c03117f", + "0x506700504f02800600536b00525d00503102802836b0052bd00530f028", + "0x7a802836b0072960600072a202800600536b00500600509202806700536b", + "0x36b00505e00530f02802836b00505d00530f02802836b005028007028028", + "0x7100534502807100536b00502803002806f00536b005006005031028028", + "0x5900536b00506f00509202805800536b00506700504f02832500536b005", + "0x2836b0050280070280287a500502804d02805c00536b00532500507d028", + "0x7400509202805d00536b00505d00530d02807400536b005006005031028", + "0x2834b34c0077a907707500736b00705d05e06703117f02807400536b005", + "0x4300536b00507400503102802836b00507700530f02802836b005028007", + "0x507500504f02807900536b00507a00534502807a00536b005028030028", + "0x2805c00536b00507900507d02805900536b00504300509202805800536b", + "0x3102802836b00534b00530f02802836b0050280070280287a500502804d", + "0x536b00534800508102834800536b00502803002807f00536b005074005", + "0x507d02805900536b00507f00509202805800536b00534c00504f028081", + "0x530f02802836b0050280070280287a500502804d02805c00536b005081", + "0x30f02802836b00505d00530f02802836b00506000530f02802836b005068", + "0x7d00536b00525d00503102802836b00529600530f02802836b00505e005", + "0x506900504f02834500536b00534600508102834600536b005028030028", + "0x2805c00536b00534500507d02805900536b00507d00509202805800536b", + "0x73440052e002834400536b00534400507d02834400536b00505c005342", + "0x2802836b00534300504702802836b0050280070283420057aa34300536b", + "0x36b00533d0057ac02833d00536b0050287ab02834100536b005059005031", + "0x2834100536b00534100509202808c00536b00508c0057ad02808c33d007", + "0x317af08633633733808833933a08a33b33c1c836b00708c00b0580317ae", + "0x728502833200536b00534100503102802836b00502800702833337708e", + "0x33733000728502833000536b00533633100728502833100536b00508633c", + "0x36b00508832e00728502832e00536b00533832f00728502832f00536b005", + "0x8b00536b00533a32c00728502832c00536b00533932d00728502832d005", + "0x504f02832a00536b00533b0057b002832b00536b00508a08b007285028", + "0x736b00532a00521a02803100536b00503100519702832b00536b00532b", + "0x32600736b00532903132b0317b102832900536b00532900519702832932a", + "0x7b202809300536b0050930057ad02809333d00736b00533d0057ac028085", + "0x53240057b302831f32132209632309832409500f36b005093085326031", + "0x31d00536b00532131e00728502831e00536b00531f09500728502802836b", + "0x28502831b00536b00509631c00728502831c00536b00532231d007285028", + "0x500a00521a02831a00536b00531a00504f02831a00536b00532331b007", + "0x32a00536b00532a00519702831900536b00531900519702831900a00736b", + "0x2833d00536b00533d0057ad02831731800736b00532a31931a0317b1028", + "0x3140057b30280ac0b03100a931131331431600f36b00533d3173180317b2", + "0x536b0050b030f00728502830f00536b0050ac31600728502802836b005", + "0x280b600536b0050a90b40072850280b400536b00531030d00728502830d", + "0x36b0050287b50280b900536b0050287b402830b00536b0053110b6007285", + "0x1970280b900536b0050b900519702833200536b005332005092028309005", + "0xb900733200a1fd02830b00536b00530b00504f02830900536b005309005", + "0x9202802836b0050280070283040bf3050317b630630730803136b007309", + "0x36b0053060051ee02830300536b00530800503102830800536b005308005", + "0x2830300536b00530300509202830700536b0053070050c0028306005", + "0x530300503102802836b0050280070280510057b730200536b007306005", + "0x36b00709830230739300a7b802839300536b00539300509202839300536b", + "0x539400509202802836b0050280070280c60c73960317b90dc395394031", + "0x280c900536b0050c90050920280c900536b00539400503102839400536b", + "0x3010cf0cb03136b00731304f3950c900a7b80280dc00536b0050dc00558a", + "0x280cb00536b0050cb00509202802836b00502800702839830c3970317ba", + "0x530100558a0282fb00536b0052fb0050920282fb00536b0050cb005031", + "0x2f83990317bc0d52fa0d403136b0073010dc0cf2fb00a7bb02830100536b", + "0x50d40050310280d400536b0050d400509202802836b0050280070282f7", + "0x280d500536b0050d500558a0282f100536b0052f10050920282f100536b", + "0x280070282f60db2ef0317bd0d22ec2ee0da00a36b0070d52fa2f1031581", + "0x310280da00536b0050da00509202802836b0050d200525902802836b005", + "0x52e80052590282e72e800736b0052ec0051d60282e900536b0050da005", + "0x19702802836b0050df0052590282f50df00736b00500a0051d602802836b", + "0x50e10052660280e12e700736b0052e700521a0282e700536b0052e7005", + "0xe32f500736b0052f500521a02802836b0052f200530f0282f22f300736b", + "0x2f30052f702802836b0052e000530f0282e02f400736b0050e3005266028", + "0x2ee00536b0052ee0050c00282dd00536b0052f40052f70282de00536b005", + "0x70280287be02836b0072dd2de0072a20282e900536b0052e9005092028", + "0x3102802836b0052f500525902802836b0052e700525902802836b005028", + "0x536b0052db0053450282db00536b0050280300281a600536b0052e9005", + "0x2804d0280ea00536b0052da00507d0282d700536b0051a60050920282da", + "0x52660280ee00536b0052e900503102802836b0050280070280287bf005", + "0x736b0052f500526602802836b0052d600530f0282d42d600736b0052e7", + "0x52f70282d100536b0052d40052f702802836b0052d300530f0282d22d3", + "0x36b0072d02d10072a20280ee00536b0050ee0050920282d000536b0052d2", + "0x280300282cf00536b0050ee00503102802836b0050280070280287c0028", + "0x2d700536b0052cf0050920280f600536b0052cc0053450282cc00536b005", + "0x2836b0050280070280287bf00502804d0280ea00536b0050f600507d028", + "0x52cb0050810282cb00536b0050280300280f800536b0050ee005031028", + "0x280ea00536b0052ca00507d0282d700536b0050f80050920282ca00536b", + "0x530b00504f0280fa00536b0052c90057c20282c900536b0050ea0057c1", + "0x282ee00536b0052ee0050c00282d700536b0052d700509202830b00536b", + "0x2802836b0050280070280fa2ee2d730b00a0050fa00536b0050fa0057c3", + "0x36b0052ef0050310282ef00536b0052ef00509202802836b00500a005259", + "0x7c40280f900536b0052f60fb00702d0280fb00536b0050280230280fc005", + "0x36b0050fc00509202830b00536b00530b00504f0282c800536b0050f9005", + "0xa0052c800536b0052c80057c30280db00536b0050db0050c00280fc005", + "0x509202802836b00500a00525902802836b0050280070282c80db0fc30b", + "0x10200536b0050280230282c700536b00539900503102839900536b005399", + "0x504f02810300536b0051040057c402810400536b0052f710200702d028", + "0x536b0052f80050c00282c700536b0052c700509202830b00536b00530b", + "0x36b0050280070281032f82c730b00a00510300536b0051030057c30282f8", + "0x539700509202802836b0050dc00557c02802836b00500a005259028028", + "0x2d0282c600536b00502802302810100536b00539700503102839700536b", + "0x530b00504f02810a00536b0052c50057c40282c500536b0053982c6007", + "0x2830c00536b00530c0050c002810100536b00510100509202830b00536b", + "0x2802836b00502800702810a30c10130b00a00510a00536b00510a0057c3", + "0x2836b00531300525902802836b00504f00557c02802836b00500a005259", + "0x502802302810b00536b00539600503102839600536b005396005092028", + "0x2c300536b00510c0057c402810c00536b0050c610900702d02810900536b", + "0xc70050c002810b00536b00510b00509202830b00536b00530b00504f028", + "0x70282c30c710b30b00a0052c300536b0052c30057c30280c700536b005", + "0x57c02802836b00500a00525902802836b00505100504702802836b005028", + "0x2802836b00509800525902802836b00531300525902802836b00504f005", + "0x536b00502824502811200536b0050280200282c200536b005303005031", + "0x9202802500536b00511311200736402811300536b00511300501b028113", + "0x36b0050250052150282c100536b0053070050c002811100536b0052c2005", + "0x36b00500a00525902802836b0050280070280287c500502804d02811d005", + "0x509800525902802836b00531300525902802836b00504f00557c028028", + "0x9202811900536b00530500503102830500536b00530500509202802836b", + "0x36b0053040052150282c100536b0050bf0050c002811100536b005119005", + "0x7c40282c000536b00511d11800702d02811800536b00502802302811d005", + "0x36b00511100509202830b00536b00530b00504f02811f00536b0052c0005", + "0xa00511f00536b00511f0057c30282c100536b0052c10050c0028111005", + "0x557c02802836b00500a00525902802836b00502800702811f2c111130b", + "0x3102802836b00533d0057c602802836b00503100525902802836b00504f", + "0x3772be0072850282be00536b00533308e00728502812100536b005341005", + "0x1b0282ba00536b0050282450282bb00536b0050280200282bc00536b005", + "0x36b00502802302812400536b0052ba2bb0073640282ba00536b0052ba005", + "0x2812300536b0051250057c402812500536b00512412600702d028126005", + "0x50070050c002812100536b0051210050920282bc00536b0052bc00504f", + "0x280070281230071212bc00a00512300536b0051230057c302800700536b", + "0x557c02802836b00500a00525902802836b00534200504702802836b005", + "0x3102802836b00503100525902802836b00500b00525902802836b00504f", + "0x36b0052b900509202835900536b00505800504f0282b900536b005059005", + "0x57c102812c00536b0052b70053450282b700536b005028030028356005", + "0x536b0050070050c00282b600536b00512b0057c202812b00536b00512c", + "0x50280057c70282b600735635900a0052b600536b0052b60057c3028007", + "0x500a0057c902804f00b00a03100a36b0050070057c802800702800736b", + "0x310057ca02802836b00504f0057c902802836b00500b0057c902802836b", + "0x500736b0050050057c702800f00536b0050920057cb02809200536b005", + "0x2802836b00504e0057c902801401304e1c800a36b0050100057c8028010", + "0x536b0051c80057ca02802836b0050140057c902802836b0050130057c9", + "0x1b02801700536b00503000f00732c02803000536b00504d0057cb02804d", + "0x50280070280180057cc02836b00701700534802801700536b005017005", + "0x1b36800a36b0053690057c802836902800736b0050280057c702802836b", + "0x3670057c902802836b00501c0057c902802836b0053680057c902836701c", + "0x2801f00536b0053660057cb02836600536b00501b0057ca02802836b005", + "0x2802d02336436500a36b0050200057c802802000500736b0050050057c7", + "0x2836b00502d0057c902802836b0050230057c902802836b0053650057c9", + "0x1f00732c0280c000536b0053630057cb02836300536b0053640057ca028", + "0x2836b00708400534802808400536b00508400501b02808400536b0050c0", + "0x7c80281aa02800736b0050280057c702802836b0050280070283610057cd", + "0x320057c902802836b00535f0057c902836c35d03235f00a36b0051aa005", + "0x7cb02803300536b00535d0057ca02802836b00536c0057c902802836b005", + "0x503c0057c802803c00500736b0050050057c702800c00536b005033005", + "0x2836b0050400057c902802836b0050360057c902835935e04003600a36b", + "0x53560057cb02835600536b00535e0057ca02802836b0053590057c9028", + "0x21c00536b00521c00501b02821c00536b00521500c00732c02821500536b", + "0x280057c802802836b0050280070280460057ce02836b00721c005348028", + "0x36b0050470057c902802836b0050480057c902823704504704800a36b005", + "0x2390057cb02823900536b0052370057ca02802836b0050450057c9028028", + "0x523f0057c902824c24924523f00a36b0050050057c802823b00536b005", + "0x24c0057ca02802836b0052490057c902802836b0052450057c902802836b", + "0x536b00524e23b00732c02824e00536b00524d0057cb02824d00536b005", + "0x282520057cf02836b00724f00534802824f00536b00524f00501b02824f", + "0x900536b00505000508102805000536b00502803002802836b005028007", + "0x534602802836b00502800702800900500500900536b00500900507d028", + "0x2805800536b00505b00534502805b00536b00502803002802836b005252", + "0x4600534602802836b00502800702805800500505800536b00505800507d", + "0x2804d02802836b0050280055e402802836b0050050055e402802836b005", + "0x50055e402802836b00536100534602802836b0050280070280287d0005", + "0x50280070280287d000502804d02802836b0050280055e402802836b005", + "0x280055e402802836b0050050055e402802836b00501800534602802836b", + "0x7d02805c00536b00505900534502805900536b00502803002802836b005", + "0x70d02800a03100736b00503100535d02805c00500505c00536b00505c005", + "0x36b00500700501f02802836b00502800702800b0057d102836b00700a005", + "0x4f0050077d202804f00536b00502803002802836b00503100521c028028", + "0x2800536b00502800504f02800f00536b0050920057d302809200536b005", + "0x71002802836b00502800702800f02800700500f00536b00500f0057d4028", + "0x504e00535d02804e1c801003136b0050050057d502802836b00500b005", + "0x701401302803174c02801403100736b00503100535d02801304e00736b", + "0x536b0050285eb02802836b0050280070280180170077d603004d00736b", + "0x59002836900536b00536900503302836803000736b00503000535d028369", + "0x2802836b0050280070283663670077d701c01b00736b00736936804d031", + "0x736b00503000535d02801f00536b0050285eb02802836b00501c00521c", + "0x287d802836b00701f0200072a002801b00536b00501b00504f028020030", + "0x36500536b0050285eb02802836b00503100521c02802836b005028007028", + "0x7d902336400736b00736503001b03159002836500536b005365005033028", + "0x2300535d0280c000536b00502873002802836b00502800702836302d007", + "0x36b0070c00840072a002836400536b00536400504f02808402300736b005", + "0x2300535d02836100536b00502873002802836b0050280070280287da028", + "0x73611aa36403159002836100536b0053610050330281aa02300736b005", + "0x36b00503200521c02802836b00502800702836c35d0077db03235f00736b", + "0x502800702804003603c0317dc00c03300736b00700735f0070ac028028", + "0x530d02835900536b00503300504f02835e00536b00502828b02802836b", + "0x280287dd00502804d02821500536b00535e00530d02835600536b00500c", + "0x536b00504000530d02835900536b00503c00504f02802836b005028007", + "0x2300535d02821c00536b00502873002821500536b00503600530d028356", + "0x721c04635903159002821c00536b00521c00503302804602300736b005", + "0x36b00504800504f02802836b0050280070282370450077de04704800736b", + "0x23b23900736b0050470480077df02804700536b005047005033028048005", + "0x57e202802836b0050280070282450057e123f00536b00723b0057e0028", + "0x50b902824e24d24c03136b0052492152390317e302824900536b00523f", + "0x536b00524d0050b902825200536b0053560050b902824f00536b00524e", + "0x503302805b04e00736b00504e00535d02800900536b0050285eb028050", + "0x25c05c0077e405905800736b00705b00924c03159002800900536b005009", + "0x36b00525d24f00721902825d00536b00502821302802836b005028007028", + "0x2805e00536b00525225e0072de02825e00536b00525e00501b02825e005", + "0x506000503302805f05900736b00505900535d02806000536b005028730", + "0x736b00706005f05803159002805e00536b00505e00501b02806000536b", + "0x2802836b00529600521c02802836b0050280070280422980077e529605d", + "0x6705905d03159002806700536b00506700503302806700536b005028730", + "0x52bd00504f02802836b0050280070280060680077e60692bd00736b007", + "0x6f00736b0050692bd0077df02806900536b0050690050330282bd00536b", + "0x7e202802836b0050280070280740057e732500536b0070710057e0028071", + "0x36b0050770050b902807700536b0050750057e802807500536b005325005", + "0x4f02804300536b00534b34c00721902834b00536b00502821302834c005", + "0x287e900502804d02807900536b00504300501b02807a00536b00506f005", + "0x2836b00502300521c02802836b0050100057ea02802836b005028007028", + "0x36b00505000501f02802836b00505e00501f02802836b00504e00521c028", + "0x534c02834807f00736b00507400507702802836b0051c800501f028028", + "0x7d00536b00534800521502808100536b00506f00504f02802836b00507f", + "0x2802836b00500600521c02802836b0050280070280287eb00502804d028", + "0x2836b00504e00521c02802836b00502300521c02802836b0050100057ea", + "0x36b00505000501f02802836b0051c800501f02802836b00505e00501f028", + "0x534500501b02834500536b00502862402834600536b005028020028028", + "0x8100536b00506800504f02834400536b00534534600736402834500536b", + "0x2836b0050280070280287eb00502804d02807d00536b005344005215028", + "0x505900503302829800536b00529800504f02802836b00504200521c028", + "0x536b0073420057e002834234300736b0050592980077df02805900536b", + "0x7e802808c00536b0053410057e202802836b00502800702833d0057ec341", + "0x36b00534300504f02833b00536b00533c0050b902833c00536b00508c005", + "0x2808a00536b0050791c800721902807900536b00533b00501b02807a005", + "0x33a00501b02833a00536b00508a0500072de02808a00536b00508a00501b", + "0x280070283380057ee08833900736b00733a07a0077ed02833a00536b005", + "0x36b00504e05e33703137802833700536b0050880100077ef02802836b005", + "0x4d02808e00536b0053360055ec02808600536b00533900504f028336005", + "0x521c02802836b0050100057ea02802836b0050280070280287f0005028", + "0x2002802836b00505e00501f02802836b00504e00521c02802836b005023", + "0x33300536b00533300501b02833300536b00502824502837700536b005028", + "0x521502833100536b00533800504f02833200536b005333377007364028", + "0x57ea02802836b0050280070280287f100502804d02833000536b005332", + "0x1f02802836b00504e00521c02802836b00502300521c02802836b005010", + "0x2802836b0051c800501f02802836b00505000501f02802836b00505e005", + "0x534300504f02802836b00532f00534c02832e32f00736b00533d005077", + "0x2833100536b00508100530c02807d00536b00532e00521502808100536b", + "0x2802836b0050280070280287f100502804d02833000536b00507d0057f2", + "0x2836b00502300521c02802836b0050100057ea02802836b00525c00521c", + "0x36b0051c800501f02802836b00524f00501f02802836b00504e00521c028", + "0x36b00502802002802836b00525200501f02802836b00505000501f028028", + "0x736402832c00536b00532c00501b02832c00536b00502862402832d005", + "0x36b00508b00521502833100536b00505c00504f02808b00536b00532c32d", + "0x36b0050100057ea02802836b0050280070280287f100502804d028330005", + "0x535600530f02802836b00504e00521c02802836b00502300521c028028", + "0x24500507702802836b00521500530f02802836b0051c800501f02802836b", + "0x33100536b00523900504f02802836b00532b00534c02832a32b00736b005", + "0x2836b0050280070280287f100502804d02833000536b00532a005215028", + "0x36b00502300521c02802836b0050100057ea02802836b00523700521c028", + "0x51c800501f02802836b00535600530f02802836b00504e00521c028028", + "0x502862402832900536b00502802002802836b00521500530f02802836b", + "0x8500536b00532632900736402832600536b00532600501b02832600536b", + "0x502802302833000536b00508500521502833100536b00504500504f028", + "0x32400536b00509500538e02809500536b00533009300702d02809300536b", + "0x32433100700532400536b0053240057d402833100536b00533100504f028", + "0x36b00700735d0070ac02802836b00536c00521c02802836b005028007028", + "0x536b00502828b02802836b0050280070283213220960317f3323098007", + "0x530d02831d00536b00532300530d02831e00536b00509800504f02831f", + "0x504f02802836b0050280070280287f400502804d02831c00536b00531f", + "0x536b00532200530d02831d00536b00532100530d02831e00536b005096", + "0x3302831b02300736b00502300535d02831e00536b00531e00504f02831c", + "0x3190057e002831931a00736b00531b31e0077df02831b00536b00531b005", + "0x536b0053180057e202802836b0050280070283170057f531800536b007", + "0x536b00531c0050b902831131331403136b00531631d31a0317e3028316", + "0x50330280b002300736b00502300535d02831000536b0050287300280a9", + "0xb430d0077f630f0ac00736b0070b031031403159002831000536b005310", + "0x36b00530f0050330280ac00536b0050ac00504f02802836b005028007028", + "0xb900536b00730b0057e002830b0b600736b00530f0ac0077df02830f005", + "0x57e802830800536b0050b90057e202802836b0050280070283090057f7", + "0x536b0053130050b902830600536b0053070050b902830700536b005308", + "0x4e00535d02830400536b0050285eb0280bf00536b0053110050b9028305", + "0x73033040b603159002830400536b00530400503302830304e00736b005", + "0x53060a900721902802836b0050280070283943930077f805130200736b", + "0xdc00536b0053053950072de02839500536b00539500501b02839500536b", + "0x3960050330280c705100736b00505100535d02839600536b005028730028", + "0x36b0073960c73020315900280dc00536b0050dc00501b02839600536b005", + "0x2836b0050c900521c02802836b0050280070280cf0cb0077f90c90c6007", + "0x510c603159002830100536b00530100503302830100536b005028730028", + "0x39700504f02802836b0050280070282fb3980077fa30c39700736b007301", + "0x736b00530c3970077df02830c00536b00530c00503302839700536b005", + "0x2802836b0050280070283990057fb0d500536b0072fa0057e00282fa0d4", + "0x52f70050b90282f700536b0052f80057e80282f800536b0050d50057e2", + "0x282ee00536b0050da2f10072190280da00536b0050282130282f100536b", + "0x7fc00502804d0280d200536b0052ee00501b0282ec00536b0050d400504f", + "0x36b00502300521c02802836b0050100057ea02802836b005028007028028", + "0x50dc00501f02802836b0050bf00501f02802836b00504e00521c028028", + "0x34c0280db2ef00736b00539900507702802836b0051c800501f02802836b", + "0x536b0050db0052150282f600536b0050d400504f02802836b0052ef005", + "0x2836b0052fb00521c02802836b0050280070280287fd00502804d0282e9", + "0x36b00504e00521c02802836b00502300521c02802836b0050100057ea028", + "0x50dc00501f02802836b0051c800501f02802836b0050bf00501f028028", + "0x2e700501b0282e700536b0050286240282e800536b00502802002802836b", + "0x536b00539800504f0280df00536b0052e72e80073640282e700536b005", + "0x36b0050280070280287fd00502804d0282e900536b0050df0052150282f6", + "0x510050330280cb00536b0050cb00504f02802836b0050cf00521c028028", + "0x36b0070e10057e00280e12f500736b0050510cb0077df02805100536b005", + "0x280e300536b0052f30057e202802836b0050280070282f20057fe2f3005", + "0x52f500504f0282e000536b0052f40050b90282f400536b0050e30057e8", + "0x2de00536b0050d21c80072190280d200536b0052e000501b0282ec00536b", + "0x501b0282dd00536b0052de0dc0072de0282de00536b0052de00501b028", + "0x70282da0057ff2db1a600736b0072dd2ec0077ed0282dd00536b0052dd", + "0x504e0bf2d70313780282d700536b0052db0100077ef02802836b005028", + "0x2808e00536b0050ea0055ec02808600536b0051a600504f0280ea00536b", + "0x80100502804d0282d600536b00508e0058000280ee00536b00508600530c", + "0x36b00502300521c02802836b0050100057ea02802836b005028007028028", + "0x36b00502802002802836b0050bf00501f02802836b00504e00521c028028", + "0x73640282d300536b0052d300501b0282d300536b0050282450282d4005", + "0x36b0052d20052150282d100536b0052da00504f0282d200536b0052d32d4", + "0x36b0050100057ea02802836b00502800702802880200502804d0282d0005", + "0x50bf00501f02802836b00504e00521c02802836b00502300521c028028", + "0x2f200507702802836b0051c800501f02802836b0050dc00501f02802836b", + "0x2f600536b0052f500504f02802836b0052cf00534c0282cc2cf00736b005", + "0x2e90057f20282d100536b0052f600530c0282e900536b0052cc005215028", + "0x39400521c02802836b00502800702802880200502804d0282d000536b005", + "0x521c02802836b00502300521c02802836b0050100057ea02802836b005", + "0x1f02802836b0051c800501f02802836b0050bf00501f02802836b00504e", + "0x2802836b00530500501f02802836b00530600501f02802836b0050a9005", + "0x536b0050f800501b0280f800536b0050286240280f600536b005028020", + "0x2150282d100536b00539300504f0282cb00536b0050f80f60073640280f8", + "0x7ea02802836b00502800702802880200502804d0282d000536b0052cb005", + "0x2802836b00504e00521c02802836b00502300521c02802836b005010005", + "0x2836b00531300530f02802836b0050a900501f02802836b0051c800501f", + "0x2ca00534c0282c92ca00736b00530900507702802836b00531100530f028", + "0x282d000536b0052c90052150282d100536b0050b600504f02802836b005", + "0x7ea02802836b0050b400521c02802836b00502800702802880200502804d", + "0x2802836b00504e00521c02802836b00502300521c02802836b005010005", + "0x2836b0050a900501f02802836b0051c800501f02802836b00531100530f", + "0x536b0050286240280fa00536b00502802002802836b00531300530f028", + "0x4f0280fb00536b0050fc0fa0073640280fc00536b0050fc00501b0280fc", + "0x2880200502804d0282d000536b0050fb0052150282d100536b00530d005", + "0x2836b00502300521c02802836b0050100057ea02802836b005028007028", + "0x36b0051c800501f02802836b00531c00530f02802836b00504e00521c028", + "0x534c0282c80f900736b00531700507702802836b00531d00530f028028", + "0x2d000536b0052c80052150282d100536b00531a00504f02802836b0050f9", + "0x10200538e02810200536b0052d02c700702d0282c700536b005028023028", + "0x10400536b0051040057d40282d100536b0052d100504f02810400536b005", + "0x10110300736b0070073640070ac02802836b0050280070281042d1007005", + "0x4f02810b00536b00502828b02802836b00502800702810a2c52c6031803", + "0x36b00510b00530d02810c00536b00510100530d02810900536b005103005", + "0x36b0052c600504f02802836b00502800702802880400502804d0282c3005", + "0xb90282c300536b0052c500530d02810c00536b00510a00530d028109005", + "0x536b0050285eb02811200536b00510c0050b90282c200536b0052c3005", + "0x59002811300536b00511300503302802504e00736b00504e00535d028113", + "0x2802836b00502800702811911d0078052c111100736b007025113109031", + "0x51180050330282c02c100736b0052c100535d02811800536b005028730", + "0x70282bc2be00780612111f00736b0071182c011103159002811800536b", + "0x330282bb00536b00502873002802836b00512100521c02802836b005028", + "0x1260078071242ba00736b0072bb2c111f0315900282bb00536b0052bb005", + "0x51240050330282ba00536b0052ba00504f02802836b005028007028125", + "0x536b0072b90057e00282b912300736b0051242ba0077df02812400536b", + "0x7e802812b00536b0052b70057e202802836b00502800702812c0058082b7", + "0x536b00502821302813100536b0052b60050b90282b600536b00512b005", + "0x1b0282b300536b00512300504f0282b500536b005130131007219028130", + "0x7ea02802836b00502800702802880900502804d0282b200536b0052b5005", + "0x2802836b00504e00521c02802836b00502300521c02802836b005010005", + "0x2836b0051c800501f02802836b0052c200501f02802836b00511200501f", + "0x12300504f02802836b00513600534c02813813600736b00512c005077028", + "0x702802880a00502804d02813500536b00513800521502813700536b005", + "0x21c02802836b0050100057ea02802836b00512500521c02802836b005028", + "0x2802836b00511200501f02802836b00504e00521c02802836b005023005", + "0x2b100536b00502802002802836b0052c200501f02802836b0051c800501f", + "0x2b02b10073640282b000536b0052b000501b0282b000536b005028624028", + "0x13500536b0052af00521502813700536b00512600504f0282af00536b005", + "0x2802836b0052bc00521c02802836b00502800702802880a00502804d028", + "0x2c12be0077df0282c100536b0052c10050330282be00536b0052be00504f", + "0x50280070282ac00580b2ad00536b00713e0057e002813e13f00736b005", + "0xb902814f00536b0052ab0057e80282ab00536b0052ad0057e202802836b", + "0x36b00514600501b0282b300536b00513f00504f02814600536b00514f005", + "0x2814800536b00514800501b02814800536b0052b21c80072190282b2005", + "0x2b30077ed02814a00536b00514a00501b02814a00536b0051482c20072de", + "0x14d0100077ef02802836b0050280070282a800580c14d14b00736b00714a", + "0x36b00514b00504f0282aa00536b00504e1122a60313780282a600536b005", + "0x15515615703136b0052d60057d50282d600536b0052aa0055ec0280ee005", + "0x2803002815400536b00502315615703137802802836b00515500521c028", + "0x536b0051520057d302815200536b0051531540077d202815300536b005", + "0xee00700515100536b0051510057d40280ee00536b0050ee00504f028151", + "0x36b00502300521c02802836b0050100057ea02802836b005028007028151", + "0x36b00502802002802836b00511200501f02802836b00504e00521c028028", + "0x736402816100536b00516100501b02816100536b005028245028150005", + "0x36b0052a40052150282a300536b0052a800504f0282a400536b005161150", + "0x36b0050100057ea02802836b00502800702802880d00502804d0282a2005", + "0x511200501f02802836b00504e00521c02802836b00502300521c028028", + "0x2ac00507702802836b0051c800501f02802836b0052c200501f02802836b", + "0x13700536b00513f00504f02802836b0052a100534c0282a02a100736b005", + "0x1350057f20282a300536b00513700530c02813500536b0052a0005215028", + "0x11900521c02802836b00502800702802880d00502804d0282a200536b005", + "0x521c02802836b00502300521c02802836b0050100057ea02802836b005", + "0x1f02802836b0051c800501f02802836b00511200501f02802836b00504e", + "0x2829e00536b00502862402829f00536b00502802002802836b0052c2005", + "0x11d00504f02829d00536b00529e29f00736402829e00536b00529e00501b", + "0x2829c00536b0050280230282a200536b00529d0052150282a300536b005", + "0x2a300504f02816c00536b00516a00538e02816a00536b0052a229c00702d", + "0x502800702816c2a300700516c00536b00516c0057d40282a300536b005", + "0x700501f02802836b0050100057ea02802836b00536300521c02802836b", + "0x2802002802836b0051c800501f02802836b00504e00521c02802836b005", + "0x2816e00536b00516e00501b02816e00536b00502862402829a00536b005", + "0x29916f00702d02816f00536b00502802302829900536b00516e29a007364", + "0x2d00536b00502d00504f02817200536b00517100538e02817100536b005", + "0x21c02802836b00502800702817202d00700517200536b0051720057d4028", + "0x2817400536b00502873002802836b00503000521c02802836b00504e005", + "0x1b03159002817400536b00517400503302829703100736b00503100535d", + "0x521c02802836b00502800702829229300780e29414300736b007174297", + "0x2857400536b00557400503302857400536b00502873002802836b005294", + "0x2836b00502800702829517900780f02428e00736b007574031143031590", + "0x28e0077df02802400536b00502400503302828e00536b00528e00504f028", + "0x2800702828700581028800536b0072890057e002828928a00736b005024", + "0x2817f00536b0052860057e802828600536b0052880057e202802836b005", + "0x518218100721902818200536b00502821302818100536b00517f0050b9", + "0x2818600536b00518400501b02828500536b00528a00504f02818400536b", + "0x1f02802836b0050100057ea02802836b00502800702802881100502804d", + "0x18700736b00528700507702802836b0051c800501f02802836b005007005", + "0x18900521502828400536b00528a00504f02802836b00518700534c028189", + "0x29500521c02802836b00502800702802881200502804d02819000536b005", + "0x501f02802836b0051c800501f02802836b0050100057ea02802836b005", + "0x1b02819100536b00502862402818f00536b00502802002802836b005007", + "0x517900504f02819200536b00519118f00736402819100536b005191005", + "0x2800702802881200502804d02819000536b00519200521502828400536b", + "0x3302829300536b00529300504f02802836b00529200521c02802836b005", + "0x18a0057e002818a28000736b0050312930077df02803100536b005031005", + "0x536b0052810057e202802836b00502800702828b00581328100536b007", + "0x504f02819900536b0051970050b902819700536b00527d0057e802827d", + "0x36b0051861c800721902818600536b00519900501b02828500536b005280", + "0x2819b00536b00527c0070072de02827c00536b00527c00501b02827c005", + "0x27a00581427b19d00736b00719b2850077ed02819b00536b00519b00501b", + "0x36b00502823b02827800536b00527b0100077ef02802836b005028007028", + "0x2827400536b00527527627803137802827500536b005028032028276005", + "0x52710057d302827100536b0052732740077d202827300536b005028030", + "0x527000536b0052700057d402819d00536b00519d00504f02827000536b", + "0x502802002802836b0050100057ea02802836b00502800702827019d007", + "0x36402826a00536b00526a00501b02826a00536b00502824502826f00536b", + "0x526d26b00702d02826b00536b00502802302826d00536b00526a26f007", + "0x2827a00536b00527a00504f02826600536b00526700538e02826700536b", + "0x57ea02802836b00502800702826627a00700526600536b0052660057d4", + "0x7702802836b0051c800501f02802836b00500700501f02802836b005010", + "0x36b00528000504f02802836b00526300534c02826026300736b00528b005", + "0x702d02825f00536b00502802302819000536b005260005215028284005", + "0x36b00528400504f02825a00536b00525b00538e02825b00536b00519025f", + "0x2836b00502800702825a28400700525a00536b00525a0057d4028284005", + "0x36b00504e00535d02802836b00503000521c02802836b00536600521c028", + "0x581502836b00725900570d02836700536b00536700504f02825904e007", + "0x36b00504e00521c02802836b0051c800501f02802836b005028007028258", + "0x7d202825700536b0050280300281ae00536b005031007010031378028028", + "0x536700504f02825400536b0052560057d302825600536b0052571ae007", + "0x36b00502800702825436700700525400536b0052540057d402836700536b", + "0x503100535d0281b200536b00502873002802836b005258005710028028", + "0x36b0071b21b43670315900281b200536b0051b20050330281b403100736b", + "0x2836b00525100521c02802836b00502800702824a250007816251253007", + "0x24600503302824403100736b00503100535d02824600536b005028730028", + "0x281bf23c0078171bd24200736b00724624425303159002824600536b005", + "0x536b0051bd00503302824200536b00524200504f02802836b005028007", + "0x81818b00536b00723a0057e002823a1c100736b0051bd2420077df0281bd", + "0x23d0057e802823d00536b00518b0057e202802836b005028007028238005", + "0x2823100536b0050282130281c600536b0052350050b902823500536b005", + "0x23000501b02822e00536b0051c100504f02823000536b0052311c6007219", + "0x1c800501f02802836b00502800702802881900502804d02822d00536b005", + "0x521c02802836b00500700501f02802836b0050100057ea02802836b005", + "0x2291cb00736b00523800507702802836b00504e00521c02802836b005031", + "0x522900521502822600536b0051c100504f02802836b0051cb00534c028", + "0x51bf00521c02802836b00502800702802881a00502804d02822700536b", + "0x100057ea02802836b00504e00521c02802836b0051c800501f02802836b", + "0x2802002802836b00503100521c02802836b00500700501f02802836b005", + "0x2822100536b00522100501b02822100536b00502862402822200536b005", + "0x22000521502822600536b00523c00504f02822000536b005221222007364", + "0x24a00521c02802836b00502800702802881a00502804d02822700536b005", + "0x1d103100736b00503100535d02825000536b00525000504f02802836b005", + "0x7e002822321d00736b0051d12500077df0281d100536b0051d1005033028", + "0x521b0057e202802836b0050280070281d300581b21b00536b007223005", + "0x281d600536b0052180050b902821800536b00521a0057e802821a00536b", + "0x4e22e03174c02822d00536b0051d600501b02822e00536b00521d00504f", + "0x1c800721902802836b0050280070282131da00781c2161d800736b007031", + "0x36b0052190070072de02821900536b00521900501b02821900536b00522d", + "0x2820c00536b00502803002820d00536b00521620e01003137802820e005", + "0x1d800504f02820a00536b00520b0057d302820b00536b00520c20d0077d2", + "0x502800702820a1d800700520a00536b00520a0057d40281d800536b005", + "0x22d00501f02802836b0051c800501f02802836b00521300521c02802836b", + "0x2802002802836b00500700501f02802836b0050100057ea02802836b005", + "0x2820800536b00520800501b02820800536b00502875902820900536b005", + "0x1e120300702d02820300536b0050280230281e100536b005208209007364", + "0x1da00536b0051da00504f0281ff00536b00520100538e02820100536b005", + "0x1f02802836b0050280070281ff1da0070051ff00536b0051ff0057d4028", + "0x2802836b00500700501f02802836b0050100057ea02802836b0051c8005", + "0x736b0051d300507702802836b00504e00521c02802836b00503100521c", + "0x521502822600536b00521d00504f02802836b0051fd00534c0281fa1fd", + "0x536b0052271f300702d0281f300536b00502802302822700536b0051fa", + "0x57d402822600536b00522600504f02800000536b0051ee00538e0281ee", + "0x501800521c02802836b00502800702800022600700500000536b005000", + "0x4e00521c02802836b00500700501f02802836b0050100057ea02802836b", + "0x2802002802836b00503100521c02802836b0051c800501f02802836b005", + "0x2857d00536b00557d00501b02857d00536b00502875902857c00536b005", + "0x57f58000702d02858000536b00502802302857f00536b00557d57c007364", + "0x1700536b00501700504f02858300536b00558100538e02858100536b005", + "0x502802836b00502836902858301700700558300536b0055830057d4028", + "0x3102802836b00502800702809204f00781d00b00a00736b007005028007", + "0x36b00500a00504f02801000536b00500700581e02800f00536b00500b005", + "0x82004e1c800736b00701000581f02800f00536b00500f00509202800a005", + "0x4e00582102801400536b00500f00503102802836b005028007028013005", + "0x1700536b00503000582302803000536b00504d00582202804d00536b005", + "0x55fc02801800536b00501703100736402801700536b00501700501b028", + "0x536b00501400509202800a00536b00500a00504f02836900536b0051c8", + "0xa5fe02801800536b00501800521502836900536b0053690055fd028014", + "0x36b00502800702801c01b36803100501c01b36803136b00501836901400a", + "0x502803002836700536b00500f00503102802836b005013005600028028", + "0x2000536b00501f0050f802801f00536b0053660310070f602836600536b", + "0x200052cb02836700536b00536700509202800a00536b00500a00504f028", + "0x500700582402802836b00502800702802036700a03100502000536b005", + "0x2802002836500536b00509200503102802836b00503100504002802836b", + "0x2802300536b00502300501b02802300536b00502804602836400536b005", + "0x2d36300702d02836300536b00502802302802d00536b005023364007364", + "0x4f00536b00504f00504f02808400536b0050c00052ca0280c000536b005", + "0x36504f03100508400536b0050840052cb02836500536b005365005092028", + "0x582500a03100736b00700700500f02800700536b00500500500a028084", + "0x504f0051c802804f00536b00500a00501002802836b00502800702800b", + "0x2809200536b00509200501b02803100536b00503100501302809200536b", + "0x524f02802836b0050280070281c800582601000f00736b00703100500f", + "0x536b00504e00525202801300536b00500f00501302804e00536b005010", + "0x4d00536b00502803002802836b00502800702802882700502804d028014", + "0x3000525202801300536b0051c800501302803000536b00504d005050028", + "0x536b00501700535e02801701300736b00501300507102801400536b005", + "0x1002802836b00502800702836800582836900536b007014005009028018", + "0x36b00501c00501b02801c00536b00501b0051c802801b00536b005369005", + "0x36b00502800702801f00582936636700736b00701c02800708602801c005", + "0x1300500f02836700536b00536700504f02802836b005018005237028028", + "0x36b00536500524f02802836b00502800702836400582a36502000736b007", + "0x4d02836300536b00502300525202802d00536b005020005013028023005", + "0x50500280c000536b00502803002802836b00502800702802882b005028", + "0x536b00508400525202802d00536b00536400501302808400536b0050c0", + "0x35f00582c1aa00536b00736300500902836100536b00502d00535e028363", + "0x36b0050320051c802803200536b0051aa00501002802836b005028007028", + "0x3336c00736b00735d3670070ac02835d00536b00535d00501b02835d005", + "0x536b00503336609203182e02802836b00502800702803603c00c03182d", + "0x505b02836c00536b00536c00504f02835e00536b00504000582f028040", + "0x702835e36136c03100535e00536b00535e00583002836100536b005361", + "0x1f02802836b00503600530f02802836b00503c00530f02802836b005028", + "0x35900536b00500c00504f02802836b00536600508e02802836b005092005", + "0x2802836b00535f00504702802836b00502800702802883100502804d028", + "0x536b00536700504f02802836b00536600508e02802836b00509200501f", + "0x36100505b02821500536b00535600583202835600536b005028030028359", + "0x2800702821536135903100521500536b00521500583002836100536b005", + "0x504f02802836b00501300501c02802836b00509200501f02802836b005", + "0x504702802836b00502800702802883300502804d02821c00536b00501f", + "0x4f02802836b00501300501c02802836b00509200501f02802836b005368", + "0x536b00504600583202804600536b00502803002821c00536b005028005", + "0x21c03100504800536b00504800583002801800536b00501800505b028048", + "0x500b00535e02804700536b00502803002802836b005028007028048018", + "0x2802800536b00502800504f02823700536b00504700583202804500536b", + "0x23704502803100523700536b00523700583002804500536b00504500505b", + "0xb00583502800b00536b00502883402800a03100736b005007005266028", + "0x4f00783602800f09204f03136b00500b0310280317e302800b00536b005", + "0xf01000783602802836b00502800702804e0058371c801000736b007092", + "0x501400500725b02802836b00502800702804d00583801401300736b007", + "0x2801800536b00502883402801700536b0051c803000725b02803000536b", + "0x2801b36836903136b00501800a0130317e302801800536b005018005835", + "0x36600583936701c00736b00736836900783602801700536b005017005278", + "0x2836500583a02001f00736b00701b01c00783602802836b005028007028", + "0x536736400725b02836400536b00502001700725b02802836b005028007", + "0x2836300536b00502d02300773602802d00536b00502803002802300536b", + "0x50c000571e02801f00536b00501f00504f0280c000536b005363005737", + "0x2836b00501700526d02802836b0050280070280c001f0070050c000536b", + "0x536b00502824502808400536b00502802002802836b00536700508e028", + "0x4f0281aa00536b00536108400736402836100536b00536100501b028361", + "0x2883b00502804d02803200536b0051aa00521502835f00536b005365005", + "0x2836b00501b00530f02802836b00501700526d02802836b005028007028", + "0x36b00536c00501b02836c00536b00502824502835d00536b005028020028", + "0x2835f00536b00536600504f02803300536b00536c35d00736402836c005", + "0x503200c00702d02800c00536b00502802302803200536b005033005215", + "0x2835f00536b00535f00504f02803600536b00503c00571d02803c00536b", + "0x530f02802836b00502800702803635f00700503600536b00503600571e", + "0x2002802836b0051c800508e02802836b00500500526d02802836b00500a", + "0x35e00536b00535e00501b02835e00536b00502824502804000536b005028", + "0x521502835600536b00504d00504f02835900536b00535e040007364028", + "0x530f02802836b00502800702802883c00502804d02821500536b005359", + "0x2002802836b00500f00530f02802836b00500500526d02802836b00500a", + "0x4600536b00504600501b02804600536b00502824502821c00536b005028", + "0x521502835600536b00504e00504f02804800536b00504621c007364028", + "0x536b00521504700702d02804700536b00502802302821500536b005048", + "0x571e02835600536b00535600504f02823700536b00504500571d028045", + "0x502800700502802836b00502836902823735600700523700536b005237", + "0x500b00503102802836b00502800702809204f00783d00b00a00736b007", + "0x281c803100736b00503100535d02801000536b0050280e102800f00536b", + "0x101c80072a002800f00536b00500f00509202800a00536b00500a00504f", + "0x2804e00536b00500f00503102802836b00502800702802883e02836b007", + "0x501300700725b02801300536b00501300533202801300536b005028377", + "0x9202804d00536b00504d00503302804d00536b0050280e102801400536b", + "0x4d03100a03159002801400536b00501400527802804e00536b00504e005", + "0x504e00503102802836b00502800702836901800783f01703000736b007", + "0x2836800536b00536800509202803000536b00503000504f02836800536b", + "0x36803000a73302801700536b00501700503302801400536b005014005278", + "0x2802836b00502800702836701c01b03100536701c01b03136b005017014", + "0x536b00504e00503102802836b00501400526d02802836b00536900521c", + "0x502000501b02802000536b00502862402801f00536b005028020028366", + "0x2836400536b00502802302836500536b00502001f00736402802000536b", + "0x1800504f02802d00536b00502300571d02802300536b00536536400702d", + "0x2d00536b00502d00571e02836600536b00536600509202801800536b005", + "0x3102802836b00503100521c02802836b00502800702802d366018031005", + "0x536b0050c00053320280c000536b00502873402836300536b00500f005", + "0x773602836100536b00502803002808400536b0050c000700725b0280c0", + "0x36b00500a00504f02835f00536b0051aa0057370281aa00536b005361084", + "0x3100535f00536b00535f00571e02836300536b00536300509202800a005", + "0x3100521c02802836b00500700526d02802836b00502800702835f36300a", + "0x4602835d00536b00502802002803200536b00509200503102802836b005", + "0x36b00536c35d00736402836c00536b00536c00501b02836c00536b005028", + "0x71d02803c00536b00503300c00702d02800c00536b005028023028033005", + "0x36b00503200509202804f00536b00504f00504f02803600536b00503c005", + "0x50050050dc02803603204f03100503600536b00503600571e028032005", + "0x2836b00502800702803100584002836b00700700534802800700500736b", + "0x702802800500502800536b00502800525302802836b00500500501f028", + "0x3302800a00536b00502803202802836b00503100534602802836b005028", + "0x36b00502823f02800b00536b00500a0280071b402800a00536b00500a005", + "0xf00536b00504f09200732c02809200500736b0050050050dc02804f005", + "0xf00534802800b00536b00500b00525302800f00536b00500f00501b028", + "0x2802836b00500500501f02802836b00502800702801000584102836b007", + "0x1000534602802836b00502800702800b00500500b00536b00500b005253", + "0x1b40281c800536b0051c80050330281c800536b00502803202802836b005", + "0x36b0050050050dc02801300536b0050280ea02804e00536b0051c800b007", + "0x4d00536b00504d00501b02804d00536b00501301400732c028014005007", + "0x702803000584202836b00704d00534802804e00536b00504e005253028", + "0x504e00536b00504e00525302802836b00500500501f02802836b005028", + "0x36b00502803202802836b00503000534602802836b00502800702804e005", + "0x2801800536b00501704e0071b402801700536b005017005033028017005", + "0x36936800732c02836800500736b0050050050dc02836900536b005028843", + "0x1800536b00501800525302801b00536b00501b00501b02801b00536b005", + "0x500501f02802836b00502800702801c00584402836b00701b005348028", + "0x2836b00502800702801800500501800536b00501800525302802836b005", + "0x36b00536700503302836700536b00502803202802836b00501c005346028", + "0xdc02801f00536b00502884502836600536b0053670180071b4028367005", + "0x36500501b02836500536b00501f02000732c02802000500736b005005005", + "0x84602836b00736500534802836600536b00536600525302836500536b005", + "0x536600525302802836b00500500501f02802836b005028007028364005", + "0x2802836b00536400534602802836b00502800702836600500536600536b", + "0x50233660071b402802300536b00502300503302802300536b005028032", + "0x280c000500736b0050050050dc02836300536b00502884702802d00536b", + "0x2d00525302808400536b00508400501b02808400536b0053630c000732c", + "0x2836b00502800702836100584802836b00708400534802802d00536b005", + "0x702802d00500502d00536b00502d00525302802836b00500500501f028", + "0x330281aa00536b00502803202802836b00536100534602802836b005028", + "0x36b00502884902835f00536b0051aa02d0071b40281aa00536b0051aa005", + "0x36c00536b00503235d00732c02835d00500736b0050050050dc028032005", + "0x36c00534802835f00536b00535f00525302836c00536b00536c00501b028", + "0x2802836b00500500501f02802836b00502800702803300584a02836b007", + "0x3300534602802836b00502800702835f00500535f00536b00535f005253", + "0x1b402800c00536b00500c00503302800c00536b00502803202802836b005", + "0x36b0050050050dc02803600536b00502860f02803c00536b00500c35f007", + "0x35e00536b00535e00501b02835e00536b00503604000732c028040005007", + "0x702835900584b02836b00735e00534802803c00536b00503c005253028", + "0x503c00536b00503c00525302802836b00500500501f02802836b005028", + "0x36b00502803202802836b00535900534602802836b00502800702803c005", + "0x2821500536b00535603c0071b402835600536b005356005033028356005", + "0x21c04600732c02804600500736b0050050050dc02821c00536b00502884c", + "0x21500536b00521500525302804800536b00504800501b02804800536b005", + "0x500501f02802836b00502800702804700584d02836b007048005348028", + "0x2836b00502800702821500500521500536b00521500525302802836b005", + "0x36b00504500503302804500536b00502803202802836b005047005346028", + "0xdc02823900536b00502884e02823700536b0050452150071b4028045005", + "0x23f00501b02823f00536b00523923b00732c02823b00500736b005005005", + "0x84f02836b00723f00534802823700536b00523700525302823f00536b005", + "0x523700525302802836b00500500501f02802836b005028007028245005", + "0x2802836b00524500534602802836b00502800702823700500523700536b", + "0x52492370071b402824900536b00524900503302824900536b005028032", + "0x2824e00500736b0050050050dc02824d00536b00502833902824c00536b", + "0x24c00525302824f00536b00524f00501b02824f00536b00524d24e00732c", + "0x2836b00502800702825200585002836b00724f00534802824c00536b005", + "0x702824c00500524c00536b00524c00525302802836b00500500501f028", + "0x3302805000536b00502803202802836b00525200534602802836b005028", + "0x36b00502885102800900536b00505024c0071b402805000536b005050005", + "0x5900536b00505b05800732c02805800500736b0050050050dc02805b005", + "0x5900534802800900536b00500900525302805900536b00505900501b028", + "0x2802836b00500500501f02802836b00502800702805c00585202836b007", + "0x5c00534602802836b00502800702800900500500900536b005009005253", + "0x1b402825c00536b00525c00503302825c00536b00502803202802836b005", + "0x36b0050050050dc02825e00536b0050280d202825d00536b00525c009007", + "0x6000536b00506000501b02806000536b00525e05e00732c02805e005007", + "0x702805f00585302836b00706000534802825d00536b00525d005253028", + "0x525d00536b00525d00525302802836b00500500501f02802836b005028", + "0x36b00502803202802836b00505f00534602802836b00502800702825d005", + "0x2829600536b00505d25d0071b402805d00536b00505d00503302805d005", + "0x29804200732c02804200500736b0050050050dc02829800536b005028854", + "0x29600536b00529600525302806700536b00506700501b02806700536b005", + "0x500501f02802836b0050280070282bd00585502836b007067005348028", + "0x2836b00502800702829600500529600536b00529600525302802836b005", + "0x36b00506900503302806900536b00502803202802836b0052bd005346028", + "0xdc02800600536b00502885602806800536b0050692960071b4028069005", + "0x7100501b02807100536b00500606f00732c02806f00500736b005005005", + "0x85702836b00707100534802806800536b00506800525302807100536b005", + "0x506800525302802836b00500500501f02802836b005028007028325005", + "0x2802836b00532500534602802836b00502800702806800500506800536b", + "0x50740680071b402807400536b00507400503302807400536b005028032", + "0x2834c00536b00507700500732c02807700536b00502823902807500536b", + "0x734c00534802807500536b00507500525302834c00536b00534c00501b", + "0x507500536b00507500525302802836b00502800702834b00585802836b", + "0x36b00502803202802836b00534b00534602802836b005028007028075005", + "0x2807a00536b0050430750071b402804300536b005043005033028043005", + "0x9204f00b03136b00500a00577002807a00500507a00536b00507a005253", + "0x1003136b00709200f00700500a85902800f00b00736b00500b00521a028", + "0x536b00501000509202802836b00502800702804d01401303185a04e1c8", + "0x50c002804e00536b00504e00522202803000536b005010005031028010", + "0x536b00704e00522102803000536b0050300050920281c800536b0051c8", + "0x85c02836900536b00503000503102802836b00502800702801800585b017", + "0x36900536b00536900509202801b00536b00502885d02836800536b005028", + "0x36900a22902801b00536b00501b00519702836800536b005368005197028", + "0x2836b00502800702836502001f03185e36636701c03136b00701b3681c8", + "0x36600522202836400536b00501c00503102801c00536b00501c005092028", + "0x36400536b00536400509202836700536b0053670050c002836600536b005", + "0x503102802836b00502800702802d00585f02300536b007366005221028", + "0xc000736b0050c00057ac0280c000536b00502886002836300536b005364", + "0x317ae02836300536b00536300509202808400536b0050840057ad028084", + "0x35e04003186103603c00c03336c35d03235f1aa3611c836b00708400b028", + "0x3636100728502835600536b00536300503102802836b005028007028359", + "0x36b00500c21c00728502821c00536b00503c21500728502821500536b005", + "0x4700536b00536c04800728502804800536b005033046007285028046005", + "0x28502823700536b00503204500728502804500536b00535d047007285028", + "0x523900504f02823b00536b0051aa0057b002823900536b00535f237007", + "0x23f23b00736b00523b00521a02803100536b00503100519702823900536b", + "0x2824924500736b00523f0312390317b102823f00536b00523f005197028", + "0x2450317b202824c00536b00524c0057ad02824c0c000736b0050c00057ac", + "0x2836b00524e0057b302805805b00905025224f24e24d00f36b00524c249", + "0x28502805c00536b00505b05900728502805900536b00505824d007285028", + "0x25d00728502825d00536b00505025c00728502825c00536b00500905c007", + "0x6000736b00505e00526602805e00536b00502877802825e00536b005252", + "0x9202805f00536b00505f00530d02829605d00736b00524f00526602805f", + "0x6700786204229800736b00729605f25e03117f02835600536b005356005", + "0x36b00502803002806900536b00535600503102802836b0050280070282bd", + "0x9202806f00536b00529800504f02800600536b005068005345028068005", + "0x36b00500600507d02832500536b00504200530d02807100536b005069005", + "0x36b00535600503102802836b00502800702802886300502804d028074005", + "0x504f02834c00536b00507700508102807700536b005028030028075005", + "0x536b0052bd00530d02807100536b00507500509202806f00536b005067", + "0x3117f02806000536b00506000530d02807400536b00534c00507d028325", + "0x3102802836b00502800702807907a00786404334b00736b00705d06006f", + "0x36b00507f00509202834800536b00534b00504f02807f00536b005071005", + "0x4d02834600536b00532500530d02807d00536b00504300530d028081005", + "0x28702834500536b00507100503102802836b005028007028028865005028", + "0x536b00534500509202834400536b00534400530d02834400536b005028", + "0x502800702833d34100786634234300736b00734432507a03117f028345", + "0x9202834800536b00534300504f02808c00536b00534500503102802836b", + "0x36b00534200530d02807d00536b00507900530d02808100536b00508c005", + "0x2802836b00502800702833b00586733c00536b0070740052e0028346005", + "0x36b00534800504f02808a00536b00508100503102802836b00533c005047", + "0x7b102823b00536b00523b00519702804f00536b00504f005197028348005", + "0x317b20280c000536b0050c00057ad02833933a00736b00523b04f348031", + "0x36b0053380057b302833337708e08633633733808800f36b0050c033933a", + "0x2833100536b00537733200728502833200536b005333088007285028028", + "0x728502832f00536b00508633000728502833000536b00508e331007285", + "0x508a00509202832d00536b00534607d00727d02832e00536b00533632f", + "0x2832e00536b00532e00504f02832d00536b00532d00519702808a00536b", + "0x2800702832632932a03186932b08b32c03136b00732d02336708a00a868", + "0x2808500536b00532c00503102832c00536b00532c00509202802836b005", + "0x8b08500a86802832b00536b00532b00578e02808500536b005085005092", + "0x2802836b00502800702809632309803186a32409509303136b007337017", + "0x532200509202832200536b00509300503102809300536b005093005092", + "0x36b00732432b09532200a86b02832400536b00532400578e02832200536b", + "0x532100509202802836b00502800702831b31c31d03186c31e31f321031", + "0x2831900536b00531e00586d02831a00536b00532100503102832100536b", + "0x532e00504f02831700536b00531800586f02831800536b00531900586e", + "0x2831f00536b00531f0050c002831a00536b00531a00509202832e00536b", + "0x2802836b00502800702831731f31a32e00a00531700536b005317005870", + "0x36b00502802302831600536b00531d00503102831d00536b00531d005092", + "0x2831100536b00531300587102831300536b00531b31400702d028314005", + "0x531c0050c002831600536b00531600509202832e00536b00532e00504f", + "0x2800702831131c31632e00a00531100536b00531100587002831c00536b", + "0x3102809800536b00509800509202802836b00532b00522002802836b005", + "0x36b00509631000702d02831000536b0050280230280a900536b005098005", + "0x9202832e00536b00532e00504f0280ac00536b0050b00058710280b0005", + "0x36b0050ac00587002832300536b0053230050c00280a900536b0050a9005", + "0x36b00501700522002802836b0050280070280ac3230a932e00a0050ac005", + "0x32a00503102832a00536b00532a00509202802836b005337005259028028", + "0xb400536b00532630d00702d02830d00536b00502802302830f00536b005", + "0x30f00509202832e00536b00532e00504f0280b600536b0050b4005871028", + "0xb600536b0050b600587002832900536b0053290050c002830f00536b005", + "0x2802836b00533b00504702802836b0050280070280b632930f32e00a005", + "0x2836b00534600530f02802836b00501700522002802836b00507d00530f", + "0x36b00523b00525902802836b0050c00057c602802836b005023005220028", + "0x34800504f02830b00536b00508100503102802836b00504f005259028028", + "0x702802887200502804d02830900536b00530b0050920280b900536b005", + "0x22002802836b00507900530f02802836b00533d00530f02802836b005028", + "0x2802836b00502300522002802836b00507400534402802836b005017005", + "0x2836b00504f00525902802836b00523b00525902802836b0050c00057c6", + "0x3080050920280b900536b00534100504f02830800536b005345005031028", + "0x1b02830600536b00502887302830700536b00502802002830900536b005", + "0x36b00502802302830500536b00530630700736402830600536b005306005", + "0x2830300536b00530400587102830400536b0053050bf00702d0280bf005", + "0x53670050c002830900536b0053090050920280b900536b0050b900504f", + "0x280070283033673090b900a00530300536b00530300587002836700536b", + "0x525902802836b00503100525902802836b00501700522002802836b005", + "0x3102802836b0050c00057c602802836b00502300522002802836b00504f", + "0x35e05100728502805100536b00535904000728502830200536b005363005", + "0x1b02839500536b00502824502839400536b00502802002839300536b005", + "0x36b0050280230280dc00536b00539539400736402839500536b005395005", + "0x280c600536b0050c70058710280c700536b0050dc39600702d028396005", + "0x53670050c002830200536b00530200509202839300536b00539300504f", + "0x280070280c636730239300a0050c600536b0050c600587002836700536b", + "0x522002802836b00500b00525902802836b00502d00504702802836b005", + "0x3102802836b00504f00525902802836b00503100525902802836b005017", + "0xcf00536b0050282450280cb00536b0050280200280c900536b005364005", + "0x509202830100536b0050cf0cb0073640280cf00536b0050cf00501b028", + "0x536b00530100521502830c00536b0053670050c002839700536b0050c9", + "0x2836b00500b00525902802836b00502800702802887400502804d028398", + "0x36b00504f00525902802836b00503100525902802836b005017005220028", + "0x50920282fb00536b00501f00503102801f00536b00501f005092028028", + "0x536b00536500521502830c00536b0050200050c002839700536b0052fb", + "0x58710282fa00536b0053980d400702d0280d400536b005028023028398", + "0x536b00539700509202802800536b00502800504f0280d500536b0052fa", + "0x2800a0050d500536b0050d500587002830c00536b00530c0050c0028397", + "0x3100525902802836b00500b00525902802836b0050280070280d530c397", + "0x87502839900536b00503000503102802836b00504f00525902802836b005", + "0x36b0052f700586f0282f700536b0052f800586e0282f800536b005018005", + "0xc002839900536b00539900509202802800536b00502800504f0282f1005", + "0x2f11c839902800a0052f100536b0052f10058700281c800536b0051c8005", + "0x2836b00503100525902802836b00500b00525902802836b005028007028", + "0x501300503102801300536b00501300509202802836b00504f005259028", + "0x282ec00536b00504d2ee00702d0282ee00536b0050280230280da00536b", + "0x50da00509202802800536b00502800504f0280d200536b0052ec005871", + "0x50d200536b0050d200587002801400536b0050140050c00280da00536b", + "0x2800f00536b00502805f02804f00536b0050288760280d20140da02800a", + "0xa36b00700a03100503121802802836b00502836902802836b00502824c", + "0x501000509202802836b00502800702804d01401303187704e1c8092010", + "0x1700536b00504e1c800787802803000536b00501000503102801000536b", + "0x36900587b02802836b00501800587a02836901800736b005017005879028", + "0x1b00536b00536800587d02836800536b00536900587c02836900536b005", + "0x502800504f02836700536b00501b00527b02801c00536b00502827c028", + "0x2800700536b00500700530702803000536b00503000509202802800536b", + "0x9200f0072bd02801c00536b00501c00527802836700536b00536700527a", + "0x2802000b01f36600a36b00501c36700703002800b87e02809200536b005", + "0x2836400588036500536b00702000527502800b00536b00500b04f00787f", + "0x3136b00536500527402802300536b00501f00503102802836b005028007", + "0x2837702802836b0050c000504702802836b00502d0052730280c036302d", + "0x2836600536b00536600504f02836100536b00502803202808400536b005", + "0x508400533202836300536b00536300527802802300536b005023005092", + "0x536108436302336600b27102836100536b00536100503302808400536b", + "0x502800702836c00588135d00536b00703200527002803235f1aa03136b", + "0x2803c00c00736b00535d00526f02803300536b00535f00503102802836b", + "0x503600526d02804003600736b00500c00526a02802836b00503c005047", + "0x26702803300536b00503300509202835e00536b00504000526b02802836b", + "0x36b00502800702804804621c03188221535635903136b00735e092033031", + "0x526602804700536b00535900503102835900536b005359005092028028", + "0x523700b00788302823700536b00523700530d02823704500736b005215", + "0x736b00504523900788302804500536b00504500530d02823b23900736b", + "0x583502824500536b00524500530d02824900536b00502888402824523f", + "0x530f02824e24d24c03136b0052492451aa0317e302824900536b005249", + "0x25200536b00523b0050b902824f00536b00524e0050b902802836b00524d", + "0x900501b02800900536b00505024f00721902805000536b005028213028", + "0x536b0052520090072de02825200536b00525200501b02800900536b005", + "0x588602805900536b00505800588502805800536b00505b00520a02805b", + "0x536b00504700509202824c00536b00524c00504f02805c00536b005059", + "0x588702835600536b0053560050c002823f00536b00523f005307028047", + "0x9202802836b00502800702805c35623f04724c00b00505c00536b00505c", + "0x36b0051aa00504f02825c00536b00521c00503102821c00536b00521c005", + "0x21502805e00536b0050460050c002825e00536b00525c00509202825d005", + "0x3102802836b00502800702802888800502804d02806000536b005048005", + "0x505d00534c02829605d00736b00536c00507702805f00536b00535f005", + "0xc002825e00536b00505f00509202825d00536b0051aa00504f02802836b", + "0x2888800502804d02806000536b00529600521502805e00536b005092005", + "0x36b00536400507702829800536b00501f00503102802836b005028007028", + "0x9202825d00536b00536600504f02802836b00504200534c028067042007", + "0x36b00506700521502805e00536b0050920050c002825e00536b005298005", + "0x88902806900536b0050602bd00702d0282bd00536b005028023028060005", + "0x36b00525e00509202825d00536b00525d00504f02806800536b005069005", + "0x88702805e00536b00505e0050c002800b00536b00500b00530702825e005", + "0x2802836b00502800702806805e00b25e25d00b00506800536b005068005", + "0x536b00501300509202802836b00500f00504202802836b00504f00588a", + "0x6f00702d02806f00536b00502802302800600536b005013005031028013", + "0x536b00502800504f02832500536b00507100588902807100536b00504d", + "0x50c002800700536b00500700530702800600536b005006005092028028", + "0x32501400700602800b00532500536b00532500588702801400536b005014", + "0x28602804f00b00736b00500700526602800a03100736b005005005266028", + "0x9200718402800f00b00736b00500b00528602809203100736b005031005", + "0x4f00528602801300536b00504e02800728502804e1c801003136b00500f", + "0x1300728502801703004d03136b00501403100718402801404f00736b005", + "0x1c01b00788b36836900736b00703001001803118602801800536b005017", + "0x536b00536900504f02836700536b00502888c02802836b005028007028", + "0x2804d02802000536b00536700588d02801f00536b00536800530d028366", + "0x1b00504f02836500536b00502888f02802836b00502800702802888e005", + "0x2000536b00536500588d02801f00536b00501c00530d02836600536b005", + "0x36302d02303136b00500b36400718402836400a00736b00500a005286028", + "0x36108400736b00702d01f0c00311860280c000536b005363366007285028", + "0x504f02803200536b00502888c02802836b00502800702835f1aa007890", + "0x536b00503200588d02836c00536b00536100530d02835d00536b005084", + "0xc00536b00502888f02802836b00502800702802889100502804d028033", + "0xc00588d02836c00536b00535f00530d02835d00536b0051aa00504f028", + "0x2835e04000789203603c00736b00702304d35d03118602803300536b005", + "0x35600536b00503c00504f02835900536b00502888c02802836b005028007", + "0x502804d02821c00536b00535900588d02821500536b00503600530d028", + "0x504000504f02804600536b00502888f02802836b005028007028028893", + "0x2821c00536b00504600588d02821500536b00535e00530d02835600536b", + "0x2823700536b00504535600728502804504704803136b00504f00a007184", + "0x2836b00502800702824523f00789423b23900736b007047215237031186", + "0x523b00530d02824c00536b00523900504f02824900536b00502888c028", + "0x2800702802889500502804d02824e00536b00524900588d02824d00536b", + "0x30d02824c00536b00523f00504f02824f00536b00502888f02802836b005", + "0x503302000789602824e00536b00524f00588d02824d00536b005245005", + "0x2805000536b00505000530d02805000536b00525200589702825200536b", + "0x2836b00502800702805905800789805b00900736b00705024d24c031186", + "0x505b00530d02825c00536b00500900504f02805c00536b00502888c028", + "0x2800702802889900502804d02825e00536b00505c00588d02825d00536b", + "0x30d02825c00536b00505800504f02805e00536b00502888f02802836b005", + "0x524e21c00789602825e00536b00505e00588d02825d00536b005059005", + "0x5f00536b00525e06000789b02806000536b00506000589a02806000536b", + "0x25c03118602805d00536b00505d00530d02805d00536b00505f00589c028", + "0x504f02802836b00502800702806704200789d29829600736b00705d048", + "0x2802889e00502804d02806900536b00529800530d0282bd00536b005296", + "0x536b00506700530d0282bd00536b00504200504f02802836b005028007", + "0x2bd00536b0052bd00504f02806800536b00506925d36c1c800a89f028069", + "0x736b0070050280078a10280682bd00700506800536b0050680058a0028", + "0x2800b00536b0050310058a302802836b00502800702800a0058a2031007", + "0x1700b0058a502800700536b00500700504f02800b00536b00500b0058a4", + "0x58ab04e0058aa1c80058a90100058a800f0058a70920058a604f00536b", + "0x8b23690058b10180058b00170058af0300058ae04d0058ad0140058ac013", + "0x36b00504f00504702802836b00502800702801c0058b401b0058b3368005", + "0x502804d02836600536b00536700583502836700536b0050288b5028028", + "0x36b0050288b702802836b00509200504702802836b0050280070280288b6", + "0x50280070280288b600502804d02836600536b00501f00583502801f005", + "0x2000583502802000536b0050288b802802836b00500f00504702802836b", + "0x1000504702802836b0050280070280288b600502804d02836600536b005", + "0x4d02836600536b00536500583502836500536b0050288b902802836b005", + "0x2888402802836b0051c800504702802836b0050280070280288b6005028", + "0x70280288b600502804d02836600536b00536400583502836400536b005", + "0x83502802300536b0050288ba02802836b00504e00504702802836b005028", + "0x4702802836b0050280070280288b600502804d02836600536b005023005", + "0x36600536b00502d00583502802d00536b0050288bb02802836b005013005", + "0x2802836b00501400504702802836b0050280070280288b600502804d028", + "0x288b600502804d02836600536b00536300583502836300536b0050288bc", + "0xc000536b00502883402802836b00504d00504702802836b005028007028", + "0x2836b0050280070280288b600502804d02836600536b0050c0005835028", + "0x36b00508400583502808400536b0050288bd02802836b005030005047028", + "0x36b00501700504702802836b0050280070280288b600502804d028366005", + "0x502804d02836600536b00536100583502836100536b0050288be028028", + "0x36b0050288bf02802836b00501800504702802836b0050280070280288b6", + "0x50280070280288b600502804d02836600536b0051aa0058350281aa005", + "0x35f00583502835f00536b0050288c002802836b00536900504702802836b", + "0x36800504702802836b0050280070280288b600502804d02836600536b005", + "0x4d02836600536b00503200583502803200536b0050288c102802836b005", + "0x2839a02802836b00501b00504702802836b0050280070280288b6005028", + "0x70280288b600502804d02836600536b00535d00583502835d00536b005", + "0x83502836c00536b0050288c202802836b00501c00504702802836b005028", + "0x36b0050330058c402803300536b0053660058c302836600536b00536c005", + "0x700500c00536b00500c0058c502800700536b00500700504f02800c005", + "0x36b0050288c602803c00536b00502802002802836b00502800702800c007", + "0x2804000536b00503603c00736402803600536b00503600501b028036005", + "0x53590058c702835900536b00504035e00702d02835e00536b005028023", + "0x535600536b0053560058c502800a00536b00500a00504f02835600536b", + "0x8c804f00b00736b00700502800700502802836b00502836902835600a007", + "0x564602801000536b00504f00503102802836b00502800702800f092007", + "0x2800b00536b00500b00504f02802836b00502800b0281c800536b005031", + "0x280140058c901304e00736b0071c800564702801000536b005010005092", + "0x536b00501300564802804d00536b00501000503102802836b005028007", + "0x564a02801800536b00504e00564902801700536b00504d005092028030", + "0x503102802836b0050280070280288ca00502804d02836900536b005030", + "0x1c00536b00501b00564b02801b00536b00502803002836800536b005010", + "0x1c00564a02801800536b00501400564902801700536b005368005092028", + "0x36600536b00736900564c02836700536b00501800527b02836900536b005", + "0x501700503102802836b00502836902802836b00502800702801f0058cb", + "0x2836400536b00536500537f02836500536b00536600564d02802000536b", + "0x500a00527802800700536b00500700530702800b00536b00500b00504f", + "0x36b00536400a00700b00a8cc02836400536b00536400519702800a00536b", + "0xc000536b00736300527002802000536b00502000509202836302d023031", + "0x526f02836100536b00502000503102802836b0050280070280840058cd", + "0x536b00502300504f02802836b00535f00504702835f1aa00736b0050c0", + "0x527a02802d00536b00502d00530702836100536b005361005092028023", + "0x36702d36102300b87e0281aa00536b0051aa00527802836700536b005367", + "0x2836b00502800702803336c35d03200a00503336c35d03200a36b0051aa", + "0x508400564f02800c00536b00502000503102802836b005367005273028", + "0x2800c00536b00500c00509202802300536b00502300504f02803c00536b", + "0x2d00c02300a00503c00536b00503c00565002802d00536b00502d005307", + "0x2836b00501f00504702802836b00502836902802836b00502800702803c", + "0xa36703165102804000536b00502803002803600536b005017005031028", + "0x536b00500b00504f02835900536b00535e00565202835e00536b005040", + "0x565002800700536b00500700530702803600536b00503600509202800b", + "0x527302802836b00502800702835900703600b00a00535900536b005359", + "0x2835600536b00500f00503102802836b00500a00526d02802836b005031", + "0x536b00521c00501b02821c00536b00502804602821500536b005028020", + "0x702d02804800536b00502802302804600536b00521c21500736402821c", + "0x36b00509200504f02804500536b00504700564f02804700536b005046048", + "0x65002800700536b00500700530702835600536b005356005092028092005", + "0xa00736b00503100526602804500735609200a00504500536b005045005", + "0x30d02800f00536b00502883402809204f00736b00500b00500788302800b", + "0xf0920280317e302800f00536b00500f00583502809200536b005092005", + "0x71c801000783602804f00536b00504f00530702804e1c801003136b005", + "0x36b00704e01300783602802836b00502800702804d0058ce01401300736b", + "0x536b00501700700725b02802836b0050280070280180058cf017030007", + "0x1c01b00736b00500a04f00788302836800536b00501436900725b028369", + "0x536700583502801c00536b00501c00530d02836700536b005028834028", + "0x536800527802802001f36603136b00536701c0300317e302836700536b", + "0x36500736b00701f36600783602801b00536b00501b00530702836800536b", + "0x36302d00736b00702036500783602802836b0050280070280230058d0364", + "0x25b02808400536b00536336800725b02802836b0050280070280c00058d1", + "0x51aa3610077360281aa00536b00502803002836100536b005364084007", + "0x2802d00536b00502d00504f02803200536b00535f00573702835f00536b", + "0x3201b02d03100503200536b00503200571e02801b00536b00501b005307", + "0x2836b00536400508e02802836b00536800526d02802836b005028007028", + "0x36b00536c00501b02836c00536b00502824502835d00536b005028020028", + "0x2800c00536b0050c000504f02803300536b00536c35d00736402836c005", + "0x2802836b0050280070280288d200502804d02803c00536b005033005215", + "0x3600536b00502802002802836b00502000530f02802836b00536800526d", + "0x4003600736402804000536b00504000501b02804000536b005028245028", + "0x3c00536b00535e00521502800c00536b00502300504f02835e00536b005", + "0x35600571d02835600536b00503c35900702d02835900536b005028023028", + "0x1b00536b00501b00530702800c00536b00500c00504f02821500536b005", + "0x2802836b00502800702821501b00c03100521500536b00521500571e028", + "0x2836b00501400508e02802836b00500a00530f02802836b00500700526d", + "0x36b00504600501b02804600536b00502824502821c00536b005028020028", + "0x2804700536b00501800504f02804800536b00504621c007364028046005", + "0x2802836b0050280070280288d300502804d02804500536b005048005215", + "0x2836b00504e00530f02802836b00500a00530f02802836b00500700526d", + "0x36b00523900501b02823900536b00502824502823700536b005028020028", + "0x2804700536b00504d00504f02823b00536b005239237007364028239005", + "0x504523f00702d02823f00536b00502802302804500536b00523b005215", + "0x2804700536b00504700504f02824900536b00524500571d02824500536b", + "0x24904f04703100524900536b00524900571e02804f00536b00504f005307", + "0x1d31ee02800a0280310070050281ff1d31ee02800a1871d31ee02800a07f", + "0x1d31ee02800a1871d31ee02800a2ee0310070050281ff1d31ee02800a187", + "0x310070050281ff1d31ee02800a1871d31ee02800a2940310070050281ff", + "0x1d31ee02800a8d40310070050281ff1d31ee02800a1871d31ee02800a60b", + "0x1d31ee02800a1871d31ee02800a8d50310070050281ff1d31ee02800a187", + "0x310070050281ff1d31ee02800a1871d31ee02800a8d60310070050281ff", + "0x1d31ee02800a8d80310070050281ff1d31ee02800a1871d31ee02800a8d7", + "0x1d31ee02800a1871d31ee02800a8d90310070050281ff1d31ee02800a187", + "0x310070050281ff1d31ee02800a1871d31ee02800a8da0310070050281ff", + "0x1d31ee02800a8dc0310070050281ff1d31ee02800a1871d31ee02800a8db", + "0x1d31ee02800a1871d31ee02800a8dd0310070050281ff1d31ee02800a187", + "0x310070050281ff1d31ee02800a1871d31ee02800a8de0310070050281ff", + "0xa8e000a0310070050281ff1d31ee24202800b1871d31ee24202800b8df", + "0xa1871d31ee02800a8e10310070050281ff1d31ee02800a1871d31ee028", + "0x281ff1d31ee02800a1871d31ee02800a8e20310070050281ff1d31ee028", + "0xb8e40310070050281ff1d31ee02800a1871d31ee02800a8e3031007005", + "0x1ee02800a8e500a0310070050281ff1d31ee04002800b1871d31ee040028", + "0x1ee02800a1871d31ee02800a8e60310070050281ff1d31ee02800a1871d3", + "0x70050281ff1d31ee02800a1871d31ee02800a8e70310070050281ff1d3", + "0x1ee02800a8e90310070050281ff1d31ee02800a1871d31ee02800a8e8031", + "0x1ee02800a1871d31ee02800a8ea0310070050281ff1d31ee02800a1871d3", + "0x70050281ff1d31ee02800a1871d31ee02800a8eb0310070050281ff1d3", + "0x8ed00a0310070050281ff1d31ee02825600b1871d31ee02825600b8ec031", + "0xb00a0310070050281ff1d31ee04002825604f1871d31ee04002825604f", + "0x1ee25902800b8ef0310070050281ff1d31ee02800a1871d31ee02800a8ee", + "0x1871d31ee02825600b8f000a0310070050281ff1d31ee25902800b1871d3", + "0x1ee02800a1871d31ee02800a8f100a0310070050281ff1d31ee02825600b", + "0xdf0e30e10280921871d31ee0df0e30e10280928f20310070050281ff1d3", + "0xe102800b1871d31ee0e102800b8f304f00b00a0310070050281ff1d31ee", + "0x281ff1d31ee02800a1871d31ee02800a8f400a0310070050281ff1d31ee", + "0xa8f60310070050281ff1d31ee02800a1871d31ee02800a8f5031007005", + "0x1871d31ee04002800b8f70310070050281ff1d31ee02800a1871d31ee028", + "0x25600b1871d31ee02825600b8f800a0310070050281ff1d31ee04002800b", + "0x1ee26302800b1871d31ee26302800b8f900a0310070050281ff1d31ee028", + "0x1ff1d31ee25902800b1871d31ee25902800b8fa00a0310070050281ff1d3", + "0x310070050281ff1d31ee02800a1871d31ee02800a8fb00a031007005028", + "0x1d31ee02800a8fd0310070050281ff1d31ee02800a1871d31ee02800a8fc", + "0x1ee0280310060591871ee02800b8fe0310070050281ff1d31ee02800a187", + "0x3100700502821d1ee0280311870591ee02800a8ff00a031007005028216", + "0x2271b21d31ee00b90103100700502821d1ee0280310591871ee02800a900", + "0x1d31ee0312271911b21d31ee00b90200a0310070050282291d31ee0310f6", + "0x2311d31ee02800a18608e18608e1d31ee02809290300a031007005028229", + "0x2803190500502823818702803118702800790404f00b00a031007005028", + "0x600600618a18b1b21d31ee02801090600700502823a1ee0280311871ee", + "0x2271b21d31ee00f90700f09204f00b00a03100700502823c1d31ee02800a", + "0x24202800a90809204f00b00a0310070050281ff1d31ee031006006006006", + "0x24a1ee02803100c1ee0280319090310070050282461ee24202800a2441ee", + "0xa90b0310070050282291d31ee02800a1b21d31ee02800a90a007005028", + "0x1b21d30401ee02800b90c0310070050282291d31ee02800a1b21d31ee028", + "0x1ee02800a1b21d31ee02800a90d00a0310070050282291d30401ee02800b", + "0x50282531d31ee02800a0591b21d31ee02800b90e0310070050282291d3", + "0x2800a9100310070050282291ee0280310061b21ee02800a90f00a031007", + "0x60061b21d32561ee02800f9110310070050282291ee0280310061b21ee", + "0x401ee02809291209204f00b00a0310070050282291d32561ee02800b006", + "0xa91304f00b00a0310070050282291d32560401ee02804f2571b21d3256", + "0x1b21d32561ee02804f9140310070050282291d31ee25900a1b21d31ee259", + "0x1ee0e10df0e302804f91500b00a0310070050282291d32561ee02800b006", + "0x23c0e10070e100591600b00a0310070050282291ee0e10df0e302804f1b2", + "0x91800b00a0310070050282291d31ee0310590061911b21d31ee04f917028", + "0x2827c1ee02803100617f1871ee02800b91900502827b028007187028007", + "0xa91b0310070050282841ee0280311871871ee02800a91a00a031007005", + "0x2803116a1721ee02800a91c0310070050282851ee0280311821821ee028", + "0x70050282991ee02803108108e16a1ee02800b91d0310070050282971ee", + "0x1d31ee02800b91f0310070050282a402800708108114602800a91e00a031", + "0x2bc03c1d30401ee02809292000a0310070050282a81d31ee02800a14b14a", + "0x3c1d31ee02809292104f00b00a0310070050282be1d30401ee02800b06f", + "0x530130100792204f00b00a0310070050282cb1d31ee02800a11d03c03c", + "0x1ee02800a9240310070050283040280070810060b902800a9230050280f6", + "0x502832218702803118702800792503100700502821d1ee02803105930b", + "0x1ee02803108116a1ee02800a92700700502829902800703c16a028031926", + "0x2bc03c1d31ee02800b929005028146005006146007928031007005028299", + "0x1ee02800b0741d30401ee02800b92a00a03100700502834c1d31ee02800a", + "0x92c00700502829602800703c03c02803192b00a0310070050283251d3040", + "0x2970401ee02800a16a1720401ee02800b92d00502825c028007081028007", + "0x92f03100700502829904002803103c16a04002800a92e00a031007005028" ], "sierra_program_debug_info": { "type_names": [], @@ -9588,6 +9781,10 @@ "selector": "0x7772be8b80a8a33dc6c1f9a6ab820c02e537c73e859de67f288c70f92571bb", "function_idx": 30 }, + { + "selector": "0xca779dd628d0206eda15b718936109101fcdee458be409b230a64462c4bf23", + "function_idx": 43 + }, { "selector": "0xd47144c49bce05b6de6bce9d5ff0cc8da9420f8945453e20ef779cbea13ad4", "function_idx": 1 @@ -9680,6 +9877,14 @@ "selector": "0x32564d7e0fe091d49b4c20f4632191e4ed6986bf993849879abfef9465def25", "function_idx": 25 }, + { + "selector": "0x3502249e98d12b6c72951d280360de19ac166d0f18c620addb78491a669c826", + "function_idx": 42 + }, + { + "selector": "0x3555d7ef6849c9f3e3c3b07e7b36395a40bba49ef095d4a8c41467b76a03501", + "function_idx": 41 + }, { "selector": "0x3604cea1cdb094a73a31144f14a3e5861613c008e1e879939ebc4827d10cd50", "function_idx": 12 @@ -9704,6 +9909,10 @@ "selector": "0x3b097c62d3e4b85742aadd0dfb823f96134b886ec13bda57b68faf86f294d97", "function_idx": 0 }, + { + "selector": "0x3b756ccfc32a375b48e673ccd8447bcb3fc271415d0b92a7fb837747606c1f8", + "function_idx": 40 + }, { "selector": "0x3d3da80997f8be5d16e9ae7ee6a4b5f7191d60765a1a6c219ab74269c85cf97", "function_idx": 35 @@ -9720,17 +9929,17 @@ "L1_HANDLER": [ { "selector": "0x205500a208d0d49d79197fea83cc3f5fde99ac2e1909ae0a5d9f394c0c52ed0", - "function_idx": 41 + "function_idx": 45 }, { "selector": "0x39edbbb129ad752107a94d40c3873cae369a46fd2fc578d075679aa67e85d12", - "function_idx": 40 + "function_idx": 44 } ], "CONSTRUCTOR": [ { "selector": "0x28ffe4ff0f226a9107253e17a904099aa4f63a02a5621de0576e5aa71bc5194", - "function_idx": 42 + "function_idx": 46 } ] }, @@ -10543,6 +10752,34 @@ "outputs": [], "state_mutability": "external" }, + { + "type": "function", + "name": "test_bitwise", + "inputs": [], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "test_pedersen", + "inputs": [], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "test_poseidon", + "inputs": [], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "test_ecop", + "inputs": [], + "outputs": [], + "state_mutability": "external" + }, { "type": "event", "name": "test_contract::test_contract::TestContract::Event", diff --git a/crates/blockifier/feature_contracts/cairo1/test_contract.cairo b/crates/blockifier/feature_contracts/cairo1/test_contract.cairo index 05d7bce0229..9e29deee85b 100644 --- a/crates/blockifier/feature_contracts/cairo1/test_contract.cairo +++ b/crates/blockifier/feature_contracts/cairo1/test_contract.cairo @@ -26,6 +26,9 @@ mod TestContract { EvalCircuitResult, EvalCircuitTrait, u384, CircuitOutputsTrait, CircuitModulus, CircuitInputs, AddInputResultTrait }; + use core::hash::HashStateTrait; + use core::pedersen::PedersenTrait; + use core::poseidon::PoseidonTrait; #[storage] struct Storage { @@ -735,4 +738,37 @@ mod TestContract { #[external(v0)] fn empty_function(ref self: ContractState) { } + + #[external(v0)] + fn test_bitwise(ref self: ContractState) { + let x: u32 = 0x1; + let y: u32 = 0x2; + let _z = x & y; + } + + #[external(v0)] + fn test_pedersen (ref self: ContractState) { + let mut state = PedersenTrait::new(0); + state = state.update(1); + let _hash = state.finalize(); + } + + #[external(v0)] + fn test_poseidon (ref self: ContractState) { + let mut state = PoseidonTrait::new(); + state = state.update(1); + let _hash = state.finalize(); + } + + #[external(v0)] + fn test_ecop (ref self: ContractState) { + let m: felt252 = 2; + let a: felt252 = 336742005567258698661916498343089167447076063081786685068305785816009957563; + let b: felt252 = 1706004133033694959518200210163451614294041810778629639790706933324248611779; + let p : ec::NonZeroEcPoint = (ec::ec_point_try_new_nz(a, b)).unwrap(); + let mut s: ec::EcState = ec::ec_state_init(); + ec::ec_state_add_mul(ref s, m, p); + } } + + diff --git a/crates/blockifier/resources/versioned_constants_0_13_0.json b/crates/blockifier/resources/versioned_constants_0_13_0.json index 4ca11cb656f..3ca3d248300 100644 --- a/crates/blockifier/resources/versioned_constants_0_13_0.json +++ b/crates/blockifier/resources/versioned_constants_0_13_0.json @@ -76,6 +76,7 @@ "step_gas_cost": 100, "builtin_gas_costs": { "range_check": 70, + "range_check96": 0, "keccak": 0, "pedersen": 0, "bitwise": 0, @@ -211,7 +212,10 @@ "range_check": 0, "syscall_base_gas_cost": 0 } - } + }, + "v1_bound_accounts_cairo0": [], + "v1_bound_accounts_cairo1": [], + "v1_bound_accounts_max_tip": "0x0" }, "os_resources": { "execute_syscalls": { diff --git a/crates/blockifier/resources/versioned_constants_0_13_1.json b/crates/blockifier/resources/versioned_constants_0_13_1.json index f026a9b5e5e..080135bdc07 100644 --- a/crates/blockifier/resources/versioned_constants_0_13_1.json +++ b/crates/blockifier/resources/versioned_constants_0_13_1.json @@ -76,6 +76,7 @@ "step_gas_cost": 100, "builtin_gas_costs": { "range_check": 70, + "range_check96": 0, "keccak": 0, "pedersen": 0, "bitwise": 0, @@ -217,7 +218,10 @@ "range_check": 0, "syscall_base_gas_cost": 0 } - } + }, + "v1_bound_accounts_cairo0": [], + "v1_bound_accounts_cairo1": [], + "v1_bound_accounts_max_tip": "0x0" }, "os_resources": { "execute_syscalls": { diff --git a/crates/blockifier/resources/versioned_constants_0_13_1_1.json b/crates/blockifier/resources/versioned_constants_0_13_1_1.json index c13cc311775..285923b9874 100644 --- a/crates/blockifier/resources/versioned_constants_0_13_1_1.json +++ b/crates/blockifier/resources/versioned_constants_0_13_1_1.json @@ -76,6 +76,7 @@ "step_gas_cost": 100, "builtin_gas_costs": { "range_check": 70, + "range_check96": 0, "keccak": 0, "pedersen": 0, "bitwise": 0, @@ -217,7 +218,10 @@ "range_check": 0, "syscall_base_gas_cost": 0 } - } + }, + "v1_bound_accounts_cairo0": [], + "v1_bound_accounts_cairo1": [], + "v1_bound_accounts_max_tip": "0x0" }, "os_resources": { "execute_syscalls": { diff --git a/crates/blockifier/resources/versioned_constants_0_13_2.json b/crates/blockifier/resources/versioned_constants_0_13_2.json index 55eb3185e05..344700214cd 100644 --- a/crates/blockifier/resources/versioned_constants_0_13_2.json +++ b/crates/blockifier/resources/versioned_constants_0_13_2.json @@ -90,6 +90,7 @@ }, "builtin_gas_costs": { "range_check": 70, + "range_check96": 0, "keccak": 0, "pedersen": 0, "bitwise": 594, @@ -218,7 +219,10 @@ "step_gas_cost": 0, "syscall_base_gas_cost": 0 } - } + }, + "v1_bound_accounts_cairo0": [], + "v1_bound_accounts_cairo1": [], + "v1_bound_accounts_max_tip": "0x0" }, "os_resources": { "execute_syscalls": { diff --git a/crates/blockifier/resources/versioned_constants_0_13_2_1.json b/crates/blockifier/resources/versioned_constants_0_13_2_1.json index 4364ffc0c68..a890ffdf615 100644 --- a/crates/blockifier/resources/versioned_constants_0_13_2_1.json +++ b/crates/blockifier/resources/versioned_constants_0_13_2_1.json @@ -90,6 +90,7 @@ }, "builtin_gas_costs": { "range_check": 70, + "range_check96": 0, "keccak": 0, "pedersen": 0, "bitwise": 594, @@ -218,7 +219,10 @@ "step_gas_cost": 0, "syscall_base_gas_cost": 0 } - } + }, + "v1_bound_accounts_cairo0": [], + "v1_bound_accounts_cairo1": [], + "v1_bound_accounts_max_tip": "0x0" }, "os_resources": { "execute_syscalls": { diff --git a/crates/blockifier/resources/versioned_constants_0_13_3.json b/crates/blockifier/resources/versioned_constants_0_13_3.json index 337622362fe..a890ffdf615 100644 --- a/crates/blockifier/resources/versioned_constants_0_13_3.json +++ b/crates/blockifier/resources/versioned_constants_0_13_3.json @@ -90,6 +90,7 @@ }, "builtin_gas_costs": { "range_check": 70, + "range_check96": 0, "keccak": 0, "pedersen": 0, "bitwise": 594, @@ -218,7 +219,10 @@ "step_gas_cost": 0, "syscall_base_gas_cost": 0 } - } + }, + "v1_bound_accounts_cairo0": [], + "v1_bound_accounts_cairo1": [], + "v1_bound_accounts_max_tip": "0x0" }, "os_resources": { "execute_syscalls": { @@ -657,4 +661,4 @@ 10000 ] } -} \ No newline at end of file +} diff --git a/crates/blockifier/resources/versioned_constants_0_13_4.json b/crates/blockifier/resources/versioned_constants_0_13_4.json index 6c967161a8f..11d67427432 100644 --- a/crates/blockifier/resources/versioned_constants_0_13_4.json +++ b/crates/blockifier/resources/versioned_constants_0_13_4.json @@ -92,6 +92,7 @@ }, "builtin_gas_costs": { "range_check": 70, + "range_check96": 56, "keccak": 136189, "pedersen": 4050, "bitwise": 583, @@ -116,7 +117,10 @@ "validate_block_number_rounding": 100, "validate_timestamp_rounding": 3600 }, - "validated": "VALID" + "validated": "VALID", + "v1_bound_accounts_cairo0": [], + "v1_bound_accounts_cairo1": [], + "v1_bound_accounts_max_tip": "0x0" }, "os_resources": { "execute_syscalls": { @@ -558,4 +562,4 @@ 10000 ] } -} \ No newline at end of file +} diff --git a/crates/blockifier/resources/versioned_constants_0_13_5.json b/crates/blockifier/resources/versioned_constants_0_13_5.json new file mode 100644 index 00000000000..56c9c0a0dec --- /dev/null +++ b/crates/blockifier/resources/versioned_constants_0_13_5.json @@ -0,0 +1,587 @@ +{ + "tx_event_limits": { + "max_data_length": 300, + "max_keys_length": 50, + "max_n_emitted_events": 1000 + }, + "gateway": { + "max_calldata_length": 5000, + "max_contract_bytecode_size": 81920 + }, + "invoke_tx_max_n_steps": 10000000, + "deprecated_l2_resource_gas_costs": { + "gas_per_data_felt": [ + 128, + 1000 + ], + "event_key_factor": [ + 2, + 1 + ], + "gas_per_code_byte": [ + 32, + 1000 + ] + }, + "archival_data_gas_costs": { + "gas_per_data_felt": [ + 5120, + 1 + ], + "event_key_factor": [ + 2, + 1 + ], + "gas_per_code_byte": [ + 1280, + 1 + ] + }, + "disable_cairo0_redeclaration": true, + "enable_stateful_compression": true, + "comprehensive_state_diff": true, + "allocation_cost": { + "blob_cost": { + "l1_gas": 0, + "l1_data_gas": 32, + "l2_gas": 0 + }, + "gas_cost": { + "l1_gas": 551, + "l1_data_gas": 0, + "l2_gas": 0 + } + }, + "ignore_inner_event_resources": false, + "enable_reverts": true, + "max_recursion_depth": 50, + "segment_arena_cells": false, + "os_constants": { + "constructor_entry_point_selector": "0x28ffe4ff0f226a9107253e17a904099aa4f63a02a5621de0576e5aa71bc5194", + "default_entry_point_selector": 0, + "entry_point_initial_budget": { + "step_gas_cost": 100 + }, + "entry_point_type_constructor": 2, + "entry_point_type_external": 0, + "entry_point_type_l1_handler": 1, + "error_block_number_out_of_range": "Block number out of range", + "error_invalid_input_len": "Invalid input length", + "error_invalid_argument": "Invalid argument", + "error_out_of_gas": "Out of gas", + "error_entry_point_failed": "ENTRYPOINT_FAILED", + "error_entry_point_not_found": "ENTRYPOINT_NOT_FOUND", + "execute_entry_point_selector": "0x15d40a3d6ca2ac30f4031e42be28da9b056fef9bb7357ac5e85627ee876e5ad", + "execute_max_sierra_gas": 1000000000, + "default_initial_gas_cost": { + "step_gas_cost": 100000000 + }, + "l1_gas": "L1_GAS", + "l1_gas_index": 0, + "l1_handler_version": 0, + "l2_gas": "L2_GAS", + "l1_data_gas": "L1_DATA", + "l1_data_gas_index": 2, + "l2_gas_index": 1, + "memory_hole_gas_cost": 10, + "nop_entry_point_offset": -1, + "os_contract_addresses": { + "block_hash_contract_address": 1, + "alias_contract_address": 2, + "reserved_contract_address": 3 + }, + "builtin_gas_costs": { + "range_check": 70, + "range_check96": 56, + "keccak": 136189, + "pedersen": 4050, + "bitwise": 583, + "ecop": 4085, + "poseidon": 491, + "add_mod": 230, + "mul_mod": 604, + "ecdsa": 10561 + }, + "sierra_array_len_bound": 4294967296, + "step_gas_cost": 100, + "stored_block_hash_buffer": 10, + "syscall_base_gas_cost": { + "step_gas_cost": 100 + }, + "transfer_entry_point_selector": "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "validate_declare_entry_point_selector": "0x289da278a8dc833409cabfdad1581e8e7d40e42dcaed693fa4008dcdb4963b3", + "validate_deploy_entry_point_selector": "0x36fcbf06cd96843058359e1a75928beacfac10727dab22a3972f0af8aa92895", + "validate_entry_point_selector": "0x162da33a4585851fe8d3af3c2a9c60b557814e221e0d4f30ff0b2189d9c7775", + "validate_max_sierra_gas": 100000000, + "validate_rounding_consts": { + "validate_block_number_rounding": 100, + "validate_timestamp_rounding": 3600 + }, + "validated": "VALID", + "v1_bound_accounts_cairo0": [ + "0x06d706cfbac9b8262d601c38251c5fbe0497c3a96cc91a92b08d91b61d9e70c4", + "0x0309c042d3729173c7f2f91a34f04d8c509c1b292d334679ef1aabf8da0899cc", + "0x01a7820094feaf82d53f53f214b81292d717e7bb9a92bb2488092cd306f3993f", + "0x033434ad846cdd5f23eb73ff09fe6fddd568284a0fb7d1be20ee482f044dabe2" + ], + "v1_bound_accounts_cairo1": [ + "0x01a736d6ed154502257f02b1ccdf4d9d1089f80811cd6acad48e6b6a9d1f2003", + "0x0737ee2f87ce571a58c6c8da558ec18a07ceb64a6172d5ec46171fbc80077a48", + "0x05400e90f7e0ae78bd02c77cd75527280470e2fe19c54970dd79dc37a9d3645c", + "0x04c6d6cf894f8bc96bb9c525e6853e5483177841f7388f74a46cfda6f028c755", + "0x01c0bb51e2ce73dc007601a1e7725453627254016c28f118251a71bbb0507fcb", + "0x0251830adc3d8b4d818c2c309d71f1958308e8c745212480c26e01120c69ee49", + "0x0251cac7b2f45d255b83b7a06dcdef70c8a8752f00ea776517c1c2243c7a06e5" + ], + "v1_bound_accounts_max_tip": "0x746a5288000" + }, + "os_resources": { + "execute_syscalls": { + "CallContract": { + "n_steps": 866, + "builtin_instance_counter": { + "range_check_builtin": 15 + }, + "n_memory_holes": 0 + }, + "DelegateCall": { + "n_steps": 713, + "builtin_instance_counter": { + "range_check_builtin": 19 + }, + "n_memory_holes": 0 + }, + "DelegateL1Handler": { + "n_steps": 692, + "builtin_instance_counter": { + "range_check_builtin": 15 + }, + "n_memory_holes": 0 + }, + "Deploy": { + "constant": { + "n_steps": 1132, + "builtin_instance_counter": { + "pedersen_builtin": 7, + "range_check_builtin": 18 + }, + "n_memory_holes": 0 + }, + "calldata_factor": { + "n_steps": 8, + "builtin_instance_counter": { + "pedersen_builtin": 1 + }, + "n_memory_holes": 0 + } + }, + "EmitEvent": { + "n_steps": 61, + "builtin_instance_counter": { + "range_check_builtin": 1 + }, + "n_memory_holes": 0 + }, + "GetBlockHash": { + "n_steps": 104, + "builtin_instance_counter": { + "range_check_builtin": 2 + }, + "n_memory_holes": 0 + }, + "GetBlockNumber": { + "n_steps": 40, + "builtin_instance_counter": {}, + "n_memory_holes": 0 + }, + "GetBlockTimestamp": { + "n_steps": 38, + "builtin_instance_counter": {}, + "n_memory_holes": 0 + }, + "GetCallerAddress": { + "n_steps": 64, + "builtin_instance_counter": { + "range_check_builtin": 1 + }, + "n_memory_holes": 0 + }, + "GetContractAddress": { + "n_steps": 64, + "builtin_instance_counter": { + "range_check_builtin": 1 + }, + "n_memory_holes": 0 + }, + "GetExecutionInfo": { + "n_steps": 64, + "builtin_instance_counter": { + "range_check_builtin": 1 + }, + "n_memory_holes": 0 + }, + "GetSequencerAddress": { + "n_steps": 34, + "builtin_instance_counter": {}, + "n_memory_holes": 0 + }, + "GetTxInfo": { + "n_steps": 64, + "builtin_instance_counter": { + "range_check_builtin": 1 + }, + "n_memory_holes": 0 + }, + "GetTxSignature": { + "n_steps": 44, + "builtin_instance_counter": {}, + "n_memory_holes": 0 + }, + "KeccakRound": { + "n_steps": 281, + "builtin_instance_counter": { + "bitwise_builtin": 6, + "keccak_builtin": 1, + "range_check_builtin": 56 + }, + "n_memory_holes": 0 + }, + "Keccak": { + "n_steps": 100, + "builtin_instance_counter": {}, + "n_memory_holes": 0 + }, + "LibraryCall": { + "n_steps": 842, + "builtin_instance_counter": { + "range_check_builtin": 15 + }, + "n_memory_holes": 0 + }, + "LibraryCallL1Handler": { + "n_steps": 659, + "builtin_instance_counter": { + "range_check_builtin": 15 + }, + "n_memory_holes": 0 + }, + "ReplaceClass": { + "n_steps": 104, + "builtin_instance_counter": { + "range_check_builtin": 1 + }, + "n_memory_holes": 0 + }, + "Secp256k1Add": { + "n_steps": 410, + "builtin_instance_counter": { + "range_check_builtin": 29 + }, + "n_memory_holes": 0 + }, + "Secp256k1GetPointFromX": { + "n_steps": 395, + "builtin_instance_counter": { + "range_check_builtin": 30 + }, + "n_memory_holes": 0 + }, + "Secp256k1GetXy": { + "n_steps": 207, + "builtin_instance_counter": { + "range_check_builtin": 11 + }, + "n_memory_holes": 0 + }, + "Secp256k1Mul": { + "n_steps": 76505, + "builtin_instance_counter": { + "range_check_builtin": 7045 + }, + "n_memory_holes": 0 + }, + "Secp256k1New": { + "n_steps": 461, + "builtin_instance_counter": { + "range_check_builtin": 35 + }, + "n_memory_holes": 0 + }, + "Secp256r1Add": { + "n_steps": 593, + "builtin_instance_counter": { + "range_check_builtin": 57 + }, + "n_memory_holes": 0 + }, + "Secp256r1GetPointFromX": { + "n_steps": 514, + "builtin_instance_counter": { + "range_check_builtin": 44 + }, + "n_memory_holes": 0 + }, + "Secp256r1GetXy": { + "n_steps": 209, + "builtin_instance_counter": { + "range_check_builtin": 11 + }, + "n_memory_holes": 0 + }, + "Secp256r1Mul": { + "n_steps": 125344, + "builtin_instance_counter": { + "range_check_builtin": 13961 + }, + "n_memory_holes": 0 + }, + "Secp256r1New": { + "n_steps": 580, + "builtin_instance_counter": { + "range_check_builtin": 49 + }, + "n_memory_holes": 0 + }, + "SendMessageToL1": { + "n_steps": 141, + "builtin_instance_counter": { + "range_check_builtin": 1 + }, + "n_memory_holes": 0 + }, + "Sha256ProcessBlock": { + "n_steps": 1865, + "builtin_instance_counter": { + "range_check_builtin": 65, + "bitwise_builtin": 1115 + }, + "n_memory_holes": 0 + }, + "StorageRead": { + "n_steps": 87, + "builtin_instance_counter": { + "range_check_builtin": 1 + }, + "n_memory_holes": 0 + }, + "StorageWrite": { + "n_steps": 93, + "builtin_instance_counter": { + "range_check_builtin": 1 + }, + "n_memory_holes": 0 + }, + "GetClassHashAt": { + "n_steps": 89, + "builtin_instance_counter": { + "range_check_builtin": 1 + }, + "n_memory_holes": 0 + } + }, + "execute_txs_inner": { + "Declare": { + "deprecated_resources": { + "constant": { + "n_steps": 3203, + "builtin_instance_counter": { + "pedersen_builtin": 16, + "range_check_builtin": 56, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0 + }, + "calldata_factor": { + "n_steps": 0, + "builtin_instance_counter": {}, + "n_memory_holes": 0 + } + }, + "resources": { + "constant": { + "n_steps": 3346, + "builtin_instance_counter": { + "pedersen_builtin": 4, + "range_check_builtin": 64, + "poseidon_builtin": 14 + }, + "n_memory_holes": 0 + }, + "calldata_factor": { + "n_steps": 0, + "builtin_instance_counter": {}, + "n_memory_holes": 0 + } + } + }, + "DeployAccount": { + "deprecated_resources": { + "constant": { + "n_steps": 4161, + "builtin_instance_counter": { + "pedersen_builtin": 23, + "range_check_builtin": 72 + }, + "n_memory_holes": 0 + }, + "calldata_factor": { + "n_steps": 21, + "builtin_instance_counter": { + "pedersen_builtin": 2 + }, + "n_memory_holes": 0 + } + }, + "resources": { + "constant": { + "n_steps": 4321, + "builtin_instance_counter": { + "pedersen_builtin": 11, + "range_check_builtin": 80, + "poseidon_builtin": 10 + }, + "n_memory_holes": 0 + }, + "calldata_factor": { + "n_steps": 21, + "builtin_instance_counter": { + "pedersen_builtin": 2 + }, + "n_memory_holes": 0 + } + } + }, + "InvokeFunction": { + "deprecated_resources": { + "constant": { + "n_steps": 3918, + "builtin_instance_counter": { + "pedersen_builtin": 14, + "range_check_builtin": 69 + }, + "n_memory_holes": 0 + }, + "calldata_factor": { + "n_steps": 8, + "builtin_instance_counter": { + "pedersen_builtin": 1 + }, + "n_memory_holes": 0 + } + }, + "resources": { + "constant": { + "n_steps": 4102, + "builtin_instance_counter": { + "pedersen_builtin": 4, + "range_check_builtin": 77, + "poseidon_builtin": 11 + }, + "n_memory_holes": 0 + }, + "calldata_factor": { + "n_steps": 8, + "builtin_instance_counter": { + "pedersen_builtin": 1 + }, + "n_memory_holes": 0 + } + } + }, + "L1Handler": { + "deprecated_resources": { + "constant": { + "n_steps": 1279, + "builtin_instance_counter": { + "pedersen_builtin": 11, + "range_check_builtin": 16 + }, + "n_memory_holes": 0 + }, + "calldata_factor": { + "n_steps": 13, + "builtin_instance_counter": { + "pedersen_builtin": 1 + }, + "n_memory_holes": 0 + } + }, + "resources": { + "constant": { + "n_steps": 0, + "builtin_instance_counter": {}, + "n_memory_holes": 0 + }, + "calldata_factor": { + "n_steps": 13, + "builtin_instance_counter": { + "pedersen_builtin": 1 + }, + "n_memory_holes": 0 + } + } + } + }, + "compute_os_kzg_commitment_info": { + "n_steps": 113, + "builtin_instance_counter": { + "range_check_builtin": 17 + }, + "n_memory_holes": 0 + } + }, + "validate_max_n_steps": 1000000, + "min_sierra_version_for_sierra_gas": "1.7.0", + "vm_resource_fee_cost": { + "builtins": { + "add_mod_builtin": [ + 4, + 100 + ], + "bitwise_builtin": [ + 16, + 100 + ], + "ec_op_builtin": [ + 256, + 100 + ], + "ecdsa_builtin": [ + 512, + 100 + ], + "keccak_builtin": [ + 512, + 100 + ], + "mul_mod_builtin": [ + 4, + 100 + ], + "output_builtin": [ + 0, + 1 + ], + "pedersen_builtin": [ + 8, + 100 + ], + "poseidon_builtin": [ + 8, + 100 + ], + "range_check_builtin": [ + 4, + 100 + ], + "range_check96_builtin": [ + 4, + 100 + ] + }, + "n_steps": [ + 25, + 10000 + ] + } +} diff --git a/crates/blockifier/src/blockifier/config.rs b/crates/blockifier/src/blockifier/config.rs index d3b7d3c68b2..cfa9077fb7a 100644 --- a/crates/blockifier/src/blockifier/config.rs +++ b/crates/blockifier/src/blockifier/config.rs @@ -3,14 +3,14 @@ use std::collections::BTreeMap; use papyrus_config::dumping::{append_sub_config_name, ser_param, SerializeConfig}; use papyrus_config::{ParamPath, ParamPrivacyInput, SerializedParam}; use serde::{Deserialize, Serialize}; +use starknet_api::core::ClassHash; use starknet_sierra_multicompile::config::SierraCompilationConfig; -#[cfg(any(test, feature = "testing", feature = "native_blockifier"))] use crate::blockifier::transaction_executor::DEFAULT_STACK_SIZE; use crate::state::contract_class_manager::DEFAULT_COMPILATION_REQUEST_CHANNEL_SIZE; use crate::state::global_cache::GLOBAL_CONTRACT_CACHE_SIZE_FOR_TEST; -#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)] +#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)] pub struct TransactionExecutorConfig { pub concurrency_config: ConcurrencyConfig, pub stack_size: usize, @@ -25,6 +25,12 @@ impl TransactionExecutorConfig { } } +impl Default for TransactionExecutorConfig { + fn default() -> Self { + Self { concurrency_config: ConcurrencyConfig::default(), stack_size: DEFAULT_STACK_SIZE } + } +} + impl SerializeConfig for TransactionExecutorConfig { fn dump(&self) -> BTreeMap { let mut dump = append_sub_config_name(self.concurrency_config.dump(), "concurrency_config"); @@ -128,11 +134,19 @@ impl SerializeConfig for ContractClassManagerConfig { } } -#[derive(Clone, Copy, Debug, Deserialize, PartialEq, Serialize)] +#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)] +pub enum NativeClassesWhitelist { + All, + Limited(Vec), +} + +#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)] pub struct CairoNativeRunConfig { pub run_cairo_native: bool, pub wait_on_native_compilation: bool, pub channel_size: usize, + // TODO(AvivG): implement `native_classes_whitelist` logic. + pub native_classes_whitelist: NativeClassesWhitelist, } impl Default for CairoNativeRunConfig { @@ -141,6 +155,7 @@ impl Default for CairoNativeRunConfig { run_cairo_native: false, wait_on_native_compilation: false, channel_size: DEFAULT_COMPILATION_REQUEST_CHANNEL_SIZE, + native_classes_whitelist: NativeClassesWhitelist::All, } } } @@ -166,6 +181,14 @@ impl SerializeConfig for CairoNativeRunConfig { "The size of the compilation request channel.", ParamPrivacyInput::Public, ), + ser_param( + "native_classes_whitelist", + &self.native_classes_whitelist, + "Contracts for Cairo Specifies whether to execute all class hashes or only a \ + limited selection using Cairo native contracts. If limited, a specific list of \ + class hashes is provided. compilation.", + ParamPrivacyInput::Public, + ), ]) } } diff --git a/crates/blockifier/src/blockifier/transaction_executor.rs b/crates/blockifier/src/blockifier/transaction_executor.rs index 5ee21ac558a..baea3aa64c4 100644 --- a/crates/blockifier/src/blockifier/transaction_executor.rs +++ b/crates/blockifier/src/blockifier/transaction_executor.rs @@ -11,7 +11,7 @@ use crate::blockifier::config::TransactionExecutorConfig; use crate::bouncer::{Bouncer, BouncerWeights}; use crate::concurrency::worker_logic::WorkerExecutor; use crate::context::BlockContext; -use crate::state::cached_state::{CachedState, CommitmentStateDiff, TransactionalState}; +use crate::state::cached_state::{CachedState, CommitmentStateDiff, StateMaps, TransactionalState}; use crate::state::errors::StateError; use crate::state::state_api::{StateReader, StateResult}; use crate::state::stateful_compression::{allocate_aliases_in_storage, compress, CompressionError}; @@ -27,6 +27,8 @@ pub mod transaction_executor_test; pub const BLOCK_STATE_ACCESS_ERR: &str = "Error: The block state should be `Some`."; pub const DEFAULT_STACK_SIZE: usize = 60 * 1024 * 1024; +pub type TransactionExecutionOutput = (TransactionExecutionInfo, StateMaps); + #[derive(Debug, Error)] pub enum TransactionExecutorError { #[error("Transaction cannot be added to the current block, block capacity reached.")] @@ -103,7 +105,7 @@ impl TransactionExecutor { pub fn execute( &mut self, tx: &Transaction, - ) -> TransactionExecutorResult { + ) -> TransactionExecutorResult { let mut transactional_state = TransactionalState::create_transactional( self.block_state.as_mut().expect(BLOCK_STATE_ACCESS_ERR), ); @@ -114,16 +116,18 @@ impl TransactionExecutor { tx.execute_raw(&mut transactional_state, &self.block_context, concurrency_mode); match tx_execution_result { Ok(tx_execution_info) => { - let tx_state_changes_keys = - transactional_state.get_actual_state_changes()?.state_maps.into_keys(); + let state_diff = transactional_state.to_state_diff()?.state_maps; + let tx_state_changes_keys = state_diff.keys(); self.bouncer.try_update( &transactional_state, &tx_state_changes_keys, &tx_execution_info.summarize(&self.block_context.versioned_constants), &tx_execution_info.receipt.resources, + &self.block_context.versioned_constants, )?; transactional_state.commit(); - Ok(tx_execution_info) + + Ok((tx_execution_info, state_diff)) } Err(error) => { transactional_state.abort(); @@ -132,14 +136,16 @@ impl TransactionExecutor { } } - pub fn execute_txs_sequentially_inner( + fn execute_txs_sequentially_inner( &mut self, txs: &[Transaction], - ) -> Vec> { + ) -> Vec> { let mut results = Vec::new(); for tx in txs { match self.execute(tx) { - Ok(tx_execution_info) => results.push(Ok(tx_execution_info)), + Ok((tx_execution_info, state_diff)) => { + results.push(Ok((tx_execution_info, state_diff))) + } Err(TransactionExecutorError::BlockFull) => break, Err(error) => results.push(Err(error)), } @@ -192,7 +198,7 @@ impl TransactionExecutor { pub fn execute_txs( &mut self, txs: &[Transaction], - ) -> Vec> { + ) -> Vec> { if !self.config.concurrency_config.enabled { log::debug!("Executing transactions sequentially."); self.execute_txs_sequentially(txs) @@ -228,10 +234,10 @@ impl TransactionExecutor { } } - pub fn execute_txs_sequentially( + fn execute_txs_sequentially( &mut self, txs: &[Transaction], - ) -> Vec> { + ) -> Vec> { #[cfg(not(feature = "cairo_native"))] return self.execute_txs_sequentially_inner(txs); #[cfg(feature = "cairo_native")] @@ -261,10 +267,10 @@ impl TransactionExecutor { } } - pub fn execute_chunk( + fn execute_chunk( &mut self, chunk: &[Transaction], - ) -> Vec> { + ) -> Vec> { use crate::concurrency::utils::AbortIfPanic; let block_state = self.block_state.take().expect("The block state should be `Some`."); @@ -332,8 +338,11 @@ impl TransactionExecutor { .expect("Failed to lock execution output.") .take() .expect("Output must be ready."); - tx_execution_results - .push(locked_execution_output.result.map_err(TransactionExecutorError::from)); + let tx_execution_output = locked_execution_output + .result + .map(|tx_execution_info| (tx_execution_info, locked_execution_output.state_diff)) + .map_err(TransactionExecutorError::from); + tx_execution_results.push(tx_execution_output); } let block_state_after_commit = Arc::try_unwrap(worker_executor) diff --git a/crates/blockifier/src/blockifier/transaction_executor_test.rs b/crates/blockifier/src/blockifier/transaction_executor_test.rs index fbdd6c89f4a..8666c9531f4 100644 --- a/crates/blockifier/src/blockifier/transaction_executor_test.rs +++ b/crates/blockifier/src/blockifier/transaction_executor_test.rs @@ -59,7 +59,7 @@ fn tx_executor_test_body( // TODO(Arni, 30/03/2024): Consider adding a test for the transaction execution info. If A test // should not be added, rename the test to `test_bouncer_info`. // TODO(Arni, 30/03/2024): Test all bouncer weights. - let _tx_execution_info = tx_executor.execute(&tx).unwrap(); + let _tx_execution_output = tx_executor.execute(&tx).unwrap(); let bouncer_weights = tx_executor.bouncer.get_accumulated_weights(); assert_eq!(bouncer_weights.state_diff_size, expected_bouncer_weights.state_diff_size); assert_eq!( @@ -373,3 +373,45 @@ fn test_execute_txs_bouncing(#[values(true, false)] concurrency_enabled: bool) { nonce!(4_u32) ); } + +#[cfg(feature = "cairo_native")] +#[rstest::rstest] +/// Tests that Native can handle deep recursion calls without causing a stack overflow. +/// The recursive function must be complex enough to prevent the compiler from optimizing it into a +/// loop. This function was manually tested with increased maximum gas to ensure it reaches a stack +/// overflow. +/// +/// Note: Testing the VM is unnecessary here as it simulates the stack where the stack in the heap +/// as a memory segment. +fn test_stack_overflow(#[values(true, false)] concurrency_enabled: bool) { + let block_context = BlockContext::create_for_account_testing(); + let cairo_version = CairoVersion::Cairo1(RunnableCairo1::Native); + let TestInitData { state, account_address, contract_address, mut nonce_manager } = + create_test_init_data(&block_context.chain_info, cairo_version); + let depth = felt!(1000000_u128); + let entry_point_args = vec![depth]; + let calldata = create_calldata(contract_address, "test_stack_overflow", &entry_point_args); + let invoke_tx = executable_invoke_tx(invoke_tx_args! { + sender_address: account_address, + calldata, + nonce: nonce_manager.next(account_address), + }); + let account_tx = AccountTransaction::new_for_sequencing(invoke_tx); + // Ensure the transaction is allocated the maximum gas limits. + assert!( + account_tx.resource_bounds().get_l2_bounds().max_amount + >= block_context.versioned_constants.os_constants.execute_max_sierra_gas + + block_context.versioned_constants.os_constants.validate_max_sierra_gas + ); + // Run. + let config = TransactionExecutorConfig::create_for_testing(concurrency_enabled); + let mut executor = TransactionExecutor::new(state, block_context, config); + let results = executor.execute_txs(&vec![account_tx.into()]); + + let (tx_execution_info, _state_diff) = results[0].as_ref().unwrap(); + assert!(tx_execution_info.is_reverted()); + let err = tx_execution_info.revert_error.clone().unwrap().to_string(); + + // Recursion is terminated by resource bounds before stack overflow occurs. + assert!(err.contains("'Out of gas'")); +} diff --git a/crates/blockifier/src/blockifier/transfers_flow_test.rs b/crates/blockifier/src/blockifier/transfers_flow_test.rs index 94cd27518c6..fcdc0be6ded 100644 --- a/crates/blockifier/src/blockifier/transfers_flow_test.rs +++ b/crates/blockifier/src/blockifier/transfers_flow_test.rs @@ -6,14 +6,23 @@ use crate::test_utils::transfers_generator::{ TransfersGenerator, TransfersGeneratorConfig, }; +use crate::test_utils::{CairoVersion, RunnableCairo1}; #[rstest] -#[case::concurrency_enabled(ConcurrencyConfig{enabled: true, n_workers: 4, chunk_size: 100})] -#[case::concurrency_disabled(ConcurrencyConfig{enabled: false, n_workers: 0, chunk_size: 0})] -pub fn transfers_flow_test(#[case] concurrency_config: ConcurrencyConfig) { +#[case::cairo1(CairoVersion::Cairo1(RunnableCairo1::Casm))] +#[cfg_attr( + feature = "cairo_native", + case::cairo1_native(CairoVersion::Cairo1(RunnableCairo1::Native)) +)] +pub fn transfers_flow_test( + #[values(true, false)] concurrency_enabled: bool, + #[case] cairo_version: CairoVersion, +) { + let concurrency_config = ConcurrencyConfig::create_for_testing(concurrency_enabled); let transfers_generator_config = TransfersGeneratorConfig { recipient_generator_type: RecipientGeneratorType::DisjointFromSenders, concurrency_config, + cairo_version, ..Default::default() }; assert!( diff --git a/crates/blockifier/src/bouncer.rs b/crates/blockifier/src/bouncer.rs index 29a05432a16..a85ad416560 100644 --- a/crates/blockifier/src/bouncer.rs +++ b/crates/blockifier/src/bouncer.rs @@ -19,7 +19,8 @@ use crate::state::cached_state::{StateChangesKeys, StorageEntry}; use crate::state::state_api::StateReader; use crate::transaction::errors::TransactionExecutionError; use crate::transaction::objects::{ExecutionResourcesTraits, TransactionExecutionResult}; -use crate::utils::usize_from_u64; +use crate::utils::{u64_from_usize, usize_from_u64}; +use crate::versioned_constants::VersionedConstants; #[cfg(test)] #[path = "bouncer_test.rs"] @@ -49,7 +50,7 @@ macro_rules! impl_checked_ops { }; } -pub type HashMapWrapper = HashMap; +pub type BuiltinCounterMap = HashMap; #[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)] pub struct BouncerConfig { @@ -94,25 +95,15 @@ impl SerializeConfig for BouncerConfig { #[derive(Clone, Copy, Debug, Deserialize, PartialEq, Serialize)] /// Represents the execution resources counted throughout block creation. pub struct BouncerWeights { - pub builtin_count: BuiltinCount, pub l1_gas: usize, pub message_segment_length: usize, pub n_events: usize, - pub n_steps: usize, pub state_diff_size: usize, pub sierra_gas: GasAmount, } impl BouncerWeights { - impl_checked_ops!( - builtin_count, - l1_gas, - message_segment_length, - n_events, - n_steps, - state_diff_size, - sierra_gas - ); + impl_checked_ops!(l1_gas, message_segment_length, n_events, state_diff_size, sierra_gas); pub fn has_room(&self, other: Self) -> bool { self.checked_sub(other).is_some() @@ -121,11 +112,9 @@ impl BouncerWeights { pub fn max() -> Self { Self { l1_gas: usize::MAX, - n_steps: usize::MAX, message_segment_length: usize::MAX, state_diff_size: usize::MAX, n_events: usize::MAX, - builtin_count: BuiltinCount::max(), sierra_gas: GasAmount::MAX, } } @@ -133,10 +122,8 @@ impl BouncerWeights { pub fn empty() -> Self { Self { n_events: 0, - builtin_count: BuiltinCount::empty(), l1_gas: 0, message_segment_length: 0, - n_steps: 0, state_diff_size: 0, sierra_gas: GasAmount::ZERO, } @@ -148,25 +135,22 @@ impl Default for BouncerWeights { fn default() -> Self { Self { l1_gas: 2500000, - n_steps: 2500000, message_segment_length: 3700, n_events: 5000, state_diff_size: 4000, - builtin_count: BuiltinCount::default(), - sierra_gas: GasAmount(250000000), + sierra_gas: GasAmount(400000000), } } } impl SerializeConfig for BouncerWeights { fn dump(&self) -> BTreeMap { - let mut dump = append_sub_config_name(self.builtin_count.dump(), "builtin_count"); - dump.append(&mut BTreeMap::from([ser_param( + let mut dump = BTreeMap::from([ser_param( "l1_gas", &self.l1_gas, "An upper bound on the total l1_gas used in a block.", ParamPrivacyInput::Public, - )])); + )]); dump.append(&mut BTreeMap::from([ser_param( "message_segment_length", &self.message_segment_length, @@ -179,12 +163,6 @@ impl SerializeConfig for BouncerWeights { "An upper bound on the total number of events generated in a block.", ParamPrivacyInput::Public, )])); - dump.append(&mut BTreeMap::from([ser_param( - "n_steps", - &self.n_steps, - "An upper bound on the total number of steps in a block.", - ParamPrivacyInput::Public, - )])); dump.append(&mut BTreeMap::from([ser_param( "state_diff_size", &self.state_diff_size, @@ -205,234 +183,17 @@ impl std::fmt::Display for BouncerWeights { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { write!( f, - "BouncerWeights {{ l1_gas: {}, n_steps: {}, message_segment_length: {}, n_events: {}, \ - state_diff_size: {}, builtin_count: {}, sierra_gas: {} }}", + "BouncerWeights {{ l1_gas: {}, message_segment_length: {}, n_events: {}, \ + state_diff_size: {}, sierra_gas: {} }}", self.l1_gas, - self.n_steps, self.message_segment_length, self.n_events, self.state_diff_size, - self.builtin_count, self.sierra_gas ) } } -#[derive( - Clone, - Copy, - Debug, - derive_more::Add, - derive_more::AddAssign, - derive_more::Sub, - Deserialize, - PartialEq, - Serialize, -)] -pub struct BuiltinCount { - pub add_mod: usize, - pub bitwise: usize, - pub ecdsa: usize, - pub ec_op: usize, - pub keccak: usize, - pub mul_mod: usize, - pub pedersen: usize, - pub poseidon: usize, - pub range_check: usize, - pub range_check96: usize, -} - -macro_rules! impl_all_non_zero { - ($($field:ident),+) => { - pub fn all_non_zero(&self) -> bool { - $( self.$field != 0 )&&+ - } - }; -} - -macro_rules! impl_builtin_variants { - ($($field:ident),+) => { - impl_checked_ops!($($field),+); - impl_all_non_zero!($($field),+); - }; -} - -impl BuiltinCount { - impl_builtin_variants!( - add_mod, - bitwise, - ec_op, - ecdsa, - keccak, - mul_mod, - pedersen, - poseidon, - range_check, - range_check96 - ); - - pub fn max() -> Self { - Self { - add_mod: usize::MAX, - bitwise: usize::MAX, - ecdsa: usize::MAX, - ec_op: usize::MAX, - keccak: usize::MAX, - mul_mod: usize::MAX, - pedersen: usize::MAX, - poseidon: usize::MAX, - range_check: usize::MAX, - range_check96: usize::MAX, - } - } - - pub fn empty() -> Self { - Self { - add_mod: 0, - bitwise: 0, - ecdsa: 0, - ec_op: 0, - keccak: 0, - mul_mod: 0, - pedersen: 0, - poseidon: 0, - range_check: 0, - range_check96: 0, - } - } -} - -impl From for BuiltinCount { - fn from(mut data: HashMapWrapper) -> Self { - // TODO(yael 24/3/24): replace the unwrap_or_default with expect, once the - // ExecutionResources contains all the builtins. - // The keccak config we get from python is not always present. - let builtin_count = Self { - add_mod: data.remove(&BuiltinName::add_mod).unwrap_or_default(), - bitwise: data.remove(&BuiltinName::bitwise).unwrap_or_default(), - ecdsa: data.remove(&BuiltinName::ecdsa).unwrap_or_default(), - ec_op: data.remove(&BuiltinName::ec_op).unwrap_or_default(), - keccak: data.remove(&BuiltinName::keccak).unwrap_or_default(), - mul_mod: data.remove(&BuiltinName::mul_mod).unwrap_or_default(), - pedersen: data.remove(&BuiltinName::pedersen).unwrap_or_default(), - poseidon: data.remove(&BuiltinName::poseidon).unwrap_or_default(), - range_check: data.remove(&BuiltinName::range_check).unwrap_or_default(), - range_check96: data.remove(&BuiltinName::range_check96).unwrap_or_default(), - }; - assert!( - data.is_empty(), - "The following keys do not exist in BuiltinCount: {:?} ", - data.keys() - ); - builtin_count - } -} - -impl std::fmt::Display for BuiltinCount { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!( - f, - "BuiltinCount {{ add_mod: {}, bitwise: {}, ecdsa: {}, ec_op: {}, keccak: {}, mul_mod: \ - {}, pedersen: {}, poseidon: {}, range_check: {}, range_check96: {} }}", - self.add_mod, - self.bitwise, - self.ecdsa, - self.ec_op, - self.keccak, - self.mul_mod, - self.pedersen, - self.poseidon, - self.range_check, - self.range_check96 - ) - } -} - -impl Default for BuiltinCount { - // TODO: update the default values once the actual production values are known. - fn default() -> Self { - Self { - add_mod: 156250, - bitwise: 39062, - ecdsa: 1220, - ec_op: 2441, - keccak: 1220, - mul_mod: 156250, - pedersen: 78125, - poseidon: 78125, - range_check: 156250, - range_check96: 156250, - } - } -} - -impl SerializeConfig for BuiltinCount { - fn dump(&self) -> BTreeMap { - BTreeMap::from_iter([ - ser_param( - "add_mod", - &self.add_mod, - "Max number of add mod builtin usage in a block.", - ParamPrivacyInput::Public, - ), - ser_param( - "bitwise", - &self.bitwise, - "Max number of bitwise builtin usage in a block.", - ParamPrivacyInput::Public, - ), - ser_param( - "ecdsa", - &self.ecdsa, - "Max number of ECDSA builtin usage in a block.", - ParamPrivacyInput::Public, - ), - ser_param( - "ec_op", - &self.ec_op, - "Max number of EC operation builtin usage in a block.", - ParamPrivacyInput::Public, - ), - ser_param( - "keccak", - &self.keccak, - "Max number of keccak builtin usage in a block.", - ParamPrivacyInput::Public, - ), - ser_param( - "mul_mod", - &self.mul_mod, - "Max number of mul mod builtin usage in a block.", - ParamPrivacyInput::Public, - ), - ser_param( - "pedersen", - &self.pedersen, - "Max number of pedersen builtin usage in a block.", - ParamPrivacyInput::Public, - ), - ser_param( - "poseidon", - &self.poseidon, - "Max number of poseidon builtin usage in a block.", - ParamPrivacyInput::Public, - ), - ser_param( - "range_check", - &self.range_check, - "Max number of range check builtin usage in a block.", - ParamPrivacyInput::Public, - ), - ser_param( - "range_check96", - &self.range_check96, - "Max number of range check 96 builtin usage in a block.", - ParamPrivacyInput::Public, - ), - ]) - } -} - #[derive(Debug, PartialEq)] #[cfg_attr(test, derive(Clone))] pub struct Bouncer { @@ -473,6 +234,7 @@ impl Bouncer { tx_state_changes_keys: &StateChangesKeys, tx_execution_summary: &ExecutionSummary, tx_resources: &TransactionResources, + versioned_constants: &VersionedConstants, ) -> TransactionExecutorResult<()> { // The countings here should be linear in the transactional state changes and execution info // rather than the cumulative state attributes. @@ -493,6 +255,7 @@ impl Bouncer { n_marginal_visited_storage_entries, tx_resources, &marginal_state_changes_keys, + versioned_constants, )?; // Check if the transaction can fit the current block available capacity. @@ -542,12 +305,67 @@ impl Bouncer { } } +fn n_steps_to_sierra_gas(n_steps: usize, versioned_constants: &VersionedConstants) -> GasAmount { + let n_steps_u64 = u64_from_usize(n_steps); + let gas_per_step = versioned_constants.os_constants.gas_costs.base.step_gas_cost; + let n_steps_gas_cost = n_steps_u64.checked_mul(gas_per_step).unwrap_or_else(|| { + panic!( + "Multiplication overflow while converting steps to gas. steps: {}, gas per step: {}.", + n_steps, gas_per_step + ) + }); + GasAmount(n_steps_gas_cost) +} + +fn vm_resources_to_sierra_gas( + resources: ExecutionResources, + versioned_constants: &VersionedConstants, +) -> GasAmount { + let builtins_gas_cost = + builtins_to_sierra_gas(&resources.prover_builtins(), versioned_constants); + let n_steps_gas_cost = n_steps_to_sierra_gas(resources.total_n_steps(), versioned_constants); + n_steps_gas_cost.checked_add(builtins_gas_cost).unwrap_or_else(|| { + panic!( + "Addition overflow while converting vm resources to gas. steps gas: {}, builtins gas: \ + {}.", + n_steps_gas_cost, builtins_gas_cost + ) + }) +} + +pub fn builtins_to_sierra_gas( + builtin_counts: &BuiltinCounterMap, + versioned_constants: &VersionedConstants, +) -> GasAmount { + let gas_costs = &versioned_constants.os_constants.gas_costs.builtins; + + let total_gas = builtin_counts + .iter() + .try_fold(0u64, |accumulated_gas, (&builtin, &count)| { + let builtin_gas_cost = gas_costs + .get_builtin_gas_cost(&builtin) + .unwrap_or_else(|err| panic!("Failed to get gas cost: {}", err)); + let builtin_count_u64 = u64_from_usize(count); + let builtin_total_cost = builtin_count_u64.checked_mul(builtin_gas_cost)?; + accumulated_gas.checked_add(builtin_total_cost) + }) + .unwrap_or_else(|| { + panic!( + "Overflow occurred while converting built-in resources to gas. Builtins: {:?}", + builtin_counts + ) + }); + + GasAmount(total_gas) +} + pub fn get_tx_weights( state_reader: &S, executed_class_hashes: &HashSet, n_visited_storage_entries: usize, tx_resources: &TransactionResources, state_changes_keys: &StateChangesKeys, + versioned_constants: &VersionedConstants, ) -> TransactionExecutionResult { let message_resources = &tx_resources.starknet_resources.messages; let message_starknet_l1gas = usize_from_u64(message_resources.get_starknet_gas_cost().l1_gas.0) @@ -557,15 +375,22 @@ pub fn get_tx_weights( additional_os_resources += &get_particia_update_resources(n_visited_storage_entries); let vm_resources = &additional_os_resources + &tx_resources.computation.vm_resources; + let sierra_gas = tx_resources.computation.sierra_gas; + let vm_resources_gas = vm_resources_to_sierra_gas(vm_resources, versioned_constants); + let sierra_gas = sierra_gas.checked_add(vm_resources_gas).unwrap_or_else(|| { + panic!( + "Addition overflow while converting vm resources to gas. current gas: {}, vm as gas: \ + {}.", + sierra_gas, vm_resources_gas + ) + }); Ok(BouncerWeights { l1_gas: message_starknet_l1gas, message_segment_length: message_resources.message_segment_length, n_events: tx_resources.starknet_resources.archival_data.event_summary.n_events, - n_steps: vm_resources.total_n_steps(), - builtin_count: BuiltinCount::from(vm_resources.prover_builtins()), state_diff_size: get_onchain_data_segment_length(&state_changes_keys.count()), - sierra_gas: tx_resources.computation.sierra_gas, + sierra_gas, }) } @@ -609,6 +434,7 @@ pub fn verify_tx_weights_within_max_capacity( tx_resources: &TransactionResources, tx_state_changes_keys: &StateChangesKeys, bouncer_config: &BouncerConfig, + versioned_constants: &VersionedConstants, ) -> TransactionExecutionResult<()> { let tx_weights = get_tx_weights( state_reader, @@ -616,6 +442,7 @@ pub fn verify_tx_weights_within_max_capacity( tx_execution_summary.visited_storage_entries.len(), tx_resources, tx_state_changes_keys, + versioned_constants, )?; bouncer_config.within_max_capacity_or_err(tx_weights) diff --git a/crates/blockifier/src/bouncer_test.rs b/crates/blockifier/src/bouncer_test.rs index 32a5f22e358..3f2a704cda3 100644 --- a/crates/blockifier/src/bouncer_test.rs +++ b/crates/blockifier/src/bouncer_test.rs @@ -1,8 +1,6 @@ -use std::collections::{HashMap, HashSet}; +use std::collections::HashSet; use assert_matches::assert_matches; -use cairo_vm::types::builtin_name::BuiltinName; -use cairo_vm::vm::runners::cairo_runner::ExecutionResources; use rstest::rstest; use starknet_api::execution_resources::GasAmount; use starknet_api::transaction::fields::Fee; @@ -10,12 +8,7 @@ use starknet_api::{class_hash, contract_address, storage_key}; use super::BouncerConfig; use crate::blockifier::transaction_executor::TransactionExecutorError; -use crate::bouncer::{ - verify_tx_weights_within_max_capacity, - Bouncer, - BouncerWeights, - BuiltinCount, -}; +use crate::bouncer::{verify_tx_weights_within_max_capacity, Bouncer, BouncerWeights}; use crate::context::BlockContext; use crate::execution::call_info::ExecutionSummary; use crate::fee::resources::{ComputationResources, TransactionResources}; @@ -26,42 +19,16 @@ use crate::transaction::errors::TransactionExecutionError; #[test] fn test_block_weights_has_room() { let max_bouncer_weights = BouncerWeights { - builtin_count: BuiltinCount { - add_mod: 10, - bitwise: 10, - ecdsa: 10, - ec_op: 10, - keccak: 10, - mul_mod: 10, - pedersen: 10, - poseidon: 10, - range_check: 10, - range_check96: 10, - }, l1_gas: 10, message_segment_length: 10, n_events: 10, - n_steps: 10, state_diff_size: 10, sierra_gas: GasAmount(10), }; let bouncer_weights = BouncerWeights { - builtin_count: BuiltinCount { - add_mod: 6, - bitwise: 6, - ecdsa: 7, - ec_op: 7, - keccak: 8, - mul_mod: 6, - pedersen: 7, - poseidon: 9, - range_check: 10, - range_check96: 10, - }, l1_gas: 7, message_segment_length: 10, - n_steps: 0, n_events: 2, state_diff_size: 7, sierra_gas: GasAmount(7), @@ -70,24 +37,11 @@ fn test_block_weights_has_room() { assert!(max_bouncer_weights.has_room(bouncer_weights)); let bouncer_weights_exceeds_max = BouncerWeights { - builtin_count: BuiltinCount { - add_mod: 5, - bitwise: 11, - ecdsa: 5, - ec_op: 5, - keccak: 5, - mul_mod: 5, - pedersen: 5, - poseidon: 5, - range_check: 5, - range_check96: 5, - }, l1_gas: 5, message_segment_length: 5, - n_steps: 5, n_events: 5, state_diff_size: 5, - sierra_gas: GasAmount(5), + sierra_gas: GasAmount(15), }; assert!(!max_bouncer_weights.has_room(bouncer_weights_exceeds_max)); @@ -106,21 +60,8 @@ fn test_block_weights_has_room() { ])), bouncer_config: BouncerConfig::empty(), accumulated_weights: BouncerWeights { - builtin_count: BuiltinCount { - add_mod: 10, - bitwise: 10, - ecdsa: 10, - ec_op: 10, - keccak: 10, - mul_mod: 10, - pedersen: 10, - poseidon: 10, - range_check: 10, - range_check96: 10, - }, l1_gas: 10, message_segment_length: 10, - n_steps: 10, n_events: 10, state_diff_size: 10, sierra_gas: GasAmount(10), @@ -137,21 +78,8 @@ fn test_bouncer_update(#[case] initial_bouncer: Bouncer) { }; let weights_to_update = BouncerWeights { - builtin_count: BuiltinCount { - add_mod: 0, - bitwise: 1, - ecdsa: 2, - ec_op: 3, - keccak: 4, - mul_mod: 0, - pedersen: 6, - poseidon: 7, - range_check: 8, - range_check96: 0, - }, l1_gas: 9, message_segment_length: 10, - n_steps: 0, n_events: 1, state_diff_size: 2, sierra_gas: GasAmount(9), @@ -181,31 +109,18 @@ fn test_bouncer_update(#[case] initial_bouncer: Bouncer) { } #[rstest] -#[case::positive_flow(1, "ok")] -#[case::block_full(11, "block_full")] -#[case::transaction_too_large(21, "too_large")] -fn test_bouncer_try_update(#[case] added_ecdsa: usize, #[case] scenario: &'static str) { - let state = - &mut test_state(&BlockContext::create_for_account_testing().chain_info, Fee(0), &[]); +#[case::positive_flow(GasAmount(1), "ok")] +#[case::block_full(GasAmount(11), "block_full")] +#[case::transaction_too_large(GasAmount(21), "too_large")] +fn test_bouncer_try_update(#[case] added_gas: GasAmount, #[case] scenario: &'static str) { + let block_context = BlockContext::create_for_account_testing(); + let state = &mut test_state(&block_context.chain_info, Fee(0), &[]); let mut transactional_state = TransactionalState::create_transactional(state); // Setup the bouncer. let block_max_capacity = BouncerWeights { - builtin_count: BuiltinCount { - add_mod: 20, - bitwise: 20, - ecdsa: 20, - ec_op: 20, - keccak: 20, - mul_mod: 20, - pedersen: 20, - poseidon: 20, - range_check: 20, - range_check96: 20, - }, l1_gas: 20, message_segment_length: 20, - n_steps: 20, n_events: 20, state_diff_size: 20, sierra_gas: GasAmount(20), @@ -213,21 +128,8 @@ fn test_bouncer_try_update(#[case] added_ecdsa: usize, #[case] scenario: &'stati let bouncer_config = BouncerConfig { block_max_capacity }; let accumulated_weights = BouncerWeights { - builtin_count: BuiltinCount { - add_mod: 10, - bitwise: 10, - ecdsa: 10, - ec_op: 10, - keccak: 10, - mul_mod: 10, - pedersen: 10, - poseidon: 10, - range_check: 10, - range_check96: 10, - }, l1_gas: 10, message_segment_length: 10, - n_steps: 10, n_events: 10, state_diff_size: 10, sierra_gas: GasAmount(10), @@ -237,27 +139,13 @@ fn test_bouncer_try_update(#[case] added_ecdsa: usize, #[case] scenario: &'stati // Prepare the resources to be added to the bouncer. let execution_summary = ExecutionSummary { ..Default::default() }; - let builtin_counter = HashMap::from([ - (BuiltinName::bitwise, 1), - (BuiltinName::ecdsa, added_ecdsa), - (BuiltinName::ec_op, 1), - (BuiltinName::keccak, 1), - (BuiltinName::pedersen, 1), - (BuiltinName::poseidon, 1), - (BuiltinName::range_check, 1), - ]); + let tx_resources = TransactionResources { - computation: ComputationResources { - vm_resources: ExecutionResources { - builtin_instance_counter: builtin_counter.clone(), - ..Default::default() - }, - ..Default::default() - }, + computation: ComputationResources { sierra_gas: added_gas, ..Default::default() }, ..Default::default() }; let tx_state_changes_keys = - transactional_state.get_actual_state_changes().unwrap().state_maps.into_keys(); + transactional_state.get_actual_state_changes().unwrap().state_maps.keys(); // TODO(Yoni, 1/10/2024): simplify this test and move tx-too-large cases out. @@ -268,10 +156,10 @@ fn test_bouncer_try_update(#[case] added_ecdsa: usize, #[case] scenario: &'stati &tx_resources, &tx_state_changes_keys, &bouncer.bouncer_config, + &block_context.versioned_constants, ) .map_err(TransactionExecutorError::TransactionExecutionError); - let expected_weights = - BouncerWeights { builtin_count: builtin_counter.into(), ..BouncerWeights::empty() }; + let expected_weights = BouncerWeights { sierra_gas: added_gas, ..BouncerWeights::empty() }; if result.is_ok() { // Try to update the bouncer. @@ -280,6 +168,7 @@ fn test_bouncer_try_update(#[case] added_ecdsa: usize, #[case] scenario: &'stati &tx_state_changes_keys, &execution_summary, &tx_resources, + &block_context.versioned_constants, ); } diff --git a/crates/blockifier/src/concurrency/fee_utils.rs b/crates/blockifier/src/concurrency/fee_utils.rs index 5188185277d..9827b985d6b 100644 --- a/crates/blockifier/src/concurrency/fee_utils.rs +++ b/crates/blockifier/src/concurrency/fee_utils.rs @@ -25,6 +25,7 @@ pub(crate) const STORAGE_READ_SEQUENCER_BALANCE_INDICES: (usize, usize) = (2, 3) pub fn complete_fee_transfer_flow( tx_context: &TransactionContext, tx_execution_info: &mut TransactionExecutionInfo, + state_diff: &mut StateMaps, state: &mut impl UpdatableState, ) { if tx_context.is_sequencer_the_sender() { @@ -54,6 +55,8 @@ pub fn complete_fee_transfer_flow( tx_execution_info.receipt.fee, &tx_context.block_context, sequencer_balance, + tx_context.tx_info.sender_address(), + state_diff, ); } else { // Assumes we set the charge fee flag to the transaction enforce fee value. @@ -97,16 +100,23 @@ pub fn add_fee_to_sequencer_balance( actual_fee: Fee, block_context: &BlockContext, sequencer_balance: (Felt, Felt), + sender_address: ContractAddress, + state_diff: &mut StateMaps, ) { + assert_ne!( + sender_address, block_context.block_info.sequencer_address, + "The sender cannot be the sequencer." + ); let (low, high) = sequencer_balance; let sequencer_balance_low_as_u128 = low.to_u128().expect("sequencer balance low should be u128"); let sequencer_balance_high_as_u128 = high.to_u128().expect("sequencer balance high should be u128"); - let (new_value_low, carry) = sequencer_balance_low_as_u128.overflowing_add(actual_fee.0); - let (new_value_high, carry) = sequencer_balance_high_as_u128.overflowing_add(carry.into()); + let (new_value_low, overflow_low) = sequencer_balance_low_as_u128.overflowing_add(actual_fee.0); + let (new_value_high, overflow_high) = + sequencer_balance_high_as_u128.overflowing_add(overflow_low.into()); assert!( - !carry, + !overflow_high, "The sequencer balance overflowed when adding the fee. This should not happen." ); let (sequencer_balance_key_low, sequencer_balance_key_high) = @@ -118,5 +128,23 @@ pub fn add_fee_to_sequencer_balance( ]), ..StateMaps::default() }; + + // Modify state_diff to accurately reflect the post tx-execution state, after fee transfer to + // the sequencer. We assume that a non-sequencer sender cannot reduce the sequencer's + // balance—only increases are possible. + + if sequencer_balance_high_as_u128 != new_value_high { + // Update the high balance only if it has changed. + state_diff + .storage + .insert((fee_token_address, sequencer_balance_key_high), Felt::from(new_value_high)); + } + + if sequencer_balance_low_as_u128 != new_value_low { + // Update the low balance only if it has changed. + state_diff + .storage + .insert((fee_token_address, sequencer_balance_key_low), Felt::from(new_value_low)); + } state.apply_writes(&writes, &ContractClassMapping::default()); } diff --git a/crates/blockifier/src/concurrency/fee_utils_test.rs b/crates/blockifier/src/concurrency/fee_utils_test.rs index cb458c46f3f..6ef938efe32 100644 --- a/crates/blockifier/src/concurrency/fee_utils_test.rs +++ b/crates/blockifier/src/concurrency/fee_utils_test.rs @@ -9,6 +9,7 @@ use crate::concurrency::fee_utils::{add_fee_to_sequencer_balance, fill_sequencer use crate::concurrency::test_utils::create_fee_transfer_call_info; use crate::context::BlockContext; use crate::fee::fee_utils::get_sequencer_balance_keys; +use crate::state::cached_state::StateMaps; use crate::state::state_api::StateReader; use crate::test_utils::contracts::FeatureContract; use crate::test_utils::initial_test_state::{fund_account, test_state, test_state_inner}; @@ -34,7 +35,7 @@ pub fn test_fill_sequencer_balance_reads( resource_bounds: default_all_resource_bounds, }); let chain_info = &block_context.chain_info; - let state = &mut test_state_inner(chain_info, BALANCE, &[(account, 1)], erc20_version); + let state = &mut test_state_inner(chain_info, BALANCE, &[(account.into(), 1)], erc20_version); let sequencer_balance = Fee(100); let sequencer_address = block_context.block_info.sequencer_address; @@ -69,6 +70,7 @@ pub fn test_add_fee_to_sequencer_balance( get_sequencer_balance_keys(&block_context); let fee_token_address = block_context.chain_info.fee_token_address(&FeeType::Strk); + let state_diff = &mut StateMaps::default(); add_fee_to_sequencer_balance( fee_token_address, @@ -76,6 +78,8 @@ pub fn test_add_fee_to_sequencer_balance( actual_fee, &block_context, (sequencer_balance_low, sequencer_balance_high), + account.get_instance_address(0), + state_diff, ); let new_sequencer_balance_value_low = @@ -91,4 +95,28 @@ pub fn test_add_fee_to_sequencer_balance( assert_eq!(new_sequencer_balance_value_low, expected_sequencer_balance_value_low); assert_eq!(new_sequencer_balance_value_high, expected_sequencer_balance_value_high); + + let expected_state_diff = StateMaps { + storage: { + let mut storage_entries = Vec::new(); + if new_sequencer_balance_value_low != sequencer_balance_low { + storage_entries.push(( + (fee_token_address, sequencer_balance_key_low), + new_sequencer_balance_value_low, + )); + } + if new_sequencer_balance_value_high != sequencer_balance_high { + storage_entries.push(( + (fee_token_address, sequencer_balance_key_high), + new_sequencer_balance_value_high, + )); + } + storage_entries + } + .into_iter() + .collect(), + ..StateMaps::default() + }; + + assert_eq!(state_diff, &expected_state_diff); } diff --git a/crates/blockifier/src/concurrency/worker_logic.rs b/crates/blockifier/src/concurrency/worker_logic.rs index 76dc7313a5f..5fb733639ac 100644 --- a/crates/blockifier/src/concurrency/worker_logic.rs +++ b/crates/blockifier/src/concurrency/worker_logic.rs @@ -28,8 +28,7 @@ const EXECUTION_OUTPUTS_UNWRAP_ERROR: &str = "Execution task outputs should not #[derive(Debug)] pub struct ExecutionTaskOutput { pub reads: StateMaps, - // TODO(Yoni): rename to state_diff. - pub writes: StateMaps, + pub state_diff: StateMaps, pub contract_classes: ContractClassMapping, pub result: TransactionExecutionResult, } @@ -131,12 +130,12 @@ impl<'a, S: StateReader> WorkerExecutor<'a, S> { let execution_output_inner = match execution_result { Ok(_) => { let tx_reads_writes = transactional_state.cache.take(); - let writes = tx_reads_writes.to_state_diff().state_maps; + let state_diff = tx_reads_writes.to_state_diff().state_maps; let contract_classes = transactional_state.class_hash_to_class.take(); - tx_versioned_state.apply_writes(&writes, &contract_classes); + tx_versioned_state.apply_writes(&state_diff, &contract_classes); ExecutionTaskOutput { reads: tx_reads_writes.initial_reads, - writes, + state_diff, contract_classes, result: execution_result, } @@ -144,7 +143,7 @@ impl<'a, S: StateReader> WorkerExecutor<'a, S> { Err(_) => ExecutionTaskOutput { reads: transactional_state.cache.take().initial_reads, // Failed transaction - ignore the writes. - writes: StateMaps::default(), + state_diff: StateMaps::default(), contract_classes: HashMap::default(), result: execution_result, }, @@ -163,7 +162,7 @@ impl<'a, S: StateReader> WorkerExecutor<'a, S> { let aborted = !reads_valid && self.scheduler.try_validation_abort(tx_index); if aborted { tx_versioned_state - .delete_writes(&execution_output.writes, &execution_output.contract_classes); + .delete_writes(&execution_output.state_diff, &execution_output.contract_classes); self.scheduler.finish_abort(tx_index) } else { Task::AskForTask @@ -194,7 +193,7 @@ impl<'a, S: StateReader> WorkerExecutor<'a, S> { if !reads_valid { // Revalidate failed: re-execute the transaction. tx_versioned_state.delete_writes( - &execution_output_ref.writes, + &execution_output_ref.state_diff, &execution_output_ref.contract_classes, ); // Release the execution output lock as it is acquired in execution (avoid dead-lock). @@ -214,13 +213,10 @@ impl<'a, S: StateReader> WorkerExecutor<'a, S> { // Execution is final. let mut execution_output = lock_mutex_in_array(&self.execution_outputs, tx_index); - let writes = &execution_output.as_ref().expect(EXECUTION_OUTPUTS_UNWRAP_ERROR).writes; - // TODO(Yoni): get rid of this clone. - let mut tx_state_changes_keys = writes.clone().into_keys(); - let tx_result = - &mut execution_output.as_mut().expect(EXECUTION_OUTPUTS_UNWRAP_ERROR).result; + let execution_output = execution_output.as_mut().expect(EXECUTION_OUTPUTS_UNWRAP_ERROR); + let mut tx_state_changes_keys = execution_output.state_diff.keys(); - if let Ok(tx_execution_info) = tx_result.as_mut() { + if let Ok(tx_execution_info) = execution_output.result.as_mut() { let tx_context = self.block_context.to_tx_context(&self.chunk[tx_index]); // Add the deleted sequencer balance key to the storage keys. let concurrency_mode = true; @@ -235,6 +231,7 @@ impl<'a, S: StateReader> WorkerExecutor<'a, S> { &tx_state_changes_keys, &tx_execution_info.summarize(&self.block_context.versioned_constants), &tx_execution_info.receipt.resources, + &self.block_context.versioned_constants, ); if let Err(error) = bouncer_result { match error { @@ -245,7 +242,12 @@ impl<'a, S: StateReader> WorkerExecutor<'a, S> { } } } - complete_fee_transfer_flow(&tx_context, tx_execution_info, &mut tx_versioned_state); + complete_fee_transfer_flow( + &tx_context, + tx_execution_info, + &mut execution_output.state_diff, + &mut tx_versioned_state, + ); // Optimization: changing the sequencer balance storage cell does not trigger // (re-)validation of the next transactions. } diff --git a/crates/blockifier/src/concurrency/worker_logic_test.rs b/crates/blockifier/src/concurrency/worker_logic_test.rs index 873f28b6273..893ebee965d 100644 --- a/crates/blockifier/src/concurrency/worker_logic_test.rs +++ b/crates/blockifier/src/concurrency/worker_logic_test.rs @@ -383,7 +383,7 @@ fn test_worker_execute(default_all_resource_bounds: ValidResourceBounds) { ..Default::default() }; - assert_eq!(execution_output.writes, writes.diff(&reads)); + assert_eq!(execution_output.state_diff, writes.diff(&reads)); assert_eq!(execution_output.reads, reads); // Failed execution. @@ -402,7 +402,7 @@ fn test_worker_execute(default_all_resource_bounds: ValidResourceBounds) { ..Default::default() }; assert_eq!(execution_output.reads, reads); - assert_eq!(execution_output.writes, StateMaps::default()); + assert_eq!(execution_output.state_diff, StateMaps::default()); // Reverted execution. let tx_index = 2; @@ -415,7 +415,7 @@ fn test_worker_execute(default_all_resource_bounds: ValidResourceBounds) { let execution_output = worker_executor.execution_outputs[tx_index].lock().unwrap(); let execution_output = execution_output.as_ref().unwrap(); assert!(execution_output.result.as_ref().unwrap().is_reverted()); - assert_ne!(execution_output.writes, StateMaps::default()); + assert_ne!(execution_output.state_diff, StateMaps::default()); // Validate status change. for tx_index in 0..3 { diff --git a/crates/blockifier/src/context.rs b/crates/blockifier/src/context.rs index fdf6be73b2d..11f66891308 100644 --- a/crates/blockifier/src/context.rs +++ b/crates/blockifier/src/context.rs @@ -158,7 +158,7 @@ impl BlockContext { execute_max_gas: Option, validate_max_gas: Option, ) { - let mut new_os_constants = *self.versioned_constants.os_constants.clone(); + let mut new_os_constants = (*self.versioned_constants.os_constants).clone(); if let Some(execute_max_gas) = execute_max_gas { new_os_constants.execute_max_sierra_gas = execute_max_gas; } diff --git a/crates/blockifier/src/execution/call_info.rs b/crates/blockifier/src/execution/call_info.rs index 6e4a3e0effd..c208c0d03f7 100644 --- a/crates/blockifier/src/execution/call_info.rs +++ b/crates/blockifier/src/execution/call_info.rs @@ -5,8 +5,9 @@ use std::ops::{Add, AddAssign}; use cairo_vm::vm::runners::cairo_runner::ExecutionResources; use serde::Serialize; use starknet_api::core::{ClassHash, ContractAddress, EthAddress}; -use starknet_api::execution_resources::GasAmount; +use starknet_api::execution_resources::{GasAmount, GasVector}; use starknet_api::state::StorageKey; +use starknet_api::transaction::fields::GasVectorComputationMode; use starknet_api::transaction::{EventContent, L2ToL1Payload}; use starknet_types_core::felt::Felt; @@ -71,6 +72,25 @@ pub struct EventSummary { pub total_event_data_size: u64, } +impl EventSummary { + pub fn to_gas_vector( + &self, + versioned_constants: &VersionedConstants, + mode: &GasVectorComputationMode, + ) -> GasVector { + let archival_gas_costs = versioned_constants.get_archival_data_gas_costs(mode); + let gas_amount: GasAmount = (archival_gas_costs.gas_per_data_felt + * (archival_gas_costs.event_key_factor * self.total_event_keys + + self.total_event_data_size)) + .to_integer() + .into(); + match mode { + GasVectorComputationMode::All => GasVector::from_l2_gas(gas_amount), + GasVectorComputationMode::NoL2Gas => GasVector::from_l1_gas(gas_amount), + } + } +} + #[derive(Clone, Debug, Default, PartialEq)] pub struct ExecutionSummary { pub charged_resources: ChargedResources, @@ -99,6 +119,44 @@ impl Sum for ExecutionSummary { } } +impl ExecutionSummary { + /// Returns the a gas cost _estimation_ for the execution summary. + /// + /// In particular, this calculation ignores state changes, cost of declared classes, L1 handler + /// payload length, plus Starknet OS overhead. These costs are only accounted for on a + /// transaction level and cannot be computed based on a single execution summary. + #[cfg(feature = "node_api")] + pub fn to_partial_gas_vector( + self, + versioned_constants: &VersionedConstants, + mode: &GasVectorComputationMode, + ) -> GasVector { + use crate::fee::resources::{ComputationResources, MessageResources}; + + let computation_resources = ComputationResources { + vm_resources: self.charged_resources.vm_resources, + n_reverted_steps: 0, + sierra_gas: self.charged_resources.gas_consumed, + reverted_sierra_gas: 0u64.into(), + }; + + [ + computation_resources.to_gas_vector(versioned_constants, mode), + self.event_summary.to_gas_vector(versioned_constants, mode), + MessageResources::new(self.l2_to_l1_payload_lengths, None).to_gas_vector(), + ] + .iter() + .fold(GasVector::ZERO, |accumulator, cost| { + accumulator.checked_add(*cost).unwrap_or_else(|| { + panic!( + "Execution summary to gas vector overflowed: tried to add {cost:?} to \ + {accumulator:?}" + ); + }) + }) + } +} + /// L2 resources counted for fee charge. /// When all execution will be using gas (no VM mode), this should be removed, and the gas_consumed /// field should be used for fee collection. diff --git a/crates/blockifier/src/execution/contract_class.rs b/crates/blockifier/src/execution/contract_class.rs index fd8604ddc6d..888bd90da34 100644 --- a/crates/blockifier/src/execution/contract_class.rs +++ b/crates/blockifier/src/execution/contract_class.rs @@ -31,7 +31,7 @@ use starknet_api::deprecated_contract_class::{ use starknet_types_core::felt::Felt; use crate::abi::constants::{self}; -use crate::execution::entry_point::{CallEntryPoint, EntryPointExecutionContext}; +use crate::execution::entry_point::{EntryPointExecutionContext, EntryPointTypeAndSelector}; use crate::execution::errors::PreExecutionError; use crate::execution::execution_utils::{poseidon_hash_many_cost, sn_api_to_cairo_vm_program}; #[cfg(feature = "cairo_native")] @@ -250,9 +250,9 @@ impl CompiledClassV1 { pub fn get_entry_point( &self, - call: &CallEntryPoint, + entry_point: &EntryPointTypeAndSelector, ) -> Result { - self.entry_points_by_type.get_entry_point(call) + self.entry_points_by_type.get_entry_point(entry_point) } /// Returns whether this contract should run using Cairo steps or Sierra gas. @@ -519,21 +519,24 @@ pub struct EntryPointsByType { } impl EntryPointsByType { - pub fn get_entry_point(&self, call: &CallEntryPoint) -> Result { - call.verify_constructor()?; + pub fn get_entry_point( + &self, + entry_point: &EntryPointTypeAndSelector, + ) -> Result { + entry_point.verify_constructor()?; - let entry_points_of_same_type = &self[call.entry_point_type]; + let entry_points_of_same_type = &self[entry_point.entry_point_type]; let filtered_entry_points: Vec<_> = entry_points_of_same_type .iter() - .filter(|ep| *ep.selector() == call.entry_point_selector) + .filter(|ep| *ep.selector() == entry_point.entry_point_selector) .collect(); match filtered_entry_points[..] { - [] => Err(PreExecutionError::EntryPointNotFound(call.entry_point_selector)), + [] => Err(PreExecutionError::EntryPointNotFound(entry_point.entry_point_selector)), [entry_point] => Ok(entry_point.clone()), _ => Err(PreExecutionError::DuplicatedEntryPointSelector { - selector: call.entry_point_selector, - typ: call.entry_point_type, + selector: entry_point.entry_point_selector, + typ: entry_point.entry_point_type, }), } } diff --git a/crates/blockifier/src/execution/deprecated_entry_point_execution.rs b/crates/blockifier/src/execution/deprecated_entry_point_execution.rs index 06463403324..f0a6ced784e 100644 --- a/crates/blockifier/src/execution/deprecated_entry_point_execution.rs +++ b/crates/blockifier/src/execution/deprecated_entry_point_execution.rs @@ -16,9 +16,9 @@ use crate::execution::call_info::{CallExecution, CallInfo}; use crate::execution::contract_class::{CompiledClassV0, TrackedResource}; use crate::execution::deprecated_syscalls::hint_processor::DeprecatedSyscallHintProcessor; use crate::execution::entry_point::{ - CallEntryPoint, EntryPointExecutionContext, EntryPointExecutionResult, + ExecutableCallEntryPoint, }; use crate::execution::errors::{PostExecutionError, PreExecutionError}; use crate::execution::execution_utils::{read_execution_retdata, Args, ReadOnlySegments}; @@ -42,7 +42,7 @@ pub const CAIRO0_BUILTINS_NAMES: [BuiltinName; 6] = [ /// Executes a specific call to a contract entry point and returns its output. pub fn execute_entry_point_call( - call: CallEntryPoint, + call: ExecutableCallEntryPoint, compiled_class: CompiledClassV0, state: &mut dyn State, context: &mut EntryPointExecutionContext, @@ -65,7 +65,7 @@ pub fn execute_entry_point_call( } pub fn initialize_execution_context<'a>( - call: &CallEntryPoint, + call: &ExecutableCallEntryPoint, compiled_class: CompiledClassV0, state: &'a mut dyn State, context: &'a mut EntryPointExecutionContext, @@ -88,14 +88,8 @@ pub fn initialize_execution_context<'a>( let trace_enabled = false; let allow_missing_builtins = false; let program_base = None; - let mut runner = CairoRunner::new( - &compiled_class.program, - LayoutName::starknet, - None, - proof_mode, - trace_enabled, - false, - )?; + let mut runner = + CairoRunner::new(&compiled_class.program, LayoutName::starknet, proof_mode, trace_enabled)?; runner.initialize_builtins(allow_missing_builtins)?; runner.initialize_segments(program_base); @@ -108,13 +102,14 @@ pub fn initialize_execution_context<'a>( initial_syscall_ptr, call.storage_address, call.caller_address, + call.class_hash, ); Ok(VmExecutionContext { runner, syscall_handler, initial_syscall_ptr, entry_point_pc }) } pub fn resolve_entry_point_pc( - call: &CallEntryPoint, + call: &ExecutableCallEntryPoint, compiled_class: &CompiledClassV0, ) -> Result { if call.entry_point_type == EntryPointType::Constructor @@ -162,7 +157,7 @@ pub fn resolve_entry_point_pc( } pub fn prepare_call_arguments( - call: &CallEntryPoint, + call: &ExecutableCallEntryPoint, runner: &mut CairoRunner, initial_syscall_ptr: Relocatable, read_only_segments: &mut ReadOnlySegments, @@ -223,7 +218,7 @@ pub fn run_entry_point( pub fn finalize_execution( mut runner: CairoRunner, syscall_handler: DeprecatedSyscallHintProcessor<'_>, - call: CallEntryPoint, + call: ExecutableCallEntryPoint, implicit_args: Vec, n_total_args: usize, ) -> Result { @@ -257,13 +252,13 @@ pub fn finalize_execution( } // Take into account the syscall resources of the current call. vm_resources_without_inner_calls += - &versioned_constants.get_additional_os_syscall_resources(&syscall_handler.syscall_counter); + &versioned_constants.get_additional_os_syscall_resources(&syscall_handler.syscalls_usage); let vm_resources = &vm_resources_without_inner_calls + &CallInfo::summarize_vm_resources(syscall_handler.inner_calls.iter()); Ok(CallInfo { - call, + call: call.into(), execution: CallExecution { retdata: read_execution_retdata(&runner, retdata_size, &retdata_ptr)?, events: syscall_handler.events, diff --git a/crates/blockifier/src/execution/deprecated_syscalls/deprecated_syscalls_test.rs b/crates/blockifier/src/execution/deprecated_syscalls/deprecated_syscalls_test.rs index 9dc2a7c04cf..c0610576f4b 100644 --- a/crates/blockifier/src/execution/deprecated_syscalls/deprecated_syscalls_test.rs +++ b/crates/blockifier/src/execution/deprecated_syscalls/deprecated_syscalls_test.rs @@ -14,7 +14,7 @@ use starknet_api::test_utils::{ CURRENT_BLOCK_TIMESTAMP_FOR_VALIDATE, TEST_SEQUENCER_ADDRESS, }; -use starknet_api::transaction::fields::{Calldata, ContractAddressSalt, Fee}; +use starknet_api::transaction::fields::{Calldata, ContractAddressSalt, Fee, Tip}; use starknet_api::transaction::{ EventContent, EventData, @@ -34,19 +34,15 @@ use crate::execution::entry_point::{CallEntryPoint, CallType}; use crate::execution::errors::EntryPointExecutionError; use crate::execution::syscalls::hint_processor::EmitEventError; use crate::state::state_api::StateReader; -use crate::test_utils::contracts::FeatureContract; -use crate::test_utils::initial_test_state::test_state; +use crate::test_utils::contracts::{FeatureContract, FeatureContractData}; +use crate::test_utils::initial_test_state::{test_state, test_state_ex}; use crate::test_utils::{ calldata_for_deploy_test, - get_syscall_resources, + get_const_syscall_resources, trivial_external_entry_point_new, CairoVersion, }; -use crate::transaction::objects::{ - CommonAccountFields, - DeprecatedTransactionInfo, - TransactionInfo, -}; +use crate::transaction::objects::{CommonAccountFields, CurrentTransactionInfo, TransactionInfo}; use crate::versioned_constants::VersionedConstants; use crate::{check_entry_point_execution_error_for_custom_hint, retdata}; @@ -160,12 +156,13 @@ fn test_nested_library_call() { accessed_storage_keys: HashSet::from([storage_key!(key + 1)]), ..Default::default() }; - let mut library_call_resources = &get_syscall_resources(DeprecatedSyscallSelector::LibraryCall) - + &ExecutionResources { - n_steps: 39, - n_memory_holes: 0, - builtin_instance_counter: HashMap::from([(BuiltinName::range_check, 1)]), - }; + let mut library_call_resources = + &get_const_syscall_resources(DeprecatedSyscallSelector::LibraryCall) + + &ExecutionResources { + n_steps: 39, + n_memory_holes: 0, + builtin_instance_counter: HashMap::from([(BuiltinName::range_check, 1)]), + }; library_call_resources += &storage_entry_point_resources; let library_call_info = CallInfo { call: library_entry_point, @@ -184,12 +181,13 @@ fn test_nested_library_call() { }; // Nested library call cost: library_call(inner) + library_call(library_call(inner)). - let mut main_call_resources = &get_syscall_resources(DeprecatedSyscallSelector::LibraryCall) - + &ExecutionResources { - n_steps: 45, - n_memory_holes: 0, - builtin_instance_counter: HashMap::new(), - }; + let mut main_call_resources = + &get_const_syscall_resources(DeprecatedSyscallSelector::LibraryCall) + + &ExecutionResources { + n_steps: 45, + n_memory_holes: 0, + builtin_instance_counter: HashMap::new(), + }; main_call_resources += &(&library_call_resources * 2); let expected_call_info = CallInfo { call: main_entry_point.clone(), @@ -257,7 +255,7 @@ fn test_call_contract() { ..trivial_external_entry_point }, execution: expected_execution, - resources: &get_syscall_resources(DeprecatedSyscallSelector::CallContract) + resources: &get_const_syscall_resources(DeprecatedSyscallSelector::CallContract) + &ExecutionResources { n_steps: 261, n_memory_holes: 0, @@ -452,20 +450,36 @@ fn test_block_info_syscalls( } #[rstest] -fn test_tx_info(#[values(false, true)] only_query: bool) { +fn test_tx_info( + #[values(false, true)] only_query: bool, + #[values(false, true)] v1_bound_account: bool, + // Whether the tip is larger than `v1_bound_accounts_max_tip`. + #[values(false, true)] high_tip: bool, +) { let test_contract = FeatureContract::TestContract(CairoVersion::Cairo0); - let mut state = test_state(&ChainInfo::create_for_testing(), Fee(0), &[(test_contract, 1)]); - let mut version = felt!(1_u8); + let mut test_contract_data: FeatureContractData = test_contract.into(); + if v1_bound_account { + let optional_class_hash = + VersionedConstants::latest_constants().os_constants.v1_bound_accounts_cairo0.first(); + test_contract_data.class_hash = + *optional_class_hash.expect("No v1 bound accounts found in versioned constants."); + } + + let mut state = + test_state_ex(&ChainInfo::create_for_testing(), Fee(0), &[(test_contract_data, 1)]); + let mut version = felt!(3_u8); + let mut expected_version = if v1_bound_account && !high_tip { felt!(1_u8) } else { version }; if only_query { let simulate_version_base = *QUERY_VERSION_BASE; version += simulate_version_base; + expected_version += simulate_version_base; } let tx_hash = tx_hash!(1991); let max_fee = Fee(0); let nonce = nonce!(3_u16); let sender_address = test_contract.get_instance_address(0); let expected_tx_info = calldata![ - version, // Transaction version. + expected_version, // Transaction version. *sender_address.0.key(), // Account address. felt!(max_fee.0), // Max fee. tx_hash.0, // Transaction hash. @@ -478,16 +492,22 @@ fn test_tx_info(#[values(false, true)] only_query: bool) { calldata: expected_tx_info, ..trivial_external_entry_point_new(test_contract) }; - let tx_info = TransactionInfo::Deprecated(DeprecatedTransactionInfo { + + // Transaction tip. + let tip = Tip(VersionedConstants::latest_constants().os_constants.v1_bound_accounts_max_tip.0 + + if high_tip { 1 } else { 0 }); + + let tx_info = TransactionInfo::Current(CurrentTransactionInfo { common_fields: CommonAccountFields { transaction_hash: tx_hash, - version: TransactionVersion::ONE, + version: TransactionVersion::THREE, nonce, sender_address, only_query, ..Default::default() }, - max_fee, + tip, + ..CurrentTransactionInfo::create_for_testing() }); let limit_steps_by_resources = false; // Do not limit steps by resources as we use default reasources. let result = entry_point_call diff --git a/crates/blockifier/src/execution/deprecated_syscalls/hint_processor.rs b/crates/blockifier/src/execution/deprecated_syscalls/hint_processor.rs index 201bdad7409..7de27e12667 100644 --- a/crates/blockifier/src/execution/deprecated_syscalls/hint_processor.rs +++ b/crates/blockifier/src/execution/deprecated_syscalls/hint_processor.rs @@ -22,6 +22,7 @@ use starknet_api::contract_class::EntryPointType; use starknet_api::core::{ClassHash, ContractAddress, EntryPointSelector}; use starknet_api::state::StorageKey; use starknet_api::transaction::fields::Calldata; +use starknet_api::transaction::{signed_tx_version, TransactionOptions, TransactionVersion}; use starknet_api::StarknetApiError; use starknet_types_core::felt::{Felt, FromStrError}; use thiserror::Error; @@ -68,11 +69,10 @@ use crate::execution::execution_utils::{ ReadOnlySegments, }; use crate::execution::hint_code; -use crate::execution::syscalls::hint_processor::EmitEventError; +use crate::execution::syscalls::hint_processor::{EmitEventError, SyscallUsageMap}; use crate::state::errors::StateError; use crate::state::state_api::State; - -pub type SyscallCounter = HashMap; +use crate::transaction::objects::TransactionInfo; #[derive(Debug, Error)] pub enum DeprecatedSyscallExecutionError { @@ -166,13 +166,14 @@ pub struct DeprecatedSyscallHintProcessor<'a> { pub context: &'a mut EntryPointExecutionContext, pub storage_address: ContractAddress, pub caller_address: ContractAddress, + pub class_hash: ClassHash, // Execution results. /// Inner calls invoked by the current execution. pub inner_calls: Vec, pub events: Vec, pub l2_to_l1_messages: Vec, - pub syscall_counter: SyscallCounter, + pub syscalls_usage: SyscallUsageMap, // Fields needed for execution and validation. pub read_only_segments: ReadOnlySegments, @@ -197,16 +198,18 @@ impl<'a> DeprecatedSyscallHintProcessor<'a> { initial_syscall_ptr: Relocatable, storage_address: ContractAddress, caller_address: ContractAddress, + class_hash: ClassHash, ) -> Self { DeprecatedSyscallHintProcessor { state, context, storage_address, caller_address, + class_hash, inner_calls: vec![], events: vec![], l2_to_l1_messages: vec![], - syscall_counter: SyscallCounter::default(), + syscalls_usage: SyscallUsageMap::default(), read_only_segments: ReadOnlySegments::default(), syscall_ptr: initial_syscall_ptr, read_values: vec![], @@ -319,10 +322,36 @@ impl<'a> DeprecatedSyscallHintProcessor<'a> { &mut self, vm: &mut VirtualMachine, ) -> DeprecatedSyscallResult { + let tx_context = &self.context.tx_context; + // The transaction version, ignoring the only_query bit. + let version = tx_context.tx_info.version(); + let versioned_constants = &tx_context.block_context.versioned_constants; + // The set of v1-bound-accounts. + let v1_bound_accounts = &versioned_constants.os_constants.v1_bound_accounts_cairo0; + + // If the transaction version is 3 and the account is in the v1-bound-accounts set, + // the syscall should return transaction version 1 instead. + // In such a case, `self.tx_info_start_ptr` is not used. + if version == TransactionVersion::THREE && v1_bound_accounts.contains(&self.class_hash) { + let tip = match &tx_context.tx_info { + TransactionInfo::Current(transaction_info) => transaction_info.tip, + TransactionInfo::Deprecated(_) => { + panic!("Transaction info variant doesn't match transaction version") + } + }; + if tip <= versioned_constants.os_constants.v1_bound_accounts_max_tip { + let modified_version = signed_tx_version( + &TransactionVersion::ONE, + &TransactionOptions { only_query: tx_context.tx_info.only_query() }, + ); + return self.allocate_tx_info_segment(vm, Some(modified_version)); + } + } + match self.tx_info_start_ptr { Some(tx_info_start_ptr) => Ok(tx_info_start_ptr), None => { - let tx_info_start_ptr = self.allocate_tx_info_segment(vm)?; + let tx_info_start_ptr = self.allocate_tx_info_segment(vm, None)?; self.tx_info_start_ptr = Some(tx_info_start_ptr); Ok(tx_info_start_ptr) } @@ -359,8 +388,7 @@ impl<'a> DeprecatedSyscallHintProcessor<'a> { } fn increment_syscall_count(&mut self, selector: &DeprecatedSyscallSelector) { - let syscall_count = self.syscall_counter.entry(*selector).or_default(); - *syscall_count += 1; + self.syscalls_usage.entry(*selector).or_default().increment_call_count(); } fn allocate_tx_signature_segment( @@ -375,15 +403,20 @@ impl<'a> DeprecatedSyscallHintProcessor<'a> { Ok(signature_segment_start_ptr) } + /// Allocates and populates a segment with the transaction info. + /// + /// If `tx_version_override` is given, it will be used instead of the real value. fn allocate_tx_info_segment( &mut self, vm: &mut VirtualMachine, + tx_version_override: Option, ) -> DeprecatedSyscallResult { let tx_signature_start_ptr = self.get_or_allocate_tx_signature_segment(vm)?; let TransactionContext { block_context, tx_info } = self.context.tx_context.as_ref(); let tx_signature_length = tx_info.signature().0.len(); + let tx_version = tx_version_override.unwrap_or(tx_info.signed_version()); let tx_info: Vec = vec![ - tx_info.signed_version().0.into(), + tx_version.0.into(), (*tx_info.sender_address().0.key()).into(), Felt::from(tx_info.max_fee_for_execution_info_syscall().0).into(), tx_signature_length.into(), diff --git a/crates/blockifier/src/execution/deprecated_syscalls/mod.rs b/crates/blockifier/src/execution/deprecated_syscalls/mod.rs index 5a1d826399b..1321c516cf9 100644 --- a/crates/blockifier/src/execution/deprecated_syscalls/mod.rs +++ b/crates/blockifier/src/execution/deprecated_syscalls/mod.rs @@ -341,6 +341,14 @@ pub fn deploy( deployer_address_for_calculation, )?; + // Increment the Deploy syscall's linear cost counter by the number of elements in the + // constructor calldata. + let syscall_usage = syscall_handler + .syscalls_usage + .get_mut(&DeprecatedSyscallSelector::Deploy) + .expect("syscalls_usage entry for Deploy must be initialized"); + syscall_usage.linear_factor += request.constructor_calldata.0.len(); + let ctor_context = ConstructorContext { class_hash: request.class_hash, code_address: Some(deployed_contract_address), diff --git a/crates/blockifier/src/execution/entry_point.rs b/crates/blockifier/src/execution/entry_point.rs index c3b23fd5f60..afdc90981b0 100644 --- a/crates/blockifier/src/execution/entry_point.rs +++ b/crates/blockifier/src/execution/entry_point.rs @@ -93,12 +93,35 @@ pub enum CallType { Call = 0, Delegate = 1, } + +pub struct EntryPointTypeAndSelector { + pub entry_point_type: EntryPointType, + pub entry_point_selector: EntryPointSelector, +} + +impl EntryPointTypeAndSelector { + pub fn verify_constructor(&self) -> Result<(), PreExecutionError> { + if self.entry_point_type == EntryPointType::Constructor + && self.entry_point_selector != selector_from_name(CONSTRUCTOR_ENTRY_POINT_NAME) + { + Err(PreExecutionError::InvalidConstructorEntryPointName) + } else { + Ok(()) + } + } +} + /// Represents a call to an entry point of a Starknet contract. #[cfg_attr(feature = "transaction_serde", derive(serde::Deserialize))] #[derive(Clone, Debug, Default, Eq, PartialEq, Serialize)] -pub struct CallEntryPoint { - // The class hash is not given if it can be deduced from the storage address. - pub class_hash: Option, +pub struct CallEntryPointVariant { + /// The class hash of the entry point. + /// The type is `ClassHash` in the case of [ExecutableCallEntryPoint] and `Option` + /// in the case of [CallEntryPoint]. + /// + /// The class hash is not given if it can be deduced from the storage address. + /// It is resolved prior to entry point's execution. + pub class_hash: TClassHash, // Optional, since there is no address to the code implementation in a library call. // and for outermost calls (triggered by the transaction itself). // TODO: BACKWARD-COMPATIBILITY. @@ -113,6 +136,25 @@ pub struct CallEntryPoint { pub initial_gas: u64, } +pub type CallEntryPoint = CallEntryPointVariant>; +pub type ExecutableCallEntryPoint = CallEntryPointVariant; + +impl From for CallEntryPoint { + fn from(call: ExecutableCallEntryPoint) -> Self { + Self { + class_hash: Some(call.class_hash), + code_address: call.code_address, + entry_point_type: call.entry_point_type, + entry_point_selector: call.entry_point_selector, + calldata: call.calldata, + storage_address: call.storage_address, + caller_address: call.caller_address, + call_type: call.call_type, + initial_gas: call.initial_gas, + } + } +} + impl CallEntryPoint { pub fn execute( mut self, @@ -158,7 +200,13 @@ impl CallEntryPoint { )); // This is the last operation of this function. - execute_entry_point_call_wrapper(self, compiled_class, state, context, remaining_gas) + execute_entry_point_call_wrapper( + self.into_executable(class_hash), + compiled_class, + state, + context, + remaining_gas, + ) } /// Similar to `execute`, but returns an error if the outer call is reverted. @@ -190,13 +238,26 @@ impl CallEntryPoint { execution_result } - pub fn verify_constructor(&self) -> Result<(), PreExecutionError> { - if self.entry_point_type == EntryPointType::Constructor - && self.entry_point_selector != selector_from_name(CONSTRUCTOR_ENTRY_POINT_NAME) - { - Err(PreExecutionError::InvalidConstructorEntryPointName) - } else { - Ok(()) + fn into_executable(self, class_hash: ClassHash) -> ExecutableCallEntryPoint { + ExecutableCallEntryPoint { + class_hash, + code_address: self.code_address, + entry_point_type: self.entry_point_type, + entry_point_selector: self.entry_point_selector, + calldata: self.calldata, + storage_address: self.storage_address, + caller_address: self.caller_address, + call_type: self.call_type, + initial_gas: self.initial_gas, + } + } +} + +impl ExecutableCallEntryPoint { + pub fn type_and_selector(&self) -> EntryPointTypeAndSelector { + EntryPointTypeAndSelector { + entry_point_type: self.entry_point_type, + entry_point_selector: self.entry_point_selector, } } } diff --git a/crates/blockifier/src/execution/entry_point_execution.rs b/crates/blockifier/src/execution/entry_point_execution.rs index 244bcbf9fc3..799bbe13575 100644 --- a/crates/blockifier/src/execution/entry_point_execution.rs +++ b/crates/blockifier/src/execution/entry_point_execution.rs @@ -13,9 +13,9 @@ use starknet_types_core::felt::Felt; use crate::execution::call_info::{CallExecution, CallInfo, Retdata}; use crate::execution::contract_class::{CompiledClassV1, EntryPointV1, TrackedResource}; use crate::execution::entry_point::{ - CallEntryPoint, EntryPointExecutionContext, EntryPointExecutionResult, + ExecutableCallEntryPoint, }; use crate::execution::errors::{EntryPointExecutionError, PostExecutionError, PreExecutionError}; use crate::execution::execution_utils::{ @@ -53,7 +53,7 @@ pub struct CallResult { /// Executes a specific call to a contract entry point and returns its output. pub fn execute_entry_point_call( - call: CallEntryPoint, + call: ExecutableCallEntryPoint, compiled_class: CompiledClassV1, state: &mut dyn State, context: &mut EntryPointExecutionContext, @@ -96,12 +96,12 @@ pub fn execute_entry_point_call( } pub fn initialize_execution_context<'a>( - call: CallEntryPoint, + call: ExecutableCallEntryPoint, compiled_class: &'a CompiledClassV1, state: &'a mut dyn State, context: &'a mut EntryPointExecutionContext, ) -> Result, PreExecutionError> { - let entry_point = compiled_class.get_entry_point(&call)?; + let entry_point = compiled_class.get_entry_point(&call.type_and_selector())?; // Instantiate Cairo runner. let proof_mode = false; @@ -109,10 +109,8 @@ pub fn initialize_execution_context<'a>( let mut runner = CairoRunner::new( &compiled_class.0.program, LayoutName::starknet, - None, proof_mode, trace_enabled, - false, )?; runner.initialize_function_runner_cairo_1(&entry_point.builtins)?; @@ -180,7 +178,7 @@ fn prepare_program_extra_data( } pub fn prepare_call_arguments( - call: &CallEntryPoint, + call: &ExecutableCallEntryPoint, runner: &mut CairoRunner, initial_syscall_ptr: Relocatable, read_only_segments: &mut ReadOnlySegments, @@ -366,7 +364,7 @@ pub fn finalize_execution( } // Take into account the syscall resources of the current call. vm_resources_without_inner_calls += &versioned_constants - .get_additional_os_syscall_resources(&syscall_handler.syscall_counter); + .get_additional_os_syscall_resources(&syscall_handler.syscalls_usage); vm_resources_without_inner_calls } TrackedResource::SierraGas => ExecutionResources::default(), @@ -378,7 +376,7 @@ pub fn finalize_execution( + &CallInfo::summarize_vm_resources(syscall_handler.base.inner_calls.iter()); let syscall_handler_base = syscall_handler.base; Ok(CallInfo { - call: syscall_handler_base.call, + call: syscall_handler_base.call.into(), execution: CallExecution { retdata: call_result.retdata, events: syscall_handler_base.events, diff --git a/crates/blockifier/src/execution/execution_utils.rs b/crates/blockifier/src/execution/execution_utils.rs index 153b6cde55a..d7f5e6f029a 100644 --- a/crates/blockifier/src/execution/execution_utils.rs +++ b/crates/blockifier/src/execution/execution_utils.rs @@ -25,11 +25,11 @@ use crate::execution::call_info::{CallExecution, CallInfo, Retdata}; use crate::execution::contract_class::{RunnableCompiledClass, TrackedResource}; use crate::execution::entry_point::{ execute_constructor_entry_point, - CallEntryPoint, ConstructorContext, ConstructorEntryPointExecutionResult, EntryPointExecutionContext, EntryPointExecutionResult, + ExecutableCallEntryPoint, }; use crate::execution::errors::{ ConstructorEntryPointExecutionError, @@ -51,7 +51,7 @@ pub const SEGMENT_ARENA_BUILTIN_SIZE: usize = 3; /// A wrapper for execute_entry_point_call that performs pre and post-processing. pub fn execute_entry_point_call_wrapper( - mut call: CallEntryPoint, + mut call: ExecutableCallEntryPoint, compiled_class: RunnableCompiledClass, state: &mut dyn State, context: &mut EntryPointExecutionContext, @@ -93,7 +93,7 @@ pub fn execute_entry_point_call_wrapper( _ => return Err(err.into()), }; Ok(CallInfo { - call: orig_call, + call: orig_call.into(), execution: CallExecution { retdata: Retdata(vec![Felt::from_hex(error_code).unwrap()]), failed: true, @@ -110,7 +110,7 @@ pub fn execute_entry_point_call_wrapper( /// Executes a specific call to a contract entry point and returns its output. pub fn execute_entry_point_call( - call: CallEntryPoint, + call: ExecutableCallEntryPoint, compiled_class: RunnableCompiledClass, state: &mut dyn State, context: &mut EntryPointExecutionContext, @@ -133,6 +133,8 @@ pub fn execute_entry_point_call( if context.tracked_resource_stack.last() == Some(&TrackedResource::CairoSteps) && !cfg!(feature = "only-native") { + // We cannot run native with cairo steps as the tracked resources (it's a vm + // resouorce). entry_point_execution::execute_entry_point_call( call, compiled_class.casm(), diff --git a/crates/blockifier/src/execution/native/contract_class.rs b/crates/blockifier/src/execution/native/contract_class.rs index f706d04bc35..53a1bc47168 100644 --- a/crates/blockifier/src/execution/native/contract_class.rs +++ b/crates/blockifier/src/execution/native/contract_class.rs @@ -5,7 +5,7 @@ use starknet_api::core::EntryPointSelector; use super::executor::ContractExecutor; use crate::execution::contract_class::{CompiledClassV1, EntryPointV1}; -use crate::execution::entry_point::CallEntryPoint; +use crate::execution::entry_point::EntryPointTypeAndSelector; use crate::execution::errors::PreExecutionError; #[derive(Clone, Debug, PartialEq, Eq)] pub struct NativeCompiledClassV1(pub Arc); @@ -34,9 +34,9 @@ impl NativeCompiledClassV1 { pub fn get_entry_point( &self, - call: &CallEntryPoint, + entry_point: &EntryPointTypeAndSelector, ) -> Result { - self.casm.get_entry_point(call) + self.casm.get_entry_point(entry_point) } pub fn casm(&self) -> CompiledClassV1 { diff --git a/crates/blockifier/src/execution/native/entry_point_execution.rs b/crates/blockifier/src/execution/native/entry_point_execution.rs index c9b8c59b580..e21dd866756 100644 --- a/crates/blockifier/src/execution/native/entry_point_execution.rs +++ b/crates/blockifier/src/execution/native/entry_point_execution.rs @@ -4,9 +4,9 @@ use cairo_native::utils::BuiltinCosts; use crate::execution::call_info::{CallExecution, CallInfo, Retdata}; use crate::execution::contract_class::TrackedResource; use crate::execution::entry_point::{ - CallEntryPoint, EntryPointExecutionContext, EntryPointExecutionResult, + ExecutableCallEntryPoint, }; use crate::execution::errors::{EntryPointExecutionError, PostExecutionError, PreExecutionError}; use crate::execution::native::contract_class::NativeCompiledClassV1; @@ -15,12 +15,12 @@ use crate::state::state_api::State; // todo(rodrigo): add an `entry point not found` test for Native pub fn execute_entry_point_call( - call: CallEntryPoint, + call: ExecutableCallEntryPoint, compiled_class: NativeCompiledClassV1, state: &mut dyn State, context: &mut EntryPointExecutionContext, ) -> EntryPointExecutionResult { - let entry_point = compiled_class.get_entry_point(&call)?; + let entry_point = compiled_class.get_entry_point(&call.type_and_selector())?; let mut syscall_handler: NativeSyscallHandler<'_> = NativeSyscallHandler::new(call, state, context); @@ -87,7 +87,7 @@ fn create_callinfo( let vm_resources = CallInfo::summarize_vm_resources(syscall_handler.base.inner_calls.iter()); Ok(CallInfo { - call: syscall_handler.base.call, + call: syscall_handler.base.call.into(), execution: CallExecution { retdata: Retdata(call_result.return_values), events: syscall_handler.base.events, diff --git a/crates/blockifier/src/execution/native/syscall_handler.rs b/crates/blockifier/src/execution/native/syscall_handler.rs index a64285b7c56..ea5ce0f0f2a 100644 --- a/crates/blockifier/src/execution/native/syscall_handler.rs +++ b/crates/blockifier/src/execution/native/syscall_handler.rs @@ -27,7 +27,12 @@ use starknet_types_core::felt::Felt; use crate::execution::call_info::{MessageToL1, Retdata}; use crate::execution::common_hints::ExecutionMode; -use crate::execution::entry_point::{CallEntryPoint, CallType, EntryPointExecutionContext}; +use crate::execution::entry_point::{ + CallEntryPoint, + CallType, + EntryPointExecutionContext, + ExecutableCallEntryPoint, +}; use crate::execution::errors::EntryPointExecutionError; use crate::execution::native::utils::{calculate_resource_bounds, default_tx_v2_info}; use crate::execution::secp; @@ -35,6 +40,7 @@ use crate::execution::syscalls::hint_processor::{SyscallExecutionError, OUT_OF_G use crate::execution::syscalls::syscall_base::SyscallHandlerBase; use crate::state::state_api::State; use crate::transaction::objects::TransactionInfo; +use crate::utils::u64_from_usize; use crate::versioned_constants::GasCosts; pub const CALL_CONTRACT_SELECTOR_NAME: &str = "call_contract"; @@ -48,7 +54,7 @@ pub struct NativeSyscallHandler<'state> { impl<'state> NativeSyscallHandler<'state> { pub fn new( - call: CallEntryPoint, + call: ExecutableCallEntryPoint, state: &'state mut dyn State, context: &'state mut EntryPointExecutionContext, ) -> NativeSyscallHandler<'state> { @@ -67,15 +73,15 @@ impl<'state> NativeSyscallHandler<'state> { fn pre_execute_syscall( &mut self, remaining_gas: &mut u64, - syscall_gas_cost: u64, + total_gas_cost: u64, ) -> SyscallResult<()> { if self.unrecoverable_error.is_some() { - // An unrecoverable error was found in a previous syscall, we return immediatly to + // An unrecoverable error was found in a previous syscall, we return immediately to // accelerate the end of the execution. The returned data is not important return Err(vec![]); } // Refund `SYSCALL_BASE_GAS_COST` as it was pre-charged. - let required_gas = syscall_gas_cost - self.gas_costs().base.syscall_base_gas_cost; + let required_gas = total_gas_cost - self.gas_costs().base.syscall_base_gas_cost; if *remaining_gas < required_gas { // Out of gas failure. @@ -166,7 +172,7 @@ impl<'state> NativeSyscallHandler<'state> { fn get_tx_info_v1(&self) -> TxInfo { let tx_info = &self.base.context.tx_context.tx_info; TxInfo { - version: tx_info.version().0, + version: self.base.tx_version_for_get_execution_info().0, account_contract_address: Felt::from(tx_info.sender_address()), max_fee: tx_info.max_fee_for_execution_info_syscall().0, signature: tx_info.signature().0, @@ -196,7 +202,7 @@ impl<'state> NativeSyscallHandler<'state> { fn get_tx_info_v2(&self) -> SyscallResult { let tx_info = &self.base.context.tx_context.tx_info; let native_tx_info = TxV2Info { - version: tx_info.version().0, + version: self.base.tx_version_for_get_execution_info().0, account_contract_address: Felt::from(tx_info.sender_address()), max_fee: tx_info.max_fee_for_execution_info_syscall().0, signature: tx_info.signature().0, @@ -233,7 +239,10 @@ impl StarknetSyscallHandler for &mut NativeSyscallHandler<'_> { block_number: u64, remaining_gas: &mut u64, ) -> SyscallResult { - self.pre_execute_syscall(remaining_gas, self.gas_costs().syscalls.get_block_hash)?; + self.pre_execute_syscall( + remaining_gas, + self.gas_costs().syscalls.get_block_hash.base_syscall_cost(), + )?; match self.base.get_block_hash(block_number) { Ok(value) => Ok(value), @@ -242,7 +251,10 @@ impl StarknetSyscallHandler for &mut NativeSyscallHandler<'_> { } fn get_execution_info(&mut self, remaining_gas: &mut u64) -> SyscallResult { - self.pre_execute_syscall(remaining_gas, self.gas_costs().syscalls.get_execution_info)?; + self.pre_execute_syscall( + remaining_gas, + self.gas_costs().syscalls.get_execution_info.base_syscall_cost(), + )?; Ok(ExecutionInfo { block_info: self.get_block_info(), @@ -258,7 +270,10 @@ impl StarknetSyscallHandler for &mut NativeSyscallHandler<'_> { contract_address: Felt, remaining_gas: &mut u64, ) -> SyscallResult { - self.pre_execute_syscall(remaining_gas, self.gas_costs().syscalls.get_class_hash_at)?; + self.pre_execute_syscall( + remaining_gas, + self.gas_costs().syscalls.get_class_hash_at.base_syscall_cost(), + )?; let request = ContractAddress::try_from(contract_address) .map_err(|err| self.handle_error(remaining_gas, err.into()))?; @@ -270,7 +285,10 @@ impl StarknetSyscallHandler for &mut NativeSyscallHandler<'_> { } fn get_execution_info_v2(&mut self, remaining_gas: &mut u64) -> SyscallResult { - self.pre_execute_syscall(remaining_gas, self.gas_costs().syscalls.get_execution_info)?; + self.pre_execute_syscall( + remaining_gas, + self.gas_costs().syscalls.get_execution_info.base_syscall_cost(), + )?; Ok(ExecutionInfoV2 { block_info: self.get_block_info(), @@ -289,7 +307,11 @@ impl StarknetSyscallHandler for &mut NativeSyscallHandler<'_> { deploy_from_zero: bool, remaining_gas: &mut u64, ) -> SyscallResult<(Felt, Vec)> { - self.pre_execute_syscall(remaining_gas, self.gas_costs().syscalls.deploy)?; + // The cost of deploying a contract is the base cost plus the linear cost of the calldata + // len. + let total_gas_cost = + self.gas_costs().syscalls.deploy.get_syscall_cost(u64_from_usize(calldata.len())); + self.pre_execute_syscall(remaining_gas, total_gas_cost)?; let (deployed_contract_address, call_info) = self .base @@ -308,7 +330,10 @@ impl StarknetSyscallHandler for &mut NativeSyscallHandler<'_> { Ok((Felt::from(deployed_contract_address), constructor_retdata)) } fn replace_class(&mut self, class_hash: Felt, remaining_gas: &mut u64) -> SyscallResult<()> { - self.pre_execute_syscall(remaining_gas, self.gas_costs().syscalls.replace_class)?; + self.pre_execute_syscall( + remaining_gas, + self.gas_costs().syscalls.replace_class.base_syscall_cost(), + )?; self.base .replace_class(ClassHash(class_hash)) @@ -323,7 +348,10 @@ impl StarknetSyscallHandler for &mut NativeSyscallHandler<'_> { calldata: &[Felt], remaining_gas: &mut u64, ) -> SyscallResult> { - self.pre_execute_syscall(remaining_gas, self.gas_costs().syscalls.library_call)?; + self.pre_execute_syscall( + remaining_gas, + self.gas_costs().syscalls.library_call.base_syscall_cost(), + )?; let class_hash = ClassHash(class_hash); @@ -364,7 +392,10 @@ impl StarknetSyscallHandler for &mut NativeSyscallHandler<'_> { calldata: &[Felt], remaining_gas: &mut u64, ) -> SyscallResult> { - self.pre_execute_syscall(remaining_gas, self.gas_costs().syscalls.call_contract)?; + self.pre_execute_syscall( + remaining_gas, + self.gas_costs().syscalls.call_contract.base_syscall_cost(), + )?; let contract_address = ContractAddress::try_from(address) .map_err(|error| self.handle_error(remaining_gas, error.into()))?; @@ -417,7 +448,10 @@ impl StarknetSyscallHandler for &mut NativeSyscallHandler<'_> { address: Felt, remaining_gas: &mut u64, ) -> SyscallResult { - self.pre_execute_syscall(remaining_gas, self.gas_costs().syscalls.storage_read)?; + self.pre_execute_syscall( + remaining_gas, + self.gas_costs().syscalls.storage_read.base_syscall_cost(), + )?; if address_domain != 0 { let address_domain = Felt::from(address_domain); @@ -439,7 +473,10 @@ impl StarknetSyscallHandler for &mut NativeSyscallHandler<'_> { value: Felt, remaining_gas: &mut u64, ) -> SyscallResult<()> { - self.pre_execute_syscall(remaining_gas, self.gas_costs().syscalls.storage_write)?; + self.pre_execute_syscall( + remaining_gas, + self.gas_costs().syscalls.storage_write.base_syscall_cost(), + )?; if address_domain != 0 { let address_domain = Felt::from(address_domain); @@ -460,7 +497,10 @@ impl StarknetSyscallHandler for &mut NativeSyscallHandler<'_> { data: &[Felt], remaining_gas: &mut u64, ) -> SyscallResult<()> { - self.pre_execute_syscall(remaining_gas, self.gas_costs().syscalls.emit_event)?; + self.pre_execute_syscall( + remaining_gas, + self.gas_costs().syscalls.emit_event.base_syscall_cost(), + )?; let event = EventContent { keys: keys.iter().copied().map(EventKey).collect(), @@ -477,7 +517,10 @@ impl StarknetSyscallHandler for &mut NativeSyscallHandler<'_> { payload: &[Felt], remaining_gas: &mut u64, ) -> SyscallResult<()> { - self.pre_execute_syscall(remaining_gas, self.gas_costs().syscalls.send_message_to_l1)?; + self.pre_execute_syscall( + remaining_gas, + self.gas_costs().syscalls.send_message_to_l1.base_syscall_cost(), + )?; let to_address = EthAddress::try_from(to_address) .map_err(|err| self.handle_error(remaining_gas, err.into()))?; @@ -487,7 +530,10 @@ impl StarknetSyscallHandler for &mut NativeSyscallHandler<'_> { } fn keccak(&mut self, input: &[u64], remaining_gas: &mut u64) -> SyscallResult { - self.pre_execute_syscall(remaining_gas, self.gas_costs().syscalls.keccak)?; + self.pre_execute_syscall( + remaining_gas, + self.gas_costs().syscalls.keccak.base_syscall_cost(), + )?; match self.base.keccak(input, remaining_gas) { Ok((state, _n_rounds)) => Ok(U256 { @@ -498,24 +544,16 @@ impl StarknetSyscallHandler for &mut NativeSyscallHandler<'_> { } } - fn meta_tx_v0( - &mut self, - _address: Felt, - _entry_point_selector: Felt, - _calldata: &[Felt], - _signature: &[Felt], - _remaining_gas: &mut u64, - ) -> SyscallResult> { - unimplemented!() - } - fn secp256k1_new( &mut self, x: U256, y: U256, remaining_gas: &mut u64, ) -> SyscallResult> { - self.pre_execute_syscall(remaining_gas, self.gas_costs().syscalls.secp256k1_new)?; + self.pre_execute_syscall( + remaining_gas, + self.gas_costs().syscalls.secp256k1_new.base_syscall_cost(), + )?; Secp256Point::new(x, y) .map(|op| op.map(|p| p.into())) @@ -528,7 +566,10 @@ impl StarknetSyscallHandler for &mut NativeSyscallHandler<'_> { p1: Secp256k1Point, remaining_gas: &mut u64, ) -> SyscallResult { - self.pre_execute_syscall(remaining_gas, self.gas_costs().syscalls.secp256k1_add)?; + self.pre_execute_syscall( + remaining_gas, + self.gas_costs().syscalls.secp256k1_add.base_syscall_cost(), + )?; Ok(Secp256Point::add(p0.into(), p1.into()).into()) } @@ -539,7 +580,10 @@ impl StarknetSyscallHandler for &mut NativeSyscallHandler<'_> { m: U256, remaining_gas: &mut u64, ) -> SyscallResult { - self.pre_execute_syscall(remaining_gas, self.gas_costs().syscalls.secp256k1_mul)?; + self.pre_execute_syscall( + remaining_gas, + self.gas_costs().syscalls.secp256k1_mul.base_syscall_cost(), + )?; Ok(Secp256Point::mul(p.into(), m).into()) } @@ -552,7 +596,7 @@ impl StarknetSyscallHandler for &mut NativeSyscallHandler<'_> { ) -> SyscallResult> { self.pre_execute_syscall( remaining_gas, - self.gas_costs().syscalls.secp256k1_get_point_from_x, + self.gas_costs().syscalls.secp256k1_get_point_from_x.base_syscall_cost(), )?; Secp256Point::get_point_from_x(x, y_parity) @@ -565,7 +609,10 @@ impl StarknetSyscallHandler for &mut NativeSyscallHandler<'_> { p: Secp256k1Point, remaining_gas: &mut u64, ) -> SyscallResult<(U256, U256)> { - self.pre_execute_syscall(remaining_gas, self.gas_costs().syscalls.secp256k1_get_xy)?; + self.pre_execute_syscall( + remaining_gas, + self.gas_costs().syscalls.secp256k1_get_xy.base_syscall_cost(), + )?; Ok((p.x, p.y)) } @@ -576,7 +623,10 @@ impl StarknetSyscallHandler for &mut NativeSyscallHandler<'_> { y: U256, remaining_gas: &mut u64, ) -> SyscallResult> { - self.pre_execute_syscall(remaining_gas, self.gas_costs().syscalls.secp256r1_new)?; + self.pre_execute_syscall( + remaining_gas, + self.gas_costs().syscalls.secp256r1_new.base_syscall_cost(), + )?; Secp256Point::new(x, y) .map(|option| option.map(|p| p.into())) @@ -589,7 +639,10 @@ impl StarknetSyscallHandler for &mut NativeSyscallHandler<'_> { p1: Secp256r1Point, remaining_gas: &mut u64, ) -> SyscallResult { - self.pre_execute_syscall(remaining_gas, self.gas_costs().syscalls.secp256r1_add)?; + self.pre_execute_syscall( + remaining_gas, + self.gas_costs().syscalls.secp256r1_add.base_syscall_cost(), + )?; Ok(Secp256Point::add(p0.into(), p1.into()).into()) } @@ -599,7 +652,10 @@ impl StarknetSyscallHandler for &mut NativeSyscallHandler<'_> { m: U256, remaining_gas: &mut u64, ) -> SyscallResult { - self.pre_execute_syscall(remaining_gas, self.gas_costs().syscalls.secp256r1_mul)?; + self.pre_execute_syscall( + remaining_gas, + self.gas_costs().syscalls.secp256r1_mul.base_syscall_cost(), + )?; Ok(Secp256Point::mul(p.into(), m).into()) } @@ -612,7 +668,7 @@ impl StarknetSyscallHandler for &mut NativeSyscallHandler<'_> { ) -> SyscallResult> { self.pre_execute_syscall( remaining_gas, - self.gas_costs().syscalls.secp256r1_get_point_from_x, + self.gas_costs().syscalls.secp256r1_get_point_from_x.base_syscall_cost(), )?; Secp256Point::get_point_from_x(x, y_parity) @@ -625,7 +681,10 @@ impl StarknetSyscallHandler for &mut NativeSyscallHandler<'_> { p: Secp256r1Point, remaining_gas: &mut u64, ) -> SyscallResult<(U256, U256)> { - self.pre_execute_syscall(remaining_gas, self.gas_costs().syscalls.secp256r1_get_xy)?; + self.pre_execute_syscall( + remaining_gas, + self.gas_costs().syscalls.secp256r1_get_xy.base_syscall_cost(), + )?; Ok((p.x, p.y)) } @@ -636,7 +695,10 @@ impl StarknetSyscallHandler for &mut NativeSyscallHandler<'_> { current_block: &[u32; 16], remaining_gas: &mut u64, ) -> SyscallResult<()> { - self.pre_execute_syscall(remaining_gas, self.gas_costs().syscalls.sha256_process_block)?; + self.pre_execute_syscall( + remaining_gas, + self.gas_costs().syscalls.sha256_process_block.base_syscall_cost(), + )?; let data_as_bytes = sha2::digest::generic_array::GenericArray::from_exact_iter( current_block.iter().flat_map(|x| x.to_be_bytes()), @@ -649,6 +711,20 @@ impl StarknetSyscallHandler for &mut NativeSyscallHandler<'_> { Ok(()) } + + fn meta_tx_v0( + &mut self, + address: Felt, + entry_point_selector: Felt, + calldata: &[Felt], + signature: &[Felt], + remaining_gas: &mut u64, + ) -> SyscallResult> { + todo!( + "implement meta_tx_v0 {:?}", + (address, entry_point_selector, calldata, signature, remaining_gas) + ); + } } /// A wrapper around an elliptic curve point in affine coordinates (x,y) on a diff --git a/crates/blockifier/src/execution/syscalls/hint_processor.rs b/crates/blockifier/src/execution/syscalls/hint_processor.rs index b33da2c4ed4..29a846e549d 100644 --- a/crates/blockifier/src/execution/syscalls/hint_processor.rs +++ b/crates/blockifier/src/execution/syscalls/hint_processor.rs @@ -21,6 +21,7 @@ use starknet_api::transaction::fields::{ Resource, ValidResourceBounds, }; +use starknet_api::transaction::TransactionVersion; use starknet_api::StarknetApiError; use starknet_types_core::felt::{Felt, FromStrError}; use thiserror::Error; @@ -28,7 +29,11 @@ use thiserror::Error; use crate::abi::sierra_types::SierraTypeError; use crate::execution::common_hints::{ExecutionMode, HintExecutionResult}; use crate::execution::contract_class::TrackedResource; -use crate::execution::entry_point::{CallEntryPoint, EntryPointExecutionContext}; +use crate::execution::entry_point::{ + CallEntryPoint, + EntryPointExecutionContext, + ExecutableCallEntryPoint, +}; use crate::execution::errors::{ConstructorEntryPointExecutionError, EntryPointExecutionError}; use crate::execution::execution_utils::{ felt_from_ptr, @@ -75,9 +80,26 @@ use crate::execution::syscalls::{ use crate::state::errors::StateError; use crate::state::state_api::State; use crate::transaction::objects::{CurrentTransactionInfo, TransactionInfo}; -use crate::versioned_constants::GasCosts; +use crate::utils::u64_from_usize; +use crate::versioned_constants::{GasCosts, SyscallGasCost}; + +#[derive(Clone, Debug, Default)] +pub struct SyscallUsage { + pub call_count: usize, + pub linear_factor: usize, +} -pub type SyscallCounter = HashMap; +impl SyscallUsage { + pub fn new(call_count: usize, linear_factor: usize) -> Self { + SyscallUsage { call_count, linear_factor } + } + + pub fn increment_call_count(&mut self) { + self.call_count += 1; + } +} + +pub type SyscallUsageMap = HashMap; #[derive(Debug, Error)] pub enum SyscallExecutionError { @@ -214,7 +236,7 @@ pub struct SyscallHintProcessor<'a> { pub base: Box>, // VM-specific fields. - pub syscall_counter: SyscallCounter, + pub syscalls_usage: SyscallUsageMap, // Fields needed for execution and validation. pub read_only_segments: ReadOnlySegments, @@ -238,13 +260,13 @@ impl<'a> SyscallHintProcessor<'a> { state: &'a mut dyn State, context: &'a mut EntryPointExecutionContext, initial_syscall_ptr: Relocatable, - call: CallEntryPoint, + call: ExecutableCallEntryPoint, hints: &'a HashMap, read_only_segments: ReadOnlySegments, ) -> Self { SyscallHintProcessor { base: Box::new(SyscallHandlerBase::new(call, state, context)), - syscall_counter: SyscallCounter::default(), + syscalls_usage: SyscallUsageMap::default(), read_only_segments, syscall_ptr: initial_syscall_ptr, hints, @@ -396,10 +418,19 @@ impl<'a> SyscallHintProcessor<'a> { &mut self, vm: &mut VirtualMachine, ) -> SyscallResult { + let returned_version = self.base.tx_version_for_get_execution_info(); + let original_version = self.base.context.tx_context.tx_info.signed_version(); + + // If the transaction version was overridden, `self.execution_info_ptr` cannot be used. + if returned_version != original_version { + return self.allocate_execution_info_segment(vm, returned_version); + } + match self.execution_info_ptr { Some(execution_info_ptr) => Ok(execution_info_ptr), None => { - let execution_info_ptr = self.allocate_execution_info_segment(vm)?; + let execution_info_ptr = + self.allocate_execution_info_segment(vm, original_version)?; self.execution_info_ptr = Some(execution_info_ptr); Ok(execution_info_ptr) } @@ -445,7 +476,7 @@ impl<'a> SyscallHintProcessor<'a> { &mut self, vm: &mut VirtualMachine, execute_callback: ExecuteCallback, - syscall_gas_cost: u64, + syscall_gas_cost: SyscallGasCost, ) -> HintExecutionResult where Request: SyscallRequest + std::fmt::Debug, @@ -457,13 +488,22 @@ impl<'a> SyscallHintProcessor<'a> { &mut u64, // Remaining gas. ) -> SyscallResult, { - // Refund `SYSCALL_BASE_GAS_COST` as it was pre-charged. - let required_gas = - syscall_gas_cost - self.base.context.gas_costs().base.syscall_base_gas_cost; - let SyscallRequestWrapper { gas_counter, request } = SyscallRequestWrapper::::read(vm, &mut self.syscall_ptr)?; + let syscall_gas_cost = + syscall_gas_cost.get_syscall_cost(u64_from_usize(request.get_linear_factor_length())); + let syscall_base_cost = self.base.context.gas_costs().base.syscall_base_gas_cost; + + // Sanity check for preventing underflow. + assert!( + syscall_gas_cost >= syscall_base_cost, + "Syscall gas cost must be greater than base syscall gas cost" + ); + + // Refund `SYSCALL_BASE_GAS_COST` as it was pre-charged. + let required_gas = syscall_gas_cost - syscall_base_cost; + if gas_counter < required_gas { // Out of gas failure. let out_of_gas_error = @@ -513,20 +553,29 @@ impl<'a> SyscallHintProcessor<'a> { } pub fn increment_syscall_count_by(&mut self, selector: &SyscallSelector, n: usize) { - let syscall_count = self.syscall_counter.entry(*selector).or_default(); - *syscall_count += n; + let syscall_usage = self.syscalls_usage.entry(*selector).or_default(); + syscall_usage.call_count += n; } fn increment_syscall_count(&mut self, selector: &SyscallSelector) { self.increment_syscall_count_by(selector, 1); } + pub fn increment_linear_factor_by(&mut self, selector: &SyscallSelector, n: usize) { + let syscall_usage = self + .syscalls_usage + .get_mut(selector) + .expect("syscalls_usage entry must be initialized before incrementing linear factor"); + syscall_usage.linear_factor += n; + } + fn allocate_execution_info_segment( &mut self, vm: &mut VirtualMachine, + tx_version_override: TransactionVersion, ) -> SyscallResult { let block_info_ptr = self.allocate_block_info_segment(vm)?; - let tx_info_ptr = self.allocate_tx_info_segment(vm)?; + let tx_info_ptr = self.allocate_tx_info_segment(vm, tx_version_override)?; let additional_info: Vec = vec![ block_info_ptr.into(), @@ -572,13 +621,17 @@ impl<'a> SyscallHintProcessor<'a> { Ok((data_segment_start_ptr, data_segment_end_ptr)) } - fn allocate_tx_info_segment(&mut self, vm: &mut VirtualMachine) -> SyscallResult { + fn allocate_tx_info_segment( + &mut self, + vm: &mut VirtualMachine, + tx_version_override: TransactionVersion, + ) -> SyscallResult { let tx_info = &self.base.context.tx_context.clone().tx_info; let (tx_signature_start_ptr, tx_signature_end_ptr) = &self.allocate_data_segment(vm, &tx_info.signature().0)?; let mut tx_data: Vec = vec![ - tx_info.signed_version().0.into(), + tx_version_override.0.into(), tx_info.sender_address().0.key().into(), Felt::from(tx_info.max_fee_for_execution_info_syscall().0).into(), tx_signature_start_ptr.into(), diff --git a/crates/blockifier/src/execution/syscalls/mod.rs b/crates/blockifier/src/execution/syscalls/mod.rs index df9a12f95ee..cbffff565c7 100644 --- a/crates/blockifier/src/execution/syscalls/mod.rs +++ b/crates/blockifier/src/execution/syscalls/mod.rs @@ -46,6 +46,12 @@ pub type SyscallSelector = DeprecatedSyscallSelector; pub trait SyscallRequest: Sized { fn read(_vm: &VirtualMachine, _ptr: &mut Relocatable) -> SyscallResult; + + /// Returns the linear factor's length for the syscall. + /// If no factor exists, it returns 0. + fn get_linear_factor_length(&self) -> usize { + 0 + } } pub trait SyscallResponse { @@ -218,6 +224,10 @@ impl SyscallRequest for DeployRequest { )?, }) } + + fn get_linear_factor_length(&self) -> usize { + self.constructor_calldata.0.len() + } } #[derive(Debug)] @@ -239,6 +249,11 @@ pub fn deploy( syscall_handler: &mut SyscallHintProcessor<'_>, remaining_gas: &mut u64, ) -> SyscallResult { + // Increment the Deploy syscall's linear cost counter by the number of elements in the + // constructor calldata. + syscall_handler + .increment_linear_factor_by(&SyscallSelector::Deploy, request.constructor_calldata.0.len()); + let (deployed_contract_address, call_info) = syscall_handler.base.deploy( request.class_hash, request.contract_address_salt, diff --git a/crates/blockifier/src/execution/syscalls/syscall_base.rs b/crates/blockifier/src/execution/syscalls/syscall_base.rs index 8a092a9aecf..4678215acbe 100644 --- a/crates/blockifier/src/execution/syscalls/syscall_base.rs +++ b/crates/blockifier/src/execution/syscalls/syscall_base.rs @@ -5,7 +5,12 @@ use std::convert::From; use starknet_api::core::{calculate_contract_address, ClassHash, ContractAddress}; use starknet_api::state::StorageKey; use starknet_api::transaction::fields::{Calldata, ContractAddressSalt}; -use starknet_api::transaction::EventContent; +use starknet_api::transaction::{ + signed_tx_version, + EventContent, + TransactionOptions, + TransactionVersion, +}; use starknet_types_core::felt::Felt; use super::exceeds_event_size_limit; @@ -16,6 +21,7 @@ use crate::execution::entry_point::{ CallEntryPoint, ConstructorContext, EntryPointExecutionContext, + ExecutableCallEntryPoint, }; use crate::execution::execution_utils::execute_deployment; use crate::execution::syscalls::hint_processor::{ @@ -27,6 +33,7 @@ use crate::execution::syscalls::hint_processor::{ }; use crate::state::state_api::State; use crate::transaction::account_transaction::is_cairo1; +use crate::transaction::objects::TransactionInfo; pub type SyscallResult = Result; pub const KECCAK_FULL_RATE_IN_WORDS: usize = 17; @@ -35,7 +42,7 @@ pub struct SyscallHandlerBase<'state> { // Input for execution. pub state: &'state mut dyn State, pub context: &'state mut EntryPointExecutionContext, - pub call: CallEntryPoint, + pub call: ExecutableCallEntryPoint, // Execution results. pub events: Vec, @@ -58,7 +65,7 @@ pub struct SyscallHandlerBase<'state> { impl<'state> SyscallHandlerBase<'state> { pub fn new( - call: CallEntryPoint, + call: ExecutableCallEntryPoint, state: &'state mut dyn State, context: &'state mut EntryPointExecutionContext, ) -> SyscallHandlerBase<'state> { @@ -173,6 +180,36 @@ impl<'state> SyscallHandlerBase<'state> { Ok(class_hash) } + /// Returns the transaction version for the `get_execution_info` syscall. + pub fn tx_version_for_get_execution_info(&self) -> TransactionVersion { + let tx_context = &self.context.tx_context; + // The transaction version, ignoring the only_query bit. + let version = tx_context.tx_info.version(); + let versioned_constants = &tx_context.block_context.versioned_constants; + // The set of v1-bound-accounts. + let v1_bound_accounts = &versioned_constants.os_constants.v1_bound_accounts_cairo1; + let class_hash = &self.call.class_hash; + + // If the transaction version is 3 and the account is in the v1-bound-accounts set, + // the syscall should return transaction version 1 instead. + if version == TransactionVersion::THREE && v1_bound_accounts.contains(class_hash) { + let tip = match &tx_context.tx_info { + TransactionInfo::Current(transaction_info) => transaction_info.tip, + TransactionInfo::Deprecated(_) => { + panic!("Transaction info variant doesn't match transaction version") + } + }; + if tip <= versioned_constants.os_constants.v1_bound_accounts_max_tip { + return signed_tx_version( + &TransactionVersion::ONE, + &TransactionOptions { only_query: tx_context.tx_info.only_query() }, + ); + } + } + + tx_context.tx_info.signed_version() + } + pub fn emit_event(&mut self, event: EventContent) -> SyscallResult<()> { exceeds_event_size_limit( self.context.versioned_constants(), @@ -302,7 +339,8 @@ impl<'state> SyscallHandlerBase<'state> { // TODO(Ori, 1/2/2024): Write an indicative expect message explaining why the conversion // works. let n_rounds_as_u64 = u64::try_from(n_rounds).expect("Failed to convert usize to u64."); - let gas_cost = n_rounds_as_u64 * self.context.gas_costs().syscalls.keccak_round_cost; + let gas_cost = n_rounds_as_u64 + * self.context.gas_costs().syscalls.keccak_round_cost.base_syscall_cost(); if gas_cost > *remaining_gas { let out_of_gas_error = Felt::from_hex(OUT_OF_GAS_ERROR) diff --git a/crates/blockifier/src/execution/syscalls/syscall_tests/builtins_test.rs b/crates/blockifier/src/execution/syscalls/syscall_tests/builtins_test.rs new file mode 100644 index 00000000000..afd4cf19b55 --- /dev/null +++ b/crates/blockifier/src/execution/syscalls/syscall_tests/builtins_test.rs @@ -0,0 +1,77 @@ +use std::sync::Arc; + +use rstest::rstest; +use rstest_reuse::apply; +use starknet_api::abi::abi_utils::selector_from_name; +use starknet_api::calldata; + +use crate::context::{BlockContext, ChainInfo}; +use crate::execution::entry_point::CallEntryPoint; +use crate::test_utils::contracts::FeatureContract; +use crate::test_utils::initial_test_state::test_state; +use crate::test_utils::test_templates::runnable_version; +use crate::test_utils::{trivial_external_entry_point_new, CairoVersion, RunnableCairo1, BALANCE}; +use crate::versioned_constants::BuiltinGasCosts; + +const TESTED_BUILTIN_GAS_COST: u64 = u64::pow(10, 7); + +#[apply(runnable_version)] +#[case::pedersen("test_pedersen")] +#[case::bitwise("test_bitwise")] +#[case::ecop("test_ecop")] +#[case::poseidon("test_poseidon")] +// This test case tests the add_mod and mul_mod builtins. +#[case::add_and_mul_mod("test_circuit")] +fn builtins_test(runnable_version: RunnableCairo1, #[case] selector_name: &str) { + let test_contract = FeatureContract::TestContract(CairoVersion::Cairo1(runnable_version)); + let chain_info = &ChainInfo::create_for_testing(); + let mut state = test_state(chain_info, BALANCE, &[(test_contract, 1)]); + + let calldata = calldata![]; + let entry_point_call = CallEntryPoint { + entry_point_selector: selector_from_name(selector_name), + calldata, + ..trivial_external_entry_point_new(test_contract) + }; + + let mut block_context = BlockContext::create_for_account_testing(); + assert!( + block_context.versioned_constants.os_constants.execute_max_sierra_gas.0 + > TESTED_BUILTIN_GAS_COST + ); + change_builtins_gas_cost(&mut block_context, selector_name); + let mut minimal_gas = TESTED_BUILTIN_GAS_COST; + if selector_name == "test_circuit" { + minimal_gas *= 2; + } + + let call_info = + entry_point_call.execute_directly_given_block_context(&mut state, block_context).unwrap(); + + assert!(!call_info.execution.failed, "Execution failed"); + assert!(call_info.execution.gas_consumed >= minimal_gas); +} + +fn change_builtins_gas_cost(block_context: &mut BlockContext, selector_name: &str) { + let os_constants = Arc::make_mut(&mut block_context.versioned_constants.os_constants); + os_constants.gas_costs.builtins = BuiltinGasCosts::default(); + match selector_name { + "test_pedersen" => { + os_constants.gas_costs.builtins.pedersen = TESTED_BUILTIN_GAS_COST; + } + "test_bitwise" => { + os_constants.gas_costs.builtins.bitwise = TESTED_BUILTIN_GAS_COST; + } + "test_ecop" => { + os_constants.gas_costs.builtins.ecop = TESTED_BUILTIN_GAS_COST; + } + "test_poseidon" => { + os_constants.gas_costs.builtins.poseidon = TESTED_BUILTIN_GAS_COST; + } + "test_circuit" => { + os_constants.gas_costs.builtins.add_mod = TESTED_BUILTIN_GAS_COST; + os_constants.gas_costs.builtins.mul_mod = TESTED_BUILTIN_GAS_COST; + } + _ => panic!("Unknown selector name: {}", selector_name), + } +} diff --git a/crates/blockifier/src/execution/syscalls/syscall_tests/deploy.rs b/crates/blockifier/src/execution/syscalls/syscall_tests/deploy.rs index 01d06024bf0..7d3f8a24441 100644 --- a/crates/blockifier/src/execution/syscalls/syscall_tests/deploy.rs +++ b/crates/blockifier/src/execution/syscalls/syscall_tests/deploy.rs @@ -122,9 +122,10 @@ fn with_constructor(runnable_version: RunnableCairo1) { .unwrap(); let deploy_call = &entry_point_call.execute_directly(&mut state).unwrap(); + assert_eq!( deploy_call.execution, - CallExecution { retdata: retdata![], gas_consumed: 174910, ..CallExecution::default() } + CallExecution { retdata: retdata![], gas_consumed: 184610, ..CallExecution::default() } ); let constructor_call = &deploy_call.inner_calls[0]; diff --git a/crates/blockifier/src/execution/syscalls/syscall_tests/get_execution_info.rs b/crates/blockifier/src/execution/syscalls/syscall_tests/get_execution_info.rs index 788f23deef8..1feba884389 100644 --- a/crates/blockifier/src/execution/syscalls/syscall_tests/get_execution_info.rs +++ b/crates/blockifier/src/execution/syscalls/syscall_tests/get_execution_info.rs @@ -28,8 +28,8 @@ use test_case::test_case; use crate::context::ChainInfo; use crate::execution::common_hints::ExecutionMode; use crate::execution::entry_point::CallEntryPoint; -use crate::test_utils::contracts::FeatureContract; -use crate::test_utils::initial_test_state::test_state; +use crate::test_utils::contracts::{FeatureContract, FeatureContractData}; +use crate::test_utils::initial_test_state::test_state_ex; use crate::test_utils::{ trivial_external_entry_point_with_address, CairoVersion, @@ -42,6 +42,7 @@ use crate::transaction::objects::{ DeprecatedTransactionInfo, TransactionInfo, }; +use crate::versioned_constants::VersionedConstants; #[cfg_attr( feature = "cairo_native", @@ -49,8 +50,10 @@ use crate::transaction::objects::{ FeatureContract::SierraExecutionInfoV1Contract(RunnableCairo1::Native), ExecutionMode::Validate, TransactionVersion::ONE, + false, + false, false; - "Native [V1]: Validate execution mode: block info fields should be zeroed. Transaction V1." + "Native: Validate execution mode: block info fields should be zeroed. Transaction V1." ) )] #[cfg_attr( @@ -59,8 +62,10 @@ use crate::transaction::objects::{ FeatureContract::SierraExecutionInfoV1Contract(RunnableCairo1::Native), ExecutionMode::Execute, TransactionVersion::ONE, + false, + false, false; - "Native [V1]: Execute execution mode: block info should be as usual. Transaction V1." + "Native: Execute execution mode: block info should be as usual. Transaction V1." ) )] #[cfg_attr( @@ -68,9 +73,11 @@ use crate::transaction::objects::{ test_case( FeatureContract::TestContract(CairoVersion::Cairo1(RunnableCairo1::Native)), ExecutionMode::Validate, - TransactionVersion::ONE, + TransactionVersion::THREE, + false, + false, false; - "Native: Validate execution mode: block info fields should be zeroed. Transaction V1." + "Native: Validate execution mode: block info fields should be zeroed. Transaction V3." ) )] #[cfg_attr( @@ -78,19 +85,49 @@ use crate::transaction::objects::{ test_case( FeatureContract::TestContract(CairoVersion::Cairo1(RunnableCairo1::Native)), ExecutionMode::Execute, - TransactionVersion::ONE, + TransactionVersion::THREE, + false, + false, false; - "Native: Execute execution mode: block info should be as usual. Transaction V1." + "Native: Execute execution mode: block info should be as usual. Transaction V3." + ) +)] +#[cfg_attr( + feature = "cairo_native", + test_case( + FeatureContract::LegacyTestContract, + ExecutionMode::Execute, + TransactionVersion::ONE, + false, + false, + false; + "Native: Legacy contract. Execute execution mode: block info should be as usual. Transaction + V1." + ) +)] +#[cfg_attr( + feature = "cairo_native", + test_case( + FeatureContract::LegacyTestContract, + ExecutionMode::Execute, + TransactionVersion::THREE, + false, + false, + false; + "Native: Legacy contract. Execute execution mode: block info should be as usual. Transaction + V3." ) )] #[cfg_attr( feature = "cairo_native", test_case( FeatureContract::TestContract(CairoVersion::Cairo1(RunnableCairo1::Native)), - ExecutionMode::Validate, + ExecutionMode::Execute, TransactionVersion::THREE, + true, + false, false; - "Native: Validate execution mode: block info fields should be zeroed. Transaction V3." + "Native: Execute execution mode: block info should be as usual. Transaction V3. Query" ) )] #[cfg_attr( @@ -99,59 +136,122 @@ use crate::transaction::objects::{ FeatureContract::TestContract(CairoVersion::Cairo1(RunnableCairo1::Native)), ExecutionMode::Execute, TransactionVersion::THREE, + false, + true, false; - "Native: Execute execution mode: block info should be as usual. Transaction V3." + "Native: V1 bound account: execute" + ) +)] +#[cfg_attr( + feature = "cairo_native", + test_case( + FeatureContract::TestContract(CairoVersion::Cairo1(RunnableCairo1::Native)), + ExecutionMode::Execute, + TransactionVersion::THREE, + true, + true, + false; + "Native: V1 bound account: query" ) )] #[test_case( FeatureContract::TestContract(CairoVersion::Cairo1(RunnableCairo1::Casm)), ExecutionMode::Validate, TransactionVersion::ONE, + false, + false, false; "Validate execution mode: block info fields should be zeroed. Transaction V1.")] #[test_case( FeatureContract::TestContract(CairoVersion::Cairo1(RunnableCairo1::Casm)), ExecutionMode::Execute, TransactionVersion::ONE, + false, + false, false; "Execute execution mode: block info should be as usual. Transaction V1.")] #[test_case( FeatureContract::TestContract(CairoVersion::Cairo1(RunnableCairo1::Casm)), ExecutionMode::Validate, TransactionVersion::THREE, + false, + false, false; "Validate execution mode: block info fields should be zeroed. Transaction V3.")] #[test_case( FeatureContract::TestContract(CairoVersion::Cairo1(RunnableCairo1::Casm)), ExecutionMode::Execute, TransactionVersion::THREE, + false, + false, false; "Execute execution mode: block info should be as usual. Transaction V3.")] #[test_case( FeatureContract::LegacyTestContract, ExecutionMode::Execute, TransactionVersion::ONE, + false, + false, false; "Legacy contract. Execute execution mode: block info should be as usual. Transaction V1.")] #[test_case( FeatureContract::LegacyTestContract, ExecutionMode::Execute, TransactionVersion::THREE, + false, + false, false; "Legacy contract. Execute execution mode: block info should be as usual. Transaction V3.")] #[test_case( FeatureContract::TestContract(CairoVersion::Cairo1(RunnableCairo1::Casm)), ExecutionMode::Execute, TransactionVersion::THREE, - true; + true, + false, + false; "Execute execution mode: block info should be as usual. Transaction V3. Query.")] +#[test_case( + FeatureContract::TestContract(CairoVersion::Cairo1(RunnableCairo1::Casm)), + ExecutionMode::Execute, + TransactionVersion::THREE, + false, + true, + false; + "V1 bound account: execute")] +#[test_case( + FeatureContract::TestContract(CairoVersion::Cairo1(RunnableCairo1::Casm)), + ExecutionMode::Execute, + TransactionVersion::THREE, + false, + true, + true; + "V1 bound account: execute, high tip")] +#[test_case( + FeatureContract::TestContract(CairoVersion::Cairo1(RunnableCairo1::Casm)), + ExecutionMode::Execute, + TransactionVersion::THREE, + true, + true, + false; + "V1 bound account: query")] fn test_get_execution_info( test_contract: FeatureContract, execution_mode: ExecutionMode, mut version: TransactionVersion, only_query: bool, + v1_bound_account: bool, + // Whether the tip is larger than `v1_bound_accounts_max_tip`. + high_tip: bool, ) { - let state = &mut test_state(&ChainInfo::create_for_testing(), BALANCE, &[(test_contract, 1)]); + let mut test_contract_data: FeatureContractData = test_contract.into(); + if v1_bound_account { + let optional_class_hash = + VersionedConstants::latest_constants().os_constants.v1_bound_accounts_cairo1.first(); + test_contract_data.class_hash = + *optional_class_hash.expect("No v1 bound accounts found in versioned constants."); + } + let state = + &mut test_state_ex(&ChainInfo::create_for_testing(), BALANCE, &[(test_contract_data, 1)]); let expected_block_info = match execution_mode { ExecutionMode::Validate => [ // Rounded block number. @@ -169,6 +269,11 @@ fn test_get_execution_info( let test_contract_address = test_contract.get_instance_address(0); + // Transaction tip. + let tip = Tip(VersionedConstants::latest_constants().os_constants.v1_bound_accounts_max_tip.0 + + if high_tip { 1 } else { 0 }); + let expected_tip = if version == TransactionVersion::THREE { tip } else { Tip(0) }; + let expected_unsupported_fields = match test_contract { FeatureContract::LegacyTestContract => { // Read and parse file content. @@ -188,19 +293,21 @@ fn test_get_execution_info( } _ => { vec![ - Felt::ZERO, // Tip. - Felt::ZERO, // Paymaster data. - Felt::ZERO, // Nonce DA. - Felt::ZERO, // Fee DA. - Felt::ZERO, // Account data. + expected_tip.into(), // Tip. + Felt::ZERO, // Paymaster data. + Felt::ZERO, // Nonce DA. + Felt::ZERO, // Fee DA. + Felt::ZERO, // Account data. ] } }; + let mut expected_version = if v1_bound_account && !high_tip { 1.into() } else { version.0 }; if only_query { let simulate_version_base = *QUERY_VERSION_BASE; let query_version = simulate_version_base + version.0; version = TransactionVersion(query_version); + expected_version += simulate_version_base; } let tx_hash = tx_hash!(1991); @@ -233,7 +340,7 @@ fn test_get_execution_info( let tx_info: TransactionInfo; if version == TransactionVersion::ONE { expected_tx_info = vec![ - version.0, /* Transaction + expected_version, /* Transaction * version. */ *sender_address.0.key(), // Account address. felt!(max_fee.0), // Max fee. @@ -256,7 +363,7 @@ fn test_get_execution_info( }); } else { expected_tx_info = vec![ - version.0, /* Transaction + expected_version, /* Transaction * version. */ *sender_address.0.key(), // Account address. Felt::ZERO, // Max fee. @@ -279,7 +386,7 @@ fn test_get_execution_info( max_amount, max_price_per_unit, }), - tip: Tip::default(), + tip, nonce_data_availability_mode: DataAvailabilityMode::L1, fee_data_availability_mode: DataAvailabilityMode::L1, paymaster_data: PaymasterData::default(), diff --git a/crates/blockifier/src/execution/syscalls/syscall_tests/mod.rs b/crates/blockifier/src/execution/syscalls/syscall_tests/mod.rs index 981449e0ce5..ea67e0be3e3 100644 --- a/crates/blockifier/src/execution/syscalls/syscall_tests/mod.rs +++ b/crates/blockifier/src/execution/syscalls/syscall_tests/mod.rs @@ -1,3 +1,4 @@ +mod builtins_test; mod call_contract; mod constants; mod deploy; diff --git a/crates/blockifier/src/execution/syscalls/syscall_tests/out_of_gas.rs b/crates/blockifier/src/execution/syscalls/syscall_tests/out_of_gas.rs index 1b822c0c9f5..da03541617a 100644 --- a/crates/blockifier/src/execution/syscalls/syscall_tests/out_of_gas.rs +++ b/crates/blockifier/src/execution/syscalls/syscall_tests/out_of_gas.rs @@ -34,7 +34,7 @@ fn test_out_of_gas(runnable_version: RunnableCairo1) { // We hit the out of gas error right before executing the syscall. let syscall_base_gas_cost = gas_costs.base.syscall_base_gas_cost; let redeposit_gas = 300; - let syscall_required_gas = get_block_hash_gas_cost - syscall_base_gas_cost; + let syscall_required_gas = get_block_hash_gas_cost.base_syscall_cost() - syscall_base_gas_cost; let call_info = entry_point_call.clone().execute_directly(&mut state).unwrap(); assert_eq!( call_info.execution, @@ -57,54 +57,3 @@ fn test_total_tx_limits_less_than_max_sierra_gas() { <= MAX_POSSIBLE_SIERRA_GAS ); } - -// TODO (AvivG) move this test to Transaction executor - -// #[cfg(feature = "cairo_native")] -// #[cfg(feature = "cairo_native")] -// use crate::context::ChainInfo; -// #[cfg(feature = "cairo_native")] -// use crate::test_utils::initial_test_state::test_state; -// #[cfg(feature = "cairo_native")] -// use crate::test_utils::BALANCE; -// #[rstest::rstest] -// #[case(MAX_POSSIBLE_SIERRA_GAS, MAX_POSSIBLE_SIERRA_GAS - 2681170910)] -// #[case(MAX_POSSIBLE_SIERRA_GAS / 10, 81886490)] -// #[case(MAX_POSSIBLE_SIERRA_GAS / 100, 8190940)] -// #[case(MAX_POSSIBLE_SIERRA_GAS / 1000, 822890)] -// #[case(MAX_POSSIBLE_SIERRA_GAS / 10000, 85440)] -// #[case(MAX_POSSIBLE_SIERRA_GAS / 100000, 12340)] -// #[case(MAX_POSSIBLE_SIERRA_GAS / 1000000, 0)] -// #[case(350, 0)] -// #[case(35, 0)] -// #[case(0, 0)] -// /// Tests that Native can handle deep recursion calls without overflowing the stack. -// /// Note that the recursive function must be complicated, since the compiler might transform -// /// simple recursions into loops. The tested function was manually tested with higher gas and -// /// reached stack overflow. -// /// -// /// Also, there is no need to test the VM here since it doesn't use the stack. -// fn test_stack_overflow(#[case] initial_gas: u64, #[case] gas_consumed: u64) { -// let test_contract = -// FeatureContract::TestContract(CairoVersion::Cairo1(RunnableCairo1::Native)); let mut state = -// test_state(&ChainInfo::create_for_testing(), BALANCE, &[(test_contract, 1)]); - -// let depth = felt!(1000000_u128); -// let entry_point_call = CallEntryPoint { -// calldata: calldata![depth], -// entry_point_selector: selector_from_name("test_stack_overflow"), -// initial_gas, -// ..trivial_external_entry_point_new(test_contract) -// }; -// let call_info = entry_point_call.execute_directly(&mut state).unwrap(); -// assert_eq!( -// call_info.execution, -// CallExecution { -// // 'Out of gas' -// retdata: retdata![felt!["0x4f7574206f6620676173"]], -// gas_consumed, -// failed: true, -// ..Default::default() -// } -// ); -// } diff --git a/crates/blockifier/src/fee/resources.rs b/crates/blockifier/src/fee/resources.rs index 6c0ec1d75a9..83eeebc26f9 100644 --- a/crates/blockifier/src/fee/resources.rs +++ b/crates/blockifier/src/fee/resources.rs @@ -18,7 +18,7 @@ use crate::fee::gas_usage::{ use crate::state::cached_state::{StateChanges, StateChangesCountForFee}; use crate::transaction::errors::TransactionFeeError; use crate::utils::u64_from_usize; -use crate::versioned_constants::{AllocationCost, ArchivalDataGasCosts, VersionedConstants}; +use crate::versioned_constants::{AllocationCost, VersionedConstants}; pub type TransactionFeeResult = Result; @@ -238,8 +238,8 @@ impl StateResources { pub struct ArchivalDataResources { pub event_summary: EventSummary, pub calldata_length: usize, - signature_length: usize, - code_size: usize, + pub signature_length: usize, + pub code_size: usize, } impl ArchivalDataResources { @@ -250,60 +250,60 @@ impl ArchivalDataResources { versioned_constants: &VersionedConstants, mode: &GasVectorComputationMode, ) -> GasVector { - let archival_gas_costs = match mode { - // Computation is in L2 gas units. - GasVectorComputationMode::All => &versioned_constants.archival_data_gas_costs, - // Computation is in L1 gas units. - GasVectorComputationMode::NoL2Gas => { - &versioned_constants.deprecated_l2_resource_gas_costs - } - }; - let gas_amount = [ - self.get_calldata_and_signature_gas_cost(archival_gas_costs), - self.get_code_gas_cost(archival_gas_costs), - self.get_events_gas_cost(archival_gas_costs), + [ + self.get_calldata_and_signature_gas_cost(versioned_constants, mode), + self.get_code_gas_cost(versioned_constants, mode), + self.event_summary.to_gas_vector(versioned_constants, mode), ] .into_iter() - .fold(GasAmount::ZERO, |accumulator, cost| { + .fold(GasVector::ZERO, |accumulator, cost| { accumulator.checked_add(cost).unwrap_or_else(|| { panic!( "Archival data resources to gas vector overflowed: tried to add \ - {accumulator:?} gas to {cost:?} gas.", + {accumulator:?} gas vector to {cost:?} gas vector.", ) }) - }); - match mode { - GasVectorComputationMode::All => GasVector::from_l2_gas(gas_amount), - GasVectorComputationMode::NoL2Gas => GasVector::from_l1_gas(gas_amount), - } + }) } /// Returns the cost for transaction calldata and transaction signature. Each felt costs a /// fixed and configurable amount of gas. This cost represents the cost of storing the - /// calldata and the signature on L2. The result is given in L1/L2 gas units, depending on the - /// mode. + /// calldata and the signature on L2. fn get_calldata_and_signature_gas_cost( &self, - archival_gas_costs: &ArchivalDataGasCosts, - ) -> GasAmount { + versioned_constants: &VersionedConstants, + mode: &GasVectorComputationMode, + ) -> GasVector { + let archival_gas_costs = versioned_constants.get_archival_data_gas_costs(mode); + // TODO(Avi, 20/2/2024): Calculate the number of bytes instead of the number of felts. let total_data_size = u64_from_usize(self.calldata_length + self.signature_length); - (archival_gas_costs.gas_per_data_felt * total_data_size).to_integer().into() - } + let gas_amount = + (archival_gas_costs.gas_per_data_felt * total_data_size).to_integer().into(); - /// Returns the cost of declared class codes in L1/L2 gas units, depending on the mode. - fn get_code_gas_cost(&self, archival_gas_costs: &ArchivalDataGasCosts) -> GasAmount { - (archival_gas_costs.gas_per_code_byte * u64_from_usize(self.code_size)).to_integer().into() + match mode { + GasVectorComputationMode::All => GasVector::from_l2_gas(gas_amount), + GasVectorComputationMode::NoL2Gas => GasVector::from_l1_gas(gas_amount), + } } - /// Returns the cost of the transaction's emmited events in L1/L2 gas units, depending on the - /// mode. - fn get_events_gas_cost(&self, archival_gas_costs: &ArchivalDataGasCosts) -> GasAmount { - (archival_gas_costs.gas_per_data_felt - * (archival_gas_costs.event_key_factor * self.event_summary.total_event_keys - + self.event_summary.total_event_data_size)) - .to_integer() - .into() + /// Returns the cost of declared class codes. + fn get_code_gas_cost( + &self, + versioned_constants: &VersionedConstants, + mode: &GasVectorComputationMode, + ) -> GasVector { + let archival_gas_costs = versioned_constants.get_archival_data_gas_costs(mode); + + let gas_amount: GasAmount = (archival_gas_costs.gas_per_code_byte + * u64_from_usize(self.code_size)) + .to_integer() + .into(); + + match mode { + GasVectorComputationMode::All => GasVector::from_l2_gas(gas_amount), + GasVectorComputationMode::NoL2Gas => GasVector::from_l1_gas(gas_amount), + } } } diff --git a/crates/blockifier/src/state.rs b/crates/blockifier/src/state.rs index 913d55f735d..a2f784c311f 100644 --- a/crates/blockifier/src/state.rs +++ b/crates/blockifier/src/state.rs @@ -4,5 +4,7 @@ pub mod contract_class_manager; pub mod error_format_test; pub mod errors; pub mod global_cache; +#[cfg(feature = "cairo_native")] +pub mod native_class_manager; pub mod state_api; pub mod stateful_compression; diff --git a/crates/blockifier/src/state/cached_state.rs b/crates/blockifier/src/state/cached_state.rs index 5fc582edc47..a6d015cea38 100644 --- a/crates/blockifier/src/state/cached_state.rs +++ b/crates/blockifier/src/state/cached_state.rs @@ -355,13 +355,13 @@ impl StateMaps { modified_contracts } - pub fn into_keys(self) -> StateChangesKeys { + pub fn keys(&self) -> StateChangesKeys { StateChangesKeys { modified_contracts: self.get_contract_addresses(), - nonce_keys: self.nonces.into_keys().collect(), - class_hash_keys: self.class_hashes.into_keys().collect(), - storage_keys: self.storage.into_keys().collect(), - compiled_class_hash_keys: self.compiled_class_hashes.into_keys().collect(), + nonce_keys: self.nonces.keys().cloned().collect(), + class_hash_keys: self.class_hashes.keys().cloned().collect(), + storage_keys: self.storage.keys().cloned().collect(), + compiled_class_hash_keys: self.compiled_class_hashes.keys().cloned().collect(), } } } diff --git a/crates/blockifier/src/state/cached_state_test.rs b/crates/blockifier/src/state/cached_state_test.rs index 824acd01b16..bf730d9ea7c 100644 --- a/crates/blockifier/src/state/cached_state_test.rs +++ b/crates/blockifier/src/state/cached_state_test.rs @@ -547,7 +547,7 @@ fn test_contract_cache_is_used() { #[test] fn test_cache_get_write_keys() { // Trivial case. - assert_eq!(StateMaps::default().into_keys(), StateChangesKeys::default()); + assert_eq!(StateMaps::default().keys(), StateChangesKeys::default()); // Interesting case. let some_felt = felt!("0x1"); @@ -592,7 +592,7 @@ fn test_cache_get_write_keys() { ]), }; - assert_eq!(state_maps.into_keys(), expected_keys); + assert_eq!(state_maps.keys(), expected_keys); } #[test] diff --git a/crates/blockifier/src/state/contract_class_manager.rs b/crates/blockifier/src/state/contract_class_manager.rs index a197111f5d8..2a3c6694a10 100644 --- a/crates/blockifier/src/state/contract_class_manager.rs +++ b/crates/blockifier/src/state/contract_class_manager.rs @@ -1,227 +1,44 @@ -#[cfg(feature = "cairo_native")] -use std::sync::mpsc::{sync_channel, Receiver, SyncSender, TrySendError}; -#[cfg(feature = "cairo_native")] -use std::sync::Arc; - -#[cfg(any(feature = "testing", test))] -use cached::Cached; -#[cfg(feature = "cairo_native")] -use log; -use starknet_api::core::ClassHash; -#[cfg(feature = "cairo_native")] -use starknet_api::state::SierraContractClass; -#[cfg(feature = "cairo_native")] -use starknet_sierra_multicompile::command_line_compiler::CommandLineCompiler; -#[cfg(feature = "cairo_native")] -use starknet_sierra_multicompile::utils::into_contract_class_for_compilation; -#[cfg(feature = "cairo_native")] -use starknet_sierra_multicompile::SierraToNativeCompiler; - -#[cfg(feature = "cairo_native")] -use crate::blockifier::config::CairoNativeRunConfig; -use crate::blockifier::config::ContractClassManagerConfig; -#[cfg(feature = "cairo_native")] -use crate::execution::contract_class::CompiledClassV1; -#[cfg(feature = "cairo_native")] -use crate::execution::native::contract_class::NativeCompiledClassV1; -#[cfg(feature = "cairo_native")] -use crate::state::global_cache::CachedCairoNative; -use crate::state::global_cache::{CachedCasm, ContractCaches}; -pub const DEFAULT_COMPILATION_REQUEST_CHANNEL_SIZE: usize = 1000; +pub const DEFAULT_COMPILATION_REQUEST_CHANNEL_SIZE: usize = 2000; -/// Represents a request to compile a sierra contract class to a native compiled class. -/// -/// # Fields: -/// * `class_hash` - used to identify the contract class in the cache. -/// * `sierra_contract_class` - the sierra contract class to be compiled. -/// * `casm_compiled_class` - stored in [`NativeCompiledClassV1`] to allow fallback to cairo_vm -/// execution in case of unexpected failure during native execution. #[cfg(feature = "cairo_native")] -type CompilationRequest = (ClassHash, Arc, CompiledClassV1); +pub type ContractClassManager = crate::state::native_class_manager::NativeClassManager; -/// Manages the global cache of contract classes and handles sierra-to-native compilation requests. -#[derive(Clone)] -pub struct ContractClassManager { - #[cfg(feature = "cairo_native")] - cairo_native_run_config: CairoNativeRunConfig, - /// The global cache of contract classes: casm, sierra, and native. - contract_caches: ContractCaches, - /// The sending half of the compilation request channel. Set to `None` if native compilation is - /// disabled. - #[cfg(feature = "cairo_native")] - sender: Option>, - /// The sierra-to-native compiler. - #[cfg(feature = "cairo_native")] - compiler: Option>, -} - -impl ContractClassManager { - /// Creates a new contract class manager and spawns a thread that listens for compilation - /// requests and processes them (a.k.a. the compilation worker). - /// Returns the contract class manager. - /// NOTE: the compilation worker is not spawned if one of the following conditions is met: - /// 1. The feature `cairo_native` is not enabled. - /// 2. `config.run_cairo_native` is `false`. - /// 3. `config.wait_on_native_compilation` is `true`. - pub fn start(config: ContractClassManagerConfig) -> ContractClassManager { - // TODO(Avi, 15/12/2024): Add the size of the channel to the config. - let contract_caches = ContractCaches::new(config.contract_cache_size); - #[cfg(not(feature = "cairo_native"))] - return ContractClassManager { contract_caches }; - #[cfg(feature = "cairo_native")] - { - let cairo_native_run_config = config.cairo_native_run_config; - if !cairo_native_run_config.run_cairo_native { - // Native compilation is disabled - no need to start the compilation worker. - return ContractClassManager { - cairo_native_run_config: config.cairo_native_run_config, - contract_caches, - sender: None, - compiler: None, - }; - } - - let compiler_config = config.native_compiler_config.clone(); - let compiler = Arc::new(CommandLineCompiler::new(compiler_config)); - if cairo_native_run_config.wait_on_native_compilation { - // Compilation requests are processed synchronously. No need to start the worker. - return ContractClassManager { - cairo_native_run_config, - contract_caches, - sender: None, - compiler: Some(compiler), - }; - } - - let (sender, receiver) = sync_channel(cairo_native_run_config.channel_size); - - std::thread::spawn({ - let contract_caches = contract_caches.clone(); - move || run_compilation_worker(contract_caches, receiver, compiler) - }); - - ContractClassManager { - cairo_native_run_config, - contract_caches, - sender: Some(sender), - compiler: None, - } +#[cfg(not(feature = "cairo_native"))] +pub mod trivial_class_manager { + #[cfg(any(feature = "testing", test))] + use cached::Cached; + use starknet_api::core::ClassHash; + + use crate::blockifier::config::ContractClassManagerConfig; + use crate::execution::contract_class::RunnableCompiledClass; + use crate::state::global_cache::{CachedClass, RawClassCache}; + + pub type ContractClassManager = RawClassCache; + + // Trivial implementation of the class manager for Native-less projects. + impl ContractClassManager { + pub fn start(config: ContractClassManagerConfig) -> Self { + assert!( + !config.cairo_native_run_config.run_cairo_native, + "Cairo Native feature is off." + ); + Self::new(config.contract_cache_size) } - } - /// Sends a compilation request. Two cases: - /// 1. If `config.wait_on_native_compilation` is `false`, sends the request to the compilation - /// worker. Does not block the sender. Logs an error if the channel is full. - /// 2. Otherwise, processes the request synchronously, blocking the sender until the request is - /// processed. - #[cfg(feature = "cairo_native")] - pub fn send_compilation_request(&self, request: CompilationRequest) { - assert!(self.run_cairo_native(), "Native compilation is disabled."); - if self.wait_on_native_compilation() { - // Compilation requests are processed synchronously. No need to go through the channel. - let compiler = self.compiler.as_ref().expect("Compiler not available."); - process_compilation_request(self.contract_caches.clone(), compiler.clone(), request); - return; + pub fn get_runnable(&self, class_hash: &ClassHash) -> Option { + Some(self.get(class_hash)?.to_runnable()) } - let sender = self.sender.as_ref().expect("Compilation channel not available."); - // TODO(Avi, 15/12/2024): Check for duplicated requests. - sender.try_send(request).unwrap_or_else(|err| match err { - TrySendError::Full((class_hash, _, _)) => { - log::error!( - "Compilation request channel is full (size: {}). Compilation request for \ - class hash {} was not sent.", - self.cairo_native_run_config.channel_size, - class_hash - ) - } - TrySendError::Disconnected(_) => { - panic!("Compilation request channel is closed.") - } - }); - } - - /// Returns the native compiled class for the given class hash, if it exists in cache. - #[cfg(feature = "cairo_native")] - pub fn get_native(&self, class_hash: &ClassHash) -> Option { - self.contract_caches.get_native(class_hash) - } - - /// Returns the casm compiled class for the given class hash, if it exists in cache. - pub fn get_casm(&self, class_hash: &ClassHash) -> Option { - self.contract_caches.get_casm(class_hash) - } - - /// Sets the casm compiled class for the given class hash in the cache. - pub fn set_casm(&self, class_hash: ClassHash, compiled_class: CachedCasm) { - self.contract_caches.set_casm(class_hash, compiled_class); - } - - #[cfg(all(feature = "cairo_native", feature = "testing"))] - pub fn set_native(&self, class_hash: ClassHash, compiled_class: NativeCompiledClassV1) { - self.contract_caches.set_native(class_hash, CachedCairoNative::Compiled(compiled_class)); - } - - #[cfg(feature = "cairo_native")] - pub fn run_cairo_native(&self) -> bool { - self.cairo_native_run_config.run_cairo_native - } - - #[cfg(feature = "cairo_native")] - pub fn wait_on_native_compilation(&self) -> bool { - self.cairo_native_run_config.wait_on_native_compilation - } - - /// Clear the contract caches. - pub fn clear(&mut self) { - self.contract_caches.clear(); - } - - #[cfg(any(feature = "testing", test))] - pub fn get_casm_cache_size(&self) -> usize { - self.contract_caches.casm_cache.lock().cache_size() - } -} - -/// Handles compilation requests from the channel, holding the receiver end of the channel. -/// If no request is available, non-busy-waits until a request is available. -/// When the sender is dropped, the worker processes all pending requests and terminates. -#[cfg(feature = "cairo_native")] -fn run_compilation_worker( - contract_caches: ContractCaches, - receiver: Receiver, - compiler: Arc, -) { - log::info!("Compilation worker started."); - for compilation_request in receiver.iter() { - process_compilation_request(contract_caches.clone(), compiler.clone(), compilation_request); - } - log::info!("Compilation worker terminated."); -} - -/// Processes a compilation request and caches the compiled class in the contract caches. -#[cfg(feature = "cairo_native")] -fn process_compilation_request( - contract_caches: ContractCaches, - compiler: Arc, - compilation_request: CompilationRequest, -) { - let (class_hash, sierra, casm) = compilation_request; - if contract_caches.get_native(&class_hash).is_some() { - // The contract class is already compiled to native - skip the compilation. - return; - } - let sierra_for_compilation = into_contract_class_for_compilation(sierra.as_ref()); - let compilation_result = compiler.compile_to_native(sierra_for_compilation); - match compilation_result { - Ok(executor) => { - let native_compiled_class = NativeCompiledClassV1::new(executor.into(), casm); - contract_caches - .set_native(class_hash, CachedCairoNative::Compiled(native_compiled_class)); + pub fn set_and_compile(&self, class_hash: ClassHash, compiled_class: CachedClass) { + self.set(class_hash, compiled_class); } - Err(err) => { - log::error!("Error compiling contract class: {}", err); - contract_caches.set_native(class_hash, CachedCairoNative::CompilationFailed); + + #[cfg(any(feature = "testing", test))] + pub fn get_cache_size(&self) -> usize { + self.lock().cache_size() } } } + +#[cfg(not(feature = "cairo_native"))] +pub use trivial_class_manager::ContractClassManager; diff --git a/crates/blockifier/src/state/global_cache.rs b/crates/blockifier/src/state/global_cache.rs index dd5c5f8a64b..fdbf4000b28 100644 --- a/crates/blockifier/src/state/global_cache.rs +++ b/crates/blockifier/src/state/global_cache.rs @@ -4,7 +4,7 @@ use cached::{Cached, SizedCache}; use starknet_api::core::ClassHash; use starknet_api::state::SierraContractClass; -use crate::execution::contract_class::RunnableCompiledClass; +use crate::execution::contract_class::{CompiledClassV0, CompiledClassV1, RunnableCompiledClass}; #[cfg(feature = "cairo_native")] use crate::execution::native::contract_class::NativeCompiledClassV1; @@ -17,26 +17,45 @@ pub type LockedClassCache<'a, T> = MutexGuard<'a, ContractLRUCache>; pub struct GlobalContractCache(pub Arc>>); #[derive(Debug, Clone)] -pub enum CachedCasm { - WithoutSierra(RunnableCompiledClass), - WithSierra(RunnableCompiledClass, Arc), +pub enum CachedClass { + V0(CompiledClassV0), + V1(CompiledClassV1, Arc), + #[cfg(feature = "cairo_native")] + V1Native(CachedCairoNative), } -impl CachedCasm { - pub fn to_runnable_casm(&self) -> RunnableCompiledClass { +impl CachedClass { + pub fn to_runnable(&self) -> RunnableCompiledClass { match self { - CachedCasm::WithoutSierra(casm) | CachedCasm::WithSierra(casm, _) => casm.clone(), + CachedClass::V0(compiled_class_v0) => { + RunnableCompiledClass::V0(compiled_class_v0.clone()) + } + CachedClass::V1(compiled_class_v1, _sierra_contract_class) => { + RunnableCompiledClass::V1(compiled_class_v1.clone()) + } + #[cfg(feature = "cairo_native")] + CachedClass::V1Native(cached_cairo_native) => match cached_cairo_native { + CachedCairoNative::Compiled(native_compiled_class_v1) => { + RunnableCompiledClass::V1Native(native_compiled_class_v1.clone()) + } + CachedCairoNative::CompilationFailed(compiled_class_v1) => { + RunnableCompiledClass::V1(compiled_class_v1.clone()) + } + }, } } } +pub type RawClassCache = GlobalContractCache; + #[cfg(feature = "cairo_native")] #[derive(Debug, Clone)] +#[cfg_attr(test, derive(PartialEq))] pub enum CachedCairoNative { Compiled(NativeCompiledClassV1), - CompilationFailed, + CompilationFailed(CompiledClassV1), } -pub const GLOBAL_CONTRACT_CACHE_SIZE_FOR_TEST: usize = 400; +pub const GLOBAL_CONTRACT_CACHE_SIZE_FOR_TEST: usize = 600; impl GlobalContractCache { /// Locks the cache for atomic access. Although conceptually shared, writing to this cache is @@ -61,44 +80,3 @@ impl GlobalContractCache { Self(Arc::new(Mutex::new(ContractLRUCache::::with_size(cache_size)))) } } - -#[derive(Clone)] -pub struct ContractCaches { - pub casm_cache: GlobalContractCache, - #[cfg(feature = "cairo_native")] - pub native_cache: GlobalContractCache, -} - -impl ContractCaches { - pub fn get_casm(&self, class_hash: &ClassHash) -> Option { - self.casm_cache.get(class_hash) - } - - pub fn set_casm(&self, class_hash: ClassHash, compiled_class: CachedCasm) { - self.casm_cache.set(class_hash, compiled_class); - } - - #[cfg(feature = "cairo_native")] - pub fn get_native(&self, class_hash: &ClassHash) -> Option { - self.native_cache.get(class_hash) - } - - #[cfg(feature = "cairo_native")] - pub fn set_native(&self, class_hash: ClassHash, contract_executor: CachedCairoNative) { - self.native_cache.set(class_hash, contract_executor); - } - - pub fn new(cache_size: usize) -> Self { - Self { - casm_cache: GlobalContractCache::new(cache_size), - #[cfg(feature = "cairo_native")] - native_cache: GlobalContractCache::new(cache_size), - } - } - - pub fn clear(&mut self) { - self.casm_cache.clear(); - #[cfg(feature = "cairo_native")] - self.native_cache.clear(); - } -} diff --git a/crates/blockifier/src/state/native_class_manager.rs b/crates/blockifier/src/state/native_class_manager.rs new file mode 100644 index 00000000000..0621291be1e --- /dev/null +++ b/crates/blockifier/src/state/native_class_manager.rs @@ -0,0 +1,271 @@ +use std::sync::mpsc::{sync_channel, Receiver, SyncSender, TrySendError}; +use std::sync::Arc; + +#[cfg(any(feature = "testing", test))] +use cached::Cached; +use log; +use starknet_api::core::ClassHash; +use starknet_api::state::SierraContractClass; +use starknet_sierra_multicompile::command_line_compiler::CommandLineCompiler; +use starknet_sierra_multicompile::errors::CompilationUtilError; +use starknet_sierra_multicompile::utils::into_contract_class_for_compilation; +use starknet_sierra_multicompile::SierraToNativeCompiler; +use thiserror::Error; + +use crate::blockifier::config::{ + CairoNativeRunConfig, + ContractClassManagerConfig, + NativeClassesWhitelist, +}; +use crate::execution::contract_class::{CompiledClassV1, RunnableCompiledClass}; +use crate::execution::native::contract_class::NativeCompiledClassV1; +use crate::state::global_cache::{CachedCairoNative, CachedClass, RawClassCache}; + +#[cfg(test)] +#[path = "native_class_manager_test.rs"] +mod native_class_manager_test; + +#[derive(Clone, Debug, Error, PartialEq, Eq)] +pub enum ContractClassManagerError { + #[error("Error compiling contract class: {0}")] + CompilationError(CompilationUtilError), + #[error("Error when sending request: {0}")] + TrySendError(TrySendError), +} + +/// Represents a request to compile a sierra contract class to a native compiled class. +/// +/// # Fields: +/// * `class_hash` - used to identify the contract class in the cache. +/// * `sierra_contract_class` - the sierra contract class to be compiled. +/// * `casm_compiled_class` - stored in [`NativeCompiledClassV1`] to allow fallback to cairo_vm +/// execution in case of unexpected failure during native execution. +type CompilationRequest = (ClassHash, Arc, CompiledClassV1); + +/// Manages the global cache of contract classes and handles sierra-to-native compilation requests. +#[derive(Clone)] +pub struct NativeClassManager { + cairo_native_run_config: CairoNativeRunConfig, + /// The global cache of raw contract classes. + cache: RawClassCache, + /// The sending half of the compilation request channel. Set to `None` if native compilation is + /// disabled. + sender: Option>, + /// The sierra-to-native compiler. + compiler: Option>, +} + +impl NativeClassManager { + /// Creates a new contract class manager and spawns a thread that listens for compilation + /// requests and processes them (a.k.a. the compilation worker). + /// Returns the contract class manager. + /// NOTE: the compilation worker is not spawned if one of the following conditions is met: + /// 1. The feature `cairo_native` is not enabled. + /// 2. `config.run_cairo_native` is `false`. + /// 3. `config.wait_on_native_compilation` is `true`. + pub fn start(config: ContractClassManagerConfig) -> NativeClassManager { + // TODO(Avi, 15/12/2024): Add the size of the channel to the config. + let cache = RawClassCache::new(config.contract_cache_size); + let cairo_native_run_config = config.cairo_native_run_config; + if !cairo_native_run_config.run_cairo_native { + // Native compilation is disabled - no need to start the compilation worker. + return NativeClassManager { + cairo_native_run_config, + cache, + sender: None, + compiler: None, + }; + } + + let compiler_config = config.native_compiler_config.clone(); + let compiler = Arc::new(CommandLineCompiler::new(compiler_config)); + if cairo_native_run_config.wait_on_native_compilation { + // Compilation requests are processed synchronously. No need to start the worker. + return NativeClassManager { + cairo_native_run_config, + cache, + sender: None, + compiler: Some(compiler), + }; + } + + let (sender, receiver) = sync_channel(cairo_native_run_config.channel_size); + + std::thread::spawn({ + let cache = cache.clone(); + move || run_compilation_worker(cache, receiver, compiler) + }); + + NativeClassManager { cairo_native_run_config, cache, sender: Some(sender), compiler: None } + } + + /// Returns the runnable compiled class for the given class hash, if it exists in cache. + pub fn get_runnable(&self, class_hash: &ClassHash) -> Option { + let cached_class = self.cache.get(class_hash)?; + + let cached_class = match cached_class { + CachedClass::V1(_, _) => { + // TODO(Yoni): make sure `wait_on_native_compilation` cannot be set to true while + // `run_cairo_native` is false. + assert!( + !self.wait_on_native_compilation(), + "Manager did not wait on native compilation." + ); + cached_class + } + CachedClass::V1Native(CachedCairoNative::Compiled(native)) + if !self.run_class_with_cairo_native(class_hash) => + { + CachedClass::V1(native.casm(), Arc::new(SierraContractClass::default())) + } + _ => cached_class, + }; + + Some(cached_class.to_runnable()) + } + + /// Caches the compiled class. + /// For Cairo 1 classes: + /// * if Native mode is enabled, triggers compilation to Native that will eventually be cached. + /// * If `wait_on_native_compilation` is true, caches the Native variant immediately. + pub fn set_and_compile(&self, class_hash: ClassHash, compiled_class: CachedClass) { + match compiled_class { + CachedClass::V0(_) => self.cache.set(class_hash, compiled_class), + CachedClass::V1(compiled_class_v1, sierra_contract_class) => { + // TODO(Yoni): instead of these two flag, use an enum. + if self.wait_on_native_compilation() { + assert!(self.run_cairo_native(), "Native compilation is disabled."); + let compiler = self.compiler.as_ref().expect("Compiler not available."); + // After this point, the Native class should be cached and available through + // `get_runnable` access. + // Ignore compilation errors for now. + process_compilation_request( + self.cache.clone(), + compiler.clone(), + (class_hash, sierra_contract_class, compiled_class_v1), + ) + .unwrap_or(()); + return; + } + + // Cache the V1 class. + self.cache.set( + class_hash, + CachedClass::V1(compiled_class_v1.clone(), sierra_contract_class.clone()), + ); + if self.run_cairo_native() { + // Send a non-blocking compilation request. + // Ignore compilation errors for now. + self.send_compilation_request(( + class_hash, + sierra_contract_class, + compiled_class_v1, + )) + .unwrap_or(()); + } + } + // TODO(Yoni): consider panic since this flow should not be reachable. + CachedClass::V1Native(_) => self.cache.set(class_hash, compiled_class), + } + } + + /// Sends a compilation request to the compilation worker. Does not block the sender. Logs an + /// error if the channel is full. + fn send_compilation_request( + &self, + request: CompilationRequest, + ) -> Result<(), ContractClassManagerError> { + let sender = self.sender.as_ref().expect("Compilation channel not available."); + // TODO(Avi, 15/12/2024): Check for duplicated requests. + sender.try_send(request).map_err(|err| match err { + TrySendError::Full((class_hash, _, _)) => { + log::debug!( + "Compilation request channel is full (size: {}). Compilation request for \ + class hash {} was not sent.", + self.cairo_native_run_config.channel_size, + class_hash + ); + ContractClassManagerError::TrySendError(TrySendError::Full(class_hash)) + } + TrySendError::Disconnected(_) => { + panic!("Compilation request channel is closed.") + } + }) + } + + fn run_cairo_native(&self) -> bool { + self.cairo_native_run_config.run_cairo_native + } + + fn wait_on_native_compilation(&self) -> bool { + self.cairo_native_run_config.wait_on_native_compilation + } + + /// Determines if a contract should run with cairo native based on the whitelist. + pub fn run_class_with_cairo_native(&self, class_hash: &ClassHash) -> bool { + match &self.cairo_native_run_config.native_classes_whitelist { + NativeClassesWhitelist::All => true, + NativeClassesWhitelist::Limited(contracts) => contracts.contains(class_hash), + } + } + + /// Clears the contract cache. + pub fn clear(&mut self) { + self.cache.clear(); + } + + #[cfg(any(feature = "testing", test))] + pub fn get_cache_size(&self) -> usize { + self.cache.lock().cache_size() + } +} + +/// Handles compilation requests from the channel, holding the receiver end of the channel. +/// If no request is available, non-busy-waits until a request is available. +/// When the sender is dropped, the worker processes all pending requests and terminates. +fn run_compilation_worker( + cache: RawClassCache, + receiver: Receiver, + compiler: Arc, +) { + log::info!("Compilation worker started."); + for compilation_request in receiver.iter() { + process_compilation_request(cache.clone(), compiler.clone(), compilation_request) + .unwrap_or(()); + } + log::info!("Compilation worker terminated."); +} + +/// Processes a compilation request and caches the result. +fn process_compilation_request( + cache: RawClassCache, + compiler: Arc, + compilation_request: CompilationRequest, +) -> Result<(), CompilationUtilError> { + let (class_hash, sierra, casm) = compilation_request; + if let Some(CachedClass::V1Native(_)) = cache.get(&class_hash) { + // The contract class is already compiled to native - skip the compilation. + return Ok(()); + } + let sierra_for_compilation = into_contract_class_for_compilation(sierra.as_ref()); + let compilation_result = compiler.compile_to_native(sierra_for_compilation); + match compilation_result { + Ok(executor) => { + let native_compiled_class = NativeCompiledClassV1::new(executor.into(), casm); + cache.set( + class_hash, + CachedClass::V1Native(CachedCairoNative::Compiled(native_compiled_class)), + ); + Ok(()) + } + Err(err) => { + cache + .set(class_hash, CachedClass::V1Native(CachedCairoNative::CompilationFailed(casm))); + log::debug!("Error compiling contract class: {}", err); + if compiler.panic_on_compilation_failure() { + panic!("Compilation failed: {}", err); + } + Err(err) + } + } +} diff --git a/crates/blockifier/src/state/native_class_manager_test.rs b/crates/blockifier/src/state/native_class_manager_test.rs new file mode 100644 index 00000000000..75930f9d7a6 --- /dev/null +++ b/crates/blockifier/src/state/native_class_manager_test.rs @@ -0,0 +1,266 @@ +use std::sync::mpsc::{sync_channel, TrySendError}; +use std::sync::Arc; +use std::thread::sleep; + +use assert_matches::assert_matches; +use rstest::rstest; +use starknet_api::core::ClassHash; +use starknet_sierra_multicompile::config::DEFAULT_MAX_CPU_TIME; +use starknet_sierra_multicompile::errors::CompilationUtilError; + +use crate::blockifier::config::{CairoNativeRunConfig, NativeClassesWhitelist}; +use crate::execution::contract_class::{CompiledClassV1, RunnableCompiledClass}; +use crate::state::global_cache::{ + CachedCairoNative, + CachedClass, + RawClassCache, + GLOBAL_CONTRACT_CACHE_SIZE_FOR_TEST, +}; +use crate::state::native_class_manager::{ + process_compilation_request, + CompilationRequest, + ContractClassManagerError, + NativeClassManager, +}; +use crate::test_utils::contracts::FeatureContract; +use crate::test_utils::{CairoVersion, RunnableCairo1}; + +const TEST_CHANNEL_SIZE: usize = 10; + +fn get_casm(test_contract: FeatureContract) -> CompiledClassV1 { + match test_contract.get_runnable_class() { + RunnableCompiledClass::V1(casm) => casm, + _ => panic!("Expected CompiledClassV1"), + } +} + +fn create_test_request_from_contract(test_contract: FeatureContract) -> CompilationRequest { + let class_hash = test_contract.get_class_hash(); + let sierra = Arc::new(test_contract.get_sierra()); + let casm = get_casm(test_contract); + + (class_hash, sierra, casm) +} + +fn get_test_contract_class_hash() -> ClassHash { + FeatureContract::TestContract(CairoVersion::Cairo1(RunnableCairo1::Casm)).get_class_hash() +} + +fn create_test_request() -> CompilationRequest { + let test_contract = FeatureContract::TestContract(CairoVersion::Cairo1(RunnableCairo1::Casm)); + create_test_request_from_contract(test_contract) +} + +fn create_faulty_request() -> CompilationRequest { + let (class_hash, sierra, casm) = create_test_request(); + let mut sierra = sierra.as_ref().clone(); + + // Truncate the sierra program to trigger an error. + sierra.sierra_program = sierra.sierra_program[..100].to_vec(); + (class_hash, Arc::new(sierra), casm) +} + +#[rstest] +#[case::run_native_while_waiting(true, true)] +#[case::run_native_without_waiting(true, false)] +#[case::run_without_native(false, false)] +fn test_start(#[case] run_cairo_native: bool, #[case] wait_on_native_compilation: bool) { + let native_config = + CairoNativeRunConfig { run_cairo_native, wait_on_native_compilation, ..Default::default() }; + let manager = NativeClassManager::create_for_testing(native_config.clone()); + + assert_eq!(manager.cairo_native_run_config.clone(), native_config); + if run_cairo_native { + if wait_on_native_compilation { + assert!( + manager.sender.is_none(), + "Sender should be None - the compilation worker is not used." + ); + assert!( + manager.compiler.is_some(), + "Compiler should be Some - compilation is not offloaded to the compilation worker." + ); + } else { + assert!( + manager.sender.is_some(), + "Sender should be Some - the compilation worker is used." + ); + assert!( + manager.compiler.is_none(), + "Compiler should be None - compilation is offloaded to the compilation worker." + ); + } + } else { + assert!(manager.sender.is_none(), "Sender should be None- Cairo native is disabled."); + assert!(manager.compiler.is_none(), "Compiler should be None - Cairo native is disabled."); + } +} + +#[rstest] +#[case::run_native_while_waiting(true, true)] +#[case::run_native_without_waiting(true, false)] +#[should_panic(expected = "Native compilation is disabled.")] +#[case::run_without_native(false, true)] +#[case::run_without_native(false, false)] +fn test_set_and_compile( + #[case] run_cairo_native: bool, + #[case] wait_on_native_compilation: bool, + #[values(true, false)] should_pass: bool, +) { + let native_config = + CairoNativeRunConfig { run_cairo_native, wait_on_native_compilation, ..Default::default() }; + let manager = NativeClassManager::create_for_testing(native_config); + let request = if should_pass { create_test_request() } else { create_faulty_request() }; + let class_hash = request.0; + let (_class_hash, sierra, casm) = request.clone(); + let cached_class = CachedClass::V1(casm, sierra); + + manager.set_and_compile(class_hash, cached_class); + if !run_cairo_native { + assert_matches!(manager.cache.get(&class_hash).unwrap(), CachedClass::V1(_, _)); + return; + } + + if !wait_on_native_compilation { + assert_matches!(manager.cache.get(&class_hash).unwrap(), CachedClass::V1(_, _)); + let seconds_to_sleep = 2; + let max_n_retries = DEFAULT_MAX_CPU_TIME / seconds_to_sleep + 1; + for _ in 0..max_n_retries { + sleep(std::time::Duration::from_secs(seconds_to_sleep)); + if matches!(manager.cache.get(&class_hash), Some(CachedClass::V1Native(_))) { + break; + } + } + } + + match manager.cache.get(&class_hash).unwrap() { + CachedClass::V1Native(CachedCairoNative::Compiled(_)) => { + assert!(should_pass, "Compilation should have passed."); + } + CachedClass::V1Native(CachedCairoNative::CompilationFailed(_)) => { + assert!(!should_pass, "Compilation should have failed."); + } + CachedClass::V1(_, _) | CachedClass::V0(_) => { + panic!("Unexpected cached class."); + } + } +} + +#[test] +#[should_panic(expected = "Compilation request channel is closed.")] +fn test_send_compilation_request_channel_disconnected() { + // We use the channel to send native compilation requests. + let native_config = CairoNativeRunConfig { + run_cairo_native: true, + wait_on_native_compilation: false, + channel_size: TEST_CHANNEL_SIZE, + ..CairoNativeRunConfig::default() + }; + let (sender, receiver) = sync_channel(native_config.channel_size); + let manager = NativeClassManager { + cairo_native_run_config: native_config, + cache: RawClassCache::new(GLOBAL_CONTRACT_CACHE_SIZE_FOR_TEST), + sender: Some(sender), + compiler: None, + }; + // Disconnect the channel by dropping the receiver. + drop(receiver); + + // Sending request with a disconnected channel should panic. + let request = create_test_request(); + manager.send_compilation_request(request).unwrap(); +} + +#[test] +fn test_send_compilation_request_channel_full() { + let native_config = CairoNativeRunConfig { + run_cairo_native: true, + wait_on_native_compilation: false, + channel_size: 0, + ..CairoNativeRunConfig::default() + }; + let manager = NativeClassManager::create_for_testing(native_config); + let request = create_test_request(); + assert!(manager.sender.is_some(), "Sender should be Some"); + + // Fill the channel (it can only hold 1 message). + manager.send_compilation_request(request.clone()).unwrap(); + let result = manager.send_compilation_request(request.clone()); + assert_eq!( + result.unwrap_err(), + ContractClassManagerError::TrySendError(TrySendError::Full(request.0)) + ); +} + +#[rstest] +#[case::success(create_test_request(), true)] +#[case::failure(create_faulty_request(), false)] +fn test_process_compilation_request( + #[case] request: CompilationRequest, + #[case] should_pass: bool, +) { + let manager = NativeClassManager::create_for_testing(CairoNativeRunConfig { + wait_on_native_compilation: true, + run_cairo_native: true, + channel_size: TEST_CHANNEL_SIZE, + ..CairoNativeRunConfig::default() + }); + let res = process_compilation_request( + manager.clone().cache, + manager.clone().compiler.unwrap(), + request.clone(), + ); + + if should_pass { + assert!( + res.is_ok(), + "Compilation request failed with the following error: {}.", + res.unwrap_err() + ); + assert_matches!( + manager.cache.get(&request.0).unwrap(), + CachedClass::V1Native(CachedCairoNative::Compiled(_)) + ); + } else { + assert_matches!(res.unwrap_err(), CompilationUtilError::CompilationError(_)); + assert_matches!( + manager.cache.get(&request.0).unwrap(), + CachedClass::V1Native(CachedCairoNative::CompilationFailed(_)) + ); + } +} + +#[rstest] +#[case::all_classes(NativeClassesWhitelist::All, true)] +#[case::only_selected_class_hash(NativeClassesWhitelist::Limited(vec![get_test_contract_class_hash()]), true)] +#[case::no_allowed_classes(NativeClassesWhitelist::Limited(vec![]), false)] +// Test the config that allows us to run only limited selection of class hashes in native. +fn test_native_classes_whitelist( + #[case] whitelist: NativeClassesWhitelist, + #[case] allow_run_native: bool, +) { + let native_config = CairoNativeRunConfig { + run_cairo_native: true, + wait_on_native_compilation: true, + channel_size: TEST_CHANNEL_SIZE, + native_classes_whitelist: whitelist, + }; + let manager = NativeClassManager::create_for_testing(native_config); + + let (class_hash, sierra, casm) = create_test_request(); + + manager.set_and_compile(class_hash, CachedClass::V1(casm, sierra)); + + match allow_run_native { + true => assert_matches!( + manager.get_runnable(&class_hash), + Some(RunnableCompiledClass::V1Native(_)) + ), + false => { + assert_matches!( + manager.get_runnable(&class_hash).unwrap(), + RunnableCompiledClass::V1(_) + ) + } + } +} diff --git a/crates/blockifier/src/test_utils.rs b/crates/blockifier/src/test_utils.rs index 5d2e4a49eb0..55f72df7780 100644 --- a/crates/blockifier/src/test_utils.rs +++ b/crates/blockifier/src/test_utils.rs @@ -6,6 +6,7 @@ pub mod l1_handler; pub mod prices; pub mod struct_impls; pub mod syscall; +#[cfg(test)] pub mod test_templates; pub mod transfers_generator; use std::collections::HashMap; @@ -47,8 +48,8 @@ use strum_macros::EnumCount as EnumCountMacro; use crate::abi::constants; use crate::execution::call_info::ExecutionSummary; use crate::execution::contract_class::TrackedResource; -use crate::execution::deprecated_syscalls::hint_processor::SyscallCounter; use crate::execution::entry_point::CallEntryPoint; +use crate::execution::syscalls::hint_processor::{SyscallUsage, SyscallUsageMap}; use crate::execution::syscalls::SyscallSelector; use crate::fee::resources::{StarknetResources, StateResources}; use crate::test_utils::contracts::FeatureContract; @@ -351,10 +352,12 @@ macro_rules! check_tx_execution_error_for_invalid_scenario { }; } -pub fn get_syscall_resources(syscall_selector: SyscallSelector) -> ExecutionResources { +/// Returns the const syscall resources for the given syscall selector. +pub fn get_const_syscall_resources(syscall_selector: SyscallSelector) -> ExecutionResources { let versioned_constants = VersionedConstants::create_for_testing(); - let syscall_counter: SyscallCounter = HashMap::from([(syscall_selector, 1)]); - versioned_constants.get_additional_os_syscall_resources(&syscall_counter) + let syscalls_usage: SyscallUsageMap = + HashMap::from([(syscall_selector, SyscallUsage::new(1, 0))]); + versioned_constants.get_additional_os_syscall_resources(&syscalls_usage) } pub fn get_tx_resources(tx_type: TransactionType) -> ExecutionResources { diff --git a/crates/blockifier/src/test_utils/contracts.rs b/crates/blockifier/src/test_utils/contracts.rs index 6bec15ea0f1..fccabab658a 100644 --- a/crates/blockifier/src/test_utils/contracts.rs +++ b/crates/blockifier/src/test_utils/contracts.rs @@ -18,7 +18,7 @@ use strum::IntoEnumIterator; use strum_macros::EnumIter; use crate::execution::contract_class::RunnableCompiledClass; -use crate::execution::entry_point::CallEntryPoint; +use crate::execution::entry_point::EntryPointTypeAndSelector; #[cfg(feature = "cairo_native")] use crate::execution::native::contract_class::NativeCompiledClassV1; use crate::test_utils::cairo_compile::{cairo0_compile, cairo1_compile, CompilationArtifacts}; @@ -158,10 +158,14 @@ impl FeatureContract { } } + /// Returns the address of the instance with the given instance ID. + pub fn instance_address(integer_base: u32, instance_id: u32) -> ContractAddress { + contract_address!(integer_base + instance_id + ADDRESS_BIT) + } + /// Returns the address of the instance with the given instance ID. pub fn get_instance_address(&self, instance_id: u16) -> ContractAddress { - let instance_id_as_u32: u32 = instance_id.into(); - contract_address!(self.get_integer_base() + instance_id_as_u32 + ADDRESS_BIT) + Self::instance_address(self.get_integer_base(), instance_id.into()) } pub fn get_class(&self) -> ContractClass { @@ -393,10 +397,9 @@ impl FeatureContract { RunnableCompiledClass::V1(class) => { class .entry_points_by_type - .get_entry_point(&CallEntryPoint { + .get_entry_point(&EntryPointTypeAndSelector { entry_point_type, entry_point_selector, - ..Default::default() }) .unwrap() .offset @@ -491,3 +494,37 @@ impl FeatureContract { .into_group_map() } } + +/// The information needed to test a [FeatureContract]. +pub struct FeatureContractData { + pub class_hash: ClassHash, + pub runnable_class: RunnableCompiledClass, + pub require_funding: bool, + integer_base: u32, +} +impl FeatureContractData { + pub fn get_instance_address(&self, instance: u16) -> ContractAddress { + // If a test requires overriding the contract address, replace storing `integer_base` in the + // struct with storing a callback function that computes the address. + // A test will then be able to override the callback function to return the desired address. + FeatureContract::instance_address(self.integer_base, instance.into()) + } +} + +impl From for FeatureContractData { + fn from(contract: FeatureContract) -> Self { + let require_funding = matches!( + contract, + FeatureContract::AccountWithLongValidate(_) + | FeatureContract::AccountWithoutValidations(_) + | FeatureContract::FaultyAccount(_) + ); + + Self { + class_hash: contract.get_class_hash(), + runnable_class: contract.get_runnable_class(), + require_funding, + integer_base: contract.get_integer_base(), + } + } +} diff --git a/crates/blockifier/src/test_utils/initial_test_state.rs b/crates/blockifier/src/test_utils/initial_test_state.rs index 0beeb1a36d5..e45860900a3 100644 --- a/crates/blockifier/src/test_utils/initial_test_state.rs +++ b/crates/blockifier/src/test_utils/initial_test_state.rs @@ -9,7 +9,7 @@ use strum::IntoEnumIterator; use crate::context::ChainInfo; use crate::state::cached_state::CachedState; -use crate::test_utils::contracts::FeatureContract; +use crate::test_utils::contracts::{FeatureContract, FeatureContractData}; use crate::test_utils::dict_state_reader::DictStateReader; use crate::test_utils::CairoVersion; @@ -41,7 +41,7 @@ pub fn fund_account( pub fn test_state_inner( chain_info: &ChainInfo, initial_balances: Fee, - contract_instances: &[(FeatureContract, u16)], + contract_instances: &[(FeatureContractData, u16)], erc20_contract_version: CairoVersion, ) -> CachedState { let mut class_hash_to_class = HashMap::new(); @@ -57,8 +57,8 @@ pub fn test_state_inner( // Set up the rest of the requested contracts. for (contract, n_instances) in contract_instances.iter() { - let class_hash = contract.get_class_hash(); - class_hash_to_class.insert(class_hash, contract.get_runnable_class()); + let class_hash = contract.class_hash; + class_hash_to_class.insert(class_hash, contract.runnable_class.clone()); for instance in 0..*n_instances { let instance_address = contract.get_instance_address(instance); address_to_class_hash.insert(instance_address, class_hash); @@ -72,13 +72,8 @@ pub fn test_state_inner( for (contract, n_instances) in contract_instances.iter() { for instance in 0..*n_instances { let instance_address = contract.get_instance_address(instance); - match contract { - FeatureContract::AccountWithLongValidate(_) - | FeatureContract::AccountWithoutValidations(_) - | FeatureContract::FaultyAccount(_) => { - fund_account(chain_info, instance_address, initial_balances, &mut state_reader); - } - _ => (), + if contract.require_funding { + fund_account(chain_info, instance_address, initial_balances, &mut state_reader); } } } @@ -90,6 +85,18 @@ pub fn test_state( chain_info: &ChainInfo, initial_balances: Fee, contract_instances: &[(FeatureContract, u16)], +) -> CachedState { + let contract_instances_vec: Vec<(FeatureContractData, u16)> = contract_instances + .iter() + .map(|(feature_contract, i)| ((*feature_contract).into(), *i)) + .collect(); + test_state_ex(chain_info, initial_balances, &contract_instances_vec[..]) +} + +pub fn test_state_ex( + chain_info: &ChainInfo, + initial_balances: Fee, + contract_instances: &[(FeatureContractData, u16)], ) -> CachedState { test_state_inner(chain_info, initial_balances, contract_instances, CairoVersion::Cairo0) } diff --git a/crates/blockifier/src/test_utils/struct_impls.rs b/crates/blockifier/src/test_utils/struct_impls.rs index 143e28b4ffc..0be977a463c 100644 --- a/crates/blockifier/src/test_utils/struct_impls.rs +++ b/crates/blockifier/src/test_utils/struct_impls.rs @@ -6,8 +6,6 @@ use std::sync::{LazyLock, RwLock}; use cairo_lang_starknet_classes::casm_contract_class::CasmContractClass; #[cfg(feature = "cairo_native")] -use cairo_lang_starknet_classes::contract_class::version_id_from_serialized_sierra_program; -#[cfg(feature = "cairo_native")] use cairo_lang_starknet_classes::contract_class::ContractClass as SierraContractClass; #[cfg(feature = "cairo_native")] use cairo_native::executor::AotContractExecutor; @@ -21,7 +19,8 @@ use starknet_api::deprecated_contract_class::ContractClass as DeprecatedContract use starknet_api::execution_resources::GasAmount; use starknet_api::test_utils::{TEST_ERC20_CONTRACT_ADDRESS, TEST_ERC20_CONTRACT_ADDRESS2}; -use crate::bouncer::{BouncerConfig, BouncerWeights, BuiltinCount}; +use crate::blockifier::config::{CairoNativeRunConfig, ContractClassManagerConfig}; +use crate::bouncer::{BouncerConfig, BouncerWeights}; use crate::context::{BlockContext, ChainInfo, FeeTokenAddresses, TransactionContext}; use crate::execution::call_info::{CallExecution, CallInfo, Retdata}; use crate::execution::common_hints::ExecutionMode; @@ -35,6 +34,7 @@ use crate::execution::entry_point::{ }; #[cfg(feature = "cairo_native")] use crate::execution::native::contract_class::NativeCompiledClassV1; +use crate::state::contract_class_manager::ContractClassManager; use crate::state::state_api::State; use crate::test_utils::{get_raw_contract_class, update_json_value}; use crate::transaction::objects::{ @@ -63,6 +63,28 @@ impl CallEntryPoint { ) } + pub fn execute_directly_given_block_context( + self, + state: &mut dyn State, + block_context: BlockContext, + ) -> EntryPointExecutionResult { + // Do not limit steps by resources as we use default resources. + let limit_steps_by_resources = false; + let tx_context = TransactionContext { + block_context, + tx_info: TransactionInfo::Current(CurrentTransactionInfo::create_for_testing()), + }; + + let mut context = EntryPointExecutionContext::new( + Arc::new(tx_context), + ExecutionMode::Execute, + limit_steps_by_resources, + SierraGasRevertTracker::new(GasAmount(self.initial_gas)), + ); + let mut remaining_gas = self.initial_gas; + self.execute(state, &mut context, &mut remaining_gas) + } + pub fn execute_directly_given_tx_info( self, state: &mut dyn State, @@ -184,6 +206,15 @@ impl CallExecution { } } +impl ContractClassManager { + pub fn create_for_testing(native_config: CairoNativeRunConfig) -> Self { + let config = ContractClassManagerConfig { + cairo_native_run_config: native_config, + ..Default::default() + }; + ContractClassManager::start(config) + } +} // Contract loaders. // TODO(Noa): Consider using PathBuf. @@ -197,12 +228,6 @@ pub trait LoadContractFromFile: serde::de::DeserializeOwned { impl LoadContractFromFile for CasmContractClass {} impl LoadContractFromFile for DeprecatedContractClass {} -impl BouncerWeights { - pub fn create_for_testing(builtin_count: BuiltinCount) -> Self { - Self { builtin_count, ..Self::empty() } - } -} - #[cfg(feature = "cairo_native")] static COMPILED_NATIVE_CONTRACT_CACHE: LazyLock>> = LazyLock::new(|| RwLock::new(HashMap::new())); @@ -228,13 +253,11 @@ impl NativeCompiledClassV1 { let sierra_version = SierraVersion::extract_from_program(&sierra_version_values) .expect("Cannot extract sierra version from sierra program"); - let (sierra_version_id, _) = - version_id_from_serialized_sierra_program(&sierra_contract_class.sierra_program) - .unwrap(); + let executor = AotContractExecutor::new( &sierra_program, &sierra_contract_class.entry_points_by_type, - sierra_version_id, + sierra_version.clone().into(), cairo_native::OptLevel::Default, ) .expect("Cannot compile sierra into native"); diff --git a/crates/blockifier/src/test_utils/test_templates.rs b/crates/blockifier/src/test_utils/test_templates.rs index 65f23fc78ca..1d532c7d602 100644 --- a/crates/blockifier/src/test_utils/test_templates.rs +++ b/crates/blockifier/src/test_utils/test_templates.rs @@ -1,8 +1,8 @@ use rstest::rstest; use rstest_reuse::{apply, template}; -#[cfg(test)] use crate::test_utils::{CairoVersion, RunnableCairo1}; + #[cfg(not(feature = "cairo_native"))] #[template] #[rstest] @@ -25,6 +25,19 @@ fn cairo_version( ) { } +#[cfg(not(feature = "cairo_native"))] +#[template] +#[rstest] +fn runnable_version(#[values(RunnableCairo1::Casm)] runnable_version: RunnableCairo1) {} + +#[cfg(feature = "cairo_native")] +#[template] +#[rstest] +fn runnable_version( + #[values(RunnableCairo1::Casm, RunnableCairo1::Native)] runnable_version: RunnableCairo1, +) { +} + #[cfg(not(feature = "cairo_native"))] #[template] #[rstest] @@ -69,3 +82,8 @@ fn test_cairo_version(cairo_version: CairoVersion) { fn test_two_cairo_version(cairo_version1: CairoVersion, cairo_version2: CairoVersion) { println!("test {:?} {:?}", cairo_version1, cairo_version2); } + +#[apply(runnable_version)] +fn test_runnable_version(runnable_version: RunnableCairo1) { + println!("test {:?}", runnable_version); +} diff --git a/crates/blockifier/src/test_utils/transfers_generator.rs b/crates/blockifier/src/test_utils/transfers_generator.rs index 6286d5d573a..0d76148b30f 100644 --- a/crates/blockifier/src/test_utils/transfers_generator.rs +++ b/crates/blockifier/src/test_utils/transfers_generator.rs @@ -17,13 +17,13 @@ use crate::context::{BlockContext, ChainInfo}; use crate::test_utils::contracts::FeatureContract; use crate::test_utils::dict_state_reader::DictStateReader; use crate::test_utils::initial_test_state::test_state; -use crate::test_utils::{CairoVersion, BALANCE, MAX_FEE}; +use crate::test_utils::{CairoVersion, RunnableCairo1, BALANCE, MAX_FEE}; use crate::transaction::account_transaction::AccountTransaction; use crate::transaction::transaction_execution::Transaction; const N_ACCOUNTS: u16 = 10000; const N_TXS: usize = 1000; const RANDOMIZATION_SEED: u64 = 0; -const CAIRO_VERSION: CairoVersion = CairoVersion::Cairo0; +const CAIRO_VERSION: CairoVersion = CairoVersion::Cairo1(RunnableCairo1::Casm); const TRANSACTION_VERSION: TransactionVersion = TransactionVersion(Felt::THREE); const RECIPIENT_GENERATOR_TYPE: RecipientGeneratorType = RecipientGeneratorType::RoundRobin; @@ -154,7 +154,7 @@ impl TransfersGenerator { let results = self.executor.execute_txs(&txs); assert_eq!(results.len(), self.config.n_txs); for result in results { - assert!(!result.unwrap().is_reverted()); + assert!(!result.unwrap().0.is_reverted()); } // TODO(Avi, 01/06/2024): Run the same transactions concurrently on a new state and compare // the state diffs. diff --git a/crates/blockifier/src/transaction/account_transactions_test.rs b/crates/blockifier/src/transaction/account_transactions_test.rs index 20d94f9fbe4..a16ac386c13 100644 --- a/crates/blockifier/src/transaction/account_transactions_test.rs +++ b/crates/blockifier/src/transaction/account_transactions_test.rs @@ -1,6 +1,7 @@ use std::collections::{HashMap, HashSet}; use std::sync::Arc; +use assert_matches::assert_matches; use cairo_vm::types::builtin_name::BuiltinName; use cairo_vm::vm::runners::cairo_runner::ResourceTracker; use num_traits::Inv; @@ -84,7 +85,7 @@ use crate::test_utils::test_templates::cairo_version; use crate::test_utils::{ create_calldata, create_trivial_calldata, - get_syscall_resources, + get_const_syscall_resources, get_tx_resources, CairoVersion, CompilerBasedVersion, @@ -120,12 +121,18 @@ use crate::transaction::transactions::ExecutableTransaction; use crate::utils::u64_from_usize; #[rstest] -fn test_circuit(block_context: BlockContext, default_all_resource_bounds: ValidResourceBounds) { +#[case::cairo1(CairoVersion::Cairo1(RunnableCairo1::Casm))] +#[cfg_attr( + feature = "cairo_native", + case::cairo1_native(CairoVersion::Cairo1(RunnableCairo1::Native)) +)] +fn test_circuit( + block_context: BlockContext, + default_all_resource_bounds: ValidResourceBounds, + #[case] cairo_version: CairoVersion, +) { let TestInitData { mut state, account_address, contract_address, mut nonce_manager } = - create_test_init_data( - &block_context.chain_info, - CairoVersion::Cairo1(RunnableCairo1::Casm), - ); + create_test_init_data(&block_context.chain_info, cairo_version); // Invoke a function that changes the state and reverts. let tx_args = invoke_tx_args! { @@ -151,14 +158,19 @@ fn test_circuit(block_context: BlockContext, default_all_resource_bounds: ValidR } #[rstest] -#[case::vm(default_l1_resource_bounds())] -#[case::gas(default_all_resource_bounds())] -fn test_rc96_holes(block_context: BlockContext, #[case] resource_bounds: ValidResourceBounds) { +#[case::vm(default_l1_resource_bounds(), CairoVersion::Cairo1(RunnableCairo1::Casm))] +#[case::gas(default_all_resource_bounds(), CairoVersion::Cairo1(RunnableCairo1::Casm))] +#[cfg_attr( + feature = "cairo_native", + case::gas_native(default_all_resource_bounds(), CairoVersion::Cairo1(RunnableCairo1::Native)) +)] +fn test_rc96_holes( + block_context: BlockContext, + #[case] resource_bounds: ValidResourceBounds, + #[case] cairo_version: CairoVersion, +) { let TestInitData { mut state, account_address, contract_address, mut nonce_manager } = - create_test_init_data( - &block_context.chain_info, - CairoVersion::Cairo1(RunnableCairo1::Casm), - ); + create_test_init_data(&block_context.chain_info, cairo_version); // Invoke a function that changes the state and reverts. let tx_args = invoke_tx_args! { @@ -725,11 +737,16 @@ fn test_revert_invoke( } #[rstest] +#[case::cairo0(CairoVersion::Cairo0)] +#[case::cairo1(CairoVersion::Cairo1(RunnableCairo1::Casm))] +#[cfg_attr( + feature = "cairo_native", + case::cairo1_native(CairoVersion::Cairo1(RunnableCairo1::Native)) +)] /// Tests that failing account deployment should not change state (no fee charge or nonce bump). fn test_fail_deploy_account( block_context: BlockContext, - #[values(CairoVersion::Cairo0, CairoVersion::Cairo1(RunnableCairo1::Casm))] - cairo_version: CairoVersion, + #[case] cairo_version: CairoVersion, #[values(TransactionVersion::ONE, TransactionVersion::THREE)] tx_version: TransactionVersion, ) { let chain_info = &block_context.chain_info; @@ -831,7 +848,7 @@ fn recursive_function_calldata( ) } -#[rstest] +#[apply(cairo_version)] /// Tests that reverted transactions are charged more fee and steps than their (recursive) prefix /// successful counterparts. /// In this test reverted transactions are valid function calls that got insufficient steps limit. @@ -843,15 +860,11 @@ fn test_reverted_reach_computation_limit( mut block_context: BlockContext, #[case] version: TransactionVersion, #[case] resource_bounds: ValidResourceBounds, - #[values( - CompilerBasedVersion::CairoVersion(CairoVersion::Cairo0), - CompilerBasedVersion::CairoVersion(CairoVersion::Cairo1(RunnableCairo1::Casm)) - )] - cairo_version: CompilerBasedVersion, + cairo_version: CairoVersion, ) { let TestInitData { mut state, account_address, contract_address, mut nonce_manager } = - create_test_init_data(&block_context.chain_info, cairo_version.into()); - let tracked_resource = cairo_version.own_tracked_resource(); + create_test_init_data(&block_context.chain_info, cairo_version); + let tracked_resource = CompilerBasedVersion::CairoVersion(cairo_version).own_tracked_resource(); // Limit the max amount of computation units (so we quickly hit the limit). block_context.versioned_constants.invoke_tx_max_n_steps = 6000; @@ -969,6 +982,14 @@ fn test_reverted_reach_computation_limit( } #[rstest] +#[case::cairo0(CompilerBasedVersion::CairoVersion(CairoVersion::Cairo0))] +#[case::cairo1(CompilerBasedVersion::CairoVersion(CairoVersion::Cairo1(RunnableCairo1::Casm)))] +#[cfg_attr( + feature = "cairo_native", + case::cairo1_native(CompilerBasedVersion::CairoVersion(CairoVersion::Cairo1( + RunnableCairo1::Native + ))) +)] /// Tests that n_steps / n_reverted_gas and actual_fees of reverted transactions invocations are /// consistent. In this test reverted transactions are recursive function invocations where the /// innermost call asserts false. We test deltas between consecutive depths, and further depths. @@ -976,11 +997,7 @@ fn test_n_reverted_computation_units( block_context: BlockContext, #[values(default_l1_resource_bounds(), default_all_resource_bounds())] resource_bounds: ValidResourceBounds, - #[values( - CompilerBasedVersion::CairoVersion(CairoVersion::Cairo0), - CompilerBasedVersion::CairoVersion(CairoVersion::Cairo1(RunnableCairo1::Casm)) - )] - cairo_version: CompilerBasedVersion, + #[case] cairo_version: CompilerBasedVersion, ) { let TestInitData { mut state, account_address, contract_address, mut nonce_manager } = create_test_init_data(&block_context.chain_info, cairo_version.into()); @@ -1194,7 +1211,7 @@ fn test_max_fee_to_max_steps_conversion( let TestInitData { mut state, account_address, contract_address, mut nonce_manager } = create_test_init_data(&block_context.chain_info, CairoVersion::Cairo0); let actual_gas_used: GasAmount = u64_from_usize( - get_syscall_resources(SyscallSelector::CallContract).n_steps + get_const_syscall_resources(SyscallSelector::CallContract).n_steps + get_tx_resources(TransactionType::InvokeFunction).n_steps + 1751, ) @@ -1404,11 +1421,16 @@ fn test_insufficient_max_fee_reverts( } #[rstest] +#[case::cairo0(CairoVersion::Cairo0)] +#[case::cairo1(CairoVersion::Cairo1(RunnableCairo1::Casm))] +#[cfg_attr( + feature = "cairo_native", + case::cairo1_native(CairoVersion::Cairo1(RunnableCairo1::Native)) +)] fn test_deploy_account_constructor_storage_write( default_all_resource_bounds: ValidResourceBounds, block_context: BlockContext, - #[values(CairoVersion::Cairo0, CairoVersion::Cairo1(RunnableCairo1::Casm))] - cairo_version: CairoVersion, + #[case] cairo_version: CairoVersion, ) { let grindy_account = FeatureContract::AccountWithLongValidate(cairo_version); let class_hash = grindy_account.get_class_hash(); @@ -1444,7 +1466,7 @@ fn test_deploy_account_constructor_storage_write( } /// Test for counting actual storage changes. -#[rstest] +#[apply(cairo_version)] #[case::tx_version_1(TransactionVersion::ONE, FeeType::Eth)] #[case::tx_version_3(TransactionVersion::THREE, FeeType::Strk)] fn test_count_actual_storage_changes( @@ -1453,7 +1475,6 @@ fn test_count_actual_storage_changes( default_all_resource_bounds: ValidResourceBounds, #[case] version: TransactionVersion, #[case] fee_type: FeeType, - #[values(CairoVersion::Cairo0, CairoVersion::Cairo1(RunnableCairo1::Casm))] cairo_version: CairoVersion, ) { // FeeType according to version. @@ -1635,22 +1656,26 @@ fn test_count_actual_storage_changes( } #[rstest] -#[case::tx_version_1(TransactionVersion::ONE)] -#[case::tx_version_3(TransactionVersion::THREE)] +#[case::tx_version_1(TransactionVersion::ONE, RunnableCairo1::Casm)] +#[case::tx_version_3(TransactionVersion::THREE, RunnableCairo1::Casm)] +#[cfg_attr( + feature = "cairo_native", + case::tx_version_3_native(TransactionVersion::THREE, RunnableCairo1::Native) +)] fn test_concurrency_execute_fee_transfer( block_context: BlockContext, max_fee: Fee, default_all_resource_bounds: ValidResourceBounds, #[case] version: TransactionVersion, + #[case] runnable: RunnableCairo1, ) { // TODO(Meshi, 01/06/2024): make the test so it will include changes in // sequencer_balance_key_high. const TRANSFER_AMOUNT: u128 = 100; const SEQUENCER_BALANCE_LOW_INITIAL: u128 = 50; - let chain_info = &block_context.chain_info; let TestInitData { mut state, account_address, contract_address, .. } = - create_test_init_data(chain_info, CairoVersion::Cairo1(RunnableCairo1::Casm)); + create_test_init_data(chain_info, CairoVersion::Cairo1(runnable)); let (sequencer_balance_key_low, sequencer_balance_key_high) = get_sequencer_balance_keys(&block_context); let account_tx = invoke_tx_with_default_flags(invoke_tx_args! { @@ -1733,17 +1758,22 @@ fn test_concurrency_execute_fee_transfer( // Check that when the sequencer is the sender, we run the sequential fee transfer. #[rstest] -#[case::tx_version_1(TransactionVersion::ONE)] -#[case::tx_version_3(TransactionVersion::THREE)] +#[case::tx_version_1(TransactionVersion::ONE, RunnableCairo1::Casm)] +#[case::tx_version_3(TransactionVersion::THREE, RunnableCairo1::Casm)] +#[cfg_attr( + feature = "cairo_native", + case::tx_version_3_native(TransactionVersion::THREE, RunnableCairo1::Native) +)] fn test_concurrent_fee_transfer_when_sender_is_sequencer( mut block_context: BlockContext, max_fee: Fee, default_all_resource_bounds: ValidResourceBounds, #[case] version: TransactionVersion, + #[case] runnable: RunnableCairo1, ) { let chain_info = &block_context.chain_info; let TestInitData { mut state, account_address, contract_address, .. } = - create_test_init_data(chain_info, CairoVersion::Cairo1(RunnableCairo1::Casm)); + create_test_init_data(chain_info, CairoVersion::Cairo1(runnable)); block_context.block_info.sequencer_address = account_address; let sender_balance = BALANCE; let (sequencer_balance_key_low, sequencer_balance_key_high) = @@ -1778,14 +1808,12 @@ fn test_concurrent_fee_transfer_when_sender_is_sequencer( CompilerBasedVersion::CairoVersion(CairoVersion::Cairo1(RunnableCairo1::Casm)), CompilerBasedVersion::CairoVersion(CairoVersion::Cairo1(RunnableCairo1::Casm)), CompilerBasedVersion::CairoVersion(CairoVersion::Cairo0), - CompilerBasedVersion::CairoVersion(CairoVersion::Cairo1(RunnableCairo1::Casm)) -])] + CompilerBasedVersion::CairoVersion(CairoVersion::Cairo1(RunnableCairo1::Casm))])] #[case::old_cairo1(&[ CompilerBasedVersion::CairoVersion(CairoVersion::Cairo1(RunnableCairo1::Casm)), CompilerBasedVersion::CairoVersion(CairoVersion::Cairo1(RunnableCairo1::Casm)), CompilerBasedVersion::OldCairo1, - CompilerBasedVersion::CairoVersion(CairoVersion::Cairo1(RunnableCairo1::Casm)) -])] + CompilerBasedVersion::CairoVersion(CairoVersion::Cairo1(RunnableCairo1::Casm))])] fn test_initial_gas( block_context: BlockContext, #[case] versions: &[CompilerBasedVersion], @@ -1860,9 +1888,9 @@ fn test_initial_gas( false, ) => { // First time we are in VM mode. - assert_eq!( + assert_matches!( prev_version, - &CompilerBasedVersion::CairoVersion(CairoVersion::Cairo1(RunnableCairo1::Casm)) + &CompilerBasedVersion::CairoVersion(CairoVersion::Cairo1(_)) ); assert_eq!( curr_initial_gas, @@ -1874,11 +1902,7 @@ fn test_initial_gas( // prev_version is a non CairoStep contract, thus it consumes gas from the initial // gas. assert!(curr_initial_gas < prev_initial_gas); - if version - == &CompilerBasedVersion::CairoVersion(CairoVersion::Cairo1( - RunnableCairo1::Casm, - )) - { + if matches!(version, &CompilerBasedVersion::CairoVersion(CairoVersion::Cairo1(_))) { assert!(execute_call_info.execution.gas_consumed > 0); } else { assert!(execute_call_info.execution.gas_consumed == 0); @@ -1896,15 +1920,18 @@ fn test_initial_gas( } #[rstest] +#[case::cairo1(CairoVersion::Cairo1(RunnableCairo1::Casm))] +#[cfg_attr( + feature = "cairo_native", + case::cairo1_native(CairoVersion::Cairo1(RunnableCairo1::Native)) +)] fn test_revert_in_execute( block_context: BlockContext, default_all_resource_bounds: ValidResourceBounds, + #[case] cairo_version: CairoVersion, ) { - let TestInitData { mut state, account_address, mut nonce_manager, .. } = create_test_init_data( - &block_context.chain_info, - CairoVersion::Cairo1(RunnableCairo1::Casm), - ); - + let TestInitData { mut state, account_address, mut nonce_manager, .. } = + create_test_init_data(&block_context.chain_info, cairo_version); // Invoke a function that changes the state and reverts. let tx_args = invoke_tx_args! { sender_address: account_address, diff --git a/crates/blockifier/src/transaction/execution_flavors_test.rs b/crates/blockifier/src/transaction/execution_flavors_test.rs index fecc882b325..1d40f306dbc 100644 --- a/crates/blockifier/src/transaction/execution_flavors_test.rs +++ b/crates/blockifier/src/transaction/execution_flavors_test.rs @@ -34,7 +34,7 @@ use crate::test_utils::initial_test_state::test_state; use crate::test_utils::{ create_calldata, create_trivial_calldata, - get_syscall_resources, + get_const_syscall_resources, get_tx_resources, CairoVersion, BALANCE, @@ -395,7 +395,7 @@ fn test_simulate_validate_pre_validate_not_charge_fee( assert!( base_gas > u64_from_usize( - get_syscall_resources(SyscallSelector::CallContract).n_steps + get_const_syscall_resources(SyscallSelector::CallContract).n_steps + get_tx_resources(TransactionType::InvokeFunction).n_steps ) .into() @@ -640,7 +640,7 @@ fn test_simulate_validate_charge_fee_mid_execution( let (limited_gas_used, limited_fee) = gas_and_fee(7763_u32.into(), validate, &fee_type); let (unlimited_gas_used, unlimited_fee) = gas_and_fee( u64_from_usize( - get_syscall_resources(SyscallSelector::CallContract).n_steps + get_const_syscall_resources(SyscallSelector::CallContract).n_steps + get_tx_resources(TransactionType::InvokeFunction).n_steps + 5730, ) @@ -785,7 +785,7 @@ fn test_simulate_validate_charge_fee_post_execution( ); let (unlimited_gas_used, unlimited_fee) = gas_and_fee( u64_from_usize( - get_syscall_resources(SyscallSelector::CallContract).n_steps + get_const_syscall_resources(SyscallSelector::CallContract).n_steps + get_tx_resources(TransactionType::InvokeFunction).n_steps + 5730, ) @@ -830,7 +830,7 @@ fn test_simulate_validate_charge_fee_post_execution( // Execute a transfer, and make sure we get the expected result. let (success_actual_gas, actual_fee) = gas_and_fee( u64_from_usize( - get_syscall_resources(SyscallSelector::CallContract).n_steps + get_const_syscall_resources(SyscallSelector::CallContract).n_steps + get_tx_resources(TransactionType::InvokeFunction).n_steps + 4260, ) diff --git a/crates/blockifier/src/transaction/objects.rs b/crates/blockifier/src/transaction/objects.rs index 4cfef890e6e..573517cd1a3 100644 --- a/crates/blockifier/src/transaction/objects.rs +++ b/crates/blockifier/src/transaction/objects.rs @@ -239,6 +239,8 @@ impl ExecutionResourcesTraits for ExecutionResources { self.n_steps // Memory holes are slightly cheaper than actual steps, but we count them as such // for simplicity. + // TODO(AvivG): Compute memory_holes gas accurately while maintaining backward compatibility. + // Define memory_holes_gas version_constants as 100 gas (1 step) for previous versions. + self.n_memory_holes // The "segment arena" builtin is not part of the prover (not in any proof layout); // It is transformed into regular steps by the OS program - each instance requires diff --git a/crates/blockifier/src/transaction/transaction_execution.rs b/crates/blockifier/src/transaction/transaction_execution.rs index cb503b8b08e..43f8f911eea 100644 --- a/crates/blockifier/src/transaction/transaction_execution.rs +++ b/crates/blockifier/src/transaction/transaction_execution.rs @@ -208,7 +208,7 @@ impl ExecutableTransaction for Transaction { // Check if the transaction is too large to fit any block. // TODO(Yoni, 1/8/2024): consider caching these two. let tx_execution_summary = tx_execution_info.summarize(&block_context.versioned_constants); - let mut tx_state_changes_keys = state.get_actual_state_changes()?.state_maps.into_keys(); + let mut tx_state_changes_keys = state.get_actual_state_changes()?.state_maps.keys(); tx_state_changes_keys.update_sequencer_key_in_storage( &block_context.to_tx_context(self), &tx_execution_info, @@ -220,6 +220,7 @@ impl ExecutableTransaction for Transaction { &tx_execution_info.receipt.resources, &tx_state_changes_keys, &block_context.bouncer_config, + &block_context.versioned_constants, )?; Ok(tx_execution_info) diff --git a/crates/blockifier/src/transaction/transactions_test.rs b/crates/blockifier/src/transaction/transactions_test.rs index f3680db6e65..85e40d1dd31 100644 --- a/crates/blockifier/src/transaction/transactions_test.rs +++ b/crates/blockifier/src/transaction/transactions_test.rs @@ -112,7 +112,7 @@ use crate::test_utils::test_templates::{cairo_version, two_cairo_versions}; use crate::test_utils::{ create_calldata, create_trivial_calldata, - get_syscall_resources, + get_const_syscall_resources, get_tx_resources, test_erc20_sequencer_balance_key, CairoVersion, @@ -452,7 +452,7 @@ fn add_kzg_da_resources_to_resources_mapping( #[rstest] #[case::with_cairo0_account( ExpectedResultTestInvokeTx{ - resources: &get_syscall_resources(SyscallSelector::CallContract) + &ExecutionResources { + resources: &get_const_syscall_resources(SyscallSelector::CallContract) + &ExecutionResources { n_steps: 62, n_memory_holes: 0, builtin_instance_counter: HashMap::from([(BuiltinName::range_check, 1)]), diff --git a/crates/blockifier/src/utils.rs b/crates/blockifier/src/utils.rs index b8b067f0d6a..763b0138ac1 100644 --- a/crates/blockifier/src/utils.rs +++ b/crates/blockifier/src/utils.rs @@ -1,6 +1,9 @@ use std::collections::HashMap; +use cairo_vm::vm::runners::cairo_runner::ExecutionResources; + use crate::transaction::errors::NumericConversionError; +use crate::versioned_constants::GasCosts; #[cfg(test)] #[path = "utils_test.rs"] @@ -48,6 +51,7 @@ pub const fn const_max(a: u128, b: u128) -> u128 { [a, b][(a < b) as usize] } +// TODO(Meshi): Move this code to starknet API. /// Conversion from u64 to usize. This conversion should only be used if the value came from a /// usize. pub fn usize_from_u64(val: u64) -> Result { @@ -59,3 +63,26 @@ pub fn usize_from_u64(val: u64) -> Result { pub fn u64_from_usize(val: usize) -> u64 { val.try_into().expect("Conversion from usize to u64 should not fail.") } + +pub fn get_gas_cost_from_vm_resources( + execution_resources: &ExecutionResources, + gas_costs: &GasCosts, +) -> u64 { + let n_steps = u64_from_usize(execution_resources.n_steps); + let n_memory_holes = u64_from_usize(execution_resources.n_memory_holes); + let total_builtin_gas_cost: u64 = execution_resources + .builtin_instance_counter + .iter() + .map(|(builtin, amount)| { + let builtin_cost = gas_costs + .builtins + .get_builtin_gas_cost(builtin) + .unwrap_or_else(|err| panic!("Failed to get gas cost: {}", err)); + builtin_cost * u64_from_usize(*amount) + }) + .sum(); + + n_steps * gas_costs.base.step_gas_cost + + n_memory_holes * gas_costs.base.memory_hole_gas_cost + + total_builtin_gas_cost +} diff --git a/crates/blockifier/src/versioned_constants.rs b/crates/blockifier/src/versioned_constants.rs index b375b413e7f..80864614fe5 100644 --- a/crates/blockifier/src/versioned_constants.rs +++ b/crates/blockifier/src/versioned_constants.rs @@ -17,20 +17,20 @@ use serde::{Deserialize, Deserializer, Serialize}; use serde_json::{Map, Number, Value}; use starknet_api::block::{GasPrice, StarknetVersion}; use starknet_api::contract_class::SierraVersion; -use starknet_api::core::ContractAddress; +use starknet_api::core::{ClassHash, ContractAddress}; use starknet_api::execution_resources::{GasAmount, GasVector}; -use starknet_api::transaction::fields::GasVectorComputationMode; +use starknet_api::transaction::fields::{GasVectorComputationMode, Tip}; use starknet_infra_utils::compile_time_cargo_manifest_dir; use strum::IntoEnumIterator; use thiserror::Error; use crate::execution::common_hints::ExecutionMode; -use crate::execution::deprecated_syscalls::hint_processor::SyscallCounter; use crate::execution::execution_utils::poseidon_hash_many_cost; +use crate::execution::syscalls::hint_processor::SyscallUsageMap; use crate::execution::syscalls::SyscallSelector; use crate::fee::resources::StarknetResources; use crate::transaction::transaction_types::TransactionType; -use crate::utils::u64_from_usize; +use crate::utils::get_gas_cost_from_vm_resources; #[cfg(test)] #[path = "versioned_constants_test.rs"] @@ -118,6 +118,7 @@ define_versioned_constants! { (V0_13_2_1, "../resources/versioned_constants_0_13_2_1.json"), (V0_13_3, "../resources/versioned_constants_0_13_3.json"), (V0_13_4, "../resources/versioned_constants_0_13_4.json"), + (V0_13_5, "../resources/versioned_constants_0_13_5.json"), } pub type ResourceCost = Ratio; @@ -304,9 +305,9 @@ impl VersionedConstants { pub fn get_additional_os_syscall_resources( &self, - syscall_counter: &SyscallCounter, + syscalls_usage: &SyscallUsageMap, ) -> ExecutionResources { - self.os_resources.get_additional_os_syscall_resources(syscall_counter) + self.os_resources.get_additional_os_syscall_resources(syscalls_usage) } pub fn get_validate_block_number_rounding(&self) -> u64 { @@ -355,12 +356,17 @@ impl VersionedConstants { validate_max_n_steps, max_recursion_depth, invoke_tx_max_n_steps, + max_n_events, } = versioned_constants_overrides; + let latest_constants = Self::latest_constants().clone(); + let tx_event_limits = + EventLimits { max_n_emitted_events: max_n_events, ..latest_constants.tx_event_limits }; Self { validate_max_n_steps, max_recursion_depth, invoke_tx_max_n_steps, - ..Self::latest_constants().clone() + tx_event_limits, + ..latest_constants } } @@ -375,33 +381,21 @@ impl VersionedConstants { } /// Calculates the syscall gas cost from the OS resources. - pub fn get_syscall_gas_cost(&self, syscall_selector: &SyscallSelector) -> u64 { + pub fn get_syscall_gas_cost(&self, syscall_selector: &SyscallSelector) -> SyscallGasCost { let gas_costs = &self.os_constants.gas_costs; - let execution_resources = &self + let vm_resources = &self .os_resources .execute_syscalls .get(syscall_selector) .expect("Fetching the execution resources of a syscall should not fail."); - let n_steps = u64_from_usize(execution_resources.n_steps); - let n_memory_holes = u64_from_usize(execution_resources.n_memory_holes); - let total_builtin_gas_cost: u64 = execution_resources - .builtin_instance_counter - .iter() - .map(|(builtin, amount)| { - let builtin_cost = gas_costs - .builtins - .get_builtin_gas_cost(builtin) - .unwrap_or_else(|err| panic!("Failed to get gas cost: {}", err)); - builtin_cost * u64_from_usize(*amount) - }) - .sum(); + + let mut base_gas_cost = get_gas_cost_from_vm_resources(&vm_resources.constant, gas_costs); + // The minimum total cost is `syscall_base_gas_cost`, which is pre-charged by the compiler. - std::cmp::max( - n_steps * gas_costs.base.step_gas_cost - + n_memory_holes * gas_costs.base.memory_hole_gas_cost - + total_builtin_gas_cost, - gas_costs.base.syscall_base_gas_cost, - ) + base_gas_cost = std::cmp::max(gas_costs.base.syscall_base_gas_cost, base_gas_cost); + let linear_gas_cost = + get_gas_cost_from_vm_resources(&vm_resources.calldata_factor, gas_costs); + SyscallGasCost { base: base_gas_cost, linear_factor: linear_gas_cost } } } @@ -531,7 +525,7 @@ pub struct OsResources { // steps). // TODO(Arni, 14/6/2023): Update `GetBlockHash` values. // TODO(ilya): Consider moving the resources of a keccak round to a seperate dict. - execute_syscalls: HashMap, + execute_syscalls: HashMap, // Mapping from every transaction to its extra execution resources in the OS, // i.e., resources that don't count during the execution itself. // For each transaction the OS uses a constant amount of VM resources, and an @@ -589,7 +583,9 @@ impl OsResources { &resources_vector.deprecated_resources.calldata_factor, ] }) - .chain(self.execute_syscalls.values()) + .chain(self.execute_syscalls.values().flat_map(|resources_params| { + [&resources_params.constant, &resources_params.calldata_factor] + })) .chain(std::iter::once(&self.compute_os_kzg_commitment_info)); let builtin_names = execution_resources.flat_map(|resources| resources.builtin_instance_counter.keys()); @@ -627,16 +623,16 @@ impl OsResources { /// i.e., the resources of the Starknet OS function `execute_syscalls`. fn get_additional_os_syscall_resources( &self, - syscall_counter: &SyscallCounter, + syscalls_usage: &SyscallUsageMap, ) -> ExecutionResources { let mut os_additional_resources = ExecutionResources::default(); - for (syscall_selector, count) in syscall_counter { + for (syscall_selector, syscall_usage) in syscalls_usage { if syscall_selector == &SyscallSelector::Keccak { let keccak_base_resources = self.execute_syscalls.get(syscall_selector).unwrap_or_else(|| { panic!("OS resources of syscall '{syscall_selector:?}' are unknown.") }); - os_additional_resources += keccak_base_resources; + os_additional_resources += &keccak_base_resources.constant; } let syscall_selector = if syscall_selector == &SyscallSelector::Keccak { &SyscallSelector::KeccakRound @@ -647,7 +643,8 @@ impl OsResources { self.execute_syscalls.get(syscall_selector).unwrap_or_else(|| { panic!("OS resources of syscall '{syscall_selector:?}' are unknown.") }); - os_additional_resources += &(syscall_resources * *count); + os_additional_resources += &(&(&syscall_resources.constant * syscall_usage.call_count) + + &(&syscall_resources.calldata_factor * syscall_usage.linear_factor)); } os_additional_resources @@ -698,37 +695,61 @@ impl<'de> Deserialize<'de> for OsResources { } } +#[derive(Deserialize, PartialEq, Debug, Clone, Copy, Serialize, Default)] +pub struct SyscallGasCost { + base: u64, + linear_factor: u64, +} + +impl SyscallGasCost { + pub fn new_from_base_cost(base: u64) -> Self { + Self { base, linear_factor: 0 } + } + + pub fn get_syscall_cost(&self, linear_length: u64) -> u64 { + self.base + self.linear_factor * linear_length + } + + pub fn base_syscall_cost(&self) -> u64 { + assert!(self.linear_factor == 0, "The syscall has a linear factor cost to be considered."); + self.base + } +} + #[cfg_attr(any(test, feature = "testing"), derive(Clone, Copy))] #[derive(Debug, Default, Deserialize, PartialEq)] pub struct SyscallGasCosts { - pub call_contract: u64, - pub deploy: u64, - pub get_block_hash: u64, - pub get_execution_info: u64, - pub library_call: u64, - pub replace_class: u64, - pub storage_read: u64, - pub storage_write: u64, - pub get_class_hash_at: u64, - pub emit_event: u64, - pub send_message_to_l1: u64, - pub secp256k1_add: u64, - pub secp256k1_get_point_from_x: u64, - pub secp256k1_get_xy: u64, - pub secp256k1_mul: u64, - pub secp256k1_new: u64, - pub secp256r1_add: u64, - pub secp256r1_get_point_from_x: u64, - pub secp256r1_get_xy: u64, - pub secp256r1_mul: u64, - pub secp256r1_new: u64, - pub keccak: u64, - pub keccak_round_cost: u64, - pub sha256_process_block: u64, + pub call_contract: SyscallGasCost, + pub deploy: SyscallGasCost, + pub get_block_hash: SyscallGasCost, + pub get_execution_info: SyscallGasCost, + pub library_call: SyscallGasCost, + pub replace_class: SyscallGasCost, + pub storage_read: SyscallGasCost, + pub storage_write: SyscallGasCost, + pub get_class_hash_at: SyscallGasCost, + pub emit_event: SyscallGasCost, + pub send_message_to_l1: SyscallGasCost, + pub secp256k1_add: SyscallGasCost, + pub secp256k1_get_point_from_x: SyscallGasCost, + pub secp256k1_get_xy: SyscallGasCost, + pub secp256k1_mul: SyscallGasCost, + pub secp256k1_new: SyscallGasCost, + pub secp256r1_add: SyscallGasCost, + pub secp256r1_get_point_from_x: SyscallGasCost, + pub secp256r1_get_xy: SyscallGasCost, + pub secp256r1_mul: SyscallGasCost, + pub secp256r1_new: SyscallGasCost, + pub keccak: SyscallGasCost, + pub keccak_round_cost: SyscallGasCost, + pub sha256_process_block: SyscallGasCost, } impl SyscallGasCosts { - pub fn get_syscall_gas_cost(&self, selector: &SyscallSelector) -> Result { + pub fn get_syscall_gas_cost( + &self, + selector: &SyscallSelector, + ) -> Result { let gas_cost = match *selector { SyscallSelector::CallContract => self.call_contract, SyscallSelector::Deploy => self.deploy, @@ -791,6 +812,7 @@ pub struct BuiltinGasCosts { // Range check has a hard-coded cost higher than its proof percentage to avoid the overhead of // retrieving its price from the table. pub range_check: u64, + pub range_check96: u64, // Priced builtins. pub keccak: u64, pub pedersen: u64, @@ -811,7 +833,7 @@ impl BuiltinGasCosts { BuiltinName::ec_op => self.ecop, BuiltinName::keccak => self.keccak, BuiltinName::poseidon => self.poseidon, - BuiltinName::range_check96 => self.range_check, + BuiltinName::range_check96 => self.range_check96, BuiltinName::add_mod => self.add_mod, BuiltinName::mul_mod => self.mul_mod, BuiltinName::ecdsa => self.ecdsa, @@ -837,9 +859,9 @@ pub struct GasCosts { // Below, serde first deserializes the json into a regular IndexMap wrapped by the newtype // `OsConstantsRawJson`, then calls the `try_from` of the newtype, which handles the // conversion into actual values. -// TODO: consider encoding the * and + operations inside the json file, instead of hardcoded below -// in the `try_from`. -#[cfg_attr(any(test, feature = "testing"), derive(Clone, Copy))] +// TODO(Dori): consider encoding the * and + operations inside the json file, instead of hardcoded +// below in the `try_from`. +#[cfg_attr(any(test, feature = "testing"), derive(Clone))] #[derive(Debug, Default, Deserialize)] #[serde(try_from = "OsConstantsRawJson")] pub struct OsConstants { @@ -848,6 +870,9 @@ pub struct OsConstants { pub os_contract_addresses: OsContractAddresses, pub validate_max_sierra_gas: GasAmount, pub execute_max_sierra_gas: GasAmount, + pub v1_bound_accounts_cairo0: Vec, + pub v1_bound_accounts_cairo1: Vec, + pub v1_bound_accounts_max_tip: Tip, } impl OsConstants { @@ -932,12 +957,18 @@ impl TryFrom for OsConstants { .ok_or_else(|| OsConstantsSerdeError::KeyNotFoundInFile(key.to_string()))? .clone(), )?); + let v1_bound_accounts_cairo0 = raw_json_data.v1_bound_accounts_cairo0; + let v1_bound_accounts_cairo1 = raw_json_data.v1_bound_accounts_cairo1; + let v1_bound_accounts_max_tip = raw_json_data.v1_bound_accounts_max_tip; let os_constants = OsConstants { gas_costs, validate_rounding_consts, os_contract_addresses, validate_max_sierra_gas, execute_max_sierra_gas, + v1_bound_accounts_cairo0, + v1_bound_accounts_cairo1, + v1_bound_accounts_max_tip, }; Ok(os_constants) } @@ -978,6 +1009,9 @@ struct OsConstantsRawJson { #[serde(default)] validate_rounding_consts: ValidateRoundingConsts, os_contract_addresses: OsContractAddresses, + v1_bound_accounts_cairo0: Vec, + v1_bound_accounts_cairo1: Vec, + v1_bound_accounts_max_tip: Tip, } impl OsConstantsRawJson { @@ -1001,7 +1035,7 @@ impl OsConstantsRawJson { &self, base: &BaseGasCosts, builtins: &BuiltinGasCosts, - ) -> Result, OsConstantsSerdeError> { + ) -> Result, OsConstantsSerdeError> { let mut gas_costs = IndexMap::new(); let key = "syscall_gas_costs"; let syscalls: IndexMap = serde_json::from_value( @@ -1108,7 +1142,7 @@ impl OsConstantsRawJson { &self, key: &str, value: &Value, - syscalls: &mut IndexMap, + syscalls: &mut IndexMap, base: &BaseGasCosts, builtins: &BuiltinGasCosts, ) -> Result<(), OsConstantsSerdeError> { @@ -1145,14 +1179,14 @@ impl OsConstantsRawJson { })?; cost += inner_value * factor; } - syscalls.insert(key.to_string(), cost); + syscalls.insert(key.to_string(), SyscallGasCost::new_from_base_cost(cost)); } Value::Number(n) => { cost = n.as_u64().ok_or_else(|| OsConstantsSerdeError::OutOfRange { key: key.to_string(), value: n.clone(), })?; - syscalls.insert(key.to_string(), cost); + syscalls.insert(key.to_string(), SyscallGasCost::new_from_base_cost(cost)); } _ => return Err(OsConstantsSerdeError::UnhandledValueType(value.clone())), } @@ -1275,6 +1309,7 @@ pub struct VersionedConstantsOverrides { pub validate_max_n_steps: u32, pub max_recursion_depth: usize, pub invoke_tx_max_n_steps: u32, + pub max_n_events: usize, } impl Default for VersionedConstantsOverrides { @@ -1284,6 +1319,7 @@ impl Default for VersionedConstantsOverrides { validate_max_n_steps: latest_versioned_constants.validate_max_n_steps, max_recursion_depth: latest_versioned_constants.max_recursion_depth, invoke_tx_max_n_steps: latest_versioned_constants.invoke_tx_max_n_steps, + max_n_events: latest_versioned_constants.tx_event_limits.max_n_emitted_events, } } } @@ -1309,6 +1345,12 @@ impl SerializeConfig for VersionedConstantsOverrides { "Maximum number of steps the invoke function is allowed to run.", ParamPrivacyInput::Public, ), + ser_param( + "max_n_events", + &self.max_n_events, + "Maximum number of events that can be emitted from the transation.", + ParamPrivacyInput::Public, + ), ]) } } diff --git a/crates/blockifier/src/versioned_constants_test.rs b/crates/blockifier/src/versioned_constants_test.rs index 2a569111273..8bd34616e4f 100644 --- a/crates/blockifier/src/versioned_constants_test.rs +++ b/crates/blockifier/src/versioned_constants_test.rs @@ -46,18 +46,21 @@ fn test_versioned_constants_overrides() { let updated_invoke_tx_max_n_steps = versioned_constants.invoke_tx_max_n_steps + 1; let updated_validate_max_n_steps = versioned_constants.validate_max_n_steps + 1; let updated_max_recursion_depth = versioned_constants.max_recursion_depth + 1; + let updated_max_n_events = versioned_constants.tx_event_limits.max_n_emitted_events + 1; // Create a versioned constants copy with overriden values. let result = VersionedConstants::get_versioned_constants(VersionedConstantsOverrides { validate_max_n_steps: updated_validate_max_n_steps, max_recursion_depth: updated_max_recursion_depth, invoke_tx_max_n_steps: updated_invoke_tx_max_n_steps, + max_n_events: updated_max_n_events, }); // Assert the new values are used. assert_eq!(result.invoke_tx_max_n_steps, updated_invoke_tx_max_n_steps); assert_eq!(result.validate_max_n_steps, updated_validate_max_n_steps); assert_eq!(result.max_recursion_depth, updated_max_recursion_depth); + assert_eq!(result.tx_event_limits.max_n_emitted_events, updated_max_n_events); } #[test] @@ -79,12 +82,15 @@ fn test_string_inside_composed_field() { fn check_constants_serde_error(json_data: &str, expected_error_message: &str) { let mut json_data_raw: IndexMap = serde_json::from_str(json_data).unwrap(); - json_data_raw.insert("validate_block_number_rounding".to_string(), 0.into()); - json_data_raw.insert("validate_timestamp_rounding".to_string(), 0.into()); + json_data_raw.insert("validate_block_number_rounding".into(), 0.into()); + json_data_raw.insert("validate_timestamp_rounding".into(), 0.into()); json_data_raw.insert( - "os_contract_addresses".to_string(), + "os_contract_addresses".into(), serde_json::to_value(OsContractAddresses::default()).unwrap(), ); + json_data_raw.insert("v1_bound_accounts_cairo0".into(), serde_json::Value::Array(vec![])); + json_data_raw.insert("v1_bound_accounts_cairo1".into(), serde_json::Value::Array(vec![])); + json_data_raw.insert("v1_bound_accounts_max_tip".into(), "0x0".into()); let json_data = &serde_json::to_string(&json_data_raw).unwrap(); @@ -184,15 +190,24 @@ fn test_syscall_gas_cost_calculation() { let versioned_constants = VersionedConstants::latest_constants().clone(); assert_eq!( - versioned_constants.get_syscall_gas_cost(&SyscallSelector::CallContract), + versioned_constants.get_syscall_gas_cost(&SyscallSelector::CallContract).base, EXPECTED_CALL_CONTRACT_GAS_COST ); assert_eq!( - versioned_constants.get_syscall_gas_cost(&SyscallSelector::Secp256k1Mul), + versioned_constants.get_syscall_gas_cost(&SyscallSelector::Secp256k1Mul).base, EXPECTED_SECP256K1MUL_GAS_COST ); assert_eq!( - versioned_constants.get_syscall_gas_cost(&SyscallSelector::Sha256ProcessBlock), + versioned_constants.get_syscall_gas_cost(&SyscallSelector::Sha256ProcessBlock).base, EXPECTED_SHA256PROCESSBLOCK_GAS_COST ); } + +/// Linear gas cost factor of deploy syscall should not be trivial. +#[test] +fn test_call_data_factor_gas_cost_calculation() { + assert!( + VersionedConstants::latest_constants().os_constants.gas_costs.syscalls.deploy.linear_factor + > 0 + ) +} diff --git a/crates/blockifier_reexecution/src/state_reader/reexecution_state_reader.rs b/crates/blockifier_reexecution/src/state_reader/reexecution_state_reader.rs index 19b52b66a49..a2996d3c849 100644 --- a/crates/blockifier_reexecution/src/state_reader/reexecution_state_reader.rs +++ b/crates/blockifier_reexecution/src/state_reader/reexecution_state_reader.rs @@ -16,7 +16,7 @@ use crate::state_reader::compile::{ legacy_to_contract_class_v0, sierra_to_versioned_contract_class_v1, }; -use crate::state_reader::errors::{ReexecutionError, ReexecutionResult}; +use crate::state_reader::errors::ReexecutionResult; pub trait ReexecutionStateReader { fn get_contract_class(&self, class_hash: &ClassHash) -> StateResult; @@ -65,9 +65,7 @@ pub trait ReexecutionStateReader { )?) } Transaction::Declare(ref declare_tx) => { - let class_info = self - .get_class_info(declare_tx.class_hash()) - .map_err(ReexecutionError::from)?; + let class_info = self.get_class_info(declare_tx.class_hash())?; Ok(BlockifierTransaction::from_api( tx, tx_hash, diff --git a/crates/committer_cli/src/commands.rs b/crates/committer_cli/src/commands.rs index fad171a4cb3..a9b36f22190 100644 --- a/crates/committer_cli/src/commands.rs +++ b/crates/committer_cli/src/commands.rs @@ -6,14 +6,18 @@ use tracing_subscriber::reload::Handle; use tracing_subscriber::Registry; use crate::filled_tree_output::filled_forest::SerializedForest; -use crate::parse_input::read::{parse_input, write_to_file}; +use crate::parse_input::cast::InputImpl; +use crate::parse_input::raw_input::RawInput; +use crate::parse_input::read::{load_input, write_to_file}; pub async fn parse_and_commit( - input_string: &str, + input_path: String, output_path: String, log_filter_handle: Handle, ) { - let input = parse_input(input_string).expect("Failed to parse the given input."); + let input: InputImpl = load_input::(input_path) + .try_into() + .expect("Failed to convert RawInput to InputImpl."); info!( "Parsed committer input successfully. Original Contracts Trie Root Hash: {:?}, Original Classes Trie Root Hash: {:?}", diff --git a/crates/committer_cli/src/main.rs b/crates/committer_cli/src/main.rs index 4cb7116bfb4..72a33223e3a 100644 --- a/crates/committer_cli/src/main.rs +++ b/crates/committer_cli/src/main.rs @@ -1,7 +1,7 @@ use clap::{Args, Parser, Subcommand}; use committer_cli::block_hash::{BlockCommitmentsInput, BlockHashInput}; use committer_cli::commands::parse_and_commit; -use committer_cli::parse_input::read::{load_from_stdin, read_from_stdin, write_to_file}; +use committer_cli::parse_input::read::{load_input, read_input, write_to_file}; use committer_cli::tests::python_tests::PythonTest; use committer_cli::tracing_utils::configure_tracing; use starknet_api::block_hash::block_hash_calculator::{ @@ -21,30 +21,37 @@ pub struct CommitterCliArgs { command: Command, } +#[derive(Debug, Args)] +pub struct IoArgs { + /// File path to input. + #[clap(long, short = 'i')] + input_path: String, + + /// File path to output. + #[clap(long, short = 'o', default_value = "stdout")] + output_path: String, +} + #[derive(Debug, Subcommand)] enum Command { /// Calculates the block hash. BlockHash { - /// File path to output. - #[clap(long, short = 'o', default_value = "stdout")] - output_path: String, + #[clap(flatten)] + io_args: IoArgs, }, /// Calculates commitments needed for the block hash. BlockHashCommitments { - /// File path to output. - #[clap(long, short = 'o', default_value = "stdout")] - output_path: String, + #[clap(flatten)] + io_args: IoArgs, }, /// Given previous state tree skeleton and a state diff, computes the new commitment. Commit { - /// File path to output. - #[clap(long, short = 'o', default_value = "stdout")] - output_path: String, + #[clap(flatten)] + io_args: IoArgs, }, PythonTest { - /// File path to output. - #[clap(long, short = 'o', default_value = "stdout")] - output_path: String, + #[clap(flatten)] + io_args: IoArgs, /// Test name. #[clap(long)] @@ -66,20 +73,19 @@ async fn main() { info!("Starting committer-cli with args: \n{:?}", args); match args.command { - Command::Commit { output_path } => { - // TODO(Aner, 15/7/24): try moving read_from_stdin into function. - parse_and_commit(&read_from_stdin(), output_path, log_filter_handle).await; + Command::Commit { io_args: IoArgs { input_path, output_path } } => { + parse_and_commit(input_path, output_path, log_filter_handle).await; } - Command::PythonTest { output_path, test_name } => { + Command::PythonTest { io_args: IoArgs { input_path, output_path }, test_name } => { // Create PythonTest from test_name. let test = PythonTest::try_from(test_name) .unwrap_or_else(|error| panic!("Failed to create PythonTest: {}", error)); - let stdin_input = read_from_stdin(); + let input = read_input(input_path); // Run relevant test. let output = test - .run(Some(&stdin_input)) + .run(Some(&input)) .await .unwrap_or_else(|error| panic!("Failed to run test: {}", error)); @@ -87,8 +93,8 @@ async fn main() { write_to_file(&output_path, &output); } - Command::BlockHash { output_path } => { - let block_hash_input: BlockHashInput = load_from_stdin(); + Command::BlockHash { io_args: IoArgs { input_path, output_path } } => { + let block_hash_input: BlockHashInput = load_input(input_path); info!("Successfully loaded block hash input."); let block_hash = calculate_block_hash(block_hash_input.header, block_hash_input.block_commitments) @@ -97,8 +103,8 @@ async fn main() { info!("Successfully computed block hash {:?}.", block_hash); } - Command::BlockHashCommitments { output_path } => { - let commitments_input: BlockCommitmentsInput = load_from_stdin(); + Command::BlockHashCommitments { io_args: IoArgs { input_path, output_path } } => { + let commitments_input: BlockCommitmentsInput = load_input(input_path); info!("Successfully loaded block hash commitment input."); let commitments = calculate_block_commitments( &commitments_input.transactions_data, diff --git a/crates/committer_cli/src/parse_input/read.rs b/crates/committer_cli/src/parse_input/read.rs index dba859ba243..ebf61a5c24e 100644 --- a/crates/committer_cli/src/parse_input/read.rs +++ b/crates/committer_cli/src/parse_input/read.rs @@ -1,8 +1,9 @@ use std::fs::File; -use std::io::{self, BufWriter}; +use std::io::BufWriter; use serde::{Deserialize, Serialize}; use starknet_patricia::storage::errors::DeserializationError; +use tracing::info; use crate::parse_input::cast::InputImpl; use crate::parse_input::raw_input::RawInput; @@ -17,13 +18,23 @@ pub fn parse_input(input: &str) -> DeserializationResult { serde_json::from_str::(input)?.try_into() } -pub fn read_from_stdin() -> String { - io::read_to_string(io::stdin()).expect("Failed to read from stdin.") +pub fn read_input(input_path: String) -> String { + String::from_utf8( + std::fs::read(input_path.clone()) + .unwrap_or_else(|_| panic!("Failed to read from {input_path}")), + ) + .expect("Failed to convert bytes to string.") } -pub fn load_from_stdin Deserialize<'a>>() -> T { - let stdin = read_from_stdin(); - serde_json::from_str(&stdin).expect("Failed to load from stdin") +pub fn load_input Deserialize<'a>>(input_path: String) -> T { + info!("Reading input from file: {input_path}."); + let input_bytes = std::fs::read(input_path.clone()) + .unwrap_or_else(|_| panic!("Failed to read from {input_path}")); + info!("Done reading {} bytes from {input_path}. Deserializing...", input_bytes.len()); + let result = serde_json::from_slice::(&input_bytes) + .unwrap_or_else(|_| panic!("Failed to deserialize data from {input_path}")); + info!("Successfully deserialized data from {input_path}."); + result } pub fn write_to_file(file_path: &str, object: &T) { diff --git a/crates/native_blockifier/src/errors.rs b/crates/native_blockifier/src/errors.rs index 77d4c032487..07794fc49fc 100644 --- a/crates/native_blockifier/src/errors.rs +++ b/crates/native_blockifier/src/errors.rs @@ -1,6 +1,6 @@ use blockifier::blockifier::stateful_validator::StatefulValidatorError; use blockifier::blockifier::transaction_executor::TransactionExecutorError; -use blockifier::bouncer::BuiltinCount; +use blockifier::bouncer::BuiltinCounterMap; use blockifier::state::errors::StateError; use blockifier::transaction::errors::{ ParseError, @@ -104,7 +104,7 @@ pub enum NativeBlockifierInputError { #[derive(Debug, Error)] pub enum InvalidNativeBlockifierInputError { #[error("Invalid builtin count: {0:?}.")] - InvalidBuiltinCounts(BuiltinCount), + InvalidBuiltinCounts(BuiltinCounterMap), #[error("Invalid Wei gas price: {0}.")] InvalidL1GasPriceWei(u128), #[error("Invalid Fri gas price: {0}.")] diff --git a/crates/native_blockifier/src/py_block_executor.rs b/crates/native_blockifier/src/py_block_executor.rs index 9b50a8480d6..545c82125c0 100644 --- a/crates/native_blockifier/src/py_block_executor.rs +++ b/crates/native_blockifier/src/py_block_executor.rs @@ -197,7 +197,7 @@ impl PyBlockExecutor { optional_py_class_info: Option, ) -> NativeBlockifierResult> { let tx: Transaction = py_tx(tx, optional_py_class_info).expect(PY_TX_PARSING_ERR); - let tx_execution_info = self.tx_executor().execute(&tx)?; + let (tx_execution_info, _state_diff) = self.tx_executor().execute(&tx)?; let thin_tx_execution_info = ThinTransactionExecutionInfo::from_tx_execution_info(tx_execution_info); @@ -232,7 +232,7 @@ impl PyBlockExecutor { .into_iter() // Note: there might be less results than txs (if there is no room for all of them). .map(|result| match result { - Ok(tx_execution_info) => ( + Ok((tx_execution_info, _state_diff)) => ( true, ThinTransactionExecutionInfo::from_tx_execution_info( tx_execution_info, diff --git a/crates/native_blockifier/src/py_block_executor_test.rs b/crates/native_blockifier/src/py_block_executor_test.rs index d8ac772cbef..a6c52d4c14b 100644 --- a/crates/native_blockifier/src/py_block_executor_test.rs +++ b/crates/native_blockifier/src/py_block_executor_test.rs @@ -75,7 +75,7 @@ fn global_contract_cache_update() { ) .unwrap(); - assert_eq!(block_executor.contract_class_manager.get_casm_cache_size(), 0); + assert_eq!(block_executor.contract_class_manager.get_cache_size(), 0); let queried_contract_class = block_executor .tx_executor() @@ -86,7 +86,7 @@ fn global_contract_cache_update() { .unwrap(); assert_eq!(queried_contract_class, contract_class); - assert_eq!(block_executor.contract_class_manager.get_casm_cache_size(), 1); + assert_eq!(block_executor.contract_class_manager.get_cache_size(), 1); } #[test] diff --git a/crates/native_blockifier/src/py_objects.rs b/crates/native_blockifier/src/py_objects.rs index 65c82a110b5..3be08d0c638 100644 --- a/crates/native_blockifier/src/py_objects.rs +++ b/crates/native_blockifier/src/py_objects.rs @@ -8,23 +8,20 @@ use blockifier::blockifier::config::{ CairoNativeRunConfig, ConcurrencyConfig, ContractClassManagerConfig, + NativeClassesWhitelist, }; -use blockifier::bouncer::{BouncerConfig, BouncerWeights, BuiltinCount, HashMapWrapper}; +use blockifier::bouncer::{BouncerConfig, BouncerWeights}; use blockifier::state::contract_class_manager::DEFAULT_COMPILATION_REQUEST_CHANNEL_SIZE; use blockifier::state::global_cache::GLOBAL_CONTRACT_CACHE_SIZE_FOR_TEST; use blockifier::versioned_constants::VersionedConstantsOverrides; -use cairo_vm::types::builtin_name::BuiltinName; use cairo_vm::vm::runners::cairo_runner::ExecutionResources; use pyo3::prelude::*; +use starknet_api::core::ClassHash; use starknet_api::execution_resources::GasAmount; use starknet_sierra_multicompile::config::SierraCompilationConfig; -use crate::errors::{ - InvalidNativeBlockifierInputError, - NativeBlockifierError, - NativeBlockifierInputError, - NativeBlockifierResult, -}; +use crate::errors::{NativeBlockifierError, NativeBlockifierResult}; +use crate::py_utils::PyFelt; // From Rust to Python. @@ -61,18 +58,20 @@ pub struct PyVersionedConstantsOverrides { pub validate_max_n_steps: u32, pub max_recursion_depth: usize, pub invoke_tx_max_n_steps: u32, + pub max_n_events: usize, } #[pymethods] impl PyVersionedConstantsOverrides { #[new] - #[pyo3(signature = (validate_max_n_steps, max_recursion_depth, invoke_tx_max_n_steps))] + #[pyo3(signature = (validate_max_n_steps, max_recursion_depth, invoke_tx_max_n_steps, max_n_events))] pub fn create( validate_max_n_steps: u32, max_recursion_depth: usize, invoke_tx_max_n_steps: u32, + max_n_events: usize, ) -> Self { - Self { validate_max_n_steps, max_recursion_depth, invoke_tx_max_n_steps } + Self { validate_max_n_steps, max_recursion_depth, invoke_tx_max_n_steps, max_n_events } } } @@ -82,8 +81,9 @@ impl From for VersionedConstantsOverrides { validate_max_n_steps, max_recursion_depth, invoke_tx_max_n_steps, + max_n_events, } = py_versioned_constants_overrides; - Self { validate_max_n_steps, max_recursion_depth, invoke_tx_max_n_steps } + Self { validate_max_n_steps, max_recursion_depth, invoke_tx_max_n_steps, max_n_events } } } @@ -103,30 +103,10 @@ impl TryFrom for BouncerConfig { } } -fn hash_map_into_builtin_count( - builtins: HashMap, -) -> Result { - let mut wrapper = HashMapWrapper::new(); - for (builtin_name, count) in builtins.iter() { - let builtin = BuiltinName::from_str_with_suffix(builtin_name) - .ok_or(NativeBlockifierInputError::UnknownBuiltin(builtin_name.clone()))?; - wrapper.insert(builtin, *count); - } - let builtin_count: BuiltinCount = wrapper.into(); - if builtin_count.all_non_zero() { - Ok(builtin_count) - } else { - Err(NativeBlockifierInputError::InvalidNativeBlockifierInputError( - InvalidNativeBlockifierInputError::InvalidBuiltinCounts(builtin_count), - )) - } -} - fn hash_map_into_bouncer_weights( mut data: HashMap, ) -> NativeBlockifierResult { let l1_gas = data.remove(constants::L1_GAS_USAGE).expect("gas_weight must be present"); - let n_steps = data.remove(constants::N_STEPS_RESOURCE).expect("n_steps must be present"); let message_segment_length = data .remove(constants::MESSAGE_SEGMENT_LENGTH) .expect("message_segment_length must be present"); @@ -139,15 +119,8 @@ fn hash_map_into_bouncer_weights( .try_into() .unwrap_or_else(|err| panic!("Failed to convert 'sierra_gas' into GasAmount: {err}.")), ); - Ok(BouncerWeights { - l1_gas, - n_steps, - message_segment_length, - state_diff_size, - n_events, - builtin_count: hash_map_into_builtin_count(data)?, - sierra_gas, - }) + + Ok(BouncerWeights { l1_gas, message_segment_length, state_diff_size, n_events, sierra_gas }) } #[derive(Debug, Default, FromPyObject)] @@ -169,10 +142,11 @@ impl From for ConcurrencyConfig { #[derive(Clone, Debug, Default, FromPyObject)] pub struct PySierraCompilationConfig { pub sierra_to_native_compiler_path: String, - pub libcairo_native_runtime_path: String, pub max_native_bytecode_size: u64, pub max_cpu_time: u64, pub max_memory_usage: u64, + pub optimization_level: u8, + pub panic_on_compilation_failure: bool, } impl From for SierraCompilationConfig { @@ -186,17 +160,11 @@ impl From for SierraCompilationConfig { } else { Some(PathBuf::from(py_sierra_compilation_config.sierra_to_native_compiler_path)) }, - libcairo_native_runtime_path: if py_sierra_compilation_config - .libcairo_native_runtime_path - .is_empty() - { - None - } else { - Some(PathBuf::from(py_sierra_compilation_config.libcairo_native_runtime_path)) - }, max_native_bytecode_size: py_sierra_compilation_config.max_native_bytecode_size, max_cpu_time: py_sierra_compilation_config.max_cpu_time, max_memory_usage: py_sierra_compilation_config.max_memory_usage, + panic_on_compilation_failure: py_sierra_compilation_config.panic_on_compilation_failure, + optimization_level: py_sierra_compilation_config.optimization_level, ..Default::default() } } @@ -207,6 +175,8 @@ pub struct PyCairoNativeRunConfig { pub run_cairo_native: bool, pub wait_on_native_compilation: bool, pub channel_size: usize, + // Determines which contracts are allowd to run Cairo Native. `None` → All. + pub native_classes_whitelist: Option>, } impl Default for PyCairoNativeRunConfig { @@ -215,16 +185,25 @@ impl Default for PyCairoNativeRunConfig { run_cairo_native: false, wait_on_native_compilation: false, channel_size: DEFAULT_COMPILATION_REQUEST_CHANNEL_SIZE, + native_classes_whitelist: None, } } } impl From for CairoNativeRunConfig { fn from(py_cairo_native_run_config: PyCairoNativeRunConfig) -> Self { + let native_classes_whitelist = match py_cairo_native_run_config.native_classes_whitelist { + Some(felts) => NativeClassesWhitelist::Limited( + felts.into_iter().map(|felt| ClassHash(felt.0)).collect(), + ), + None => NativeClassesWhitelist::All, + }; + CairoNativeRunConfig { run_cairo_native: py_cairo_native_run_config.run_cairo_native, wait_on_native_compilation: py_cairo_native_run_config.wait_on_native_compilation, channel_size: py_cairo_native_run_config.channel_size, + native_classes_whitelist, } } } diff --git a/crates/native_blockifier/src/state_readers/py_state_reader.rs b/crates/native_blockifier/src/state_readers/py_state_reader.rs index 037a6f4b72f..778fcc6a716 100644 --- a/crates/native_blockifier/src/state_readers/py_state_reader.rs +++ b/crates/native_blockifier/src/state_readers/py_state_reader.rs @@ -84,7 +84,7 @@ impl StateReader for PyStateReader { py_versioned_raw_compiled_class.get_item(0)?.extract()?; // Extract and process the Sierra version - let (minor, major, patch): (u64, u64, u64) = + let (major, minor, patch): (u64, u64, u64) = py_versioned_raw_compiled_class.get_item(1)?.extract()?; let sierra_version = SierraVersion::new(major, minor, patch); diff --git a/crates/papyrus_p2p_sync/src/client/stream_builder.rs b/crates/papyrus_p2p_sync/src/client/stream_builder.rs index 0869fe5b925..b270af00b6c 100644 --- a/crates/papyrus_p2p_sync/src/client/stream_builder.rs +++ b/crates/papyrus_p2p_sync/src/client/stream_builder.rs @@ -77,13 +77,9 @@ where .map(|now_or_never_res| now_or_never_res.expect("Internal block receiver closed")) { if block_number >= current_block_number { - let block_data = - match Self::convert_sync_block_to_block_data(block_number, sync_block) { - Some(block_data) => block_data, - // If None is received then we don't use internal blocks for this stream - // TODO(Eitan): Remove this once we have a class manager component. - None => return None, - }; + // If None is received then we don't use internal blocks for this stream + // TODO(Eitan): Remove this once we have a class manager component. + let block_data = Self::convert_sync_block_to_block_data(block_number, sync_block)?; if block_number == current_block_number { return Some(block_data); } diff --git a/crates/papyrus_protobuf/build.rs b/crates/papyrus_protobuf/build.rs index f6da55625dd..7dc1429b1d6 100644 --- a/crates/papyrus_protobuf/build.rs +++ b/crates/papyrus_protobuf/build.rs @@ -12,10 +12,7 @@ fn get_valid_preinstalled_protoc_version() -> Option<(u32, u32)> { let parts: Vec<&str> = protoc_version_output.split_whitespace().collect(); // The returned string is in the format "libprotoc 25.1". We need to extract the version - let protoc_version_str = match parts.get(1) { - Some(version) => version, - None => return None, - }; + let protoc_version_str = parts.get(1)?; let (major, minor) = parse_protoc_version(protoc_version_str)?; // Protoc versions before 3.15 are not supported. if (major < 3) || (major == 3 && minor < 15) { None } else { Some((major, minor)) } diff --git a/crates/papyrus_rpc/src/v0_8/state.rs b/crates/papyrus_rpc/src/v0_8/state.rs index 7e0cd096e2e..c20c3846f35 100644 --- a/crates/papyrus_rpc/src/v0_8/state.rs +++ b/crates/papyrus_rpc/src/v0_8/state.rs @@ -212,9 +212,9 @@ impl EntryPointByType { impl From for EntryPointByType { fn from(entry_points: starknet_api_EntryPointByType) -> Self { Self { - constructor: entry_points.constructor.into_iter().map(EntryPoint::from).collect(), - external: entry_points.external.into_iter().map(EntryPoint::from).collect(), - l1handler: entry_points.l1handler.into_iter().map(EntryPoint::from).collect(), + constructor: entry_points.constructor, + external: entry_points.external, + l1handler: entry_points.l1handler, } } } diff --git a/crates/papyrus_state_reader/Cargo.toml b/crates/papyrus_state_reader/Cargo.toml index 1b81d026393..11c7be81f47 100644 --- a/crates/papyrus_state_reader/Cargo.toml +++ b/crates/papyrus_state_reader/Cargo.toml @@ -13,6 +13,7 @@ workspace = true [dependencies] blockifier.workspace = true +log.workspace = true papyrus_storage.workspace = true starknet-types-core.workspace = true starknet_api.workspace = true diff --git a/crates/papyrus_state_reader/src/papyrus_state.rs b/crates/papyrus_state_reader/src/papyrus_state.rs index 1bc09381b8f..232e42526b5 100644 --- a/crates/papyrus_state_reader/src/papyrus_state.rs +++ b/crates/papyrus_state_reader/src/papyrus_state.rs @@ -1,4 +1,3 @@ -#[cfg(feature = "cairo_native")] use std::sync::Arc; use blockifier::execution::contract_class::{ @@ -8,10 +7,9 @@ use blockifier::execution::contract_class::{ }; use blockifier::state::contract_class_manager::ContractClassManager; use blockifier::state::errors::{couple_casm_and_sierra, StateError}; -#[cfg(feature = "cairo_native")] -use blockifier::state::global_cache::CachedCairoNative; -use blockifier::state::global_cache::CachedCasm; +use blockifier::state::global_cache::CachedClass; use blockifier::state::state_api::{StateReader, StateResult}; +use log; use papyrus_storage::compiled_class::CasmStorageReader; use papyrus_storage::db::RO; use papyrus_storage::state::StateStorageReader; @@ -51,7 +49,7 @@ impl PapyrusReader { /// Returns a V1 contract with Sierra if V1 contract is found, or a V0 contract without Sierra /// if a V1 contract is not found, or an `Error` otherwise. - fn get_compiled_class_inner(&self, class_hash: ClassHash) -> StateResult { + fn get_compiled_class_from_db(&self, class_hash: ClassHash) -> StateResult { let state_number = StateNumber(self.latest_block); let class_declaration_block_number = self .reader()? @@ -62,6 +60,7 @@ impl PapyrusReader { Some(block_number) if block_number <= state_number.0); if class_is_declared { + // Cairo 1. let (option_casm, option_sierra) = self .reader()? .get_casm_and_sierra(&class_hash) @@ -72,23 +71,13 @@ impl PapyrusReader { database is inconsistent.", ); let sierra_version = SierraVersion::extract_from_program(&sierra.sierra_program)?; - let runnable_casm = RunnableCompiledClass::V1(CompiledClassV1::try_from(( - casm_compiled_class, - sierra_version, - ))?); - #[cfg(not(feature = "cairo_native"))] - let cached_casm = CachedCasm::WithoutSierra(runnable_casm); - - #[cfg(feature = "cairo_native")] - let cached_casm = if !self.contract_class_manager.run_cairo_native() { - CachedCasm::WithoutSierra(runnable_casm) - } else { - CachedCasm::WithSierra(runnable_casm, Arc::new(sierra)) - }; - - return Ok(cached_casm); + return Ok(CachedClass::V1( + CompiledClassV1::try_from((casm_compiled_class, sierra_version))?, + Arc::new(sierra), + )); } + // Possibly Cairo 0. let v0_compiled_class = self .reader()? .get_state_reader() @@ -97,56 +86,11 @@ impl PapyrusReader { match v0_compiled_class { Some(starknet_api_contract_class) => { - let runnable_casm = RunnableCompiledClass::V0(CompiledClassV0::try_from( - starknet_api_contract_class, - )?); - Ok(CachedCasm::WithoutSierra(runnable_casm)) + Ok(CachedClass::V0(CompiledClassV0::try_from(starknet_api_contract_class)?)) } None => Err(StateError::UndeclaredClassHash(class_hash)), } } - - /// Returns cached casm from cache if exists, otherwise fetches it from state. - fn get_cached_casm(&self, class_hash: ClassHash) -> StateResult { - match self.contract_class_manager.get_casm(&class_hash) { - Some(contract_class) => Ok(contract_class), - None => { - let runnable_casm_from_db = self.get_compiled_class_inner(class_hash)?; - self.contract_class_manager.set_casm(class_hash, runnable_casm_from_db.clone()); - Ok(runnable_casm_from_db) - } - } - } - - fn get_casm(&self, class_hash: ClassHash) -> StateResult { - Ok(self.get_cached_casm(class_hash)?.to_runnable_casm()) - } - - #[cfg(feature = "cairo_native")] - // Handles `get_compiled_class` under the assumption that native compilation has finished. - // Returns the native compiled class if the compilation succeeded and the runnable casm upon - // failure. - fn get_compiled_class_after_waiting_on_native_compilation( - &self, - class_hash: ClassHash, - casm: RunnableCompiledClass, - ) -> RunnableCompiledClass { - assert!( - self.contract_class_manager.wait_on_native_compilation(), - "this function should only be called when the waiting on native compilation flag is \ - on." - ); - let cached_native = self - .contract_class_manager - .get_native(&class_hash) - .expect("Should have native in cache in sync compilation flow."); - match cached_native { - CachedCairoNative::Compiled(compiled_native) => { - RunnableCompiledClass::from(compiled_native) - } - CachedCairoNative::CompilationFailed => casm, - } - } } // Currently unused - will soon replace the same `impl` for `PapyrusStateReader`. @@ -192,67 +136,20 @@ impl StateReader for PapyrusReader { fn get_compiled_class(&self, class_hash: ClassHash) -> StateResult { // Assumption: the global cache is cleared upon reverted blocks. - #[cfg(not(feature = "cairo_native"))] - return self.get_casm(class_hash); - - #[cfg(feature = "cairo_native")] - { - if !self.contract_class_manager.run_cairo_native() { - // Cairo native is disabled - fetch and return the casm. - return self.get_casm(class_hash); - } - - // Try fetching native from cache. - if let Some(cached_native) = self.contract_class_manager.get_native(&class_hash) { - match cached_native { - CachedCairoNative::Compiled(compiled_native) => { - return Ok(RunnableCompiledClass::from(compiled_native)); - } - CachedCairoNative::CompilationFailed => { - // The compilation previously failed. Make no further compilation attempts. - // Fetch and return the casm. - return self.get_casm(class_hash); - } - } - }; - - // Native not found in cache. Get the cached casm. - let cached_casm = self.get_cached_casm(class_hash)?; - - // If the fetched casm includes a Sierra, send a compilation request. - // Return the casm. - // NOTE: We assume that whenever the fetched casm does not include a Sierra, compilation - // to native is not required. - match cached_casm { - CachedCasm::WithSierra(runnable_casm, sierra) => { - if let RunnableCompiledClass::V1(casm_v1) = runnable_casm.clone() { - self.contract_class_manager.send_compilation_request(( - class_hash, - sierra.clone(), - casm_v1.clone(), - )); - if self.contract_class_manager.wait_on_native_compilation() { - // With this config, sending a compilation request blocks the sender - // until compilation completes. Retry fetching Native from cache. - return Ok(self - .get_compiled_class_after_waiting_on_native_compilation( - class_hash, - runnable_casm, - )); - } - } else { - panic!( - "A Sierra file was saved in cache for a Cairo0 contract - class hash \ - {class_hash}. This is probably a bug as no Sierra file exists for a \ - Cairo0 contract." - ); - } - - Ok(runnable_casm) - } - CachedCasm::WithoutSierra(runnable_casm) => Ok(runnable_casm), - } + // TODO(Yoni): move this logic to a separate reader. Move tests from papyrus_state. + if let Some(runnable_class) = self.contract_class_manager.get_runnable(&class_hash) { + return Ok(runnable_class); } + + let cached_class = self.get_compiled_class_from_db(class_hash)?; + self.contract_class_manager.set_and_compile(class_hash, cached_class.clone()); + // Access the cache again in case the class was compiled. + Ok(self.contract_class_manager.get_runnable(&class_hash).unwrap_or_else(|| { + // Edge case that should not be happen if the cache size is big enough. + // TODO(Yoni) consider having an atomic set-and-get. + log::error!("Class is missing immediately after being cached."); + cached_class.to_runnable() + })) } fn get_compiled_class_hash(&self, _class_hash: ClassHash) -> StateResult { diff --git a/crates/papyrus_state_reader/src/papyrus_state_test.rs b/crates/papyrus_state_reader/src/papyrus_state_test.rs index d1e94af1545..ea77bb2307c 100644 --- a/crates/papyrus_state_reader/src/papyrus_state_test.rs +++ b/crates/papyrus_state_reader/src/papyrus_state_test.rs @@ -8,6 +8,8 @@ use blockifier::execution::entry_point::CallEntryPoint; use blockifier::retdata; use blockifier::state::cached_state::CachedState; use blockifier::state::contract_class_manager::ContractClassManager; +#[cfg(feature = "cairo_native")] +use blockifier::state::global_cache::{CachedCairoNative, CachedClass}; use blockifier::state::state_api::StateReader; use blockifier::test_utils::contracts::FeatureContract; use blockifier::test_utils::{trivial_external_entry_point_new, CairoVersion, RunnableCairo1}; @@ -152,8 +154,6 @@ fn test_get_compiled_class_without_native_in_cache( #[cfg(not(feature = "cairo_native"))] assert!(!run_cairo_native); - // We store the sierra with the casm only when the casm is cairo1 and the native flag is enabled - let cached_with_sierra = run_cairo_native && matches!(cairo_version, CairoVersion::Cairo1(_)); let test_contract = FeatureContract::TestContract(cairo_version); let test_class_hash = test_contract.get_class_hash(); let contract_manager_config = ContractClassManagerConfig::create_for_testing( @@ -163,33 +163,36 @@ fn test_get_compiled_class_without_native_in_cache( let papyrus_reader = build_papyrus_state_reader_and_declare_contract(test_contract, contract_manager_config); - #[cfg(feature = "cairo_native")] - assert!(papyrus_reader.contract_class_manager.get_native(&test_class_hash).is_none()); + // Sanity check - the cache is empty. + assert!(papyrus_reader.contract_class_manager.get_runnable(&test_class_hash).is_none()); let compiled_class = papyrus_reader.get_compiled_class(test_class_hash).unwrap(); - if cached_with_sierra { - // TODO: Test that a compilation request was sent. - if wait_on_native_compilation { - #[cfg(feature = "cairo_native")] - assert_matches!( - compiled_class, - RunnableCompiledClass::V1Native(_), - "We should have waited to the native class." - ); - } else { - assert_matches!( + match cairo_version { + CairoVersion::Cairo1(_) => { + // TODO: Test that a compilation request was sent. + if wait_on_native_compilation { + #[cfg(feature = "cairo_native")] + assert_matches!( + compiled_class, + RunnableCompiledClass::V1Native(_), + "We should have waited to the native class." + ); + } else { + assert_matches!( + compiled_class, + RunnableCompiledClass::V1(_), + "We do not wait for native, return the cairo1 casm." + ); + } + } + CairoVersion::Cairo0 => { + assert_eq!( compiled_class, - RunnableCompiledClass::V1(_), - "We do not wait for native, return the cairo1 casm." + test_contract.get_runnable_class(), + "`get_compiled_class` should return the casm." ); } - } else { - assert_eq!( - compiled_class, - test_contract.get_runnable_class(), - "`get_compiled_class` should return the casm" - ); } } @@ -208,7 +211,10 @@ fn test_get_compiled_class_when_native_is_cached() { if let RunnableCompiledClass::V1Native(native_compiled_class) = test_contract.get_runnable_class() { - papyrus_reader.contract_class_manager.set_native(test_class_hash, native_compiled_class); + papyrus_reader.contract_class_manager.set_and_compile( + test_class_hash, + CachedClass::V1Native(CachedCairoNative::Compiled(native_compiled_class)), + ); } else { panic!("Expected NativeCompiledClassV1"); } diff --git a/crates/papyrus_storage/src/serialization/serializers.rs b/crates/papyrus_storage/src/serialization/serializers.rs index 8daf2510c2b..e6d6fc1a27c 100644 --- a/crates/papyrus_storage/src/serialization/serializers.rs +++ b/crates/papyrus_storage/src/serialization/serializers.rs @@ -412,6 +412,7 @@ auto_storage_serde! { V0_13_2_1 = 17, V0_13_3 = 18, V0_13_4 = 19, + V0_13_5 = 20, } pub struct StateDiffCommitment(pub PoseidonHash); pub struct Tip(pub u64); diff --git a/crates/papyrus_test_utils/src/lib.rs b/crates/papyrus_test_utils/src/lib.rs index ababd0a8318..ccd7c9d56e7 100644 --- a/crates/papyrus_test_utils/src/lib.rs +++ b/crates/papyrus_test_utils/src/lib.rs @@ -491,6 +491,7 @@ auto_impl_get_test_instance! { V0_13_2_1 = 17, V0_13_3 = 18, V0_13_4 = 19, + V0_13_5 = 20, } pub struct Calldata(pub Arc>); diff --git a/crates/sequencing/papyrus_consensus/src/bin/run_simulation.rs b/crates/sequencing/papyrus_consensus/src/bin/run_simulation.rs index 65f32c7780c..91ccb7fce17 100644 --- a/crates/sequencing/papyrus_consensus/src/bin/run_simulation.rs +++ b/crates/sequencing/papyrus_consensus/src/bin/run_simulation.rs @@ -181,7 +181,9 @@ impl LockDir { impl Drop for LockDir { fn drop(&mut self) { - let _ = self.lockfile.unlock(); + // Due to [#48919](https://github.com/rust-lang/rust/issues/48919) we use fully qualified + // syntax (from rust 1.84), instead of `self.lockfile.unlock()`. + let _ = fs2::FileExt::unlock(&self.lockfile); } } diff --git a/crates/sequencing/papyrus_consensus/src/single_height_consensus.rs b/crates/sequencing/papyrus_consensus/src/single_height_consensus.rs index 4800ea83db4..26069bb16bb 100644 --- a/crates/sequencing/papyrus_consensus/src/single_height_consensus.rs +++ b/crates/sequencing/papyrus_consensus/src/single_height_consensus.rs @@ -571,7 +571,7 @@ impl SingleHeightConsensus { panic!("State machine should not send repeat votes: old={:?}, new={:?}", old, vote); } context.broadcast(ConsensusMessage::Vote(vote.clone())).await?; - if last_vote.as_ref().map_or(false, |last| round < last.round) { + if last_vote.as_ref().is_some_and(|last| round < last.round) { return Ok(Vec::new()); } *last_vote = Some(vote); diff --git a/crates/sequencing/papyrus_consensus/src/state_machine.rs b/crates/sequencing/papyrus_consensus/src/state_machine.rs index 84215d7038f..810b833116e 100644 --- a/crates/sequencing/papyrus_consensus/src/state_machine.rs +++ b/crates/sequencing/papyrus_consensus/src/state_machine.rs @@ -410,7 +410,7 @@ impl StateMachine { return VecDeque::new(); } let mut output = if proposal_id.is_some_and(|v| { - self.locked_value_round.map_or(true, |(locked_value, _)| v == locked_value) + self.locked_value_round.is_none_or(|(locked_value, _)| v == locked_value) }) { VecDeque::from([StateMachineEvent::Prevote(*proposal_id, self.round)]) } else { @@ -438,7 +438,7 @@ impl StateMachine { return VecDeque::new(); } let mut output = if proposal_id.is_some_and(|v| { - self.locked_value_round.map_or(true, |(locked_value, locked_round)| { + self.locked_value_round.is_none_or(|(locked_value, locked_round)| { locked_round <= *valid_round || locked_value == v }) }) { diff --git a/crates/sequencing/papyrus_consensus_orchestrator/resources/central_state_diff.json b/crates/sequencing/papyrus_consensus_orchestrator/resources/central_state_diff.json index 2a96fcf4414..36421d86b70 100644 --- a/crates/sequencing/papyrus_consensus_orchestrator/resources/central_state_diff.json +++ b/crates/sequencing/papyrus_consensus_orchestrator/resources/central_state_diff.json @@ -33,7 +33,7 @@ "price_in_fri": "0xd" }, "sequencer_address": "0x7", - "starknet_version": "0.13.4", + "starknet_version": "0.13.5", "use_kzg_da": true } } diff --git a/crates/starknet_api/src/block.rs b/crates/starknet_api/src/block.rs index dbd0fe78969..1759b08d6c6 100644 --- a/crates/starknet_api/src/block.rs +++ b/crates/starknet_api/src/block.rs @@ -98,7 +98,9 @@ starknet_version_enum! { (V0_13_2_1, 0, 13, 2, 1), (V0_13_3, 0, 13, 3), (V0_13_4, 0, 13, 4), - V0_13_4 + (V0_13_5, 0, 13, 5), + V0_13_5 + } impl Default for StarknetVersion { diff --git a/crates/starknet_api/src/contract_class.rs b/crates/starknet_api/src/contract_class.rs index 4d4b742883f..55611d2b3e9 100644 --- a/crates/starknet_api/src/contract_class.rs +++ b/crates/starknet_api/src/contract_class.rs @@ -2,6 +2,7 @@ use std::fmt::Display; use std::str::FromStr; use cairo_lang_starknet_classes::casm_contract_class::CasmContractClass; +use cairo_lang_starknet_classes::compiler_version::VersionId; use derive_more::Deref; use semver::Version; use serde::{Deserialize, Serialize}; @@ -30,6 +31,10 @@ pub enum EntryPointType { L1Handler, } +fn u64_to_usize(val: u64) -> usize { + val.try_into().expect("Failed to convert u64 version tag to usize.") +} + pub type VersionedCasm = (CasmContractClass, SierraVersion); /// Represents a raw Starknet contract class. @@ -53,6 +58,16 @@ impl ContractClass { #[derive(Deref, Serialize, Deserialize, Clone, Debug, Eq, PartialEq, PartialOrd)] pub struct SierraVersion(Version); +impl From for VersionId { + fn from(val: SierraVersion) -> Self { + VersionId { + major: u64_to_usize(val.0.major), + minor: u64_to_usize(val.0.minor), + patch: u64_to_usize(val.0.patch), + } + } +} + impl SierraVersion { /// Version of deprecated contract class (Cairo 0). pub const DEPRECATED: Self = Self(Version::new(0, 0, 0)); diff --git a/crates/starknet_batcher/src/transaction_executor.rs b/crates/starknet_batcher/src/transaction_executor.rs index e8413cccadb..870e67682de 100644 --- a/crates/starknet_batcher/src/transaction_executor.rs +++ b/crates/starknet_batcher/src/transaction_executor.rs @@ -25,6 +25,9 @@ impl TransactionExecutorTrait for TransactionExecu txs: &[BlockifierTransaction], ) -> Vec> { self.execute_txs(txs) + .into_iter() + .map(|res| res.map(|(tx_execution_info, _state_diff)| tx_execution_info)) + .collect() } /// Finalizes the block creation and returns the commitment state diff, visited /// segments mapping and bouncer. diff --git a/crates/starknet_client/resources/reader/block_post_0_13_4.json b/crates/starknet_client/resources/reader/block_post_0_13_4.json index aed0db13316..ed58f970c36 100644 --- a/crates/starknet_client/resources/reader/block_post_0_13_4.json +++ b/crates/starknet_client/resources/reader/block_post_0_13_4.json @@ -336,5 +336,5 @@ "actual_fee": "0xdc24bd9e78" } ], - "starknet_version": "0.13.4" -} + "starknet_version": "0.13.5" +} \ No newline at end of file diff --git a/crates/starknet_monitoring_endpoint/src/test_utils.rs b/crates/starknet_monitoring_endpoint/src/test_utils.rs index 648df04e704..9e041c90d7a 100644 --- a/crates/starknet_monitoring_endpoint/src/test_utils.rs +++ b/crates/starknet_monitoring_endpoint/src/test_utils.rs @@ -29,7 +29,7 @@ impl IsAliveClient { self.client .request(build_request(&self.socket.ip(), self.socket.port(), ALIVE)) .await - .map_or(false, |response| response.status().is_success()) + .is_ok_and(|response| response.status().is_success()) } /// Blocks until 'alive', up to a maximum number of query attempts. Returns 'Ok(())' if the diff --git a/crates/starknet_sierra_multicompile/src/command_line_compiler.rs b/crates/starknet_sierra_multicompile/src/command_line_compiler.rs index f91ff4ed465..b960f8b8d89 100644 --- a/crates/starknet_sierra_multicompile/src/command_line_compiler.rs +++ b/crates/starknet_sierra_multicompile/src/command_line_compiler.rs @@ -55,14 +55,12 @@ impl SierraToCasmCompiler for CommandLineCompiler { "--max-bytecode-size", &self.config.max_casm_bytecode_size.to_string(), ]; - let env_vars = vec![]; let resource_limits = ResourceLimits::new(None, None, None); let stdout = compile_with_args( compiler_binary_path, contract_class, additional_args, - env_vars, resource_limits, )?; Ok(serde_json::from_slice::(&stdout)?) @@ -81,17 +79,8 @@ impl SierraToNativeCompiler for CommandLineCompiler { let output_file_path = output_file.path().to_str().ok_or( CompilationUtilError::UnexpectedError("Failed to get output file path".to_owned()), )?; - let additional_args = [output_file_path]; - let mut env_vars = vec![]; - // Overrides the cairo native runtime library environment variable defined in config.toml. - if let Some(path) = &self.config.libcairo_native_runtime_path { - env_vars.push(( - "CAIRO_NATIVE_RUNTIME_LIBRARY", - path.to_str() - .expect("Failed to convert cairo native runtime library path to string"), - )); - }; - + let optimization_level = self.config.optimization_level.to_string(); + let additional_args = [output_file_path, "--opt-level", &optimization_level]; let resource_limits = ResourceLimits::new( Some(self.config.max_cpu_time), Some(self.config.max_native_bytecode_size), @@ -101,14 +90,14 @@ impl SierraToNativeCompiler for CommandLineCompiler { compiler_binary_path, contract_class, &additional_args, - env_vars, resource_limits, )?; - // This should be fine since we dont use it - let aot_executor = AotContractExecutor::from_path(Path::new(&output_file_path))?.unwrap(); + Ok(AotContractExecutor::from_path(Path::new(&output_file_path))?.unwrap()) + } - Ok(aot_executor) + fn panic_on_compilation_failure(&self) -> bool { + self.config.panic_on_compilation_failure } } @@ -116,7 +105,6 @@ fn compile_with_args( compiler_binary_path: &Path, contract_class: ContractClass, additional_args: &[&str], - env_vars: Vec<(&str, &str)>, resource_limits: ResourceLimits, ) -> Result, CompilationUtilError> { // Create a temporary file to store the Sierra contract class. @@ -132,9 +120,6 @@ fn compile_with_args( // TODO(Arni, Avi): Setup the ulimit for the process. let mut command = Command::new(compiler_binary_path.as_os_str()); command.arg(temp_file_path).args(additional_args); - for (name, value) in env_vars { - command.env(name, value); - } // Apply the resource limits to the command. resource_limits.apply(&mut command); diff --git a/crates/starknet_sierra_multicompile/src/compile_test.rs b/crates/starknet_sierra_multicompile/src/compile_test.rs index a59b3920835..ac02203986d 100644 --- a/crates/starknet_sierra_multicompile/src/compile_test.rs +++ b/crates/starknet_sierra_multicompile/src/compile_test.rs @@ -14,6 +14,7 @@ use crate::config::{ DEFAULT_MAX_CPU_TIME, DEFAULT_MAX_MEMORY_USAGE, DEFAULT_MAX_NATIVE_BYTECODE_SIZE, + DEFAULT_OPTIMIZATION_LEVEL, }; use crate::errors::CompilationUtilError; use crate::test_utils::contract_class_from_file; @@ -24,15 +25,17 @@ use crate::SierraToNativeCompiler; const SIERRA_COMPILATION_CONFIG: SierraCompilationConfig = SierraCompilationConfig { max_casm_bytecode_size: DEFAULT_MAX_CASM_BYTECODE_SIZE, sierra_to_native_compiler_path: None, - libcairo_native_runtime_path: None, max_native_bytecode_size: DEFAULT_MAX_NATIVE_BYTECODE_SIZE, max_cpu_time: DEFAULT_MAX_CPU_TIME, max_memory_usage: DEFAULT_MAX_MEMORY_USAGE, + panic_on_compilation_failure: true, + optimization_level: DEFAULT_OPTIMIZATION_LEVEL, }; fn command_line_compiler() -> CommandLineCompiler { CommandLineCompiler::new(SIERRA_COMPILATION_CONFIG) } + fn get_test_contract() -> ContractClass { env::set_current_dir(resolve_project_relative_path(TEST_FILES_FOLDER).unwrap()) .expect("Failed to set current dir."); diff --git a/crates/starknet_sierra_multicompile/src/config.rs b/crates/starknet_sierra_multicompile/src/config.rs index ead8ce52884..80deb413f41 100644 --- a/crates/starknet_sierra_multicompile/src/config.rs +++ b/crates/starknet_sierra_multicompile/src/config.rs @@ -9,8 +9,9 @@ use validator::Validate; pub const DEFAULT_MAX_CASM_BYTECODE_SIZE: usize = 80 * 1024; // TODO(Noa): Reconsider the default values. pub const DEFAULT_MAX_NATIVE_BYTECODE_SIZE: u64 = 15 * 1024 * 1024; -pub const DEFAULT_MAX_CPU_TIME: u64 = 15; +pub const DEFAULT_MAX_CPU_TIME: u64 = 20; pub const DEFAULT_MAX_MEMORY_USAGE: u64 = 5 * 1024 * 1024 * 1024; +pub const DEFAULT_OPTIMIZATION_LEVEL: u8 = 2; #[derive(Clone, Debug, Serialize, Deserialize, Validate, PartialEq)] pub struct SierraCompilationConfig { @@ -22,10 +23,11 @@ pub struct SierraCompilationConfig { pub max_cpu_time: u64, /// Compilation process’s virtual memory (address space) byte limit. pub max_memory_usage: u64, + /// The level of optimization to apply during compilation. + pub optimization_level: u8, + pub panic_on_compilation_failure: bool, /// Sierra-to-Native compiler binary path. pub sierra_to_native_compiler_path: Option, - /// Path to Cairo native runtime library file. - pub libcairo_native_runtime_path: Option, } impl Default for SierraCompilationConfig { @@ -33,10 +35,11 @@ impl Default for SierraCompilationConfig { Self { max_casm_bytecode_size: DEFAULT_MAX_CASM_BYTECODE_SIZE, sierra_to_native_compiler_path: None, - libcairo_native_runtime_path: None, max_native_bytecode_size: DEFAULT_MAX_NATIVE_BYTECODE_SIZE, max_cpu_time: DEFAULT_MAX_CPU_TIME, max_memory_usage: DEFAULT_MAX_MEMORY_USAGE, + panic_on_compilation_failure: false, + optimization_level: DEFAULT_OPTIMIZATION_LEVEL, } } } @@ -68,6 +71,18 @@ impl SerializeConfig for SierraCompilationConfig { "Limitation of compilation process's virtual memory (bytes).", ParamPrivacyInput::Public, ), + ser_param( + "optimization_level", + &self.optimization_level, + "The level of optimization to apply during compilation.", + ParamPrivacyInput::Public, + ), + ser_param( + "panic_on_compilation_failure", + &self.panic_on_compilation_failure, + "Whether to panic on compilation failure.", + ParamPrivacyInput::Public, + ), ]); dump.extend(ser_optional_param( &self.sierra_to_native_compiler_path, @@ -76,13 +91,6 @@ impl SerializeConfig for SierraCompilationConfig { "The path to the Sierra-to-Native compiler binary.", ParamPrivacyInput::Public, )); - dump.extend(ser_optional_param( - &self.libcairo_native_runtime_path, - "".into(), - "libcairo_native_runtime_path", - "The path to the Cairo native runtime library file.", - ParamPrivacyInput::Public, - )); dump } } diff --git a/crates/starknet_sierra_multicompile/src/lib.rs b/crates/starknet_sierra_multicompile/src/lib.rs index 11773f51f5d..48597304e02 100644 --- a/crates/starknet_sierra_multicompile/src/lib.rs +++ b/crates/starknet_sierra_multicompile/src/lib.rs @@ -34,4 +34,6 @@ pub trait SierraToNativeCompiler: Send + Sync { &self, contract_class: ContractClass, ) -> Result; + + fn panic_on_compilation_failure(&self) -> bool; } diff --git a/crates/starknet_sierra_multicompile/src/resource_limits.rs b/crates/starknet_sierra_multicompile/src/resource_limits.rs index b9b6340a8eb..89c6b61782e 100644 --- a/crates/starknet_sierra_multicompile/src/resource_limits.rs +++ b/crates/starknet_sierra_multicompile/src/resource_limits.rs @@ -1,119 +1,9 @@ -#![allow(dead_code)] -use std::io; -use std::os::unix::process::CommandExt; -use std::process::Command; - -use rlimit::{setrlimit, Resource}; - -#[cfg(test)] -#[path = "resource_limits_test.rs"] -pub mod test; - -/// A struct to hold the information needed to set a limit on an individual OS resource. -struct RLimit { - /// A kind of resource. All resource constants are available on all unix platforms. - /// See for more information. - resource: Resource, - /// The soft limit for the resource. The limit may be increased by the process being limited. - soft_limit: u64, - /// The hard limit for the resource. May not be increased or exceeded by the affected process. - hard_limit: u64, - /// The units by which the resource is measured. - units: String, -} - -impl RLimit { - /// Set the resource limit for the current process. - fn set(&self) -> io::Result<()> { - // Use `println!` and not a logger because this method is called in an unsafe block, and we - // don't want to risk unexpected behavior. - println!( - "Setting {:?} limits: {} {} soft limit; {} {} hard limit.", - self.resource, self.soft_limit, self.units, self.hard_limit, self.units - ); - setrlimit(self.resource, self.soft_limit, self.hard_limit) - } -} - -/// A struct to hold resource limits for a process. -/// Each limit is optional and can be set to `None` if not needed. -pub struct ResourceLimits { - /// A limit (in seconds) on the amount of CPU time that the process can consume. - cpu_time: Option, - /// The maximum size (in bytes) of files that the process may create. - file_size: Option, - /// The maximum size (in bytes) of the process’s virtual memory (address space). - memory_size: Option, -} - -impl ResourceLimits { - pub fn new( - cpu_time: Option, - file_size: Option, - memory_size: Option, - ) -> ResourceLimits { - ResourceLimits { - cpu_time: cpu_time.map(|t| RLimit { - resource: Resource::CPU, - soft_limit: t, - hard_limit: t, - units: "seconds".to_string(), - }), - file_size: file_size.map(|x| RLimit { - resource: Resource::FSIZE, - soft_limit: x, - hard_limit: x, - units: "bytes".to_string(), - }), - memory_size: memory_size.map(|y| RLimit { - resource: Resource::AS, - soft_limit: y, - hard_limit: y, - units: "bytes".to_string(), - }), - } - } - - /// Set all defined resource limits for the current process. Limits set to `None` are ignored. - pub fn set(&self) -> io::Result<()> { - [self.cpu_time.as_ref(), self.file_size.as_ref(), self.memory_size.as_ref()] - .iter() - .flatten() - .try_for_each(|resource_limit| resource_limit.set()) - } - - /// Apply the resource limits to a given command object. This moves the [`ResourceLimits`] - /// struct into a closure that is held by the given command. The closure is executed in the - /// child process spawned by the command, right before it invokes the `exec` system call. - /// NOTE: This method is only implemented for Unix-like systems. - pub fn apply(self, command: &mut Command) -> &mut Command { - if self.cpu_time.is_none() && self.file_size.is_none() && self.memory_size.is_none() { - return command; - } - #[cfg(unix)] - unsafe { - // The `pre_exec` method runs a given closure after the parent process has been forked - // but before the child process calls `exec`. - // - // This closure runs in the child process after a `fork`, which primarily means that any - // modifications made to memory on behalf of this closure will **not** be visible to the - // parent process. This environment is often very constrained. Normal operations--such - // as using `malloc`, accessing environment variables through [`std::env`] or acquiring - // a mutex--are not guaranteed to work, because after `fork`, only one thread exists in - // the child process, while there may be multiple threads in the parent process. - // - // This closure is considered safe for the following reasons: - // 1. The [`ResourceLimits`] struct is fully constructed and moved into the closure. - // 2. No heap allocations occur in the `set` method. - // 3. `setrlimit` is an async-signal-safe system call, which means it is safe to invoke - // after `fork`. This is established in the POSIX `fork` specification: - // > ... the child process may only execute async-signal-safe operations until such - // time as one of the `exec` functions is called. - // (See ) - command.pre_exec(move || self.set()) - } - #[cfg(not(unix))] - // Not implemented for Windows. - unimplemented!("Resource limits are not implemented for Windows.") - } -} +#[cfg(unix)] +mod resource_limits_unix; +#[cfg(unix)] +pub use resource_limits_unix::ResourceLimits; + +#[cfg(windows)] +mod resource_limits_windows; +#[cfg(windows)] +pub use resource_limits_windows::ResourceLimits; diff --git a/crates/starknet_sierra_multicompile/src/resource_limits_test.rs b/crates/starknet_sierra_multicompile/src/resource_limits/resource_limits_test.rs similarity index 100% rename from crates/starknet_sierra_multicompile/src/resource_limits_test.rs rename to crates/starknet_sierra_multicompile/src/resource_limits/resource_limits_test.rs diff --git a/crates/starknet_sierra_multicompile/src/resource_limits/resource_limits_unix.rs b/crates/starknet_sierra_multicompile/src/resource_limits/resource_limits_unix.rs new file mode 100644 index 00000000000..5499dc0e17a --- /dev/null +++ b/crates/starknet_sierra_multicompile/src/resource_limits/resource_limits_unix.rs @@ -0,0 +1,114 @@ +use std::io; +use std::os::unix::process::CommandExt; +use std::process::Command; + +use rlimit::{setrlimit, Resource}; + +#[cfg(test)] +#[path = "resource_limits_test.rs"] +pub mod test; + +/// A struct to hold the information needed to set a limit on an individual OS resource. +struct RLimit { + /// A kind of resource. All resource constants are available on all unix platforms. + /// See for more information. + resource: Resource, + /// The soft limit for the resource. The limit may be increased by the process being limited. + soft_limit: u64, + /// The hard limit for the resource. May not be increased or exceeded by the affected process. + hard_limit: u64, + /// The units by which the resource is measured. + units: String, +} + +impl RLimit { + /// Set the resource limit for the current process. + fn set(&self) -> io::Result<()> { + // Use `println!` and not a logger because this method is called in an unsafe block, and we + // don't want to risk unexpected behavior. + println!( + "Setting {:?} limits: {} {} soft limit; {} {} hard limit.", + self.resource, self.soft_limit, self.units, self.hard_limit, self.units + ); + setrlimit(self.resource, self.soft_limit, self.hard_limit) + } +} + +/// A struct to hold resource limits for a process. +/// Each limit is optional and can be set to `None` if not needed. +/// NOTE: This struct is fully implemented only for Unix-like systems. +pub struct ResourceLimits { + /// A limit (in seconds) on the amount of CPU time that the process can consume. + cpu_time: Option, + /// The maximum size (in bytes) of files that the process may create. + file_size: Option, + /// The maximum size (in bytes) of the process’s virtual memory (address space). + memory_size: Option, +} + +impl ResourceLimits { + pub fn new( + cpu_time: Option, + file_size: Option, + memory_size: Option, + ) -> ResourceLimits { + ResourceLimits { + cpu_time: cpu_time.map(|t| RLimit { + resource: Resource::CPU, + soft_limit: t, + hard_limit: t, + units: "seconds".to_string(), + }), + file_size: file_size.map(|x| RLimit { + resource: Resource::FSIZE, + soft_limit: x, + hard_limit: x, + units: "bytes".to_string(), + }), + memory_size: memory_size.map(|y| RLimit { + resource: Resource::AS, + soft_limit: y, + hard_limit: y, + units: "bytes".to_string(), + }), + } + } + + /// Set all defined resource limits for the current process. Limits set to `None` are ignored. + pub fn set(&self) -> io::Result<()> { + [self.cpu_time.as_ref(), self.file_size.as_ref(), self.memory_size.as_ref()] + .iter() + .flatten() + .try_for_each(|resource_limit| resource_limit.set()) + } + + /// Apply the resource limits to a given command object. This moves the [`ResourceLimits`] + /// struct into a closure that is held by the given command. The closure is executed in the + /// child process spawned by the command, right before it invokes the `exec` system call. + pub fn apply(self, command: &mut Command) -> &mut Command { + if self.cpu_time.is_none() && self.file_size.is_none() && self.memory_size.is_none() { + return command; + } + unsafe { + // The `pre_exec` method runs a given closure after the parent process has been forked + // but before the child process calls `exec`. + // + // This closure runs in the child process after a `fork`, which primarily means that any + // modifications made to memory on behalf of this closure will **not** be visible to the + // parent process. This environment is often very constrained. Normal operations--such + // as using `malloc`, accessing environment variables through [`std::env`] or acquiring + // a mutex--are not guaranteed to work, because after `fork`, only one thread exists in + // the child process, while there may be multiple threads in the parent process. + // + // This closure is considered safe for the following reasons: + // 1. The [`ResourceLimits`] struct is fully constructed and moved into the closure. + // 2. No heap allocations occur in the `set` method. + // 3. `setrlimit` is an async-signal-safe system call, which means it is safe to invoke + // after `fork`. This is established in the POSIX `fork` specification: + // > ... the child process may only execute async-signal-safe operations until such + // time as one of the `exec` functions is called. + // (See ) + command.pre_exec(move || self.set()) + } + } +} diff --git a/crates/starknet_sierra_multicompile/src/resource_limits/resource_limits_windows.rs b/crates/starknet_sierra_multicompile/src/resource_limits/resource_limits_windows.rs new file mode 100644 index 00000000000..c0b09de8b77 --- /dev/null +++ b/crates/starknet_sierra_multicompile/src/resource_limits/resource_limits_windows.rs @@ -0,0 +1,28 @@ +use std::io; +use std::process::Command; + +/// A struct to hold resource limits for a process. +/// Each limit is optional and can be set to `None` if not needed. +/// NOTE: This is a trivial implementation for compiling on windows. +pub struct ResourceLimits; + +impl ResourceLimits { + pub fn new( + _cpu_time: Option, + _file_size: Option, + _memory_size: Option, + ) -> ResourceLimits { + ResourceLimits {} + } + + pub fn set(&self) -> io::Result<()> { + Ok(()) + } + + /// Apply the resource limits to a given command object. This moves the [`ResourceLimits`] + /// struct into a closure that is held by the given command. The closure is executed in the + /// child process spawned by the command, right before it invokes the `exec` system call. + pub fn apply(self, command: &mut Command) -> &mut Command { + command + } +} diff --git a/deployments/images/base/Dockerfile b/deployments/images/base/Dockerfile index 81da8373378..c2808bec23a 100644 --- a/deployments/images/base/Dockerfile +++ b/deployments/images/base/Dockerfile @@ -1,12 +1,7 @@ # Dockerfile with multi-stage builds for efficient dependency caching and lightweight final image. # For more on Docker stages, visit: https://docs.docker.com/build/building/multi-stage/ -# We use Cargo Chef to compile dependencies before compiling the rest of the crates. -# This approach ensures proper Docker caching, where dependency layers are cached until a dependency changes. -# Code changes in our crates won't affect these cached layers, making the build process more efficient. -# More info on Cargo Chef: https://github.com/LukeMathWalker/cargo-chef - -FROM ubuntu:22.04 AS base +FROM ubuntu:24.04 AS base COPY scripts/install_build_tools.sh . COPY scripts/dependencies.sh . diff --git a/deployments/images/papyrus/Dockerfile b/deployments/images/papyrus/Dockerfile index 18a4049d844..4faf52bcb44 100644 --- a/deployments/images/papyrus/Dockerfile +++ b/deployments/images/papyrus/Dockerfile @@ -6,21 +6,22 @@ INCLUDE deployments/images/base/Dockerfile # Compile the papyrus_node crate in release mode, ensuring dependencies are locked. FROM base AS builder COPY . . +RUN rustup toolchain install RUN cargo build --release --package papyrus_node -FROM base AS papyrus_node +FROM ubuntu:24.04 -ENV ID=1000 +ENV ID=1001 WORKDIR /app COPY --from=builder /target/release/papyrus_node /app/target/release/papyrus_node +COPY --from=builder /usr/bin/tini /usr/bin/tini COPY config/papyrus config/papyrus - # Create a new user "papyrus". RUN set -ex; \ - addgroup --gid ${ID} papyrus; \ - adduser --ingroup $(getent group ${ID} | cut -d: -f1) --uid ${ID} --gecos "" --disabled-password --home /app papyrus; \ + groupadd --gid ${ID} papyrus; \ + useradd --gid ${ID} --uid ${ID} --comment "" --create-home --home-dir /app papyrus; \ chown -R papyrus:papyrus /app # Expose RPC and monitoring ports. diff --git a/deployments/images/sequencer/Dockerfile b/deployments/images/sequencer/Dockerfile index ca7920c99a3..541d52773c5 100644 --- a/deployments/images/sequencer/Dockerfile +++ b/deployments/images/sequencer/Dockerfile @@ -1,4 +1,4 @@ -#syntax = devthefuture/dockerfile-x +# syntax = devthefuture/dockerfile-x INCLUDE deployments/images/base/Dockerfile @@ -7,21 +7,24 @@ INCLUDE deployments/images/base/Dockerfile FROM base AS builder WORKDIR /app COPY . . +# Installing rust version in rust-toolchain.toml +RUN rustup toolchain install RUN cargo build --bin starknet_sequencer_node -FROM base AS sequencer +FROM ubuntu:24.04 -ENV ID=1000 +ENV ID=1001 WORKDIR /app COPY --from=builder /app/target/debug/starknet_sequencer_node ./target/debug/starknet_sequencer_node +COPY --from=builder /usr/bin/tini /usr/bin/tini # Copy sequencer config COPY config/sequencer/default_config.json /app/config/sequencer/ # Create a new user "sequencer". RUN set -ex; \ - addgroup --gid ${ID} sequencer; \ - adduser --ingroup $(getent group ${ID} | cut -d: -f1) --uid ${ID} --gecos "" --disabled-password --home /app sequencer; \ + groupadd --gid ${ID} sequencer; \ + useradd --gid ${ID} --uid ${ID} --comment "" --create-home --home-dir /app sequencer; \ chown -R sequencer:sequencer /app # Expose RPC and monitoring ports. diff --git a/deployments/images/sequencer/dummy_recorder.Dockerfile b/deployments/images/sequencer/dummy_recorder.Dockerfile new file mode 100644 index 00000000000..08e80b51490 --- /dev/null +++ b/deployments/images/sequencer/dummy_recorder.Dockerfile @@ -0,0 +1,26 @@ +#syntax = devthefuture/dockerfile-x + +INCLUDE deployments/images/base/Dockerfile + +FROM base AS builder +WORKDIR /app +COPY . . +RUN cargo build --bin dummy_recorder + +FROM ubuntu:24.04 + +ENV ID=1000 +WORKDIR /app +COPY --from=builder /app/target/debug/dummy_recorder ./target/debug/dummy_recorder +COPY --from=builder /usr/bin/tini /usr/bin/tini + +RUN set -ex; \ + addgroup --gid ${ID} dummy_recorder; \ + adduser --ingroup $(getent group ${ID} | cut -d: -f1) --uid ${ID} --gecos "" --disabled-password --home /app dummy_recorder; \ + chown -R dummy_recorder:dummy_recorder /app + +EXPOSE 8080 + +USER ${ID} + +ENTRYPOINT ["tini", "--", "/app/target/debug/dummy_recorder"] diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 54b889c61b0..52e88dc40ec 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,5 +1,5 @@ [toolchain] -channel = "1.83" +channel = "1.85" components = ["rustc-dev"] profile = "default" targets = ["x86_64-unknown-linux-gnu"] diff --git a/scripts/build_native_blockifier.sh b/scripts/build_native_blockifier.sh index 294de8483be..e6dc77c78ef 100755 --- a/scripts/build_native_blockifier.sh +++ b/scripts/build_native_blockifier.sh @@ -7,18 +7,16 @@ function clean() { rm -rf venv || true } -function init_submodule() { - echo "Initializing submodule..." - git submodule update --init --recursive -} function build() { + ret=0 echo "Building..." pypy3.9 -m venv /tmp/venv source /tmp/venv/bin/activate - cargo build --release -p native_blockifier --features "cairo_native" || clean + rustup toolchain install + cargo build --release -p native_blockifier --features "cairo_native" || ret=$? clean + return $ret } -init_submodule && build diff --git a/scripts/generate_changelog.py b/scripts/generate_changelog.py index 24e92947d8b..a074a26aefb 100755 --- a/scripts/generate_changelog.py +++ b/scripts/generate_changelog.py @@ -5,15 +5,19 @@ # Usage: # scripts/generate_changelog.py --start --end --project -GIT_CLIFF_VERSION = "2.4.0" +GIT_CLIFF_VERSION = "2.7.0" PROJECT_TO_PATHS = {"blockifier": ["crates/blockifier/"], "all": []} + def prepare_git_cliff(version: str): """ Install git-cliff if missing. """ run_command( - command=f'cargo install --list | grep -q "git-cliff v{version}" || cargo install git-cliff@{version}' + command=( + f'cargo install --list | grep -q "git-cliff v{version}" || ' + f"cargo install git-cliff@{version}" + ) ) @@ -21,7 +25,8 @@ def build_command(project_name: str, start_tag: str, end_tag: str) -> str: paths = PROJECT_TO_PATHS[project_name] include_paths = " ".join((f"--include-path {path}" for path in paths)) return ( - f'git-cliff {start_tag}..{end_tag} -o changelog_{start_tag}_{end_tag}.md --ignore-tags ".*-dev.[0-9]+" {include_paths}' + f"git-cliff {start_tag}..{end_tag} -o changelog_{start_tag}_{end_tag}.md " + f'--ignore-tags ".*-dev.[0-9]+" --tag {end_tag} {include_paths}' ) @@ -32,7 +37,9 @@ def build_command(project_name: str, start_tag: str, end_tag: str) -> str: ) parser.add_argument("--end", type=str, help="The commit/tag that changelog's history ends at.") parser.add_argument( - "--project", choices=PROJECT_TO_PATHS.keys(), help="The project that the changelog is generated for." + "--project", + choices=PROJECT_TO_PATHS.keys(), + help="The project that the changelog is generated for.", ) args = parser.parse_args() prepare_git_cliff(version=GIT_CLIFF_VERSION) diff --git a/scripts/merge_paths.json b/scripts/merge_paths.json index ca5dc1b4348..e34991cf9e5 100644 --- a/scripts/merge_paths.json +++ b/scripts/merge_paths.json @@ -1,4 +1,5 @@ { "main-v0.13.2": "main-v0.13.4", - "main-v0.13.4": "main" + "main-v0.13.4": "main-v0.13.5", + "main-v0.13.5": "main" } diff --git a/scripts/run_tests.py b/scripts/run_tests.py index c6b2bd89f0a..6efe4e12ada 100755 --- a/scripts/run_tests.py +++ b/scripts/run_tests.py @@ -12,7 +12,7 @@ ) # Set of files which - if changed - should trigger tests for all packages. -ALL_TEST_TRIGGERS: Set[str] = {"Cargo.toml", "Cargo.lock"} +ALL_TEST_TRIGGERS: Set[str] = {"Cargo.toml", "Cargo.lock", "rust-toolchain.toml"} # Enum of base commands. diff --git a/scripts/rust_fmt.sh b/scripts/rust_fmt.sh old mode 100644 new mode 100755