diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml new file mode 100644 index 00000000..15faab75 --- /dev/null +++ b/.github/workflows/deploy-docs.yml @@ -0,0 +1,55 @@ +name: Deploy Docs + +on: + push: + branches: [master, master-se-docs-03, nm/03-docs] + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +concurrency: + group: pages + cancel-in-progress: false + +jobs: + build-and-deploy: + runs-on: ubuntu-latest + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + steps: + - uses: actions/checkout@v4 + + - uses: pnpm/action-setup@v4 + with: + version: 9 + + - uses: actions/setup-node@v4 + with: + node-version: 20 + cache: pnpm + cache-dependency-path: www/pnpm-lock.yaml + + - name: Install dependencies + run: pnpm install --frozen-lockfile + working-directory: www + + - name: Build site + run: pnpm build + working-directory: www + + - name: Configure Pages + uses: actions/configure-pages@v5 + + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + path: www/docs/dist + + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 + diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml index 7f94513a..d7c7331a 100644 --- a/.github/workflows/integration-tests.yml +++ b/.github/workflows/integration-tests.yml @@ -27,8 +27,9 @@ jobs: uses: actions/checkout@v4 - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@stable + uses: dtolnay/rust-toolchain@f7ccc83f9ed1e5b9c81d8a67d7ad1a747e22a561 # stable with: + toolchain: stable components: clippy, rustfmt - name: Generate benchmark fixtures @@ -86,6 +87,10 @@ jobs: el: ethrex tests: "execute_empty_block execute_mainnet_blocks prove_empty_block" threads: 12 + - zkvm: zisk + el: ethrex + tests: "execute_empty_block execute_mainnet_blocks" + threads: 1 # Custom Guest Programs - zkvm: sp1 diff --git a/.github/workflows/release-compiled-guest.yml b/.github/workflows/release-compiled-guest.yml new file mode 100644 index 00000000..8d34b226 --- /dev/null +++ b/.github/workflows/release-compiled-guest.yml @@ -0,0 +1,120 @@ +name: Release Compiled Guests + +on: + push: + branches: + - master + tags: + - 'v*' + +permissions: + contents: write + +env: + ERE_TAG: 0.0.15-d15d36a + +jobs: + compile-stateless-validator: + name: Compile ${{ matrix.el }}/${{ matrix.zkvm }} + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + include: + # Reth + - el: reth + zkvm: airbender + - el: reth + zkvm: openvm + - el: reth + zkvm: pico + - el: reth + zkvm: risc0 + - el: reth + zkvm: sp1 + - el: reth + zkvm: zisk + # Ethrex + - el: ethrex + zkvm: risc0 + - el: ethrex + zkvm: sp1 + - el: ethrex + zkvm: zisk + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Install Rust toolchain + uses: dtolnay/rust-toolchain@f7ccc83f9ed1e5b9c81d8a67d7ad1a747e22a561 # stable + with: + toolchain: stable + + - name: Pull compiler image + run: | + docker pull ghcr.io/eth-act/ere/ere-compiler-${{ matrix.zkvm }}:${ERE_TAG} + + - name: Apply zkVM patch + run: | + cargo run -p xtask -- ${{ matrix.zkvm }} + + - name: Compile guest + run: | + docker run \ + -v ./ere-guests:/guest \ + -v ./output:/output \ + ghcr.io/eth-act/ere/ere-compiler-${{ matrix.zkvm }}:${ERE_TAG} \ + --compiler-kind rust-customized \ + --guest-path /guest/stateless-validator/${{ matrix.el }}/${{ matrix.zkvm }} \ + --output-path output/${{ matrix.el }}-${{ matrix.zkvm }} + + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + name: ${{ matrix.el }}-${{ matrix.zkvm }} + path: output/${{ matrix.el }}-${{ matrix.zkvm }} + if-no-files-found: error + + create-release: + name: Create release + needs: compile-stateless-validator + runs-on: ubuntu-latest + if: github.ref_type == 'tag' + steps: + - name: Download all artifacts + uses: actions/download-artifact@v4 + with: + path: artifacts + merge-multiple: true + + - name: Display structure of downloaded files + run: ls -R artifacts + + - name: Release + uses: softprops/action-gh-release@v2 + with: + name: Compiled Guests (${{ github.ref_name }}) + files: artifacts/* + body: | + This release contains compiled guest programs for various zkVMs. + + Built with Ere compiler version: `${{ env.ERE_TAG }}`. + + ## Compiled guest programs + + ### Reth stateless validator + + - [`reth-airbender`](https://github.com/${{ github.repository }}/releases/download/${{ github.ref_name }}/reth-airbender) + - [`reth-openvm`](https://github.com/${{ github.repository }}/releases/download/${{ github.ref_name }}/reth-openvm) + - [`reth-pico`](https://github.com/${{ github.repository }}/releases/download/${{ github.ref_name }}/reth-pico) + - [`reth-risc0`](https://github.com/${{ github.repository }}/releases/download/${{ github.ref_name }}/reth-risc0) + - [`reth-sp1`](https://github.com/${{ github.repository }}/releases/download/${{ github.ref_name }}/reth-sp1) + - [`reth-zisk`](https://github.com/${{ github.repository }}/releases/download/${{ github.ref_name }}/reth-zisk) + + ### Ethrex stateless validator + + - [`ethrex-risc0`](https://github.com/${{ github.repository }}/releases/download/${{ github.ref_name }}/ethrex-risc0) + - [`ethrex-sp1`](https://github.com/${{ github.repository }}/releases/download/${{ github.ref_name }}/ethrex-sp1) + - [`ethrex-zisk`](https://github.com/${{ github.repository }}/releases/download/${{ github.ref_name }}/ethrex-zisk) + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/run-benchmark.yml b/.github/workflows/run-benchmark.yml index 18f4dde1..51418355 100644 --- a/.github/workflows/run-benchmark.yml +++ b/.github/workflows/run-benchmark.yml @@ -25,7 +25,7 @@ jobs: name: ${{ inputs.zkvm }} / ${{ inputs.el }} runs-on: [self-hosted-ghr, size-chungus-x64] env: - ERE_TAG: 0.0.15-d15c6b4 + ERE_TAG: 0.0.16-73a760a OPENVM_RUST_TOOLCHAIN: nightly-2025-08-07 RUSTC_WRAPPER: sccache SCCACHE_DIR: ${{ github.workspace }}/.sccache/ @@ -41,9 +41,12 @@ jobs: sudo apt-get install -y protobuf-compiler pkg-config libssl-dev sccache build-essential clang libclang-dev lz4 - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@stable + uses: dtolnay/rust-toolchain@f7ccc83f9ed1e5b9c81d8a67d7ad1a747e22a561 # stable + with: + toolchain: stable - name: Restore Rust cache + continue-on-error: true uses: jsign/action-cache@0aa95a6bc53b4dc5c7a53d773e183d8169ce2c01 with: action: restore @@ -60,11 +63,9 @@ jobs: - name: Pull ere images run: | - for variant in "base" "base-${{ inputs.zkvm }}" "compiler-${{ inputs.zkvm }}" "server-${{ inputs.zkvm }}"; do + for variant in "compiler-${{ inputs.zkvm }}" "server-${{ inputs.zkvm }}"; do src="docker.ethquokkaops.io/gh/eth-act/ere/ere-${variant}:${ERE_TAG}" - dst="ere-${variant}:${ERE_TAG}" docker pull "$src" - docker tag "$src" "$dst" done - name: Run benchmark @@ -73,12 +74,14 @@ jobs: RUST_LOG=warn,benchmark_runner=info \ ZKVM=${{ inputs.zkvm }} \ EL=${{ inputs.el }} \ + ERE_IMAGE_REGISTRY=docker.ethquokkaops.io/gh/eth-act/ere \ cargo test --release -p integration-tests -- --test-threads=1 ${{ inputs.tests }} - name: sccache stats run: sccache --show-stats || true - name: Save Rust cache + continue-on-error: true uses: jsign/action-cache@0aa95a6bc53b4dc5c7a53d773e183d8169ce2c01 with: action: save diff --git a/.github/workflows/rust-checks.yml b/.github/workflows/rust-checks.yml index bf1592a0..9a859eda 100644 --- a/.github/workflows/rust-checks.yml +++ b/.github/workflows/rust-checks.yml @@ -44,7 +44,9 @@ jobs: uses: actions/checkout@v4 - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@stable + uses: dtolnay/rust-toolchain@f7ccc83f9ed1e5b9c81d8a67d7ad1a747e22a561 # stable + with: + toolchain: stable - name: Cache dependencies uses: Swatinem/rust-cache@v2 @@ -74,8 +76,9 @@ jobs: sudo apt-get install -y protobuf-compiler - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@nightly + uses: dtolnay/rust-toolchain@881ba7bf39a41cda34ac9e123fb41b44ed08232f # nightly with: + toolchain: nightly components: clippy, rustfmt - name: Cache dependencies diff --git a/Cargo.lock b/Cargo.lock index a3698e93..50edf46a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -84,9 +84,9 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "alloy-chains" -version = "0.2.20" +version = "0.2.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bc32535569185cbcb6ad5fa64d989a47bccb9a08e27284b1f2a3ccf16e6d010" +checksum = "b163ff4acf0eac29af05a911397cc418a76e153467b859398adc26cb9335a611" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -97,21 +97,21 @@ dependencies = [ [[package]] name = "alloy-consensus" -version = "1.1.2" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b6440213a22df93a87ed512d2f668e7dc1d62a05642d107f82d61edc9e12370" +checksum = "41e46a465e50a339a817070ec23f06eb3fc9fbb8af71612868367b875a9d49e3" dependencies = [ "alloy-eips", "alloy-primitives", "alloy-rlp", "alloy-serde", - "alloy-trie 0.9.1", + "alloy-trie 0.9.2", "alloy-tx-macros", "arbitrary", "auto_impl", "borsh", "c-kzg", - "derive_more 2.0.1", + "derive_more 2.1.1", "either", "k256", "once_cell", @@ -125,9 +125,9 @@ dependencies = [ [[package]] name = "alloy-consensus-any" -version = "1.1.2" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15d0bea09287942405c4f9d2a4f22d1e07611c2dbd9d5bf94b75366340f9e6e0" +checksum = "07001b1693af794c7526aab400b42e38075f986ef8fef78841e5ebc745473e56" dependencies = [ "alloy-consensus", "alloy-eips", @@ -140,15 +140,15 @@ dependencies = [ [[package]] name = "alloy-dyn-abi" -version = "1.4.1" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdff496dd4e98a81f4861e66f7eaf5f2488971848bb42d9c892f871730245c8" +checksum = "369f5707b958927176265e8a58627fc6195e5dfa5c55689396e68b241b3a72e6" dependencies = [ "alloy-json-abi", "alloy-primitives", "alloy-sol-type-parser", "alloy-sol-types", - "derive_more 2.0.1", + "derive_more 2.1.1", "itoa", "serde", "serde_json", @@ -203,9 +203,9 @@ dependencies = [ [[package]] name = "alloy-eips" -version = "1.1.2" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bd2c7ae05abcab4483ce821f12f285e01c0b33804e6883dd9ca1569a87ee2be" +checksum = "707337efeb051ddbaece17a73eaec5150945a5a5541112f4146508248edc2e40" dependencies = [ "alloy-eip2124", "alloy-eip2930", @@ -217,7 +217,7 @@ dependencies = [ "auto_impl", "borsh", "c-kzg", - "derive_more 2.0.1", + "derive_more 2.1.1", "either", "ethereum_ssz", "ethereum_ssz_derive", @@ -241,7 +241,7 @@ dependencies = [ "alloy-rpc-types-eth", "alloy-sol-types", "auto_impl", - "derive_more 2.0.1", + "derive_more 2.1.1", "op-alloy", "op-revm", "revm", @@ -250,14 +250,14 @@ dependencies = [ [[package]] name = "alloy-genesis" -version = "1.1.2" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc47eaae86488b07ea8e20236184944072a78784a1f4993f8ec17b3aa5d08c21" +checksum = "64ba7afffa225272cf50c62ff04ac574adc7bfa73af2370db556340f26fcff5c" dependencies = [ "alloy-eips", "alloy-primitives", "alloy-serde", - "alloy-trie 0.9.1", + "alloy-trie 0.9.2", "borsh", "serde", "serde_with", @@ -265,9 +265,9 @@ dependencies = [ [[package]] name = "alloy-hardforks" -version = "0.4.5" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d9a33550fc21fd77a3f8b63e99969d17660eec8dcc50a95a80f7c9964f7680b" +checksum = "83ba208044232d14d4adbfa77e57d6329f51bc1acc21f5667bb7db72d88a0831" dependencies = [ "alloy-chains", "alloy-eip2124", @@ -279,9 +279,9 @@ dependencies = [ [[package]] name = "alloy-json-abi" -version = "1.4.1" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5513d5e6bd1cba6bdcf5373470f559f320c05c8c59493b6e98912fbe6733943f" +checksum = "84e3cf01219c966f95a460c95f1d4c30e12f6c18150c21a30b768af2a2a29142" dependencies = [ "alloy-primitives", "alloy-sol-type-parser", @@ -291,9 +291,9 @@ dependencies = [ [[package]] name = "alloy-json-rpc" -version = "1.1.2" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "003f46c54f22854a32b9cc7972660a476968008ad505427eabab49225309ec40" +checksum = "48562f9b4c4e1514cab54af16feaffc18194a38216bbd0c23004ec4667ad696b" dependencies = [ "alloy-primitives", "alloy-sol-types", @@ -306,9 +306,9 @@ dependencies = [ [[package]] name = "alloy-network" -version = "1.1.2" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f4029954d9406a40979f3a3b46950928a0fdcfe3ea8a9b0c17490d57e8aa0e3" +checksum = "364a5eaa598437d7a57bcbcb4b7fcb0518e192cf809a19b09b2b5cf73b9ba1cd" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -323,7 +323,7 @@ dependencies = [ "alloy-sol-types", "async-trait", "auto_impl", - "derive_more 2.0.1", + "derive_more 2.1.1", "futures-utils-wasm", "serde", "serde_json", @@ -332,9 +332,9 @@ dependencies = [ [[package]] name = "alloy-network-primitives" -version = "1.1.2" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7805124ad69e57bbae7731c9c344571700b2a18d351bda9e0eba521c991d1bcb" +checksum = "21af5255bd276e528ee625d97033884916e879a1c6edcd5b70a043bd440c0710" dependencies = [ "alloy-consensus", "alloy-eips", @@ -345,16 +345,16 @@ dependencies = [ [[package]] name = "alloy-primitives" -version = "1.4.1" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "355bf68a433e0fd7f7d33d5a9fc2583fde70bf5c530f63b80845f8da5505cf28" +checksum = "f6a0fb18dd5fb43ec5f0f6a20be1ce0287c79825827de5744afaa6c957737c33" dependencies = [ "alloy-rlp", "arbitrary", "bytes", "cfg-if 1.0.4", "const-hex", - "derive_more 2.0.1", + "derive_more 2.1.1", "foldhash 0.2.0", "getrandom 0.3.4", "hashbrown 0.16.1", @@ -366,6 +366,7 @@ dependencies = [ "proptest", "proptest-derive 0.6.0", "rand 0.9.2", + "rapidhash", "ruint", "rustc-hash", "serde", @@ -375,9 +376,9 @@ dependencies = [ [[package]] name = "alloy-provider" -version = "1.1.2" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d369e12c92870d069e0c9dc5350377067af8a056e29e3badf8446099d7e00889" +checksum = "5cc919fe241f9dd28c4c7f7dcff9e66e550c280bafe3545e1019622e1239db38" dependencies = [ "alloy-chains", "alloy-consensus", @@ -428,14 +429,14 @@ checksum = "64b728d511962dda67c1bc7ea7c03736ec275ed2cf4c35d9585298ac9ccf3b73" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] name = "alloy-rpc-client" -version = "1.1.2" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31c89883fe6b7381744cbe80fef638ac488ead4f1956a4278956a1362c71cd2e" +checksum = "2b587e63d8c4af437b0a7830dc12d24cb495e956cc8ecbf93e96d62c9cb55b13" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -456,9 +457,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types" -version = "1.1.2" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64e279e6d40ee40fe8f76753b678d8d5d260cb276dc6c8a8026099b16d2b43f4" +checksum = "97b3000edc72a300048cf461df94bfa29fc5d7760ddd88ca7d56ea6fc8b28729" dependencies = [ "alloy-primitives", "alloy-rpc-types-engine", @@ -469,9 +470,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-admin" -version = "1.1.2" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bcf50ccb65d29b8599f8f5e23dcac685f1d79459654c830cba381345760e901" +checksum = "ebb98103316e6f4a1ebc6e71328c2d18426cdd79fc999c44afd9f0f4e9f5edd6" dependencies = [ "alloy-genesis", "alloy-primitives", @@ -481,9 +482,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-anvil" -version = "1.1.2" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e176c26fdd87893b6afeb5d92099d8f7e7a1fe11d6f4fe0883d6e33ac5f31ba" +checksum = "f1207e852f30297d6918f91df3e76f758fa7b519ea1e49fbd7d961ce796663f9" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -493,9 +494,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-any" -version = "1.1.2" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b43c1622aac2508d528743fd4cfdac1dea92d5a8fa894038488ff7edd0af0b32" +checksum = "6ebc96cf29095c10a183fb7106a097fe12ca8dd46733895582da255407f54b29" dependencies = [ "alloy-consensus-any", "alloy-rpc-types-eth", @@ -504,14 +505,14 @@ dependencies = [ [[package]] name = "alloy-rpc-types-beacon" -version = "1.1.2" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1786681640d4c60f22b6b8376b0f3fa200360bf1c3c2cb913e6c97f51928eb1b" +checksum = "3cea7c1c22628b13b25d31fd63fa5dfa7fac0b0b78f1c89a5068102b653ff65c" dependencies = [ "alloy-eips", "alloy-primitives", "alloy-rpc-types-engine", - "derive_more 2.0.1", + "derive_more 2.1.1", "serde", "serde_json", "serde_with", @@ -520,28 +521,28 @@ dependencies = [ [[package]] name = "alloy-rpc-types-debug" -version = "1.1.2" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b2ca3a434a6d49910a7e8e51797eb25db42ef8a5578c52d877fcb26d0afe7bc" +checksum = "7e1a6b13b6f95b80d3ff770998f81e61811264eb1d18b88dfa11c80180acdc1b" dependencies = [ "alloy-primitives", - "derive_more 2.0.1", + "derive_more 2.1.1", "serde", "serde_with", ] [[package]] name = "alloy-rpc-types-engine" -version = "1.1.2" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4c53a8b0905d931e7921774a1830609713bd3e8222347963172b03a3ecc68" +checksum = "f35af673cc14e89813ab33671d79b6e73fe38788c5f3a8ec3a75476b58225f53" dependencies = [ "alloy-consensus", "alloy-eips", "alloy-primitives", "alloy-rlp", "alloy-serde", - "derive_more 2.0.1", + "derive_more 2.1.1", "ethereum_ssz", "ethereum_ssz_derive", "jsonwebtoken", @@ -552,9 +553,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" -version = "1.1.2" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed5fafb741c19b3cca4cdd04fa215c89413491f9695a3e928dee2ae5657f607e" +checksum = "9cc3f354a5079480acca0a6533d1d3838177a03ea494ef0ae8d1679efea88274" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -565,7 +566,7 @@ dependencies = [ "alloy-serde", "alloy-sol-types", "arbitrary", - "itertools 0.14.0", + "itertools 0.13.0", "serde", "serde_json", "serde_with", @@ -574,9 +575,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-mev" -version = "1.1.2" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49a97bfc6d9b411c85bb08e1174ddd3e5d61b10d3bd13f529d6609f733cb2f6f" +checksum = "10fbd905c35f780926ff0c4c2a74d3ce7d50576cb0e9997dc783ac99c6fd7afb" dependencies = [ "alloy-consensus", "alloy-eips", @@ -589,9 +590,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-trace" -version = "1.1.2" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c55324323aa634b01bdecb2d47462a8dce05f5505b14a6e5db361eef16eda476" +checksum = "6d782d80221dfaa5a2f8a7bf277370bdec10e4e8119f5a60d2e2b1adb2e806ca" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -603,9 +604,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-txpool" -version = "1.1.2" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96b1aa28effb6854be356ce92ed64cea3b323acd04c3f8bfb5126e2839698043" +checksum = "a3076c226bb4365f9c3ac0cd4082ba86208aaa1485cbf664383a90aba7c36b26" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -615,9 +616,9 @@ dependencies = [ [[package]] name = "alloy-serde" -version = "1.1.2" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6f180c399ca7c1e2fe17ea58343910cad0090878a696ff5a50241aee12fc529" +checksum = "a438ce4cd49ec4bc213868c1fe94f2fe103d4c3f22f6a42073db974f9c0962da" dependencies = [ "alloy-primitives", "arbitrary", @@ -627,9 +628,9 @@ dependencies = [ [[package]] name = "alloy-signer" -version = "1.1.2" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc39ad2c0a3d2da8891f4081565780703a593f090f768f884049aa3aa929cbc" +checksum = "389372d6ae4d62b88c8dca8238e4f7d0a7727b66029eb8a5516a908a03161450" dependencies = [ "alloy-primitives", "async-trait", @@ -642,9 +643,9 @@ dependencies = [ [[package]] name = "alloy-signer-local" -version = "1.1.2" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "930e17cb1e46446a193a593a3bfff8d0ecee4e510b802575ebe300ae2e43ef75" +checksum = "69c260e78b9c104c444f8a202f283d5e8c6637e6fa52a83f649ad6aaa0b91fd0" dependencies = [ "alloy-consensus", "alloy-network", @@ -658,23 +659,23 @@ dependencies = [ [[package]] name = "alloy-sol-macro" -version = "1.4.1" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3ce480400051b5217f19d6e9a82d9010cdde20f1ae9c00d53591e4a1afbb312" +checksum = "09eb18ce0df92b4277291bbaa0ed70545d78b02948df756bbd3d6214bf39a218" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] name = "alloy-sol-macro-expander" -version = "1.4.1" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d792e205ed3b72f795a8044c52877d2e6b6e9b1d13f431478121d8d4eaa9028" +checksum = "95d9fa2daf21f59aa546d549943f10b5cce1ae59986774019fbedae834ffe01b" dependencies = [ "alloy-sol-macro-input", "const-hex", @@ -683,16 +684,16 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", "syn-solidity", "tiny-keccak", ] [[package]] name = "alloy-sol-macro-input" -version = "1.4.1" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bd1247a8f90b465ef3f1207627547ec16940c35597875cdc09c49d58b19693c" +checksum = "9396007fe69c26ee118a19f4dee1f5d1d6be186ea75b3881adf16d87f8444686" dependencies = [ "const-hex", "dunce", @@ -700,15 +701,15 @@ dependencies = [ "macro-string", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", "syn-solidity", ] [[package]] name = "alloy-sol-type-parser" -version = "1.4.1" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "954d1b2533b9b2c7959652df3076954ecb1122a28cc740aa84e7b0a49f6ac0a9" +checksum = "af67a0b0dcebe14244fc92002cd8d96ecbf65db4639d479f5fcd5805755a4c27" dependencies = [ "serde", "winnow", @@ -716,9 +717,9 @@ dependencies = [ [[package]] name = "alloy-sol-types" -version = "1.4.1" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70319350969a3af119da6fb3e9bddb1bce66c9ea933600cb297c8b1850ad2a3c" +checksum = "09aeea64f09a7483bdcd4193634c7e5cf9fd7775ee767585270cd8ce2d69dc95" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -728,14 +729,14 @@ dependencies = [ [[package]] name = "alloy-transport" -version = "1.1.2" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cae82426d98f8bc18f53c5223862907cac30ab8fc5e4cd2bb50808e6d3ab43d8" +checksum = "f01c27edb3c0926919586a231d99e06284f9239da6044b5682033ef781e1cc62" dependencies = [ "alloy-json-rpc", "auto_impl", "base64", - "derive_more 2.0.1", + "derive_more 2.1.1", "futures", "futures-utils-wasm", "parking_lot", @@ -751,9 +752,9 @@ dependencies = [ [[package]] name = "alloy-transport-http" -version = "1.1.2" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90aa6825760905898c106aba9c804b131816a15041523e80b6d4fe7af6380ada" +checksum = "2cc57657fd3249fc8324cbbc8edbb7d5114af5fbc7c6c32dff944d6b5922f400" dependencies = [ "alloy-json-rpc", "alloy-transport", @@ -773,7 +774,7 @@ dependencies = [ "alloy-primitives", "alloy-rlp", "arrayvec", - "derive_more 2.0.1", + "derive_more 2.1.1", "nybbles 0.3.4", "smallvec", "tracing", @@ -781,16 +782,16 @@ dependencies = [ [[package]] name = "alloy-trie" -version = "0.9.1" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3412d52bb97c6c6cc27ccc28d4e6e8cf605469101193b50b0bd5813b1f990b5" +checksum = "2b77b56af09ead281337d06b1d036c88e2dc8a2e45da512a532476dbee94912b" dependencies = [ "alloy-primitives", "alloy-rlp", "arbitrary", "arrayvec", "derive_arbitrary", - "derive_more 2.0.1", + "derive_more 2.1.1", "nybbles 0.4.6", "proptest", "proptest-derive 0.5.1", @@ -801,14 +802,14 @@ dependencies = [ [[package]] name = "alloy-tx-macros" -version = "1.1.2" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae109e33814b49fc0a62f2528993aa8a2dd346c26959b151f05441dc0b9da292" +checksum = "99dac443033e83b14f68fac56e8c27e76421f1253729574197ceccd06598f3ef" dependencies = [ "darling 0.21.3", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -887,7 +888,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -1029,7 +1030,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" dependencies = [ "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -1067,7 +1068,7 @@ dependencies = [ "num-traits", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -1156,7 +1157,7 @@ checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -1229,7 +1230,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -1240,7 +1241,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -1267,7 +1268,7 @@ checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -1278,9 +1279,9 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "axum" -version = "0.8.7" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b098575ebe77cb6d14fc7f32749631a6e44edbef6b796f89b020e99ba20d425" +checksum = "8b52af3cb4058c895d37317bb27508dccc8e5f2d39454016b297bf4a400597b8" dependencies = [ "axum-core", "base64", @@ -1314,9 +1315,9 @@ dependencies = [ [[package]] name = "axum-core" -version = "0.5.5" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59446ce19cd142f8833f856eb31f3eb097812d1479ab224f54d72428ca21ea22" +checksum = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1" dependencies = [ "bytes", "futures-core", @@ -1390,9 +1391,9 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "base64ct" -version = "1.8.0" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" +checksum = "7d809780667f4410e7c41b07f52439b94d2bdf8528eeedc287fa38d3b7f95d82" [[package]] name = "benchmark-runner" @@ -1417,6 +1418,7 @@ dependencies = [ "rayon", "reth-guest", "reth-stateless", + "reth-stateless-executor", "serde", "serde_json", "sha2", @@ -1455,13 +1457,13 @@ dependencies = [ "bitflags 2.10.0", "cexpr", "clang-sys", - "itertools 0.12.1", + "itertools 0.13.0", "proc-macro2", "quote", "regex", "rustc-hash", "shlex", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -1481,15 +1483,15 @@ checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" [[package]] name = "bitcoin-io" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b47c4ab7a93edb0c7198c5535ed9b52b63095f4e9b45279c6736cec4b856baf" +checksum = "2dee39a0ee5b4095224a0cfc6bf4cc1baf0f9624b96b367e53b66d974e51d953" [[package]] name = "bitcoin_hashes" -version = "0.14.0" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb18c03d0db0247e147a21a6faafd5a7eb851c743db062de72018b6b7e8e4d16" +checksum = "26ec84b80c482df901772e931a9a681e26a1b9ee2302edeff23cb30328745c8b" dependencies = [ "bitcoin-io", "hex-conservative", @@ -1611,7 +1613,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -1634,9 +1636,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.19.0" +version = "3.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" +checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" [[package]] name = "byte-slice-cast" @@ -1664,7 +1666,7 @@ checksum = "89385e82b5d1821d2219e0b095efa2cc1f246cbf99080f3be46a1a85c0d392d9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -1706,9 +1708,9 @@ dependencies = [ [[package]] name = "camino" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "276a59bf2b2c967788139340c9f0c5b12d7fd6630315c15c217e559de85d2609" +checksum = "e629a66d692cb9ff1a1c664e41771b3dcaf961985a9774c0eb0bd1b51cf60a48" dependencies = [ "serde_core", ] @@ -1791,7 +1793,7 @@ dependencies = [ "num-traits", "serde", "wasm-bindgen", - "windows-link 0.2.1", + "windows-link", ] [[package]] @@ -1817,9 +1819,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.53" +version = "4.5.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9e340e012a1bf4935f5282ed1436d1489548e8f72308207ea5df0e23d2d03f8" +checksum = "c6e6ff9dcd79cff5cd969a17a545d79e84ab086e444102a591e288a8aa3ce394" dependencies = [ "clap_builder", "clap_derive", @@ -1827,9 +1829,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.53" +version = "4.5.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d76b5d13eaa18c901fd2f7fca939fefe3a0727a953561fefdf3b2922b8569d00" +checksum = "fa42cf4d2b7a41bc8f663a7cab4031ebafa1bf3875705bfaf8466dc60ab52c00" dependencies = [ "anstream", "anstyle", @@ -1846,7 +1848,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -1941,9 +1943,9 @@ dependencies = [ [[package]] name = "convert_case" -version = "0.7.1" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb402b8d4c85569410425650ce3eddc7d698ed96d39a73f941b08fb63082f1e7" +checksum = "633458d4ef8c78b72454de2d54fd6ab2e60f9e02be22f3c6104cdc8a4e0fceb9" dependencies = [ "unicode-segmentation", ] @@ -1994,9 +1996,9 @@ dependencies = [ [[package]] name = "crc" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9710d3b3739c2e349eb44fe848ad0b7c8cb1e42bd87ee49371df2f7acaf3e675" +checksum = "5eb8a2a1cd12ab0d987a5d5e825195d372001a4094a0376319d5a0ad71c1ba0d" dependencies = [ "crc-catalog", ] @@ -2212,7 +2214,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -2246,7 +2248,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -2261,7 +2263,7 @@ dependencies = [ "quote", "serde", "strsim", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -2272,7 +2274,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -2283,7 +2285,7 @@ checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" dependencies = [ "darling_core 0.21.3", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -2323,7 +2325,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d162beedaa69905488a8da94f5ac3edb4dd4788b732fadb7bd120b2625c1976" dependencies = [ "data-encoding", - "syn 2.0.111", + "syn 1.0.109", ] [[package]] @@ -2395,7 +2397,7 @@ checksum = "ef941ded77d15ca19b40374869ac6000af1c9f2a4c0f3d4c70926287e6364a8f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -2406,7 +2408,7 @@ checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -2427,7 +2429,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -2437,7 +2439,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ "derive_builder_core", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -2451,11 +2453,11 @@ dependencies = [ [[package]] name = "derive_more" -version = "2.0.1" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134" dependencies = [ - "derive_more-impl 2.0.1", + "derive_more-impl 2.1.1", ] [[package]] @@ -2467,20 +2469,21 @@ dependencies = [ "convert_case 0.6.0", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", "unicode-xid", ] [[package]] name = "derive_more-impl" -version = "2.0.1" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb" dependencies = [ - "convert_case 0.7.1", + "convert_case 0.10.0", "proc-macro2", "quote", - "syn 2.0.111", + "rustc_version 0.4.1", + "syn 2.0.114", "unicode-xid", ] @@ -2588,7 +2591,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -2652,7 +2655,7 @@ dependencies = [ "enum-ordinalize", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -2757,7 +2760,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -2777,7 +2780,7 @@ checksum = "8ca9601fb2d62598ee17836250842873a413586e5d7ed88b356e38ddbb0ec631" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -2808,33 +2811,29 @@ dependencies = [ [[package]] name = "ere-build-utils" -version = "0.0.15" -source = "git+https://github.com/eth-applied-research-group/ere?rev=d15c6b495d0bc42bf160ecfbb11fa7600047c821#d15c6b495d0bc42bf160ecfbb11fa7600047c821" +version = "0.0.16" +source = "git+https://github.com/NethermindEth/ere?rev=3edcc4ceb828ab8bb0840ffd9e09b4523c8c093f#3edcc4ceb828ab8bb0840ffd9e09b4523c8c093f" dependencies = [ "cargo_metadata", ] [[package]] -name = "ere-compiler" -version = "0.0.15" -source = "git+https://github.com/eth-applied-research-group/ere?rev=d15c6b495d0bc42bf160ecfbb11fa7600047c821#d15c6b495d0bc42bf160ecfbb11fa7600047c821" +name = "ere-common" +version = "0.0.16" +source = "git+https://github.com/NethermindEth/ere?rev=3edcc4ceb828ab8bb0840ffd9e09b4523c8c093f#3edcc4ceb828ab8bb0840ffd9e09b4523c8c093f" dependencies = [ - "anyhow", - "bincode 2.0.1", - "clap", - "ere-zkvm-interface", + "ere-build-utils", "serde", - "tracing-subscriber 0.3.20", + "strum 0.27.2", ] [[package]] name = "ere-dockerized" -version = "0.0.15" -source = "git+https://github.com/eth-applied-research-group/ere?rev=d15c6b495d0bc42bf160ecfbb11fa7600047c821#d15c6b495d0bc42bf160ecfbb11fa7600047c821" +version = "0.0.16" +source = "git+https://github.com/NethermindEth/ere?rev=3edcc4ceb828ab8bb0840ffd9e09b4523c8c093f#3edcc4ceb828ab8bb0840ffd9e09b4523c8c093f" dependencies = [ "anyhow", - "ere-build-utils", - "ere-compiler", + "ere-common", "ere-server", "ere-zkvm-interface", "parking_lot", @@ -2856,13 +2855,13 @@ dependencies = [ "ere-dockerized", "ere-zkvm-interface", "tracing", - "tracing-subscriber 0.3.20", + "tracing-subscriber 0.3.22", ] [[package]] name = "ere-io" -version = "0.0.15" -source = "git+https://github.com/eth-applied-research-group/ere?rev=d15c6b495d0bc42bf160ecfbb11fa7600047c821#d15c6b495d0bc42bf160ecfbb11fa7600047c821" +version = "0.0.16" +source = "git+https://github.com/NethermindEth/ere?rev=3edcc4ceb828ab8bb0840ffd9e09b4523c8c093f#3edcc4ceb828ab8bb0840ffd9e09b4523c8c093f" dependencies = [ "bincode 2.0.1", "rkyv", @@ -2871,16 +2870,16 @@ dependencies = [ [[package]] name = "ere-platform-trait" -version = "0.0.15" -source = "git+https://github.com/eth-applied-research-group/ere?rev=d15c6b495d0bc42bf160ecfbb11fa7600047c821#d15c6b495d0bc42bf160ecfbb11fa7600047c821" +version = "0.0.16" +source = "git+https://github.com/NethermindEth/ere?rev=3edcc4ceb828ab8bb0840ffd9e09b4523c8c093f#3edcc4ceb828ab8bb0840ffd9e09b4523c8c093f" dependencies = [ "digest 0.10.7", ] [[package]] name = "ere-server" -version = "0.0.15" -source = "git+https://github.com/eth-applied-research-group/ere?rev=d15c6b495d0bc42bf160ecfbb11fa7600047c821#d15c6b495d0bc42bf160ecfbb11fa7600047c821" +version = "0.0.16" +source = "git+https://github.com/NethermindEth/ere?rev=3edcc4ceb828ab8bb0840ffd9e09b4523c8c093f#3edcc4ceb828ab8bb0840ffd9e09b4523c8c093f" dependencies = [ "anyhow", "bincode 2.0.1", @@ -2894,8 +2893,8 @@ dependencies = [ [[package]] name = "ere-zkvm-interface" -version = "0.0.15" -source = "git+https://github.com/eth-applied-research-group/ere?rev=d15c6b495d0bc42bf160ecfbb11fa7600047c821#d15c6b495d0bc42bf160ecfbb11fa7600047c821" +version = "0.0.16" +source = "git+https://github.com/NethermindEth/ere?rev=3edcc4ceb828ab8bb0840ffd9e09b4523c8c093f#3edcc4ceb828ab8bb0840ffd9e09b4523c8c093f" dependencies = [ "anyhow", "auto_impl", @@ -2914,7 +2913,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -2987,13 +2986,13 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] name = "ethrex-blockchain" -version = "7.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ "bytes", "ethrex-common", @@ -3013,8 +3012,8 @@ dependencies = [ [[package]] name = "ethrex-common" -version = "7.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ "bytes", "crc32fast", @@ -3023,6 +3022,7 @@ dependencies = [ "ethrex-rlp", "ethrex-trie", "hex", + "hex-literal", "k256", "kzg-rs", "lazy_static", @@ -3044,8 +3044,8 @@ dependencies = [ [[package]] name = "ethrex-crypto" -version = "7.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ "c-kzg", "kzg-rs", @@ -3067,8 +3067,8 @@ dependencies = [ [[package]] name = "ethrex-l2-common" -version = "7.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ "bytes", "ethereum-types", @@ -3087,12 +3087,13 @@ dependencies = [ "serde_with", "sha3", "thiserror 2.0.17", + "tracing", ] [[package]] name = "ethrex-levm" -version = "7.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ "ark-bn254", "ark-ec", @@ -3124,8 +3125,8 @@ dependencies = [ [[package]] name = "ethrex-metrics" -version = "7.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ "axum", "ethrex-common", @@ -3135,13 +3136,13 @@ dependencies = [ "thiserror 2.0.17", "tokio", "tracing", - "tracing-subscriber 0.3.20", + "tracing-subscriber 0.3.22", ] [[package]] name = "ethrex-p2p" -version = "7.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ "aes", "async-trait", @@ -3165,6 +3166,7 @@ dependencies = [ "prometheus 0.14.0", "rand 0.8.5", "rayon", + "rustc-hash", "secp256k1 0.30.0", "serde", "serde_json", @@ -3181,8 +3183,8 @@ dependencies = [ [[package]] name = "ethrex-rlp" -version = "7.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ "bytes", "ethereum-types", @@ -3195,8 +3197,8 @@ dependencies = [ [[package]] name = "ethrex-rpc" -version = "7.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ "axum", "axum-extra", @@ -3228,18 +3230,17 @@ dependencies = [ "tokio-util", "tower-http", "tracing", - "tracing-subscriber 0.3.20", + "tracing-subscriber 0.3.22", "uuid", ] [[package]] name = "ethrex-storage" -version = "7.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ "anyhow", "async-trait", - "bincode 1.3.3", "bytes", "ethereum-types", "ethrex-common", @@ -3254,21 +3255,22 @@ dependencies = [ "serde", "serde_json", "thiserror 2.0.17", + "tokio", "tracing", ] [[package]] name = "ethrex-threadpool" version = "0.1.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ "crossbeam 0.8.4", ] [[package]] name = "ethrex-trie" -version = "7.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ "anyhow", "bytes", @@ -3291,8 +3293,8 @@ dependencies = [ [[package]] name = "ethrex-vm" -version = "7.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ "bincode 1.3.3", "bytes", @@ -3541,7 +3543,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -3646,9 +3648,9 @@ dependencies = [ [[package]] name = "git2" -version = "0.20.2" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2deb07a133b1520dc1a5690e9bd08950108873d7ed5de38dcc74d3b5ebffa110" +checksum = "3e2b37e2f62729cdada11f0e6b3b6fe383c69c29fc619e391223e12856af308c" dependencies = [ "bitflags 2.10.0", "libc", @@ -3754,9 +3756,10 @@ dependencies = [ [[package]] name = "guest_program" -version = "7.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ + "bincode 1.3.3", "bytes", "ethrex-blockchain", "ethrex-common", @@ -3776,9 +3779,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386" +checksum = "2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54" dependencies = [ "atomic-waker", "bytes", @@ -3897,9 +3900,9 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] name = "hex-conservative" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5313b072ce3c597065a808dbf612c4c8e8590bdbf8b579508bf7a762c5eae6cd" +checksum = "fda06d18ac606267c40c04e41b9947729bf8b9efe74bd4e82b61a5f26a510b9f" dependencies = [ "arrayvec", ] @@ -4109,9 +4112,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.18" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52e9a2a24dc5c6821e71a7030e1e14b7b632acac55c40e9d2e082c621261bb56" +checksum = "727805d60e7938b76b826a6ef209eb70eaa1812794f9424d4a4e2d740662df5f" dependencies = [ "base64", "bytes", @@ -4145,7 +4148,7 @@ dependencies = [ "js-sys", "log", "wasm-bindgen", - "windows-core", + "windows-core 0.62.2", ] [[package]] @@ -4205,9 +4208,9 @@ checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" [[package]] name = "icu_properties" -version = "2.1.1" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e93fcd3157766c0c8da2f8cff6ce651a31f0810eaa1c51ec363ef790bbb5fb99" +checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" dependencies = [ "icu_collections", "icu_locale_core", @@ -4219,9 +4222,9 @@ dependencies = [ [[package]] name = "icu_properties_data" -version = "2.1.1" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02845b3647bb045f1100ecd6480ff52f34c35f82d9880e029d329c21d1054899" +checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" [[package]] name = "icu_provider" @@ -4319,7 +4322,7 @@ checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -4438,9 +4441,9 @@ checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" [[package]] name = "iri-string" -version = "0.7.9" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f867b9d1d896b67beb18518eda36fdb77a32ea590de864f1325b294a6d14397" +checksum = "c91338f0783edbd6195decb37bae672fd3b165faffb89bf7b9e6942f8b1a731a" dependencies = [ "memchr", "serde", @@ -4490,9 +4493,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.15" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" +checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" [[package]] name = "jni" @@ -4528,9 +4531,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.82" +version = "0.3.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b011eec8cc36da2aab2d5cff675ec18454fad408585853910a202391cf9f8e65" +checksum = "464a3709c7f55f1f721e5389aa6ea4e3bc6aba669353300af094b29ffbdde1d8" dependencies = [ "once_cell", "wasm-bindgen", @@ -4640,7 +4643,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -4828,15 +4831,15 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.177" +version = "0.2.179" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" +checksum = "c5a2d376baa530d1238d133232d15e239abad80d05838b4b59354e5268af431f" [[package]] name = "libgit2-sys" -version = "0.18.2+1.9.1" +version = "0.18.3+1.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c42fe03df2bd3c53a3a9c7317ad91d80c81cd1fb0caec8d7cc4cd2bfa10c222" +checksum = "c9b3acc4b91781bb0b3386669d325163746af5f6e4f73e6d2d630e09a35f3487" dependencies = [ "cc", "libc", @@ -4851,7 +4854,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" dependencies = [ "cfg-if 1.0.4", - "windows-link 0.2.1", + "windows-link", ] [[package]] @@ -4862,9 +4865,9 @@ checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" [[package]] name = "libp2p-identity" -version = "0.2.12" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3104e13b51e4711ff5738caa1fb54467c8604c2e94d607e27745bcf709068774" +checksum = "f0c7892c221730ba55f7196e98b0b8ba5e04b4155651736036628e9f73ed6fc3" dependencies = [ "asn1_der", "bs58", @@ -4881,13 +4884,13 @@ dependencies = [ [[package]] name = "libredox" -version = "0.1.10" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" +checksum = "3d0b95e02c851351f877147b7deea7b1afb1df71b63aa5f8270716e0c5720616" dependencies = [ "bitflags 2.10.0", "libc", - "redox_syscall", + "redox_syscall 0.7.0", ] [[package]] @@ -4960,9 +4963,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.28" +version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" [[package]] name = "lru" @@ -5011,7 +5014,7 @@ checksum = "1b27834086c65ec3f9387b096d66e99f221cf081c2b738042aa252bcd41204e3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -5118,9 +5121,9 @@ dependencies = [ [[package]] name = "metrics" -version = "0.24.2" +version = "0.24.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25dea7ac8057892855ec285c440160265225438c3c45072613c25a4b26e98ef5" +checksum = "5d5312e9ba3771cfa961b585728215e3d972c950a3eed9252aa093d6301277e8" dependencies = [ "ahash", "portable-atomic", @@ -5135,7 +5138,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -5162,9 +5165,9 @@ dependencies = [ [[package]] name = "mio" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" +checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" dependencies = [ "libc", "log", @@ -5195,9 +5198,9 @@ dependencies = [ [[package]] name = "moka" -version = "0.12.11" +version = "0.12.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8261cd88c312e0004c1d51baad2980c66528dfdb2bee62003e643a4d8f86b077" +checksum = "a3dec6bd31b08944e08b58fd99373893a6c17054d6f3ea5006cc894f4f4eee2a" dependencies = [ "crossbeam-channel 0.5.15", "crossbeam-epoch 0.9.18", @@ -5205,7 +5208,6 @@ dependencies = [ "equivalent", "parking_lot", "portable-atomic", - "rustc_version 0.4.1", "smallvec", "tagptr", "uuid", @@ -5286,7 +5288,7 @@ checksum = "4568f25ccbd45ab5d5603dc34318c1ec56b117531781260002151b8530a9f931" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -5298,7 +5300,7 @@ dependencies = [ "libc", "log", "openssl", - "openssl-probe", + "openssl-probe 0.1.6", "openssl-sys", "schannel", "security-framework 2.11.1", @@ -5342,9 +5344,9 @@ checksum = "5e0826a989adedc2a244799e823aece04662b66609d96af8dff7ac6df9a8925d" [[package]] name = "ntapi" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4" +checksum = "c70f219e21142367c70c0b30c6a9e3a14d55b4d12a204d897fbec83a0363f081" dependencies = [ "winapi", ] @@ -5478,7 +5480,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -5558,7 +5560,7 @@ dependencies = [ "alloy-rpc-types-eth", "alloy-serde", "arbitrary", - "derive_more 2.0.1", + "derive_more 2.1.1", "serde", "serde_with", "thiserror 2.0.17", @@ -5607,7 +5609,7 @@ dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", "alloy-serde", - "derive_more 2.0.1", + "derive_more 2.1.1", "op-alloy-consensus", "serde", "serde_json", @@ -5626,7 +5628,7 @@ dependencies = [ "alloy-rlp", "alloy-rpc-types-engine", "alloy-serde", - "derive_more 2.0.1", + "derive_more 2.1.1", "ethereum_ssz", "ethereum_ssz_derive", "op-alloy-consensus", @@ -5675,7 +5677,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -5684,6 +5686,12 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" +[[package]] +name = "openssl-probe" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f50d9b3dabb09ecd771ad0aa242ca6894994c130308ca3d7684634df8037391" + [[package]] name = "openssl-sys" version = "0.9.111" @@ -5952,7 +5960,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -5973,9 +5981,9 @@ checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" dependencies = [ "cfg-if 1.0.4", "libc", - "redox_syscall", + "redox_syscall 0.5.18", "smallvec", - "windows-link 0.2.1", + "windows-link", ] [[package]] @@ -6011,9 +6019,9 @@ checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "pest" -version = "2.8.4" +version = "2.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbcfd20a6d4eeba40179f05735784ad32bdaef05ce8e8af05f180d45bb3e7e22" +checksum = "2c9eb05c21a464ea704b53158d358a31e6425db2f63a1a7312268b05fe2b75f7" dependencies = [ "memchr", "ucd-trie", @@ -6050,7 +6058,7 @@ dependencies = [ "phf_shared", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -6079,7 +6087,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -6133,9 +6141,9 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.11.1" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" +checksum = "f89776e4d69bb58bc6993e99ffa1d11f228b839984854c7daeb5d37f87cbe950" [[package]] name = "potential_utf" @@ -6200,7 +6208,7 @@ version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" dependencies = [ - "toml_edit 0.23.7", + "toml_edit 0.23.10+spec-1.0.0", ] [[package]] @@ -6222,14 +6230,14 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] name = "proc-macro2" -version = "1.0.103" +version = "1.0.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" +checksum = "535d180e0ecab6268a3e718bb9fd44db66bbbc256257165fc699dadf70d16fe7" dependencies = [ "unicode-ident", ] @@ -6326,7 +6334,7 @@ checksum = "4ee1c9ac207483d5e7db4940700de86a9aae46ef90c48b57f99fe7edb8345e49" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -6337,7 +6345,7 @@ checksum = "095a99f75c69734802359b682be8daaf8980296731f6470434ea2c652af1dd30" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -6367,10 +6375,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" dependencies = [ "anyhow", - "itertools 0.12.1", + "itertools 0.10.5", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -6380,10 +6388,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9120690fafc389a67ba3803df527d0ec9cbbc9cc45e4cc20b332996dfb672425" dependencies = [ "anyhow", - "itertools 0.12.1", + "itertools 0.10.5", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -6429,7 +6437,7 @@ checksum = "7347867d0a7e1208d93b46767be83e2b8f978c3dad35f775ac8d8847551d6fe1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -6508,14 +6516,14 @@ dependencies = [ "once_cell", "socket2 0.5.10", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "quote" -version = "1.0.42" +version = "1.0.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" +checksum = "dc74d9a594b72ae6656596548f56f667211f8a97b3d4c3d467150794690dc40a" dependencies = [ "proc-macro2", ] @@ -6612,6 +6620,16 @@ dependencies = [ "rand_core 0.9.3", ] +[[package]] +name = "rapidhash" +version = "4.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2988730ee014541157f48ce4dcc603940e00915edc3c7f9a8d78092256bb2493" +dependencies = [ + "rand 0.9.2", + "rustversion", +] + [[package]] name = "rayon" version = "1.11.0" @@ -6641,6 +6659,15 @@ dependencies = [ "bitflags 2.10.0", ] +[[package]] +name = "redox_syscall" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f3fe0889e69e2ae9e41f4d6c4c0181701d00e4697b356fb1f74173a5e0ee27" +dependencies = [ + "bitflags 2.10.0", +] + [[package]] name = "redox_users" version = "0.4.6" @@ -6680,7 +6707,7 @@ checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -6723,9 +6750,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.12.24" +version = "0.12.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d0946410b9f7b082a427e4ef5c8ff541a88b357bc6c637c40db3a68ac70a36f" +checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" dependencies = [ "base64", "bytes", @@ -6807,7 +6834,7 @@ dependencies = [ "alloy-primitives", "alloy-signer", "alloy-signer-local", - "derive_more 2.0.1", + "derive_more 2.1.1", "metrics", "parking_lot", "pin-project", @@ -6839,9 +6866,9 @@ dependencies = [ "alloy-evm", "alloy-genesis", "alloy-primitives", - "alloy-trie 0.9.1", + "alloy-trie 0.9.2", "auto_impl", - "derive_more 2.0.1", + "derive_more 2.1.1", "reth-ethereum-forks", "reth-network-peers", "reth-primitives-traits", @@ -6874,7 +6901,7 @@ dependencies = [ "alloy-eips", "alloy-genesis", "alloy-primitives", - "alloy-trie 0.9.1", + "alloy-trie 0.9.2", "arbitrary", "bytes", "modular-bitfield", @@ -6892,7 +6919,7 @@ source = "git+https://github.com/paradigmxyz/reth?rev=cfde951976bfa9100a6d9f806e dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -6942,7 +6969,7 @@ version = "1.9.3" source = "git+https://github.com/paradigmxyz/reth?rev=cfde951976bfa9100a6d9f806e06fb539ae25241#cfde951976bfa9100a6d9f806e06fb539ae25241" dependencies = [ "alloy-primitives", - "derive_more 2.0.1", + "derive_more 2.1.1", "eyre", "metrics", "page_size", @@ -6972,7 +6999,7 @@ dependencies = [ "alloy-primitives", "arbitrary", "bytes", - "derive_more 2.0.1", + "derive_more 2.1.1", "metrics", "modular-bitfield", "parity-scale-codec", @@ -7067,7 +7094,7 @@ source = "git+https://github.com/paradigmxyz/reth?rev=cfde951976bfa9100a6d9f806e dependencies = [ "alloy-primitives", "alloy-rlp", - "derive_more 2.0.1", + "derive_more 2.1.1", "discv5", "enr", "futures", @@ -7205,7 +7232,7 @@ dependencies = [ "alloy-primitives", "alloy-rlp", "bytes", - "derive_more 2.0.1", + "derive_more 2.1.1", "futures", "pin-project", "reth-codecs", @@ -7236,7 +7263,7 @@ dependencies = [ "alloy-primitives", "alloy-rlp", "bytes", - "derive_more 2.0.1", + "derive_more 2.1.1", "reth-chainspec", "reth-codecs-derive", "reth-ethereum-primitives", @@ -7332,7 +7359,7 @@ dependencies = [ "alloy-evm", "alloy-primitives", "auto_impl", - "derive_more 2.0.1", + "derive_more 2.1.1", "futures-util", "reth-execution-errors", "reth-execution-types", @@ -7353,7 +7380,7 @@ dependencies = [ "alloy-evm", "alloy-primitives", "alloy-rpc-types-engine", - "derive_more 2.0.1", + "derive_more 2.1.1", "reth-chainspec", "reth-ethereum-forks", "reth-ethereum-primitives", @@ -7386,7 +7413,7 @@ dependencies = [ "alloy-eips", "alloy-evm", "alloy-primitives", - "derive_more 2.0.1", + "derive_more 2.1.1", "reth-ethereum-primitives", "reth-primitives-traits", "reth-trie-common", @@ -7434,7 +7461,7 @@ dependencies = [ "bitflags 2.10.0", "byteorder", "dashmap", - "derive_more 2.0.1", + "derive_more 2.1.1", "parking_lot", "reth-mdbx-sys", "smallvec", @@ -7497,7 +7524,7 @@ dependencies = [ "alloy-rlp", "aquamarine", "auto_impl", - "derive_more 2.0.1", + "derive_more 2.1.1", "discv5", "enr", "futures", @@ -7551,7 +7578,7 @@ dependencies = [ "alloy-rpc-types-admin", "alloy-rpc-types-eth", "auto_impl", - "derive_more 2.0.1", + "derive_more 2.1.1", "enr", "futures", "reth-eth-wire-types", @@ -7575,7 +7602,7 @@ dependencies = [ "alloy-eips", "alloy-primitives", "auto_impl", - "derive_more 2.0.1", + "derive_more 2.1.1", "futures", "reth-consensus", "reth-eth-wire-types", @@ -7624,7 +7651,7 @@ source = "git+https://github.com/paradigmxyz/reth?rev=cfde951976bfa9100a6d9f806e dependencies = [ "anyhow", "bincode 1.3.3", - "derive_more 2.0.1", + "derive_more 2.1.1", "lz4_flex", "memmap2", "reth-fs-util", @@ -7668,7 +7695,7 @@ dependencies = [ "alloy-primitives", "alloy-rpc-types-engine", "clap", - "derive_more 2.0.1", + "derive_more 2.1.1", "dirs-next", "eyre", "futures", @@ -7808,12 +7835,12 @@ dependencies = [ "alloy-primitives", "alloy-rlp", "alloy-rpc-types-eth", - "alloy-trie 0.9.1", + "alloy-trie 0.9.2", "arbitrary", "auto_impl", "byteorder", "bytes", - "derive_more 2.0.1", + "derive_more 2.1.1", "modular-bitfield", "once_cell", "op-alloy-consensus", @@ -7881,7 +7908,7 @@ source = "git+https://github.com/paradigmxyz/reth?rev=cfde951976bfa9100a6d9f806e dependencies = [ "alloy-primitives", "arbitrary", - "derive_more 2.0.1", + "derive_more 2.1.1", "modular-bitfield", "reth-codecs", "serde", @@ -8009,7 +8036,7 @@ dependencies = [ "alloy-rpc-types-eth", "alloy-sol-types", "alloy-transport", - "derive_more 2.0.1", + "derive_more 2.1.1", "futures", "itertools 0.14.0", "jsonrpsee-core", @@ -8082,7 +8109,7 @@ dependencies = [ "alloy-primitives", "alloy-rlp", "alloy-rpc-types-debug", - "alloy-trie 0.9.1", + "alloy-trie 0.9.2", "itertools 0.14.0", "k256", "reth-chainspec", @@ -8101,13 +8128,37 @@ dependencies = [ "thiserror 2.0.17", ] +[[package]] +name = "reth-stateless-executor" +version = "0.1.0" +dependencies = [ + "alloy-consensus", + "alloy-primitives", + "alloy-rlp", + "ere-io", + "ere-platform-trait", + "guest-libs", + "k256", + "reth-chainspec", + "reth-errors", + "reth-ethereum-primitives", + "reth-evm", + "reth-evm-ethereum", + "reth-primitives-traits", + "reth-revm", + "reth-stateless", + "serde", + "sparsestate", + "thiserror 2.0.17", +] + [[package]] name = "reth-static-file-types" version = "1.9.3" source = "git+https://github.com/paradigmxyz/reth?rev=cfde951976bfa9100a6d9f806e06fb539ae25241#cfde951976bfa9100a6d9f806e06fb539ae25241" dependencies = [ "alloy-primitives", - "derive_more 2.0.1", + "derive_more 2.1.1", "serde", "strum 0.27.2", ] @@ -8144,7 +8195,7 @@ dependencies = [ "alloy-eips", "alloy-primitives", "alloy-rlp", - "derive_more 2.0.1", + "derive_more 2.1.1", "reth-primitives-traits", "reth-prune-types", "reth-static-file-types", @@ -8192,7 +8243,7 @@ dependencies = [ "tracing-appender", "tracing-journald", "tracing-logfmt", - "tracing-subscriber 0.3.20", + "tracing-subscriber 0.3.22", ] [[package]] @@ -8208,7 +8259,7 @@ dependencies = [ "opentelemetry_sdk", "tracing", "tracing-opentelemetry", - "tracing-subscriber 0.3.20", + "tracing-subscriber 0.3.22", "url", ] @@ -8261,7 +8312,7 @@ dependencies = [ "alloy-eips", "alloy-primitives", "alloy-rlp", - "alloy-trie 0.9.1", + "alloy-trie 0.9.2", "auto_impl", "itertools 0.14.0", "metrics", @@ -8288,11 +8339,11 @@ dependencies = [ "alloy-rlp", "alloy-rpc-types-eth", "alloy-serde", - "alloy-trie 0.9.1", + "alloy-trie 0.9.2", "arbitrary", "arrayvec", "bytes", - "derive_more 2.0.1", + "derive_more 2.1.1", "hash-db", "itertools 0.14.0", "nybbles 0.4.6", @@ -8325,7 +8376,7 @@ source = "git+https://github.com/paradigmxyz/reth?rev=cfde951976bfa9100a6d9f806e dependencies = [ "alloy-primitives", "alloy-rlp", - "alloy-trie 0.9.1", + "alloy-trie 0.9.2", "auto_impl", "rayon", "reth-execution-errors", @@ -8473,9 +8524,9 @@ dependencies = [ [[package]] name = "revm-inspectors" -version = "0.33.0" +version = "0.33.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a91cee0a75ef5f96b7e86f6c6a8bd4fda86eb37b57d501df6790418ee2b03c18" +checksum = "01def7351cd9af844150b8e88980bcd11304f33ce23c3d7c25f2a8dab87c1345" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -8586,13 +8637,13 @@ dependencies = [ [[package]] name = "rkyv" -version = "0.8.12" +version = "0.8.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35a640b26f007713818e9a9b65d34da1cf58538207b052916a83d80e43f3ffa4" +checksum = "8b2e88acca7157d83d789836a3987dafc12bc3d88a050e54b8fe9ea4aaa29d20" dependencies = [ "bytecheck", "bytes", - "hashbrown 0.15.5", + "hashbrown 0.16.1", "indexmap 2.12.1", "munge", "ptr_meta", @@ -8605,13 +8656,13 @@ dependencies = [ [[package]] name = "rkyv_derive" -version = "0.8.12" +version = "0.8.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd83f5f173ff41e00337d97f6572e416d022ef8a19f371817259ae960324c482" +checksum = "7f6dffea3c91fa91a3c0fc8a061b0e27fef25c6304728038a6d6bcb1c58ba9bd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -8673,9 +8724,9 @@ dependencies = [ [[package]] name = "ruint" -version = "1.17.0" +version = "1.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a68df0380e5c9d20ce49534f292a36a7514ae21350726efe1865bdb1fa91d278" +checksum = "c141e807189ad38a07276942c6623032d3753c8859c146104ac2e4d68865945a" dependencies = [ "alloy-rlp", "arbitrary", @@ -8754,22 +8805,22 @@ dependencies = [ [[package]] name = "rustix" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" +checksum = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34" dependencies = [ "bitflags 2.10.0", "errno", "libc", "linux-raw-sys 0.11.0", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "rustls" -version = "0.23.35" +version = "0.23.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "533f54bc6a7d4f647e46ad909549eda97bf5afc1585190ef692b4286b198bd8f" +checksum = "c665f33d38cea657d9614f766881e4d510e0eda4239891eea56b4cadcf01801b" dependencies = [ "log", "once_cell", @@ -8782,11 +8833,11 @@ dependencies = [ [[package]] name = "rustls-native-certs" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9980d917ebb0c0536119ba501e90834767bffc3d60641457fd84a1f3fd337923" +checksum = "612460d5f7bea540c490b2b6395d8e34a953e52b491accd6c86c8164c5932a63" dependencies = [ - "openssl-probe", + "openssl-probe 0.2.0", "rustls-pki-types", "schannel", "security-framework 3.5.1", @@ -8794,9 +8845,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.13.0" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94182ad936a0c91c324cd46c6511b9510ed16af436d7b5bab34beab0afd55f7a" +checksum = "21e6f2ab2928ca4291b86736a8bd920a277a399bba1589409d72154ff87c1282" dependencies = [ "web-time", "zeroize", @@ -8860,9 +8911,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.20" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" +checksum = "a50f4cf475b65d88e057964e0e9bb1f0aa9bbb2036dc65c64596b42932536984" [[package]] name = "safe_arch" @@ -8905,9 +8956,9 @@ dependencies = [ [[package]] name = "schemars" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9558e172d4e8533736ba97870c4b2cd63f84b382a3d6eb063da41b91cce17289" +checksum = "54e910108742c57a770f492731f99be216a52fadd361b06c8fb59d74ccc267d2" dependencies = [ "dyn-clone", "ref-cast", @@ -9094,21 +9145,21 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] name = "serde_json" -version = "1.0.145" +version = "1.0.149" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" dependencies = [ "indexmap 2.12.1", "itoa", "memchr", - "ryu", "serde", "serde_core", + "zmij", ] [[package]] @@ -9145,9 +9196,9 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.16.0" +version = "3.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10574371d41b0d9b2cff89418eda27da52bcaff2cc8741db26382a77c29131f1" +checksum = "4fa237f2807440d238e0364a218270b98f767a00d3dada77b1c53ae88940e2e7" dependencies = [ "base64", "chrono", @@ -9155,7 +9206,7 @@ dependencies = [ "indexmap 1.9.3", "indexmap 2.12.1", "schemars 0.9.0", - "schemars 1.1.0", + "schemars 1.2.0", "serde_core", "serde_json", "serde_with_macros", @@ -9164,14 +9215,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.16.0" +version = "3.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08a72d8216842fdd57820dc78d840bef99248e35fb2554ff923319e60f2d686b" +checksum = "52a8e3ca0ca629121f70ab50f95249e5a6f925cc0f6ffe8256c45b728875706c" dependencies = [ "darling 0.21.3", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -9252,10 +9303,11 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook-registry" -version = "1.4.7" +version = "1.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7664a098b8e616bdfcc2dc0e9ac44eb231eedf41db4e9fe95d8d32ec728dedad" +checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" dependencies = [ + "errno", "libc", ] @@ -9271,9 +9323,9 @@ dependencies = [ [[package]] name = "simd-adler32" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" +checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" [[package]] name = "simdutf8" @@ -9359,9 +9411,9 @@ dependencies = [ [[package]] name = "sp1-lib" -version = "5.2.3" +version = "5.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb1a9935d58cb1dcd757a1b10d727090f5b718f1f03b512d48f0c1952e6ead00" +checksum = "b73b8ff343f2405d5935440e56b7aba5cee6d87303f0051974cbd6f5de502f57" dependencies = [ "bincode 1.3.3", "serde", @@ -9370,9 +9422,9 @@ dependencies = [ [[package]] name = "sp1-primitives" -version = "5.2.3" +version = "5.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7d2a6187e394c30097ea7a975a4832f172918690dc89a979f0fad67422d3a8b" +checksum = "7e69a03098f827102c54c31a5e57280eb45b2c085de433b3f702e4f9e3ec1641" dependencies = [ "bincode 1.3.3", "blake3", @@ -9410,7 +9462,7 @@ source = "git+https://github.com/eth-act/zkvm-ethereum-mpt.git?tag=v0.4.0#d4d8f9 dependencies = [ "alloy-primitives", "alloy-rlp", - "alloy-trie 0.9.1", + "alloy-trie 0.9.2", "mpt", "reth-errors", "reth-revm", @@ -9420,9 +9472,9 @@ dependencies = [ [[package]] name = "spawned-concurrency" -version = "0.4.3" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d99b97ba5429336b6fa8b6e8ecbe09a1c7324f8b9fa63a11262dbd3a44e577b" +checksum = "4d3ec6b3c003075f7d1c4c6475308243e853c9a78149b84b1f8b64d5bed49d49" dependencies = [ "futures", "pin-project-lite", @@ -9433,16 +9485,16 @@ dependencies = [ [[package]] name = "spawned-rt" -version = "0.4.3" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d58e8d7224fbcd3dbc39f7bacf958ae0882c95b5431353445be5a86b80cedcaf" +checksum = "cca60c56b1c60b94dd314edce5ea1a98b6037cca3b44d73828e647bad4dae46c" dependencies = [ "crossbeam 0.7.3", "tokio", "tokio-stream", "tokio-util", "tracing", - "tracing-subscriber 0.3.20", + "tracing-subscriber 0.3.22", ] [[package]] @@ -9507,7 +9559,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -9519,7 +9571,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -9541,9 +9593,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.111" +version = "2.0.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87" +checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a" dependencies = [ "proc-macro2", "quote", @@ -9552,14 +9604,14 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "1.4.1" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff790eb176cc81bb8936aed0f7b9f14fc4670069a2d371b3e3b0ecce908b2cb3" +checksum = "5f92d01b5de07eaf324f7fca61cc6bd3d82bbc1de5b6c963e6fe79e86f36580d" dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -9579,7 +9631,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -9656,15 +9708,15 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.23.0" +version = "3.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" +checksum = "655da9c7eb6305c55742045d5a8d2037996d61d8de95806335c7c86ce0f82e9c" dependencies = [ "fastrand", "getrandom 0.3.4", "once_cell", - "rustix 1.1.2", - "windows-sys 0.52.0", + "rustix 1.1.3", + "windows-sys 0.59.0", ] [[package]] @@ -9693,7 +9745,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -9704,7 +9756,7 @@ checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -9794,9 +9846,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.48.0" +version = "1.49.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" +checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86" dependencies = [ "bytes", "libc", @@ -9817,7 +9869,7 @@ checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -9842,9 +9894,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.17" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" +checksum = "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70" dependencies = [ "futures-core", "pin-project-lite", @@ -9866,9 +9918,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.17" +version = "0.7.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594" +checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" dependencies = [ "bytes", "futures-core", @@ -9903,9 +9955,9 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.7.3" +version = "0.7.5+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" +checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" dependencies = [ "serde_core", ] @@ -9926,21 +9978,21 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.23.7" +version = "0.23.10+spec-1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d" +checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269" dependencies = [ "indexmap 2.12.1", - "toml_datetime 0.7.3", + "toml_datetime 0.7.5+spec-1.1.0", "toml_parser", "winnow", ] [[package]] name = "toml_parser" -version = "1.0.4" +version = "1.0.6+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" +checksum = "a3198b4b0a8e11f09dd03e133c0280504d0801269e9afa46362ffde1cbeebf44" dependencies = [ "winnow", ] @@ -10009,9 +10061,9 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.6.7" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf146f99d442e8e68e585f5d798ccd3cad9a7835b917e09728880a862706456" +checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" dependencies = [ "bitflags 2.10.0", "bytes", @@ -10039,9 +10091,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.41" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" dependencies = [ "log", "pin-project-lite", @@ -10051,32 +10103,32 @@ dependencies = [ [[package]] name = "tracing-appender" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3566e8ce28cc0a3fe42519fc80e6b4c943cc4c8cef275620eb8dac2d3d4e06cf" +checksum = "786d480bce6247ab75f005b14ae1624ad978d3029d9113f0a22fa1ac773faeaf" dependencies = [ "crossbeam-channel 0.5.15", - "thiserror 1.0.69", + "thiserror 2.0.17", "time", - "tracing-subscriber 0.3.20", + "tracing-subscriber 0.3.22", ] [[package]] name = "tracing-attributes" -version = "0.1.30" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] name = "tracing-core" -version = "0.1.34" +version = "0.1.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" dependencies = [ "once_cell", "valuable", @@ -10094,13 +10146,13 @@ dependencies = [ [[package]] name = "tracing-journald" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0b4143302cf1022dac868d521e36e8b27691f72c84b3311750d5188ebba657" +checksum = "2d3a81ed245bfb62592b1e2bc153e77656d94ee6a0497683a65a12ccaf2438d0" dependencies = [ "libc", "tracing-core", - "tracing-subscriber 0.3.20", + "tracing-subscriber 0.3.22", ] [[package]] @@ -10123,7 +10175,7 @@ dependencies = [ "time", "tracing", "tracing-core", - "tracing-subscriber 0.3.20", + "tracing-subscriber 0.3.22", ] [[package]] @@ -10141,7 +10193,7 @@ dependencies = [ "tracing", "tracing-core", "tracing-log", - "tracing-subscriber 0.3.20", + "tracing-subscriber 0.3.22", "web-time", ] @@ -10166,9 +10218,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.20" +version = "0.3.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5" +checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e" dependencies = [ "matchers", "nu-ansi-term", @@ -10337,14 +10389,15 @@ checksum = "6d49784317cd0d1ee7ec5c716dd598ec5b4483ea832a2dced265471cc0f690ae" [[package]] name = "url" -version = "2.5.7" +version = "2.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" dependencies = [ "form_urlencoded", "idna", "percent-encoding", "serde", + "serde_derive", ] [[package]] @@ -10367,9 +10420,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.18.1" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" +checksum = "e2e054861b4bd027cd373e18e8d8d8e6548085000e41290d95ce0c373a654b4a" dependencies = [ "getrandom 0.3.4", "js-sys", @@ -10443,7 +10496,7 @@ checksum = "d674d135b4a8c1d7e813e2f8d1c9a58308aee4a680323066025e53132218bd91" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -10491,9 +10544,9 @@ dependencies = [ [[package]] name = "wasm-bindgen" -version = "0.2.105" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da95793dfc411fbbd93f5be7715b0578ec61fe87cb1a42b12eb625caa5c5ea60" +checksum = "0d759f433fa64a2d763d1340820e46e111a7a5ab75f993d1852d70b03dbb80fd" dependencies = [ "cfg-if 1.0.4", "once_cell", @@ -10504,9 +10557,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.55" +version = "0.4.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "551f88106c6d5e7ccc7cd9a16f312dd3b5d36ea8b4954304657d5dfba115d4a0" +checksum = "836d9622d604feee9e5de25ac10e3ea5f2d65b41eac0d9ce72eb5deae707ce7c" dependencies = [ "cfg-if 1.0.4", "js-sys", @@ -10517,9 +10570,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.105" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04264334509e04a7bf8690f2384ef5265f05143a4bff3889ab7a3269adab59c2" +checksum = "48cb0d2638f8baedbc542ed444afc0644a29166f1595371af4fecf8ce1e7eeb3" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -10527,22 +10580,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.105" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "420bc339d9f322e562942d52e115d57e950d12d88983a14c79b86859ee6c7ebc" +checksum = "cefb59d5cd5f92d9dcf80e4683949f15ca4b511f4ac0a6e14d4e1ac60c6ecd40" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.105" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76f218a38c84bcb33c25ec7059b07847d465ce0e0a76b995e134a45adcb6af76" +checksum = "cbc538057e648b67f72a982e708d485b2efa771e1ac05fec311f9f63e5800db4" dependencies = [ "unicode-ident", ] @@ -10563,9 +10616,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.82" +version = "0.3.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a1f95c0d03a47f4ae1f7a64643a6bb97465d9b740f0fa8f90ea33915c99a9a1" +checksum = "9b32828d774c412041098d182a8b38b16ea816958e07cf40eec2bc080ae137ac" dependencies = [ "js-sys", "wasm-bindgen", @@ -10587,14 +10640,14 @@ version = "0.26.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75c7f0ef91146ebfb530314f5f1d24528d7f0767efbfd31dce919275413e393e" dependencies = [ - "webpki-root-certs 1.0.4", + "webpki-root-certs 1.0.5", ] [[package]] name = "webpki-root-certs" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee3e3b5f5e80bc89f30ce8d0343bf4e5f12341c51f3e26cbeecbc7c85443e85b" +checksum = "36a29fc0408b113f68cf32637857ab740edfafdf460c326cd2afaa2d84cc05dc" dependencies = [ "rustls-pki-types", ] @@ -10652,7 +10705,7 @@ version = "0.57.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143" dependencies = [ - "windows-core", + "windows-core 0.57.0", "windows-targets 0.52.6", ] @@ -10662,12 +10715,25 @@ version = "0.57.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d" dependencies = [ - "windows-implement", - "windows-interface", + "windows-implement 0.57.0", + "windows-interface 0.57.0", "windows-result 0.1.2", "windows-targets 0.52.6", ] +[[package]] +name = "windows-core" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" +dependencies = [ + "windows-implement 0.60.2", + "windows-interface 0.59.3", + "windows-link", + "windows-result 0.4.1", + "windows-strings", +] + [[package]] name = "windows-implement" version = "0.57.0" @@ -10676,7 +10742,18 @@ checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", +] + +[[package]] +name = "windows-implement" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", ] [[package]] @@ -10687,14 +10764,19 @@ checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] -name = "windows-link" -version = "0.1.3" +name = "windows-interface" +version = "0.59.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] [[package]] name = "windows-link" @@ -10704,12 +10786,12 @@ checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" [[package]] name = "windows-registry" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e" +checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720" dependencies = [ - "windows-link 0.1.3", - "windows-result 0.3.4", + "windows-link", + "windows-result 0.4.1", "windows-strings", ] @@ -10724,20 +10806,20 @@ dependencies = [ [[package]] name = "windows-result" -version = "0.3.4" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" dependencies = [ - "windows-link 0.1.3", + "windows-link", ] [[package]] name = "windows-strings" -version = "0.4.2" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" dependencies = [ - "windows-link 0.1.3", + "windows-link", ] [[package]] @@ -10791,7 +10873,7 @@ version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" dependencies = [ - "windows-link 0.2.1", + "windows-link", ] [[package]] @@ -10846,7 +10928,7 @@ version = "0.53.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" dependencies = [ - "windows-link 0.2.1", + "windows-link", "windows_aarch64_gnullvm 0.53.1", "windows_aarch64_msvc 0.53.1", "windows_i686_gnu 0.53.1", @@ -11039,9 +11121,9 @@ checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" [[package]] name = "winnow" -version = "0.7.13" +version = "0.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" +checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" dependencies = [ "memchr", ] @@ -11098,7 +11180,7 @@ dependencies = [ "tokio", "tokio-util", "tracing", - "tracing-subscriber 0.3.20", + "tracing-subscriber 0.3.22", "witness-generator", ] @@ -11124,7 +11206,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32e45ad4206f6d2479085147f02bc2ef834ac85886624a23575ae137c8aa8156" dependencies = [ "libc", - "rustix 1.1.2", + "rustix 1.1.3", ] [[package]] @@ -11161,28 +11243,28 @@ checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", "synstructure", ] [[package]] name = "zerocopy" -version = "0.8.30" +version = "0.8.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ea879c944afe8a2b25fef16bb4ba234f47c694565e97383b36f3a878219065c" +checksum = "1fabae64378cb18147bb18bca364e63bdbe72a0ffe4adf0addfec8aa166b2c56" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.30" +version = "0.8.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf955aa904d6040f70dc8e9384444cb1030aed272ba3cb09bbc4ab9e7c1f34f5" +checksum = "c9c2d862265a8bb4471d87e033e730f536e2a285cc7cb05dbce09a2a97075f90" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -11202,7 +11284,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", "synstructure", ] @@ -11217,13 +11299,13 @@ dependencies = [ [[package]] name = "zeroize_derive" -version = "1.4.2" +version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +checksum = "85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -11256,7 +11338,7 @@ checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -11272,6 +11354,12 @@ dependencies = [ "thiserror 2.0.17", ] +[[package]] +name = "zmij" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fc5a66a20078bf1251bde995aa2fdcc4b800c70b5d92dd2c62abc5c60f679f8" + [[package]] name = "zstd" version = "0.13.3" diff --git a/Cargo.toml b/Cargo.toml index c341ca39..7ff021d1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -112,13 +112,14 @@ benchmark-runner = { path = "crates/benchmark-runner" } guest-libs = { path = "ere-guests/libs" } block-encoding-length-guest = { path = "ere-guests/block-encoding-length/guest" } reth-guest = { path = "ere-guests/stateless-validator/reth/guest" } +reth-stateless-executor = { path = "ere-guests/stateless-executor" } ethrex-guest = { path = "ere-guests/stateless-validator/ethrex/guest" } # ere -ere-zkvm-interface = { git = "https://github.com/eth-applied-research-group/ere", rev = "d15c6b495d0bc42bf160ecfbb11fa7600047c821", package = "ere-zkvm-interface" } -ere-platform-trait = { git = "https://github.com/eth-applied-research-group/ere", rev = "d15c6b495d0bc42bf160ecfbb11fa7600047c821" } -ere-dockerized = { git = "https://github.com/eth-applied-research-group/ere", rev = "d15c6b495d0bc42bf160ecfbb11fa7600047c821", package = "ere-dockerized" } -ere-io = { git = "https://github.com/eth-applied-research-group/ere", rev = "d15c6b495d0bc42bf160ecfbb11fa7600047c821", package = "ere-io" } +ere-zkvm-interface = { git = "https://github.com/NethermindEth/ere", rev = "3edcc4ceb828ab8bb0840ffd9e09b4523c8c093f", package = "ere-zkvm-interface" } +ere-platform-trait = { git = "https://github.com/NethermindEth/ere", rev = "3edcc4ceb828ab8bb0840ffd9e09b4523c8c093f" } +ere-dockerized = { git = "https://github.com/NethermindEth/ere", rev = "3edcc4ceb828ab8bb0840ffd9e09b4523c8c093f", package = "ere-dockerized" } +ere-io = { git = "https://github.com/NethermindEth/ere", rev = "3edcc4ceb828ab8bb0840ffd9e09b4523c8c093f", package = "ere-io" } # branch is kw/zkevm-benchmark-workload-repo # NOTE: We are using a branch of a branch that has not yet been merged into master. @@ -130,14 +131,16 @@ reth-primitives-traits = { git = "https://github.com/paradigmxyz/reth", rev = "c reth-errors = { git = "https://github.com/paradigmxyz/reth", rev = "cfde951976bfa9100a6d9f806e06fb539ae25241" } reth-trie-common = { git = "https://github.com/paradigmxyz/reth", rev = "cfde951976bfa9100a6d9f806e06fb539ae25241" } reth-chainspec = { git = "https://github.com/paradigmxyz/reth", rev = "cfde951976bfa9100a6d9f806e06fb539ae25241" } +reth-evm = { git = "https://github.com/paradigmxyz/reth", rev = "cfde951976bfa9100a6d9f806e06fb539ae25241" } reth-evm-ethereum = { git = "https://github.com/paradigmxyz/reth", rev = "cfde951976bfa9100a6d9f806e06fb539ae25241" } +reth-revm = { git = "https://github.com/paradigmxyz/reth", rev = "cfde951976bfa9100a6d9f806e06fb539ae25241" } sparsestate = { git = "https://github.com/eth-act/zkvm-ethereum-mpt.git", tag = "v0.4.0" } -ethrex-guest-program = { git = "https://github.com/lambdaclass/ethrex.git", rev = "c68e76d6b569c60a667a1240a91e637bf2ea0d0b", package = "guest_program" } -ethrex-common = { git = "https://github.com/lambdaclass/ethrex.git", rev = "c68e76d6b569c60a667a1240a91e637bf2ea0d0b", default-features = false } -ethrex-rlp = { git = "https://github.com/lambdaclass/ethrex.git", rev = "c68e76d6b569c60a667a1240a91e637bf2ea0d0b", default-features = false } -ethrex-rpc = { git = "https://github.com/lambdaclass/ethrex.git", rev = "c68e76d6b569c60a667a1240a91e637bf2ea0d0b", default-features = false } +ethrex-guest-program = { git = "https://github.com/lambdaclass/ethrex.git", rev = "e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1", package = "guest_program" } +ethrex-common = { git = "https://github.com/lambdaclass/ethrex.git", rev = "e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1", default-features = false } +ethrex-rlp = { git = "https://github.com/lambdaclass/ethrex.git", rev = "e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1", default-features = false } +ethrex-rpc = { git = "https://github.com/lambdaclass/ethrex.git", rev = "e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1", default-features = false } # alloy alloy-eips = { version = "1.1.2" } @@ -159,7 +162,7 @@ k256 = { version = "0.13", default-features = false } # misc bincode = "1.3" -clap = { version = "4.0", features = ["derive"] } +clap = { version = "4.0", features = ["derive", "env"] } serde = { version = "1.0", default-features = false } strum = { version = "0.26", features = ["derive"] } walkdir = "2.3.3" diff --git a/README.md b/README.md index 972ed7e2..107d9ab1 100644 --- a/README.md +++ b/README.md @@ -180,6 +180,18 @@ This repository supports multiple guest program types for comprehensive zkVM ben - **Encoding Formats**: Supports both RLP (`--format rlp`) and SSZ (`--format ssz`) encoding - **Usage**: `cargo run -- block-encoding-length --loop-count 100 --format rlp` +4. **`stateless-executor`** - Pure EVM execution without validation overhead + - **Purpose**: Measures raw EVM execution cycles in zkVMs without the overhead of pre/post validation checks. Ideal for benchmarking pure opcode execution costs. + - **Input**: Uses the same `BlockAndWitness` fixture files as `stateless-validator` + - **Computation**: Executes EVM transactions but **skips**: + - Pre-execution consensus validation (header checks, ancestor verification) + - Post-execution consensus checks (receipts root, gas used validation) + - State root verification (both pre-state and post-state) + - **Execution Clients**: + - `reth`: Reth execution client only (Ethrex not supported) + - **Key Difference from `stateless-validator`**: While `stateless-validator` performs full block validation including all consensus checks, `stateless-executor` only performs the EVM transaction execution, providing more accurate measurements of pure execution cycles. + - **Usage**: `cargo run -- stateless-executor --execution-client reth` + ### Guest Program Architecture Each guest program type follows a consistent structure across different zkVM platforms. For `stateless-validator`, there are separate implementations for different execution clients: diff --git a/crates/benchmark-runner/Cargo.toml b/crates/benchmark-runner/Cargo.toml index 94ce0ffd..a1440ad5 100644 --- a/crates/benchmark-runner/Cargo.toml +++ b/crates/benchmark-runner/Cargo.toml @@ -3,6 +3,10 @@ name = "benchmark-runner" version = "0.1.0" edition = "2021" +[features] +default = [] +memory-tracking = [] + [dependencies] witness-generator.workspace = true zkevm-metrics.workspace = true @@ -14,6 +18,7 @@ ere-io.workspace = true guest-libs = { workspace = true, default-features = true } block-encoding-length-guest.workspace = true reth-guest.workspace = true +reth-stateless-executor.workspace = true ethrex-guest.workspace = true alloy-rlp.workspace = true diff --git a/crates/benchmark-runner/src/lib.rs b/crates/benchmark-runner/src/lib.rs index 9cf123dd..ef244f8e 100644 --- a/crates/benchmark-runner/src/lib.rs +++ b/crates/benchmark-runner/src/lib.rs @@ -6,6 +6,7 @@ pub mod guest_programs; pub mod block_encoding_length_program; pub mod empty_program; +pub mod stateless_executor; pub mod stateless_validator; pub mod runner; diff --git a/crates/benchmark-runner/src/runner.rs b/crates/benchmark-runner/src/runner.rs index de4ea446..7833d0c0 100644 --- a/crates/benchmark-runner/src/runner.rs +++ b/crates/benchmark-runner/src/runner.rs @@ -9,6 +9,15 @@ use std::process::Command; use std::{any::Any, panic}; use tracing::{error, info}; +#[cfg(feature = "memory-tracking")] +use std::{ + sync::{Arc, Mutex}, + thread, + time::Duration as StdDuration, +}; +#[cfg(feature = "memory-tracking")] +use zkevm_metrics::MemoryTracker; + use ere_zkvm_interface::{zkVM, Compiler, ProofKind, ProverResourceType}; use zkevm_metrics::{BenchmarkRun, CrashInfo, ExecutionMetrics, HardwareInfo, ProvingMetrics}; @@ -108,9 +117,48 @@ fn process_input(zkvm: &DockerizedzkVM, io: impl GuestFixture, config: &RunConfi (Some(execution), None) } Action::Prove => { + #[cfg(feature = "memory-tracking")] + let (memory_tracker, sample_handle) = { + // Set up memory tracking + let memory_tracker = Arc::new(Mutex::new(MemoryTracker::new())); + let memory_tracker_clone = memory_tracker.clone(); + + // Start memory tracking + { + let mut tracker = memory_tracker.lock().unwrap(); + tracker.start_tracking(); + } + + // Start background memory sampling thread + let sample_handle = { + let tracker = memory_tracker_clone; + thread::spawn(move || { + let start = std::time::Instant::now(); + while start.elapsed().as_secs() < 3600 { + // Max 1 hour timeout + { + let mut tracker = tracker.lock().unwrap(); + tracker.sample_memory(); + } + thread::sleep(StdDuration::from_millis(100)); // Sample every 100ms + } + }) + }; + + (memory_tracker, sample_handle) + }; + let run = panic::catch_unwind(panic::AssertUnwindSafe(|| { zkvm.prove(&input, ProofKind::Compressed) })); + + #[cfg(feature = "memory-tracking")] + let final_tracker = { + // Stop memory tracking + drop(sample_handle); + memory_tracker.lock().unwrap().clone() + }; + let proving = match run { Ok(Ok((public_values, proof, report))) => { verify_public_output(&io, &public_values) @@ -123,6 +171,18 @@ fn process_input(zkvm: &DockerizedzkVM, io: impl GuestFixture, config: &RunConfi ProvingMetrics::Success { proof_size: proof.as_bytes().len(), proving_time_ms: report.proving_time.as_millis(), + #[cfg(feature = "memory-tracking")] + peak_memory_usage_bytes: Some(final_tracker.get_peak_memory()), + #[cfg(not(feature = "memory-tracking"))] + peak_memory_usage_bytes: None, + #[cfg(feature = "memory-tracking")] + average_memory_usage_bytes: Some(final_tracker.get_average_memory()), + #[cfg(not(feature = "memory-tracking"))] + average_memory_usage_bytes: None, + #[cfg(feature = "memory-tracking")] + initial_memory_usage_bytes: Some(final_tracker.get_initial_memory()), + #[cfg(not(feature = "memory-tracking"))] + initial_memory_usage_bytes: None, } } Ok(Err(e)) => ProvingMetrics::Crashed(CrashInfo { diff --git a/crates/benchmark-runner/src/stateless_executor.rs b/crates/benchmark-runner/src/stateless_executor.rs new file mode 100644 index 00000000..c661570e --- /dev/null +++ b/crates/benchmark-runner/src/stateless_executor.rs @@ -0,0 +1,79 @@ +//! Stateless executor guest program. + +use crate::guest_programs::GuestFixture; +use anyhow::{Context, Result}; +use rayon::iter::{IntoParallelIterator, ParallelIterator}; +use serde::{Deserialize, Serialize}; +use std::path::Path; +use strum::{AsRefStr, EnumString}; +use walkdir::WalkDir; +use witness_generator::StatelessExecutorFixture; + +pub mod reth; + +/// Execution client variants. +#[derive(Debug, Copy, Clone, PartialEq, Eq, EnumString, AsRefStr)] +#[strum(ascii_case_insensitive)] +pub enum ExecutionClient { + /// Reth stateless block validation guest program. + Reth, +} + +/// Extra information about the block being benchmarked +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct BlockMetadata { + /// Gas used in the block. + pub block_used_gas: u64, +} + +/// Prepares the inputs for the stateless executor guest program based on the mode. +pub fn stateless_executor_inputs( + input_folder: &Path, + el: ExecutionClient, +) -> anyhow::Result>> { + stateless_executor_inputs_from(input_folder, None, el) +} + +/// Prepares inputs from either a folder or a single file. +pub fn stateless_executor_inputs_from( + input_folder: &Path, + input_file: Option<&Path>, + el: ExecutionClient, +) -> anyhow::Result>> { + let fixtures = match input_file { + Some(file) => vec![read_benchmark_fixture_file(file)?], + None => read_benchmark_fixtures_folder(input_folder)?, + }; + match el { + ExecutionClient::Reth => reth::stateless_executor_inputs_from_fixtures(fixtures), + } +} + +/// Reads a single benchmark fixture file. +fn read_benchmark_fixture_file(path: &Path) -> Result { + let content = + std::fs::read(path).with_context(|| format!("Failed to read file: {}", path.display()))?; + serde_json::from_slice(&content).with_context(|| format!("Failed to parse {}", path.display())) +} + +/// Reads the benchmark fixtures folder and returns a list of block and witness pairs. +pub fn read_benchmark_fixtures_folder(path: &Path) -> Result> { + WalkDir::new(path) + .min_depth(1) + .into_iter() + .collect::, _>>()? + .into_par_iter() + .map(|entry| { + if entry.file_type().is_file() { + let content = std::fs::read(entry.path())?; + let bw: StatelessExecutorFixture = + serde_json::from_slice(&content).map_err(|e| { + anyhow::anyhow!("Failed to parse {}: {}", entry.path().display(), e) + })?; + Ok(bw) + } else { + anyhow::bail!("Invalid input folder structure: expected files only") + } + }) + .collect() +} diff --git a/crates/benchmark-runner/src/stateless_executor/reth.rs b/crates/benchmark-runner/src/stateless_executor/reth.rs new file mode 100644 index 00000000..683af074 --- /dev/null +++ b/crates/benchmark-runner/src/stateless_executor/reth.rs @@ -0,0 +1,54 @@ +//! Stateless executor guest program for Reth (execution-only, no validation). + +use crate::{ + guest_programs::{GenericGuestFixture, GuestFixture}, + stateless_executor::{read_benchmark_fixtures_folder, BlockMetadata}, +}; +use guest_libs::senders::recover_signers; +use reth_stateless_executor::guest::{RethStatelessExecutorGuest, RethStatelessExecutorInput}; +use std::{path::Path, sync::OnceLock}; +use witness_generator::StatelessExecutorFixture; + +/// Prepares the inputs for the Reth stateless executor guest program. +pub fn stateless_executor_inputs( + input_folder: &Path, +) -> anyhow::Result>> { + stateless_executor_inputs_from_fixtures(read_benchmark_fixtures_folder(input_folder)?) +} + +/// Prepares the inputs from pre-loaded fixtures. +pub fn stateless_executor_inputs_from_fixtures( + fixtures: Vec, +) -> anyhow::Result>> { + fixtures + .into_iter() + .map(|bw| { + let input = get_input_execution(&bw)?; + let metadata = BlockMetadata { + block_used_gas: bw.stateless_input.block.gas_used, + }; + + // For execution-only, the expected output is just a boolean + Ok(GenericGuestFixture:: { + name: bw.name.clone(), + input, + metadata, + output: OnceLock::from(bw.success), + } + .into_output_sha256() + .into_boxed()) + }) + .collect() +} + +fn get_input_execution( + bw: &StatelessExecutorFixture, +) -> anyhow::Result { + let stateless_input = &bw.stateless_input; + let signers = recover_signers(&stateless_input.block.body.transactions)?; + + Ok(RethStatelessExecutorInput { + stateless_input: stateless_input.clone(), + public_keys: signers, + }) +} diff --git a/crates/benchmark-runner/src/stateless_validator.rs b/crates/benchmark-runner/src/stateless_validator.rs index e134d601..7364b431 100644 --- a/crates/benchmark-runner/src/stateless_validator.rs +++ b/crates/benchmark-runner/src/stateless_validator.rs @@ -1,7 +1,7 @@ //! Stateless validator guest program. use crate::guest_programs::GuestFixture; -use anyhow::Result; +use anyhow::{Context, Result}; use rayon::iter::{IntoParallelIterator, ParallelIterator}; use serde::{Deserialize, Serialize}; use std::path::Path; @@ -25,7 +25,8 @@ pub enum ExecutionClient { /// Extra information about the block being benchmarked #[derive(Debug, Clone, Serialize, Deserialize)] pub struct BlockMetadata { - block_used_gas: u64, + /// Gas used in the block. + pub block_used_gas: u64, } /// Prepares the inputs for the stateless validator guest program based on the mode. @@ -33,12 +34,32 @@ pub fn stateless_validator_inputs( input_folder: &Path, el: ExecutionClient, ) -> anyhow::Result>> { + stateless_validator_inputs_from(input_folder, None, el) +} + +/// Prepares inputs from either a folder or a single file. +pub fn stateless_validator_inputs_from( + input_folder: &Path, + input_file: Option<&Path>, + el: ExecutionClient, +) -> anyhow::Result>> { + let fixtures = match input_file { + Some(file) => vec![read_benchmark_fixture_file(file)?], + None => read_benchmark_fixtures_folder(input_folder)?, + }; match el { - ExecutionClient::Reth => reth::stateless_validator_inputs(input_folder), - ExecutionClient::Ethrex => ethrex::stateless_validator_inputs(input_folder), + ExecutionClient::Reth => reth::stateless_validator_inputs_from_fixtures(fixtures), + ExecutionClient::Ethrex => ethrex::stateless_validator_inputs_from_fixtures(fixtures), } } +/// Reads a single benchmark fixture file. +fn read_benchmark_fixture_file(path: &Path) -> Result { + let content = + std::fs::read(path).with_context(|| format!("Failed to read file: {}", path.display()))?; + serde_json::from_slice(&content).with_context(|| format!("Failed to parse {}", path.display())) +} + /// Reads the benchmark fixtures folder and returns a list of block and witness pairs. pub fn read_benchmark_fixtures_folder(path: &Path) -> Result> { WalkDir::new(path) diff --git a/crates/benchmark-runner/src/stateless_validator/ethrex.rs b/crates/benchmark-runner/src/stateless_validator/ethrex.rs index c05ded46..0df3e061 100644 --- a/crates/benchmark-runner/src/stateless_validator/ethrex.rs +++ b/crates/benchmark-runner/src/stateless_validator/ethrex.rs @@ -6,11 +6,8 @@ use crate::{ }; use alloy_eips::eip6110::MAINNET_DEPOSIT_CONTRACT_ADDRESS; use alloy_rlp::Encodable; -use anyhow::Context; use ethrex_common::{ - types::{ - block_execution_witness, BlobSchedule, Block, BlockHeader, ChainConfig, ForkBlobSchedule, - }, + types::{block_execution_witness, BlobSchedule, Block, ChainConfig, ForkBlobSchedule}, H160, }; use ethrex_guest::guest::{EthrexStatelessValidatorGuest, EthrexStatelessValidatorInput}; @@ -27,13 +24,21 @@ use witness_generator::StatelessValidationFixture; pub fn stateless_validator_inputs( input_folder: &Path, ) -> anyhow::Result>> { - read_benchmark_fixtures_folder(input_folder)? + stateless_validator_inputs_from_fixtures(read_benchmark_fixtures_folder(input_folder)?) +} + +/// Prepares the inputs from pre-loaded fixtures. +pub fn stateless_validator_inputs_from_fixtures( + fixtures: Vec, +) -> anyhow::Result>> { + fixtures .into_iter() .map(|bw| { let input = get_input_full_validation(&bw)?; let metadata = BlockMetadata { block_used_gas: bw.stateless_input.block.gas_used, }; + Ok(GenericGuestFixture:: { name: bw.name.clone(), input, @@ -146,29 +151,14 @@ fn from_reth_witness_to_ethrex_witness( let keys = si.witness.keys.iter().map(|k| k.to_vec().into()).collect(); - let parent_hash = si.block.parent_hash; - let initial_state_root = si - .witness - .headers - .iter() - .find_map(|header_bytes| { - let (header, _) = BlockHeader::decode_unfinished(header_bytes).ok()?; - (header.hash().0 == parent_hash.0).then_some(header.state_root) - }) - .context("Parent header not found in witness")?; - let rpc_witness = RpcExecutionWitness { state: nodes, keys, codes, headers: block_headers_bytes, }; - let execution_witness = execution_witness_from_rpc_chain_config( - rpc_witness, - chain_config, - block_number, - initial_state_root, - )?; + let execution_witness = + execution_witness_from_rpc_chain_config(rpc_witness, chain_config, block_number)?; Ok(execution_witness) } diff --git a/crates/benchmark-runner/src/stateless_validator/reth.rs b/crates/benchmark-runner/src/stateless_validator/reth.rs index cb10399e..22f9eaa3 100644 --- a/crates/benchmark-runner/src/stateless_validator/reth.rs +++ b/crates/benchmark-runner/src/stateless_validator/reth.rs @@ -13,7 +13,14 @@ use witness_generator::StatelessValidationFixture; pub fn stateless_validator_inputs( input_folder: &Path, ) -> anyhow::Result>> { - read_benchmark_fixtures_folder(input_folder)? + stateless_validator_inputs_from_fixtures(read_benchmark_fixtures_folder(input_folder)?) +} + +/// Prepares the inputs from pre-loaded fixtures. +pub fn stateless_validator_inputs_from_fixtures( + fixtures: Vec, +) -> anyhow::Result>> { + fixtures .into_iter() .map(|bw| { let input = get_input_full_validation(&bw)?; diff --git a/crates/ere-hosts/src/cli.rs b/crates/ere-hosts/src/cli.rs index 166e9f40..95adb4c8 100644 --- a/crates/ere-hosts/src/cli.rs +++ b/crates/ere-hosts/src/cli.rs @@ -3,10 +3,10 @@ use std::{path::PathBuf, str::FromStr}; use anyhow::Result; -use benchmark_runner::{runner::Action, stateless_validator}; +use benchmark_runner::{stateless_executor, stateless_validator}; use clap::{Parser, Subcommand, ValueEnum}; use ere_dockerized::zkVMKind; -use ere_zkvm_interface::ProverResourceType; +use ere_zkvm_interface::{ClusterProverConfig, NetworkProverConfig, ProverResourceType}; /// Command line interface for the zkVM benchmarker #[derive(Parser)] @@ -47,14 +47,39 @@ pub struct Cli { /// Subcommands for different guest programs #[derive(Subcommand, Clone, Debug)] pub enum GuestProgramCommand { + /// Ethereum Stateless Executor + StatelessExecutor { + /// Input folder for benchmark fixtures + #[arg( + short, + long, + default_value = "zkevm-fixtures-input", + conflicts_with = "input_file" + )] + input_folder: PathBuf, + /// Input file for a single benchmark fixture + #[arg(long)] + input_file: Option, + /// Execution client to benchmark + #[arg(short, long, value_enum, default_value = "reth")] + execution_client: StatelessExecutorClient, + }, /// Ethereum Stateless Validator StatelessValidator { /// Input folder for benchmark fixtures - #[arg(short, long, default_value = "zkevm-fixtures-input")] + #[arg( + short, + long, + default_value = "zkevm-fixtures-input", + conflicts_with = "input_file" + )] input_folder: PathBuf, + /// Input file for a single benchmark fixture + #[arg(long)] + input_file: Option, /// Execution client to benchmark #[arg(short, long)] - execution_client: ExecutionClient, + execution_client: StatelessValidatorClient, }, /// Empty program EmptyProgram, @@ -84,16 +109,33 @@ pub enum BlockEncodingFormat { Ssz, } +/// Execution clients for the stateless executor +#[derive(Debug, Copy, Clone, ValueEnum)] +pub enum StatelessExecutorClient { + /// Reth execution client + Reth, +} + +impl StatelessExecutorClient { + /// Get the guest relative path for the execution client + pub fn guest_rel_path(&self) -> Result { + let path = match self { + Self::Reth => "stateless-executor", + }; + Ok(PathBuf::from_str(path).unwrap()) + } +} + /// Execution clients for the stateless validator #[derive(Debug, Copy, Clone, ValueEnum)] -pub enum ExecutionClient { +pub enum StatelessValidatorClient { /// Reth execution client Reth, /// Ethrex execution client Ethrex, } -impl ExecutionClient { +impl StatelessValidatorClient { /// Get the guest relative path for the execution client pub fn guest_rel_path(&self) -> Result { let path = match self { @@ -111,6 +153,10 @@ pub enum Resource { Cpu, /// GPU resource Gpu, + /// Network resource (SP1 only, requires `NETWORK_PRIVATE_KEY` env var) + Network, + /// SP1 cluster resource + Cluster, } /// Benchmark actions @@ -127,11 +173,13 @@ impl From for ProverResourceType { match resource { Resource::Cpu => Self::Cpu, Resource::Gpu => Self::Gpu, + Resource::Network => Self::Network(NetworkProverConfig::default()), + Resource::Cluster => Self::Cluster(ClusterProverConfig::default()), } } } -impl From for Action { +impl From for benchmark_runner::runner::Action { fn from(action: BenchmarkAction) -> Self { match action { BenchmarkAction::Execute => Self::Execute, @@ -149,11 +197,19 @@ impl From for block_encoding_length_guest::guest::BlockEnco } } -impl From for stateless_validator::ExecutionClient { - fn from(client: ExecutionClient) -> Self { +impl From for stateless_executor::ExecutionClient { + fn from(client: StatelessExecutorClient) -> Self { + match client { + StatelessExecutorClient::Reth => Self::Reth, + } + } +} + +impl From for stateless_validator::ExecutionClient { + fn from(client: StatelessValidatorClient) -> Self { match client { - ExecutionClient::Reth => Self::Reth, - ExecutionClient::Ethrex => Self::Ethrex, + StatelessValidatorClient::Reth => Self::Reth, + StatelessValidatorClient::Ethrex => Self::Ethrex, } } } diff --git a/crates/ere-hosts/src/main.rs b/crates/ere-hosts/src/main.rs index 5e68c685..5ef3784e 100644 --- a/crates/ere-hosts/src/main.rs +++ b/crates/ere-hosts/src/main.rs @@ -2,20 +2,23 @@ #![cfg_attr(not(test), warn(unused_crate_dependencies))] -use anyhow::{Context, Result}; +use anyhow::{Context, Result, bail}; use benchmark_runner::{ block_encoding_length_program, empty_program, runner::{Action, RunConfig, get_zkvm_instances, run_benchmark}, - stateless_validator::{self}, + stateless_executor, stateless_validator, }; use clap::Parser; +use ere_dockerized::zkVMKind; use ere_zkvm_interface::ProverResourceType; use std::path::{Path, PathBuf}; use tracing::info; use tracing_subscriber::EnvFilter; -use crate::cli::{Cli, ExecutionClient, GuestProgramCommand}; +use crate::cli::{ + Cli, GuestProgramCommand, Resource, StatelessExecutorClient, StatelessValidatorClient, +}; pub mod cli; @@ -26,6 +29,13 @@ fn main() -> Result<()> { let cli = Cli::parse(); + // Validate that network proving is only used with SP1 + if matches!(cli.resource, Resource::Network | Resource::Cluster) + && cli.zkvms.iter().any(|z| *z != zkVMKind::SP1) + { + bail!("Network or cluster proving is only supported for SP1. Use --zkvms sp1"); + } + let resource: ProverResourceType = cli.resource.into(); let action: Action = cli.action.into(); info!( @@ -35,21 +45,64 @@ fn main() -> Result<()> { let workspace_dir = workspace_root().join("ere-guests"); match cli.guest_program { + GuestProgramCommand::StatelessExecutor { + input_folder, + input_file, + execution_client, + } => { + let input_display = input_file.as_ref().unwrap_or(&input_folder); + info!( + "Running stateless-executor benchmark for input: {}", + input_display.display() + ); + let el = execution_client.into(); + let guest_io = stateless_executor::stateless_executor_inputs_from( + input_folder.as_path(), + input_file.as_deref(), + el, + )?; + let guest_relative = execution_client + .guest_rel_path() + .context("Failed to get guest relative path")?; + let apply_patches = matches!(execution_client, StatelessExecutorClient::Reth); + let zkvms = get_zkvm_instances( + &cli.zkvms, + &workspace_dir, + &guest_relative, + resource, + apply_patches, + )?; + let config = RunConfig { + output_folder: cli.output_folder, + sub_folder: Some(el.as_ref().to_lowercase()), + action, + force_rerun: cli.force_rerun, + dump_inputs_folder: cli.dump_inputs.clone(), + }; + for zkvm in zkvms { + run_benchmark(&zkvm, &config, &guest_io)?; + } + } GuestProgramCommand::StatelessValidator { input_folder, + input_file, execution_client, } => { + let input_display = input_file.as_ref().unwrap_or(&input_folder); info!( - "Running stateless-validator benchmark for input folder: {}", - input_folder.display() + "Running stateless-validator benchmark for input: {}", + input_display.display() ); let el = execution_client.into(); - let guest_io = - stateless_validator::stateless_validator_inputs(input_folder.as_path(), el)?; + let guest_io = stateless_validator::stateless_validator_inputs_from( + input_folder.as_path(), + input_file.as_deref(), + el, + )?; let guest_relative = execution_client .guest_rel_path() .context("Failed to get guest relative path")?; - let apply_patches = matches!(execution_client, ExecutionClient::Reth); + let apply_patches = matches!(execution_client, StatelessValidatorClient::Reth); let zkvms = get_zkvm_instances( &cli.zkvms, &workspace_dir, diff --git a/crates/metrics/README.md b/crates/metrics/README.md index ab946641..7816a096 100644 --- a/crates/metrics/README.md +++ b/crates/metrics/README.md @@ -94,6 +94,9 @@ fn main() -> Result<(), Box> { proving: Some(ProvingMetrics::Success { proof_size: 256, proving_time_ms: 2_000, + peak_memory_usage_bytes: None, + average_memory_usage_bytes: None, + initial_memory_usage_bytes: None, }), }, // ... other workloads diff --git a/crates/metrics/src/lib.rs b/crates/metrics/src/lib.rs index fa7a246b..d36d8fa8 100644 --- a/crates/metrics/src/lib.rs +++ b/crates/metrics/src/lib.rs @@ -5,7 +5,7 @@ pub use chrono; use serde_derive::{Deserialize, Serialize}; use std::{collections::HashMap, fs, io, path::Path, time::Duration}; -use sysinfo::{CpuExt, System, SystemExt}; +use sysinfo::{CpuExt, Pid, ProcessExt, System, SystemExt}; use thiserror::Error; /// Represents a single benchmark run. @@ -43,6 +43,91 @@ pub struct GpuInfo { pub model: String, } +/// Memory tracker for monitoring memory usage during proving. +#[derive(Debug, Clone)] +pub struct MemoryTracker { + process_id: Pid, + initial_memory: u64, + peak_memory: u64, + memory_samples: Vec, +} + +impl Default for MemoryTracker { + fn default() -> Self { + Self::new() + } +} + +impl MemoryTracker { + /// Creates a new memory tracker + pub fn new() -> Self { + let process_id = Pid::from(std::process::id() as i32); + + Self { + process_id, + initial_memory: 0, + peak_memory: 0, + memory_samples: Vec::new(), + } + } + + /// Starts tracking memory usage + pub fn start_tracking(&mut self) { + let mut system = System::new_all(); + system.refresh_all(); + if let Some(process) = system.process(self.process_id) { + self.initial_memory = process.memory() * 1024; // Convert from KiB to bytes + self.peak_memory = self.initial_memory; + } + } + + /// Stops tracking memory usage + pub fn stop_tracking(&mut self) { + let mut system = System::new_all(); + system.refresh_all(); + if let Some(process) = system.process(self.process_id) { + let final_memory = process.memory() * 1024; // Convert from KiB to bytes + self.peak_memory = self.peak_memory.max(final_memory); + self.memory_samples.push(final_memory); + } + } + + /// Samples the current memory usage and updates the peak memory usage if necessary. + /// Also records the sampled memory usage for future analysis. + pub fn sample_memory(&mut self) { + let mut system = System::new_all(); + system.refresh_all(); + if let Some(process) = system.process(self.process_id) { + let memory = process.memory() * 1024; // Convert from KiB to bytes + self.peak_memory = self.peak_memory.max(memory); + self.memory_samples.push(memory); + } + } + + /// Gets the average memory usage across all samples + pub fn get_average_memory(&self) -> u64 { + if self.memory_samples.is_empty() { + return self.initial_memory; + } + self.memory_samples.iter().sum::() / self.memory_samples.len() as u64 + } + + /// Gets the peak memory usage in bytes + pub const fn get_peak_memory(&self) -> u64 { + self.peak_memory + } + + /// Gets the memory samples + pub fn get_memory_samples(&self) -> &[u64] { + &self.memory_samples + } + + /// Gets the initial memory usage + pub const fn get_initial_memory(&self) -> u64 { + self.initial_memory + } +} + impl HardwareInfo { /// Detects hardware information from the current system. pub fn detect() -> Self { @@ -128,6 +213,15 @@ pub enum ProvingMetrics { proof_size: usize, /// Proving time in milliseconds. proving_time_ms: u128, + /// Peak memory usage during proving in bytes. + #[serde(skip_serializing_if = "Option::is_none")] + peak_memory_usage_bytes: Option, + /// Average memory usage during proving in bytes. + #[serde(skip_serializing_if = "Option::is_none")] + average_memory_usage_bytes: Option, + /// Memory usage at start of proving in bytes. + #[serde(skip_serializing_if = "Option::is_none")] + initial_memory_usage_bytes: Option, }, /// Metrics for a crashed proving workload. Crashed(CrashInfo), @@ -259,6 +353,9 @@ mod tests { proving: Some(ProvingMetrics::Success { proof_size: 256, proving_time_ms: 2_000, + peak_memory_usage_bytes: None, + average_memory_usage_bytes: None, + initial_memory_usage_bytes: None, }), }, BenchmarkRun { @@ -271,6 +368,9 @@ mod tests { proving: Some(ProvingMetrics::Success { proof_size: 512, proving_time_ms: 5_000, + peak_memory_usage_bytes: None, + average_memory_usage_bytes: None, + initial_memory_usage_bytes: None, }), }, ] @@ -343,6 +443,9 @@ mod tests { proving: Some(ProvingMetrics::Success { proof_size: 128, proving_time_ms: 1500, + peak_memory_usage_bytes: None, + average_memory_usage_bytes: None, + initial_memory_usage_bytes: None, }), }; let json = BenchmarkRun::to_json(std::slice::from_ref(&bench)).expect("serialize mixed"); diff --git a/crates/witness-generator/src/lib.rs b/crates/witness-generator/src/lib.rs index 573a2ac6..0e04ec24 100644 --- a/crates/witness-generator/src/lib.rs +++ b/crates/witness-generator/src/lib.rs @@ -210,6 +210,8 @@ pub struct StatelessValidationFixture { /// Whether the stateless block validation is successful. pub success: bool, } +/// A stateless executor fixture containing block data and witness information. +pub type StatelessExecutorFixture = StatelessValidationFixture; impl StatelessValidationFixture { /// Serializes fixtures to a pretty-printed JSON string. @@ -238,6 +240,15 @@ impl StatelessValidationFixture { })?; Self::from_json(&contents) } + + /// Creates a new valid fixture from stateless input and a name. + pub fn from_stateless_input(input: &StatelessInput, name: &str) -> Self { + Self { + name: name.to_string(), + stateless_input: input.clone(), + success: true, + } + } } impl Fixture for StatelessValidationFixture { diff --git a/crates/witness-generator/src/rpc_generator.rs b/crates/witness-generator/src/rpc_generator.rs index 4bcf2254..c43a4424 100644 --- a/crates/witness-generator/src/rpc_generator.rs +++ b/crates/witness-generator/src/rpc_generator.rs @@ -489,27 +489,37 @@ mod test { use super::*; fn build_base_rpc() -> RpcBlocksAndWitnessesBuilder { - let rpc_url = std::env::var("RPC_URL").expect("RPC_URL not set"); + let rpc_url = get_valid_rpc_url().expect("RPC_URL not set or empty"); let rpc_headers = std::env::var("RPC_HEADERS").ok(); let mut builder = RpcBlocksAndWitnessesBuilder::new(rpc_url); if let Some(rpc_headers) = rpc_headers { - let rpc_headers: RpcFlatHeaderKeyValues = RpcFlatHeaderKeyValues::new( - rpc_headers - .split(',') - .map(|s| s.to_string()) - .collect::>(), - ); - builder = - builder.with_headers(rpc_headers.try_into().expect("Failed to parse headers")); + let headers: Vec = rpc_headers + .split(',') + .map(|s| s.trim().to_string()) + .filter(|s| !s.is_empty()) + .collect(); + if !headers.is_empty() { + let rpc_headers = RpcFlatHeaderKeyValues::new(headers); + builder = + builder.with_headers(rpc_headers.try_into().expect("Failed to parse headers")); + } } builder } + /// Returns a valid RPC URL if `RPC_URL` env var is set and non-empty, None otherwise. + fn get_valid_rpc_url() -> Option { + match std::env::var("RPC_URL") { + Ok(url) if !url.trim().is_empty() => Some(url), + _ => None, + } + } + #[tokio::test] async fn test_last_n_blocks() { - if std::env::var("RPC_URL").is_err() { - eprintln!("skipping test: set RPC_URL to run this test"); + if get_valid_rpc_url().is_none() { + eprintln!("skipping test: set RPC_URL to a valid URL to run this test"); return; } @@ -546,8 +556,8 @@ mod test { #[tokio::test] async fn test_concrete_block_num() { - if std::env::var("RPC_URL").is_err() { - eprintln!("skipping test: set RPC_URL to run this test"); + if get_valid_rpc_url().is_none() { + eprintln!("skipping test: set RPC_URL to a valid URL to run this test"); return; } @@ -610,8 +620,8 @@ mod test { #[tokio::test] async fn test_live_blocks() { - if std::env::var("RPC_URL").is_err() { - eprintln!("skipping test: set RPC_URL to run this test"); + if get_valid_rpc_url().is_none() { + eprintln!("skipping test: set RPC_URL to a valid URL to run this test"); return; } diff --git a/ere-guests/Cargo.lock b/ere-guests/Cargo.lock index 37be923b..34fd01c6 100644 --- a/ere-guests/Cargo.lock +++ b/ere-guests/Cargo.lock @@ -185,7 +185,7 @@ dependencies = [ "alloy-sol-types", "auto_impl", "derive_more 2.0.1", - "revm 33.1.0", + "revm", "thiserror 2.0.16", ] @@ -2091,8 +2091,8 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "ere-io" -version = "0.0.15" -source = "git+https://github.com/eth-applied-research-group/ere?rev=d15c6b495d0bc42bf160ecfbb11fa7600047c821#d15c6b495d0bc42bf160ecfbb11fa7600047c821" +version = "0.0.16" +source = "git+https://github.com/eth-applied-research-group/ere?rev=73a760aa635d355e5cc581777cc7703fdf60a3ac#73a760aa635d355e5cc581777cc7703fdf60a3ac" dependencies = [ "bincode 2.0.1", "rkyv", @@ -2101,8 +2101,8 @@ dependencies = [ [[package]] name = "ere-platform-airbender" -version = "0.0.15" -source = "git+https://github.com/eth-applied-research-group/ere?rev=d15c6b495d0bc42bf160ecfbb11fa7600047c821#d15c6b495d0bc42bf160ecfbb11fa7600047c821" +version = "0.0.16" +source = "git+https://github.com/eth-applied-research-group/ere?rev=73a760aa635d355e5cc581777cc7703fdf60a3ac#73a760aa635d355e5cc581777cc7703fdf60a3ac" dependencies = [ "ere-platform-trait", "riscv_common", @@ -2110,8 +2110,8 @@ dependencies = [ [[package]] name = "ere-platform-openvm" -version = "0.0.15" -source = "git+https://github.com/eth-applied-research-group/ere?rev=d15c6b495d0bc42bf160ecfbb11fa7600047c821#d15c6b495d0bc42bf160ecfbb11fa7600047c821" +version = "0.0.16" +source = "git+https://github.com/eth-applied-research-group/ere?rev=73a760aa635d355e5cc581777cc7703fdf60a3ac#73a760aa635d355e5cc581777cc7703fdf60a3ac" dependencies = [ "ere-platform-trait", "openvm", @@ -2119,8 +2119,8 @@ dependencies = [ [[package]] name = "ere-platform-pico" -version = "0.0.15" -source = "git+https://github.com/eth-applied-research-group/ere?rev=d15c6b495d0bc42bf160ecfbb11fa7600047c821#d15c6b495d0bc42bf160ecfbb11fa7600047c821" +version = "0.0.16" +source = "git+https://github.com/eth-applied-research-group/ere?rev=73a760aa635d355e5cc581777cc7703fdf60a3ac#73a760aa635d355e5cc581777cc7703fdf60a3ac" dependencies = [ "ere-platform-trait", "pico-sdk", @@ -2128,8 +2128,8 @@ dependencies = [ [[package]] name = "ere-platform-risc0" -version = "0.0.15" -source = "git+https://github.com/eth-applied-research-group/ere?rev=d15c6b495d0bc42bf160ecfbb11fa7600047c821#d15c6b495d0bc42bf160ecfbb11fa7600047c821" +version = "0.0.16" +source = "git+https://github.com/eth-applied-research-group/ere?rev=73a760aa635d355e5cc581777cc7703fdf60a3ac#73a760aa635d355e5cc581777cc7703fdf60a3ac" dependencies = [ "ere-platform-trait", "risc0-zkvm", @@ -2138,8 +2138,8 @@ dependencies = [ [[package]] name = "ere-platform-sp1" -version = "0.0.15" -source = "git+https://github.com/eth-applied-research-group/ere?rev=d15c6b495d0bc42bf160ecfbb11fa7600047c821#d15c6b495d0bc42bf160ecfbb11fa7600047c821" +version = "0.0.16" +source = "git+https://github.com/eth-applied-research-group/ere?rev=73a760aa635d355e5cc581777cc7703fdf60a3ac#73a760aa635d355e5cc581777cc7703fdf60a3ac" dependencies = [ "ere-platform-trait", "sp1-zkvm", @@ -2147,16 +2147,16 @@ dependencies = [ [[package]] name = "ere-platform-trait" -version = "0.0.15" -source = "git+https://github.com/eth-applied-research-group/ere?rev=d15c6b495d0bc42bf160ecfbb11fa7600047c821#d15c6b495d0bc42bf160ecfbb11fa7600047c821" +version = "0.0.16" +source = "git+https://github.com/eth-applied-research-group/ere?rev=73a760aa635d355e5cc581777cc7703fdf60a3ac#73a760aa635d355e5cc581777cc7703fdf60a3ac" dependencies = [ "digest 0.10.7", ] [[package]] name = "ere-platform-zisk" -version = "0.0.15" -source = "git+https://github.com/eth-applied-research-group/ere?rev=d15c6b495d0bc42bf160ecfbb11fa7600047c821#d15c6b495d0bc42bf160ecfbb11fa7600047c821" +version = "0.0.16" +source = "git+https://github.com/eth-applied-research-group/ere?rev=73a760aa635d355e5cc581777cc7703fdf60a3ac#73a760aa635d355e5cc581777cc7703fdf60a3ac" dependencies = [ "ere-platform-trait", "ziskos", @@ -2247,8 +2247,8 @@ dependencies = [ [[package]] name = "ethrex-blockchain" -version = "7.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ "bytes", "ethrex-common", @@ -2268,8 +2268,8 @@ dependencies = [ [[package]] name = "ethrex-common" -version = "7.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ "bytes", "crc32fast", @@ -2278,6 +2278,7 @@ dependencies = [ "ethrex-rlp", "ethrex-trie", "hex", + "hex-literal 0.4.1", "k256 0.13.4 (registry+https://github.com/rust-lang/crates.io-index)", "kzg-rs 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static", @@ -2286,7 +2287,6 @@ dependencies = [ "rayon", "rkyv", "rustc-hash", - "secp256k1 0.30.0", "serde", "serde_json", "sha2", @@ -2299,8 +2299,8 @@ dependencies = [ [[package]] name = "ethrex-crypto" -version = "7.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ "kzg-rs 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "thiserror 2.0.16", @@ -2321,8 +2321,8 @@ dependencies = [ [[package]] name = "ethrex-l2-common" -version = "7.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ "bytes", "ethereum-types", @@ -2336,17 +2336,17 @@ dependencies = [ "k256 0.13.4 (registry+https://github.com/rust-lang/crates.io-index)", "lambdaworks-crypto", "rkyv", - "secp256k1 0.30.0", "serde", "serde_with", "sha3", "thiserror 2.0.16", + "tracing", ] [[package]] name = "ethrex-levm" -version = "7.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ "ark-bn254", "ark-ec", @@ -2366,7 +2366,6 @@ dependencies = [ "p256 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)", "ripemd", "rustc-hash", - "secp256k1 0.30.0", "serde", "serde_json", "sha2", @@ -2378,8 +2377,8 @@ dependencies = [ [[package]] name = "ethrex-metrics" -version = "7.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ "ethrex-common", "serde", @@ -2390,8 +2389,8 @@ dependencies = [ [[package]] name = "ethrex-rlp" -version = "7.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ "bytes", "ethereum-types", @@ -2404,12 +2403,11 @@ dependencies = [ [[package]] name = "ethrex-storage" -version = "7.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ "anyhow", "async-trait", - "bincode 1.3.3", "bytes", "ethereum-types", "ethrex-common", @@ -2424,21 +2422,22 @@ dependencies = [ "serde", "serde_json", "thiserror 2.0.16", + "tokio", "tracing", ] [[package]] name = "ethrex-threadpool" version = "0.1.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ "crossbeam", ] [[package]] name = "ethrex-trie" -version = "7.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ "anyhow", "bytes", @@ -2461,8 +2460,8 @@ dependencies = [ [[package]] name = "ethrex-vm" -version = "7.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ "bincode 1.3.3", "bytes", @@ -2498,8 +2497,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e24cb5a94bcae1e5408b0effca5cd7172ea3c5755049c5f3af4cd283a165298" dependencies = [ "bit-set", - "regex-automata", - "regex-syntax", + "regex-automata 0.4.10", + "regex-syntax 0.8.6", ] [[package]] @@ -2807,9 +2806,10 @@ dependencies = [ [[package]] name = "guest_program" -version = "7.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ + "bincode 1.3.3", "bytes", "ethrex-blockchain", "ethrex-common", @@ -3463,8 +3463,8 @@ dependencies = [ [[package]] name = "lib-c" -version = "0.14.0" -source = "git+https://github.com/0xPolygonHermez/zisk.git?tag=v0.14.0#2f791ffd070d024ba350f054c349c8d6bd98d629" +version = "0.15.0" +source = "git+https://github.com/0xPolygonHermez/zisk.git?tag=v0.15.0#b3ca745b80423c8123dc24f19039865a5bc8b074" [[package]] name = "libc" @@ -3602,13 +3602,22 @@ dependencies = [ "libc", ] +[[package]] +name = "matchers" +version = "0.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f099785f7595cc4b4553a174ce30dd7589ef93391ff414dbb67f62392b9e0ce1" +dependencies = [ + "regex-automata 0.1.10", +] + [[package]] name = "matchers" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" dependencies = [ - "regex-automata", + "regex-automata 0.4.10", ] [[package]] @@ -4214,27 +4223,6 @@ dependencies = [ "openvm-rv32im-guest", ] -[[package]] -name = "openvm-revm-crypto" -version = "0.3.0" -source = "git+https://github.com/axiom-crypto/openvm-reth-benchmark.git?branch=openvm-v1.4.1-reth-1.8.3#14aa05261a16975238bc7a2718fdf76f80e6fa8b" -dependencies = [ - "alloy-consensus", - "alloy-primitives", - "k256 0.13.4 (git+https://github.com/openvm-org//openvm.git?tag=v1.4.2)", - "openvm", - "openvm-algebra-guest", - "openvm-ecc-guest", - "openvm-keccak256", - "openvm-kzg", - "openvm-pairing", - "openvm-sha2", - "p256 0.13.2 (git+https://github.com/openvm-org//openvm.git?tag=v1.4.2)", - "revm 29.0.1", - "revm-precompile 27.0.0", - "revm-primitives 20.2.1", -] - [[package]] name = "openvm-rv32im-guest" version = "1.4.2" @@ -4295,18 +4283,18 @@ dependencies = [ [[package]] name = "p3-air" version = "0.1.0" -source = "git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b#a4d376babf5d09497f1fab1df7f1ffce01260973" +source = "git+https://github.com/brevis-network/Plonky3.git?rev=411a80d#411a80deafb89335b5571f9925d584d7f51317e9" dependencies = [ - "p3-field 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", + "p3-field 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", "p3-matrix 0.1.0", ] [[package]] name = "p3-baby-bear" version = "0.1.0" -source = "git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b#a4d376babf5d09497f1fab1df7f1ffce01260973" +source = "git+https://github.com/brevis-network/Plonky3.git?rev=411a80d#411a80deafb89335b5571f9925d584d7f51317e9" dependencies = [ - "p3-field 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", + "p3-field 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", "p3-mds 0.1.0", "p3-monty-31", "p3-poseidon2 0.1.0", @@ -4333,22 +4321,22 @@ dependencies = [ [[package]] name = "p3-blake3" version = "0.1.0" -source = "git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b#a4d376babf5d09497f1fab1df7f1ffce01260973" +source = "git+https://github.com/brevis-network/Plonky3.git?rev=411a80d#411a80deafb89335b5571f9925d584d7f51317e9" dependencies = [ "blake3", "p3-symmetric 0.1.0", - "p3-util 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", + "p3-util 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", ] [[package]] name = "p3-bn254-fr" version = "0.1.0" -source = "git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b#a4d376babf5d09497f1fab1df7f1ffce01260973" +source = "git+https://github.com/brevis-network/Plonky3.git?rev=411a80d#411a80deafb89335b5571f9925d584d7f51317e9" dependencies = [ "ff 0.13.1", "halo2curves", "num-bigint 0.4.6", - "p3-field 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", + "p3-field 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", "p3-poseidon2 0.1.0", "p3-symmetric 0.1.0", "rand 0.8.5", @@ -4358,29 +4346,29 @@ dependencies = [ [[package]] name = "p3-challenger" version = "0.1.0" -source = "git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b#a4d376babf5d09497f1fab1df7f1ffce01260973" +source = "git+https://github.com/brevis-network/Plonky3.git?rev=411a80d#411a80deafb89335b5571f9925d584d7f51317e9" dependencies = [ - "p3-field 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", - "p3-maybe-rayon 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", + "p3-field 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", + "p3-maybe-rayon 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", "p3-symmetric 0.1.0", - "p3-util 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", + "p3-util 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", "tracing", ] [[package]] name = "p3-circle" version = "0.1.0" -source = "git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b#a4d376babf5d09497f1fab1df7f1ffce01260973" +source = "git+https://github.com/brevis-network/Plonky3.git?rev=411a80d#411a80deafb89335b5571f9925d584d7f51317e9" dependencies = [ "itertools 0.13.0", "p3-challenger", "p3-commit", "p3-dft 0.1.0", - "p3-field 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", + "p3-field 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", "p3-fri", "p3-matrix 0.1.0", - "p3-maybe-rayon 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", - "p3-util 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", + "p3-maybe-rayon 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", + "p3-util 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", "serde", "tracing", ] @@ -4388,27 +4376,27 @@ dependencies = [ [[package]] name = "p3-commit" version = "0.1.0" -source = "git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b#a4d376babf5d09497f1fab1df7f1ffce01260973" +source = "git+https://github.com/brevis-network/Plonky3.git?rev=411a80d#411a80deafb89335b5571f9925d584d7f51317e9" dependencies = [ "itertools 0.13.0", "p3-challenger", "p3-dft 0.1.0", - "p3-field 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", + "p3-field 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", "p3-matrix 0.1.0", - "p3-util 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", + "p3-util 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", "serde", ] [[package]] name = "p3-dft" version = "0.1.0" -source = "git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b#a4d376babf5d09497f1fab1df7f1ffce01260973" +source = "git+https://github.com/brevis-network/Plonky3.git?rev=411a80d#411a80deafb89335b5571f9925d584d7f51317e9" dependencies = [ "itertools 0.13.0", - "p3-field 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", + "p3-field 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", "p3-matrix 0.1.0", - "p3-maybe-rayon 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", - "p3-util 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", + "p3-maybe-rayon 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", + "p3-util 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", "tracing", ] @@ -4428,15 +4416,15 @@ dependencies = [ [[package]] name = "p3-field" version = "0.1.0" -source = "git+https://github.com/Plonky3/Plonky3.git?rev=539bbc84085efb609f4f62cb03cf49588388abdb#539bbc84085efb609f4f62cb03cf49588388abdb" +source = "git+https://github.com/brevis-network/Plonky3.git?rev=411a80d#411a80deafb89335b5571f9925d584d7f51317e9" dependencies = [ - "itertools 0.14.0", + "itertools 0.13.0", "num-bigint 0.4.6", "num-integer", "num-traits", "nums", - "p3-maybe-rayon 0.1.0 (git+https://github.com/Plonky3/Plonky3.git?rev=539bbc84085efb609f4f62cb03cf49588388abdb)", - "p3-util 0.1.0 (git+https://github.com/Plonky3/Plonky3.git?rev=539bbc84085efb609f4f62cb03cf49588388abdb)", + "p3-maybe-rayon 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", + "p3-util 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", "rand 0.8.5", "serde", "tracing", @@ -4445,15 +4433,15 @@ dependencies = [ [[package]] name = "p3-field" version = "0.1.0" -source = "git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b#a4d376babf5d09497f1fab1df7f1ffce01260973" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=539bbc84085efb609f4f62cb03cf49588388abdb#539bbc84085efb609f4f62cb03cf49588388abdb" dependencies = [ - "itertools 0.13.0", + "itertools 0.14.0", "num-bigint 0.4.6", "num-integer", "num-traits", "nums", - "p3-maybe-rayon 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", - "p3-util 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", + "p3-maybe-rayon 0.1.0 (git+https://github.com/Plonky3/Plonky3.git?rev=539bbc84085efb609f4f62cb03cf49588388abdb)", + "p3-util 0.1.0 (git+https://github.com/Plonky3/Plonky3.git?rev=539bbc84085efb609f4f62cb03cf49588388abdb)", "rand 0.8.5", "serde", "tracing", @@ -4476,17 +4464,17 @@ dependencies = [ [[package]] name = "p3-fri" version = "0.1.0" -source = "git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b#a4d376babf5d09497f1fab1df7f1ffce01260973" +source = "git+https://github.com/brevis-network/Plonky3.git?rev=411a80d#411a80deafb89335b5571f9925d584d7f51317e9" dependencies = [ "itertools 0.13.0", "p3-challenger", "p3-commit", "p3-dft 0.1.0", - "p3-field 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", + "p3-field 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", "p3-interpolation", "p3-matrix 0.1.0", - "p3-maybe-rayon 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", - "p3-util 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", + "p3-maybe-rayon 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", + "p3-util 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", "rand 0.8.5", "serde", "tracing", @@ -4495,15 +4483,15 @@ dependencies = [ [[package]] name = "p3-goldilocks" version = "0.1.0" -source = "git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b#a4d376babf5d09497f1fab1df7f1ffce01260973" +source = "git+https://github.com/brevis-network/Plonky3.git?rev=411a80d#411a80deafb89335b5571f9925d584d7f51317e9" dependencies = [ "num-bigint 0.4.6", "p3-dft 0.1.0", - "p3-field 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", + "p3-field 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", "p3-mds 0.1.0", "p3-poseidon2 0.1.0", "p3-symmetric 0.1.0", - "p3-util 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", + "p3-util 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", "rand 0.8.5", "serde", ] @@ -4511,45 +4499,45 @@ dependencies = [ [[package]] name = "p3-interpolation" version = "0.1.0" -source = "git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b#a4d376babf5d09497f1fab1df7f1ffce01260973" +source = "git+https://github.com/brevis-network/Plonky3.git?rev=411a80d#411a80deafb89335b5571f9925d584d7f51317e9" dependencies = [ - "p3-field 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", + "p3-field 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", "p3-matrix 0.1.0", - "p3-maybe-rayon 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", - "p3-util 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", + "p3-maybe-rayon 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", + "p3-util 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", ] [[package]] name = "p3-keccak" version = "0.1.0" -source = "git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b#a4d376babf5d09497f1fab1df7f1ffce01260973" +source = "git+https://github.com/brevis-network/Plonky3.git?rev=411a80d#411a80deafb89335b5571f9925d584d7f51317e9" dependencies = [ "itertools 0.13.0", - "p3-field 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", + "p3-field 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", "p3-symmetric 0.1.0", - "p3-util 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", + "p3-util 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", "tiny-keccak", ] [[package]] name = "p3-keccak-air" version = "0.1.0" -source = "git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b#a4d376babf5d09497f1fab1df7f1ffce01260973" +source = "git+https://github.com/brevis-network/Plonky3.git?rev=411a80d#411a80deafb89335b5571f9925d584d7f51317e9" dependencies = [ "p3-air", - "p3-field 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", + "p3-field 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", "p3-matrix 0.1.0", - "p3-maybe-rayon 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", - "p3-util 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", + "p3-maybe-rayon 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", + "p3-util 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", "tracing", ] [[package]] name = "p3-koala-bear" version = "0.1.0" -source = "git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b#a4d376babf5d09497f1fab1df7f1ffce01260973" +source = "git+https://github.com/brevis-network/Plonky3.git?rev=411a80d#411a80deafb89335b5571f9925d584d7f51317e9" dependencies = [ - "p3-field 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", + "p3-field 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", "p3-mds 0.1.0", "p3-monty-31", "p3-poseidon2 0.1.0", @@ -4561,12 +4549,12 @@ dependencies = [ [[package]] name = "p3-matrix" version = "0.1.0" -source = "git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b#a4d376babf5d09497f1fab1df7f1ffce01260973" +source = "git+https://github.com/brevis-network/Plonky3.git?rev=411a80d#411a80deafb89335b5571f9925d584d7f51317e9" dependencies = [ "itertools 0.13.0", - "p3-field 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", - "p3-maybe-rayon 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", - "p3-util 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", + "p3-field 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", + "p3-maybe-rayon 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", + "p3-util 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", "rand 0.8.5", "serde", "tracing", @@ -4591,15 +4579,15 @@ dependencies = [ [[package]] name = "p3-maybe-rayon" version = "0.1.0" -source = "git+https://github.com/Plonky3/Plonky3.git?rev=539bbc84085efb609f4f62cb03cf49588388abdb#539bbc84085efb609f4f62cb03cf49588388abdb" +source = "git+https://github.com/brevis-network/Plonky3.git?rev=411a80d#411a80deafb89335b5571f9925d584d7f51317e9" +dependencies = [ + "rayon", +] [[package]] name = "p3-maybe-rayon" version = "0.1.0" -source = "git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b#a4d376babf5d09497f1fab1df7f1ffce01260973" -dependencies = [ - "rayon", -] +source = "git+https://github.com/Plonky3/Plonky3.git?rev=539bbc84085efb609f4f62cb03cf49588388abdb#539bbc84085efb609f4f62cb03cf49588388abdb" [[package]] name = "p3-maybe-rayon" @@ -4610,14 +4598,14 @@ checksum = "c3968ad1160310296eb04f91a5f4edfa38fe1d6b2b8cd6b5c64e6f9b7370979e" [[package]] name = "p3-mds" version = "0.1.0" -source = "git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b#a4d376babf5d09497f1fab1df7f1ffce01260973" +source = "git+https://github.com/brevis-network/Plonky3.git?rev=411a80d#411a80deafb89335b5571f9925d584d7f51317e9" dependencies = [ "itertools 0.13.0", "p3-dft 0.1.0", - "p3-field 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", + "p3-field 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", "p3-matrix 0.1.0", "p3-symmetric 0.1.0", - "p3-util 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", + "p3-util 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", "rand 0.8.5", ] @@ -4639,15 +4627,15 @@ dependencies = [ [[package]] name = "p3-merkle-tree" version = "0.1.0" -source = "git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b#a4d376babf5d09497f1fab1df7f1ffce01260973" +source = "git+https://github.com/brevis-network/Plonky3.git?rev=411a80d#411a80deafb89335b5571f9925d584d7f51317e9" dependencies = [ "itertools 0.13.0", "p3-commit", - "p3-field 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", + "p3-field 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", "p3-matrix 0.1.0", - "p3-maybe-rayon 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", + "p3-maybe-rayon 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", "p3-symmetric 0.1.0", - "p3-util 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", + "p3-util 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", "rand 0.8.5", "serde", "tracing", @@ -4656,18 +4644,18 @@ dependencies = [ [[package]] name = "p3-mersenne-31" version = "0.1.0" -source = "git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b#a4d376babf5d09497f1fab1df7f1ffce01260973" +source = "git+https://github.com/brevis-network/Plonky3.git?rev=411a80d#411a80deafb89335b5571f9925d584d7f51317e9" dependencies = [ "itertools 0.13.0", "num-bigint 0.4.6", "p3-dft 0.1.0", - "p3-field 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", + "p3-field 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", "p3-matrix 0.1.0", - "p3-maybe-rayon 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", + "p3-maybe-rayon 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", "p3-mds 0.1.0", "p3-poseidon2 0.1.0", "p3-symmetric 0.1.0", - "p3-util 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", + "p3-util 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", "rand 0.8.5", "serde", ] @@ -4675,18 +4663,18 @@ dependencies = [ [[package]] name = "p3-monty-31" version = "0.1.0" -source = "git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b#a4d376babf5d09497f1fab1df7f1ffce01260973" +source = "git+https://github.com/brevis-network/Plonky3.git?rev=411a80d#411a80deafb89335b5571f9925d584d7f51317e9" dependencies = [ "itertools 0.13.0", "num-bigint 0.4.6", "p3-dft 0.1.0", - "p3-field 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", + "p3-field 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", "p3-matrix 0.1.0", - "p3-maybe-rayon 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", + "p3-maybe-rayon 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", "p3-mds 0.1.0", "p3-poseidon2 0.1.0", "p3-symmetric 0.1.0", - "p3-util 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", + "p3-util 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", "rand 0.8.5", "serde", "tracing", @@ -4696,10 +4684,10 @@ dependencies = [ [[package]] name = "p3-poseidon2" version = "0.1.0" -source = "git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b#a4d376babf5d09497f1fab1df7f1ffce01260973" +source = "git+https://github.com/brevis-network/Plonky3.git?rev=411a80d#411a80deafb89335b5571f9925d584d7f51317e9" dependencies = [ "gcd", - "p3-field 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", + "p3-field 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", "p3-mds 0.1.0", "p3-symmetric 0.1.0", "rand 0.8.5", @@ -4722,10 +4710,10 @@ dependencies = [ [[package]] name = "p3-symmetric" version = "0.1.0" -source = "git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b#a4d376babf5d09497f1fab1df7f1ffce01260973" +source = "git+https://github.com/brevis-network/Plonky3.git?rev=411a80d#411a80deafb89335b5571f9925d584d7f51317e9" dependencies = [ "itertools 0.13.0", - "p3-field 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", + "p3-field 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", "serde", ] @@ -4743,17 +4731,17 @@ dependencies = [ [[package]] name = "p3-uni-stark" version = "0.1.0" -source = "git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b#a4d376babf5d09497f1fab1df7f1ffce01260973" +source = "git+https://github.com/brevis-network/Plonky3.git?rev=411a80d#411a80deafb89335b5571f9925d584d7f51317e9" dependencies = [ "itertools 0.13.0", "p3-air", "p3-challenger", "p3-commit", "p3-dft 0.1.0", - "p3-field 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", + "p3-field 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", "p3-matrix 0.1.0", - "p3-maybe-rayon 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", - "p3-util 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", + "p3-maybe-rayon 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", + "p3-util 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", "serde", "tracing", ] @@ -4761,7 +4749,7 @@ dependencies = [ [[package]] name = "p3-util" version = "0.1.0" -source = "git+https://github.com/Plonky3/Plonky3.git?rev=539bbc84085efb609f4f62cb03cf49588388abdb#539bbc84085efb609f4f62cb03cf49588388abdb" +source = "git+https://github.com/brevis-network/Plonky3.git?rev=411a80d#411a80deafb89335b5571f9925d584d7f51317e9" dependencies = [ "serde", ] @@ -4769,7 +4757,7 @@ dependencies = [ [[package]] name = "p3-util" version = "0.1.0" -source = "git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b#a4d376babf5d09497f1fab1df7f1ffce01260973" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=539bbc84085efb609f4f62cb03cf49588388abdb#539bbc84085efb609f4f62cb03cf49588388abdb" dependencies = [ "serde", ] @@ -4906,38 +4894,17 @@ dependencies = [ "ucd-trie", ] -[[package]] -name = "phf" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" -dependencies = [ - "phf_macros 0.11.3", - "phf_shared 0.11.3", - "serde", -] - [[package]] name = "phf" version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf" dependencies = [ - "phf_macros 0.13.1", - "phf_shared 0.13.1", + "phf_macros", + "phf_shared", "serde", ] -[[package]] -name = "phf_generator" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" -dependencies = [ - "phf_shared 0.11.3", - "rand 0.8.5", -] - [[package]] name = "phf_generator" version = "0.13.1" @@ -4945,20 +4912,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737" dependencies = [ "fastrand", - "phf_shared 0.13.1", -] - -[[package]] -name = "phf_macros" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" -dependencies = [ - "phf_generator 0.11.3", - "phf_shared 0.11.3", - "proc-macro2", - "quote", - "syn 2.0.106", + "phf_shared", ] [[package]] @@ -4967,22 +4921,13 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "812f032b54b1e759ccd5f8b6677695d5268c588701effba24601f6932f8269ef" dependencies = [ - "phf_generator 0.13.1", - "phf_shared 0.13.1", + "phf_generator", + "phf_shared", "proc-macro2", "quote", "syn 2.0.106", ] -[[package]] -name = "phf_shared" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" -dependencies = [ - "siphasher", -] - [[package]] name = "phf_shared" version = "0.13.1" @@ -4994,8 +4939,8 @@ dependencies = [ [[package]] name = "pico-derive" -version = "1.1.8" -source = "git+https://github.com/brevis-network/pico.git?tag=v1.1.10#b06418a16d316c5a17d0cc094c7a3cf0af0efc55" +version = "1.2.2" +source = "git+https://github.com/brevis-network/pico.git?tag=v1.2.2#57ff6c5c0755f38bfa55a54eda053eae664ebcd2" dependencies = [ "proc-macro2", "quote", @@ -5027,8 +4972,8 @@ dependencies = [ [[package]] name = "pico-patch-libs" -version = "1.1.8" -source = "git+https://github.com/brevis-network/pico.git?tag=v1.1.10#b06418a16d316c5a17d0cc094c7a3cf0af0efc55" +version = "1.2.2" +source = "git+https://github.com/brevis-network/pico.git?tag=v1.2.2#57ff6c5c0755f38bfa55a54eda053eae664ebcd2" dependencies = [ "bincode 1.3.3", "serde", @@ -5036,8 +4981,8 @@ dependencies = [ [[package]] name = "pico-sdk" -version = "1.1.8" -source = "git+https://github.com/brevis-network/pico.git?tag=v1.1.10#b06418a16d316c5a17d0cc094c7a3cf0af0efc55" +version = "1.2.2" +source = "git+https://github.com/brevis-network/pico.git?tag=v1.2.2#57ff6c5c0755f38bfa55a54eda053eae664ebcd2" dependencies = [ "anyhow", "bincode 1.3.3", @@ -5049,10 +4994,10 @@ dependencies = [ "log", "p3-baby-bear 0.1.0", "p3-challenger", - "p3-field 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", + "p3-field 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", "p3-koala-bear", "p3-mersenne-31", - "pico-patch-libs 1.1.8", + "pico-patch-libs 1.2.2", "pico-vm", "rand 0.8.5", "serde", @@ -5062,8 +5007,8 @@ dependencies = [ [[package]] name = "pico-vm" -version = "1.1.8" -source = "git+https://github.com/brevis-network/pico.git?tag=v1.1.10#b06418a16d316c5a17d0cc094c7a3cf0af0efc55" +version = "1.2.2" +source = "git+https://github.com/brevis-network/pico.git?tag=v1.2.2#57ff6c5c0755f38bfa55a54eda053eae664ebcd2" dependencies = [ "anyhow", "arrayref", @@ -5106,21 +5051,21 @@ dependencies = [ "p3-circle", "p3-commit", "p3-dft 0.1.0", - "p3-field 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", + "p3-field 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", "p3-fri", "p3-goldilocks", "p3-keccak", "p3-keccak-air", "p3-koala-bear", "p3-matrix 0.1.0", - "p3-maybe-rayon 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", + "p3-maybe-rayon 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", "p3-mds 0.1.0", "p3-merkle-tree", "p3-mersenne-31", "p3-poseidon2 0.1.0", "p3-symmetric 0.1.0", "p3-uni-stark", - "p3-util 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=a4d376b)", + "p3-util 0.1.0 (git+https://github.com/brevis-network/Plonky3.git?rev=411a80d)", "paste", "pico-derive", "rand 0.8.5", @@ -5321,7 +5266,7 @@ dependencies = [ "rand 0.9.2", "rand_chacha 0.9.0", "rand_xorshift", - "regex-syntax", + "regex-syntax 0.8.6", "rusty-fork", "tempfile", "unarray", @@ -5529,8 +5474,17 @@ checksum = "23d7fd106d8c02486a8d64e778353d1cffe08ce79ac2e82f540c86d0facf6912" dependencies = [ "aho-corasick", "memchr", - "regex-automata", - "regex-syntax", + "regex-automata 0.4.10", + "regex-syntax 0.8.6", +] + +[[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]] @@ -5541,9 +5495,15 @@ checksum = "6b9458fa0bfeeac22b5ca447c63aaf45f28439a709ccd244698632f9aa6394d6" dependencies = [ "aho-corasick", "memchr", - "regex-syntax", + "regex-syntax 0.8.6", ] +[[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.6" @@ -5571,7 +5531,7 @@ dependencies = [ "reth-guest", "reth-primitives-traits", "reth-stateless", - "revm 33.1.0", + "revm", "sha2", ] @@ -5732,7 +5692,7 @@ dependencies = [ "reth-storage-api", "reth-storage-errors", "reth-trie-common", - "revm 33.1.0", + "revm", ] [[package]] @@ -5752,7 +5712,7 @@ dependencies = [ "reth-execution-types", "reth-primitives-traits", "reth-storage-errors", - "revm 33.1.0", + "revm", ] [[package]] @@ -5781,7 +5741,7 @@ dependencies = [ "reth-ethereum-primitives", "reth-primitives-traits", "reth-trie-common", - "revm 33.1.0", + "revm", ] [[package]] @@ -5821,18 +5781,27 @@ dependencies = [ name = "reth-openvm-stateless-validator" version = "0.1.0" dependencies = [ + "alloy-consensus", + "alloy-primitives", "bincode 1.3.3", "ere-platform-openvm", "guest-libs", "k256 0.13.4 (registry+https://github.com/rust-lang/crates.io-index)", + "k256 0.13.4 (git+https://github.com/openvm-org//openvm.git?tag=v1.4.2)", "openvm", "openvm-algebra-guest", "openvm-ecc-guest", - "openvm-revm-crypto", + "openvm-keccak256", + "openvm-kzg", + "openvm-pairing", + "openvm-sha2", + "p256 0.13.2 (git+https://github.com/openvm-org//openvm.git?tag=v1.4.2)", "reth-ethereum-primitives", "reth-guest", "reth-primitives-traits", "reth-stateless", + "revm", + "revm-primitives", "sha2", ] @@ -5849,7 +5818,7 @@ dependencies = [ "reth-guest", "reth-primitives-traits", "reth-stateless", - "revm 33.1.0", + "revm", "sha2", ] @@ -5871,9 +5840,9 @@ dependencies = [ "once_cell", "op-alloy-consensus", "reth-codecs", - "revm-bytecode 7.1.1", - "revm-primitives 21.0.2", - "revm-state 8.1.1", + "revm-bytecode", + "revm-primitives", + "revm-state", "secp256k1 0.30.0", "serde", "serde_with", @@ -5900,7 +5869,23 @@ dependencies = [ "reth-primitives-traits", "reth-storage-api", "reth-storage-errors", + "revm", +] + +[[package]] +name = "reth-risc0-stateless-executor" +version = "0.1.0" +dependencies = [ + "alloy-primitives", + "ere-platform-risc0", + "guest-libs", + "k256 0.13.4 (registry+https://github.com/rust-lang/crates.io-index)", + "reth-ethereum-primitives", + "reth-primitives-traits", + "reth-stateless", + "reth-stateless-executor", "revm 33.1.0", + "sha2", ] [[package]] @@ -5915,8 +5900,26 @@ dependencies = [ "reth-guest", "reth-primitives-traits", "reth-stateless", + "revm", + "sha2", +] + +[[package]] +name = "reth-sp1-stateless-executor" +version = "0.1.0" +dependencies = [ + "alloy-primitives", + "ere-platform-sp1", + "guest-libs", + "k256 0.13.4 (registry+https://github.com/rust-lang/crates.io-index)", + "reth-ethereum-primitives", + "reth-primitives-traits", + "reth-stateless", + "reth-stateless-executor", "revm 33.1.0", "sha2", + "tracing", + "tracing-subscriber 0.2.25", ] [[package]] @@ -5931,7 +5934,7 @@ dependencies = [ "reth-guest", "reth-primitives-traits", "reth-stateless", - "revm 33.1.0", + "revm", "sha2", "tracing", "tracing-subscriber 0.3.20", @@ -5974,6 +5977,30 @@ dependencies = [ "thiserror 2.0.16", ] +[[package]] +name = "reth-stateless-executor" +version = "0.1.0" +dependencies = [ + "alloy-consensus", + "alloy-primitives", + "alloy-rlp", + "ere-io", + "ere-platform-trait", + "guest-libs", + "k256 0.13.4 (registry+https://github.com/rust-lang/crates.io-index)", + "reth-chainspec", + "reth-errors", + "reth-ethereum-primitives", + "reth-evm", + "reth-evm-ethereum", + "reth-primitives-traits", + "reth-revm", + "reth-stateless", + "serde", + "sparsestate", + "thiserror 2.0.16", +] + [[package]] name = "reth-static-file-types" version = "1.9.3" @@ -6004,7 +6031,7 @@ dependencies = [ "reth-stages-types", "reth-storage-errors", "reth-trie-common", - "revm-database 9.0.6", + "revm-database", ] [[package]] @@ -6019,7 +6046,7 @@ dependencies = [ "reth-primitives-traits", "reth-prune-types", "reth-static-file-types", - "revm-database-interface 8.0.5", + "revm-database-interface", "thiserror 2.0.16", ] @@ -6036,7 +6063,7 @@ dependencies = [ "itertools 0.14.0", "nybbles 0.4.4", "reth-primitives-traits", - "revm-database 9.0.6", + "revm-database", ] [[package]] @@ -6068,7 +6095,7 @@ dependencies = [ "reth-guest", "reth-primitives-traits", "reth-stateless", - "revm 33.1.0", + "revm", "sha2", ] @@ -6080,54 +6107,23 @@ dependencies = [ "zstd", ] -[[package]] -name = "revm" -version = "29.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "718d90dce5f07e115d0e66450b1b8aa29694c1cf3f89ebddaddccc2ccbd2f13e" -dependencies = [ - "revm-bytecode 6.2.2", - "revm-context 9.1.0", - "revm-context-interface 10.2.0", - "revm-database 7.0.5", - "revm-database-interface 7.0.5", - "revm-handler 10.0.1", - "revm-inspector 10.0.1", - "revm-interpreter 25.0.3", - "revm-precompile 27.0.0", - "revm-primitives 20.2.1", - "revm-state 7.0.5", -] - [[package]] name = "revm" version = "33.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c85ed0028f043f87b3c88d4a4cb6f0a76440085523b6a8afe5ff003cf418054" dependencies = [ - "revm-bytecode 7.1.1", - "revm-context 12.1.0", - "revm-context-interface 13.1.0", - "revm-database 9.0.6", - "revm-database-interface 8.0.5", - "revm-handler 14.1.0", - "revm-inspector 14.1.0", - "revm-interpreter 31.1.0", - "revm-precompile 31.0.0", - "revm-primitives 21.0.2", - "revm-state 8.1.1", -] - -[[package]] -name = "revm-bytecode" -version = "6.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66c52031b73cae95d84cd1b07725808b5fd1500da3e5e24574a3b2dc13d9f16d" -dependencies = [ - "bitvec", - "phf 0.11.3", - "revm-primitives 20.2.1", - "serde", + "revm-bytecode", + "revm-context", + "revm-context-interface", + "revm-database", + "revm-database-interface", + "revm-handler", + "revm-inspector", + "revm-interpreter", + "revm-precompile", + "revm-primitives", + "revm-state", ] [[package]] @@ -6137,25 +6133,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2c6b5e6e8dd1e28a4a60e5f46615d4ef0809111c9e63208e55b5c7058200fb0" dependencies = [ "bitvec", - "phf 0.13.1", - "revm-primitives 21.0.2", - "serde", -] - -[[package]] -name = "revm-context" -version = "9.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a20c98e7008591a6f012550c2a00aa36cba8c14cc88eb88dec32eb9102554b4" -dependencies = [ - "bitvec", - "cfg-if", - "derive-where", - "revm-bytecode 6.2.2", - "revm-context-interface 10.2.0", - "revm-database-interface 7.0.5", - "revm-primitives 20.2.1", - "revm-state 7.0.5", + "phf", + "revm-primitives", "serde", ] @@ -6168,27 +6147,11 @@ dependencies = [ "bitvec", "cfg-if", "derive-where", - "revm-bytecode 7.1.1", - "revm-context-interface 13.1.0", - "revm-database-interface 8.0.5", - "revm-primitives 21.0.2", - "revm-state 8.1.1", - "serde", -] - -[[package]] -name = "revm-context-interface" -version = "10.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b50d241ed1ce647b94caf174fcd0239b7651318b2c4c06b825b59b973dfb8495" -dependencies = [ - "alloy-eip2930", - "alloy-eip7702", - "auto_impl", - "either", - "revm-database-interface 7.0.5", - "revm-primitives 20.2.1", - "revm-state 7.0.5", + "revm-bytecode", + "revm-context-interface", + "revm-database-interface", + "revm-primitives", + "revm-state", "serde", ] @@ -6202,23 +6165,9 @@ dependencies = [ "alloy-eip7702", "auto_impl", "either", - "revm-database-interface 8.0.5", - "revm-primitives 21.0.2", - "revm-state 8.1.1", - "serde", -] - -[[package]] -name = "revm-database" -version = "7.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39a276ed142b4718dcf64bc9624f474373ed82ef20611025045c3fb23edbef9c" -dependencies = [ - "alloy-eips", - "revm-bytecode 6.2.2", - "revm-database-interface 7.0.5", - "revm-primitives 20.2.1", - "revm-state 7.0.5", + "revm-database-interface", + "revm-primitives", + "revm-state", "serde", ] @@ -6229,23 +6178,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "980d8d6bba78c5dd35b83abbb6585b0b902eb25ea4448ed7bfba6283b0337191" dependencies = [ "alloy-eips", - "revm-bytecode 7.1.1", - "revm-database-interface 8.0.5", - "revm-primitives 21.0.2", - "revm-state 8.1.1", - "serde", -] - -[[package]] -name = "revm-database-interface" -version = "7.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c523c77e74eeedbac5d6f7c092e3851dbe9c7fec6f418b85992bd79229db361" -dependencies = [ - "auto_impl", - "either", - "revm-primitives 20.2.1", - "revm-state 7.0.5", + "revm-bytecode", + "revm-database-interface", + "revm-primitives", + "revm-state", "serde", ] @@ -6257,27 +6193,8 @@ checksum = "8cce03e3780287b07abe58faf4a7f5d8be7e81321f93ccf3343c8f7755602bae" dependencies = [ "auto_impl", "either", - "revm-primitives 21.0.2", - "revm-state 8.1.1", - "serde", -] - -[[package]] -name = "revm-handler" -version = "10.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "550331ea85c1d257686e672081576172fe3d5a10526248b663bbf54f1bef226a" -dependencies = [ - "auto_impl", - "derive-where", - "revm-bytecode 6.2.2", - "revm-context 9.1.0", - "revm-context-interface 10.2.0", - "revm-database-interface 7.0.5", - "revm-interpreter 25.0.3", - "revm-precompile 27.0.0", - "revm-primitives 20.2.1", - "revm-state 7.0.5", + "revm-primitives", + "revm-state", "serde", ] @@ -6289,31 +6206,14 @@ checksum = "d44f8f6dbeec3fecf9fe55f78ef0a758bdd92ea46cd4f1ca6e2a946b32c367f3" dependencies = [ "auto_impl", "derive-where", - "revm-bytecode 7.1.1", - "revm-context 12.1.0", - "revm-context-interface 13.1.0", - "revm-database-interface 8.0.5", - "revm-interpreter 31.1.0", - "revm-precompile 31.0.0", - "revm-primitives 21.0.2", - "revm-state 8.1.1", - "serde", -] - -[[package]] -name = "revm-inspector" -version = "10.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c0a6e9ccc2ae006f5bed8bd80cd6f8d3832cd55c5e861b9402fdd556098512f" -dependencies = [ - "auto_impl", - "either", - "revm-context 9.1.0", - "revm-database-interface 7.0.5", - "revm-handler 10.0.1", - "revm-interpreter 25.0.3", - "revm-primitives 20.2.1", - "revm-state 7.0.5", + "revm-bytecode", + "revm-context", + "revm-context-interface", + "revm-database-interface", + "revm-interpreter", + "revm-precompile", + "revm-primitives", + "revm-state", "serde", ] @@ -6325,62 +6225,29 @@ checksum = "5617e49216ce1ca6c8826bcead0386bc84f49359ef67cde6d189961735659f93" dependencies = [ "auto_impl", "either", - "revm-context 12.1.0", - "revm-database-interface 8.0.5", - "revm-handler 14.1.0", - "revm-interpreter 31.1.0", - "revm-primitives 21.0.2", - "revm-state 8.1.1", + "revm-context", + "revm-database-interface", + "revm-handler", + "revm-interpreter", + "revm-primitives", + "revm-state", "serde", "serde_json", ] -[[package]] -name = "revm-interpreter" -version = "25.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06575dc51b1d8f5091daa12a435733a90b4a132dca7ccee0666c7db3851bc30c" -dependencies = [ - "revm-bytecode 6.2.2", - "revm-context-interface 10.2.0", - "revm-primitives 20.2.1", - "serde", -] - [[package]] name = "revm-interpreter" version = "31.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26ec36405f7477b9dccdc6caa3be19adf5662a7a0dffa6270cdb13a090c077e5" dependencies = [ - "revm-bytecode 7.1.1", - "revm-context-interface 13.1.0", - "revm-primitives 21.0.2", - "revm-state 8.1.1", + "revm-bytecode", + "revm-context-interface", + "revm-primitives", + "revm-state", "serde", ] -[[package]] -name = "revm-precompile" -version = "27.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25b57d4bd9e6b5fe469da5452a8a137bc2d030a3cd47c46908efc615bbc699da" -dependencies = [ - "ark-bls12-381", - "ark-bn254", - "ark-ec", - "ark-ff 0.5.0", - "ark-serialize 0.5.0", - "arrayref", - "aurora-engine-modexp", - "cfg-if", - "k256 0.13.4 (registry+https://github.com/rust-lang/crates.io-index)", - "p256 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)", - "revm-primitives 20.2.1", - "ripemd", - "sha2", -] - [[package]] name = "revm-precompile" version = "31.0.0" @@ -6399,7 +6266,7 @@ dependencies = [ "cfg-if", "k256 0.13.4 (registry+https://github.com/rust-lang/crates.io-index)", "p256 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)", - "revm-primitives 21.0.2", + "revm-primitives", "ripemd", "rug", "secp256k1 0.31.1", @@ -6407,18 +6274,6 @@ dependencies = [ "substrate-bn", ] -[[package]] -name = "revm-primitives" -version = "20.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aa29d9da06fe03b249b6419b33968ecdf92ad6428e2f012dc57bcd619b5d94e" -dependencies = [ - "alloy-primitives", - "num_enum 0.7.4", - "once_cell", - "serde", -] - [[package]] name = "revm-primitives" version = "21.0.2" @@ -6431,18 +6286,6 @@ dependencies = [ "serde", ] -[[package]] -name = "revm-state" -version = "7.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f64fbacb86008394aaebd3454f9643b7d5a782bd251135e17c5b33da592d84d" -dependencies = [ - "bitflags 2.9.4", - "revm-bytecode 6.2.2", - "revm-primitives 20.2.1", - "serde", -] - [[package]] name = "revm-state" version = "8.1.1" @@ -6450,8 +6293,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7d8be953b7e374dbdea0773cf360debed8df394ea8d82a8b240a6b5da37592fc" dependencies = [ "bitflags 2.9.4", - "revm-bytecode 7.1.1", - "revm-primitives 21.0.2", + "revm-bytecode", + "revm-primitives", "serde", ] @@ -6673,7 +6516,7 @@ dependencies = [ [[package]] name = "riscv_common" version = "0.1.0" -source = "git+https://github.com/matter-labs/zksync-airbender?tag=v0.5.1#0a0b78c1f14bd4cf8c3719b7c5c1f074c343690b" +source = "git+https://github.com/matter-labs/zksync-airbender?tag=v0.5.2#b93c285d292891f3c27a3cf0110be09cde30ac4f" [[package]] name = "rkyv" @@ -7233,9 +7076,9 @@ dependencies = [ [[package]] name = "sp1-lib" -version = "5.2.3" +version = "5.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb1a9935d58cb1dcd757a1b10d727090f5b718f1f03b512d48f0c1952e6ead00" +checksum = "b73b8ff343f2405d5935440e56b7aba5cee6d87303f0051974cbd6f5de502f57" dependencies = [ "bincode 1.3.3", "serde", @@ -7244,9 +7087,9 @@ dependencies = [ [[package]] name = "sp1-primitives" -version = "5.2.3" +version = "5.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7d2a6187e394c30097ea7a975a4832f172918690dc89a979f0fad67422d3a8b" +checksum = "7e69a03098f827102c54c31a5e57280eb45b2c085de433b3f702e4f9e3ec1641" dependencies = [ "bincode 1.3.3", "blake3", @@ -7264,9 +7107,9 @@ dependencies = [ [[package]] name = "sp1-zkvm" -version = "5.2.3" +version = "5.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e767ed85f89b1c8d84188c2cc035833079529bb0ddd8f7bd252de91ce562acc7" +checksum = "d6247de4d980d1f3311fa877cc5d2d3b7e111258878c8196a8bb9728aec98c8c" dependencies = [ "cfg-if", "getrandom 0.2.16", @@ -7747,6 +7590,17 @@ dependencies = [ "tracing-subscriber 0.3.20", ] +[[package]] +name = "tracing-log" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f751112709b4e791d8ce53e32c4ed2d353565a795ce84da2285393f41557bdf2" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + [[package]] name = "tracing-log" version = "0.2.0" @@ -7758,13 +7612,36 @@ dependencies = [ "tracing-core", ] +[[package]] +name = "tracing-serde" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1" +dependencies = [ + "serde", + "tracing-core", +] + [[package]] name = "tracing-subscriber" version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0e0d2eaa99c3c2e41547cfa109e910a68ea03823cccad4a0525dcbc9b01e8c71" dependencies = [ + "ansi_term", + "chrono", + "lazy_static", + "matchers 0.0.1", + "regex", + "serde", + "serde_json", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", "tracing-core", + "tracing-log 0.1.4", + "tracing-serde", ] [[package]] @@ -7773,16 +7650,16 @@ version = "0.3.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5" dependencies = [ - "matchers", + "matchers 0.2.0", "nu-ansi-term", "once_cell", - "regex-automata", + "regex-automata 0.4.10", "sharded-slab", "smallvec", "thread_local", "tracing", "tracing-core", - "tracing-log", + "tracing-log 0.2.0", ] [[package]] @@ -8485,8 +8362,8 @@ dependencies = [ [[package]] name = "ziskos" -version = "0.14.0" -source = "git+https://github.com/0xPolygonHermez/zisk.git?tag=v0.14.0#2f791ffd070d024ba350f054c349c8d6bd98d629" +version = "0.15.0" +source = "git+https://github.com/0xPolygonHermez/zisk.git?tag=v0.15.0#b3ca745b80423c8123dc24f19039865a5bc8b074" dependencies = [ "bincode 2.0.1", "cfg-if", diff --git a/ere-guests/Cargo.toml b/ere-guests/Cargo.toml index ad9ba633..b44b68e5 100644 --- a/ere-guests/Cargo.toml +++ b/ere-guests/Cargo.toml @@ -9,6 +9,16 @@ members = [ "stateless-validator/reth/sp1", "stateless-validator/reth/zisk", + # Reth stateless executor (execution-only, no validation) + "stateless-executor", + "stateless-executor/sp1", + "stateless-executor/risc0", + "stateless-executor/openvm", + "stateless-executor/pico", + "stateless-executor/zisk", + "stateless-executor/airbender", + + # Ethrex stateless validator is not part of the workspace "stateless-validator/ethrex/guest", @@ -127,32 +137,38 @@ zero_sized_map_values = "warn" # local dependencies guest-libs = { path = "libs", default-features = false } reth-guest = { path = "stateless-validator/reth/guest", default-features = false } +reth-stateless-executor = { path = "stateless-executor", default-features = false } ethrex-guest = { path = "stateless-validator/ethrex/guest", default-features = false } block-encoding-length-guest = { path = "block-encoding-length/guest", default-features = false } # ere -ere-io = { git = "https://github.com/eth-applied-research-group/ere", rev = "d15c6b495d0bc42bf160ecfbb11fa7600047c821", default-features = false } -ere-platform-trait = { git = "https://github.com/eth-applied-research-group/ere", rev = "d15c6b495d0bc42bf160ecfbb11fa7600047c821" } -ere-platform-airbender = { git = "https://github.com/eth-applied-research-group/ere", rev = "d15c6b495d0bc42bf160ecfbb11fa7600047c821", default-features = false } -ere-platform-openvm = { git = "https://github.com/eth-applied-research-group/ere", rev = "d15c6b495d0bc42bf160ecfbb11fa7600047c821", default-features = false } -ere-platform-pico = { git = "https://github.com/eth-applied-research-group/ere", rev = "d15c6b495d0bc42bf160ecfbb11fa7600047c821", default-features = false } -ere-platform-risc0 = { git = "https://github.com/eth-applied-research-group/ere", rev = "d15c6b495d0bc42bf160ecfbb11fa7600047c821", default-features = false } -ere-platform-sp1 = { git = "https://github.com/eth-applied-research-group/ere", rev = "d15c6b495d0bc42bf160ecfbb11fa7600047c821", default-features = false } -ere-platform-zisk = { git = "https://github.com/eth-applied-research-group/ere", rev = "d15c6b495d0bc42bf160ecfbb11fa7600047c821", default-features = false } +ere-io = { git = "https://github.com/NethermindEth/ere", rev = "3edcc4ceb828ab8bb0840ffd9e09b4523c8c093f", default-features = false } +ere-platform-trait = { git = "https://github.com/NethermindEth/ere", rev = "3edcc4ceb828ab8bb0840ffd9e09b4523c8c093f" } +ere-platform-airbender = { git = "https://github.com/NethermindEth/ere", rev = "3edcc4ceb828ab8bb0840ffd9e09b4523c8c093f", default-features = false } +ere-platform-openvm = { git = "https://github.com/NethermindEth/ere", rev = "3edcc4ceb828ab8bb0840ffd9e09b4523c8c093f", default-features = false } +ere-platform-pico = { git = "https://github.com/NethermindEth/ere", rev = "3edcc4ceb828ab8bb0840ffd9e09b4523c8c093f", default-features = false } +ere-platform-risc0 = { git = "https://github.com/NethermindEth/ere", rev = "3edcc4ceb828ab8bb0840ffd9e09b4523c8c093f", default-features = false } +ere-platform-sp1 = { git = "https://github.com/NethermindEth/ere", rev = "3edcc4ceb828ab8bb0840ffd9e09b4523c8c093f", default-features = false } +ere-platform-zisk = { git = "https://github.com/NethermindEth/ere", rev = "3edcc4ceb828ab8bb0840ffd9e09b4523c8c093f", default-features = false } # openvm openvm = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.2" } -openvm-ecc-guest = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.2", default-features = false } -openvm-sha2 = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.2", default-features = false } -openvm-algebra-guest = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.2", default-features = false } -openvm-keccak256 = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.2", default-features = false } -openvm-revm-crypto = { git = "https://github.com/axiom-crypto/openvm-reth-benchmark.git", branch = "openvm-v1.4.1-reth-1.8.3", default-features = false } +openvm-algebra-guest = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.2" } +openvm-ecc-guest = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.2" } +openvm-k256 = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.2", package = "k256" } +openvm-keccak256 = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.2" } +openvm-p256 = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.2", package = "p256" } +openvm-pairing = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.2" } +openvm-sha2 = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.2" } +openvm-kzg = { git = "https://github.com/axiom-crypto/openvm-kzg.git", rev = "530a6ed413def5296b7e4967650ba4fc8fd92ea1", default-features = false } reth-ethereum-primitives = { git = "https://github.com/paradigmxyz/reth", rev = "cfde951976bfa9100a6d9f806e06fb539ae25241", default-features = false } reth-primitives-traits = { git = "https://github.com/paradigmxyz/reth", rev = "cfde951976bfa9100a6d9f806e06fb539ae25241", default-features = false } reth-stateless = { git = "https://github.com/paradigmxyz/reth", rev = "cfde951976bfa9100a6d9f806e06fb539ae25241", default-features = false } reth-chainspec = { git = "https://github.com/paradigmxyz/reth", rev = "cfde951976bfa9100a6d9f806e06fb539ae25241", default-features = false } +reth-evm = { git = "https://github.com/paradigmxyz/reth", rev = "cfde951976bfa9100a6d9f806e06fb539ae25241", default-features = false } reth-evm-ethereum = { git = "https://github.com/paradigmxyz/reth", rev = "cfde951976bfa9100a6d9f806e06fb539ae25241", default-features = false } +reth-revm = { git = "https://github.com/paradigmxyz/reth", rev = "cfde951976bfa9100a6d9f806e06fb539ae25241", default-features = false } reth-errors = { git = "https://github.com/paradigmxyz/reth", rev = "cfde951976bfa9100a6d9f806e06fb539ae25241", default-features = false } reth-trie-common = { git = "https://github.com/paradigmxyz/reth", rev = "cfde951976bfa9100a6d9f806e06fb539ae25241", default-features = false } @@ -168,10 +184,11 @@ alloy-trie = { version = "0.9.1", default-features = false } # revm revm = { version = "33.1.0", default-features = false } revm-bytecode = { version = "7.1.1", default-features = false } +revm-primitives = { version = "21.0.2", default-features = false } # ethrex -ethrex-guest-program = { git = "https://github.com/lambdaclass/ethrex.git", rev = "c68e76d6b569c60a667a1240a91e637bf2ea0d0b", package = "guest_program" } -ethrex-common = { git = "https://github.com/lambdaclass/ethrex.git", rev = "c68e76d6b569c60a667a1240a91e637bf2ea0d0b", default-features = false } +ethrex-guest-program = { git = "https://github.com/lambdaclass/ethrex.git", rev = "e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1", default-features = false, package = "guest_program" } +ethrex-common = { git = "https://github.com/lambdaclass/ethrex.git", rev = "e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1", default-features = false } # misc bincode = "1.3" @@ -205,13 +222,21 @@ codegen-units = 1 opt-level = "s" [patch."https://github.com/openvm-org/openvm.git"] -openvm-ecc-guest = { git = "https://github.com/openvm-org//openvm.git", tag = "v1.4.2" } -openvm-sha2 = { git = "https://github.com/openvm-org//openvm.git", tag = "v1.4.2" } -openvm-pairing = { git = "https://github.com/openvm-org//openvm.git", tag = "v1.4.2" } -openvm-k256 = { git = "https://github.com/openvm-org//openvm.git", tag = "v1.4.2", package = "k256" } -openvm-p256 = { git = "https://github.com/openvm-org//openvm.git", tag = "v1.4.2", package = "p256" } openvm = { git = "https://github.com/openvm-org//openvm.git", tag = "v1.4.2" } +openvm-algebra-complex-macros = { git = "https://github.com/openvm-org//openvm.git", tag = "v1.4.2" } openvm-algebra-guest = { git = "https://github.com/openvm-org//openvm.git", tag = "v1.4.2" } +openvm-algebra-moduli-macros = { git = "https://github.com/openvm-org//openvm.git", tag = "v1.4.2" } +openvm-custom-insn = { git = "https://github.com/openvm-org//openvm.git", tag = "v1.4.2" } +openvm-ecc-guest = { git = "https://github.com/openvm-org//openvm.git", tag = "v1.4.2" } +openvm-ecc-sw-macros = { git = "https://github.com/openvm-org//openvm.git", tag = "v1.4.2" } +openvm-k256 = { git = "https://github.com/openvm-org//openvm.git", tag = "v1.4.2", package = "k256" } openvm-keccak256 = { git = "https://github.com/openvm-org//openvm.git", tag = "v1.4.2" } - -[patch.crates-io] +openvm-keccak256-guest = { git = "https://github.com/openvm-org//openvm.git", tag = "v1.4.2" } +openvm-macros-common = { git = "https://github.com/openvm-org//openvm.git", tag = "v1.4.2" } +openvm-p256 = { git = "https://github.com/openvm-org//openvm.git", tag = "v1.4.2", package = "p256" } +openvm-pairing = { git = "https://github.com/openvm-org//openvm.git", tag = "v1.4.2" } +openvm-pairing-guest = { git = "https://github.com/openvm-org//openvm.git", tag = "v1.4.2" } +openvm-platform = { git = "https://github.com/openvm-org//openvm.git", tag = "v1.4.2" } +openvm-rv32im-guest = { git = "https://github.com/openvm-org//openvm.git", tag = "v1.4.2" } +openvm-sha2 = { git = "https://github.com/openvm-org//openvm.git", tag = "v1.4.2" } +openvm-sha256-guest = { git = "https://github.com/openvm-org//openvm.git", tag = "v1.4.2" } diff --git a/ere-guests/stateless-executor/Cargo.toml b/ere-guests/stateless-executor/Cargo.toml new file mode 100644 index 00000000..9f271a34 --- /dev/null +++ b/ere-guests/stateless-executor/Cargo.toml @@ -0,0 +1,44 @@ +[package] +name = "reth-stateless-executor" +version.workspace = true +edition.workspace = true +rust-version.workspace = true +license.workspace = true +description = "Pure EVM execution without validation checks for benchmarking" + +[dependencies] +# local dependencies +guest-libs.workspace = true +sparsestate.workspace = true + +# ere +ere-io = { workspace = true, features = ["bincode"] } +ere-platform-trait.workspace = true + +# reth +reth-primitives-traits.workspace = true +reth-ethereum-primitives = { workspace = true, features = [ + "serde", + "serde-bincode-compat", +] } +reth-chainspec.workspace = true +reth-stateless.workspace = true +reth-evm.workspace = true +reth-evm-ethereum.workspace = true +reth-revm.workspace = true +reth-errors.workspace = true + +# alloy +alloy-primitives.workspace = true +alloy-consensus.workspace = true +alloy-rlp.workspace = true + +# external +k256.workspace = true +serde.workspace = true +thiserror.workspace = true + +[features] +default = ["std", "reth-stateless/default"] +std = ["guest-libs/std"] + diff --git a/ere-guests/stateless-executor/airbender/Cargo.toml b/ere-guests/stateless-executor/airbender/Cargo.toml new file mode 100644 index 00000000..1d1c5a79 --- /dev/null +++ b/ere-guests/stateless-executor/airbender/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "reth-airbender-stateless-executor" +version.workspace = true +edition.workspace = true +rust-version.workspace = true +license.workspace = true + +[dependencies] +ere-platform-airbender = { workspace = true, features = ["custom_allocator"] } +reth-stateless-executor.workspace = true +guest-libs.workspace = true + +reth-stateless = { workspace = true, features = ["k256"] } +reth-ethereum-primitives = { workspace = true, features = [ + "serde", + "serde-bincode-compat", +] } +reth-primitives-traits = { workspace = true, features = [ + "serde", + "serde-bincode-compat", +] } + +revm = { workspace = true, default-features = false, features = ["bn"] } +alloy-primitives = { workspace = true, default-features = false, features = [ + "map-foldhash", + "serde", + "sha3-keccak", +] } +k256.workspace = true +sha2.workspace = true + diff --git a/ere-guests/stateless-executor/airbender/src/airbender_rt.rs b/ere-guests/stateless-executor/airbender/src/airbender_rt.rs new file mode 100644 index 00000000..dc682b6e --- /dev/null +++ b/ere-guests/stateless-executor/airbender/src/airbender_rt.rs @@ -0,0 +1,100 @@ +use core::{ + alloc::{GlobalAlloc, Layout}, + ptr::addr_of_mut, +}; + +core::arch::global_asm!(include_str!("./asm_reduced.S")); + +unsafe extern "C" { + // Boundaries of the heap + static mut _sheap: usize; + static mut _eheap: usize; + + // Boundaries of the .data section (and it's part in ROM) + static mut _sidata: usize; + static mut _sdata: usize; + static mut _edata: usize; + + // Boundaries of the .rodata section + static mut _sirodata: usize; + static mut _srodata: usize; + static mut _erodata: usize; +} + +unsafe fn load_to_ram(src: *const u8, dst_start: *mut u8, dst_end: *mut u8) { + let offset = dst_end.addr() - dst_start.addr(); + + unsafe { core::ptr::copy_nonoverlapping(src, dst_start, offset) }; +} + +#[unsafe(link_section = ".init.rust")] +#[unsafe(export_name = "_start_rust")] +unsafe extern "C" fn start_rust() -> ! { + unsafe { + load_to_ram( + addr_of_mut!(_sirodata) as *const u8, + addr_of_mut!(_srodata) as *mut u8, + addr_of_mut!(_erodata) as *mut u8, + ); + load_to_ram( + addr_of_mut!(_sidata) as *const u8, + addr_of_mut!(_sdata) as *mut u8, + addr_of_mut!(_edata) as *mut u8, + ); + }; + + crate::main(); + + unsafe { core::hint::unreachable_unchecked() } +} + +struct SimpleAlloc; + +unsafe impl GlobalAlloc for SimpleAlloc { + unsafe fn alloc(&self, layout: Layout) -> *mut u8 { + unsafe { sys_alloc_aligned(layout.size(), layout.align()) } + } + + unsafe fn dealloc(&self, _: *mut u8, _: Layout) {} +} + +#[global_allocator] +static HEAP: SimpleAlloc = SimpleAlloc; + +static mut HEAP_POS: usize = 0; + +#[unsafe(no_mangle)] +pub unsafe extern "C" fn sys_alloc_aligned(bytes: usize, align: usize) -> *mut u8 { + let mut heap_pos = unsafe { HEAP_POS }; + + if heap_pos == 0 { + heap_pos = addr_of_mut!(_sheap) as *const u8 as usize; + } + + let offset = heap_pos & (align - 1); + if offset != 0 { + heap_pos += align - offset; + } + + let ptr = heap_pos as *mut u8; + let (heap_pos, overflowed) = heap_pos.overflowing_add(bytes); + + let eheap = addr_of_mut!(_eheap) as *const u8 as usize; + if overflowed || heap_pos > eheap { + panic!("heap exhausted"); + } + + unsafe { HEAP_POS = heap_pos }; + ptr +} + +#[cfg(all(target_arch = "riscv32", target_feature = "a"))] +#[unsafe(no_mangle)] +fn _critical_section_1_0_acquire() -> u32 { + 0 +} + +#[cfg(all(target_arch = "riscv32", target_feature = "a"))] +#[unsafe(no_mangle)] +fn _critical_section_1_0_release(_: u32) {} + diff --git a/ere-guests/stateless-executor/airbender/src/asm_reduced.S b/ere-guests/stateless-executor/airbender/src/asm_reduced.S new file mode 100644 index 00000000..6a76482f --- /dev/null +++ b/ere-guests/stateless-executor/airbender/src/asm_reduced.S @@ -0,0 +1,160 @@ +/* Copied from https://github.com/matter-labs/zksync-airbender/blob/v0.5.0/examples/scripts/asm/asm_reduced.S */ + +/* + Entry point of all programs (_start). + + It initializes DWARF call frame information, the stack pointer, the + frame pointer (needed for closures to work in start_rust) and the global + pointer. Then it calls _start_rust. +*/ + +.section .init, "ax" +.global _start + +_start: + /* Jump to the absolute address defined by the linker script. */ + // for 32bit + # lui ra, %hi(_abs_start) + # jr %lo(_abs_start)(ra) + + la ra, _abs_start + jr ra + +_abs_start: + .cfi_startproc + .cfi_undefined ra + + .option push + .option norelax + la gp, __global_pointer$ + .option pop + + // Assume single core, and put SP to the very top address of the stack region + la sp, _sstack + + // Set frame pointer + add s0, sp, zero + + jal zero, _start_rust + + .cfi_endproc + +/* + Machine trap entry point (_machine_start_trap) +*/ +.section .trap, "ax" +.global machine_default_start_trap +.align 4 +machine_default_start_trap: + // We assume that exception stack is always saved to MSCRATCH + + // so we swap it with x31 + csrrw x31, mscratch, x31 + + // write to exception stack + # sw x31, -4(sp) + sw x30, -8(x31) + sw x29, -12(x31) + sw x28, -16(x31) + sw x27, -20(x31) + sw x26, -24(x31) + sw x25, -28(x31) + sw x24, -32(x31) + sw x23, -36(x31) + sw x22, -40(x31) + sw x21, -44(x31) + sw x20, -48(x31) + sw x19, -52(x31) + sw x18, -56(x31) + sw x17, -60(x31) + sw x16, -64(x31) + sw x15, -68(x31) + sw x14, -72(x31) + sw x13, -76(x31) + sw x12, -80(x31) + sw x11, -84(x31) + sw x10, -88(x31) + sw x9, -92(x31) + sw x8, -96(x31) + sw x7, -100(x31) + sw x6, -104(x31) + sw x5, -108(x31) + sw x4, -112(x31) + sw x3, -116(x31) + sw x2, -120(x31) + sw x1, -124(x31) + + // we will not restore it, so we are ok to avoid write + # sw x0, -128(x31) + + // move valid sp into a0, + mv a0, x31 + csrrw x31, mscratch, x0 + sw x31, -4(a0) + // restore sp + mv sp, a0 + // sp is valid now + + addi sp, sp, -128 + // pass pointer as first argument + add a0, sp, zero + + jal ra, _machine_start_trap_rust + + // set return address into mepc + csrw mepc, a0 + + // save original SP to mscratch for now + lw a0, 8(sp) // it's original sp that we saved in the stack + csrw mscratch, a0 // save it for now + + // restore everything we saved + + // it's illegal instruction, so we skip. Anyway can not overwrite x0 + # lw x0, 0(sp) + + lw x1, 4(sp) + # lw x2, 8(sp) // do not overwrite SP yet + lw x3, 12(sp) + lw x4, 16(sp) + lw x5, 20(sp) + lw x6, 24(sp) + lw x7, 28(sp) + lw x8, 32(sp) + lw x9, 36(sp) + lw x10, 40(sp) + lw x11, 44(sp) + lw x12, 48(sp) + lw x13, 52(sp) + lw x14, 56(sp) + lw x15, 60(sp) + lw x16, 64(sp) + lw x17, 68(sp) + lw x18, 72(sp) + lw x19, 76(sp) + lw x20, 80(sp) + lw x21, 84(sp) + lw x22, 88(sp) + lw x23, 92(sp) + lw x24, 96(sp) + lw x25, 100(sp) + lw x26, 104(sp) + lw x27, 108(sp) + lw x28, 112(sp) + lw x29, 116(sp) + lw x30, 120(sp) + lw x31, 124(sp) + + addi sp, sp, 128 + // we popped everything from the stack + // now save current exception SP to mscratch, + // and put original SP back + csrrw sp, mscratch, sp + + mret + +/* Make sure there is an abort when linking */ +.section .text.abort +.globl abort +abort: + j abort diff --git a/ere-guests/stateless-executor/airbender/src/main.rs b/ere-guests/stateless-executor/airbender/src/main.rs new file mode 100644 index 00000000..1afeae6d --- /dev/null +++ b/ere-guests/stateless-executor/airbender/src/main.rs @@ -0,0 +1,19 @@ +//! Airbender guest program for stateless execution (no validation). + +#![no_std] +#![no_main] +#![no_builtins] +#![allow(incomplete_features)] +#![feature(allocator_api)] +#![feature(generic_const_exprs)] + +use ere_platform_airbender::AirbenderPlatform; +use reth_stateless_executor::guest::{Guest, RethStatelessExecutorGuest}; + +mod airbender_rt; + +/// Entry point. +pub fn main() { + RethStatelessExecutorGuest::run_output_sha256::(); +} + diff --git a/ere-guests/stateless-executor/openvm/Cargo.toml b/ere-guests/stateless-executor/openvm/Cargo.toml new file mode 100644 index 00000000..e479884c --- /dev/null +++ b/ere-guests/stateless-executor/openvm/Cargo.toml @@ -0,0 +1,43 @@ +[package] +name = "reth-openvm-stateless-executor" +version = "0.1.0" +edition = "2021" +rust-version = "1.86" +license = "MIT OR Apache-2.0" + +[dependencies] +ere-platform-openvm = { workspace = true, features = ["std"] } +openvm = { workspace = true, features = ["std"] } +openvm-algebra-guest.workspace = true +openvm-ecc-guest.workspace = true +openvm-k256 = { workspace = true } +openvm-keccak256 = { workspace = true } +openvm-kzg = { workspace = true, features = ["use-intrinsics"] } +openvm-p256 = { workspace = true } +openvm-pairing = { workspace = true, features = ["bn254", "bls12_381"] } +openvm-sha2 = { workspace = true } + +alloy-consensus = { workspace = true, features = ["crypto-backend"] } +alloy-primitives = { workspace = true, features = ["native-keccak", "map-foldhash"] } + +revm.workspace = true +revm-primitives = { workspace = true, features = ["hashbrown"] } + +guest-libs.workspace = true +reth-stateless-executor = { workspace = true, default-features = true } + +reth-stateless.workspace = true +reth-ethereum-primitives = { workspace = true, features = [ + "serde", + "serde-bincode-compat", +] } +reth-primitives-traits = { workspace = true, features = [ + "serde", + "serde-bincode-compat", +] } + + +sha2.workspace = true +k256.workspace = true +bincode.workspace = true + diff --git a/ere-guests/stateless-executor/openvm/openvm.toml b/ere-guests/stateless-executor/openvm/openvm.toml new file mode 100644 index 00000000..0840adcc --- /dev/null +++ b/ere-guests/stateless-executor/openvm/openvm.toml @@ -0,0 +1,171 @@ +openvm_version = "v1.4" +[app_fri_params.fri_params] +log_blowup = 1 +log_final_poly_len = 0 +num_queries = 100 +proof_of_work_bits = 16 + +[app_vm_config.system.config] +max_constraint_degree = 3 +continuation_enabled = true +num_public_values = 32 +profiling = false + +[app_vm_config.system.config.memory_config] +addr_space_height = 3 +pointer_max_bits = 29 +clk_max_bits = 29 +decomp = 17 +max_access_adapter_n = 32 +timestamp_max_bits = 29 + +[[app_vm_config.system.config.memory_config.addr_spaces]] +num_cells = 0 +min_block_size = 1 +layout = "Null" + +[[app_vm_config.system.config.memory_config.addr_spaces]] +num_cells = 128 +min_block_size = 4 +layout = "U8" + +[[app_vm_config.system.config.memory_config.addr_spaces]] +num_cells = 536870912 +min_block_size = 4 +layout = "U8" + +[[app_vm_config.system.config.memory_config.addr_spaces]] +num_cells = 32 +min_block_size = 4 +layout = "U8" + +[[app_vm_config.system.config.memory_config.addr_spaces]] +num_cells = 0 +min_block_size = 1 +layout = { Native = { size = 4 } } + +[[app_vm_config.system.config.memory_config.addr_spaces]] +num_cells = 0 +min_block_size = 1 +layout = { Native = { size = 4 } } + +[[app_vm_config.system.config.memory_config.addr_spaces]] +num_cells = 0 +min_block_size = 1 +layout = { Native = { size = 4 } } + +[[app_vm_config.system.config.memory_config.addr_spaces]] +num_cells = 0 +min_block_size = 1 +layout = { Native = { size = 4 } } + +[[app_vm_config.system.config.memory_config.addr_spaces]] +num_cells = 0 +min_block_size = 1 +layout = { Native = { size = 4 } } + +[app_vm_config.rv32i] + +[app_vm_config.io] + +[app_vm_config.keccak] + +[app_vm_config.sha256] + +[app_vm_config.rv32m] +range_tuple_checker_sizes = [256, 8192] + +[app_vm_config.bigint] +range_tuple_checker_sizes = [256, 8192] + +[app_vm_config.modular] +supported_moduli = [ + "21888242871839275222246405745257275088696311157297823662689037894645226208583", + "21888242871839275222246405745257275088548364400416034343698204186575808495617", + "115792089237316195423570985008687907853269984665640564039457584007908834671663", + "115792089237316195423570985008687907852837564279074904382605163141518161494337", + "115792089210356248762697446949407573530086143415290314195533631308867097853951", + "115792089210356248762697446949407573529996955224135760342422259061068512044369", + "4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559787", + "52435875175126190479447740508185965837690552500527637822603658699938581184513", +] + +[app_vm_config.fp2] +supported_moduli = [ + [ + "Bn254Fp2", + "21888242871839275222246405745257275088696311157297823662689037894645226208583", + ], + [ + "Bls12_381Fp2", + "4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559787", + ], +] + +[app_vm_config.pairing] +supported_curves = ["Bn254", "Bls12_381"] + +[[app_vm_config.ecc.supported_curves]] +struct_name = "Bn254G1Affine" +modulus = "21888242871839275222246405745257275088696311157297823662689037894645226208583" +scalar = "21888242871839275222246405745257275088548364400416034343698204186575808495617" +a = "0" +b = "3" + +[[app_vm_config.ecc.supported_curves]] +struct_name = "Secp256k1Point" +modulus = "115792089237316195423570985008687907853269984665640564039457584007908834671663" +scalar = "115792089237316195423570985008687907852837564279074904382605163141518161494337" +a = "0" +b = "7" + +[[app_vm_config.ecc.supported_curves]] +struct_name = "P256Point" +modulus = "115792089210356248762697446949407573530086143415290314195533631308867097853951" +scalar = "115792089210356248762697446949407573529996955224135760342422259061068512044369" +a = "115792089210356248762697446949407573530086143415290314195533631308867097853948" +b = "41058363725152142129326129780047268409114441015993725554835256314039467401291" + +[[app_vm_config.ecc.supported_curves]] +struct_name = "Bls12_381G1Affine" +modulus = "4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559787" +scalar = "52435875175126190479447740508185965837690552500527637822603658699938581184513" +a = "0" +b = "4" + +[leaf_fri_params.fri_params] +log_blowup = 1 +log_final_poly_len = 0 +num_queries = 100 +proof_of_work_bits = 16 + +[compiler_options] +word_size = 8 +enable_cycle_tracker = false + +[agg_config] +max_num_user_public_values = 32 +profiling = false +root_max_constraint_degree = 9 + +[agg_config.leaf_fri_params] +log_blowup = 1 +log_final_poly_len = 0 +num_queries = 100 +proof_of_work_bits = 16 + +[agg_config.internal_fri_params] +log_blowup = 2 +log_final_poly_len = 0 +num_queries = 44 +proof_of_work_bits = 16 + +[agg_config.root_fri_params] +log_blowup = 3 +log_final_poly_len = 0 +num_queries = 30 +proof_of_work_bits = 16 + +[agg_config.compiler_options] +word_size = 8 +enable_cycle_tracker = false diff --git a/ere-guests/stateless-executor/openvm/openvm_init.rs b/ere-guests/stateless-executor/openvm/openvm_init.rs new file mode 100644 index 00000000..257afb31 --- /dev/null +++ b/ere-guests/stateless-executor/openvm/openvm_init.rs @@ -0,0 +1,4 @@ +// This file is automatically generated by cargo openvm. Do not rename or edit. +openvm_algebra_guest::moduli_macros::moduli_init! { "21888242871839275222246405745257275088696311157297823662689037894645226208583", "21888242871839275222246405745257275088548364400416034343698204186575808495617", "115792089237316195423570985008687907853269984665640564039457584007908834671663", "115792089237316195423570985008687907852837564279074904382605163141518161494337", "115792089210356248762697446949407573530086143415290314195533631308867097853951", "115792089210356248762697446949407573529996955224135760342422259061068512044369", "4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559787", "52435875175126190479447740508185965837690552500527637822603658699938581184513" } +openvm_algebra_guest::complex_macros::complex_init! { "Bn254Fp2" { mod_idx = 0 }, "Bls12_381Fp2" { mod_idx = 6 } } +openvm_ecc_guest::sw_macros::sw_init! { "Bn254G1Affine", "Secp256k1Point", "P256Point", "Bls12_381G1Affine" } diff --git a/ere-guests/stateless-executor/openvm/src/main.rs b/ere-guests/stateless-executor/openvm/src/main.rs new file mode 100644 index 00000000..874b44f2 --- /dev/null +++ b/ere-guests/stateless-executor/openvm/src/main.rs @@ -0,0 +1,16 @@ +//! OpenVM guest program for stateless execution (no validation). + +use ere_platform_openvm::OpenVMPlatform; +use reth_stateless_executor::guest::{Guest, RethStatelessExecutorGuest}; + +mod openvm_revm_crypto; + +openvm::init!(); + +/// Entry point. +pub fn main() { + openvm_revm_crypto::install_openvm_crypto() + .expect("failed to install OpenVM revm crypto provider"); + RethStatelessExecutorGuest::run_output_sha256::(); +} + diff --git a/ere-guests/stateless-executor/openvm/src/openvm_revm_crypto.rs b/ere-guests/stateless-executor/openvm/src/openvm_revm_crypto.rs new file mode 100644 index 00000000..8af208f4 --- /dev/null +++ b/ere-guests/stateless-executor/openvm/src/openvm_revm_crypto.rs @@ -0,0 +1,284 @@ +// Copied from https://github.com/axiom-crypto/openvm-reth-benchmark/blob/openvm-v1.4.1-reth-1.8.3/crates/revm-crypto/src/lib.rs + +//! OpenVM Crypto Implementation for REVM +//! +//! This module provides OpenVM-optimized implementations of cryptographic operations +//! for both transaction validation (via Alloy crypto provider) and precompile execution. + +use alloy_consensus::crypto::{ + backend::{install_default_provider, CryptoProvider}, + RecoveryError, +}; +use alloy_primitives::Address; +use openvm_ecc_guest::{ + algebra::IntMod, + weierstrass::{IntrinsicCurve, WeierstrassPoint}, + AffinePoint, +}; +use openvm_k256::ecdsa::{RecoveryId, Signature, VerifyingKey}; +use openvm_keccak256::keccak256; +use openvm_kzg::{Bytes32, Bytes48, KzgProof}; +#[allow(unused_imports, clippy::single_component_path_imports)] +use openvm_p256; // ensure this is linked in for the standard OpenVM config +use openvm_pairing::{ + bn254::{Bn254, Fp, Fp2, G1Affine, G2Affine, Scalar}, + PairingCheck, +}; +use revm::{ + install_crypto, + precompile::{Crypto, PrecompileError}, +}; +use std::{sync::Arc, vec::Vec}; + +// BN254 constants +const FQ_LEN: usize = 32; +const G1_LEN: usize = 64; +const G2_LEN: usize = 128; +/// SCALAR_LEN specifies the number of bytes needed to represent an Fr element. +/// This is an element in the scalar field of BN254. +const SCALAR_LEN: usize = 32; + +/// OpenVM k256 backend for Alloy crypto operations (transaction validation) +#[derive(Debug, Default)] +struct OpenVmK256Provider; + +impl CryptoProvider for OpenVmK256Provider { + fn recover_signer_unchecked( + &self, + sig: &[u8; 65], + msg: &[u8; 32], + ) -> Result { + // Extract components: sig[0..32]=r, sig[32..64]=s, sig[64]=recovery_id + // Parse signature using OpenVM k256 + let mut signature = Signature::from_slice(&sig[..64]).map_err(|_| RecoveryError::new())?; + + // Normalize signature if needed + let mut recid = sig[64]; + if let Some(sig_normalized) = signature.normalize_s() { + signature = sig_normalized; + recid ^= 1; + } + + // Create recovery ID + let recovery_id = RecoveryId::from_byte(recid).ok_or(RecoveryError::new())?; + + // Recover public key using OpenVM + let recovered_key = + VerifyingKey::recover_from_prehash_noverify(msg, &signature.to_bytes(), recovery_id) + .map_err(|_| RecoveryError::new())?; + + // Get public key coordinates + let public_key = recovered_key.as_affine(); + let mut encoded_pubkey = [0u8; 64]; + encoded_pubkey[..32].copy_from_slice(&WeierstrassPoint::x(public_key).to_be_bytes()); + encoded_pubkey[32..].copy_from_slice(&WeierstrassPoint::y(public_key).to_be_bytes()); + + // Hash to get Ethereum address + let pubkey_hash = keccak256(&encoded_pubkey); + let address_bytes = &pubkey_hash[12..32]; // Last 20 bytes + + Ok(Address::from_slice(address_bytes)) + } +} + +/// OpenVM custom crypto implementation for faster precompiles +#[derive(Debug, Default)] +struct OpenVmCrypto; + +impl Crypto for OpenVmCrypto { + /// Custom SHA-256 implementation with openvm optimization + fn sha256(&self, input: &[u8]) -> [u8; 32] { + openvm_sha2::sha256(input) + } + + /// Custom BN254 G1 addition with openvm optimization + fn bn254_g1_add(&self, p1_bytes: &[u8], p2_bytes: &[u8]) -> Result<[u8; 64], PrecompileError> { + let p1 = read_g1_point(p1_bytes)?; + let p2 = read_g1_point(p2_bytes)?; + let result = p1 + p2; + Ok(encode_g1_point(result)) + } + + /// Custom BN254 G1 scalar multiplication with openvm optimization + fn bn254_g1_mul( + &self, + point_bytes: &[u8], + scalar_bytes: &[u8], + ) -> Result<[u8; 64], PrecompileError> { + let p = read_g1_point(point_bytes)?; + let s = read_scalar(scalar_bytes); + let result = Bn254::msm(&[s], &[p]); + Ok(encode_g1_point(result)) + } + + /// Custom BN254 pairing check with openvm optimization + fn bn254_pairing_check(&self, pairs: &[(&[u8], &[u8])]) -> Result { + if pairs.is_empty() { + return Ok(true); + } + let mut g1_points = Vec::with_capacity(pairs.len()); + let mut g2_points = Vec::with_capacity(pairs.len()); + + for (g1_bytes, g2_bytes) in pairs { + let g1 = read_g1_point(g1_bytes)?; + let g2 = read_g2_point(g2_bytes)?; + + let (g1_x, g1_y) = g1.into_coords(); + let g1 = AffinePoint::new(g1_x, g1_y); + + let (g2_x, g2_y) = g2.into_coords(); + let g2 = AffinePoint::new(g2_x, g2_y); + + g1_points.push(g1); + g2_points.push(g2); + } + + let pairing_result = Bn254::pairing_check(&g1_points, &g2_points).is_ok(); + Ok(pairing_result) + } + + /// Custom secp256k1 ECDSA signature recovery with openvm optimization + fn secp256k1_ecrecover( + &self, + sig_bytes: &[u8; 64], + mut recid: u8, + msg_hash: &[u8; 32], + ) -> Result<[u8; 32], PrecompileError> { + let mut sig = Signature::from_slice(sig_bytes) + .map_err(|_| PrecompileError::other("Invalid signature format"))?; + + if let Some(sig_normalized) = sig.normalize_s() { + sig = sig_normalized; + recid ^= 1; + } + + let recovery_id = RecoveryId::from_byte(recid) + .ok_or_else(|| PrecompileError::other("Invalid recovery ID"))?; + + let recovered_key = + VerifyingKey::recover_from_prehash_noverify(msg_hash, &sig.to_bytes(), recovery_id) + .map_err(|_| PrecompileError::other("Key recovery failed"))?; + + let public_key = recovered_key.as_affine(); + let mut encoded_pubkey = [0u8; 64]; + encoded_pubkey[..32].copy_from_slice(&WeierstrassPoint::x(public_key).to_be_bytes()); + encoded_pubkey[32..].copy_from_slice(&WeierstrassPoint::y(public_key).to_be_bytes()); + + let pubkey_hash = keccak256(&encoded_pubkey); + let mut address = [0u8; 32]; + address[12..].copy_from_slice(&pubkey_hash[12..]); + + Ok(address) + } + + /// Custom KZG point evaluation with configurable backends + fn verify_kzg_proof( + &self, + z: &[u8; 32], + y: &[u8; 32], + commitment: &[u8; 48], + proof: &[u8; 48], + ) -> Result<(), PrecompileError> { + let env = openvm_kzg::EnvKzgSettings::default(); + let kzg_settings = env.get(); + + let commitment_bytes = Bytes48::from_slice(commitment) + .map_err(|_| PrecompileError::other("invalid commitment bytes"))?; + let z_bytes = + Bytes32::from_slice(z).map_err(|_| PrecompileError::other("invalid z bytes"))?; + let y_bytes = + Bytes32::from_slice(y).map_err(|_| PrecompileError::other("invalid y bytes"))?; + let proof_bytes = Bytes48::from_slice(proof) + .map_err(|_| PrecompileError::other("invalid proof bytes"))?; + + KzgProof::verify_kzg_proof( + &commitment_bytes, + &z_bytes, + &y_bytes, + &proof_bytes, + kzg_settings, + ) + .map_err(|_| PrecompileError::other("openvm kzg proof verification failed"))?; + Ok(()) + } +} + +/// Install OpenVM crypto implementations globally +pub fn install_openvm_crypto() -> Result> { + // Install OpenVM k256 provider for Alloy (transaction validation) + install_default_provider(Arc::new(OpenVmK256Provider))?; + + // Install OpenVM crypto for REVM precompiles + let installed = install_crypto(OpenVmCrypto); + + Ok(installed) +} + +// Helper functions for BN254 operations + +#[inline] +fn read_fq(input: &[u8]) -> Result { + if input.len() < FQ_LEN { + Err(PrecompileError::Bn254FieldPointNotAMember) + } else { + Fp::from_be_bytes(&input[..FQ_LEN]).ok_or(PrecompileError::Bn254FieldPointNotAMember) + } +} + +#[inline] +fn read_fq2(input: &[u8]) -> Result { + let y = read_fq(&input[..FQ_LEN])?; + let x = read_fq(&input[FQ_LEN..FQ_LEN * 2])?; + Ok(Fp2::new(x, y)) +} + +#[inline] +fn read_g1_point(input: &[u8]) -> Result { + if input.len() != G1_LEN { + return Err(PrecompileError::Bn254PairLength); + } + let px = read_fq(&input[0..FQ_LEN])?; + let py = read_fq(&input[FQ_LEN..G1_LEN])?; + G1Affine::from_xy(px, py).ok_or(PrecompileError::Bn254AffineGFailedToCreate) +} + +#[inline] +fn read_g2_point(input: &[u8]) -> Result { + if input.len() != G2_LEN { + return Err(PrecompileError::Bn254PairLength); + } + let c0 = read_fq2(&input[0..G1_LEN])?; + let c1 = read_fq2(&input[G1_LEN..G2_LEN])?; + G2Affine::from_xy(c0, c1).ok_or(PrecompileError::Bn254AffineGFailedToCreate) +} + +#[inline] +fn encode_g1_point(point: G1Affine) -> [u8; G1_LEN] { + let mut output = [0u8; G1_LEN]; + + let x_bytes: &[u8] = point.x().as_le_bytes(); + let y_bytes: &[u8] = point.y().as_le_bytes(); + for i in 0..FQ_LEN { + output[i] = x_bytes[FQ_LEN - 1 - i]; + output[i + FQ_LEN] = y_bytes[FQ_LEN - 1 - i]; + } + output +} + +/// Reads a scalar from the input slice +/// +/// Note: The scalar does not need to be canonical. +/// +/// # Panics +/// +/// If `input.len()` is not equal to [`SCALAR_LEN`]. +#[inline] +fn read_scalar(input: &[u8]) -> Scalar { + assert_eq!( + input.len(), + SCALAR_LEN, + "unexpected scalar length. got {}, expected {SCALAR_LEN}", + input.len() + ); + Scalar::from_be_bytes_unchecked(input) +} diff --git a/ere-guests/stateless-executor/pico/Cargo.toml b/ere-guests/stateless-executor/pico/Cargo.toml new file mode 100644 index 00000000..86db45b0 --- /dev/null +++ b/ere-guests/stateless-executor/pico/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "reth-pico-stateless-executor" +version = "0.1.0" +edition = "2024" + +[dependencies] +ere-platform-pico.workspace = true +reth-stateless-executor = { workspace = true, default-features = true } +guest-libs.workspace = true +sha2.workspace = true + +reth-stateless.workspace = true +reth-ethereum-primitives = { workspace = true, features = [ + "serde", + "serde-bincode-compat", +] } +reth-primitives-traits = { workspace = true, features = [ + "serde", + "serde-bincode-compat", +] } + +revm = { workspace = true, default-features = false, features = ["bn"] } +alloy-primitives = { workspace = true, default-features = false, features = [ + "map-foldhash", + "serde", + "sha3-keccak", +] } +k256.workspace = true + +kzg-rs = { git = "https://github.com/brevis-network/kzg-rs", rev = "b93499a67494bc6d34e108032fd11d375fb886e0" } + diff --git a/ere-guests/stateless-executor/pico/src/main.rs b/ere-guests/stateless-executor/pico/src/main.rs new file mode 100644 index 00000000..6b62b73c --- /dev/null +++ b/ere-guests/stateless-executor/pico/src/main.rs @@ -0,0 +1,67 @@ +//! Pico guest program for stateless execution (no validation). + +#![no_main] + +use ere_platform_pico::{pico_sdk, PicoPlatform}; +use kzg_rs::{Bytes32, Bytes48}; +use reth_stateless_executor::guest::{Guest, RethStatelessExecutorGuest}; +use revm::precompile::{interface::install_crypto, Crypto, PrecompileError}; + +pico_sdk::entrypoint!(main); + +#[derive(Debug)] +struct CryptoProvider; + +// See https://github.com/bluealloy/revm/blob/e42a93a86580da9c861e568f24d86482532f3560/crates/precompile/src/kzg_point_evaluation.rs#L79-L119 +impl Crypto for CryptoProvider { + fn verify_kzg_proof( + &self, + z: &[u8; 32], + y: &[u8; 32], + commitment: &[u8; 48], + proof: &[u8; 48], + ) -> Result<(), PrecompileError> { + let env = kzg_rs::EnvKzgSettings::default(); + let kzg_settings = env.get(); + if !kzg_rs::KzgProof::verify_kzg_proof( + as_bytes48(commitment), + as_bytes32(z), + as_bytes32(y), + as_bytes48(proof), + kzg_settings, + ) + .unwrap_or(false) + { + return Err(PrecompileError::BlobVerifyKzgProofFailed); + } + + Ok(()) + } +} + +/// Convert a slice to an array of a specific size. +#[inline] +fn as_array(bytes: &[u8]) -> &[u8; N] { + bytes.try_into().expect("slice with incorrect length") +} + +/// Convert a slice to a 32 byte big endian array. +#[inline] +fn as_bytes32(bytes: &[u8]) -> &Bytes32 { + // SAFETY: `#[repr(C)] Bytes32([u8; 32])` + unsafe { &*as_array::<32>(bytes).as_ptr().cast() } +} + +/// Convert a slice to a 48 byte big endian array. +#[inline] +fn as_bytes48(bytes: &[u8]) -> &Bytes48 { + // SAFETY: `#[repr(C)] Bytes48([u8; 48])` + unsafe { &*as_array::<48>(bytes).as_ptr().cast() } +} + +/// Entry point. +pub fn main() { + install_crypto(CryptoProvider); + RethStatelessExecutorGuest::run_output_sha256::(); +} + diff --git a/ere-guests/stateless-executor/risc0/Cargo.toml b/ere-guests/stateless-executor/risc0/Cargo.toml new file mode 100644 index 00000000..b2965bcc --- /dev/null +++ b/ere-guests/stateless-executor/risc0/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "reth-risc0-stateless-executor" +version = "0.1.0" +edition = "2021" + +[dependencies] +reth-stateless-executor = { workspace = true, default-features = true } +ere-platform-risc0 = { workspace = true, features = ["std", "unstable", "getrandom", "sys-getenv"] } +guest-libs.workspace = true +sha2.workspace = true + +reth-stateless.workspace = true +reth-ethereum-primitives = { workspace = true, features = [ + "serde", + "serde-bincode-compat", +] } +reth-primitives-traits = { workspace = true, features = [ + "serde", + "serde-bincode-compat", +] } + +revm = { workspace = true, features = ["std", "c-kzg", "blst", "bn"] } + +alloy-primitives = { workspace = true, default-features = false, features = [ + "map-foldhash", + "serde", + "tiny-keccak", +] } + +k256.workspace = true + diff --git a/ere-guests/stateless-executor/risc0/src/main.rs b/ere-guests/stateless-executor/risc0/src/main.rs new file mode 100644 index 00000000..2d41e51e --- /dev/null +++ b/ere-guests/stateless-executor/risc0/src/main.rs @@ -0,0 +1,10 @@ +//! Risc0 guest program for stateless execution (no validation). + +use ere_platform_risc0::Risc0Platform; +use reth_stateless_executor::guest::{Guest, RethStatelessExecutorGuest}; + +/// Entry point. +pub fn main() { + RethStatelessExecutorGuest::run_output_sha256::(); +} + diff --git a/ere-guests/stateless-executor/sp1/Cargo.toml b/ere-guests/stateless-executor/sp1/Cargo.toml new file mode 100644 index 00000000..82d0b3f6 --- /dev/null +++ b/ere-guests/stateless-executor/sp1/Cargo.toml @@ -0,0 +1,34 @@ +[package] +name = "reth-sp1-stateless-executor" +version = "0.1.0" +edition = "2024" +rust-version = "1.85" +license = "MIT OR Apache-2.0" + +[dependencies] +ere-platform-sp1.workspace = true +reth-stateless-executor = { workspace = true, default-features = true } +guest-libs.workspace = true +sha2.workspace = true + +reth-stateless.workspace = true +reth-ethereum-primitives = { workspace = true, features = [ + "serde", + "serde-bincode-compat", +] } +reth-primitives-traits = { workspace = true, features = [ + "serde", + "serde-bincode-compat", +] } + +revm = { workspace = true, default-features = false, features = ["bn"] } +alloy-primitives = { workspace = true, default-features = false, features = [ + "map-foldhash", + "serde", + "sha3-keccak", +] } +k256.workspace = true + +tracing-subscriber = "*" +tracing = "*" + diff --git a/ere-guests/stateless-executor/sp1/src/main.rs b/ere-guests/stateless-executor/sp1/src/main.rs new file mode 100644 index 00000000..04187941 --- /dev/null +++ b/ere-guests/stateless-executor/sp1/src/main.rs @@ -0,0 +1,30 @@ +//! SP1 guest program for stateless execution (no validation). + +#![no_main] + +use ere_platform_sp1::{sp1_zkvm, SP1Platform}; +use reth_stateless_executor::guest::{Guest, RethStatelessExecutorGuest}; +use tracing_subscriber::fmt; + +sp1_zkvm::entrypoint!(main); + +/// Entry point. +pub fn main() { + init_tracing_just_like_println(); + RethStatelessExecutorGuest::run_output_sha256::(); +} + +/// Initializes a basic `tracing` subscriber that mimics `println!` behavior. +fn init_tracing_just_like_println() { + let plain = fmt::format() + .without_time() + .with_level(false) + .with_target(false); + + fmt::Subscriber::builder() + .event_format(plain) + .with_writer(std::io::stdout) + .with_max_level(tracing::Level::INFO) + .init(); +} + diff --git a/ere-guests/stateless-executor/src/execution.rs b/ere-guests/stateless-executor/src/execution.rs new file mode 100644 index 00000000..b7b86f3f --- /dev/null +++ b/ere-guests/stateless-executor/src/execution.rs @@ -0,0 +1,237 @@ +//! Core execution function for stateless block execution without validation. + +use crate::witness_db::WitnessDatabase; +use alloc::{ + collections::BTreeMap, + string::{String, ToString}, + sync::Arc, + vec::Vec, +}; +use alloy_consensus::{BlockHeader, Header}; +use alloy_primitives::{Address, B256, keccak256}; +use reth_chainspec::{EthChainSpec, EthereumHardforks}; +use reth_ethereum_primitives::{Block, EthPrimitives, TransactionSigned}; +use reth_evm::{ConfigureEvm, execute::Executor}; +use reth_primitives_traits::{Block as _, RecoveredBlock, SealedHeader}; +use reth_stateless::{UncompressedPublicKey, trie::StatelessTrie}; + +/// Errors that can occur during stateless execution. +#[derive(Debug, thiserror::Error)] +pub enum StatelessExecutionError { + /// Error during stateless block execution. + #[error("stateless block execution failed: {0}")] + ExecutionFailed(String), + + /// Error during signer recovery. + #[error("signer recovery failed")] + SignerRecovery, + + /// Error when signature has non-normalized s value in homestead block. + #[error("signature s value not normalized for homestead block")] + HomesteadSignatureNotNormalized, + + /// Error when the number of public keys doesn't match transactions. + #[error("number of public keys ({keys}) must match number of transactions ({txs})")] + PublicKeyCountMismatch { + /// Number of public keys provided. + keys: usize, + /// Number of transactions in the block. + txs: usize, + }, + + /// Error when building state from witness. + #[error("failed to build state from witness")] + WitnessBuildFailed, + + /// Error deserializing ancestor headers. + #[error("failed to deserialize ancestor headers")] + HeaderDeserializationFailed, + + /// Error when no ancestor headers provided (needed for state root). + #[error("missing ancestor headers")] + MissingAncestorHeader, +} + +/// Performs stateless execution of a block without any validation. +/// +/// This function executes all transactions in a block using the EVM, but skips: +/// - Pre-execution consensus validation (header checks, ancestor verification) +/// - Post-execution consensus checks (receipts root, gas used validation) +/// - State root verification (both pre-state and post-state) +/// +/// This is useful for benchmarking pure EVM execution cycles in zkVMs. +/// +/// # Type Parameters +/// +/// - `T`: The `StatelessTrie` implementation to use (e.g., `SparseState`) +/// - `ChainSpec`: The chain specification +/// - `E`: The EVM configuration +/// +/// # Returns +/// +/// Returns `true` if EVM execution succeeded for all transactions, `false` otherwise. +pub fn stateless_execution_with_trie( + current_block: Block, + public_keys: Vec, + witness: reth_stateless::ExecutionWitness, + chain_spec: Arc, + evm_config: E, +) -> bool +where + T: StatelessTrie, + ChainSpec: Send + Sync + EthChainSpec
+ EthereumHardforks + core::fmt::Debug, + E: ConfigureEvm + Clone + 'static, +{ + match stateless_execution_inner::( + current_block, + public_keys, + witness, + chain_spec, + evm_config, + ) { + Ok(()) => true, + Err(_) => false, + } +} + +/// Inner implementation that returns Result for error handling. +fn stateless_execution_inner( + current_block: Block, + public_keys: Vec, + witness: reth_stateless::ExecutionWitness, + chain_spec: Arc, + evm_config: E, +) -> Result<(), StatelessExecutionError> +where + T: StatelessTrie, + ChainSpec: Send + Sync + EthChainSpec
+ EthereumHardforks + core::fmt::Debug, + E: ConfigureEvm + Clone + 'static, +{ + // Step 1: Recover block with public keys (we still need signers for execution) + let current_block = recover_block_with_public_keys(current_block, public_keys, &*chain_spec)?; + + // Step 2: Build ancestor hashes from witness headers (needed for BLOCKHASH opcode) + // We parse headers but skip contiguity/limit validation + let (ancestor_hashes, parent_state_root) = + build_ancestor_hashes_unchecked(¤t_block, &witness)?; + + // Step 3: Build state from witness using the StatelessTrie trait + // Note: We pass the parent state root but don't validate it matches + let (trie, bytecode) = T::new(&witness, parent_state_root) + .map_err(|_| StatelessExecutionError::WitnessBuildFailed)?; + + // Step 4: Create an in-memory database for EVM execution + let db = WitnessDatabase::new(&trie, bytecode, ancestor_hashes); + + // Step 5: Execute the block (this is the core EVM execution) + let executor = evm_config.executor(db); + let _output = executor + .execute(¤t_block) + .map_err(|e| StatelessExecutionError::ExecutionFailed(e.to_string()))?; + + // SKIP: Post-execution validation (validate_block_post_execution) + // SKIP: State root computation and verification + + Ok(()) +} + +/// Builds ancestor hashes from witness headers without validation. +/// +/// Returns the ancestor hashes map and the parent's state root. +fn build_ancestor_hashes_unchecked( + current_block: &RecoveredBlock, + witness: &reth_stateless::ExecutionWitness, +) -> Result<(BTreeMap, B256), StatelessExecutionError> { + let mut ancestor_headers: Vec<_> = witness + .headers + .iter() + .map(|bytes| { + let hash = keccak256(bytes); + alloy_rlp::decode_exact::
(bytes) + .map(|h| SealedHeader::new(h, hash)) + .map_err(|_| StatelessExecutionError::HeaderDeserializationFailed) + }) + .collect::>()?; + + // Sort headers by block number (ascending) + ancestor_headers.sort_by_key(|header| header.number()); + + // Get the parent header (last in sorted list = highest block number = parent) + let parent = ancestor_headers + .last() + .ok_or(StatelessExecutionError::MissingAncestorHeader)?; + let parent_state_root = parent.state_root; + + let mut ancestor_hashes = BTreeMap::new(); + let mut child_header = current_block.sealed_header(); + + // Build the hash map (skip contiguity validation for execution-only mode) + for parent_header in ancestor_headers.iter().rev() { + let parent_hash = child_header.parent_hash(); + ancestor_hashes.insert(parent_header.number, parent_hash); + child_header = parent_header; + } + + Ok((ancestor_hashes, parent_state_root)) +} + +/// Verifies all transactions in a block against a list of public keys. +/// +/// Returns a `RecoveredBlock` with verified senders. +fn recover_block_with_public_keys( + block: Block, + public_keys: Vec, + chain_spec: &ChainSpec, +) -> Result, StatelessExecutionError> +where + ChainSpec: EthereumHardforks, +{ + if block.body().transactions.len() != public_keys.len() { + return Err(StatelessExecutionError::PublicKeyCountMismatch { + keys: public_keys.len(), + txs: block.body().transactions.len(), + }); + } + + // Determine if we're in the Homestead fork for signature validation + let is_homestead = chain_spec.is_homestead_active_at_block(block.header().number()); + + // Verify each transaction signature against its corresponding public key + let senders = public_keys + .iter() + .zip(block.body().transactions()) + .map(|(vk, tx)| verify_and_compute_sender(vk, tx, is_homestead)) + .collect::, _>>()?; + + // Create RecoveredBlock with verified senders + let block_hash = block.hash_slow(); + Ok(RecoveredBlock::new(block, senders, block_hash)) +} + +/// Verifies a transaction using its signature and the given public key. +fn verify_and_compute_sender( + vk: &UncompressedPublicKey, + tx: &TransactionSigned, + is_homestead: bool, +) -> Result { + use k256::ecdsa::{VerifyingKey, signature::hazmat::PrehashVerifier}; + + let sig = tx.signature(); + + // Non-normalized signatures are only valid pre-homestead + let sig_is_normalized = sig.normalize_s().is_none(); + if is_homestead && !sig_is_normalized { + return Err(StatelessExecutionError::HomesteadSignatureNotNormalized); + } + + let sig_hash = tx.signature_hash(); + + let vk = + VerifyingKey::from_sec1_bytes(vk).map_err(|_| StatelessExecutionError::SignerRecovery)?; + + sig.to_k256() + .and_then(|sig| vk.verify_prehash(sig_hash.as_slice(), &sig)) + .map_err(|_| StatelessExecutionError::SignerRecovery)?; + + Ok(Address::from_public_key(&vk)) +} diff --git a/ere-guests/stateless-executor/src/guest.rs b/ere-guests/stateless-executor/src/guest.rs new file mode 100644 index 00000000..cdf06f11 --- /dev/null +++ b/ere-guests/stateless-executor/src/guest.rs @@ -0,0 +1,59 @@ +//! [`Guest`] implementation for Reth stateless executor. + +use alloc::{sync::Arc, vec::Vec}; +use ere_io::{ + Io, + serde::{IoSerde, bincode::BincodeLegacy}, +}; +use ere_platform_trait::Platform; +use reth_chainspec::ChainSpec; +use reth_evm_ethereum::EthEvmConfig; +use reth_stateless::{Genesis, StatelessInput, UncompressedPublicKey}; +use serde::{Deserialize, Serialize}; +use sparsestate::SparseState; + +pub use guest_libs::guest::Guest; + +use crate::stateless_execution_with_trie; + +/// Input for the stateless executor guest program. +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct RethStatelessExecutorInput { + /// The stateless input for the execution function. + pub stateless_input: StatelessInput, + /// The recovered signers for the transactions in the block. + pub public_keys: Vec, +} + +/// The public output is just a success/failure boolean. +pub type RethStatelessExecutorOutput = bool; + +/// [`Guest`] implementation for Reth stateless executor. +/// +/// This guest executes EVM transactions without validation checks, +/// useful for benchmarking pure EVM execution cycles. +#[derive(Debug, Clone)] +pub struct RethStatelessExecutorGuest; + +impl Guest for RethStatelessExecutorGuest { + type Io = IoSerde; + + fn compute(input: ::Input) -> ::Output { + let genesis = Genesis { + config: input.stateless_input.chain_config.clone(), + ..Default::default() + }; + let chain_spec: Arc = Arc::new(genesis.into()); + let evm_config = EthEvmConfig::new(chain_spec.clone()); + + P::cycle_scope("execution", || { + stateless_execution_with_trie::( + input.stateless_input.block, + input.public_keys, + input.stateless_input.witness, + chain_spec, + evm_config, + ) + }) + } +} diff --git a/ere-guests/stateless-executor/src/lib.rs b/ere-guests/stateless-executor/src/lib.rs new file mode 100644 index 00000000..349410b2 --- /dev/null +++ b/ere-guests/stateless-executor/src/lib.rs @@ -0,0 +1,39 @@ +//! Provides types and functions for stateless execution of Ethereum blocks without validation. +//! +//! This crate enables pure EVM execution for benchmarking purposes, skipping all +//! pre-execution validation and post-execution consensus checks. This is useful for +//! measuring the raw EVM execution cycles in zkVMs without the overhead of validation. +//! +//! # Key Differences from `reth-stateless` +//! +//! Unlike `reth_stateless::stateless_validation_with_trie`, this crate: +//! - **Skips** pre-execution consensus validation (header checks, ancestor verification) +//! - **Skips** post-execution consensus checks (receipts root, gas used validation) +//! - **Skips** state root verification (both pre-state and post-state) +//! - **Only** performs EVM transaction execution +//! +//! # Usage +//! +//! The primary entry point is `stateless_execution_with_trie`. It returns a boolean +//! indicating whether EVM execution succeeded. +//! +//! For zkVM guest programs, use the [`guest::RethStatelessExecutorGuest`] implementation. + +#![doc( + html_logo_url = "https://raw.githubusercontent.com/paradigmxyz/reth/main/assets/reth-docs.png", + html_favicon_url = "https://avatars0.githubusercontent.com/u/97369466?s=256" +)] +#![cfg_attr(not(test), warn(unused_crate_dependencies))] +#![no_std] + +extern crate alloc; + +mod execution; +/// Guest program implementation for zkVMs. +pub mod guest; +mod witness_db; + +pub use execution::{StatelessExecutionError, stateless_execution_with_trie}; + +// Re-export types that users will need +pub use reth_stateless::{ExecutionWitness, Genesis, StatelessInput, UncompressedPublicKey}; diff --git a/ere-guests/stateless-executor/src/witness_db.rs b/ere-guests/stateless-executor/src/witness_db.rs new file mode 100644 index 00000000..39e108c3 --- /dev/null +++ b/ere-guests/stateless-executor/src/witness_db.rs @@ -0,0 +1,81 @@ +//! Provides the [`WitnessDatabase`] type for EVM execution backed by witness data. + +use alloc::collections::btree_map::BTreeMap; +use alloy_primitives::{Address, B256, U256, map::B256Map}; +use reth_errors::ProviderError; +use reth_revm::{Database, bytecode::Bytecode, state::AccountInfo}; +use reth_stateless::trie::StatelessTrie; + +/// An EVM database implementation backed by witness data. +/// +/// This struct implements the [`reth_revm::Database`] trait, allowing the EVM to execute +/// transactions using state from a [`StatelessTrie`] implementation. +#[derive(Debug)] +pub struct WitnessDatabase<'a, T> +where + T: StatelessTrie, +{ + /// Map of block numbers to block hashes (for BLOCKHASH opcode). + block_hashes_by_block_number: BTreeMap, + /// Map of code hashes to bytecode. + bytecode: B256Map, + /// The sparse state trie containing account and storage state. + trie: &'a T, +} + +impl<'a, T> WitnessDatabase<'a, T> +where + T: StatelessTrie, +{ + /// Creates a new [`WitnessDatabase`] instance. + pub const fn new( + trie: &'a T, + bytecode: B256Map, + ancestor_hashes: BTreeMap, + ) -> Self { + Self { + trie, + block_hashes_by_block_number: ancestor_hashes, + bytecode, + } + } +} + +impl Database for WitnessDatabase<'_, T> +where + T: StatelessTrie, +{ + type Error = ProviderError; + + /// Get basic account information. + fn basic(&mut self, address: Address) -> Result, Self::Error> { + self.trie.account(address).map(|opt| { + opt.map(|account| AccountInfo { + balance: account.balance, + nonce: account.nonce, + code_hash: account.code_hash, + code: None, + }) + }) + } + + /// Get storage value of an account at a specific slot. + fn storage(&mut self, address: Address, slot: U256) -> Result { + self.trie.storage(address, slot) + } + + /// Get account code by its hash. + fn code_by_hash(&mut self, code_hash: B256) -> Result { + self.bytecode.get(&code_hash).cloned().ok_or_else(|| { + ProviderError::TrieWitnessError(alloc::format!("bytecode for {code_hash} not found")) + }) + } + + /// Get block hash by block number. + fn block_hash(&mut self, block_number: u64) -> Result { + self.block_hashes_by_block_number + .get(&block_number) + .copied() + .ok_or(ProviderError::StateForNumberNotFound(block_number)) + } +} diff --git a/ere-guests/stateless-executor/zisk/Cargo.toml b/ere-guests/stateless-executor/zisk/Cargo.toml new file mode 100644 index 00000000..2613645f --- /dev/null +++ b/ere-guests/stateless-executor/zisk/Cargo.toml @@ -0,0 +1,32 @@ +[package] +name = "reth-zisk-stateless-executor" +version.workspace = true +edition.workspace = true +rust-version.workspace = true +license.workspace = true + +[dependencies] +ere-platform-zisk.workspace = true +reth-stateless-executor = { workspace = true, default-features = true } +guest-libs.workspace = true + +reth-stateless.workspace = true +reth-ethereum-primitives = { workspace = true, features = [ + "serde", + "serde-bincode-compat", +] } +reth-primitives-traits = { workspace = true, features = [ + "serde", + "serde-bincode-compat", +] } + +revm = { workspace = true, default-features = false, features = ["bn"] } +alloy-primitives = { workspace = true, default-features = false, features = [ + "map-foldhash", + "serde", + "sha3-keccak", +] } +k256.workspace = true +bincode.workspace = true +sha2.workspace = true + diff --git a/ere-guests/stateless-executor/zisk/src/main.rs b/ere-guests/stateless-executor/zisk/src/main.rs new file mode 100644 index 00000000..20dfa9c4 --- /dev/null +++ b/ere-guests/stateless-executor/zisk/src/main.rs @@ -0,0 +1,14 @@ +//! ZisK guest program for stateless execution (no validation). + +#![no_main] + +use ere_platform_zisk::{ziskos, ZiskPlatform}; +use reth_stateless_executor::guest::{Guest, RethStatelessExecutorGuest}; + +ziskos::entrypoint!(main); + +/// Entry point. +pub fn main() { + RethStatelessExecutorGuest::run_output_sha256::(); +} + diff --git a/ere-guests/stateless-validator/ethrex/guest/src/guest.rs b/ere-guests/stateless-validator/ethrex/guest/src/guest.rs index 6c54e5ee..d00fa0df 100644 --- a/ere-guests/stateless-validator/ethrex/guest/src/guest.rs +++ b/ere-guests/stateless-validator/ethrex/guest/src/guest.rs @@ -1,5 +1,6 @@ //! Stateless validator guest program. +use alloc::format; use core::fmt::Debug; use ere_io::{ Io, @@ -90,7 +91,13 @@ impl Guest for EthrexStatelessValidatorGuest { match res { Ok(out) => (out.last_block_hash.0, parent_hash.0, true), - Err(_) => (header.compute_block_hash().0, parent_hash.0, false), + Err(err) => { + P::print(&format!( + "Block {} validation failed: {err}\n", + header.number + )); + (header.compute_block_hash().0, parent_hash.0, false) + } } } } diff --git a/ere-guests/stateless-validator/ethrex/risc0/Cargo.lock b/ere-guests/stateless-validator/ethrex/risc0/Cargo.lock index d62bb541..1bb0bb35 100644 --- a/ere-guests/stateless-validator/ethrex/risc0/Cargo.lock +++ b/ere-guests/stateless-validator/ethrex/risc0/Cargo.lock @@ -1764,16 +1764,16 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "ere-io" -version = "0.0.15" -source = "git+https://github.com/eth-applied-research-group/ere?rev=a75f8f4832942b32fc1314bb3b2ce9b5e3e9d306#a75f8f4832942b32fc1314bb3b2ce9b5e3e9d306" +version = "0.0.16" +source = "git+https://github.com/eth-applied-research-group/ere?rev=73a760aa635d355e5cc581777cc7703fdf60a3ac#73a760aa635d355e5cc581777cc7703fdf60a3ac" dependencies = [ "rkyv", ] [[package]] name = "ere-platform-risc0" -version = "0.0.15" -source = "git+https://github.com/eth-applied-research-group/ere?rev=a75f8f4832942b32fc1314bb3b2ce9b5e3e9d306#a75f8f4832942b32fc1314bb3b2ce9b5e3e9d306" +version = "0.0.16" +source = "git+https://github.com/eth-applied-research-group/ere?rev=73a760aa635d355e5cc581777cc7703fdf60a3ac#73a760aa635d355e5cc581777cc7703fdf60a3ac" dependencies = [ "ere-platform-trait", "risc0-zkvm", @@ -1782,8 +1782,8 @@ dependencies = [ [[package]] name = "ere-platform-trait" -version = "0.0.15" -source = "git+https://github.com/eth-applied-research-group/ere?rev=a75f8f4832942b32fc1314bb3b2ce9b5e3e9d306#a75f8f4832942b32fc1314bb3b2ce9b5e3e9d306" +version = "0.0.16" +source = "git+https://github.com/eth-applied-research-group/ere?rev=73a760aa635d355e5cc581777cc7703fdf60a3ac#73a760aa635d355e5cc581777cc7703fdf60a3ac" dependencies = [ "digest 0.10.7", ] @@ -1873,8 +1873,8 @@ dependencies = [ [[package]] name = "ethrex-blockchain" -version = "7.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ "bytes", "ethrex-common", @@ -1894,8 +1894,8 @@ dependencies = [ [[package]] name = "ethrex-common" -version = "7.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ "bytes", "crc32fast", @@ -1904,6 +1904,7 @@ dependencies = [ "ethrex-rlp", "ethrex-trie", "hex", + "hex-literal", "k256", "kzg-rs", "lazy_static", @@ -1912,7 +1913,6 @@ dependencies = [ "rayon", "rkyv", "rustc-hash", - "secp256k1", "serde", "serde_json", "sha2", @@ -1925,8 +1925,8 @@ dependencies = [ [[package]] name = "ethrex-crypto" -version = "7.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ "c-kzg", "kzg-rs", @@ -1948,8 +1948,8 @@ dependencies = [ [[package]] name = "ethrex-l2-common" -version = "7.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ "bytes", "ethereum-types", @@ -1963,17 +1963,17 @@ dependencies = [ "k256", "lambdaworks-crypto", "rkyv", - "secp256k1", "serde", "serde_with", "sha3", "thiserror", + "tracing", ] [[package]] name = "ethrex-levm" -version = "7.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ "ark-bn254", "ark-ec", @@ -1993,7 +1993,6 @@ dependencies = [ "p256", "ripemd", "rustc-hash", - "secp256k1", "serde", "serde_json", "sha2", @@ -2006,8 +2005,8 @@ dependencies = [ [[package]] name = "ethrex-metrics" -version = "7.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ "ethrex-common", "serde", @@ -2031,8 +2030,8 @@ dependencies = [ [[package]] name = "ethrex-rlp" -version = "7.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ "bytes", "ethereum-types", @@ -2045,12 +2044,11 @@ dependencies = [ [[package]] name = "ethrex-storage" -version = "7.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ "anyhow", "async-trait", - "bincode", "bytes", "ethereum-types", "ethrex-common", @@ -2065,21 +2063,22 @@ dependencies = [ "serde", "serde_json", "thiserror", + "tokio", "tracing", ] [[package]] name = "ethrex-threadpool" version = "0.1.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ "crossbeam", ] [[package]] name = "ethrex-trie" -version = "7.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ "anyhow", "bytes", @@ -2102,8 +2101,8 @@ dependencies = [ [[package]] name = "ethrex-vm" -version = "7.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ "bincode", "bytes", @@ -2392,9 +2391,10 @@ dependencies = [ [[package]] name = "guest_program" -version = "7.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ + "bincode", "bytes", "ethrex-blockchain", "ethrex-common", @@ -4968,8 +4968,7 @@ dependencies = [ [[package]] name = "sha2" version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +source = "git+https://github.com/risc0/RustCrypto-hashes?tag=sha2-v0.10.9-risczero.0#8631fabdea7bdffa97b11868e04e73491d8e5bcf" dependencies = [ "cfg-if", "cpufeatures", @@ -5929,8 +5928,3 @@ dependencies = [ "cc", "pkg-config", ] - -[[patch.unused]] -name = "sha2" -version = "0.10.8" -source = "git+https://github.com/risc0/RustCrypto-hashes?tag=sha2-v0.10.8-risczero.0#244dc3b08788f7a4ccce14c66896ae3b4f24c166" diff --git a/ere-guests/stateless-validator/ethrex/risc0/Cargo.toml b/ere-guests/stateless-validator/ethrex/risc0/Cargo.toml index 557ec192..8d4ccd6b 100644 --- a/ere-guests/stateless-validator/ethrex/risc0/Cargo.toml +++ b/ere-guests/stateless-validator/ethrex/risc0/Cargo.toml @@ -6,7 +6,7 @@ edition = "2024" [workspace] [dependencies] -ere-platform-risc0 = { git = "https://github.com/eth-applied-research-group/ere", rev = "d15c6b495d0bc42bf160ecfbb11fa7600047c821", default-features = false, features = [ +ere-platform-risc0 = { git = "https://github.com/NethermindEth/ere", rev = "b5a5624115577e1c9df0e0070a60b85bd200e2f2", default-features = false, features = [ "std", "unstable", "getrandom", @@ -16,19 +16,19 @@ ethrex-guest = { path = "../guest", features = ["std"] } k256 = "0.13" c-kzg = { version = "2.1.1", features = ["eip-7594"] } -guest_program = { git = "https://github.com/lambdaclass/ethrex.git", rev = "c68e76d6b569c60a667a1240a91e637bf2ea0d0b", default-features = false, features = [ +guest_program = { git = "https://github.com/lambdaclass/ethrex.git", rev = "e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1", default-features = false, features = [ "c-kzg", ] } -ethrex-common = { git = "https://github.com/lambdaclass/ethrex.git", rev = "c68e76d6b569c60a667a1240a91e637bf2ea0d0b", default-features = false, features = [ +ethrex-common = { git = "https://github.com/lambdaclass/ethrex.git", rev = "e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1", default-features = false, features = [ "risc0", ] } -ethrex-vm = { git = "https://github.com/lambdaclass/ethrex.git", rev = "c68e76d6b569c60a667a1240a91e637bf2ea0d0b", default-features = false, features = [ +ethrex-vm = { git = "https://github.com/lambdaclass/ethrex.git", rev = "e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1", default-features = false, features = [ "c-kzg", "risc0", ] } [patch.crates-io] -sha2 = { git = "https://github.com/risc0/RustCrypto-hashes", tag = "sha2-v0.10.8-risczero.0" } +sha2 = { git = "https://github.com/risc0/RustCrypto-hashes", tag = "sha2-v0.10.9-risczero.0" } k256 = { git = "https://github.com/risc0/RustCrypto-elliptic-curves", tag = "k256/v0.13.4-risczero.1" } p256 = { git = "https://github.com/risc0/RustCrypto-elliptic-curves", tag = "p256/v0.13.2-risczero.1" } crypto-bigint = { git = "https://github.com/risc0/RustCrypto-crypto-bigint", tag = "v0.5.5-risczero.0" } diff --git a/ere-guests/stateless-validator/ethrex/sp1/Cargo.lock b/ere-guests/stateless-validator/ethrex/sp1/Cargo.lock index a856909b..567c17ec 100644 --- a/ere-guests/stateless-validator/ethrex/sp1/Cargo.lock +++ b/ere-guests/stateless-validator/ethrex/sp1/Cargo.lock @@ -1625,16 +1625,16 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "ere-io" -version = "0.0.15" -source = "git+https://github.com/eth-applied-research-group/ere?rev=a75f8f4832942b32fc1314bb3b2ce9b5e3e9d306#a75f8f4832942b32fc1314bb3b2ce9b5e3e9d306" +version = "0.0.16" +source = "git+https://github.com/eth-applied-research-group/ere?rev=73a760aa635d355e5cc581777cc7703fdf60a3ac#73a760aa635d355e5cc581777cc7703fdf60a3ac" dependencies = [ "rkyv", ] [[package]] name = "ere-platform-sp1" -version = "0.0.15" -source = "git+https://github.com/eth-applied-research-group/ere?rev=a75f8f4832942b32fc1314bb3b2ce9b5e3e9d306#a75f8f4832942b32fc1314bb3b2ce9b5e3e9d306" +version = "0.0.16" +source = "git+https://github.com/eth-applied-research-group/ere?rev=73a760aa635d355e5cc581777cc7703fdf60a3ac#73a760aa635d355e5cc581777cc7703fdf60a3ac" dependencies = [ "ere-platform-trait", "sp1-zkvm", @@ -1642,8 +1642,8 @@ dependencies = [ [[package]] name = "ere-platform-trait" -version = "0.0.15" -source = "git+https://github.com/eth-applied-research-group/ere?rev=a75f8f4832942b32fc1314bb3b2ce9b5e3e9d306#a75f8f4832942b32fc1314bb3b2ce9b5e3e9d306" +version = "0.0.16" +source = "git+https://github.com/eth-applied-research-group/ere?rev=73a760aa635d355e5cc581777cc7703fdf60a3ac#73a760aa635d355e5cc581777cc7703fdf60a3ac" dependencies = [ "digest 0.10.7", ] @@ -1733,8 +1733,8 @@ dependencies = [ [[package]] name = "ethrex-blockchain" -version = "7.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ "bytes", "ethrex-common", @@ -1754,8 +1754,8 @@ dependencies = [ [[package]] name = "ethrex-common" -version = "7.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ "bytes", "crc32fast", @@ -1764,6 +1764,7 @@ dependencies = [ "ethrex-rlp", "ethrex-trie", "hex", + "hex-literal", "k256", "kzg-rs", "lazy_static", @@ -1785,8 +1786,8 @@ dependencies = [ [[package]] name = "ethrex-crypto" -version = "7.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ "kzg-rs", "thiserror", @@ -1807,8 +1808,8 @@ dependencies = [ [[package]] name = "ethrex-l2-common" -version = "7.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ "bytes", "ethereum-types", @@ -1827,12 +1828,13 @@ dependencies = [ "serde_with", "sha3", "thiserror", + "tracing", ] [[package]] name = "ethrex-levm" -version = "7.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ "ark-bn254", "ark-ec", @@ -1865,8 +1867,8 @@ dependencies = [ [[package]] name = "ethrex-metrics" -version = "7.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ "ethrex-common", "serde", @@ -1877,8 +1879,8 @@ dependencies = [ [[package]] name = "ethrex-rlp" -version = "7.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ "bytes", "ethereum-types", @@ -1902,12 +1904,11 @@ dependencies = [ [[package]] name = "ethrex-storage" -version = "7.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ "anyhow", "async-trait", - "bincode", "bytes", "ethereum-types", "ethrex-common", @@ -1922,21 +1923,22 @@ dependencies = [ "serde", "serde_json", "thiserror", + "tokio", "tracing", ] [[package]] name = "ethrex-threadpool" version = "0.1.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ "crossbeam", ] [[package]] name = "ethrex-trie" -version = "7.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ "anyhow", "bytes", @@ -1959,8 +1961,8 @@ dependencies = [ [[package]] name = "ethrex-vm" -version = "7.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ "bincode", "bytes", @@ -2222,9 +2224,10 @@ dependencies = [ [[package]] name = "guest_program" -version = "7.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=c68e76d6b569c60a667a1240a91e637bf2ea0d0b#c68e76d6b569c60a667a1240a91e637bf2ea0d0b" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" dependencies = [ + "bincode", "bytes", "ethrex-blockchain", "ethrex-common", @@ -2298,6 +2301,12 @@ dependencies = [ "arrayvec", ] +[[package]] +name = "hex-literal" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" + [[package]] name = "hkdf" version = "0.12.4" @@ -4540,8 +4549,7 @@ dependencies = [ [[package]] name = "sha2" version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +source = "git+https://github.com/sp1-patches/RustCrypto-hashes?tag=patch-sha2-0.10.9-sp1-4.0.0#0b1945eea7d9a776fd6e50ffd5fc51f0c5e6f155" dependencies = [ "cfg-if", "cpufeatures", @@ -4627,9 +4635,9 @@ checksum = "1b6b67fb9a61334225b5b790716f609cd58395f895b3fe8b328786812a40bc3b" [[package]] name = "sp1-lib" -version = "5.2.3" +version = "5.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb1a9935d58cb1dcd757a1b10d727090f5b718f1f03b512d48f0c1952e6ead00" +checksum = "b73b8ff343f2405d5935440e56b7aba5cee6d87303f0051974cbd6f5de502f57" dependencies = [ "bincode", "elliptic-curve", @@ -4639,9 +4647,9 @@ dependencies = [ [[package]] name = "sp1-primitives" -version = "5.2.3" +version = "5.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7d2a6187e394c30097ea7a975a4832f172918690dc89a979f0fad67422d3a8b" +checksum = "7e69a03098f827102c54c31a5e57280eb45b2c085de433b3f702e4f9e3ec1641" dependencies = [ "bincode", "blake3", @@ -4659,9 +4667,9 @@ dependencies = [ [[package]] name = "sp1-zkvm" -version = "5.2.3" +version = "5.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e767ed85f89b1c8d84188c2cc035833079529bb0ddd8f7bd252de91ce562acc7" +checksum = "d6247de4d980d1f3311fa877cc5d2d3b7e111258878c8196a8bb9728aec98c8c" dependencies = [ "cfg-if", "critical-section", @@ -5521,8 +5529,3 @@ dependencies = [ "cc", "pkg-config", ] - -[[patch.unused]] -name = "sha2" -version = "0.10.8" -source = "git+https://github.com/sp1-patches/RustCrypto-hashes?tag=patch-sha2-0.10.8-sp1-4.0.0#1f224388fdede7cef649bce0d63876d1a9e3f515" diff --git a/ere-guests/stateless-validator/ethrex/sp1/Cargo.toml b/ere-guests/stateless-validator/ethrex/sp1/Cargo.toml index e9b2bc86..23917470 100644 --- a/ere-guests/stateless-validator/ethrex/sp1/Cargo.toml +++ b/ere-guests/stateless-validator/ethrex/sp1/Cargo.toml @@ -6,17 +6,17 @@ edition = "2024" [workspace] [dependencies] -ere-platform-sp1 = { git = "https://github.com/eth-applied-research-group/ere", rev = "d15c6b495d0bc42bf160ecfbb11fa7600047c821", default-features = false } +ere-platform-sp1 = { git = "https://github.com/NethermindEth/ere", rev = "b5a5624115577e1c9df0e0070a60b85bd200e2f2", default-features = false } ethrex-guest = { path = "../guest", features = ["std"] } k256 = "0.13" -guest_program = { git = "https://github.com/lambdaclass/ethrex.git", rev = "c68e76d6b569c60a667a1240a91e637bf2ea0d0b" } -ethrex-vm = { git = "https://github.com/lambdaclass/ethrex.git", rev = "c68e76d6b569c60a667a1240a91e637bf2ea0d0b", default-features = false, features = [ +guest_program = { git = "https://github.com/lambdaclass/ethrex.git", rev = "e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" } +ethrex-vm = { git = "https://github.com/lambdaclass/ethrex.git", rev = "e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1", default-features = false, features = [ "sp1", ] } [patch.crates-io] -sha2-v0-10-8 = { git = "https://github.com/sp1-patches/RustCrypto-hashes", package = "sha2", tag = "patch-sha2-0.10.8-sp1-4.0.0" } +sha2-v0-10-9 = { git = "https://github.com/sp1-patches/RustCrypto-hashes", package = "sha2", tag = "patch-sha2-0.10.9-sp1-4.0.0" } sha3-v0-10-8 = { git = "https://github.com/sp1-patches/RustCrypto-hashes", package = "sha3", tag = "patch-sha3-0.10.8-sp1-4.0.0" } crypto-bigint = { git = "https://github.com/sp1-patches/RustCrypto-bigint", tag = "patch-0.5.5-sp1-4.0.0" } tiny-keccak = { git = "https://github.com/sp1-patches/tiny-keccak", tag = "patch-2.0.2-sp1-4.0.0" } diff --git a/ere-guests/stateless-validator/ethrex/zisk/Cargo.lock b/ere-guests/stateless-validator/ethrex/zisk/Cargo.lock new file mode 100644 index 00000000..b4b47f1d --- /dev/null +++ b/ere-guests/stateless-validator/ethrex/zisk/Cargo.lock @@ -0,0 +1,5477 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "addchain" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b2e69442aa5628ea6951fa33e24efe8313f4321a91bd729fc2f75bdfc858570" +dependencies = [ + "num-bigint 0.3.3", + "num-integer", + "num-traits", +] + +[[package]] +name = "ahash" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" +dependencies = [ + "cfg-if", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +dependencies = [ + "memchr", +] + +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + +[[package]] +name = "alloy-chains" +version = "0.2.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35d744058a9daa51a8cf22a3009607498fcf82d3cf4c5444dd8056cdf651f471" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "num_enum", + "serde", + "strum", +] + +[[package]] +name = "alloy-consensus" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e318e25fb719e747a7e8db1654170fc185024f3ed5b10f86c08d448a912f6e2" +dependencies = [ + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "alloy-trie", + "alloy-tx-macros", + "auto_impl", + "borsh", + "c-kzg", + "derive_more 2.1.0", + "either", + "k256", + "once_cell", + "rand 0.8.5", + "secp256k1", + "serde", + "serde_json", + "serde_with", + "thiserror", +] + +[[package]] +name = "alloy-consensus-any" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "364380a845193a317bcb7a5398fc86cdb66c47ebe010771dde05f6869bf9e64a" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "serde", +] + +[[package]] +name = "alloy-eip2124" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "741bdd7499908b3aa0b159bba11e71c8cddd009a2c2eb7a06e825f1ec87900a5" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "crc", + "serde", + "thiserror", +] + +[[package]] +name = "alloy-eip2930" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9441120fa82df73e8959ae0e4ab8ade03de2aaae61be313fbf5746277847ce25" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "borsh", + "serde", +] + +[[package]] +name = "alloy-eip7702" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2919c5a56a1007492da313e7a3b6d45ef5edc5d33416fdec63c0d7a2702a0d20" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "borsh", + "k256", + "serde", + "serde_with", + "thiserror", +] + +[[package]] +name = "alloy-eips" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4c4d7c5839d9f3a467900c625416b24328450c65702eb3d8caff8813e4d1d33" +dependencies = [ + "alloy-eip2124", + "alloy-eip2930", + "alloy-eip7702", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "auto_impl", + "borsh", + "c-kzg", + "derive_more 2.1.0", + "either", + "serde", + "serde_with", + "sha2", + "thiserror", +] + +[[package]] +name = "alloy-evm" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01be36ba6f5e6e62563b369e03ca529eac46aea50677f84655084b4750816574" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-hardforks", + "alloy-primitives", + "alloy-sol-types", + "auto_impl", + "derive_more 2.1.0", + "revm", + "thiserror", +] + +[[package]] +name = "alloy-genesis" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ba4b1be0988c11f0095a2380aa596e35533276b8fa6c9e06961bbfe0aebcac5" +dependencies = [ + "alloy-eips", + "alloy-primitives", + "alloy-serde", + "alloy-trie", + "borsh", + "serde", + "serde_with", +] + +[[package]] +name = "alloy-hardforks" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d9a33550fc21fd77a3f8b63e99969d17660eec8dcc50a95a80f7c9964f7680b" +dependencies = [ + "alloy-chains", + "alloy-eip2124", + "alloy-primitives", + "auto_impl", + "dyn-clone", +] + +[[package]] +name = "alloy-network-primitives" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abd29ace62872083e30929cd9b282d82723196d196db589f3ceda67edcc05552" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-serde", + "serde", +] + +[[package]] +name = "alloy-primitives" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "355bf68a433e0fd7f7d33d5a9fc2583fde70bf5c530f63b80845f8da5505cf28" +dependencies = [ + "alloy-rlp", + "bytes", + "cfg-if", + "const-hex", + "derive_more 2.1.0", + "foldhash 0.2.0", + "hashbrown 0.16.1", + "indexmap 2.12.1", + "itoa", + "k256", + "keccak-asm", + "paste", + "proptest", + "rand 0.9.2", + "ruint", + "rustc-hash", + "serde", + "sha3", + "tiny-keccak", +] + +[[package]] +name = "alloy-rlp" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f70d83b765fdc080dbcd4f4db70d8d23fe4761f2f02ebfa9146b833900634b4" +dependencies = [ + "alloy-rlp-derive", + "arrayvec", + "bytes", +] + +[[package]] +name = "alloy-rlp-derive" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64b728d511962dda67c1bc7ea7c03736ec275ed2cf4c35d9585298ac9ccf3b73" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "alloy-rpc-types-debug" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4936f579d9d10eae01772b2ab3497f9d568684f05f26f8175e12f9a1a2babc33" +dependencies = [ + "alloy-primitives", + "derive_more 2.1.0", + "serde", + "serde_with", +] + +[[package]] +name = "alloy-rpc-types-engine" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c60bdce3be295924122732b7ecd0b2495ce4790bedc5370ca7019c08ad3f26e" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "derive_more 2.1.0", + "strum", +] + +[[package]] +name = "alloy-rpc-types-eth" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9eae0c7c40da20684548cbc8577b6b7447f7bf4ddbac363df95e3da220e41e72" +dependencies = [ + "alloy-consensus", + "alloy-consensus-any", + "alloy-eips", + "alloy-network-primitives", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "alloy-sol-types", + "itertools 0.14.0", + "serde", + "serde_json", + "serde_with", + "thiserror", +] + +[[package]] +name = "alloy-serde" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0df1987ed0ff2d0159d76b52e7ddfc4e4fbddacc54d2fbee765e0d14d7c01b5" +dependencies = [ + "alloy-primitives", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-sol-macro" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3ce480400051b5217f19d6e9a82d9010cdde20f1ae9c00d53591e4a1afbb312" +dependencies = [ + "alloy-sol-macro-expander", + "alloy-sol-macro-input", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "alloy-sol-macro-expander" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d792e205ed3b72f795a8044c52877d2e6b6e9b1d13f431478121d8d4eaa9028" +dependencies = [ + "alloy-sol-macro-input", + "const-hex", + "heck", + "indexmap 2.12.1", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.111", + "syn-solidity", + "tiny-keccak", +] + +[[package]] +name = "alloy-sol-macro-input" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bd1247a8f90b465ef3f1207627547ec16940c35597875cdc09c49d58b19693c" +dependencies = [ + "const-hex", + "dunce", + "heck", + "macro-string", + "proc-macro2", + "quote", + "syn 2.0.111", + "syn-solidity", +] + +[[package]] +name = "alloy-sol-types" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70319350969a3af119da6fb3e9bddb1bce66c9ea933600cb297c8b1850ad2a3c" +dependencies = [ + "alloy-primitives", + "alloy-sol-macro", +] + +[[package]] +name = "alloy-trie" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3412d52bb97c6c6cc27ccc28d4e6e8cf605469101193b50b0bd5813b1f990b5" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "arrayvec", + "derive_more 2.1.0", + "nybbles", + "serde", + "smallvec", + "tracing", +] + +[[package]] +name = "alloy-tx-macros" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "333544408503f42d7d3792bfc0f7218b643d968a03d2c0ed383ae558fb4a76d0" +dependencies = [ + "darling 0.21.3", + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anstream" +version = "0.6.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" + +[[package]] +name = "anstyle-parse" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" +dependencies = [ + "windows-sys", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" +dependencies = [ + "anstyle", + "once_cell_polyfill", + "windows-sys", +] + +[[package]] +name = "anyhow" +version = "1.0.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" + +[[package]] +name = "ark-bls12-381" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3df4dcc01ff89867cd86b0da835f23c3f02738353aaee7dde7495af71363b8d5" +dependencies = [ + "ark-ec", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", +] + +[[package]] +name = "ark-bn254" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d69eab57e8d2663efa5c63135b2af4f396d66424f88954c21104125ab6b3e6bc" +dependencies = [ + "ark-ec", + "ark-ff 0.5.0", + "ark-std 0.5.0", +] + +[[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", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "educe", + "fnv", + "hashbrown 0.15.5", + "itertools 0.13.0", + "num-bigint 0.4.6", + "num-integer", + "num-traits", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6" +dependencies = [ + "ark-ff-asm 0.3.0", + "ark-ff-macros 0.3.0", + "ark-serialize 0.3.0", + "ark-std 0.3.0", + "derivative", + "num-bigint 0.4.6", + "num-traits", + "paste", + "rustc_version 0.3.3", + "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 0.10.7", + "itertools 0.10.5", + "num-bigint 0.4.6", + "num-traits", + "paste", + "rustc_version 0.4.1", + "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 0.10.7", + "educe", + "itertools 0.13.0", + "num-bigint 0.4.6", + "num-traits", + "paste", + "zeroize", +] + +[[package]] +name = "ark-ff-asm" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[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.111", +] + +[[package]] +name = "ark-ff-macros" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" +dependencies = [ + "num-bigint 0.4.6", + "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 0.4.6", + "num-traits", + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[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", + "fnv", + "hashbrown 0.15.5", +] + +[[package]] +name = "ark-serialize" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671" +dependencies = [ + "ark-std 0.3.0", + "digest 0.9.0", +] + +[[package]] +name = "ark-serialize" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" +dependencies = [ + "ark-std 0.4.0", + "digest 0.10.7", + "num-bigint 0.4.6", +] + +[[package]] +name = "ark-serialize" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f4d068aaf107ebcd7dfb52bc748f8030e0fc930ac8e360146ca54c1203088f7" +dependencies = [ + "ark-serialize-derive", + "ark-std 0.5.0", + "arrayvec", + "digest 0.10.7", + "num-bigint 0.4.6", +] + +[[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.111", +] + +[[package]] +name = "ark-std" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + +[[package]] +name = "ark-std" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + +[[package]] +name = "ark-std" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +dependencies = [ + "serde", +] + +[[package]] +name = "async-trait" +version = "0.1.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "aurora-engine-modexp" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "518bc5745a6264b5fd7b09dffb9667e400ee9e2bbe18555fac75e1fe9afa0df9" +dependencies = [ + "hex", + "num", +] + +[[package]] +name = "auto_impl" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "base64ct" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e050f626429857a27ddccb31e0aca21356bfa709c04041aefddac081a8f068a" + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bincode" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36eaf5d7b090263e8150820482d5d93cd964a81e4019913c972f4edcc6edb740" +dependencies = [ + "bincode_derive", + "serde", + "unty", +] + +[[package]] +name = "bincode_derive" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf95709a440f45e986983918d0e8a1f30a9b1df04918fc828670606804ac3c09" +dependencies = [ + "virtue", +] + +[[package]] +name = "bit-set" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" + +[[package]] +name = "bitcoin-io" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dee39a0ee5b4095224a0cfc6bf4cc1baf0f9624b96b367e53b66d974e51d953" + +[[package]] +name = "bitcoin_hashes" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26ec84b80c482df901772e931a9a681e26a1b9ee2302edeff23cb30328745c8b" +dependencies = [ + "bitcoin-io", + "hex-conservative", +] + +[[package]] +name = "bitflags" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" +dependencies = [ + "serde_core", +] + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "serde", + "tap", + "wyz", +] + +[[package]] +name = "blake3" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", +] + +[[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 = "bls12_381" +version = "0.8.0" +source = "git+https://github.com/lambdaclass/bls12_381?branch=expose-fp-struct#219174187bd78154cec35b0809799fc2c991a579" +dependencies = [ + "digest 0.10.7", + "ff", + "group", + "pairing", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "blst" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcdb4c7013139a150f9fc55d123186dbfaba0d912817466282c73ac49e71fb45" +dependencies = [ + "cc", + "glob", + "threadpool", + "zeroize", +] + +[[package]] +name = "borsh" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1da5ab77c1437701eeff7c88d968729e7766172279eab0676857b3d63af7a6f" +dependencies = [ + "borsh-derive", + "cfg_aliases", +] + +[[package]] +name = "borsh-derive" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0686c856aa6aac0c4498f936d7d6a02df690f614c03e4d906d1018062b5c5e2c" +dependencies = [ + "once_cell", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "bumpalo" +version = "3.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" + +[[package]] +name = "byte-slice-cast" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" + +[[package]] +name = "bytecheck" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0caa33a2c0edca0419d15ac723dff03f1956f7978329b1e3b5fdaaaed9d3ca8b" +dependencies = [ + "bytecheck_derive", + "ptr_meta", + "rancor", + "simdutf8", +] + +[[package]] +name = "bytecheck_derive" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89385e82b5d1821d2219e0b095efa2cc1f246cbf99080f3be46a1a85c0d392d9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "bytemuck" +version = "1.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" +dependencies = [ + "serde", +] + +[[package]] +name = "c-kzg" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e00bf4b112b07b505472dbefd19e37e53307e2bfed5a79e0cc161d58ccd0e687" +dependencies = [ + "blst", + "cc", + "glob", + "hex", + "libc", + "once_cell", + "serde", +] + +[[package]] +name = "camino" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "276a59bf2b2c967788139340c9f0c5b12d7fd6630315c15c217e559de85d2609" + +[[package]] +name = "cc" +version = "1.2.49" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90583009037521a116abf44494efecd645ba48b6622457080f080b85544e2215" +dependencies = [ + "find-msvc-tools", + "jobserver", + "libc", + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "chrono" +version = "0.4.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" +dependencies = [ + "iana-time-zone", + "num-traits", + "serde", + "windows-link", +] + +[[package]] +name = "clap" +version = "4.5.53" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9e340e012a1bf4935f5282ed1436d1489548e8f72308207ea5df0e23d2d03f8" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.5.53" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d76b5d13eaa18c901fd2f7fca939fefe3a0727a953561fefdf3b2922b8569d00" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", +] + +[[package]] +name = "clap_derive" +version = "4.5.49" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "clap_lex" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d" + +[[package]] +name = "colorchoice" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" + +[[package]] +name = "const-hex" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bb320cac8a0750d7f25280aa97b09c26edfe161164238ecbbb31092b079e735" +dependencies = [ + "cfg-if", + "cpufeatures", + "proptest", + "serde_core", +] + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "const_format" +version = "0.2.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7faa7469a93a566e9ccc1c73fe783b4a65c274c5ace346038dca9c39fe0030ad" +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.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + +[[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 = "convert_case" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "633458d4ef8c78b72454de2d54fd6ab2e60f9e02be22f3c6104cdc8a4e0fceb9" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5eb8a2a1cd12ab0d987a5d5e825195d372001a4094a0376319d5a0ad71c1ba0d" +dependencies = [ + "crc-catalog", +] + +[[package]] +name = "crc-catalog" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" + +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "critical-section" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" + +[[package]] +name = "crossbeam" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1137cd7e7fc0fb5d3c5a8678be38ec56e819125d8d7907411fe24ccb943faca8" +dependencies = [ + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-epoch", + "crossbeam-queue", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" +dependencies = [ + "crossbeam-utils", +] + +[[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-queue" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" +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.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" + +[[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "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.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" +dependencies = [ + "darling_core 0.20.11", + "darling_macro 0.20.11", +] + +[[package]] +name = "darling" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" +dependencies = [ + "darling_core 0.21.3", + "darling_macro 0.21.3", +] + +[[package]] +name = "darling_core" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.111", +] + +[[package]] +name = "darling_core" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "serde", + "strsim", + "syn 2.0.111", +] + +[[package]] +name = "darling_macro" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" +dependencies = [ + "darling_core 0.20.11", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "darling_macro" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" +dependencies = [ + "darling_core 0.21.3", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "datatest-stable" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "833306ca7eec4d95844e65f0d7502db43888c5c1006c6c517e8cf51a27d15431" +dependencies = [ + "camino", + "fancy-regex", + "libtest-mimic", + "walkdir", +] + +[[package]] +name = "der" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +dependencies = [ + "const-oid", + "pem-rfc7468", + "zeroize", +] + +[[package]] +name = "deranged" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" +dependencies = [ + "powerfmt", + "serde_core", +] + +[[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 = "derive-where" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef941ded77d15ca19b40374869ac6000af1c9f2a4c0f3d4c70926287e6364a8f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "derive_more" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" +dependencies = [ + "derive_more-impl 1.0.0", +] + +[[package]] +name = "derive_more" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10b768e943bed7bf2cab53df09f4bc34bfd217cdb57d971e769874c9a6710618" +dependencies = [ + "derive_more-impl 2.1.0", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" +dependencies = [ + "convert_case 0.6.0", + "proc-macro2", + "quote", + "syn 2.0.111", + "unicode-xid", +] + +[[package]] +name = "derive_more-impl" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d286bfdaf75e988b4a78e013ecd79c581e06399ab53fbacd2d916c2f904f30b" +dependencies = [ + "convert_case 0.10.0", + "proc-macro2", + "quote", + "rustc_version 0.4.1", + "syn 2.0.111", + "unicode-xid", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "const-oid", + "crypto-common", + "subtle", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + +[[package]] +name = "dyn-clone" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" + +[[package]] +name = "ecdsa" +version = "0.16.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +dependencies = [ + "der", + "digest 0.10.7", + "elliptic-curve", + "rfc6979", + "serdect", + "signature", + "spki", +] + +[[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.111", +] + +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +dependencies = [ + "serde", +] + +[[package]] +name = "elliptic-curve" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct", + "crypto-bigint", + "digest 0.10.7", + "ff", + "generic-array", + "group", + "pem-rfc7468", + "pkcs8", + "rand_core 0.6.4", + "sec1", + "serdect", + "subtle", + "zeroize", +] + +[[package]] +name = "enum-ordinalize" +version = "4.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a1091a7bb1f8f2c4b28f1fe2cef4980ca2d410a3d727d67ecc3178c9b0800f0" +dependencies = [ + "enum-ordinalize-derive", +] + +[[package]] +name = "enum-ordinalize-derive" +version = "4.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ca9601fb2d62598ee17836250842873a413586e5d7ed88b356e38ddbb0ec631" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "ere-io" +version = "0.0.16" +source = "git+https://github.com/eth-applied-research-group/ere?rev=73a760aa635d355e5cc581777cc7703fdf60a3ac#73a760aa635d355e5cc581777cc7703fdf60a3ac" +dependencies = [ + "rkyv", +] + +[[package]] +name = "ere-platform-trait" +version = "0.0.16" +source = "git+https://github.com/eth-applied-research-group/ere?rev=73a760aa635d355e5cc581777cc7703fdf60a3ac#73a760aa635d355e5cc581777cc7703fdf60a3ac" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "ere-platform-zisk" +version = "0.0.16" +source = "git+https://github.com/eth-applied-research-group/ere?rev=73a760aa635d355e5cc581777cc7703fdf60a3ac#73a760aa635d355e5cc581777cc7703fdf60a3ac" +dependencies = [ + "ere-platform-trait", + "ziskos", +] + +[[package]] +name = "errno" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +dependencies = [ + "libc", + "windows-sys", +] + +[[package]] +name = "escape8259" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5692dd7b5a1978a5aeb0ce83b7655c58ca8efdcb79d21036ea249da95afec2c6" + +[[package]] +name = "ethbloom" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c321610643004cf908ec0f5f2aa0d8f1f8e14b540562a2887a1111ff1ecbf7b" +dependencies = [ + "crunchy", + "fixed-hash", + "impl-rlp", + "impl-serde", + "tiny-keccak", +] + +[[package]] +name = "ethereum-types" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ab15ed80916029f878e0267c3a9f92b67df55e79af370bf66199059ae2b4ee3" +dependencies = [ + "ethbloom", + "fixed-hash", + "impl-rlp", + "impl-serde", + "primitive-types 0.13.1", + "uint 0.10.0", +] + +[[package]] +name = "ethereum_serde_utils" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dc1355dbb41fbbd34ec28d4fb2a57d9a70c67ac3c19f6a5ca4d4a176b9e997a" +dependencies = [ + "alloy-primitives", + "hex", + "serde", + "serde_derive", + "serde_json", +] + +[[package]] +name = "ethereum_ssz" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dcddb2554d19cde19b099fadddde576929d7a4d0c1cd3512d1fd95cf174375c" +dependencies = [ + "alloy-primitives", + "ethereum_serde_utils", + "itertools 0.13.0", + "serde", + "serde_derive", + "smallvec", + "typenum", +] + +[[package]] +name = "ethereum_ssz_derive" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a657b6b3b7e153637dc6bdc6566ad9279d9ee11a15b12cfb24a2e04360637e9f" +dependencies = [ + "darling 0.20.11", + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "ethrex-blockchain" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" +dependencies = [ + "bytes", + "ethrex-common", + "ethrex-crypto", + "ethrex-metrics", + "ethrex-rlp", + "ethrex-storage", + "ethrex-trie", + "ethrex-vm", + "hex", + "rustc-hash", + "thiserror", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "ethrex-common" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" +dependencies = [ + "bytes", + "crc32fast", + "ethereum-types", + "ethrex-crypto", + "ethrex-rlp", + "ethrex-trie", + "hex", + "hex-literal", + "k256", + "kzg-rs", + "lazy_static", + "libc", + "once_cell", + "rayon", + "rkyv", + "rustc-hash", + "serde", + "serde_json", + "sha2", + "sha3", + "thiserror", + "tinyvec", + "tracing", + "url", +] + +[[package]] +name = "ethrex-crypto" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" +dependencies = [ + "kzg-rs", + "thiserror", + "tiny-keccak", +] + +[[package]] +name = "ethrex-guest" +version = "0.1.0" +dependencies = [ + "ere-io", + "ere-platform-trait", + "ethrex-common", + "guest-libs", + "guest_program", + "rkyv", +] + +[[package]] +name = "ethrex-l2-common" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" +dependencies = [ + "bytes", + "ethereum-types", + "ethrex-common", + "ethrex-crypto", + "ethrex-rlp", + "ethrex-storage", + "ethrex-trie", + "ethrex-vm", + "hex", + "k256", + "lambdaworks-crypto", + "rkyv", + "serde", + "serde_with", + "sha3", + "thiserror", + "tracing", +] + +[[package]] +name = "ethrex-levm" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" +dependencies = [ + "ark-bn254", + "ark-ec", + "ark-ff 0.5.0", + "bitvec", + "bls12_381", + "bytes", + "datatest-stable", + "derive_more 1.0.0", + "ethrex-common", + "ethrex-crypto", + "ethrex-rlp", + "k256", + "lambdaworks-math", + "lazy_static", + "malachite", + "p256", + "ripemd", + "rustc-hash", + "serde", + "serde_json", + "sha2", + "sha3", + "strum", + "substrate-bn", + "thiserror", + "walkdir", + "ziskos", +] + +[[package]] +name = "ethrex-metrics" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" +dependencies = [ + "ethrex-common", + "serde", + "serde_json", + "thiserror", + "tracing-subscriber", +] + +[[package]] +name = "ethrex-rlp" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" +dependencies = [ + "bytes", + "ethereum-types", + "hex", + "lazy_static", + "snap", + "thiserror", + "tinyvec", +] + +[[package]] +name = "ethrex-storage" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" +dependencies = [ + "anyhow", + "async-trait", + "bytes", + "ethereum-types", + "ethrex-common", + "ethrex-crypto", + "ethrex-rlp", + "ethrex-trie", + "hex", + "lru", + "qfilter", + "rayon", + "rustc-hash", + "serde", + "serde_json", + "thiserror", + "tokio", + "tracing", +] + +[[package]] +name = "ethrex-threadpool" +version = "0.1.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" +dependencies = [ + "crossbeam", +] + +[[package]] +name = "ethrex-trie" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" +dependencies = [ + "anyhow", + "bytes", + "crossbeam", + "digest 0.10.7", + "ethereum-types", + "ethrex-crypto", + "ethrex-rlp", + "ethrex-threadpool", + "hex", + "lazy_static", + "rkyv", + "rustc-hash", + "serde", + "serde_json", + "smallvec", + "thiserror", + "tracing", +] + +[[package]] +name = "ethrex-vm" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" +dependencies = [ + "bincode 1.3.3", + "bytes", + "derive_more 1.0.0", + "dyn-clone", + "ethereum-types", + "ethrex-common", + "ethrex-crypto", + "ethrex-levm", + "ethrex-rlp", + "ethrex-trie", + "lazy_static", + "rkyv", + "serde", + "thiserror", + "tracing", +] + +[[package]] +name = "ethrex-zisk-stateless-validator" +version = "0.1.0" +dependencies = [ + "ere-platform-zisk", + "ethrex-blockchain", + "ethrex-common", + "ethrex-guest", + "ethrex-vm", + "guest_program", + "rkyv", + "sha2", +] + +[[package]] +name = "fancy-regex" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e24cb5a94bcae1e5408b0effca5cd7172ea3c5755049c5f3af4cd283a165298" +dependencies = [ + "bit-set", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "fastrlp" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", +] + +[[package]] +name = "fastrlp" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce8dba4714ef14b8274c371879b175aa55b16b30f269663f19d576f380018dc4" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", +] + +[[package]] +name = "ff" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" +dependencies = [ + "bitvec", + "byteorder", + "ff_derive", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "ff_derive" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f10d12652036b0e99197587c6ba87a8fc3031986499973c030d8b44fcc151b60" +dependencies = [ + "addchain", + "num-bigint 0.3.3", + "num-integer", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "find-msvc-tools" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844" + +[[package]] +name = "fixed-hash" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" +dependencies = [ + "byteorder", + "rand 0.8.5", + "rustc-hex", + "static_assertions", +] + +[[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.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-core", + "futures-macro", + "futures-task", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "gcd" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d758ba1b47b00caf47f24925c0074ecb20d6dfcffe7f6d53395c0465674841a" + +[[package]] +name = "generic-array" +version = "0.14.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" +dependencies = [ + "typenum", + "version_check", + "zeroize", +] + +[[package]] +name = "getrandom" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasip2", +] + +[[package]] +name = "glob" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" + +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "guest-libs" +version = "0.1.0" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "anyhow", + "ere-io", + "ere-platform-trait", + "ethereum_ssz", + "ethereum_ssz_derive", + "reth-ethereum-primitives", + "reth-primitives-traits", + "reth-stateless", + "serde", + "serde_with", + "sha2", + "thiserror", +] + +[[package]] +name = "guest_program" +version = "8.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1#e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1" +dependencies = [ + "bincode 1.3.3", + "bytes", + "ethrex-blockchain", + "ethrex-common", + "ethrex-crypto", + "ethrex-l2-common", + "ethrex-rlp", + "ethrex-storage", + "ethrex-trie", + "ethrex-vm", + "hex", + "rkyv", + "serde", + "serde_json", + "serde_with", + "thiserror", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "allocator-api2", + "foldhash 0.1.5", +] + +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash 0.2.0", + "serde", + "serde_core", +] + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hex-conservative" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fda06d18ac606267c40c04e41b9947729bf8b9efe74bd4e82b61a5f26a510b9f" +dependencies = [ + "arrayvec", +] + +[[package]] +name = "hex-literal" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "icu_collections" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" + +[[package]] +name = "icu_properties" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" +dependencies = [ + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" + +[[package]] +name = "icu_provider" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" +dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "impl-codec" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" +dependencies = [ + "parity-scale-codec", +] + +[[package]] +name = "impl-codec" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d40b9d5e17727407e55028eafc22b2dc68781786e6d7eb8a21103f5058e3a14" +dependencies = [ + "parity-scale-codec", +] + +[[package]] +name = "impl-rlp" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54ed8ad1f3877f7e775b8cbf30ed1bd3209a95401817f19a0eb4402d13f8cf90" +dependencies = [ + "rlp 0.6.1", +] + +[[package]] +name = "impl-serde" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a143eada6a1ec4aefa5049037a26a6d597bfd64f8c026d07b77133e02b7dd0b" +dependencies = [ + "serde", +] + +[[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.111", +] + +[[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.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ad4bb2b565bca0645f4d68c5c9af97fba094e9791da685bf83cb5f3ce74acf2" +dependencies = [ + "equivalent", + "hashbrown 0.16.1", + "serde", + "serde_core", +] + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" + +[[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.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.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "jobserver" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +dependencies = [ + "getrandom 0.3.4", + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "464a3709c7f55f1f721e5389aa6ea4e3bc6aba669353300af094b29ffbdde1d8" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "k256" +version = "0.13.4" +source = "git+https://github.com/0xPolygonHermez/zisk-patch-elliptic-curves.git?tag=patch-k256-0.13.4-zisk-0.15.0#5b84980888f6c840c7d38d575d79ae32df17085d" +dependencies = [ + "cfg-if", + "ecdsa", + "elliptic-curve", + "once_cell", + "serdect", + "sha2", + "signature", +] + +[[package]] +name = "keccak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "keccak-asm" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "505d1856a39b200489082f90d897c3f07c455563880bc5952e38eabf731c83b6" +dependencies = [ + "digest 0.10.7", + "sha3-asm", +] + +[[package]] +name = "kzg-rs" +version = "0.2.7" +source = "git+https://github.com/0xPolygonHermez/zisk-patch-kzg/?tag=patch-0.2.7-zisk-0.15.0#7b29934400c0af21a63635544e72a4621f88e603" +dependencies = [ + "cfg-if", + "ff", + "hex", + "serde_arrays", + "sha2", + "sp1_bls12_381", + "spin", +] + +[[package]] +name = "lambdaworks-crypto" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58b1a1c1102a5a7fbbda117b79fb3a01e033459c738a3c1642269603484fd1c1" +dependencies = [ + "lambdaworks-math", + "rand 0.8.5", + "rand_chacha 0.3.1", + "serde", + "sha2", + "sha3", +] + +[[package]] +name = "lambdaworks-math" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "018a95aa873eb49896a858dee0d925c33f3978d073c64b08dd4f2c9b35a017c6" +dependencies = [ + "getrandom 0.2.16", + "num-bigint 0.4.6", + "num-traits", + "rand 0.8.5", + "rayon", + "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 = "lib-c" +version = "0.15.0" +source = "git+https://github.com/0xPolygonHermez/zisk.git?tag=v0.15.0#b3ca745b80423c8123dc24f19039865a5bc8b074" + +[[package]] +name = "libc" +version = "0.2.178" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091" + +[[package]] +name = "libm" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" + +[[package]] +name = "libtest-mimic" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5297962ef19edda4ce33aaa484386e0a5b3d7f2f4e037cbeee00503ef6b29d33" +dependencies = [ + "anstream", + "anstyle", + "clap", + "escape8259", +] + +[[package]] +name = "linux-raw-sys" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" + +[[package]] +name = "litemap" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" + +[[package]] +name = "log" +version = "0.4.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" + +[[package]] +name = "lru" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96051b46fc183dc9cd4a223960ef37b9af631b55191852a8274bfef064cda20f" +dependencies = [ + "hashbrown 0.16.1", +] + +[[package]] +name = "macro-string" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b27834086c65ec3f9387b096d66e99f221cf081c2b738042aa252bcd41204e3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "malachite" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec410515e231332b14cd986a475d1c3323bcfa4c7efc038bfa1d5b410b1c57e4" +dependencies = [ + "malachite-base", + "malachite-nz", + "malachite-q", +] + +[[package]] +name = "malachite-base" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c738d3789301e957a8f7519318fcbb1b92bb95863b28f6938ae5a05be6259f34" +dependencies = [ + "hashbrown 0.15.5", + "itertools 0.14.0", + "libm", + "ryu", +] + +[[package]] +name = "malachite-nz" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1707c9a1fa36ce21749b35972bfad17bbf34cf5a7c96897c0491da321e387d3b" +dependencies = [ + "itertools 0.14.0", + "libm", + "malachite-base", + "wide", +] + +[[package]] +name = "malachite-q" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d764801aa4e96bbb69b389dcd03b50075345131cd63ca2e380bca71cc37a3675" +dependencies = [ + "itertools 0.14.0", + "malachite-base", + "malachite-nz", +] + +[[package]] +name = "matchers" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" +dependencies = [ + "regex-automata", +] + +[[package]] +name = "memchr" +version = "2.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" + +[[package]] +name = "modular-bitfield" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a53d79ba8304ac1c4f9eb3b9d281f21f7be9d4626f72ce7df4ad8fbde4f38a74" +dependencies = [ + "modular-bitfield-impl", + "static_assertions", +] + +[[package]] +name = "modular-bitfield-impl" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a7d5f7076603ebc68de2dc6a650ec331a062a13abaa346975be747bbfa4b789" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "munge" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e17401f259eba956ca16491461b6e8f72913a0a114e39736ce404410f915a0c" +dependencies = [ + "munge_macro", +] + +[[package]] +name = "munge_macro" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4568f25ccbd45ab5d5603dc34318c1ec56b117531781260002151b8530a9f931" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "nu-ansi-term" +version = "0.50.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" +dependencies = [ + "windows-sys", +] + +[[package]] +name = "num" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" +dependencies = [ + "num-bigint 0.4.6", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6f7833f2cbf2360a6cfd58cd41a53aa7a90bd4c202f5b1c7dd2ed73c57b2c3" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[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", +] + +[[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-iter" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" +dependencies = [ + "num-bigint 0.4.6", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", + "libm", +] + +[[package]] +name = "num_cpus" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "num_enum" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" +dependencies = [ + "num_enum_derive", + "rustversion", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "nybbles" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c4b5ecbd0beec843101bffe848217f770e8b8da81d8355b7d6e226f2199b3dc" +dependencies = [ + "alloy-rlp", + "cfg-if", + "proptest", + "ruint", + "serde", + "smallvec", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +dependencies = [ + "critical-section", + "portable-atomic", +] + +[[package]] +name = "once_cell_polyfill" +version = "1.70.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" + +[[package]] +name = "op-alloy-consensus" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "726da827358a547be9f1e37c2a756b9e3729cb0350f43408164794b370cad8ae" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "derive_more 2.1.0", + "serde", + "serde_with", + "thiserror", +] + +[[package]] +name = "p256" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" +dependencies = [ + "ecdsa", + "elliptic-curve", + "primeorder", + "sha2", +] + +[[package]] +name = "p3-baby-bear" +version = "0.2.2-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49ecc3edc6fb8186268e05031c26a8b2b1e567957d63adcae1026d55d6bb189b" +dependencies = [ + "num-bigint 0.4.6", + "p3-field", + "p3-mds", + "p3-poseidon2", + "p3-symmetric", + "rand 0.8.5", + "serde", +] + +[[package]] +name = "p3-dft" +version = "0.2.2-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eece7b035978976138622b116fefe6c4cc372b1ce70739c40e7a351a9bb68f1f" +dependencies = [ + "p3-field", + "p3-matrix", + "p3-maybe-rayon", + "p3-util", + "tracing", +] + +[[package]] +name = "p3-field" +version = "0.2.2-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6f0edf3fde4fd0d1455e901fc871c558010ae18db6e68f1b0fa111391855316" +dependencies = [ + "itertools 0.12.1", + "num-bigint 0.4.6", + "num-traits", + "p3-util", + "rand 0.8.5", + "serde", +] + +[[package]] +name = "p3-matrix" +version = "0.2.2-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60961b4d7ffd2e8412ce4e66e213de610356df71cc4e396519c856a664138a27" +dependencies = [ + "itertools 0.12.1", + "p3-field", + "p3-maybe-rayon", + "p3-util", + "rand 0.8.5", + "serde", + "tracing", +] + +[[package]] +name = "p3-maybe-rayon" +version = "0.2.2-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bbe762738c382c9483410f52348ab9de41bb42c391e8171643a71486cf1ef8f" + +[[package]] +name = "p3-mds" +version = "0.2.2-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4127956cc6c783b7d021c5c42d5d89456d5f3bda4a7b165fcc2a3fd4e78fbede" +dependencies = [ + "itertools 0.12.1", + "p3-dft", + "p3-field", + "p3-matrix", + "p3-symmetric", + "p3-util", + "rand 0.8.5", +] + +[[package]] +name = "p3-poseidon2" +version = "0.2.2-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be09497da406a98e89dc05c1ce539eeef29541bad61a5b2108a44ffe94dd0b4c" +dependencies = [ + "gcd", + "p3-field", + "p3-mds", + "p3-symmetric", + "rand 0.8.5", + "serde", +] + +[[package]] +name = "p3-symmetric" +version = "0.2.2-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e7d954033f657d48490344ca4b3dbcc054962a0e92831b736666bb2f5e5820b" +dependencies = [ + "itertools 0.12.1", + "p3-field", + "serde", +] + +[[package]] +name = "p3-util" +version = "0.2.2-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a6ce0b6bee23fd54e05306f6752ae80b0b71a91166553ab39d7899801497237" +dependencies = [ + "serde", +] + +[[package]] +name = "pairing" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81fec4625e73cf41ef4bb6846cafa6d44736525f442ba45e407c4a000a13996f" +dependencies = [ + "group", +] + +[[package]] +name = "parity-scale-codec" +version = "3.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799781ae679d79a948e13d4824a40970bfa500058d245760dd857301059810fa" +dependencies = [ + "arrayvec", + "bitvec", + "byte-slice-cast", + "const_format", + "impl-trait-for-tuples", + "parity-scale-codec-derive", + "rustversion", + "serde", +] + +[[package]] +name = "parity-scale-codec-derive" +version = "3.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34b4653168b563151153c9e4c08ebed57fb8262bebfa79711552fa983c623e7a" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "pem-rfc7468" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +dependencies = [ + "base64ct", +] + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "pest" +version = "2.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbcfd20a6d4eeba40179f05735784ad32bdaef05ce8e8af05f180d45bb3e7e22" +dependencies = [ + "memchr", + "ucd-trie", +] + +[[package]] +name = "phf" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf" +dependencies = [ + "phf_macros", + "phf_shared", + "serde", +] + +[[package]] +name = "phf_generator" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737" +dependencies = [ + "fastrand", + "phf_shared", +] + +[[package]] +name = "phf_macros" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "812f032b54b1e759ccd5f8b6677695d5268c588701effba24601f6932f8269ef" +dependencies = [ + "phf_generator", + "phf_shared", + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "phf_shared" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "pkg-config" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[package]] +name = "portable-atomic" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" + +[[package]] +name = "potential_utf" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +dependencies = [ + "zerovec", +] + +[[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.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "primeorder" +version = "0.13.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" +dependencies = [ + "elliptic-curve", +] + +[[package]] +name = "primitive-types" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" +dependencies = [ + "fixed-hash", + "impl-codec 0.6.0", + "uint 0.9.5", +] + +[[package]] +name = "primitive-types" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d15600a7d856470b7d278b3fe0e311fe28c2526348549f8ef2ff7db3299c87f5" +dependencies = [ + "fixed-hash", + "impl-codec 0.7.1", + "impl-rlp", + "impl-serde", + "uint 0.10.0", +] + +[[package]] +name = "proc-macro-crate" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" +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", + "syn 2.0.111", +] + +[[package]] +name = "proc-macro2" +version = "1.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "proptest" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bee689443a2bd0a16ab0348b52ee43e3b2d1b1f931c8aa5c9f8de4c86fbe8c40" +dependencies = [ + "bit-set", + "bit-vec", + "bitflags", + "num-traits", + "rand 0.9.2", + "rand_chacha 0.9.0", + "rand_xorshift", + "regex-syntax", + "rusty-fork", + "tempfile", + "unarray", +] + +[[package]] +name = "ptr_meta" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b9a0cf95a1196af61d4f1cbdab967179516d9a4a4312af1f31948f8f6224a79" +dependencies = [ + "ptr_meta_derive", +] + +[[package]] +name = "ptr_meta_derive" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7347867d0a7e1208d93b46767be83e2b8f978c3dad35f775ac8d8847551d6fe1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "qfilter" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "746341cd2357c9a4df2d951522b4a8dd1ef553e543119899ad7bf87e938c8fbe" +dependencies = [ + "xxhash-rust", +] + +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + +[[package]] +name = "quote" +version = "1.0.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rancor" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a063ea72381527c2a0561da9c80000ef822bdd7c3241b1cc1b12100e3df081ee" +dependencies = [ + "ptr_meta", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", + "serde", +] + +[[package]] +name = "rand" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", + "serde", +] + +[[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 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.16", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.4", + "serde", +] + +[[package]] +name = "rand_xorshift" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "513962919efc330f829edb2535844d1b912b0fbe2ca165d613e4e8788bb05a5a" +dependencies = [ + "rand_core 0.9.3", +] + +[[package]] +name = "rayon" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "ref-cast" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "regex-automata" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" + +[[package]] +name = "rend" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cadadef317c2f20755a64d7fdc48f9e7178ee6b0e1f7fce33fa60f1d68a276e6" +dependencies = [ + "bytecheck", +] + +[[package]] +name = "reth-chainspec" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=cfde951976bfa9100a6d9f806e06fb539ae25241#cfde951976bfa9100a6d9f806e06fb539ae25241" +dependencies = [ + "alloy-chains", + "alloy-consensus", + "alloy-eips", + "alloy-evm", + "alloy-genesis", + "alloy-primitives", + "alloy-trie", + "auto_impl", + "derive_more 2.1.0", + "reth-ethereum-forks", + "reth-network-peers", + "reth-primitives-traits", + "serde_json", +] + +[[package]] +name = "reth-codecs" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=cfde951976bfa9100a6d9f806e06fb539ae25241#cfde951976bfa9100a6d9f806e06fb539ae25241" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-genesis", + "alloy-primitives", + "alloy-trie", + "bytes", + "modular-bitfield", + "op-alloy-consensus", + "reth-codecs-derive", + "reth-zstd-compressors", + "serde", +] + +[[package]] +name = "reth-codecs-derive" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=cfde951976bfa9100a6d9f806e06fb539ae25241#cfde951976bfa9100a6d9f806e06fb539ae25241" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "reth-consensus" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=cfde951976bfa9100a6d9f806e06fb539ae25241#cfde951976bfa9100a6d9f806e06fb539ae25241" +dependencies = [ + "alloy-consensus", + "alloy-primitives", + "auto_impl", + "reth-execution-types", + "reth-primitives-traits", + "thiserror", +] + +[[package]] +name = "reth-consensus-common" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=cfde951976bfa9100a6d9f806e06fb539ae25241#cfde951976bfa9100a6d9f806e06fb539ae25241" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "reth-chainspec", + "reth-consensus", + "reth-primitives-traits", +] + +[[package]] +name = "reth-db-models" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=cfde951976bfa9100a6d9f806e06fb539ae25241#cfde951976bfa9100a6d9f806e06fb539ae25241" +dependencies = [ + "alloy-eips", + "alloy-primitives", + "reth-primitives-traits", +] + +[[package]] +name = "reth-errors" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=cfde951976bfa9100a6d9f806e06fb539ae25241#cfde951976bfa9100a6d9f806e06fb539ae25241" +dependencies = [ + "reth-consensus", + "reth-execution-errors", + "reth-storage-errors", + "thiserror", +] + +[[package]] +name = "reth-ethereum-consensus" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=cfde951976bfa9100a6d9f806e06fb539ae25241#cfde951976bfa9100a6d9f806e06fb539ae25241" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "reth-chainspec", + "reth-consensus", + "reth-consensus-common", + "reth-execution-types", + "reth-primitives-traits", + "tracing", +] + +[[package]] +name = "reth-ethereum-forks" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=cfde951976bfa9100a6d9f806e06fb539ae25241#cfde951976bfa9100a6d9f806e06fb539ae25241" +dependencies = [ + "alloy-eip2124", + "alloy-hardforks", + "alloy-primitives", + "auto_impl", + "once_cell", +] + +[[package]] +name = "reth-ethereum-primitives" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=cfde951976bfa9100a6d9f806e06fb539ae25241#cfde951976bfa9100a6d9f806e06fb539ae25241" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-eth", + "alloy-serde", + "reth-codecs", + "reth-primitives-traits", + "serde", + "serde_with", +] + +[[package]] +name = "reth-evm" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=cfde951976bfa9100a6d9f806e06fb539ae25241#cfde951976bfa9100a6d9f806e06fb539ae25241" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-evm", + "alloy-primitives", + "auto_impl", + "derive_more 2.1.0", + "futures-util", + "reth-execution-errors", + "reth-execution-types", + "reth-primitives-traits", + "reth-storage-api", + "reth-storage-errors", + "reth-trie-common", + "revm", +] + +[[package]] +name = "reth-execution-errors" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=cfde951976bfa9100a6d9f806e06fb539ae25241#cfde951976bfa9100a6d9f806e06fb539ae25241" +dependencies = [ + "alloy-evm", + "alloy-primitives", + "alloy-rlp", + "nybbles", + "reth-storage-errors", + "thiserror", +] + +[[package]] +name = "reth-execution-types" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=cfde951976bfa9100a6d9f806e06fb539ae25241#cfde951976bfa9100a6d9f806e06fb539ae25241" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-evm", + "alloy-primitives", + "derive_more 2.1.0", + "reth-ethereum-primitives", + "reth-primitives-traits", + "reth-trie-common", + "revm", +] + +[[package]] +name = "reth-network-peers" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=cfde951976bfa9100a6d9f806e06fb539ae25241#cfde951976bfa9100a6d9f806e06fb539ae25241" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "serde_with", + "thiserror", + "url", +] + +[[package]] +name = "reth-primitives-traits" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=cfde951976bfa9100a6d9f806e06fb539ae25241#cfde951976bfa9100a6d9f806e06fb539ae25241" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-genesis", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-eth", + "alloy-trie", + "auto_impl", + "bytes", + "derive_more 2.1.0", + "once_cell", + "op-alloy-consensus", + "reth-codecs", + "revm-bytecode", + "revm-primitives", + "revm-state", + "secp256k1", + "serde", + "serde_with", + "thiserror", +] + +[[package]] +name = "reth-prune-types" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=cfde951976bfa9100a6d9f806e06fb539ae25241#cfde951976bfa9100a6d9f806e06fb539ae25241" +dependencies = [ + "alloy-primitives", + "derive_more 2.1.0", + "strum", + "thiserror", +] + +[[package]] +name = "reth-revm" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=cfde951976bfa9100a6d9f806e06fb539ae25241#cfde951976bfa9100a6d9f806e06fb539ae25241" +dependencies = [ + "alloy-primitives", + "reth-primitives-traits", + "reth-storage-api", + "reth-storage-errors", + "revm", +] + +[[package]] +name = "reth-stages-types" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=cfde951976bfa9100a6d9f806e06fb539ae25241#cfde951976bfa9100a6d9f806e06fb539ae25241" +dependencies = [ + "alloy-primitives", + "reth-trie-common", +] + +[[package]] +name = "reth-stateless" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=cfde951976bfa9100a6d9f806e06fb539ae25241#cfde951976bfa9100a6d9f806e06fb539ae25241" +dependencies = [ + "alloy-consensus", + "alloy-genesis", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-debug", + "alloy-trie", + "itertools 0.14.0", + "reth-chainspec", + "reth-consensus", + "reth-errors", + "reth-ethereum-consensus", + "reth-ethereum-primitives", + "reth-evm", + "reth-primitives-traits", + "reth-revm", + "reth-trie-common", + "reth-trie-sparse", + "serde", + "serde_with", + "thiserror", +] + +[[package]] +name = "reth-static-file-types" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=cfde951976bfa9100a6d9f806e06fb539ae25241#cfde951976bfa9100a6d9f806e06fb539ae25241" +dependencies = [ + "alloy-primitives", + "derive_more 2.1.0", + "serde", + "strum", +] + +[[package]] +name = "reth-storage-api" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=cfde951976bfa9100a6d9f806e06fb539ae25241#cfde951976bfa9100a6d9f806e06fb539ae25241" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rpc-types-engine", + "auto_impl", + "reth-chainspec", + "reth-db-models", + "reth-ethereum-primitives", + "reth-execution-types", + "reth-primitives-traits", + "reth-prune-types", + "reth-stages-types", + "reth-storage-errors", + "reth-trie-common", + "revm-database", +] + +[[package]] +name = "reth-storage-errors" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=cfde951976bfa9100a6d9f806e06fb539ae25241#cfde951976bfa9100a6d9f806e06fb539ae25241" +dependencies = [ + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "derive_more 2.1.0", + "reth-primitives-traits", + "reth-prune-types", + "reth-static-file-types", + "revm-database-interface", + "thiserror", +] + +[[package]] +name = "reth-trie-common" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=cfde951976bfa9100a6d9f806e06fb539ae25241#cfde951976bfa9100a6d9f806e06fb539ae25241" +dependencies = [ + "alloy-consensus", + "alloy-primitives", + "alloy-rlp", + "alloy-trie", + "derive_more 2.1.0", + "itertools 0.14.0", + "nybbles", + "reth-primitives-traits", + "revm-database", +] + +[[package]] +name = "reth-trie-sparse" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=cfde951976bfa9100a6d9f806e06fb539ae25241#cfde951976bfa9100a6d9f806e06fb539ae25241" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "alloy-trie", + "auto_impl", + "reth-execution-errors", + "reth-primitives-traits", + "reth-trie-common", + "smallvec", + "tracing", +] + +[[package]] +name = "reth-zstd-compressors" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=cfde951976bfa9100a6d9f806e06fb539ae25241#cfde951976bfa9100a6d9f806e06fb539ae25241" +dependencies = [ + "zstd", +] + +[[package]] +name = "revm" +version = "33.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c85ed0028f043f87b3c88d4a4cb6f0a76440085523b6a8afe5ff003cf418054" +dependencies = [ + "revm-bytecode", + "revm-context", + "revm-context-interface", + "revm-database", + "revm-database-interface", + "revm-handler", + "revm-inspector", + "revm-interpreter", + "revm-precompile", + "revm-primitives", + "revm-state", +] + +[[package]] +name = "revm-bytecode" +version = "7.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2c6b5e6e8dd1e28a4a60e5f46615d4ef0809111c9e63208e55b5c7058200fb0" +dependencies = [ + "bitvec", + "phf", + "revm-primitives", + "serde", +] + +[[package]] +name = "revm-context" +version = "12.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f038f0c9c723393ac897a5df9140b21cfa98f5753a2cb7d0f28fa430c4118abf" +dependencies = [ + "bitvec", + "cfg-if", + "derive-where", + "revm-bytecode", + "revm-context-interface", + "revm-database-interface", + "revm-primitives", + "revm-state", +] + +[[package]] +name = "revm-context-interface" +version = "13.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "431c9a14e4ef1be41ae503708fd02d974f80ef1f2b6b23b5e402e8d854d1b225" +dependencies = [ + "alloy-eip2930", + "alloy-eip7702", + "auto_impl", + "either", + "revm-database-interface", + "revm-primitives", + "revm-state", +] + +[[package]] +name = "revm-database" +version = "9.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "980d8d6bba78c5dd35b83abbb6585b0b902eb25ea4448ed7bfba6283b0337191" +dependencies = [ + "revm-bytecode", + "revm-database-interface", + "revm-primitives", + "revm-state", +] + +[[package]] +name = "revm-database-interface" +version = "8.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cce03e3780287b07abe58faf4a7f5d8be7e81321f93ccf3343c8f7755602bae" +dependencies = [ + "auto_impl", + "either", + "revm-primitives", + "revm-state", +] + +[[package]] +name = "revm-handler" +version = "14.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d44f8f6dbeec3fecf9fe55f78ef0a758bdd92ea46cd4f1ca6e2a946b32c367f3" +dependencies = [ + "auto_impl", + "derive-where", + "revm-bytecode", + "revm-context", + "revm-context-interface", + "revm-database-interface", + "revm-interpreter", + "revm-precompile", + "revm-primitives", + "revm-state", +] + +[[package]] +name = "revm-inspector" +version = "14.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5617e49216ce1ca6c8826bcead0386bc84f49359ef67cde6d189961735659f93" +dependencies = [ + "auto_impl", + "either", + "revm-context", + "revm-database-interface", + "revm-handler", + "revm-interpreter", + "revm-primitives", + "revm-state", +] + +[[package]] +name = "revm-interpreter" +version = "31.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26ec36405f7477b9dccdc6caa3be19adf5662a7a0dffa6270cdb13a090c077e5" +dependencies = [ + "revm-bytecode", + "revm-context-interface", + "revm-primitives", + "revm-state", +] + +[[package]] +name = "revm-precompile" +version = "31.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a62958af953cc4043e93b5be9b8497df84cc3bd612b865c49a7a7dfa26a84e2" +dependencies = [ + "ark-bls12-381", + "ark-bn254", + "ark-ec", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "arrayref", + "aurora-engine-modexp", + "cfg-if", + "k256", + "p256", + "revm-primitives", + "ripemd", + "sha2", +] + +[[package]] +name = "revm-primitives" +version = "21.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29e161db429d465c09ba9cbff0df49e31049fe6b549e28eb0b7bd642fcbd4412" +dependencies = [ + "alloy-primitives", + "num_enum", + "once_cell", + "serde", +] + +[[package]] +name = "revm-state" +version = "8.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d8be953b7e374dbdea0773cf360debed8df394ea8d82a8b240a6b5da37592fc" +dependencies = [ + "bitflags", + "revm-bytecode", + "revm-primitives", + "serde", +] + +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac", + "subtle", +] + +[[package]] +name = "ripemd" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "rkyv" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35a640b26f007713818e9a9b65d34da1cf58538207b052916a83d80e43f3ffa4" +dependencies = [ + "bytecheck", + "bytes", + "hashbrown 0.15.5", + "indexmap 2.12.1", + "munge", + "ptr_meta", + "rancor", + "rend", + "rkyv_derive", + "tinyvec", + "uuid", +] + +[[package]] +name = "rkyv_derive" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd83f5f173ff41e00337d97f6572e416d022ef8a19f371817259ae960324c482" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "rlp" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" +dependencies = [ + "bytes", + "rustc-hex", +] + +[[package]] +name = "rlp" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa24e92bb2a83198bb76d661a71df9f7076b8c420b8696e4d3d97d50d94479e3" +dependencies = [ + "bytes", + "rustc-hex", +] + +[[package]] +name = "ruint" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a68df0380e5c9d20ce49534f292a36a7514ae21350726efe1865bdb1fa91d278" +dependencies = [ + "alloy-rlp", + "ark-ff 0.3.0", + "ark-ff 0.4.2", + "ark-ff 0.5.0", + "bytes", + "fastrlp 0.3.1", + "fastrlp 0.4.0", + "num-bigint 0.4.6", + "num-integer", + "num-traits", + "parity-scale-codec", + "primitive-types 0.12.2", + "proptest", + "rand 0.8.5", + "rand 0.9.2", + "rlp 0.5.2", + "ruint-macro", + "serde_core", + "valuable", + "zeroize", +] + +[[package]] +name = "ruint-macro" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" + +[[package]] +name = "rustc-hash" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" + +[[package]] +name = "rustc-hex" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" + +[[package]] +name = "rustc_version" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" +dependencies = [ + "semver 0.11.0", +] + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver 1.0.27", +] + +[[package]] +name = "rustix" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys", + "windows-sys", +] + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "rusty-fork" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc6bf79ff24e648f6da1f8d1f011e9cac26491b619e6b9280f2b47f1774e6ee2" +dependencies = [ + "fnv", + "quick-error", + "tempfile", + "wait-timeout", +] + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "safe_arch" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96b02de82ddbe1b636e6170c21be622223aea188ef2e139be0a5b219ec215323" +dependencies = [ + "bytemuck", +] + +[[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.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9558e172d4e8533736ba97870c4b2cd63f84b382a3d6eb063da41b91cce17289" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct", + "der", + "generic-array", + "pkcs8", + "serdect", + "subtle", + "zeroize", +] + +[[package]] +name = "secp256k1" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b50c5943d326858130af85e049f2661ba3c78b26589b8ab98e65e80ae44a1252" +dependencies = [ + "bitcoin_hashes", + "rand 0.8.5", + "secp256k1-sys", + "serde", +] + +[[package]] +name = "secp256k1-sys" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4387882333d3aa8cb20530a17c69a3752e97837832f34f6dccc760e715001d9" +dependencies = [ + "cc", +] + +[[package]] +name = "semver" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver" +version = "1.0.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" + +[[package]] +name = "semver-parser" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9900206b54a3527fdc7b8a938bffd94a568bac4f4aa8113b209df75a09c0dec2" +dependencies = [ + "pest", +] + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_arrays" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94a16b99c5ea4fe3daccd14853ad260ec00ea043b2708d1fd1da3106dcd8d9df" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "serde_json" +version = "1.0.145" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", + "serde_core", +] + +[[package]] +name = "serde_with" +version = "3.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fa237f2807440d238e0364a218270b98f767a00d3dada77b1c53ae88940e2e7" +dependencies = [ + "base64", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.12.1", + "schemars 0.9.0", + "schemars 1.1.0", + "serde_core", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52a8e3ca0ca629121f70ab50f95249e5a6f925cc0f6ffe8256c45b728875706c" +dependencies = [ + "darling 0.21.3", + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "serdect" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a84f14a19e9a014bb9f4512488d9829a68e04ecabffb0f9904cd1ace94598177" +dependencies = [ + "base16ct", + "serde", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "git+https://github.com/0xPolygonHermez/zisk-patch-hashes.git?tag=patch-sha2-0.10.9-zisk-0.15.0#ee286eaa676b783823d8a07d01b43787fe12bf4a" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "git+https://github.com/0xPolygonHermez/zisk-patch-hashes.git?tag=patch-sha3-0.10.8-zisk-0.15.0#08098df5827b672d604e2dc440446b86064b99f2" +dependencies = [ + "digest 0.10.7", + "keccak", +] + +[[package]] +name = "sha3-asm" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28efc5e327c837aa837c59eae585fc250715ef939ac32881bcc11677cd02d46" +dependencies = [ + "cc", + "cfg-if", +] + +[[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 = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest 0.10.7", + "rand_core 0.6.4", +] + +[[package]] +name = "simdutf8" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" + +[[package]] +name = "siphasher" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" + +[[package]] +name = "slab" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +dependencies = [ + "serde", +] + +[[package]] +name = "snap" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b6b67fb9a61334225b5b790716f609cd58395f895b3fe8b328786812a40bc3b" + +[[package]] +name = "sp1-lib" +version = "4.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e166e94b13146c65de433cf29acc1030f021414fbebfc24cd4eeaeb787ba3443" +dependencies = [ + "bincode 1.3.3", + "serde", + "sp1-primitives", +] + +[[package]] +name = "sp1-primitives" +version = "4.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a85ffe9606bd2cc93575ce608f063ca08521cee9bdebf611914c5b2d90d7412" +dependencies = [ + "bincode 1.3.3", + "blake3", + "cfg-if", + "hex", + "lazy_static", + "num-bigint 0.4.6", + "p3-baby-bear", + "p3-field", + "p3-poseidon2", + "p3-symmetric", + "serde", + "sha2", +] + +[[package]] +name = "sp1_bls12_381" +version = "0.8.0-sp1-5.0.0" +source = "git+https://github.com/0xPolygonHermez/zisk-patch-bls12-381?tag=patch-0.8.0-zisk-0.15.0#83ad5c65caf7af3f8da3ea8cd3754ef2847290ad" +dependencies = [ + "cfg-if", + "ff", + "group", + "pairing", + "rand_core 0.6.4", + "sp1-lib", + "subtle", +] + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "strum" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "substrate-bn" +version = "0.6.0" +source = "git+https://github.com/0xPolygonHermez/zisk-patch-bn.git?tag=patch-0.6.0-zisk-0.15.0#7d408643bf033c427826124436fc1b3141ef7425" +dependencies = [ + "byteorder", + "crunchy", + "lazy_static", + "rand 0.8.5", + "rustc-hex", +] + +[[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.111" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn-solidity" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff790eb176cc81bb8936aed0f7b9f14fc4670069a2d371b3e3b0ecce908b2cb3" +dependencies = [ + "paste", + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "tempfile" +version = "3.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" +dependencies = [ + "fastrand", + "getrandom 0.3.4", + "once_cell", + "rustix", + "windows-sys", +] + +[[package]] +name = "thiserror" +version = "2.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "thread_local" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "threadpool" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" +dependencies = [ + "num_cpus", +] + +[[package]] +name = "time" +version = "0.3.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" + +[[package]] +name = "time-macros" +version = "0.2.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "git+https://github.com/0xPolygonHermez/zisk-patch-tiny-keccak/?tag=patch-2.0.2-zisk-0.15.0#a5cb98ca4d9d390b39b10c9e81a061fd830aea35" +dependencies = [ + "cfg-if", + "crunchy", +] + +[[package]] +name = "tinystr" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tinyvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" +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 = "tokio" +version = "1.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" +dependencies = [ + "pin-project-lite", +] + +[[package]] +name = "tokio-util" +version = "0.7.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "futures-util", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml_datetime" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_edit" +version = "0.23.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d7cbc3b4b49633d57a0509303158ca50de80ae32c265093b24c414705807832" +dependencies = [ + "indexmap 2.12.1", + "toml_datetime", + "toml_parser", + "winnow", +] + +[[package]] +name = "toml_parser" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" +dependencies = [ + "winnow", +] + +[[package]] +name = "tracing" +version = "0.1.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d15d90a0b5c19378952d479dc858407149d7bb45a14de0142f6c534b16fc647" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "tracing-core" +version = "0.1.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a04e24fab5c89c6a36eb8558c9656f30d81de51dfa4d3b45f26b21d61fa0a6c" +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-subscriber" +version = "0.3.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex-automata", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "typenum" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" + +[[package]] +name = "ucd-trie" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" + +[[package]] +name = "uint" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + +[[package]] +name = "uint" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "909988d098b2f738727b161a106cfc7cab00c539c2687a8836f8e565976fb53e" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + +[[package]] +name = "unarray" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" + +[[package]] +name = "unicode-ident" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" + +[[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 = "unty" +version = "0.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d49784317cd0d1ee7ec5c716dd598ec5b4483ea832a2dced265471cc0f690ae" + +[[package]] +name = "url" +version = "2.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[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 = "uuid" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2e054861b4bd027cd373e18e8d8d8e6548085000e41290d95ce0c373a654b4a" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "valuable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "virtue" +version = "0.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "051eb1abcf10076295e815102942cc58f9d5e3b4560e46e53c21e8ff6f3af7b1" + +[[package]] +name = "wait-timeout" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ac3b126d3914f9849036f826e054cbabdc8519970b8998ddaf3b5bd3c65f11" +dependencies = [ + "libc", +] + +[[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.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasip2" +version = "1.0.1+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d759f433fa64a2d763d1340820e46e111a7a5ab75f993d1852d70b03dbb80fd" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48cb0d2638f8baedbc542ed444afc0644a29166f1595371af4fecf8ce1e7eeb3" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cefb59d5cd5f92d9dcf80e4683949f15ca4b511f4ac0a6e14d4e1ac60c6ecd40" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn 2.0.111", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbc538057e648b67f72a982e708d485b2efa771e1ac05fec311f9f63e5800db4" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "wide" +version = "0.7.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce5da8ecb62bcd8ec8b7ea19f69a51275e91299be594ea5cc6ef7819e16cd03" +dependencies = [ + "bytemuck", + "safe_arch", +] + +[[package]] +name = "winapi-util" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" +dependencies = [ + "windows-sys", +] + +[[package]] +name = "windows-core" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-implement" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "windows-interface" +version = "0.59.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-result" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", +] + +[[package]] +name = "winnow" +version = "0.7.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" +dependencies = [ + "memchr", +] + +[[package]] +name = "wit-bindgen" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" + +[[package]] +name = "writeable" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "xxhash-rust" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdd20c5420375476fbd4394763288da7eb0cc0b8c11deed431a91562af7335d3" + +[[package]] +name = "yoke" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" +dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", + "synstructure", +] + +[[package]] +name = "zerocopy" +version = "0.8.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd74ec98b9250adb3ca554bdde269adf631549f51d8a8f8f0a10b50f1cb298c3" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8a8d209fdf45cf5138cbb5a506f6b52522a25afccc534d1475dad8e31105c6a" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +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.111", +] + +[[package]] +name = "zerotrie" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "ziskos" +version = "0.15.0" +source = "git+https://github.com/0xPolygonHermez/zisk.git?tag=v0.15.0#b3ca745b80423c8123dc24f19039865a5bc8b074" +dependencies = [ + "bincode 2.0.1", + "cfg-if", + "getrandom 0.2.16", + "lazy_static", + "lib-c", + "num-bigint 0.4.6", + "num-integer", + "num-traits", + "rand 0.8.5", + "serde", + "static_assertions", + "tiny-keccak", +] + +[[package]] +name = "zstd" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "7.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d" +dependencies = [ + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.16+zstd.1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/ere-guests/stateless-validator/ethrex/zisk/Cargo.toml b/ere-guests/stateless-validator/ethrex/zisk/Cargo.toml new file mode 100644 index 00000000..2a485dd7 --- /dev/null +++ b/ere-guests/stateless-validator/ethrex/zisk/Cargo.toml @@ -0,0 +1,35 @@ +[package] +version = "0.1.0" +name = "ethrex-zisk-stateless-validator" +edition = "2024" + +[workspace] + +[dependencies] +ethrex-guest = { path = "../guest", features = ["std"] } +ere-platform-zisk = { git = "https://github.com/NethermindEth/ere", rev = "b5a5624115577e1c9df0e0070a60b85bd200e2f2", default-features = false } +sha2 = "0.10.9" +rkyv = { version = "0.8.10", features = ["std", "unaligned"] } + +guest_program = { git = "https://github.com/lambdaclass/ethrex.git", rev = "e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1", default-features = false } +ethrex-vm = { git = "https://github.com/lambdaclass/ethrex.git", rev = "e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1", default-features = false, features = [ + "zisk", +] } +ethrex-common = { git = "https://github.com/lambdaclass/ethrex.git", rev = "e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1", default-features = false, features = [ + "zisk", +] } +ethrex-blockchain = { git = "https://github.com/lambdaclass/ethrex.git", rev = "e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1", default-features = false, features = [ + "zisk", +] } + +[patch.crates-io] +sha2 = { git = "https://github.com/0xPolygonHermez/zisk-patch-hashes.git", tag = "patch-sha2-0.10.9-zisk-0.15.0" } +sha3 = { git = "https://github.com/0xPolygonHermez/zisk-patch-hashes.git", tag = "patch-sha3-0.10.8-zisk-0.15.0" } +k256 = { git = "https://github.com/0xPolygonHermez/zisk-patch-elliptic-curves.git", tag = "patch-k256-0.13.4-zisk-0.15.0" } +substrate-bn = { git = "https://github.com/0xPolygonHermez/zisk-patch-bn.git", tag = "patch-0.6.0-zisk-0.15.0" } +sp1_bls12_381 = { git = "https://github.com/0xPolygonHermez/zisk-patch-bls12-381", tag = "patch-0.8.0-zisk-0.15.0" } +tiny-keccak = { git = "https://github.com/0xPolygonHermez/zisk-patch-tiny-keccak/", tag = "patch-2.0.2-zisk-0.15.0" } +kzg-rs = { git = "https://github.com/0xPolygonHermez/zisk-patch-kzg/", tag = "patch-0.2.7-zisk-0.15.0" } + +[features] +l2 = ["guest_program/l2"] diff --git a/ere-guests/stateless-validator/ethrex/zisk/src/main.rs b/ere-guests/stateless-validator/ethrex/zisk/src/main.rs new file mode 100644 index 00000000..ccf054e4 --- /dev/null +++ b/ere-guests/stateless-validator/ethrex/zisk/src/main.rs @@ -0,0 +1,10 @@ +#![no_main] + +use ere_platform_zisk::{ziskos, ZiskPlatform}; +use ethrex_guest::guest::{EthrexStatelessValidatorGuest, Guest}; + +ziskos::entrypoint!(main); + +pub fn main() { + EthrexStatelessValidatorGuest::run_output_sha256::(); +} diff --git a/ere-guests/stateless-validator/reth/openvm/Cargo.toml b/ere-guests/stateless-validator/reth/openvm/Cargo.toml index 458776f4..c3934ee3 100644 --- a/ere-guests/stateless-validator/reth/openvm/Cargo.toml +++ b/ere-guests/stateless-validator/reth/openvm/Cargo.toml @@ -8,13 +8,24 @@ license = "MIT OR Apache-2.0" [dependencies] ere-platform-openvm = { workspace = true, features = ["std"] } openvm = { workspace = true, features = ["std"] } -openvm-algebra-guest.workspace = true -openvm-ecc-guest.workspace = true -openvm-revm-crypto.workspace = true +openvm-algebra-guest = { workspace = true } +openvm-ecc-guest = { workspace = true } +openvm-k256 = { workspace = true } +openvm-keccak256 = { workspace = true } +openvm-kzg = { workspace = true, features = ["use-intrinsics"] } +openvm-p256 = { workspace = true } +openvm-pairing = { workspace = true, features = ["bn254", "bls12_381"] } +openvm-sha2 = { workspace = true } guest-libs.workspace = true reth-guest = { workspace = true, default-features = true } +alloy-consensus = { workspace = true, features = ["crypto-backend"] } +alloy-primitives = { workspace = true, features = ["native-keccak", "map-foldhash"] } + +revm.workspace = true +revm-primitives = { workspace = true, features = ["hashbrown"] } + reth-stateless.workspace = true reth-ethereum-primitives = { workspace = true, features = [ "serde", diff --git a/ere-guests/stateless-validator/reth/openvm/src/main.rs b/ere-guests/stateless-validator/reth/openvm/src/main.rs index e519c524..24c31030 100644 --- a/ere-guests/stateless-validator/reth/openvm/src/main.rs +++ b/ere-guests/stateless-validator/reth/openvm/src/main.rs @@ -3,6 +3,8 @@ use ere_platform_openvm::OpenVMPlatform; use reth_guest::guest::{Guest, RethStatelessValidatorGuest}; +mod openvm_revm_crypto; + openvm::init!(); /// Entry point. diff --git a/ere-guests/stateless-validator/reth/openvm/src/openvm_revm_crypto.rs b/ere-guests/stateless-validator/reth/openvm/src/openvm_revm_crypto.rs new file mode 100644 index 00000000..8af208f4 --- /dev/null +++ b/ere-guests/stateless-validator/reth/openvm/src/openvm_revm_crypto.rs @@ -0,0 +1,284 @@ +// Copied from https://github.com/axiom-crypto/openvm-reth-benchmark/blob/openvm-v1.4.1-reth-1.8.3/crates/revm-crypto/src/lib.rs + +//! OpenVM Crypto Implementation for REVM +//! +//! This module provides OpenVM-optimized implementations of cryptographic operations +//! for both transaction validation (via Alloy crypto provider) and precompile execution. + +use alloy_consensus::crypto::{ + backend::{install_default_provider, CryptoProvider}, + RecoveryError, +}; +use alloy_primitives::Address; +use openvm_ecc_guest::{ + algebra::IntMod, + weierstrass::{IntrinsicCurve, WeierstrassPoint}, + AffinePoint, +}; +use openvm_k256::ecdsa::{RecoveryId, Signature, VerifyingKey}; +use openvm_keccak256::keccak256; +use openvm_kzg::{Bytes32, Bytes48, KzgProof}; +#[allow(unused_imports, clippy::single_component_path_imports)] +use openvm_p256; // ensure this is linked in for the standard OpenVM config +use openvm_pairing::{ + bn254::{Bn254, Fp, Fp2, G1Affine, G2Affine, Scalar}, + PairingCheck, +}; +use revm::{ + install_crypto, + precompile::{Crypto, PrecompileError}, +}; +use std::{sync::Arc, vec::Vec}; + +// BN254 constants +const FQ_LEN: usize = 32; +const G1_LEN: usize = 64; +const G2_LEN: usize = 128; +/// SCALAR_LEN specifies the number of bytes needed to represent an Fr element. +/// This is an element in the scalar field of BN254. +const SCALAR_LEN: usize = 32; + +/// OpenVM k256 backend for Alloy crypto operations (transaction validation) +#[derive(Debug, Default)] +struct OpenVmK256Provider; + +impl CryptoProvider for OpenVmK256Provider { + fn recover_signer_unchecked( + &self, + sig: &[u8; 65], + msg: &[u8; 32], + ) -> Result { + // Extract components: sig[0..32]=r, sig[32..64]=s, sig[64]=recovery_id + // Parse signature using OpenVM k256 + let mut signature = Signature::from_slice(&sig[..64]).map_err(|_| RecoveryError::new())?; + + // Normalize signature if needed + let mut recid = sig[64]; + if let Some(sig_normalized) = signature.normalize_s() { + signature = sig_normalized; + recid ^= 1; + } + + // Create recovery ID + let recovery_id = RecoveryId::from_byte(recid).ok_or(RecoveryError::new())?; + + // Recover public key using OpenVM + let recovered_key = + VerifyingKey::recover_from_prehash_noverify(msg, &signature.to_bytes(), recovery_id) + .map_err(|_| RecoveryError::new())?; + + // Get public key coordinates + let public_key = recovered_key.as_affine(); + let mut encoded_pubkey = [0u8; 64]; + encoded_pubkey[..32].copy_from_slice(&WeierstrassPoint::x(public_key).to_be_bytes()); + encoded_pubkey[32..].copy_from_slice(&WeierstrassPoint::y(public_key).to_be_bytes()); + + // Hash to get Ethereum address + let pubkey_hash = keccak256(&encoded_pubkey); + let address_bytes = &pubkey_hash[12..32]; // Last 20 bytes + + Ok(Address::from_slice(address_bytes)) + } +} + +/// OpenVM custom crypto implementation for faster precompiles +#[derive(Debug, Default)] +struct OpenVmCrypto; + +impl Crypto for OpenVmCrypto { + /// Custom SHA-256 implementation with openvm optimization + fn sha256(&self, input: &[u8]) -> [u8; 32] { + openvm_sha2::sha256(input) + } + + /// Custom BN254 G1 addition with openvm optimization + fn bn254_g1_add(&self, p1_bytes: &[u8], p2_bytes: &[u8]) -> Result<[u8; 64], PrecompileError> { + let p1 = read_g1_point(p1_bytes)?; + let p2 = read_g1_point(p2_bytes)?; + let result = p1 + p2; + Ok(encode_g1_point(result)) + } + + /// Custom BN254 G1 scalar multiplication with openvm optimization + fn bn254_g1_mul( + &self, + point_bytes: &[u8], + scalar_bytes: &[u8], + ) -> Result<[u8; 64], PrecompileError> { + let p = read_g1_point(point_bytes)?; + let s = read_scalar(scalar_bytes); + let result = Bn254::msm(&[s], &[p]); + Ok(encode_g1_point(result)) + } + + /// Custom BN254 pairing check with openvm optimization + fn bn254_pairing_check(&self, pairs: &[(&[u8], &[u8])]) -> Result { + if pairs.is_empty() { + return Ok(true); + } + let mut g1_points = Vec::with_capacity(pairs.len()); + let mut g2_points = Vec::with_capacity(pairs.len()); + + for (g1_bytes, g2_bytes) in pairs { + let g1 = read_g1_point(g1_bytes)?; + let g2 = read_g2_point(g2_bytes)?; + + let (g1_x, g1_y) = g1.into_coords(); + let g1 = AffinePoint::new(g1_x, g1_y); + + let (g2_x, g2_y) = g2.into_coords(); + let g2 = AffinePoint::new(g2_x, g2_y); + + g1_points.push(g1); + g2_points.push(g2); + } + + let pairing_result = Bn254::pairing_check(&g1_points, &g2_points).is_ok(); + Ok(pairing_result) + } + + /// Custom secp256k1 ECDSA signature recovery with openvm optimization + fn secp256k1_ecrecover( + &self, + sig_bytes: &[u8; 64], + mut recid: u8, + msg_hash: &[u8; 32], + ) -> Result<[u8; 32], PrecompileError> { + let mut sig = Signature::from_slice(sig_bytes) + .map_err(|_| PrecompileError::other("Invalid signature format"))?; + + if let Some(sig_normalized) = sig.normalize_s() { + sig = sig_normalized; + recid ^= 1; + } + + let recovery_id = RecoveryId::from_byte(recid) + .ok_or_else(|| PrecompileError::other("Invalid recovery ID"))?; + + let recovered_key = + VerifyingKey::recover_from_prehash_noverify(msg_hash, &sig.to_bytes(), recovery_id) + .map_err(|_| PrecompileError::other("Key recovery failed"))?; + + let public_key = recovered_key.as_affine(); + let mut encoded_pubkey = [0u8; 64]; + encoded_pubkey[..32].copy_from_slice(&WeierstrassPoint::x(public_key).to_be_bytes()); + encoded_pubkey[32..].copy_from_slice(&WeierstrassPoint::y(public_key).to_be_bytes()); + + let pubkey_hash = keccak256(&encoded_pubkey); + let mut address = [0u8; 32]; + address[12..].copy_from_slice(&pubkey_hash[12..]); + + Ok(address) + } + + /// Custom KZG point evaluation with configurable backends + fn verify_kzg_proof( + &self, + z: &[u8; 32], + y: &[u8; 32], + commitment: &[u8; 48], + proof: &[u8; 48], + ) -> Result<(), PrecompileError> { + let env = openvm_kzg::EnvKzgSettings::default(); + let kzg_settings = env.get(); + + let commitment_bytes = Bytes48::from_slice(commitment) + .map_err(|_| PrecompileError::other("invalid commitment bytes"))?; + let z_bytes = + Bytes32::from_slice(z).map_err(|_| PrecompileError::other("invalid z bytes"))?; + let y_bytes = + Bytes32::from_slice(y).map_err(|_| PrecompileError::other("invalid y bytes"))?; + let proof_bytes = Bytes48::from_slice(proof) + .map_err(|_| PrecompileError::other("invalid proof bytes"))?; + + KzgProof::verify_kzg_proof( + &commitment_bytes, + &z_bytes, + &y_bytes, + &proof_bytes, + kzg_settings, + ) + .map_err(|_| PrecompileError::other("openvm kzg proof verification failed"))?; + Ok(()) + } +} + +/// Install OpenVM crypto implementations globally +pub fn install_openvm_crypto() -> Result> { + // Install OpenVM k256 provider for Alloy (transaction validation) + install_default_provider(Arc::new(OpenVmK256Provider))?; + + // Install OpenVM crypto for REVM precompiles + let installed = install_crypto(OpenVmCrypto); + + Ok(installed) +} + +// Helper functions for BN254 operations + +#[inline] +fn read_fq(input: &[u8]) -> Result { + if input.len() < FQ_LEN { + Err(PrecompileError::Bn254FieldPointNotAMember) + } else { + Fp::from_be_bytes(&input[..FQ_LEN]).ok_or(PrecompileError::Bn254FieldPointNotAMember) + } +} + +#[inline] +fn read_fq2(input: &[u8]) -> Result { + let y = read_fq(&input[..FQ_LEN])?; + let x = read_fq(&input[FQ_LEN..FQ_LEN * 2])?; + Ok(Fp2::new(x, y)) +} + +#[inline] +fn read_g1_point(input: &[u8]) -> Result { + if input.len() != G1_LEN { + return Err(PrecompileError::Bn254PairLength); + } + let px = read_fq(&input[0..FQ_LEN])?; + let py = read_fq(&input[FQ_LEN..G1_LEN])?; + G1Affine::from_xy(px, py).ok_or(PrecompileError::Bn254AffineGFailedToCreate) +} + +#[inline] +fn read_g2_point(input: &[u8]) -> Result { + if input.len() != G2_LEN { + return Err(PrecompileError::Bn254PairLength); + } + let c0 = read_fq2(&input[0..G1_LEN])?; + let c1 = read_fq2(&input[G1_LEN..G2_LEN])?; + G2Affine::from_xy(c0, c1).ok_or(PrecompileError::Bn254AffineGFailedToCreate) +} + +#[inline] +fn encode_g1_point(point: G1Affine) -> [u8; G1_LEN] { + let mut output = [0u8; G1_LEN]; + + let x_bytes: &[u8] = point.x().as_le_bytes(); + let y_bytes: &[u8] = point.y().as_le_bytes(); + for i in 0..FQ_LEN { + output[i] = x_bytes[FQ_LEN - 1 - i]; + output[i + FQ_LEN] = y_bytes[FQ_LEN - 1 - i]; + } + output +} + +/// Reads a scalar from the input slice +/// +/// Note: The scalar does not need to be canonical. +/// +/// # Panics +/// +/// If `input.len()` is not equal to [`SCALAR_LEN`]. +#[inline] +fn read_scalar(input: &[u8]) -> Scalar { + assert_eq!( + input.len(), + SCALAR_LEN, + "unexpected scalar length. got {}, expected {SCALAR_LEN}", + input.len() + ); + Scalar::from_be_bytes_unchecked(input) +} diff --git a/precompile-patches/zisk.toml b/precompile-patches/zisk.toml index d35a0643..089dfb2f 100644 --- a/precompile-patches/zisk.toml +++ b/precompile-patches/zisk.toml @@ -1,6 +1,15 @@ # Copied from https://github.com/0xPolygonHermez/zisk-eth-client/blob/main/bin/client/Cargo.toml +# +# Note: sp1_bls12_381 does not apply since revm doesn't use kzg-rs anymore. For BLS12831 Pectra precompiles, +# revm uses ark-bls12-381. [patch.crates-io] -sha2 = { git = "https://github.com/0xPolygonHermez/zisk-patch-hashes.git", tag = "patch-sha2-0.10.9-zisk-0.14.0" } -sha3 = { git = "https://github.com/0xPolygonHermez/zisk-patch-hashes.git", tag = "patch-sha3-0.10.8-zisk-0.14.0" } -k256 = { git = "https://github.com/0xPolygonHermez/zisk-patch-elliptic-curves.git", tag = "patch-k256-0.13.4-zisk-0.14.0" } -bn = { git = "https://github.com/0xPolygonHermez/zisk-patch-bn.git", tag = "patch-0.6.0-zisk-0.14.0", package = "substrate-bn" } +sha2 = { git = "https://github.com/0xPolygonHermez/zisk-patch-hashes.git", tag = "patch-sha2-0.10.9-zisk-0.15.0" } +sha3 = { git = "https://github.com/0xPolygonHermez/zisk-patch-hashes.git", tag = "patch-sha3-0.10.8-zisk-0.15.0" } +k256 = { git = "https://github.com/0xPolygonHermez/zisk-patch-elliptic-curves.git", tag = "patch-k256-0.13.4-zisk-0.15.0" } +substrate-bn = { git = "https://github.com/0xPolygonHermez/zisk-patch-bn.git", tag = "patch-0.6.0-zisk-0.15.0" } +ark-bls12-381 = { git = "https://github.com/0xPolygonHermez/zisk-patch-ark-algebra.git", tag = "patch-0.5.0-zisk-0.15.0" } +ark-ec = { git = "https://github.com/0xPolygonHermez/zisk-patch-ark-algebra.git", tag = "patch-0.5.0-zisk-0.15.0" } +ark-ff = { git = "https://github.com/0xPolygonHermez/zisk-patch-ark-algebra.git", tag = "patch-0.5.0-zisk-0.15.0" } +ark-bn254 = { git = "https://github.com/0xPolygonHermez/zisk-patch-ark-algebra.git", tag = "patch-0.5.0-zisk-0.15.0" } +ark-serialize = { git = "https://github.com/0xPolygonHermez/zisk-patch-ark-algebra.git", tag = "patch-0.5.0-zisk-0.15.0" } +aurora-engine-modexp = { git = "https://github.com/0xPolygonHermez/zisk-patch-modexp.git", tag = "patch-1.2.0-zisk-0.15.0" } diff --git a/scripts/analyze_opcode_traces.py b/scripts/analyze_opcode_traces.py new file mode 100644 index 00000000..ee1bc83f --- /dev/null +++ b/scripts/analyze_opcode_traces.py @@ -0,0 +1,314 @@ +#!/usr/bin/env python3 +""" +Script to analyze blockchain test cases and trace opcodes. +For each test case, this script: +1. Extracts bytecode from contracts and transaction inputs +2. Traces opcode execution sequence +3. Counts how many times each opcode is called +Usage: + python3 analyze_opcode_traces.py [--output OUTPUT_DIR] [--test-case TEST_CASE_NAME] +Example: + python3 analyze_opcode_traces.py + python3 analyze_opcode_traces.py --test-case worst_push +""" + +import json +import os +import sys +from pathlib import Path +from typing import Dict, List, Tuple, Optional +from collections import Counter, defaultdict +import argparse + +# EVM opcode mapping (0x00-0xff) +OPCODES = { + 0x00: "STOP", 0x01: "ADD", 0x02: "MUL", 0x03: "SUB", 0x04: "DIV", + 0x05: "SDIV", 0x06: "MOD", 0x07: "SMOD", 0x08: "ADDMOD", 0x09: "MULMOD", + 0x0a: "EXP", 0x0b: "SIGNEXTEND", 0x10: "LT", 0x11: "GT", 0x12: "SLT", + 0x13: "SGT", 0x14: "EQ", 0x15: "ISZERO", 0x16: "AND", 0x17: "OR", + 0x18: "XOR", 0x19: "NOT", 0x1a: "BYTE", 0x1b: "SHL", 0x1c: "SHR", + 0x1d: "SAR", 0x20: "SHA3", 0x30: "ADDRESS", 0x31: "BALANCE", 0x32: "ORIGIN", + 0x33: "CALLER", 0x34: "CALLVALUE", 0x35: "CALLDATALOAD", 0x36: "CALLDATASIZE", + 0x37: "CALLDATACOPY", 0x38: "CODESIZE", 0x39: "CODECOPY", 0x3a: "GASPRICE", + 0x3b: "EXTCODESIZE", 0x3c: "EXTCODECOPY", 0x3d: "RETURNDATASIZE", + 0x3e: "RETURNDATACOPY", 0x3f: "EXTCODEHASH", 0x40: "BLOCKHASH", 0x41: "COINBASE", + 0x42: "TIMESTAMP", 0x43: "NUMBER", 0x44: "DIFFICULTY", 0x45: "GASLIMIT", + 0x46: "CHAINID", 0x47: "SELFBALANCE", 0x48: "BASEFEE", 0x49: "BLOBHASH", + 0x4a: "BLOBBASEFEE", 0x50: "POP", 0x51: "MLOAD", 0x52: "MSTORE", 0x53: "MSTORE8", + 0x54: "SLOAD", 0x55: "SSTORE", 0x56: "JUMP", 0x57: "JUMPI", 0x58: "PC", + 0x59: "MSIZE", 0x5a: "GAS", 0x5b: "JUMPDEST", 0x5f: "PUSH0", 0x60: "PUSH1", + 0x61: "PUSH2", 0x62: "PUSH3", 0x63: "PUSH4", 0x64: "PUSH5", 0x65: "PUSH6", + 0x66: "PUSH7", 0x67: "PUSH8", 0x68: "PUSH9", 0x69: "PUSH10", 0x6a: "PUSH11", + 0x6b: "PUSH12", 0x6c: "PUSH13", 0x6d: "PUSH14", 0x6e: "PUSH15", 0x6f: "PUSH16", + 0x70: "PUSH17", 0x71: "PUSH18", 0x72: "PUSH19", 0x73: "PUSH20", 0x74: "PUSH21", + 0x75: "PUSH22", 0x76: "PUSH23", 0x77: "PUSH24", 0x78: "PUSH25", 0x79: "PUSH26", + 0x7a: "PUSH27", 0x7b: "PUSH28", 0x7c: "PUSH29", 0x7d: "PUSH30", 0x7e: "PUSH31", + 0x7f: "PUSH32", 0x80: "DUP1", 0x81: "DUP2", 0x82: "DUP3", 0x83: "DUP4", + 0x84: "DUP5", 0x85: "DUP6", 0x86: "DUP7", 0x87: "DUP8", 0x88: "DUP9", + 0x89: "DUP10", 0x8a: "DUP11", 0x8b: "DUP12", 0x8c: "DUP13", 0x8d: "DUP14", + 0x8e: "DUP15", 0x8f: "DUP16", 0x90: "SWAP1", 0x91: "SWAP2", 0x92: "SWAP3", + 0x93: "SWAP4", 0x94: "SWAP5", 0x95: "SWAP6", 0x96: "SWAP7", 0x97: "SWAP8", + 0x98: "SWAP9", 0x99: "SWAP10", 0x9a: "SWAP11", 0x9b: "SWAP12", 0x9c: "SWAP13", + 0x9d: "SWAP14", 0x9e: "SWAP15", 0x9f: "SWAP16", 0xa0: "LOG0", 0xa1: "LOG1", + 0xa2: "LOG2", 0xa3: "LOG3", 0xa4: "LOG4", 0xf0: "CREATE", 0xf1: "CALL", + 0xf2: "CALLCODE", 0xf3: "RETURN", 0xf4: "DELEGATECALL", 0xf5: "CREATE2", + 0xfa: "STATICCALL", 0xfd: "REVERT", 0xfe: "INVALID", 0xff: "SELFDESTRUCT", +} + +# Push opcodes that read data +PUSH_OPCODES = {0x5f} | set(range(0x60, 0x80)) + + +def hex_to_bytes(hex_str: str) -> bytes: + """Convert hex string to bytes.""" + if hex_str.startswith("0x"): + hex_str = hex_str[2:] + return bytes.fromhex(hex_str) + + +def disassemble_bytecode(bytecode: bytes) -> List[Tuple[int, str, Optional[bytes]]]: + """ + Disassemble bytecode into opcodes. + Returns list of (offset, opcode_name, push_data). + """ + instructions = [] + i = 0 + while i < len(bytecode): + opcode = bytecode[i] + opcode_name = OPCODES.get(opcode, f"UNKNOWN(0x{opcode:02x})") + + if opcode in PUSH_OPCODES: + # PUSH opcodes read 1-32 bytes after the opcode + if opcode == 0x5f: # PUSH0 + push_data = None + i += 1 + else: + push_size = opcode - 0x5f # PUSH1 = 1 byte, PUSH2 = 2 bytes, etc. + if i + 1 + push_size <= len(bytecode): + push_data = bytecode[i + 1:i + 1 + push_size] + i += 1 + push_size + else: + push_data = bytecode[i + 1:] if i + 1 < len(bytecode) else None + i = len(bytecode) + instructions.append((i - (1 if opcode == 0x5f else 1 + push_size), opcode_name, push_data)) + else: + instructions.append((i, opcode_name, None)) + i += 1 + + return instructions + + +def trace_execution(bytecode: bytes, calldata: Optional[bytes] = None) -> Tuple[List[str], Counter]: + """ + Trace opcode execution. + This is a simplified static analysis - for full dynamic tracing, + you would need an actual EVM implementation. + + Returns: + (opcode_sequence, opcode_counts) + """ + instructions = disassemble_bytecode(bytecode) + opcode_sequence = [] + opcode_counts = Counter() + + # Simple linear execution trace (doesn't handle jumps) + # For full tracing, we'd need to simulate the EVM stack and handle JUMP/JUMPI + pc = 0 + visited = set() + + while pc < len(instructions): + if pc in visited: + # Avoid infinite loops in static analysis + break + visited.add(pc) + + offset, opcode_name, push_data = instructions[pc] + + opcode_sequence.append(opcode_name) + opcode_counts[opcode_name] += 1 + + # Handle control flow (simplified) + if opcode_name == "STOP" or opcode_name == "RETURN" or opcode_name == "REVERT" or opcode_name == "SELFDESTRUCT": + break + elif opcode_name == "JUMP": + # In real execution, we'd pop the stack to get jump destination + # For static analysis, we'll just continue linearly + pc += 1 + elif opcode_name == "JUMPI": + # Conditional jump - we'll trace both paths (simplified) + pc += 1 + else: + pc += 1 + + return opcode_sequence, opcode_counts + + +def analyze_test_case(test_file: Path) -> Dict: + """Analyze a single test case file.""" + print(f"\nAnalyzing: {test_file.name}") + + with open(test_file, 'r') as f: + test_data = json.load(f) + + results = {} + + for test_name, test_case in test_data.items(): + print(f" Processing test: {test_name}") + test_result = { + "test_name": test_name, + "contracts": {}, + "transactions": [] + } + + # Extract contract bytecode from pre state + if "pre" in test_case: + for address, account in test_case["pre"].items(): + if "code" in account and account["code"]: + code_hex = account["code"] + if code_hex.startswith("0x"): + code_hex = code_hex[2:] + if code_hex: + bytecode = bytes.fromhex(code_hex) + opcode_seq, opcode_counts = trace_execution(bytecode) + test_result["contracts"][address] = { + "bytecode_length": len(bytecode), + "opcode_sequence": opcode_seq, + "opcode_counts": dict(opcode_counts), + "total_opcodes": len(opcode_seq) + } + + # Extract transaction data + if "blocks" in test_case: + for block in test_case["blocks"]: + if "transactions" in block: + for tx in block["transactions"]: + tx_data = { + "to": tx.get("to", ""), + "input": tx.get("input", ""), + } + + # Trace transaction input if it's contract creation or call data + if tx_data["input"]: + input_hex = tx_data["input"] + if input_hex.startswith("0x"): + input_hex = input_hex[2:] + if input_hex: + input_bytes = bytes.fromhex(input_hex) + # For call data, we can't directly trace it as opcodes + # but we can note it + tx_data["input_length"] = len(input_bytes) + tx_data["input_preview"] = input_hex[:100] + "..." if len(input_hex) > 100 else input_hex + + test_result["transactions"].append(tx_data) + + results[test_name] = test_result + + return results + + +def generate_report(all_results: Dict[str, Dict], output_dir: Path): + """Generate HTML and text reports.""" + output_dir.mkdir(parents=True, exist_ok=True) + + # Generate text report + report_file = output_dir / "opcode_trace_report.txt" + with open(report_file, 'w') as f: + f.write("=" * 80 + "\n") + f.write("EVM Opcode Trace Analysis Report\n") + f.write("=" * 80 + "\n\n") + + for test_file, results in all_results.items(): + f.write(f"\n{'=' * 80}\n") + f.write(f"Test File: {test_file}\n") + f.write(f"{'=' * 80}\n\n") + + for test_name, test_result in results.items(): + f.write(f"Test Case: {test_result['test_name']}\n") + f.write("-" * 80 + "\n\n") + + # Contract analysis + if test_result["contracts"]: + f.write("Contracts:\n") + for address, contract_info in test_result["contracts"].items(): + f.write(f" Address: {address}\n") + f.write(f" Bytecode Length: {contract_info['bytecode_length']} bytes\n") + f.write(f" Total Opcodes Executed: {contract_info['total_opcodes']}\n") + f.write(f" Opcode Counts:\n") + for opcode, count in sorted(contract_info['opcode_counts'].items(), key=lambda x: -x[1]): + f.write(f" {opcode}: {count}\n") + f.write(f" Opcode Sequence (first 100):\n") + seq_preview = contract_info['opcode_sequence'][:100] + f.write(f" {' -> '.join(seq_preview)}\n") + if len(contract_info['opcode_sequence']) > 100: + f.write(f" ... ({len(contract_info['opcode_sequence']) - 100} more)\n") + f.write("\n") + + # Transaction analysis + if test_result["transactions"]: + f.write(f"Transactions: {len(test_result['transactions'])}\n") + for i, tx in enumerate(test_result["transactions"]): + f.write(f" Transaction {i+1}:\n") + f.write(f" To: {tx.get('to', 'CREATE')}\n") + if 'input_length' in tx: + f.write(f" Input Length: {tx['input_length']} bytes\n") + f.write("\n") + + f.write("\n") + + # Generate JSON report + json_file = output_dir / "opcode_trace_report.json" + with open(json_file, 'w') as f: + json.dump(all_results, f, indent=2) + + print(f"\nReports generated:") + print(f" Text: {report_file}") + print(f" JSON: {json_file}") + + +def main(): + parser = argparse.ArgumentParser(description="Analyze blockchain test cases and trace opcodes") + parser.add_argument("--fixtures-dir", type=str, + default="./zkevm-fixtures/fixtures/blockchain_tests/benchmark", + help="Directory containing test case JSON files") + parser.add_argument("--output", type=str, default="./opcode_traces", + help="Output directory for reports") + parser.add_argument("--test-case", type=str, default=None, + help="Specific test case file to analyze (optional)") + + args = parser.parse_args() + + fixtures_dir = Path(args.fixtures_dir) + if not fixtures_dir.exists(): + print(f"Error: Fixtures directory not found: {fixtures_dir}") + sys.exit(1) + + # Find all test case JSON files + if args.test_case: + test_files = list(fixtures_dir.rglob(f"*{args.test_case}*.json")) + if not test_files: + print(f"Error: Test case '{args.test_case}' not found") + sys.exit(1) + else: + test_files = list(fixtures_dir.rglob("*.json")) + + print(f"Found {len(test_files)} test case file(s)") + + all_results = {} + for test_file in test_files: + try: + results = analyze_test_case(test_file) + all_results[test_file.name] = results + except Exception as e: + print(f"Error analyzing {test_file}: {e}") + import traceback + traceback.print_exc() + + # Generate reports + output_dir = Path(args.output) + generate_report(all_results, output_dir) + + print(f"\nAnalysis complete! Processed {len(test_files)} test case file(s).") + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/scripts/compare_executions.py b/scripts/compare_executions.py index e670cf8c..4471d6f5 100755 --- a/scripts/compare_executions.py +++ b/scripts/compare_executions.py @@ -26,6 +26,15 @@ from typing import Dict, List, Tuple import statistics +# Import the test name parser for human-readable display names +try: + from test_name_parser import get_display_name + PARSER_AVAILABLE = True +except ImportError: + PARSER_AVAILABLE = False + def get_display_name(name: str) -> str: + return name + def load_metrics(folder_path: str) -> Dict[str, Dict]: """Load all metric files from a folder, searching all subfolders.""" metrics = {} @@ -65,6 +74,28 @@ def load_metrics(folder_path: str) -> Dict[str, Dict]: return metrics +def format_test_name(filename: str) -> str: + """Format test name for display using human-readable format. + + Args: + filename: Can be either 'test_name' or 'subfolder/test_name' + + Returns: + Formatted name, preserving subfolder prefix if present + """ + if '/' in filename: + subfolder, test_name = filename.rsplit('/', 1) + try: + formatted_name = get_display_name(test_name) + return f"{subfolder}/{formatted_name}" + except Exception: + return filename + else: + try: + return get_display_name(filename) + except Exception: + return filename + def extract_region_cycles(metrics_data: Dict) -> Dict[str, int]: """Extract region_cycles from metrics data and add total_num_cycles.""" try: @@ -157,12 +188,13 @@ def print_speedup_table(speedups: Dict[str, Dict[str, float]], regions: List[str # Sort files by name sorted_files = sorted(speedups.keys()) - # Calculate the optimal width for the file column - max_filename_length = max(len(filename) for filename in sorted_files) - file_column_width = max(max_filename_length + 2, 30) # At least 30, but wider if needed + # Format all test names and calculate optimal column width + formatted_names = {filename: format_test_name(filename) for filename in sorted_files} + max_display_length = max(len(name) for name in formatted_names.values()) + file_column_width = max(max_display_length + 2, 40) # At least 40 for human-readable names # Print header - use dynamic column width for file names and abbreviated region names - header = "File".ljust(file_column_width) + header = "Test".ljust(file_column_width) for region in regions: abbreviated = abbreviate_region_name(region) header += abbreviated.ljust(14) # Reduced from 18 to 14 for better fit @@ -171,7 +203,8 @@ def print_speedup_table(speedups: Dict[str, Dict[str, float]], regions: List[str # Print data rows for filename in sorted_files: - row = filename.ljust(file_column_width) + display_name = formatted_names[filename] + row = display_name[:file_column_width].ljust(file_column_width) for region in regions: if region in speedups[filename]: speedup = speedups[filename][region] @@ -235,13 +268,15 @@ def analyze_speedups(speedups: Dict[str, Dict[str, float]], regions: List[str]): # Top 3 best print(" Top 3 best speedups:") for i, (filename, speedup) in enumerate(file_speedups[:3]): - print(f" {i+1}. {filename}: {speedup:.2f}x") + display_name = format_test_name(filename) + print(f" {i+1}. {display_name}: {speedup:.2f}x") # Top 3 worst (if we have at least 3 entries) if len(file_speedups) >= 3: print(" Top 3 worst speedups:") for i, (filename, speedup) in enumerate(file_speedups[-3:]): - print(f" {i+1}. {filename}: {speedup:.2f}x") + display_name = format_test_name(filename) + print(f" {i+1}. {display_name}: {speedup:.2f}x") def main(): """Main function.""" diff --git a/scripts/compare_proving_times.py b/scripts/compare_proving_times.py new file mode 100755 index 00000000..98640e67 --- /dev/null +++ b/scripts/compare_proving_times.py @@ -0,0 +1,546 @@ +#!/usr/bin/env python3 +""" +Script to compare proving times across different zkVMs from benchmark JSON files. +Scans zkevm-metrics-{zkvm}-{gas}-{gpus} directories for benchmark data. +Gas can be a rational number (e.g., 0.1M, 0.2M, 1M). +""" + +import argparse +import json +import os +import re +import sys +from pathlib import Path +from typing import Dict, List, Tuple, Optional +from collections import defaultdict + +# Import test name parser for display names +try: + from test_name_parser import get_display_name + PARSER_AVAILABLE = True +except ImportError: + PARSER_AVAILABLE = False + print("Warning: test_name_parser not available. Using raw benchmark names.", file=sys.stderr) + + +def parse_directory_name(dirname: str) -> Tuple[Optional[str], Optional[str], Optional[str]]: + """ + Parse the directory name to extract zkvm name, gas category, and GPU count. + + Args: + dirname: Directory name in format zkevm-metrics-{zkvm}-{gas}-{gpus} + Gas can be a rational number (e.g., 0.1M, 0.2M, 1M) + + Returns: + Tuple of (zkvm_name, gas_category, gpu_count) or (None, None, None) if parsing fails + """ + # Pattern: zkevm-metrics-{zkvm}-{gas}-{gpus} + # Example: zkevm-metrics-sp1-1M-1, zkevm-metrics-risc0-1M-4 + # Gas can be a rational number like 0.1M, 0.2M, etc. + pattern = r'^zkevm-metrics-([a-z0-9]+)-([0-9.]+[A-Za-z]+)-(\d+)$' + match = re.match(pattern, dirname) + + if match: + zkvm = match.group(1) + gas_category = match.group(2) + gpu_count = match.group(3) + return zkvm, gas_category, gpu_count + + return None, None, None + + +def extract_benchmark_name(test_name: str, use_display_name: bool = True) -> str: + """ + Extract a human-readable benchmark name from the test name. + + Args: + test_name: Full test name from JSON + use_display_name: Whether to use display name formatting + + Returns: + Formatted benchmark name + """ + # Use display name parser if available + if use_display_name and PARSER_AVAILABLE: + try: + return get_display_name(test_name) + except Exception as e: + print(f"Warning: Failed to get display name for '{test_name}': {e}", file=sys.stderr) + # Fall through to basic formatting + + # Fallback: Basic formatting + # Remove test file prefix + if '::' in test_name: + test_name = test_name.split('::', 1)[1] + + # Remove test_ prefix + test_name = re.sub(r'^test_', '', test_name) + + return test_name + + +def parse_json_file(file_path: Path, use_display_name: bool = True) -> Optional[Tuple[str, float]]: + """ + Parse a benchmark JSON file to extract benchmark name and proving time. + + Args: + file_path: Path to the JSON file + use_display_name: Whether to use display name formatting + + Returns: + Tuple of (benchmark_name, proving_time_seconds) or None if parsing fails + """ + try: + with open(file_path, 'r', encoding='utf-8') as f: + data = json.load(f) + + # Extract benchmark name + benchmark_name = data.get('name', file_path.stem) + benchmark_name = extract_benchmark_name(benchmark_name, use_display_name) + + # Extract proving time (convert from ms to seconds) + proving_data = data.get('proving', {}) + success_data = proving_data.get('success', {}) + proving_time_ms = success_data.get('proving_time_ms') + + if proving_time_ms is not None: + proving_time_s = proving_time_ms / 1000.0 + return benchmark_name, proving_time_s + + return None + + except Exception as e: + print(f"Error parsing {file_path}: {e}", file=sys.stderr) + return None + + +def find_benchmark_directories(root_dir: Path) -> List[Tuple[Path, str, str, str]]: + """ + Find all zkevm-metrics-* directories (excluding zkevm-metrics-results*). + + Args: + root_dir: Root directory to search + + Returns: + List of tuples (dir_path, zkvm, gas_category, gpu_count) + """ + results = [] + + if not root_dir.exists(): + return results + + for dir_path in root_dir.iterdir(): + if dir_path.is_dir() and dir_path.name.startswith('zkevm-metrics-'): + # Skip zkevm-metrics-results* directories + if dir_path.name.startswith('zkevm-metrics-results'): + continue + + zkvm, gas_category, gpu_count = parse_directory_name(dir_path.name) + if zkvm: + results.append((dir_path, zkvm, gas_category, gpu_count)) + + return results + + +def collect_benchmark_data(benchmark_dirs: List[Tuple[Path, str, str, str]], use_display_name: bool = True) -> Dict: + """ + Collect benchmark data from all directories. + + Args: + benchmark_dirs: List of (dir_path, zkvm, gas_category, gpu_count) tuples + use_display_name: Whether to use display name formatting for readable names + + Returns: + Nested dictionary: {(gas_category, gpu_count): {zkvm: {benchmark: time}}} + """ + organized = defaultdict(lambda: defaultdict(dict)) + + for dir_path, zkvm, gas_category, gpu_count in benchmark_dirs: + # Find all JSON files in the directory + json_files = list(dir_path.rglob('*.json')) + + for json_file in json_files: + # Skip hardware.json + if json_file.name == 'hardware.json': + continue + + result = parse_json_file(json_file, use_display_name) + if result: + benchmark_name, proving_time = result + key = (gas_category, gpu_count) + organized[key][zkvm][benchmark_name] = proving_time + + return organized + + +def get_all_benchmarks(zkvm_results: Dict[str, Dict[str, float]]) -> List[str]: + """ + Get all unique benchmark names from all zkVMs. + + Args: + zkvm_results: Dictionary mapping zkvm to benchmark results + + Returns: + Sorted list of unique benchmark names + """ + all_benchmarks = set() + for zkvm, results in zkvm_results.items(): + all_benchmarks.update(results.keys()) + + return sorted(all_benchmarks) + + +def format_time(time_seconds: float) -> str: + """Format time in seconds with appropriate precision.""" + if time_seconds < 1: + return f"{time_seconds:.3f}" + elif time_seconds < 100: + return f"{time_seconds:.2f}" + else: + return f"{time_seconds:.1f}" + + +def write_comparison_table_to_file( + gas_category: str, + gpu_count: str, + zkvm_results: Dict, + filter_zkvm: Optional[str] = None, + filter_benchmark: Optional[str] = None +) -> str: + """ + Write a comparison table for a specific gas category and GPU count to a string. + + Args: + gas_category: Gas category (e.g., '1M') + gpu_count: Number of GPUs + zkvm_results: Results for all zkVMs + filter_zkvm: Optional zkVM name to filter by + filter_benchmark: Optional benchmark name pattern to filter by + + Returns: + Formatted markdown table as string + """ + lines = [] + + # Filter zkVMs if requested + if filter_zkvm: + zkvm_results = {k: v for k, v in zkvm_results.items() if k == filter_zkvm} + + # Get all unique zkVMs + zkvms = sorted(zkvm_results.keys()) + + if not zkvms: + return "" + + # Get all benchmarks + all_benchmarks = get_all_benchmarks(zkvm_results) + + # Filter benchmarks if requested + if filter_benchmark: + all_benchmarks = [b for b in all_benchmarks if filter_benchmark.lower() in b.lower()] + + if not all_benchmarks: + return "" + + # Add header + lines.append(f"# zkVM Proving Time (in secs) Comparison\n") + lines.append(f"**Gas Category:** {gas_category}\n") + lines.append(f"**Number of GPUs:** {gpu_count}\n") + lines.append("") + + # Create table header + header = "| Benchmark | " + " | ".join(zkvms) + " |" + separator = "|" + "|".join(["---"] * (len(zkvms) + 1)) + "|" + + lines.append(header) + lines.append(separator) + + # Add each benchmark row + for benchmark in all_benchmarks: + row_parts = [benchmark] + + for zkvm in zkvms: + if benchmark in zkvm_results[zkvm]: + time_val = zkvm_results[zkvm][benchmark] + row_parts.append(format_time(time_val)) + else: + row_parts.append("N/A") + + row = "| " + " | ".join(row_parts) + " |" + lines.append(row) + + return "\n".join(lines) + + +def print_comparison_table( + organized_results: Dict, + filter_zkvm: Optional[str] = None, + filter_benchmark: Optional[str] = None, + output_dir: Optional[str] = None, + single_file: Optional[str] = None +): + """ + Print comparison tables for each gas category and GPU count. + + Args: + organized_results: Organized benchmark results + filter_zkvm: Optional zkVM name to filter by + filter_benchmark: Optional benchmark name pattern to filter by + output_dir: Optional directory to write individual markdown files to + single_file: Optional single file path to write all results to + """ + # Sort by gas category and GPU count + sorted_keys = sorted(organized_results.keys(), key=lambda x: (x[0], int(x[1]))) + + # If output_dir is specified, create individual files + if output_dir: + output_path = Path(output_dir) + output_path.mkdir(parents=True, exist_ok=True) + + for gas_category, gpu_count in sorted_keys: + zkvm_results = organized_results[(gas_category, gpu_count)] + + content = write_comparison_table_to_file( + gas_category, gpu_count, zkvm_results, + filter_zkvm, filter_benchmark + ) + + if content: + # Create filename: {gas-category}-{gpu-count}.md + filename = f"{gas_category}-{gpu_count}.md" + file_path = output_path / filename + + with open(file_path, 'w', encoding='utf-8') as f: + f.write(content) + + print(f"Written: {file_path}") + + print(f"\nAll results written to directory: {output_dir}") + return + + # If single_file is specified, write all to one file + if single_file: + f = open(single_file, 'w', encoding='utf-8') + original_stdout = sys.stdout + sys.stdout = f + + try: + for gas_category, gpu_count in sorted_keys: + zkvm_results = organized_results[(gas_category, gpu_count)] + + # Filter zkVMs if requested + if filter_zkvm: + zkvm_results = {k: v for k, v in zkvm_results.items() if k == filter_zkvm} + + # Get all unique zkVMs + zkvms = sorted(zkvm_results.keys()) + + if not zkvms: + continue + + # Get all benchmarks + all_benchmarks = get_all_benchmarks(zkvm_results) + + # Filter benchmarks if requested + if filter_benchmark: + all_benchmarks = [b for b in all_benchmarks if filter_benchmark.lower() in b.lower()] + + if not all_benchmarks: + continue + + # Print header + print(f"\n{'='*80}") + print(f"Gas Category: {gas_category}") + print(f"Number of GPUs: {gpu_count}") + print(f"{'='*80}\n") + + # Create table header + header = "| Benchmark | " + " | ".join(zkvms) + " |" + separator = "|" + "|".join(["---"] * (len(zkvms) + 1)) + "|" + + print(header) + print(separator) + + # Print each benchmark row + for benchmark in all_benchmarks: + row_parts = [benchmark] + + for zkvm in zkvms: + if benchmark in zkvm_results[zkvm]: + time_val = zkvm_results[zkvm][benchmark] + row_parts.append(format_time(time_val)) + else: + row_parts.append("N/A") + + row = "| " + " | ".join(row_parts) + " |" + print(row) + + print() + + finally: + # Restore stdout if we redirected it + if single_file: + sys.stdout = original_stdout + f.close() + print(f"Results written to: {single_file}") + + +def parse_args(): + """Parse command line arguments.""" + parser = argparse.ArgumentParser( + description='Compare proving times across different zkVMs from benchmark JSON files.', + formatter_class=argparse.RawDescriptionHelpFormatter, + epilog=''' +Examples: + # Show all benchmark results + %(prog)s + + # Filter by zkVM (show only sp1 results) + %(prog)s --zkvm sp1 + + # Filter by benchmark name (show only CREATE benchmarks) + %(prog)s --benchmark create + + # Export results to directory (creates separate files: 1M-1.md, 1M-4.md, etc.) + %(prog)s --output results/ + + # Export to a single markdown file + %(prog)s --single-file all-results.md + + # Combine filters and export + %(prog)s --zkvm risc0 --benchmark sstore --output results/ + + # Specify custom directory + %(prog)s --dir /path/to/benchmark/data + + # Disable test name formatting (show raw names) + %(prog)s --no-format + ''' + ) + + parser.add_argument( + '--zkvm', + type=str, + help='Filter results by zkVM name (e.g., sp1, risc0, zisk, airbender)' + ) + + parser.add_argument( + '--benchmark', + type=str, + help='Filter results by benchmark name (case-insensitive substring match)' + ) + + parser.add_argument( + '-o', '--output', + type=str, + help='Output directory for markdown files (creates {gas}-{gpu}.md files). If not specified, prints to stdout.' + ) + + parser.add_argument( + '--single-file', + type=str, + help='Output to a single markdown file instead of multiple files per configuration.' + ) + + parser.add_argument( + '--dir', + type=str, + help='Root directory to scan for zkevm-metrics-* directories (defaults to workspace root)' + ) + + parser.add_argument( + '--quiet', + action='store_true', + help='Suppress informational messages (only show results)' + ) + + parser.add_argument( + '--no-format', + action='store_true', + help='Disable display name formatting (show raw benchmark names)' + ) + + return parser.parse_args() + + +def main(): + """Main function to run the comparison.""" + try: + args = parse_args() + + # Get the workspace root directory + script_dir = Path(__file__).parent + root_dir = script_dir.parent + + # Determine scan directory + if args.dir: + if Path(args.dir).is_absolute(): + scan_dir = Path(args.dir) + else: + scan_dir = root_dir / args.dir + else: + scan_dir = root_dir + + if not args.quiet: + print("Scanning for zkevm-metrics-* directories...") + print(f"Scan directory: {scan_dir}") + if not args.no_format and PARSER_AVAILABLE: + print("Using display names for readable benchmark names") + elif args.no_format: + print("Display name formatting disabled") + elif not PARSER_AVAILABLE: + print("Test name parser not available (using raw names)") + print() + + # Find all benchmark directories + benchmark_dirs = find_benchmark_directories(scan_dir) + + if not benchmark_dirs: + print("No benchmark directories found!", file=sys.stderr) + print(f"Searched in: {scan_dir}", file=sys.stderr) + print("Looking for directories matching pattern: zkevm-metrics-{{zkvm}}-{{gas}}-{{gpus}} (gas can be 0.1M, 0.2M, 1M, etc.)", file=sys.stderr) + print("(excluding zkevm-metrics-results*)", file=sys.stderr) + return 1 + + if not args.quiet: + print(f"Found {len(benchmark_dirs)} benchmark directories:") + for dir_path, zkvm, gas_category, gpu_count in benchmark_dirs: + rel_path = dir_path.relative_to(root_dir) if dir_path.is_relative_to(root_dir) else dir_path + print(f" - {rel_path} (zkVM: {zkvm}, Gas: {gas_category}, GPUs: {gpu_count})") + + print("\nCollecting benchmark data from JSON files...\n") + + # Collect all benchmark data + use_display_name = not args.no_format + organized_results = collect_benchmark_data(benchmark_dirs, use_display_name) + + if not organized_results: + print("No benchmark data found in JSON files!", file=sys.stderr) + return 1 + + # Print comparison tables + print_comparison_table( + organized_results, + filter_zkvm=args.zkvm, + filter_benchmark=args.benchmark, + output_dir=args.output, + single_file=args.single_file + ) + + if not args.quiet and not args.output and not args.single_file: + print("\nComparison complete!") + + return 0 + + except BrokenPipeError: + # Handle broken pipe error (e.g., when piping to head) + devnull = os.open(os.devnull, os.O_WRONLY) + os.dup2(devnull, sys.stdout.fileno()) + return 0 + except KeyboardInterrupt: + print("\n\nInterrupted by user", file=sys.stderr) + return 130 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/scripts/compare_provings.py b/scripts/compare_provings.py index f4bbb16a..c2e81ebd 100755 --- a/scripts/compare_provings.py +++ b/scripts/compare_provings.py @@ -25,6 +25,15 @@ from typing import Dict, List, Tuple import statistics +# Import the test name parser for human-readable display names +try: + from test_name_parser import get_display_name + PARSER_AVAILABLE = True +except ImportError: + PARSER_AVAILABLE = False + def get_display_name(name: str) -> str: + return name + def load_metrics(folder_path: str) -> Dict[str, Dict]: """Load all metric files from a folder, searching all subfolders.""" metrics = {} @@ -64,6 +73,28 @@ def load_metrics(folder_path: str) -> Dict[str, Dict]: return metrics +def format_test_name(filename: str) -> str: + """Format test name for display using human-readable format. + + Args: + filename: Can be either 'test_name' or 'subfolder/test_name' + + Returns: + Formatted name, preserving subfolder prefix if present + """ + if '/' in filename: + subfolder, test_name = filename.rsplit('/', 1) + try: + formatted_name = get_display_name(test_name) + return f"{subfolder}/{formatted_name}" + except Exception: + return filename + else: + try: + return get_display_name(filename) + except Exception: + return filename + def extract_proving_time(metrics_data: Dict) -> float: """Extract proving_time_ms from metrics data and convert to seconds.""" try: @@ -119,8 +150,8 @@ def print_detailed_speedup_table(speedups: Dict[str, float], baseline_metrics: D print("No data to display") return - # Print header - header = "File".ljust(35) + "Speedup".ljust(12) + "Baseline (s)".ljust(15) + "Optimized (s)".ljust(15) + "Time Saved (s)".ljust(15) + # Print header - increase column width for human-readable names + header = "Test".ljust(60) + "Speedup".ljust(12) + "Baseline (s)".ljust(15) + "Optimized (s)".ljust(15) + "Time Saved (s)".ljust(15) print(header) print("-" * len(header)) @@ -132,12 +163,15 @@ def print_detailed_speedup_table(speedups: Dict[str, float], baseline_metrics: D optimized_time = extract_proving_time(optimized_metrics[filename]) time_saved = baseline_time - optimized_time + # Format the test name for display + display_name = format_test_name(filename) + speedup_str = f"{speedup:.2f}x" baseline_str = f"{baseline_time:,.0f}" optimized_str = f"{optimized_time:,.0f}" saved_str = f"{time_saved:,.0f}" - row = (filename.ljust(35) + speedup_str.ljust(12) + + row = (display_name[:60].ljust(60) + speedup_str.ljust(12) + baseline_str.ljust(15) + optimized_str.ljust(15) + saved_str.ljust(15)) print(row) @@ -186,7 +220,8 @@ def analyze_speedups(speedups: Dict[str, float], baseline_metrics: Dict[str, Dic baseline_time = extract_proving_time(baseline_metrics[filename]) optimized_time = extract_proving_time(optimized_metrics[filename]) time_saved = baseline_time - optimized_time - print(f" {i+1}. {filename}: {speedup:.2f}x (saved {time_saved:,.0f} s)") + display_name = format_test_name(filename) + print(f" {i+1}. {display_name}: {speedup:.2f}x (saved {time_saved:,.0f} s)") # Top 3 worst (if we have at least 3 entries) if len(file_speedups) >= 3: @@ -195,11 +230,12 @@ def analyze_speedups(speedups: Dict[str, float], baseline_metrics: Dict[str, Dic baseline_time = extract_proving_time(baseline_metrics[filename]) optimized_time = extract_proving_time(optimized_metrics[filename]) time_diff = baseline_time - optimized_time + display_name = format_test_name(filename) if time_diff >= 0: time_str = f"saved {time_diff:,.0f} s" else: time_str = f"lost {abs(time_diff):,.0f} s" - print(f" {i+1}. {filename}: {speedup:.2f}x ({time_str})") + print(f" {i+1}. {display_name}: {speedup:.2f}x ({time_str})") def main(): """Main function.""" diff --git a/scripts/convert-metrics-to-markdown.py b/scripts/convert-metrics-to-markdown.py new file mode 100755 index 00000000..4e9fb14b --- /dev/null +++ b/scripts/convert-metrics-to-markdown.py @@ -0,0 +1,367 @@ +#!/usr/bin/env python3 +""" +Convert zkevm-metrics-* directories to markdown format. + +This script processes zkevm-metrics directories generated by the benchmark runner +and creates markdown reports showing proving metrics in a tabular format. +""" + +import argparse +import json +import re +import sys +from dataclasses import dataclass +from datetime import datetime +from pathlib import Path +from typing import List, Optional + +# Import the test name parser for human-readable display names +try: + from test_name_parser import get_display_name + PARSER_AVAILABLE = True +except ImportError: + # If we can't import it, provide a fallback + print("Warning: test_name_parser module not found. Test names will not be formatted.", file=sys.stderr) + PARSER_AVAILABLE = False + def get_display_name(name: str) -> str: + return name + + +@dataclass +class MetricEntry: + """Represents a single benchmark metric entry.""" + name: str + gas_used: Optional[int] + proof_size: Optional[int] + proving_time_ms: Optional[float] + peak_memory_bytes: Optional[int] + avg_memory_bytes: Optional[int] + initial_memory_bytes: Optional[int] + version: str + + +@dataclass +class HardwareConfig: + """Represents hardware configuration.""" + cpu_model: str + total_ram_gib: int + gpus: List[str] + + +def format_number(num: Optional[float], decimal_places: int = 1) -> str: + """Format a number with thousands separators.""" + if num is None: + return "N/A" + if isinstance(num, int) or (isinstance(num, float) and num.is_integer()): + return f"{int(num):,}" + return f"{num:,.{decimal_places}f}" + + +def bytes_to_mb(bytes_val: Optional[int]) -> Optional[float]: + """Convert bytes to megabytes.""" + if bytes_val is None: + return None + return bytes_val / (1024 * 1024) + + +def parse_hardware_json(hardware_file: Path) -> Optional[HardwareConfig]: + """Parse the hardware.json file.""" + try: + with open(hardware_file, 'r') as f: + data = json.load(f) + gpu_models = [gpu.get('model', 'Unknown GPU') for gpu in data.get('gpus', [])] + return HardwareConfig( + cpu_model=data.get('cpu_model', 'Unknown CPU'), + total_ram_gib=data.get('total_ram_gib', 0), + gpus=gpu_models + ) + except (json.JSONDecodeError, FileNotFoundError, KeyError) as e: + print(f"Warning: Could not parse hardware.json: {e}") + return None + + +def parse_metric_json(json_file: Path, version: str) -> Optional[MetricEntry]: + """Parse a single metric JSON file.""" + try: + with open(json_file, 'r') as f: + data = json.load(f) + + name = data.get('name', json_file.stem) + gas_used = data.get('metadata', {}).get('block_used_gas') + + # Extract proving metrics + proving = data.get('proving', {}) + if 'success' in proving: + success = proving['success'] + proof_size = success.get('proof_size') + proving_time_ms = success.get('proving_time_ms') + peak_memory = success.get('peak_memory_usage_bytes') + avg_memory = success.get('average_memory_usage_bytes') + initial_memory = success.get('initial_memory_usage_bytes') + else: + # If proving failed or data is missing + proof_size = None + proving_time_ms = None + peak_memory = None + avg_memory = None + initial_memory = None + + return MetricEntry( + name=name, + gas_used=gas_used, + proof_size=proof_size, + proving_time_ms=proving_time_ms, + peak_memory_bytes=peak_memory, + avg_memory_bytes=avg_memory, + initial_memory_bytes=initial_memory, + version=version + ) + except (json.JSONDecodeError, FileNotFoundError, KeyError) as e: + print(f"Warning: Could not parse {json_file}: {e}") + return None + + +def collect_metrics_from_directory(metrics_dir: Path) -> tuple[Optional[HardwareConfig], List[MetricEntry]]: + """Collect all metrics from a zkevm-metrics-* directory.""" + hardware_config = None + metrics: List[MetricEntry] = [] + + # Look for hardware.json in the root + hardware_file = metrics_dir / 'hardware.json' + if hardware_file.exists(): + hardware_config = parse_hardware_json(hardware_file) + + # Look for metrics in reth subdirectory structure + reth_dir = metrics_dir / 'reth' + if reth_dir.exists() and reth_dir.is_dir(): + # Iterate through version directories (e.g., sp1-v5.2.2, risc0-v3.0.3, etc.) + for version_dir in reth_dir.iterdir(): + if version_dir.is_dir(): + version = version_dir.name + # Process all JSON files in this version directory + for json_file in sorted(version_dir.glob('*.json')): + metric = parse_metric_json(json_file, version) + if metric: + metrics.append(metric) + + # Also check for direct JSON files in the metrics directory (alternative structure) + for json_file in sorted(metrics_dir.glob('*.json')): + if json_file.name != 'hardware.json': + # Extract version from parent directory name if possible + version = metrics_dir.name.replace('zkevm-metrics-', '') + metric = parse_metric_json(json_file, version) + if metric: + metrics.append(metric) + + return hardware_config, metrics + + +def generate_markdown( + metrics_dir_name: str, + hardware_config: Optional[HardwareConfig], + metrics: List[MetricEntry], + output_file: Path +) -> None: + """Generate markdown report from metrics.""" + + # Extract zkVM version from the first metric (they should all be the same) + zkvm_version = metrics[0].version if metrics and metrics[0].version else "Unknown" + + # Extract GPU count from directory name (e.g., "zkevm-metrics-sp1-1M-4" -> 4 GPUs) + gpu_count_str = "" + gpu_match = re.search(r'-(\d+)$', metrics_dir_name) + if gpu_match: + gpu_count = gpu_match.group(1) + gpu_count_str = f" ({gpu_count} GPUs)" + + with open(output_file, 'w') as f: + # Write header + f.write("# zkEVM Benchmark Results\n\n") + f.write(f"Generated on: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}\n\n") + f.write(f"## Folder: {metrics_dir_name}\n\n") + + # Write zkVM version with GPU count if available + f.write(f"**zkVM:** {zkvm_version}{gpu_count_str}\n\n") + + # Write hardware configuration + if hardware_config: + gpu_list = ', '.join(hardware_config.gpus) if hardware_config.gpus else 'None' + f.write(f"**Hardware Configuration:** CPU: {hardware_config.cpu_model} | ") + f.write(f"RAM: {hardware_config.total_ram_gib} GiB | ") + f.write(f"GPU: {gpu_list}\n\n") + else: + f.write("**Hardware Configuration:** Not available\n\n") + + # Write metrics table + f.write("## Proving Metrics\n\n") + + if not metrics: + f.write("No metrics data found.\n") + return + + # Table header + f.write("| Benchmark | Gas Used | Proof Size (bytes) | Proving Time (ms) | ") + f.write("Proving Time (s) | Peak Memory (MB) | Avg Memory (MB) | Initial Memory (MB) |\n") + f.write("|---|---|---|---|---|---|---|---|\n") + + # Table rows + for metric in sorted(metrics, key=lambda m: m.name): + # Format the test name using the display name parser if available + if PARSER_AVAILABLE: + try: + benchmark_name = get_display_name(metric.name) + except Exception: + # If formatting fails, use the original name + benchmark_name = metric.name + else: + benchmark_name = metric.name + + gas_used_str = format_number(metric.gas_used) + proof_size_str = format_number(metric.proof_size) + proving_time_ms_str = format_number(metric.proving_time_ms) + + # Convert milliseconds to seconds + proving_time_s = metric.proving_time_ms / 1000 if metric.proving_time_ms else None + proving_time_s_str = format_number(proving_time_s, decimal_places=2) + + # Convert bytes to MB + peak_memory_mb = bytes_to_mb(metric.peak_memory_bytes) + avg_memory_mb = bytes_to_mb(metric.avg_memory_bytes) + initial_memory_mb = bytes_to_mb(metric.initial_memory_bytes) + + peak_memory_str = format_number(peak_memory_mb) + avg_memory_str = format_number(avg_memory_mb) + initial_memory_str = format_number(initial_memory_mb) + + f.write(f"| {benchmark_name} | {gas_used_str} | {proof_size_str} | ") + f.write(f"{proving_time_ms_str} | {proving_time_s_str} | ") + f.write(f"{peak_memory_str} | {avg_memory_str} | {initial_memory_str} |\n") + + # Summary statistics + f.write("\n## Summary Statistics\n\n") + + # Calculate statistics for successful tests + successful_metrics = [m for m in metrics if m.proving_time_ms is not None] + total_tests = len(metrics) + successful_tests = len(successful_metrics) + + f.write(f"- **Total Tests:** {total_tests}\n") + f.write(f"- **Successful Tests:** {successful_tests}\n") + f.write(f"- **Failed Tests:** {total_tests - successful_tests}\n") + + if successful_metrics: + # Proving time statistics + proving_times = [m.proving_time_ms for m in successful_metrics if m.proving_time_ms is not None] + if proving_times: + avg_proving_time = sum(proving_times) / len(proving_times) + min_proving_time = min(proving_times) + max_proving_time = max(proving_times) + f.write("\n### Proving Time (ms)\n") + f.write(f"- **Average:** {format_number(avg_proving_time)}\n") + f.write(f"- **Minimum:** {format_number(min_proving_time)}\n") + f.write(f"- **Maximum:** {format_number(max_proving_time)}\n") + + # Memory statistics + peak_memories = [m.peak_memory_bytes for m in successful_metrics if m.peak_memory_bytes is not None] + if peak_memories: + peak_memories_mb_raw = [bytes_to_mb(m) for m in peak_memories] + peak_memories_mb = [mb for mb in peak_memories_mb_raw if mb is not None] + if peak_memories_mb: + avg_peak_memory = sum(peak_memories_mb) / len(peak_memories_mb) + min_peak_memory = min(peak_memories_mb) + max_peak_memory = max(peak_memories_mb) + f.write("\n### Peak Memory Usage (MB)\n") + f.write(f"- **Average:** {format_number(avg_peak_memory)}\n") + f.write(f"- **Minimum:** {format_number(min_peak_memory)}\n") + f.write(f"- **Maximum:** {format_number(max_peak_memory)}\n") + + # Proof size statistics + proof_sizes = [m.proof_size for m in successful_metrics if m.proof_size is not None] + if proof_sizes: + avg_proof_size = sum(proof_sizes) / len(proof_sizes) + min_proof_size = min(proof_sizes) + max_proof_size = max(proof_sizes) + f.write("\n### Proof Size (bytes)\n") + f.write(f"- **Average:** {format_number(avg_proof_size)}\n") + f.write(f"- **Minimum:** {format_number(min_proof_size)}\n") + f.write(f"- **Maximum:** {format_number(max_proof_size)}\n") + + +def process_single_directory(metrics_dir: Path, output_dir: Optional[Path] = None) -> None: + """Process a single zkevm-metrics directory.""" + print(f"Processing: {metrics_dir}") + + hardware_config, metrics = collect_metrics_from_directory(metrics_dir) + + if not metrics: + print(f" Warning: No metrics found in {metrics_dir}") + return + + print(f" Found {len(metrics)} metric entries") + + # Determine output file path + if output_dir: + output_dir.mkdir(parents=True, exist_ok=True) + output_file = output_dir / f"{metrics_dir.name}.md" + else: + output_file = metrics_dir.parent / f"{metrics_dir.name}.md" + + generate_markdown(metrics_dir.name, hardware_config, metrics, output_file) + print(f" Generated: {output_file}") + + +def main() -> int: + """Main entry point for the script.""" + parser = argparse.ArgumentParser( + description='Convert zkevm-metrics directories to markdown format', + formatter_class=argparse.RawDescriptionHelpFormatter, + epilog=""" +Examples: + # Convert a single directory + %(prog)s zkevm-metrics-sp1-1M-4 + + # Convert multiple directories + %(prog)s zkevm-metrics-sp1-1M-4 zkevm-metrics-risc0-1M + + # Convert all zkevm-metrics directories in current folder + %(prog)s zkevm-metrics-* + + # Specify output directory + %(prog)s -o zkevm-metrics-results zkevm-metrics-sp1-1M-4 + """ + ) + parser.add_argument( + 'directories', + nargs='+', + type=Path, + help='One or more zkevm-metrics-* directories to convert' + ) + parser.add_argument( + '-o', '--output-dir', + type=Path, + help='Output directory for markdown files (default: same as input parent directory)' + ) + + args = parser.parse_args() + + # Process each directory + processed_count = 0 + for metrics_dir in args.directories: + if not metrics_dir.exists(): + print(f"Error: Directory {metrics_dir} does not exist") + continue + + if not metrics_dir.is_dir(): + print(f"Error: {metrics_dir} is not a directory") + continue + + process_single_directory(metrics_dir, args.output_dir) + processed_count += 1 + + print(f"\nProcessed {processed_count} directories") + return 0 if processed_count > 0 else 1 + + +if __name__ == '__main__': + exit(main()) + diff --git a/scripts/generate-gas-categorized-fixtures.sh b/scripts/generate-gas-categorized-fixtures.sh new file mode 100755 index 00000000..134c433b --- /dev/null +++ b/scripts/generate-gas-categorized-fixtures.sh @@ -0,0 +1,272 @@ +#!/usr/bin/env bash +# generate-gas-categorized-fixtures.sh +# Generates zkevm-fixtures-input categorized by gas parameters into different folders. +# +# Usage: ./scripts/generate-gas-categorized-fixtures.sh [OPTIONS] [EEST_TAG] [BASE_OUTPUT_DIR] + +set -euo pipefail + +# Default Rayon thread count (can be overridden by environment) +export RAYON_NUM_THREADS="${RAYON_NUM_THREADS:-4}" + +# Colors +RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; BLUE='\033[0;34m'; NC='\033[0m' +print_status() { echo -e "${1}${2}${NC}"; } + +# Default gas values (in millions, without suffix) +DEFAULT_GAS_VALUES="1M,10M,30M,45M,60M,100M,150M" + +# Gas parameter categories (will be populated from user input or defaults) +declare -a GAS_CATEGORIES=() + +# Help message +show_help() { + cat << EOF +Usage: $0 [OPTIONS] [EEST_TAG] [BASE_OUTPUT_DIR] + +Generates zkevm-fixtures-input categorized by gas parameters. + +Arguments: + EEST_TAG EEST release tag (e.g., v0.1.0). Default: latest (ignored when using --eest-fixtures-path) + BASE_OUTPUT_DIR Base output directory (default: ./zkevm-fixtures-input) + +Options: + -g, --gas LIST Comma-separated list of gas values in format xM where x is a rational number + (e.g., "0.1M,1M,10M" or "0.1,1,10" - M suffix added if omitted) + Default: $DEFAULT_GAS_VALUES + -e, --eest-fixtures-path Path to local EEST fixtures directory (mutually exclusive with EEST_TAG) + --dry-run Show what would be executed without running + --help, -h Show this help message + +Examples: + $0 # Use default gas categories, download latest EEST + $0 -g 1M,10M,30M # Custom gas categories, download latest EEST + $0 -g 1M,10M v0.1.0 # Custom gas categories with specific EEST tag + $0 -e ./local-eest-fixtures -g 0.1M,1M,10M # Use local EEST fixtures path + $0 --eest-fixtures-path /path/to/eest # Use local EEST fixtures with defaults +EOF + exit 0 +} + +# Normalize gas value to format xM where x is a rational number +normalize_gas_value() { + local value="$1" + # Remove any whitespace + value="${value// /}" + # Check if value is in format xM (rational number with M suffix) + if [[ "$value" =~ ^[0-9]+(\.[0-9]+)?M$ ]]; then + echo "$value" + elif [[ "$value" =~ ^[0-9]+(\.[0-9]+)?$ ]]; then + # No suffix, add M + echo "${value}M" + else + echo "ERROR:$value" # Signal error to caller + return 1 + fi +} + +# Parse gas categories from comma-separated list +parse_gas_categories() { + local gas_input="$1" + IFS=',' read -ra values <<< "$gas_input" + for value in "${values[@]}"; do + local normalized + normalized=$(normalize_gas_value "$value") + if [[ "$normalized" == ERROR:* ]]; then + local bad_value="${normalized#ERROR:}" + print_status "$RED" "❌ Invalid gas value format: $bad_value (expected xM where x is a rational number, e.g., 0.1M, 1M, 10M)" + return 1 + fi + GAS_CATEGORIES+=("benchmark-gas-value_${normalized}") + done +} + +# Parse arguments +DRY_RUN=false +GAS_INPUT="" +EEST_FIXTURES_PATH="" +POSITIONAL_ARGS=() + +while [[ $# -gt 0 ]]; do + case $1 in + -h|--help) + show_help + ;; + --dry-run) + DRY_RUN=true + shift + ;; + -g|--gas) + GAS_INPUT="$2" + shift 2 + ;; + -e|--eest-fixtures-path) + EEST_FIXTURES_PATH="$2" + shift 2 + ;; + *) + POSITIONAL_ARGS+=("$1") + shift + ;; + esac +done + +# Set positional arguments +EEST_TAG="${POSITIONAL_ARGS[0]:-}" +BASE_OUTPUT_DIR="${POSITIONAL_ARGS[1]:-./zkevm-fixtures-input}" + +# Validate mutually exclusive options +if [[ -n "$EEST_TAG" && -n "$EEST_FIXTURES_PATH" ]]; then + print_status "$RED" "❌ Cannot use both EEST_TAG and --eest-fixtures-path. They are mutually exclusive." + exit 1 +fi + +# Parse gas categories (use default if not provided) +parse_gas_categories "${GAS_INPUT:-$DEFAULT_GAS_VALUES}" || exit 1 + +# Validation functions +validate_gas_categories() { + print_status "$BLUE" "🔍 Validating gas categories..." + if [[ ${#GAS_CATEGORIES[@]} -eq 0 ]]; then + print_status "$RED" "❌ No gas categories specified" + return 1 + fi + for category in "${GAS_CATEGORIES[@]}"; do + [[ "$category" =~ ^benchmark-gas-value_[0-9]+(\.[0-9]+)?M$ ]] || { + print_status "$RED" "❌ Invalid format: $category" + return 1 + } + done + print_status "$GREEN" "✅ ${#GAS_CATEGORIES[@]} gas categories validated: ${GAS_CATEGORIES[*]}" +} + +check_cargo() { + command -v cargo &> /dev/null || { + print_status "$RED" "❌ cargo not installed or not in PATH" + exit 1 + } +} + +check_workspace() { + [[ -f "Cargo.toml" && -d "crates/witness-generator-cli" ]] || { + print_status "$RED" "❌ Must be run from project root directory" + exit 1 + } + print_status "$GREEN" "✅ Project structure verified" +} + +build_project() { + print_status "$BLUE" "🔨 Building witness-generator-cli..." + cargo build --release --bin witness-generator-cli && { + print_status "$GREEN" "✅ Build successful" + } || { + print_status "$RED" "❌ Build failed" + exit 1 + } +} + +# Validate EEST fixtures path exists +check_eest_fixtures_path() { + if [[ ! -d "$EEST_FIXTURES_PATH" ]]; then + print_status "$RED" "❌ EEST fixtures directory not found: $EEST_FIXTURES_PATH" + exit 1 + fi + print_status "$GREEN" "✅ EEST fixtures directory verified: $EEST_FIXTURES_PATH" +} + +# Generate fixtures for a specific gas category +generate_fixtures() { + local gas_category="$1" output_dir="$2" + local source_arg="" + + # Use either --eest-fixtures-path or --tag (mutually exclusive) + if [[ -n "$EEST_FIXTURES_PATH" ]]; then + source_arg="--eest-fixtures-path $EEST_FIXTURES_PATH" + elif [[ -n "$EEST_TAG" ]]; then + source_arg="--tag $EEST_TAG" + fi + + print_status "$BLUE" "🚀 Generating: $gas_category → $output_dir" + mkdir -p "$output_dir" + + cargo run --release --bin witness-generator-cli -- \ + --output-folder "$output_dir" tests $source_arg \ + --include "$gas_category" --include "Prague" && { + local file_count=$(find "$output_dir" -type f 2>/dev/null | wc -l) + print_status "$GREEN" "✅ $gas_category: $file_count files" + } || { + print_status "$RED" "❌ Failed: $gas_category" + return 1 + } +} + +# Show summary +show_summary() { + print_status "$GREEN" "\n🎉 Fixture generation completed!" + print_status "$BLUE" "\n📊 Summary:" + for category in "${GAS_CATEGORIES[@]}"; do + local gas_value="${category#benchmark-gas-value_}" + local output_dir="${BASE_OUTPUT_DIR}-${gas_value}" + if [[ -d "$output_dir" ]]; then + local file_count=$(find "$output_dir" -type f 2>/dev/null | wc -l) + print_status "$GREEN" " ✅ $category: $file_count files" + else + print_status "$RED" " ❌ $category: Failed" + fi + done + print_status "$BLUE" "\n📁 Fixtures location: $BASE_OUTPUT_DIR-*" +} + +# Main execution +main() { + # Determine source description for display + local source_desc="EEST Tag: ${EEST_TAG:-latest}" + [[ -n "$EEST_FIXTURES_PATH" ]] && source_desc="EEST Path: $EEST_FIXTURES_PATH" + + if [[ "$DRY_RUN" == true ]]; then + print_status "$YELLOW" "🔍 DRY RUN MODE" + print_status "$BLUE" "$source_desc" + print_status "$BLUE" "Base Output: $BASE_OUTPUT_DIR" + print_status "$BLUE" "Gas Categories: ${GAS_CATEGORIES[*]}\n" + + for category in "${GAS_CATEGORIES[@]}"; do + local gas_value="${category#benchmark-gas-value_}" + local output_dir="${BASE_OUTPUT_DIR}-${gas_value}" + local source_arg="" + [[ -n "$EEST_FIXTURES_PATH" ]] && source_arg="--eest-fixtures-path \"$EEST_FIXTURES_PATH\"" + [[ -n "$EEST_TAG" ]] && source_arg="--tag $EEST_TAG" + echo " cargo run --release --bin witness-generator-cli -- --output-folder \"$output_dir\" tests $source_arg --include \"$category\" --include \"Prague\"" + done + print_status "$GREEN" "\n✅ Dry run completed" + exit 0 + fi + + print_status "$BLUE" "🚀 Starting zkEVM fixture generation" + print_status "$BLUE" "$source_desc | Base Dir: $BASE_OUTPUT_DIR" + print_status "$BLUE" "Gas Categories: ${GAS_CATEGORIES[*]}" + + check_cargo && check_workspace + validate_gas_categories || exit 1 + [[ -n "$EEST_FIXTURES_PATH" ]] && check_eest_fixtures_path + build_project + + local failed_categories=() + for category in "${GAS_CATEGORIES[@]}"; do + local gas_value="${category#benchmark-gas-value_}" + local output_dir="${BASE_OUTPUT_DIR}-${gas_value}" + generate_fixtures "$category" "$output_dir" || failed_categories+=("$category") + echo "" + done + + show_summary + + if [[ ${#failed_categories[@]} -gt 0 ]]; then + print_status "$YELLOW" "\n⚠️ Failed categories:" + printf '%s\n' "${failed_categories[@]}" | sed 's/^/ - /' + exit 1 + fi + + print_status "$GREEN" "\n🎯 All gas categories completed successfully!" +} + +main "$@" diff --git a/scripts/generate-website.py b/scripts/generate-website.py index 0df7b271..58e9d789 100755 --- a/scripts/generate-website.py +++ b/scripts/generate-website.py @@ -15,6 +15,9 @@ from pathlib import Path from typing import Any, Dict, List, Optional, Tuple +# Import the human-readable display name function +from test_name_parser import get_display_name + @dataclass class MetricsFile: """Represents a single metrics file with its metadata.""" @@ -844,12 +847,8 @@ def generate_el_section(el: str, metrics_data: Dict[str, Dict[str, List[MetricsF def clean_test_name(test_name: str) -> str: - """Clean up test name for display.""" - return (test_name - .replace('test_worst_', '') - .replace('[fork_Prague-benchmark-gas-value_10M-blockchain_test_from_state_test-', ' (') - .replace('[fork_Prague-benchmark-gas-value_10M-blockchain_test-', ' (') - .replace(']', ')')) + """Clean up test name for display using human-readable format.""" + return get_display_name(test_name) def generate_html_report(metrics_data: Dict[str, Dict[str, List[MetricsFile]]], output_file: Path) -> None: diff --git a/scripts/opcode_test_parser.py b/scripts/opcode_test_parser.py new file mode 100755 index 00000000..a47da6ec --- /dev/null +++ b/scripts/opcode_test_parser.py @@ -0,0 +1,825 @@ +#!/usr/bin/env python3 +""" +Opcode Test Parser + +This script parses pytest test names and determines which EVM opcodes are being tested. + +Usage: + python opcode_test_parser.py "worst_compute::worst_binop_simple[Prague-benchmark-gas-value_10M-opcode_EXP]" + python opcode_test_parser.py --file test_worst_compute.py::test_worst_push + python opcode_test_parser.py --batch tests.txt +""" + +import re +import sys +from dataclasses import dataclass +from pathlib import Path +from typing import Dict, List + + +@dataclass +class TestInfo: + """Information about a parsed test.""" + + file: str + module: str + function: str + parameters: Dict[str, str] + raw_params: str + opcodes: List[str] + + +# Mapping of test functions to opcodes they test +TEST_FUNCTION_OPCODES = { + # Stack operations + "test_worst_push": [ + "PUSH0", + "PUSH1", + "PUSH2", + "PUSH3", + "PUSH4", + "PUSH5", + "PUSH6", + "PUSH7", + "PUSH8", + "PUSH9", + "PUSH10", + "PUSH11", + "PUSH12", + "PUSH13", + "PUSH14", + "PUSH15", + "PUSH16", + "PUSH17", + "PUSH18", + "PUSH19", + "PUSH20", + "PUSH21", + "PUSH22", + "PUSH23", + "PUSH24", + "PUSH25", + "PUSH26", + "PUSH27", + "PUSH28", + "PUSH29", + "PUSH30", + "PUSH31", + "PUSH32", + ], + "test_worst_dup": [ + "DUP1", + "DUP2", + "DUP3", + "DUP4", + "DUP5", + "DUP6", + "DUP7", + "DUP8", + "DUP9", + "DUP10", + "DUP11", + "DUP12", + "DUP13", + "DUP14", + "DUP15", + "DUP16", + ], + "test_worst_swap": [ + "SWAP1", + "SWAP2", + "SWAP3", + "SWAP4", + "SWAP5", + "SWAP6", + "SWAP7", + "SWAP8", + "SWAP9", + "SWAP10", + "SWAP11", + "SWAP12", + "SWAP13", + "SWAP14", + "SWAP15", + "SWAP16", + ], + # Arithmetic + "test_worst_binop_simple": [ + "ADD", + "MUL", + "SUB", + "DIV", + "SDIV", + "MOD", + "SMOD", + "EXP", + "SIGNEXTEND", + "LT", + "GT", + "SLT", + "SGT", + "EQ", + "AND", + "OR", + "XOR", + "BYTE", + "SHL", + "SHR", + "SAR", + ], + "test_worst_unop": ["ISZERO", "NOT"], + "test_worst_mod": ["MOD", "SMOD"], + "test_worst_modarith": ["ADDMOD", "MULMOD"], + "test_worst_shifts": ["SHL", "SHR", "SAR"], + # Memory operations + "test_worst_memory_access": ["MLOAD", "MSTORE", "MSTORE8"], + "test_worst_msize": ["MSIZE"], + "test_worst_calldatacopy": ["CALLDATACOPY"], + "test_worst_codecopy": ["CODECOPY"], + "test_worst_returndatacopy": ["RETURNDATACOPY"], + "test_worst_mcopy": ["MCOPY"], + # Storage + "test_worst_storage_access_cold": ["SLOAD", "SSTORE"], + "test_worst_storage_access_warm": ["SLOAD", "SSTORE"], + "test_worst_tload": ["TLOAD"], + "test_worst_tstore": ["TSTORE"], + # Control flow + "test_worst_jumps": ["JUMP"], + "test_worst_jumpi_fallthrough": ["JUMPI"], + "test_worst_jumpis": ["JUMPI"], + "test_worst_jumpdests": ["JUMPDEST"], + "test_worst_keccak": ["SHA3", "KECCAK256"], + # Environmental + "test_worst_zero_param": [ + "ADDRESS", + "ORIGIN", + "CALLER", + "CODESIZE", + "GASPRICE", + "COINBASE", + "TIMESTAMP", + "NUMBER", + "PREVRANDAO", + "GASLIMIT", + "CHAINID", + "BASEFEE", + "BLOBBASEFEE", + "GAS", + ], + "test_worst_calldatasize": ["CALLDATASIZE"], + "test_worst_calldataload": ["CALLDATALOAD"], + "test_worst_callvalue": ["CALLVALUE"], + "test_worst_returndatasize_nonzero": ["RETURNDATASIZE"], + "test_worst_returndatasize_zero": ["RETURNDATASIZE"], + "test_worst_blobhash": ["BLOBHASH"], + # Stateful operations + "test_worst_address_state_cold": ["BALANCE", "EXTCODESIZE", "EXTCODEHASH"], + "test_worst_address_state_warm": [ + "BALANCE", + "EXTCODESIZE", + "EXTCODEHASH", + "CALL", + "CALLCODE", + "DELEGATECALL", + "STATICCALL", + ], + "test_worst_blockhash": ["BLOCKHASH"], + "test_worst_selfbalance": ["SELFBALANCE"], + "test_worst_extcodecopy_warm": ["EXTCODECOPY"], + "test_worst_selfdestruct_existing": ["SELFDESTRUCT"], + "test_worst_selfdestruct_created": ["SELFDESTRUCT"], + "test_worst_selfdestruct_initcode": ["SELFDESTRUCT"], + # Logging + "test_worst_log_opcodes": ["LOG0", "LOG1", "LOG2", "LOG3", "LOG4"], + # Bytecode operations + "test_worst_bytecode_single_opcode": [ + "EXTCODESIZE", + "EXTCODEHASH", + "EXTCODECOPY", + "CALL", + "CALLCODE", + "DELEGATECALL", + "STATICCALL", + ], + "test_worst_create": ["CREATE", "CREATE2"], + "test_worst_creates_collisions": ["CREATE", "CREATE2"], + "test_worst_initcode_jumpdest_analysis": ["JUMPDEST", "JUMP"], + # Return operations + "test_worst_return_revert": ["RETURN", "REVERT"], + # Precompiles + "test_worst_precompile_only_data_input": ["CALL"], # To precompiles 0x02, 0x03, 0x04 + "test_worst_modexp": ["CALL"], # To precompile 0x05 + "test_worst_precompile_fixed_cost": ["CALL", "STATICCALL"], # To various precompiles + "test_amortized_bn128_pairings": ["CALL"], # To precompile 0x08 + # Osaka opcodes + "test_worst_clz_same_input": ["CLZ"], + "test_worst_clz_diff_input": ["CLZ"], + # BloatNet + "test_bloatnet_balance_extcodesize": ["BALANCE", "EXTCODESIZE", "SHA3"], + "test_bloatnet_balance_extcodecopy": ["BALANCE", "EXTCODECOPY", "SHA3"], + "test_bloatnet_balance_extcodehash": ["BALANCE", "EXTCODEHASH", "SHA3"], + # Block tests + "test_block_full_access_list_and_data": [ + "SLOAD", + "SSTORE", + "BALANCE", + "EXTCODESIZE", + "EXTCODEHASH", + "CALLDATALOAD", + "CALLDATACOPY", + "CALLDATASIZE", + ], + "test_block_full_data": ["CALLDATALOAD", "CALLDATACOPY", "CALLDATASIZE"], + "test_block_full_of_ether_transfers": ["CALL"], +} + +# Precompile address to name mapping +PRECOMPILES = { + "0x01": "ECRECOVER", + "0x02": "SHA2-256", + "0x03": "RIPEMD-160", + "0x04": "IDENTITY", + "0x05": "MODEXP", + "0x06": "EC_ADD", + "0x07": "EC_MUL", + "0x08": "EC_PAIRING", + "0x09": "BLAKE2F", + "0x0a": "POINT_EVALUATION", + "0x0A": "POINT_EVALUATION", + "0x0b": "BLS12_G1ADD", + "0x0B": "BLS12_G1ADD", + "0x0c": "BLS12_G1MSM", + "0x0C": "BLS12_G1MSM", + "0x0d": "BLS12_G2ADD", + "0x0D": "BLS12_G2ADD", + "0x0e": "BLS12_G2MSM", + "0x0E": "BLS12_G2MSM", + "0x0f": "BLS12_PAIRING", + "0x0F": "BLS12_PAIRING", + "0x10": "BLS12_MAP_FP_TO_G1", + "0x11": "BLS12_MAP_FP2_TO_G2", + "0x14": "P256VERIFY", +} + +# Precompile name variations (for parameter matching) +PRECOMPILE_NAMES = { + "ecrecover": "ECRECOVER", + "sha2-256": "SHA2-256", + "sha256": "SHA2-256", + "ripemd-160": "RIPEMD-160", + "ripemd160": "RIPEMD-160", + "identity": "IDENTITY", + "modexp": "MODEXP", + "bn128_add": "EC_ADD", + "bn128add": "EC_ADD", + "ec_add": "EC_ADD", + "ecadd": "EC_ADD", + "bn128_mul": "EC_MUL", + "bn128mul": "EC_MUL", + "ec_mul": "EC_MUL", + "ecmul": "EC_MUL", + "bn128_pairing": "EC_PAIRING", + "bn128pairing": "EC_PAIRING", + "ec_pairing": "EC_PAIRING", + "ecpairing": "EC_PAIRING", + "blake2f": "BLAKE2F", + "point_evaluation": "POINT_EVALUATION", + "pointevaluation": "POINT_EVALUATION", + "bls12_g1add": "BLS12_G1ADD", + "bls12g1add": "BLS12_G1ADD", + "bls12_g1msm": "BLS12_G1MSM", + "bls12g1msm": "BLS12_G1MSM", + "bls12_g2add": "BLS12_G2ADD", + "bls12g2add": "BLS12_G2ADD", + "bls12_g2msm": "BLS12_G2MSM", + "bls12g2msm": "BLS12_G2MSM", + "bls12_pairing": "BLS12_PAIRING", + "bls12pairing": "BLS12_PAIRING", + "bls12_pairing_check": "BLS12_PAIRING", # Alternate name + "bls12pairingcheck": "BLS12_PAIRING", + "bls12_map_fp_to_g1": "BLS12_MAP_FP_TO_G1", + "bls12mapfptog1": "BLS12_MAP_FP_TO_G1", + "bls12_fp_to_g1": "BLS12_MAP_FP_TO_G1", # Short form + "bls12fptog1": "BLS12_MAP_FP_TO_G1", + "bls12_map_fp2_to_g2": "BLS12_MAP_FP2_TO_G2", + "bls12mapfp2tog2": "BLS12_MAP_FP2_TO_G2", + "bls12_fp2_to_g2": "BLS12_MAP_FP2_TO_G2", # Short form + "bls12_fp_to_g2": "BLS12_MAP_FP2_TO_G2", # Alternate short form + "bls12fp2tog2": "BLS12_MAP_FP2_TO_G2", + "bls12fptog2": "BLS12_MAP_FP2_TO_G2", + "p256verify": "P256VERIFY", +} + +# Common parameter name patterns +PARAM_PATTERNS = { + "opcode": r"opcode[_-]([A-Z0-9]+)", + "precompile_address": r"precompile_address[_-](0x[0-9A-Fa-f]+)", + "address": r"address[_-](0x[0-9A-Fa-f]+)", +} + + +class OpcodeTestParser: + """Parser for extracting opcodes from pytest test names.""" + + def __init__(self): + self.test_function_opcodes = TEST_FUNCTION_OPCODES + self.precompiles = PRECOMPILES + self.precompile_names = PRECOMPILE_NAMES + + def parse_test_name(self, test_name: str) -> TestInfo: + """ + Parse a pytest test name and extract opcode information. + + Args: + test_name: Full pytest test name (e.g., "test_worst_compute.py::test_worst_push[...]") + + Returns: + TestInfo object with parsed information + + """ + # Split into file::function[parameters] + parts = test_name.split("::") + + if len(parts) == 1: + # Just a test function name + file_part = "unknown" + rest = parts[0] + else: + file_part = parts[0] + rest = "::".join(parts[1:]) + + # Extract function name and parameters + if "[" in rest: + function_part, params_part = rest.split("[", 1) + params_part = params_part.rstrip("]") + else: + function_part = rest + params_part = "" + + # Parse parameters + parsed_params = self._parse_parameters(params_part) + + # Extract module name from file + module = self._extract_module(file_part) + + # Determine opcodes + opcodes = self._determine_opcodes(function_part, parsed_params, params_part) + + return TestInfo( + file=file_part, + module=module, + function=function_part, + parameters=parsed_params, + raw_params=params_part, + opcodes=opcodes, + ) + + def _extract_module(self, file_path: str) -> str: + """Extract module name from file path.""" + if not file_path or file_path == "unknown": + return "unknown" + + # Remove .py extension and path + module = Path(file_path).stem + return module + + def _parse_parameters(self, params_str: str) -> Dict[str, str]: + """Parse parameter string into key-value pairs.""" + if not params_str: + return {} + + params = {} + + # Try to parse as key-value pairs + parts = params_str.split("-") + + for part in parts: + if "_" in part and not part.startswith("_"): + # Try to split on first underscore + key_value = part.split("_", 1) + if len(key_value) == 2: + params[key_value[0]] = key_value[1] + + # Also store the raw string + params["_raw"] = params_str + + return params + + def _determine_opcodes( + self, function_name: str, params: Dict[str, str], raw_params: str + ) -> List[str]: + """Determine which opcodes are being tested.""" + opcodes = [] + + # 1. Check for explicit opcode in parameters + if "opcode" in params: + opcode = params["opcode"].upper() + opcodes.append(opcode) + return self._deduplicate_opcodes(opcodes) + + # 2. Check for precompile address + if "precompile" in params and "address" in params: + addr = params["address"] + if addr in self.precompiles: + opcodes.append(f"PRECOMPILE_{self.precompiles[addr]}") + return self._deduplicate_opcodes(opcodes) + + # 2.5. Check for precompile name in parameters + precompile_found = self._find_precompile_in_text(raw_params) + if precompile_found: + opcodes.extend(precompile_found) + # If this is a precompile test, also include the calling opcodes + precompile_test_functions = [ + "test_worst_precompile_only_data_input", + "test_worst_precompile_fixed_cost", + "test_worst_modexp", + "test_amortized_bn128_pairings", + # Without test_ prefix + "worst_precompile_only_data_input", + "worst_precompile_fixed_cost", + "worst_modexp", + "amortized_bn128_pairings", + ] + if function_name in precompile_test_functions: + # Add the calling opcodes from function mapping + lookup_name = ( + function_name + if function_name in self.test_function_opcodes + else f"test_{function_name}" + ) + if lookup_name in self.test_function_opcodes: + opcodes.extend(self.test_function_opcodes[lookup_name]) + return self._deduplicate_opcodes(opcodes) + + # 3. Try to extract from raw parameters using patterns + for pattern_name, pattern in PARAM_PATTERNS.items(): + matches = re.findall(pattern, raw_params, re.IGNORECASE) + if matches: + if pattern_name == "opcode": + opcodes.extend([m.upper() for m in matches]) + elif pattern_name in ["precompile_address", "address"]: + for addr in matches: + if addr.lower() in self.precompiles or addr in self.precompiles: + precomp = self.precompiles.get( + addr.lower(), self.precompiles.get(addr) + ) + opcodes.append(f"PRECOMPILE_{precomp}") + + if opcodes: + return self._deduplicate_opcodes(opcodes) + + # 4. Look up function name in mapping + # Try with and without 'test_' prefix + if function_name in self.test_function_opcodes: + opcodes.extend(self.test_function_opcodes[function_name]) + # Special case: detect specific precompiles from function name + if "modexp" in function_name.lower(): + opcodes.insert(0, "PRECOMPILE_MODEXP") + elif "bn128" in function_name.lower() and "pairing" in function_name.lower(): + opcodes.insert(0, "PRECOMPILE_EC_PAIRING") + return self._deduplicate_opcodes(opcodes) + + # Try adding 'test_' prefix if not present + if not function_name.startswith("test_"): + prefixed_name = f"test_{function_name}" + if prefixed_name in self.test_function_opcodes: + opcodes.extend(self.test_function_opcodes[prefixed_name]) + # Special case: detect specific precompiles from function name + if "modexp" in function_name.lower(): + opcodes.insert(0, "PRECOMPILE_MODEXP") + elif "bn128" in function_name.lower() and "pairing" in function_name.lower(): + opcodes.insert(0, "PRECOMPILE_EC_PAIRING") + return self._deduplicate_opcodes(opcodes) + + # 5. Try to infer from function name patterns + opcodes.extend(self._infer_from_function_name(function_name)) + + if opcodes: + return self._deduplicate_opcodes(opcodes) + + # 6. Check raw parameters for opcode names + opcodes.extend(self._find_opcodes_in_text(raw_params)) + + return self._deduplicate_opcodes(opcodes) if opcodes else ["UNKNOWN"] + + def _deduplicate_opcodes(self, opcodes: List[str]) -> List[str]: + """Remove duplicates while preserving order.""" + seen = set() + result = [] + for opcode in opcodes: + if opcode not in seen: + seen.add(opcode) + result.append(opcode) + return result + + def _infer_from_function_name(self, function_name: str) -> List[str]: + """Infer opcodes from function name patterns.""" + opcodes = [] + + # Pattern: test_worst_ + if function_name.startswith("test_worst_"): + suffix = function_name.replace("test_worst_", "").upper() + + # Check if it's a known opcode + known_opcodes = [ + "ADD", + "MUL", + "SUB", + "DIV", + "SDIV", + "MOD", + "SMOD", + "EXP", + "ADDMOD", + "MULMOD", + "SIGNEXTEND", + "LT", + "GT", + "SLT", + "SGT", + "EQ", + "ISZERO", + "AND", + "OR", + "XOR", + "NOT", + "BYTE", + "SHL", + "SHR", + "SAR", + "SHA3", + "KECCAK256", + "ADDRESS", + "BALANCE", + "ORIGIN", + "CALLER", + "CALLVALUE", + "CALLDATALOAD", + "CALLDATASIZE", + "CALLDATACOPY", + "CODESIZE", + "CODECOPY", + "GASPRICE", + "EXTCODESIZE", + "EXTCODECOPY", + "EXTCODEHASH", + "RETURNDATASIZE", + "RETURNDATACOPY", + "BLOCKHASH", + "COINBASE", + "TIMESTAMP", + "NUMBER", + "PREVRANDAO", + "GASLIMIT", + "CHAINID", + "SELFBALANCE", + "BASEFEE", + "POP", + "MLOAD", + "MSTORE", + "MSTORE8", + "SLOAD", + "SSTORE", + "JUMP", + "JUMPI", + "PC", + "MSIZE", + "GAS", + "JUMPDEST", + "TLOAD", + "TSTORE", + "MCOPY", + "LOG0", + "LOG1", + "LOG2", + "LOG3", + "LOG4", + "CREATE", + "CREATE2", + "CALL", + "CALLCODE", + "RETURN", + "DELEGATECALL", + "STATICCALL", + "REVERT", + "SELFDESTRUCT", + "BLOBHASH", + "BLOBBASEFEE", + "CLZ", + ] + + if suffix in known_opcodes: + opcodes.append(suffix) + + return opcodes + + def _find_opcodes_in_text(self, text: str) -> List[str]: + """Find opcode names in text string using word boundaries.""" + opcodes = [] + text_upper = text.upper() + + # List of all opcodes - sorted by length (longest first) to avoid partial matches + all_opcodes = [ + "ADD", + "MUL", + "SUB", + "DIV", + "SDIV", + "MOD", + "SMOD", + "EXP", + "ADDMOD", + "MULMOD", + "SIGNEXTEND", + "LT", + "GT", + "SLT", + "SGT", + "EQ", + "ISZERO", + "AND", + "OR", + "XOR", + "NOT", + "BYTE", + "SHL", + "SHR", + "SAR", + "SHA3", + "KECCAK256", + "LOG0", + "LOG1", + "LOG2", + "LOG3", + "LOG4", + "SLOAD", + "SSTORE", + "TLOAD", + "TSTORE", + "MLOAD", + "MSTORE", + "MSTORE8", + "MCOPY", + "MSIZE", + "CALLDATALOAD", + "CALLDATASIZE", + "CALLDATACOPY", + "CODECOPY", + "CODESIZE", + "EXTCODESIZE", + "EXTCODECOPY", + "EXTCODEHASH", + "RETURNDATASIZE", + "RETURNDATACOPY", + "BALANCE", + "SELFBALANCE", + "CALL", + "CALLCODE", + "DELEGATECALL", + "STATICCALL", + "CREATE", + "CREATE2", + "JUMP", + "JUMPI", + "JUMPDEST", + "RETURN", + "REVERT", + "SELFDESTRUCT", + "PUSH0", + "PUSH1", + "DUP1", + "SWAP1", # Representatives + "BLOBHASH", + "BLOBBASEFEE", + "CLZ", + ] + + # Use word boundaries to avoid false positives like "BYTE" in "bytes" + # Check each opcode with word boundary regex + for opcode in all_opcodes: + # Use word boundary pattern: must not be preceded or followed by alphanumeric + pattern = r"\b" + re.escape(opcode) + r"\b" + if re.search(pattern, text_upper): + opcodes.append(opcode) + + return opcodes + + def _find_precompile_in_text(self, text: str) -> List[str]: + """Find precompile names in text string.""" + precompiles = [] + text_lower = text.lower() + + # Check for precompile names (case-insensitive) + for precompile_pattern, precompile_name in self.precompile_names.items(): + # Use word boundaries to avoid false positives + pattern = r"\b" + re.escape(precompile_pattern) + r"\b" + if re.search(pattern, text_lower): + precompile_label = f"PRECOMPILE_{precompile_name}" + if precompile_label not in precompiles: + precompiles.append(precompile_label) + + return precompiles + + def format_output(self, test_info: TestInfo, verbose: bool = False) -> str: + """Format the test information as a string.""" + if verbose: + lines = [ + f"Test: {test_info.file}::{test_info.function}", + f"Module: {test_info.module}", + f"Parameters: {test_info.raw_params}", + f"Opcodes: {', '.join(test_info.opcodes)}", + ] + return "\n".join(lines) + else: + # Simple format: just the opcodes + return ", ".join(test_info.opcodes) + + +def main(): + """Main entry point for the script.""" + import argparse + + parser = argparse.ArgumentParser( + description="Parse pytest test names and determine which opcodes are being tested", + formatter_class=argparse.RawDescriptionHelpFormatter, + epilog=""" +Examples: + # Parse a single test name + %(prog)s "test_worst_compute.py::test_worst_binop_simple[Prague-benchmark-gas-value_10M-opcode_EXP]" + + # Parse with verbose output + %(prog)s -v "test_worst_compute.py::test_worst_push[opcode_PUSH32]" + + # Parse multiple tests from a file + %(prog)s --batch tests.txt + + # Parse test names from stdin + pytest --collect-only -q | %(prog)s --stdin + """, + ) + + parser.add_argument("test_name", nargs="?", help="Test name to parse (pytest node ID format)") + + parser.add_argument("-v", "--verbose", action="store_true", help="Show detailed information") + + parser.add_argument( + "-b", "--batch", metavar="FILE", help="Read test names from file (one per line)" + ) + + parser.add_argument("--stdin", action="store_true", help="Read test names from stdin") + + parser.add_argument("--json", action="store_true", help="Output results as JSON") + + args = parser.parse_args() + + opcode_parser = OpcodeTestParser() + + # Collect test names to parse + test_names = [] + + if args.batch: + with open(args.batch, "r") as f: + test_names = [line.strip() for line in f if line.strip()] + elif args.stdin: + test_names = [line.strip() for line in sys.stdin if line.strip()] + elif args.test_name: + test_names = [args.test_name] + else: + parser.print_help() + sys.exit(1) + + # Parse and output + results = [] + + for test_name in test_names: + try: + test_info = opcode_parser.parse_test_name(test_name) + results.append(test_info) + + if not args.json: + if args.verbose: + print(opcode_parser.format_output(test_info, verbose=True)) + print() # Blank line between entries + else: + print(f"{test_name} -> {opcode_parser.format_output(test_info)}") + except Exception as e: + print(f"Error parsing '{test_name}': {e}", file=sys.stderr) + + if args.json: + import json + + json_results = [ + { + "test": f"{r.file}::{r.function}", + "module": r.module, + "function": r.function, + "parameters": r.parameters, + "opcodes": r.opcodes, + } + for r in results + ] + print(json.dumps(json_results, indent=2)) + + +if __name__ == "__main__": + main() diff --git a/scripts/run-gas-categorized-benchmarks.sh b/scripts/run-gas-categorized-benchmarks.sh new file mode 100755 index 00000000..cf62e61e --- /dev/null +++ b/scripts/run-gas-categorized-benchmarks.sh @@ -0,0 +1,576 @@ +#!/usr/bin/env bash +# +# run-gas-categorized-benchmarks.sh +# +# Runs ere-hosts benchmarks on each gas-categorized fixtures folder and outputs +# results to metrics folders with gas parameters appended. +# +# Usage: +# ./scripts/run-gas-categorized-benchmarks.sh [OPTIONS] +# +# Options: +# -n, --dry-run Show what would be executed without actually running +# -h, --help Show this help message +# -f, --force-rerun Force rerun of benchmarks (default: false) +# --no-force-rerun Disable force rerun +# -a, --action Benchmark action to run (default: prove) +# -r, --resource Resource type: cpu, gpu, network, cluster (default: gpu) +# -g, --guest Guest program type (default: stateless-executor) +# -z, --zkvm zkVM implementation to use (default: risc0) +# -e, --execution-client Execution client to use (default: reth) +# -i, --input-dir Base input directory (default: ./zkevm-fixtures-input) +# -o, --output-dir Base metrics output directory (default: ./zkevm-metrics) +# -c, --gas-categories Comma-separated list of gas categories (e.g., 0.5M,1M,2.5M,10M) +# -m, --memory-tracking Enable memory tracking as a cargo feature +# --risc0-keccak-po2 RISC0 keccak accelerator cycle limit as power of 2 (default: 15) +# Higher values allow more keccak ops per segment before splitting +# but uses more memory and could cause the benchmark to be out of memory. +# +# Examples: +# # Run all gas categories with default settings +# ./scripts/run-gas-categorized-benchmarks.sh +# +# # Run with custom action and resource (short form) +# ./scripts/run-gas-categorized-benchmarks.sh -a execute -r cpu +# +# # Run with specific zkVM and execution client +# ./scripts/run-gas-categorized-benchmarks.sh -z sp1 -e ethrex +# +# # Run with SP1 network proving (NETWORK_PRIVATE_KEY env var is optional) +# ./scripts/run-gas-categorized-benchmarks.sh -z sp1 -r network +# +# # Run with custom input and output directories +# ./scripts/run-gas-categorized-benchmarks.sh -i ./my-fixtures -o ./my-metrics +# +# # Run on specific gas categories (supports rational numbers like 0.5M, 2.5M) +# ./scripts/run-gas-categorized-benchmarks.sh -c 10M +# ./scripts/run-gas-categorized-benchmarks.sh -c 0.5M,1M,2.5M,10M +# +# # Preview what would be executed +# ./scripts/run-gas-categorized-benchmarks.sh -n +# +# Gas Categories: +# Format: xM where x is a rational number (e.g., 0.5M, 1M, 2.5M, 10M, 100M) +# Default categories: 1M, 10M, 30M, 45M, 60M, 100M, 150M +# + +set -euo pipefail + +# SP1 Network proving environment variables +# Set default NETWORK_RPC_URL if not already set +export NETWORK_RPC_URL="${NETWORK_RPC_URL:-http://127.0.0.1:50051/}" +# NETWORK_PRIVATE_KEY is optional - if set, it will be used for authenticated proving + +# Default values +DRY_RUN=false +FORCE_RERUN=false +ACTION="prove" +RESOURCE="gpu" +GUEST="stateless-executor" +ZKVM="risc0" +EXECUTION_CLIENT="reth" +BASE_INPUT_DIR="./zkevm-fixtures-input" +BASE_METRICS_DIR="./zkevm-metrics" +CUSTOM_GAS_CATEGORIES="" +MEMORY_TRACKING=false +RISC0_KECCAK_PO2="${RISC0_KECCAK_PO2:-15}" + +# Default gas parameter categories (used when no custom categories are specified) +declare -a DEFAULT_GAS_CATEGORIES=( + "1M" + "10M" + "30M" + "45M" + "60M" + "100M" + "150M" +) + +# Active gas categories (will be populated from defaults or user input) +declare -a GAS_CATEGORIES=() + +# Colors for output +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +NC='\033[0m' # No Color + +# Function to print colored output +print_status() { + local color="$1" + local message="$2" + echo -e "${color}${message}${NC}" +} + +# Function to show help +show_help() { + echo "Usage: $0 [OPTIONS]" + echo "" + echo "Runs ere-hosts benchmarks on each gas-categorized fixtures folder and outputs" + echo "results to metrics folders with gas parameters appended." + echo "" + echo "Options:" + echo " -n, --dry-run Show what would be executed without running" + echo " -h, --help Show this help message" + echo " -f, --force-rerun Force rerun of benchmarks" + echo " --no-force-rerun Disable force rerun (default)" + echo " -a, --action Benchmark action (default: prove)" + echo " -r, --resource Resource type: cpu, gpu, network, cluster (default: gpu)" + echo " Note: 'network' and 'cluster' requires SP1 zkVM" + echo " -g, --guest Guest program (default: stateless-executor)" + echo " -z, --zkvm zkVM implementation (default: risc0)" + echo " -e, --execution-client Execution client (default: reth)" + echo " -i, --input-dir Base input directory (default: ./zkevm-fixtures-input)" + echo " -o, --output-dir Base metrics output directory (default: ./zkevm-metrics)" + echo " -c, --gas-categories Comma-separated gas categories (e.g., 0.5M,1M,10M)" + echo " -m, --memory-tracking Enable memory tracking cargo feature" + echo " --risc0-keccak-po2 RISC0 keccak accelerator cycle limit as power of 2 (default: 15)" + echo " Higher values allow more keccak ops per segment before splitting" + echo "" + echo "Available zkVMs:" + echo " risc0 (default), sp1, openvm, pico, zisk, airbender, zkm" + echo " Note: SP1 is required when using 'network' or 'cluster' resource for proving on SP1 Network" + echo "" + echo "Available Resources:" + echo " cpu, gpu (default), network (SP1 only), cluster (SP1 only)" + echo "" + echo "Available Execution Clients:" + echo " reth (default), ethrex" + echo "" + echo "Examples:" + echo " $0 # Run all default gas categories" + echo " $0 -a execute -r cpu # Custom action and resource" + echo " $0 -z sp1 -e ethrex # Specific zkVM and client" + echo " $0 -z sp1 -r network # SP1 with network proving" + echo " $0 -i ./fixtures -o ./metrics # Custom input/output directories" + echo " $0 -c 10M # Single gas category" + echo " $0 -c 0.5M,1M,2.5M,10M # Multiple custom categories" + echo " $0 -n # Dry run preview" + echo " $0 -f -m -c 30M # Force rerun with memory tracking" + echo "" + echo "Gas Categories:" + echo " Format: xM where x is a rational number (e.g., 0.5M, 1M, 2.5M, 10M)" + echo " Default: 1M, 10M, 30M, 45M, 60M, 100M, 150M" + exit 0 +} + +# Parse command line arguments +while [[ $# -gt 0 ]]; do + case $1 in + -h|--help) + show_help + ;; + -n|--dry-run) + DRY_RUN=true + shift + ;; + -f|--force-rerun) + FORCE_RERUN=true + shift + ;; + --no-force-rerun) + FORCE_RERUN=false + shift + ;; + -a|--action) + ACTION="$2" + shift 2 + ;; + -r|--resource) + RESOURCE="$2" + shift 2 + ;; + -g|--guest) + GUEST="$2" + shift 2 + ;; + -z|--zkvm) + ZKVM="$2" + shift 2 + ;; + -e|--execution-client) + EXECUTION_CLIENT="$2" + shift 2 + ;; + -i|--input-dir) + BASE_INPUT_DIR="$2" + shift 2 + ;; + -o|--output-dir) + BASE_METRICS_DIR="$2" + shift 2 + ;; + -c|--gas-categories) + CUSTOM_GAS_CATEGORIES="$2" + shift 2 + ;; + -m|--memory-tracking) + MEMORY_TRACKING=true + shift + ;; + --risc0-keccak-po2) + RISC0_KECCAK_PO2="$2" + shift 2 + ;; + *) + echo "Unknown option: $1" + show_help + ;; + esac +done + +# Function to check if cargo is available +check_cargo() { + if ! command -v cargo &> /dev/null; then + print_status "$RED" "❌ Error: cargo is not installed or not in PATH" + exit 1 + fi +} + +# Function to validate a single gas category format (xM where x is a rational number) +validate_gas_category_format() { + local category="$1" + # Match pattern: optional digits, optional decimal point with digits, followed by M + # Valid examples: 1M, 10M, 0.5M, 2.5M, 100M, 0.25M + if [[ "$category" =~ ^[0-9]*\.?[0-9]+M$ ]]; then + return 0 + else + return 1 + fi +} + +# Function to parse and validate gas categories +parse_gas_categories() { + if [ -n "$CUSTOM_GAS_CATEGORIES" ]; then + # Split by comma and validate each category + IFS=',' read -ra categories <<< "$CUSTOM_GAS_CATEGORIES" + + for category in "${categories[@]}"; do + # Trim whitespace + category=$(echo "$category" | xargs) + + if ! validate_gas_category_format "$category"; then + print_status "$RED" "❌ Error: Invalid gas category format '$category'" + print_status "$RED" " Expected format: xM where x is a rational number (e.g., 0.5M, 1M, 2.5M, 10M)" + exit 1 + fi + + GAS_CATEGORIES+=("$category") + done + + if [ ${#GAS_CATEGORIES[@]} -eq 0 ]; then + print_status "$RED" "❌ Error: No valid gas categories provided" + exit 1 + fi + else + # Use default categories + GAS_CATEGORIES=("${DEFAULT_GAS_CATEGORIES[@]}") + fi +} + +# Function to get categories to run (returns the gas values without prefix) +get_categories_to_run() { + echo "${GAS_CATEGORIES[@]}" +} + +# Function to validate resource and zkVM combination +validate_resource_zkvm() { + if [[ "$RESOURCE" == "network" || "$RESOURCE" == "cluster" ]] && [[ "$ZKVM" != "sp1" ]]; then + print_status "$RED" "❌ Error: Network or cluster resource is only supported for SP1 zkVM" + print_status "$RED" " Use: -z sp1 -r network or -z sp1 -r cluster" + exit 1 + fi +} + +# Function to check if we're in the right directory +check_workspace() { + if [ ! -f "Cargo.toml" ]; then + print_status "$RED" "❌ Error: Cargo.toml not found. This script must be run from the project root directory" + exit 1 + fi + + if [ ! -d "crates/ere-hosts" ]; then + print_status "$RED" "❌ Error: ere-hosts crate not found. This script must be run from the project root directory" + exit 1 + fi + + print_status "$GREEN" "✅ Project structure verified" +} + +# Function to build the project if needed +build_project() { + local features="" + if [ "$MEMORY_TRACKING" = true ]; then + features="memory-tracking" + fi + + if [ -n "$features" ]; then + print_status "$BLUE" "🔨 Building ere-hosts with features: $features..." + if cargo build --release --bin ere-hosts --features "$features"; then + print_status "$GREEN" "✅ Build successful" + else + print_status "$RED" "❌ Build failed" + exit 1 + fi + else + print_status "$BLUE" "🔨 Building ere-hosts..." + if cargo build --release --bin ere-hosts; then + print_status "$GREEN" "✅ Build successful" + else + print_status "$RED" "❌ Build failed" + exit 1 + fi + fi +} + +# Function to check if input fixtures exist +check_input_fixtures() { + local missing_folders=() + + for gas_value in "${GAS_CATEGORIES[@]}"; do + local input_dir="${BASE_INPUT_DIR}-${gas_value}" + + if [ ! -d "$input_dir" ]; then + missing_folders+=("$input_dir") + fi + done + + if [ ${#missing_folders[@]} -gt 0 ]; then + print_status "$YELLOW" "⚠️ Warning: Some input fixture folders are missing:" + for folder in "${missing_folders[@]}"; do + print_status "$YELLOW" " - $folder" + done + print_status "$YELLOW" " Run './scripts/generate-gas-categorized-fixtures.sh' first to generate fixtures." + print_status "$YELLOW" " Continuing with available folders..." + fi +} + +# Function to run benchmark for a specific gas category +run_benchmark() { + local gas_value="$1" + local input_dir="${BASE_INPUT_DIR}-${gas_value}" + local metrics_dir="${BASE_METRICS_DIR}-${ZKVM}-${gas_value}" + + # Check if input directory exists + if [ ! -d "$input_dir" ]; then + print_status "$YELLOW" "⚠️ Skipping $gas_value: Input directory $input_dir not found" + return 1 + fi + + print_status "$BLUE" "🚀 Running benchmark for gas category: $gas_value" + print_status "$BLUE" "📁 Input directory: $input_dir" + print_status "$BLUE" "📊 Metrics output: $metrics_dir" + + # Create metrics directory if it doesn't exist + mkdir -p "$metrics_dir" + + # Build force-rerun argument + local force_arg="" + if [ "$FORCE_RERUN" = true ]; then + force_arg="--force-rerun" + fi + + # Build features list (memory-tracking is a cargo feature, not a CLI arg) + local features="" + if [ "$MEMORY_TRACKING" = true ]; then + features="memory-tracking" + fi + + # Run the benchmark + local cmd_args=( + --release + --bin ere-hosts + ) + + if [ -n "$features" ]; then + cmd_args+=(--features "$features") + fi + + cmd_args+=( + -- + --zkvms "$ZKVM" + -a "$ACTION" + -r "$RESOURCE" + ) + + if [ -n "$force_arg" ]; then + cmd_args+=("$force_arg") + fi + + cmd_args+=( + -o "$metrics_dir" + "$GUEST" + --input-folder "$input_dir" + --execution-client "$EXECUTION_CLIENT" + ) + + # Set RISC0_KECCAK_PO2 environment variable for risc0 benchmarks + local env_prefix="" + if [ "$ZKVM" = "risc0" ]; then + env_prefix="RISC0_KECCAK_PO2=$RISC0_KECCAK_PO2" + print_status "$BLUE" "🔧 RISC0_KECCAK_PO2=$RISC0_KECCAK_PO2" + fi + + if env $env_prefix cargo run "${cmd_args[@]}"; then + print_status "$GREEN" "✅ Successfully completed benchmark for $gas_value" + + # Count the generated metric files + local file_count=$(find "$metrics_dir" -type f 2>/dev/null | wc -l) + print_status "$GREEN" "📊 Generated $file_count metric files in $metrics_dir" + else + print_status "$RED" "❌ Failed to complete benchmark for $gas_value" + return 1 + fi +} + +# Function to show summary +show_summary() { + print_status "$GREEN" "\n🎉 Benchmark execution completed!" + print_status "$BLUE" "\n📊 Summary of benchmark results:" + + for gas_value in "${GAS_CATEGORIES[@]}"; do + local input_dir="${BASE_INPUT_DIR}-${gas_value}" + local metrics_dir="${BASE_METRICS_DIR}-${ZKVM}-${gas_value}" + + if [ -d "$input_dir" ] && [ -d "$metrics_dir" ]; then + local metric_file_count=$(find "$metrics_dir" -type f 2>/dev/null | wc -l) + print_status "$GREEN" " ✅ $gas_value: $metric_file_count metric files in $metrics_dir" + elif [ ! -d "$input_dir" ]; then + print_status "$YELLOW" " ⚠️ $gas_value: Input directory $input_dir not found" + else + print_status "$RED" " ❌ $gas_value: Failed or no metrics generated" + fi + done + + print_status "$BLUE" "\n📁 All metrics are located in: $BASE_METRICS_DIR-$ZKVM-*" +} + +# Main execution +main() { + # Parse gas categories early so we can display them + parse_gas_categories + + # Validate resource and zkVM combination early + validate_resource_zkvm + + if [ "$DRY_RUN" = true ]; then + print_status "$YELLOW" "🔍 DRY RUN MODE - No actual execution will occur" + print_status "$BLUE" "🚀 Would start ere-hosts benchmarks for gas categories..." + print_status "$BLUE" "📊 Action: $ACTION" + print_status "$BLUE" "🖥️ Resource: $RESOURCE" + print_status "$BLUE" "🎯 Guest: $GUEST" + print_status "$BLUE" "🔧 zkVM: $ZKVM" + print_status "$BLUE" "⚙️ Execution Client: $EXECUTION_CLIENT" + print_status "$BLUE" "📁 Input: $BASE_INPUT_DIR" + print_status "$BLUE" "📂 Output: $BASE_METRICS_DIR" + if [ -n "$CUSTOM_GAS_CATEGORIES" ]; then + print_status "$BLUE" "⛽ Gas Categories: ${GAS_CATEGORIES[*]} (custom)" + else + print_status "$BLUE" "⛽ Gas Categories: ${GAS_CATEGORIES[*]} (defaults)" + fi + print_status "$BLUE" "🔄 Force Rerun: $FORCE_RERUN" + print_status "$BLUE" "🧠 Memory Tracking: $MEMORY_TRACKING" + if [ "$ZKVM" = "risc0" ]; then + print_status "$BLUE" "🔧 RISC0_KECCAK_PO2: $RISC0_KECCAK_PO2" + fi + print_status "$BLUE" "\n📋 Would execute the following commands:" + + for gas_value in "${GAS_CATEGORIES[@]}"; do + local input_dir="${BASE_INPUT_DIR}-${gas_value}" + local metrics_dir="${BASE_METRICS_DIR}-${ZKVM}-${gas_value}" + + # Build features list + local features="" + if [ "$MEMORY_TRACKING" = true ]; then + features="memory-tracking" + fi + + local force_arg="" + if [ "$FORCE_RERUN" = true ]; then + force_arg="--force-rerun" + fi + + local env_prefix="" + if [ "$ZKVM" = "risc0" ]; then + env_prefix="RISC0_KECCAK_PO2=$RISC0_KECCAK_PO2 " + fi + + local cmd_preview="${env_prefix}cargo run --release --bin ere-hosts" + if [ -n "$features" ]; then + cmd_preview="$cmd_preview --features $features" + fi + cmd_preview="$cmd_preview -- --zkvms $ZKVM -a $ACTION -r $RESOURCE" + if [ -n "$force_arg" ]; then + cmd_preview="$cmd_preview $force_arg" + fi + cmd_preview="$cmd_preview -o \"$metrics_dir\" $GUEST --input-folder \"$input_dir\" --execution-client $EXECUTION_CLIENT" + + print_status "$BLUE" " $cmd_preview" + print_status "$BLUE" " # Input: $input_dir" + done + + print_status "$GREEN" "\n✅ Dry run completed. Use without --dry-run to execute." + exit 0 + fi + + print_status "$BLUE" "🚀 Starting ere-hosts benchmarks for gas categories..." + print_status "$BLUE" "📊 Action: $ACTION" + print_status "$BLUE" "🖥️ Resource: $RESOURCE" + print_status "$BLUE" "🎯 Guest: $GUEST" + print_status "$BLUE" "🔧 zkVM: $ZKVM" + print_status "$BLUE" "⚙️ Execution Client: $EXECUTION_CLIENT" + print_status "$BLUE" "📁 Input: $BASE_INPUT_DIR" + print_status "$BLUE" "📂 Output: $BASE_METRICS_DIR" + if [ -n "$CUSTOM_GAS_CATEGORIES" ]; then + print_status "$BLUE" "⛽ Gas Categories: ${GAS_CATEGORIES[*]} (custom)" + else + print_status "$BLUE" "⛽ Gas Categories: ${GAS_CATEGORIES[*]} (defaults)" + fi + print_status "$BLUE" "🔄 Force Rerun: $FORCE_RERUN" + print_status "$BLUE" "🧠 Memory Tracking: $MEMORY_TRACKING" + if [ "$ZKVM" = "risc0" ]; then + print_status "$BLUE" "🔧 RISC0_KECCAK_PO2: $RISC0_KECCAK_PO2" + fi + + # Pre-flight checks + check_cargo + check_workspace + + # Check input fixtures + check_input_fixtures + + # Build the project + build_project + + # Run benchmarks for each gas category + local failed_categories=() + + for gas_value in "${GAS_CATEGORIES[@]}"; do + if run_benchmark "$gas_value"; then + print_status "$GREEN" "✅ Completed: $gas_value" + else + print_status "$RED" "❌ Failed: $gas_value" + failed_categories+=("$gas_value") + fi + + echo "" # Add spacing between categories + done + + # Show summary + show_summary + + # Exit with error if any categories failed + if [ ${#failed_categories[@]} -gt 0 ]; then + print_status "$YELLOW" "\n⚠️ Some gas categories failed to complete:" + for gas_value in "${failed_categories[@]}"; do + print_status "$YELLOW" " - $gas_value" + done + exit 1 + fi + + print_status "$GREEN" "\n🎯 All gas categories completed successfully!" +} + +# Run main function +main "$@" \ No newline at end of file diff --git a/scripts/sp1-cluster/docker-compose.yml b/scripts/sp1-cluster/docker-compose.yml new file mode 100644 index 00000000..ca023b2c --- /dev/null +++ b/scripts/sp1-cluster/docker-compose.yml @@ -0,0 +1,279 @@ +# Docker Compose for SP1 Cluster using REMOTE images from GHCR +# No local build required - just pull and run! +# +# Usage: +# docker compose -f docker-compose.yml down -v +# docker compose -f docker-compose.yml up -d postgresql redis api coordinator cpu-node gpu0 gpu1 gpu2 gpu3 +# sleep 15 +# +# Configuration: +# Copy env.example to .env and customize resource limits and ports. +# See env.example for all available configuration options. +# +# High Availability Notes: +# This configuration runs a single instance of each service. For production +# deployments requiring high availability: +# +# 1. Run multiple SP1 clusters on separate machines with a load balancer +# 2. Use external managed services for Redis and PostgreSQL +# 3. Configure proper monitoring and alerting +# 4. Implement backup and recovery procedures +# +# See the documentation for detailed HA deployment guidance. + +services: + # Redis service - Used for artifact storage and caching + redis: + image: bitnami/redis:latest + environment: + - REDIS_PASSWORD=${REDIS_PASSWORD:-redispassword} + - REDIS_AOF_ENABLED=no + volumes: + - redis_data:/bitnami/redis/data + ports: + - "0.0.0.0:${REDIS_PORT:-6379}:6379" + deploy: + resources: + limits: + memory: ${REDIS_MEMORY_LIMIT:-30G} + reservations: + memory: ${REDIS_MEMORY_RESERVATION:-30G} + healthcheck: + test: ["CMD", "redis-cli", "-a", "${REDIS_PASSWORD:-redispassword}", "ping"] + interval: 10s + timeout: 5s + retries: 5 + start_period: 10s + restart: unless-stopped + + # PostgreSQL database - Stores cluster state and job metadata + postgresql: + image: bitnami/postgresql:latest + environment: + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-postgrespassword} + - POSTGRES_USER=${POSTGRES_USER:-postgres} + - POSTGRES_DB=${POSTGRES_DB:-postgres} + volumes: + - postgresql_data:/bitnami/postgresql + # ports: + # - "5432:5432" + healthcheck: + test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-postgres} -d ${POSTGRES_DB:-postgres}"] + interval: 10s + timeout: 5s + retries: 5 + start_period: 30s + restart: unless-stopped + + # API Service - Main entry point for proof requests + api: + image: ghcr.io/succinctlabs/sp1-cluster:base-latest + environment: + - API_GRPC_ADDR=0.0.0.0:50051 + - API_HTTP_ADDR=0.0.0.0:3000 + - API_AUTO_MIGRATE=true + - API_DATABASE_URL=postgresql://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD:-postgrespassword}@postgresql:5432/${POSTGRES_DB:-postgres} + ports: + - "0.0.0.0:${API_PORT:-50051}:50051" + depends_on: + postgresql: + condition: service_healthy + healthcheck: + test: ["CMD-SHELL", "wget -q -O /dev/null --spider http://localhost:3000 || exit 1"] + interval: 15s + timeout: 10s + retries: 5 + start_period: 30s + restart: unless-stopped + + # Coordinator Service - Manages job distribution to workers + coordinator: + image: ghcr.io/succinctlabs/sp1-cluster:base-latest + environment: + - COORDINATOR_CLUSTER_RPC=http://api:50051 + - COORDINATOR_METRICS_ADDR=0.0.0.0:9090 + - COORDINATOR_ADDR=0.0.0.0:50051 + command: ["/bin/sh", "-c", "/coordinator"] + # ports: + # - "50052:50051" + depends_on: + api: + condition: service_healthy + healthcheck: + test: ["CMD-SHELL", "wget -q -O /dev/null --timeout=5 http://localhost:9090/metrics 2>/dev/null || timeout 5 bash -c 'echo > /dev/tcp/localhost/50051' 2>/dev/null || exit 1"] + interval: 15s + timeout: 10s + retries: 5 + start_period: 30s + restart: unless-stopped + + # CPU Node - Handles CPU-bound proving tasks + cpu-node: + image: ghcr.io/succinctlabs/sp1-cluster:base-latest + environment: + - NODE_COORDINATOR_RPC=http://coordinator:50051 + - WORKER_MAX_WEIGHT_OVERRIDE=32 + - NODE_ARTIFACT_STORE=redis + - NODE_REDIS_NODES=redis://:${REDIS_PASSWORD:-redispassword}@redis:6379/0 + - WORKER_TYPE=CPU + volumes: + - ${SP1_CIRCUITS_DIR:-${HOME}/.sp1/circuits}:/root/.sp1/circuits + command: ["/bin/sh", "-c", "/node"] + deploy: + resources: + limits: + cpus: '${CPU_NODE_CPUS_LIMIT:-8}' + memory: ${CPU_NODE_MEMORY_LIMIT:-32G} + reservations: + cpus: '${CPU_NODE_CPUS_RESERVATION:-4}' + memory: ${CPU_NODE_MEMORY_RESERVATION:-32G} + depends_on: + coordinator: + condition: service_healthy + redis: + condition: service_healthy + restart: unless-stopped + + # CPU Node (mixed mode) - Handles both CPU and GPU tasks + mixed: + image: ghcr.io/succinctlabs/sp1-cluster:base-latest + environment: + - NODE_COORDINATOR_RPC=http://coordinator:50051 + - WORKER_MAX_WEIGHT_OVERRIDE=32 + - NODE_ARTIFACT_STORE=redis + - NODE_REDIS_NODES=redis://:${REDIS_PASSWORD:-redispassword}@redis:6379/0 + - WORKER_TYPE=ALL + volumes: + - ${SP1_CIRCUITS_DIR:-${HOME}/.sp1/circuits}:/root/.sp1/circuits + command: ["/bin/sh", "-c", "/node"] + deploy: + resources: + limits: + cpus: '${MIXED_NODE_CPUS_LIMIT:-8}' + memory: ${MIXED_NODE_MEMORY_LIMIT:-32G} + reservations: + cpus: '${MIXED_NODE_CPUS_RESERVATION:-4}' + memory: ${MIXED_NODE_MEMORY_RESERVATION:-32G} + depends_on: + coordinator: + condition: service_healthy + redis: + condition: service_healthy + restart: unless-stopped + + # GPU Node - Base configuration for GPU-accelerated proving + # Each GPU worker is assigned to a single GPU for isolation + # Benefits: Memory isolation, fault tolerance, predictable performance + gpu0: + image: ghcr.io/succinctlabs/sp1-cluster:node-gpu-latest + command: ["/bin/sh", "-c", "/app/sp1-cluster-node"] + environment: + - NODE_COORDINATOR_RPC=http://coordinator:50051 + - WORKER_MAX_WEIGHT_OVERRIDE=24 + - NODE_ARTIFACT_STORE=redis + - NODE_REDIS_NODES=redis://:${REDIS_PASSWORD:-redispassword}@redis:6379/0 + - WORKER_TYPE=GPU + - RUST_LOG=info,moongate_core=off + volumes: + - ${SP1_CIRCUITS_DIR:-${HOME}/.sp1/circuits}:/root/.sp1/circuits + deploy: + resources: + limits: + cpus: '${GPU_NODE_CPUS_LIMIT:-32}' + memory: ${GPU_NODE_MEMORY_LIMIT:-24G} + reservations: + cpus: '${GPU_NODE_CPUS_RESERVATION:-32}' + memory: ${GPU_NODE_MEMORY_RESERVATION:-24G} + depends_on: + coordinator: + condition: service_healthy + redis: + condition: service_healthy + cpu-node: + condition: service_started + # GPU support - requires NVIDIA Container Toolkit + runtime: nvidia + restart: unless-stopped + + gpu1: + environment: + - CUDA_VISIBLE_DEVICES=1 + extends: + service: gpu0 + + gpu2: + environment: + - CUDA_VISIBLE_DEVICES=2 + extends: + service: gpu0 + + gpu3: + environment: + - CUDA_VISIBLE_DEVICES=3 + extends: + service: gpu0 + + gpu4: + environment: + - CUDA_VISIBLE_DEVICES=4 + extends: + service: gpu0 + + gpu5: + environment: + - CUDA_VISIBLE_DEVICES=5 + extends: + service: gpu0 + + gpu6: + environment: + - CUDA_VISIBLE_DEVICES=6 + extends: + service: gpu0 + + gpu7: + environment: + - CUDA_VISIBLE_DEVICES=7 + extends: + service: gpu0 + + # Fulfiller Service - Handles proof fulfillment + fulfiller: + image: ghcr.io/succinctlabs/sp1-cluster:base-latest + environment: + - FULFILLER_CLUSTER_RPC=http://api:50051 + - FULFILLER_LOG_FORMAT=Pretty + - FULFILLER_CLUSTER_ARTIFACT_STORE=redis + - FULFILLER_VERSION=sp1-v5.0.0 + - FULFILLER_DOMAIN=SPN_SEPOLIA_V1_DOMAIN + - FULFILLER_CLUSTER_REDIS_NODES=redis://:${REDIS_PASSWORD:-redispassword}@redis:6379/0 + - FULFILLER_METRICS_ADDR=0.0.0.0:9090 + - FULFILLER_RPC_GRPC_ADDR=${RPC_GRPC_ADDR} + - FULFILLER_SP1_PRIVATE_KEY=${FULFILLER_SP1_PRIVATE_KEY:-} + depends_on: + coordinator: + condition: service_healthy + redis: + condition: service_healthy + command: ["/bin/sh", "-c", "/fulfiller"] + restart: unless-stopped + + # Bidder Service - Handles proof bidding + bidder: + image: ghcr.io/succinctlabs/sp1-cluster:base-latest + environment: + - BIDDER_LOG_FORMAT=Pretty + - BIDDER_VERSION=sp1-v5.0.0 + - BIDDER_DOMAIN=SPN_SEPOLIA_V1_DOMAIN + - BIDDER_METRICS_ADDR=0.0.0.0:9090 + - BIDDER_RPC_GRPC_ADDR=${RPC_GRPC_ADDR} + - BIDDER_SP1_PRIVATE_KEY=${BIDDER_SP1_PRIVATE_KEY:-} + - BIDDER_THROUGHPUT_MGAS=1 + - BIDDER_MAX_CONCURRENT_PROOFS=1 + - BIDDER_BID_AMOUNT=1 + command: ["/bin/sh", "-c", "/bidder"] + restart: unless-stopped + +volumes: + redis_data: + postgresql_data: diff --git a/scripts/sp1-cluster/env.example b/scripts/sp1-cluster/env.example new file mode 100644 index 00000000..727223db --- /dev/null +++ b/scripts/sp1-cluster/env.example @@ -0,0 +1,80 @@ +# SP1 Cluster Environment Configuration +# Copy this file to .env and customize as needed +# +# Usage: +# cp env.example .env +# # Edit .env with your values +# ./start-sp1-cluster.sh + +# ============================================================================= +# RESOURCE LIMITS +# ============================================================================= +# Adjust these based on your system's available resources + +# Redis Memory Limits +# Default: 30G - Redis is used for artifact storage and needs sufficient memory +REDIS_MEMORY_LIMIT=30G +REDIS_MEMORY_RESERVATION=30G + +# CPU Node Resource Limits +# The CPU node handles CPU-bound proving tasks +CPU_NODE_CPUS_LIMIT=8 +CPU_NODE_CPUS_RESERVATION=4 +CPU_NODE_MEMORY_LIMIT=32G +CPU_NODE_MEMORY_RESERVATION=32G + +# Mixed Node Resource Limits (when using --mixed mode) +# The mixed node handles both CPU and GPU tasks +MIXED_NODE_CPUS_LIMIT=8 +MIXED_NODE_CPUS_RESERVATION=4 +MIXED_NODE_MEMORY_LIMIT=32G +MIXED_NODE_MEMORY_RESERVATION=32G + +# GPU Node Resource Limits +# Each GPU node handles GPU-accelerated proving tasks +GPU_NODE_CPUS_LIMIT=32 +GPU_NODE_CPUS_RESERVATION=32 +GPU_NODE_MEMORY_LIMIT=24G +GPU_NODE_MEMORY_RESERVATION=24G + +# ============================================================================= +# SP1 CIRCUITS CACHE +# ============================================================================= +# Directory for SP1 circuit cache (will be created if it doesn't exist) +# SP1_CIRCUITS_DIR=${HOME}/.sp1/circuits + +# ============================================================================= +# NETWORK PORTS +# ============================================================================= +# Customize these if running multiple clusters or avoiding port conflicts + +# API gRPC Port (default: 50051) +# API_PORT=50051 + +# Redis Port (default: 6379) +# REDIS_PORT=6379 + +# ============================================================================= +# OPTIONAL SERVICES +# ============================================================================= +# These are only needed for specific use cases + +# Fulfiller RPC Address (for fulfiller service) +# RPC_GRPC_ADDR= + +# ============================================================================= +# ADVANCED CONFIGURATION +# ============================================================================= +# Modify these only if you understand the implications + +# Redis Password +REDIS_PASSWORD=redispassword + +# PostgreSQL Configuration +POSTGRES_PASSWORD=postgrespassword +POSTGRES_USER=postgres +POSTGRES_DB=postgres + +BIDDER_SP1_PRIVATE_KEY= +FULFILLER_SP1_PRIVATE_KEY + diff --git a/scripts/sp1-cluster/start-sp1-cluster.sh b/scripts/sp1-cluster/start-sp1-cluster.sh new file mode 100755 index 00000000..965a3eea --- /dev/null +++ b/scripts/sp1-cluster/start-sp1-cluster.sh @@ -0,0 +1,588 @@ +#!/usr/bin/env bash +# +# SP1 Cluster Startup Script +# +# Usage: +# ./start-sp1-cluster.sh [OPTIONS] +# +# Options: +# --gpu-nodes N Number of GPU worker nodes (0-8, default: 1) +# Use 0 for CPU-only mode +# --mixed Use mixed worker instead of separate CPU/GPU workers +# --port PORT Set API gRPC port (default: 50051) +# --redis-port PORT Set Redis port (default: 6379) +# --pull Force re-pull of Docker images +# --detach, -d Run in detached mode +# --wait Wait for all services to be healthy (implies --detach) +# --skip-gpu-check Skip NVIDIA runtime verification (use if you know GPU is available) +# --help, -h Show this help message +# +# Examples: +# ./start-sp1-cluster.sh # 1 GPU worker (default) +# ./start-sp1-cluster.sh --gpu-nodes 2 # 2 GPU workers +# ./start-sp1-cluster.sh --gpu-nodes 0 # CPU-only mode +# ./start-sp1-cluster.sh --gpu-nodes 4 -d # 4 GPU workers, detached +# ./start-sp1-cluster.sh --mixed -d # Mixed mode worker +# ./start-sp1-cluster.sh --port 50052 # Custom API port (for multiple clusters) +# ./start-sp1-cluster.sh --wait # Wait for all services to be healthy + +set -euo pipefail + +# Script directory +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +cd "$SCRIPT_DIR" + +# Default values +GPU_NODES=1 +FORCE_PULL=false +DETACH=false +MIXED_MODE=false +SKIP_GPU_CHECK=false +WAIT_HEALTHY=false + +# Port configuration (can be overridden via CLI or .env) +# These are set here but may be overridden by .env file or CLI args +CLI_API_PORT="" +CLI_REDIS_PORT="" + +# Docker Compose command (will be set by detect_docker_compose) +DOCKER_COMPOSE_CMD="" + +# Colors for output +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +CYAN='\033[0;36m' +NC='\033[0m' # No Color + +# Logging functions +log_info() { + echo -e "${BLUE}[INFO]${NC} $1" +} + +log_success() { + echo -e "${GREEN}[SUCCESS]${NC} $1" +} + +log_warn() { + echo -e "${YELLOW}[WARN]${NC} $1" +} + +log_error() { + echo -e "${RED}[ERROR]${NC} $1" +} + +log_hint() { + echo -e "${CYAN}[HINT]${NC} $1" +} + +# Show help +show_help() { + cat << EOF +SP1 Cluster Startup Script + +Usage: + $0 [OPTIONS] + +Options: + --gpu-nodes N Number of GPU worker nodes (0-8, default: 1) + Use 0 for CPU-only mode + --mixed Use mixed worker (WORKER_TYPE=ALL) instead of separate workers + --port PORT Set API gRPC port (default: 50051, overrides API_PORT env var) + --redis-port PORT Set Redis port (default: 6379, overrides REDIS_PORT env var) + --pull Force re-pull of Docker images + --detach, -d Run in detached mode + --wait Wait for all services to be healthy (implies --detach) + --skip-gpu-check Skip NVIDIA runtime verification + --help, -h Show this help message + +Examples: + $0 # 1 GPU worker (default) + $0 --gpu-nodes 2 # 2 GPU workers (gpu0, gpu1) + cpu-node + $0 --gpu-nodes 0 # CPU-only mode (cpu-node only) + $0 --gpu-nodes 4 -d # 4 GPU workers, detached + $0 --mixed -d # Mixed mode worker, detached + $0 --port 50052 # Run on custom API port + $0 --port 50052 --redis-port 6380 # Custom ports for multiple clusters + $0 --wait # Wait for all services to be healthy + +Images: + Uses pre-built images from ghcr.io/succinctlabs/sp1-cluster + +Services: + Core: redis, postgresql, api, coordinator + CPU: cpu-node (or mixed) + GPU: gpu0, gpu1, gpu2, gpu3, gpu4, gpu5, gpu6, gpu7 + +API Endpoints: + gRPC API: http://localhost:\${API_PORT:-50051} + Redis: localhost:\${REDIS_PORT:-6379} + +Configuration: + Copy env.example to .env to customize resource limits and ports. + CLI arguments (--port, --redis-port) override .env settings. + +Architecture Notes: + + GPU Worker Isolation (One GPU per Worker): + Each GPU worker is assigned to a single GPU via CUDA_VISIBLE_DEVICES. + This design provides several benefits: + + - Memory Isolation: Each worker has dedicated GPU memory, preventing + out-of-memory errors from affecting other workers + - Fault Tolerance: If one GPU worker crashes or hangs, other workers + continue operating independently + - Predictable Performance: No resource contention between workers on + the same GPU ensures consistent proving times + - Simplified Debugging: Issues can be traced to specific GPU/worker pairs + + GPU Worker Limit (Maximum 8): + The cluster supports up to 8 GPU workers (gpu0-gpu7). This limit is based on: + + - Typical Server Configurations: Most GPU servers have 4-8 GPUs + - Resource Management: Each GPU worker requires significant CPU and memory + - Coordinator Overhead: Managing more workers increases coordination complexity + + For larger deployments, run multiple SP1 clusters on separate machines. + +EOF + exit 0 +} + +# Parse arguments +while [[ $# -gt 0 ]]; do + case $1 in + --gpu-nodes) + GPU_NODES="$2" + shift 2 + ;; + --mixed) + MIXED_MODE=true + shift + ;; + --port) + CLI_API_PORT="$2" + shift 2 + ;; + --redis-port) + CLI_REDIS_PORT="$2" + shift 2 + ;; + --pull) + FORCE_PULL=true + shift + ;; + --detach|-d) + DETACH=true + shift + ;; + --wait) + WAIT_HEALTHY=true + DETACH=true # --wait implies --detach + shift + ;; + --skip-gpu-check) + SKIP_GPU_CHECK=true + shift + ;; + --help|-h) + show_help + ;; + *) + log_error "Unknown option: $1" + show_help + ;; + esac +done + +# Validate GPU_NODES is a valid integer (0-8) +# The 8 GPU limit is a design decision based on: +# - Typical server configurations (most GPU servers have 4-8 GPUs) +# - Resource management (each GPU worker needs significant CPU/memory) +# - Coordinator overhead (more workers = more coordination complexity) +# For larger deployments, run multiple SP1 clusters on separate machines. +if ! [[ "$GPU_NODES" =~ ^[0-8]$ ]]; then + log_error "--gpu-nodes must be an integer between 0 and 8" + log_hint "For more than 8 GPUs, run multiple SP1 clusters on separate machines" + exit 1 +fi + +# Load environment variables if .env exists +if [[ -f ".env" ]]; then + log_info "Loading environment from .env" + set -a + source .env + set +a +else + log_warn "No .env file found. Using defaults. Copy env.example to .env to customize." +fi + +# Apply CLI port overrides (CLI args take precedence over .env) +if [[ -n "$CLI_API_PORT" ]]; then + export API_PORT="$CLI_API_PORT" + log_info "Using CLI-specified API port: $API_PORT" +fi + +if [[ -n "$CLI_REDIS_PORT" ]]; then + export REDIS_PORT="$CLI_REDIS_PORT" + log_info "Using CLI-specified Redis port: $REDIS_PORT" +fi + +# Validate port numbers if specified +validate_port() { + local port="$1" + local name="$2" + if [[ -n "$port" ]] && ! [[ "$port" =~ ^[0-9]+$ && "$port" -ge 1 && "$port" -le 65535 ]]; then + log_error "Invalid $name: $port (must be 1-65535)" + exit 1 + fi +} + +validate_port "${API_PORT:-}" "API port" +validate_port "${REDIS_PORT:-}" "Redis port" + +# Ensure SP1 circuits cache directory exists +# This directory is mounted into containers for caching compiled circuits +# Without this directory, Docker will create it as root, causing permission issues +ensure_circuits_dir() { + local circuits_dir="${SP1_CIRCUITS_DIR:-${HOME}/.sp1/circuits}" + + if [[ ! -d "$circuits_dir" ]]; then + log_info "Creating SP1 circuits cache directory: $circuits_dir" + if mkdir -p "$circuits_dir"; then + log_success "Created circuits directory" + else + log_error "Failed to create circuits directory: $circuits_dir" + log_hint "Create it manually: mkdir -p $circuits_dir" + log_hint "Or set SP1_CIRCUITS_DIR in .env to a different location" + return 1 + fi + else + log_info "SP1 circuits cache directory exists: $circuits_dir" + fi + + # Check if directory is writable + if [[ ! -w "$circuits_dir" ]]; then + log_warn "Circuits directory is not writable: $circuits_dir" + log_hint "Fix permissions: chmod u+w $circuits_dir" + fi + + # Export for use in docker-compose + export SP1_CIRCUITS_DIR="$circuits_dir" + return 0 +} + +# Detect and set Docker Compose command +# Supports both Docker Compose v2 (docker compose) and v1 (docker-compose) +detect_docker_compose() { + # Try Docker Compose v2 first (preferred) + if docker compose version &> /dev/null; then + DOCKER_COMPOSE_CMD="docker compose" + local version + version=$(docker compose version --short 2>/dev/null || docker compose version 2>/dev/null | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -1) + log_info "Using Docker Compose v2 ($version)" + return 0 + fi + + # Fall back to Docker Compose v1 (legacy) + if command -v docker-compose &> /dev/null; then + DOCKER_COMPOSE_CMD="docker-compose" + local version + version=$(docker-compose version --short 2>/dev/null || docker-compose --version 2>/dev/null | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -1) + log_warn "Using Docker Compose v1 ($version) - legacy version" + log_warn "Consider upgrading to Docker Compose v2 for better performance and features" + log_hint "Upgrade guide: https://docs.docker.com/compose/migrate/" + return 0 + fi + + # Neither found + log_error "Docker Compose is not installed." + log_hint "Install Docker Compose:" + log_hint " - Docker Desktop (includes Compose v2): https://docs.docker.com/desktop/" + log_hint " - Linux standalone: https://docs.docker.com/compose/install/linux/" + return 1 +} + +# Check NVIDIA GPU availability +check_nvidia_gpu() { + local gpu_available=false + local nvidia_smi_available=false + local docker_nvidia_runtime=false + + # Check if nvidia-smi is available and working + if command -v nvidia-smi &> /dev/null; then + nvidia_smi_available=true + if nvidia-smi &> /dev/null; then + gpu_available=true + fi + fi + + # Check if Docker has NVIDIA runtime + if docker info 2>/dev/null | grep -q "Runtimes.*nvidia"; then + docker_nvidia_runtime=true + fi + + # Report findings + if [[ "$gpu_available" == true && "$docker_nvidia_runtime" == true ]]; then + log_success "NVIDIA GPU detected and Docker NVIDIA runtime available" + return 0 + fi + + # Detailed error reporting + echo "" + log_error "NVIDIA GPU support is not properly configured" + echo "" + + if [[ "$nvidia_smi_available" == false ]]; then + log_error " - nvidia-smi command not found" + log_hint " Install NVIDIA drivers: https://docs.nvidia.com/datacenter/tesla/tesla-installation-notes/" + elif [[ "$gpu_available" == false ]]; then + log_error " - nvidia-smi failed - GPU may not be accessible" + log_hint " Check GPU status: nvidia-smi" + log_hint " Verify driver installation: cat /proc/driver/nvidia/version" + fi + + if [[ "$docker_nvidia_runtime" == false ]]; then + log_error " - Docker NVIDIA runtime not detected" + log_hint " Install NVIDIA Container Toolkit:" + log_hint " https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html" + echo "" + log_hint " Quick install (Ubuntu/Debian):" + log_hint " curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg" + log_hint " curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \\" + log_hint " sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \\" + log_hint " sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list" + log_hint " sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit" + log_hint " sudo nvidia-ctk runtime configure --runtime=docker" + log_hint " sudo systemctl restart docker" + fi + + echo "" + log_hint "Alternatives:" + log_hint " - Use CPU-only mode: $0 --gpu-nodes 0" + log_hint " - Skip this check: $0 --skip-gpu-check" + echo "" + + return 1 +} + +# Check prerequisites +check_prerequisites() { + log_info "Checking prerequisites..." + + # Check Docker + if ! command -v docker &> /dev/null; then + log_error "Docker is not installed." + log_hint "Install Docker: https://docs.docker.com/engine/install/" + exit 1 + fi + + # Check if Docker daemon is running + if ! docker info &> /dev/null; then + log_error "Docker daemon is not running." + log_hint "Start Docker:" + log_hint " - Linux: sudo systemctl start docker" + log_hint " - macOS: Open Docker Desktop application" + log_hint " - Windows: Start Docker Desktop" + exit 1 + fi + + # Detect Docker Compose (v1 or v2) + if ! detect_docker_compose; then + exit 1 + fi + + # Ensure SP1 circuits cache directory exists + if ! ensure_circuits_dir; then + exit 1 + fi + + # Check NVIDIA runtime if GPU nodes requested + if [[ "$GPU_NODES" -gt 0 && "$SKIP_GPU_CHECK" == false ]]; then + if ! check_nvidia_gpu; then + exit 1 + fi + elif [[ "$GPU_NODES" -gt 0 && "$SKIP_GPU_CHECK" == true ]]; then + log_warn "Skipping NVIDIA GPU check (--skip-gpu-check specified)" + log_warn "GPU workers may fail if NVIDIA runtime is not properly configured" + fi + + log_success "Prerequisites check passed" +} + +# Pull Docker images +pull_images() { + log_info "Pulling Docker images..." + $DOCKER_COMPOSE_CMD -f docker-compose.yml pull + log_success "Docker images pulled" +} + +# Build the list of services to start +get_services() { + local services="redis postgresql api coordinator" + + if [[ "$MIXED_MODE" == true ]]; then + services="$services mixed" + else + # Add CPU node + services="$services cpu-node" + + # Add GPU nodes + for ((i=0; i/dev/null | tail -n +2 | head -1) + + # Check for "healthy" status or "Up" status + if echo "$status" | grep -qE "(healthy|Up)"; then + return 0 + fi + + attempt=$((attempt + 1)) + sleep 2 + done + + return 1 +} + +# Wait for all critical services to be healthy +wait_for_health() { + local strict="${1:-false}" + + log_info "Waiting for services to be healthy..." + echo "" + + local services=("redis" "postgresql" "api" "coordinator") + local all_healthy=true + + for service in "${services[@]}"; do + printf " Waiting for %-15s " "$service..." + if wait_for_service "$service" 60; then + echo -e "${GREEN}✓ healthy${NC}" + else + echo -e "${RED}✗ not ready${NC}" + all_healthy=false + fi + done + + echo "" + + if [[ "$all_healthy" == true ]]; then + log_success "All core services are healthy" + return 0 + else + if [[ "$strict" == true ]]; then + log_error "Some services failed to become healthy" + return 1 + else + log_warn "Some services may still be starting. Check logs for details." + log_hint "View logs: $DOCKER_COMPOSE_CMD logs -f" + return 0 + fi + fi +} + +# Print cluster information +print_info() { + local services + services=$(get_services) + + local api_port="${API_PORT:-50051}" + local redis_port="${REDIS_PORT:-6379}" + + echo "" + echo "========================================" + echo -e "${GREEN}SP1 Cluster is running!${NC}" + echo "========================================" + echo "" + echo "gRPC API: http://localhost:${api_port}" + echo "Redis: localhost:${redis_port}" + echo "" + if [[ "$MIXED_MODE" == true ]]; then + echo "Worker Mode: Mixed (ALL)" + elif [[ "$GPU_NODES" -gt 0 ]]; then + echo "Worker Mode: GPU ($GPU_NODES worker(s)) + CPU" + else + echo "Worker Mode: CPU only" + fi + echo "" + echo "Running services: $services" + echo "" + echo "Useful commands:" + echo " View logs: cd $SCRIPT_DIR && $DOCKER_COMPOSE_CMD logs -f" + echo " View status: cd $SCRIPT_DIR && $DOCKER_COMPOSE_CMD ps" + echo " Stop cluster: $SCRIPT_DIR/stop-sp1-cluster.sh" + echo "" +} + +# Main execution +main() { + echo "" + echo "========================================" + echo " SP1 Cluster Startup Script " + echo "========================================" + echo "" + + check_prerequisites + + # Pull images if requested or if images not available + if [[ "$FORCE_PULL" == true ]]; then + pull_images + fi + + start_cluster + + if [[ "$DETACH" == true ]]; then + # If --wait was specified, use strict health checking + if [[ "$WAIT_HEALTHY" == true ]]; then + if ! wait_for_health true; then + log_error "Cluster failed to start properly" + exit 1 + fi + else + wait_for_health false || true + fi + print_info + fi +} + +main diff --git a/scripts/sp1-cluster/stop-sp1-cluster.sh b/scripts/sp1-cluster/stop-sp1-cluster.sh new file mode 100755 index 00000000..c8e3c466 --- /dev/null +++ b/scripts/sp1-cluster/stop-sp1-cluster.sh @@ -0,0 +1,199 @@ +#!/usr/bin/env bash +# +# SP1 Cluster Stop Script +# +# Usage: +# ./stop-sp1-cluster.sh [OPTIONS] +# +# Options: +# --remove-volumes Remove persistent volumes (database, redis data) +# --remove-images Remove Docker images +# --all Remove everything (volumes + images) +# --help, -h Show this help message + +set -euo pipefail + +# Script directory +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +cd "$SCRIPT_DIR" + +# Default values +REMOVE_VOLUMES=false +REMOVE_IMAGES=false + +# Docker Compose command (will be set by detect_docker_compose) +DOCKER_COMPOSE_CMD="" + +# Colors for output +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +CYAN='\033[0;36m' +NC='\033[0m' # No Color + +# Logging functions +log_info() { + echo -e "${BLUE}[INFO]${NC} $1" +} + +log_success() { + echo -e "${GREEN}[SUCCESS]${NC} $1" +} + +log_warn() { + echo -e "${YELLOW}[WARN]${NC} $1" +} + +log_error() { + echo -e "${RED}[ERROR]${NC} $1" +} + +log_hint() { + echo -e "${CYAN}[HINT]${NC} $1" +} + +# Show help +show_help() { + cat << EOF +SP1 Cluster Stop Script + +Usage: + $0 [OPTIONS] + +Options: + --remove-volumes Remove persistent volumes (database, redis data) + --remove-images Remove Docker images + --all Remove everything (volumes + images) + --help, -h Show this help message + +Examples: + $0 # Stop services, keep data + $0 --remove-volumes # Stop and remove all data + $0 --all # Complete cleanup + +EOF + exit 0 +} + +# Parse arguments +while [[ $# -gt 0 ]]; do + case $1 in + --remove-volumes) + REMOVE_VOLUMES=true + shift + ;; + --remove-images) + REMOVE_IMAGES=true + shift + ;; + --all) + REMOVE_VOLUMES=true + REMOVE_IMAGES=true + shift + ;; + --help|-h) + show_help + ;; + *) + log_error "Unknown option: $1" + show_help + ;; + esac +done + +# Detect and set Docker Compose command +# Supports both Docker Compose v2 (docker compose) and v1 (docker-compose) +detect_docker_compose() { + # Try Docker Compose v2 first (preferred) + if docker compose version &> /dev/null; then + DOCKER_COMPOSE_CMD="docker compose" + return 0 + fi + + # Fall back to Docker Compose v1 (legacy) + if command -v docker-compose &> /dev/null; then + DOCKER_COMPOSE_CMD="docker-compose" + log_warn "Using Docker Compose v1 (legacy). Consider upgrading to v2." + return 0 + fi + + # Neither found + log_error "Docker Compose is not installed." + log_hint "Install Docker Compose:" + log_hint " - Docker Desktop (includes Compose v2): https://docs.docker.com/desktop/" + log_hint " - Linux standalone: https://docs.docker.com/compose/install/linux/" + return 1 +} + +# Stop all services +stop_services() { + log_info "Stopping SP1 Cluster services..." + + # Build down command with appropriate flags + local down_flags="" + + if [[ "$REMOVE_VOLUMES" == true ]]; then + down_flags="$down_flags -v" + log_info "Will remove volumes" + fi + + if [[ "$REMOVE_IMAGES" == true ]]; then + down_flags="$down_flags --rmi all" + log_info "Will remove images" + fi + + # Stop all services from docker-compose.yml + # shellcheck disable=SC2086 + $DOCKER_COMPOSE_CMD -f docker-compose.yml down $down_flags 2>/dev/null || true + + log_success "Services stopped" +} + +# Show status +show_status() { + echo "" + + # Check if any containers are still running + local running_containers + running_containers=$($DOCKER_COMPOSE_CMD -f docker-compose.yml ps -q 2>/dev/null | wc -l) + + if [[ "$running_containers" -eq 0 ]]; then + log_success "All SP1 Cluster containers have been stopped" + else + log_warn "Some containers may still be running. Check with: $DOCKER_COMPOSE_CMD ps" + fi +} + +# Main execution +main() { + echo "" + echo "========================================" + echo " SP1 Cluster Stop Script " + echo "========================================" + echo "" + + # Detect Docker Compose + if ! detect_docker_compose; then + exit 1 + fi + + stop_services + show_status + + echo "" + if [[ "$REMOVE_VOLUMES" == true ]]; then + log_info "Persistent data has been removed" + else + log_info "Persistent data preserved. Use --remove-volumes to delete." + fi + + if [[ "$REMOVE_IMAGES" == true ]]; then + log_info "Docker images have been removed" + else + log_info "Docker images preserved. Use --remove-images to delete." + fi + echo "" +} + +main diff --git a/scripts/test_name_formatter.py b/scripts/test_name_formatter.py new file mode 100755 index 00000000..bd0d8da0 --- /dev/null +++ b/scripts/test_name_formatter.py @@ -0,0 +1,291 @@ +#!/usr/bin/env python3 +""" +Test Name Formatter for Benchmark Tests. + +Converts pytest test names to human-readable display names with the format: +OPCODE/PRECOMPILE (parameters) + +Example: + Input: worst_compute::worst_binop_simple[Prague-benchmark-gas-value_10M-opcode_EXP] + Output: EXP (10M gas, Prague) + + Input: worst_compute::worst_precompile_fixed_cost[ + Prague-benchmark-gas-value_120M-bls12_pairing_check] + Output: PRECOMPILE_BLS12_PAIRING (120M gas, Prague) + +""" + +import argparse +import json +import re +import sys +from dataclasses import dataclass +from typing import List + +from opcode_test_parser import OpcodeTestParser + +# Import the original display name function as fallback +try: + from test_name_parser import get_display_name as get_fallback_display_name +except ImportError: + def get_fallback_display_name(filename: str) -> str: + return filename + + +@dataclass +class DisplayName: + """Structured display name for a test.""" + + opcodes: List[str] + parameters: List[str] + + def __str__(self) -> str: + """Format as 'OPCODE (param1, param2, ...)'.""" + opcode_str = ", ".join(self.opcodes) + if self.parameters: + param_str = ", ".join(self.parameters) + return f"{opcode_str} ({param_str})" + return opcode_str + + +class TestNameFormatter: + """Formats pytest test names into human-readable display names.""" + + def __init__(self) -> None: + """Initialize the formatter with an opcode parser.""" + self.opcode_parser = OpcodeTestParser() + + def format_test_name(self, test_name: str) -> str: + """ + Convert a pytest test name to a human-readable display name. + + Args: + test_name: The pytest test name (e.g., "test_file::test_func[params]") + + Returns: + A formatted display name with opcodes first, then parameters + + """ + # Parse opcodes using the existing parser + test_info = self.opcode_parser.parse_test_name(test_name) + + # If we can't determine the opcode, fall back to the original display name + if test_info.opcodes == ["UNKNOWN"]: + return get_fallback_display_name(test_name) + + # Extract parameters from the test name + parameters = self._extract_parameters(test_name) + + # Create display name + display = DisplayName( + opcodes=test_info.opcodes if test_info.opcodes else ["UNKNOWN"], + parameters=parameters + ) + + return str(display) + + def _extract_parameters(self, test_name: str) -> List[str]: + """ + Extract relevant parameters from the test name. + + Prioritizes: + 1. Gas value (e.g., "10M gas") + 2. Fork name (e.g., "Prague", "Cancun") + 3. Other meaningful parameters (sizes, counts, modes) + """ + params: List[str] = [] + + # Extract the parameter string (everything in brackets) + param_match = re.search(r"\[(.*?)\]$", test_name) + if not param_match: + return params + + param_str = param_match.group(1) + param_parts = param_str.split("-") + + # Track what we've found to avoid duplicates + found_gas = False + found_fork = False + + for part in param_parts: + # Gas value (e.g., "value_10M" -> "10M gas") + if not found_gas and "value_" in part: + gas_match = re.search(r"value_(\d+[KMG]?)", part) + if gas_match: + params.append(f"{gas_match.group(1)} gas") + found_gas = True + continue + + # Fork names (handle both "Prague" and "fork_Prague") + fork_names = [ + "Frontier", "Homestead", "Byzantium", "Constantinople", "Istanbul", + "Berlin", "London", "Paris", "Shanghai", "Cancun", "Prague", + "Osaka", "Amsterdam", + ] + if not found_fork: + # Check if part is directly a fork name + if part in fork_names: + params.append(part) + found_fork = True + continue + # Check if part starts with "fork_" + if part.startswith("fork_"): + fork_name = part.replace("fork_", "") + if fork_name in fork_names: + params.append(fork_name) + found_fork = True + continue + + # Skip common noise parameters + if part in [ + "benchmark", "gas", "blockchain_test", "state_test", + "blockchain_test_from_state_test", "test", + ]: + continue + + # Skip fork parameters (already processed above) + if part.startswith("fork_"): + continue + + # Skip opcode parameters (already captured) + if part.startswith("opcode_"): + continue + + # Skip precompile addresses (already captured) + if part.startswith("precompile_address_"): + continue + + # Skip precompile names if they match known ones (already captured) + if self._is_precompile_name(part): + continue + + # Skip opcode names that are already captured (log0-4, dup1-16, swap1-16, push1-32) + if part.upper() in ["LOG0", "LOG1", "LOG2", "LOG3", "LOG4", + "DUP1", "DUP2", "DUP3", "DUP4", "DUP5", "DUP6", "DUP7", "DUP8", + "DUP9", "DUP10", "DUP11", "DUP12", "DUP13", "DUP14", "DUP15", "DUP16", + "SWAP1", "SWAP2", "SWAP3", "SWAP4", "SWAP5", "SWAP6", "SWAP7", "SWAP8", + "SWAP9", "SWAP10", "SWAP11", "SWAP12", "SWAP13", "SWAP14", "SWAP15", "SWAP16", + "PUSH1", "PUSH2", "PUSH3", "PUSH4", "PUSH5", "PUSH6", "PUSH7", "PUSH8", + "PUSH9", "PUSH10", "PUSH11", "PUSH12", "PUSH13", "PUSH14", "PUSH15", "PUSH16", + "PUSH17", "PUSH18", "PUSH19", "PUSH20", "PUSH21", "PUSH22", "PUSH23", "PUSH24", + "PUSH25", "PUSH26", "PUSH27", "PUSH28", "PUSH29", "PUSH30", "PUSH31", "PUSH32"]: + continue + + # Memory/storage sizes + size_match = re.search(r"(\d+)\s*(bytes?|words?|KB|MB)", part, re.IGNORECASE) + if size_match: + params.append(f"{size_match.group(1)} {size_match.group(2)}") + continue + + # Counts (e.g., "pairs_1", "logs_3") + count_match = re.search(r"([a-z_]+)_(\d+)", part) + if count_match: + name = count_match.group(1).replace("_", " ") + count = count_match.group(2) + params.append(f"{count} {name}") + continue + + # Boolean flags (e.g., "fixed_src_dst_True") + if part.endswith("_True") or part.endswith("_False"): + flag_name = part.rsplit("_", 1)[0].replace("_", " ") + flag_value = part.split("_")[-1] + params.append(f"{flag_name}: {flag_value}") + continue + + # Gas cost types for modexp + if "mod_" in part or "exp_" in part or "base_" in part: + params.append(part.replace("_", " ")) + continue + + # Other meaningful short parameters (avoid very long ones) + if len(part) <= 20 and not part.startswith("test_"): + # Clean up underscores for readability + clean_part = part.replace("_", " ") + if clean_part not in params: + params.append(clean_part) + + return params + + def _is_precompile_name(self, name: str) -> bool: + """Check if a parameter looks like a precompile name.""" + precompile_patterns = [ + "ecrecover", "sha256", "ripemd", "identity", "modexp", "bn128", + "ec_add", "ecadd", "ec_mul", "ecmul", "ec_pairing", "ecpairing", + "blake2", "bls12", "p256verify", "secp256r1verify", + "g1add", "g1mul", "g2add", "g2mul", "pairing", + ] + name_lower = name.lower() + return any(pattern in name_lower for pattern in precompile_patterns) + + +def main() -> None: + """CLI interface for the test name formatter.""" + parser = argparse.ArgumentParser( + description="Format pytest test names into human-readable display names", + formatter_class=argparse.RawDescriptionHelpFormatter, + epilog=""" +Examples: + # Format single test name + python test_name_formatter.py "worst_compute::worst_binop_simple[Prague-benchmark-gas-value_10M-opcode_EXP]" + + # Format multiple test names + python test_name_formatter.py "test1" "test2" "test3" + + # Read from stdin + echo "worst_memory::worst_mcopy[Cancun-benchmark-gas-value_10M-0 bytes]" | python test_name_formatter.py + + # JSON output + python test_name_formatter.py --json "worst_compute::worst_binop_simple[Prague-benchmark-gas-value_10M-opcode_EXP]" + + # Show original test name alongside display name + python test_name_formatter.py --show-original "worst_compute::worst_binop_simple[Prague-benchmark-gas-value_10M-opcode_EXP]" + """, + ) + + parser.add_argument( + "test_names", + nargs="*", + help="One or more pytest test names to format. If omitted, reads from stdin.", + ) + parser.add_argument("--json", action="store_true", help="Output results as JSON") + parser.add_argument( + "--show-original", + action="store_true", + help="Show original test name alongside display name", + ) + + args = parser.parse_args() + + formatter = TestNameFormatter() + + # Get test names from arguments or stdin + if args.test_names: + test_names = args.test_names + else: + # Read from stdin + test_names = [line.strip() for line in sys.stdin if line.strip()] + + if not test_names: + parser.print_help() + sys.exit(1) + + # Format test names + results = [] + for test_name in test_names: + display_name = formatter.format_test_name(test_name) + results.append({"original": test_name, "display": display_name}) + + # Output results + if args.json: + print(json.dumps(results, indent=2)) + else: + for result in results: + if args.show_original: + print(f"{result['original']}") + print(f" → {result['display']}") + else: + print(result["display"]) + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/scripts/test_name_parser.py b/scripts/test_name_parser.py new file mode 100644 index 00000000..fce0c5fb --- /dev/null +++ b/scripts/test_name_parser.py @@ -0,0 +1,362 @@ +#!/usr/bin/env python3 +""" +Test name parser utility for zkEVM benchmark results. + +This module provides functions to parse complex test file names and extract +meaningful information that can be used for display purposes in markdown tables. +""" + +from typing import List, NamedTuple, Tuple + + +class TestInfo(NamedTuple): + """Container for parsed test information.""" + category: str + function: str + parameters: List[str] + simplified_name: str + display_name: str + + +class TestNameParser: + """Parser for complex test file names.""" + + def __init__(self): + # Mapping of test categories to their prefixes + self.category_prefixes = { + 'test_worst_blocks.py': 'blocks', + 'test_worst_bytecode.py': 'bytecode', + 'test_worst_compute.py': 'compute', + 'test_worst_memory.py': 'memory', + 'test_worst_opcode.py': 'opcode', + 'test_worst_stateful_opcodes.py': 'stateful' + } + + # Common parameter patterns to simplify + self.param_simplifications = { + 'fork_Prague': '', + 'benchmark-gas-value_1M': '', + 'blockchain_test': '', + 'blockchain_test_from_state_test': '', + 'big_memory_expansion_True': 'big_mem', + 'big_memory_expansion_False': 'small_mem', + 'offset_initialized_True': 'init_offset', + 'offset_initialized_False': 'uninit_offset', + 'non_zero_data_True': 'non_zero', + 'non_zero_data_False': 'zero_data', + 'fixed_offset_True': 'fixed', + 'fixed_offset_False': 'dynamic', + 'zeros_topic': 'zero_topic', + 'non_zero_topic': 'non_zero_topic', + 'value_bearing_True': 'with_value', + 'value_bearing_False': 'no_value', + 'absent_target_True': 'absent_target', + 'absent_target_False': 'present_target', + 'fixed_src_dst_True': 'fixed_src_dst', + 'fixed_src_dst_False': 'dynamic_src_dst', + 'zero_byte_True': 'zero_byte', + 'zero_byte_False': 'non_zero_byte' + } + + def extract_parameters(self, filename: str) -> Tuple[str, str, List[str]]: + """ + Extract test category, function, and parameters from filename. + + Args: + filename: The test filename (with or without .json extension) + + Returns: + (category, function, parameters) + """ + # Remove .json extension + name = filename.replace('.json', '') + + # Split on :: to get test_file and test_function[params] + if '::' not in name: + return '', '', [] + + test_file, rest = name.split('::', 1) + + # Extract function name and parameters + if '[' in rest and ']' in rest: + function_part = rest[:rest.index('[')] + params_part = rest[rest.index('[')+1:rest.rindex(']')] + # Split on '-' but be careful with benchmark-gas-value which contains hyphens + parameters = [] + current_param = "" + i = 0 + while i < len(params_part): + if params_part[i] == '-': + # Check if this is part of "benchmark-gas-value" + if params_part[i:i+8] == '-gas-value': + current_param += params_part[i] + else: + # This is a parameter separator + if current_param.strip(): + parameters.append(current_param.strip()) + current_param = "" + else: + current_param += params_part[i] + i += 1 + if current_param.strip(): + parameters.append(current_param.strip()) + else: + function_part = rest + parameters = [] + + return test_file, function_part, parameters + + def simplify_parameters(self, parameters: List[str]) -> List[str]: + """ + Simplify parameter names by removing common prefixes and applying mappings. + + Args: + parameters: List of parameter strings + + Returns: + List of simplified parameter strings + """ + simplified = [] + + for param in parameters: + # Skip common parameters that don't add value + if param in ['fork_Prague', 'benchmark-gas-value_1M', 'blockchain_test', 'blockchain_test_from_state_test']: + continue + # Also skip any parameter that starts with benchmark-gas-value + if param.startswith('benchmark-gas-value'): + continue + # Skip individual parts of benchmark-gas-value_1M + if param in ['benchmark', 'gas', 'value_1M', '1M']: + continue + + # Apply simplifications + if param in self.param_simplifications: + simplified_param = self.param_simplifications[param] + if simplified_param: # Only add if not empty + simplified.append(simplified_param) + else: + # For parameters not in our mapping, try to extract meaningful parts + if param.startswith('opcode_'): + simplified.append(param.replace('opcode_', '')) + elif param.startswith('case_id_'): + simplified.append(param.replace('case_id_', '')) + elif param.startswith('offset_'): + simplified.append(param.replace('offset_', 'off_')) + elif param.startswith('size_'): + simplified.append(param.replace('size_', '')) + elif param.startswith('data_'): + simplified.append(param.replace('data_', '')) + elif param.startswith('value_'): + simplified.append(param.replace('value_', '')) + elif param.startswith('0 bytes'): + simplified.append('0bytes') + elif param.startswith('100 bytes'): + simplified.append('100bytes') + elif param.startswith('1 MiB'): + simplified.append('1MiB') + elif param.startswith('0.25x max code size'): + simplified.append('0.25x_max_code') + elif param.startswith('max code size'): + simplified.append('max_code') + elif param.startswith('with value'): + simplified.append('with_value') + elif param.startswith('without value'): + simplified.append('without_value') + elif param.startswith('with non-zero data'): + simplified.append('non_zero_data') + elif param.startswith('with zero data'): + simplified.append('zero_data') + else: + # Keep the parameter as is, but make it shorter if possible + simplified.append(param) + + return simplified + + def parse_test_name(self, filename: str) -> TestInfo: + """ + Parse a test filename and return structured information. + + Args: + filename: The test filename (with or without .json extension) + + Returns: + TestInfo object containing parsed information + """ + test_file, function, parameters = self.extract_parameters(filename) + + # Get category prefix + category = self.category_prefixes.get(test_file, 'unknown') + + # Simplify parameters + simplified_params = self.simplify_parameters(parameters) + + # Create simplified name + if simplified_params: + param_str = '_'.join(simplified_params) + simplified_name = f"{category}_{param_str}" + else: + # Fallback to function name if no meaningful parameters + function_clean = function.replace('test_worst_', '').replace('test_', '') + simplified_name = f"{category}_{function_clean}" + + # Create display name (more human-readable) + display_name = self._create_display_name(category, function, simplified_params) + + return TestInfo( + category=category, + function=function, + parameters=simplified_params, + simplified_name=simplified_name, + display_name=display_name + ) + + def _create_display_name(self, category: str, function: str, parameters: List[str]) -> str: + """ + Create a human-readable display name. + + Args: + category: Test category + function: Test function name + parameters: Simplified parameters + + Returns: + Human-readable display name + """ + # Clean up function name + function_clean = function.replace('test_worst_', '').replace('test_', '') + function_clean = function_clean.replace('_', ' ').title() + + # Create readable parameter string + if parameters: + param_parts = [] + for param in parameters: + # Convert underscores to spaces and capitalize + readable_param = param.replace('_', ' ').title() + param_parts.append(readable_param) + + param_str = ', '.join(param_parts) + return f"{function_clean} ({param_str})" + else: + return function_clean + + def get_display_name(self, filename: str) -> str: + """ + Get a human-readable display name for a test file. + + Args: + filename: The test filename + + Returns: + Human-readable display name + """ + test_info = self.parse_test_name(filename) + return test_info.display_name + + def get_simplified_name(self, filename: str) -> str: + """ + Get a simplified name for a test file. + + Args: + filename: The test filename + + Returns: + Simplified name + """ + test_info = self.parse_test_name(filename) + return test_info.simplified_name + + def get_category(self, filename: str) -> str: + """ + Get the category of a test file. + + Args: + filename: The test filename + + Returns: + Test category + """ + test_info = self.parse_test_name(filename) + return test_info.category + + +# Global parser instance +_parser = TestNameParser() + + +def parse_test_name(filename: str) -> TestInfo: + """ + Parse a test filename and return structured information. + + Args: + filename: The test filename (with or without .json extension) + + Returns: + TestInfo object containing parsed information + """ + return _parser.parse_test_name(filename) + + +def get_display_name(filename: str) -> str: + """ + Get a human-readable display name for a test file. + + Args: + filename: The test filename + + Returns: + Human-readable display name + """ + return _parser.get_display_name(filename) + + +def get_simplified_name(filename: str) -> str: + """ + Get a simplified name for a test file. + + Args: + filename: The test filename + + Returns: + Simplified name + """ + return _parser.get_simplified_name(filename) + + +def get_category(filename: str) -> str: + """ + Get the category of a test file. + + Args: + filename: The test filename + + Returns: + Test category + """ + return _parser.get_category(filename) + + +def main(): + """Test the parser with example filenames.""" + test_files = [ + "test_worst_compute.py::test_worst_memory_access[fork_Prague-benchmark-gas-value_1M-blockchain_test_from_state_test-big_memory_expansion_True-offset_initialized_False-offset_0-opcode_MSTORE8].json", + "test_worst_compute.py::test_worst_memory_access[fork_Prague-benchmark-gas-value_1M-blockchain_test_from_state_test-big_memory_expansion_False-offset_initialized_False-offset_31-opcode_MSTORE].json", + "test_worst_stateful_opcodes.py::test_worst_selfdestruct_created[fork_Prague-benchmark-gas-value_1M-blockchain_test_from_state_test-value_bearing_False].json", + "test_worst_opcode.py::test_worst_log_opcodes[fork_Prague-benchmark-gas-value_1M-blockchain_test_from_state_test-fixed_offset_False-zeros_topic-1_MiB_non_zero_data-log3].json" + ] + + print("Test Name Parser Results:") + print("=" * 80) + + for filename in test_files: + test_info = parse_test_name(filename) + print(f"Original: {filename}") + print(f"Category: {test_info.category}") + print(f"Function: {test_info.function}") + print(f"Parameters: {test_info.parameters}") + print(f"Simplified: {test_info.simplified_name}") + print(f"Display: {test_info.display_name}") + print("-" * 80) + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/scripts/trace-opcodes-by-gas-category.sh b/scripts/trace-opcodes-by-gas-category.sh new file mode 100755 index 00000000..976f6a52 --- /dev/null +++ b/scripts/trace-opcodes-by-gas-category.sh @@ -0,0 +1,73 @@ +#!/bin/bash +# Script to run trace_opcodes.py for each gas category separately +# Usage: ./run_gas_categories.sh [gas1] [gas2] ... [gasN] +# If no arguments provided, uses default categories +# Example: ./run_gas_categories.sh 0.1 0.2 0.4 0.6 0.8 + +# Default gas categories if none provided +DEFAULT_GAS_CATEGORIES=("1M" "10M" "30M" "45M" "60M" "100M" "150M") + +# Use provided categories or defaults +if [ $# -gt 0 ]; then + GAS_CATEGORIES=("$@") +else + GAS_CATEGORIES=("${DEFAULT_GAS_CATEGORIES[@]}") +fi + +# Default fixtures directory (can be overridden with FIXTURES_DIR env var) +FIXTURES_DIR="${FIXTURES_DIR:-fixtures_benchmark/blockchain_tests}" +BASE_OUTPUT_DIR="opcode_traces" + +echo "Starting gas category traces..." +echo "Fixtures directory: ${FIXTURES_DIR}" +echo "Categories: ${GAS_CATEGORIES[@]}" +echo "" + +for gas in "${GAS_CATEGORIES[@]}"; do + echo "==========================================" + echo "Processing gas category: ${gas}" + echo "==========================================" + + # Create separate output directory for each gas category + # Replace dots with underscores for directory names + GAS_DIR=$(echo "${gas}" | tr '.' '_') + OUTPUT_DIR="${BASE_OUTPUT_DIR}_${GAS_DIR}" + LOG_FILE="trace_${GAS_DIR}.log" + + # Add 'M' suffix if not present (for gas filter matching) + GAS_FILTER="${gas}" + if [[ ! "${gas}" =~ M$ ]]; then + GAS_FILTER="${gas}M" + fi + + echo " Output directory: ${OUTPUT_DIR}" + echo " Log file: ${LOG_FILE}" + echo " Gas filter: ${GAS_FILTER}" + + python3 ./scripts/trace_opcodes.py \ + --method pyevm \ + --fixtures-dir "${FIXTURES_DIR}" \ + --output "${OUTPUT_DIR}" \ + --gas-filter "${GAS_FILTER}" \ + > "${LOG_FILE}" 2>&1 + + EXIT_CODE=$? + + if [ $EXIT_CODE -eq 0 ]; then + echo "✓ Completed ${gas} gas category" + echo " Log: ${LOG_FILE}" + # Show summary + if [ -f "${OUTPUT_DIR}/instruction_summary.csv" ]; then + echo " Summary: $(wc -l < ${OUTPUT_DIR}/instruction_summary.csv) entries" + fi + else + echo "✗ Failed ${gas} gas category (exit code: $EXIT_CODE)" + echo " Check ${LOG_FILE} for details" + fi + + echo "" +done + +echo "==========================================" +echo "All gas categories processed!" +echo "==========================================" diff --git a/scripts/trace_opcodes.py b/scripts/trace_opcodes.py new file mode 100644 index 00000000..b57a884e --- /dev/null +++ b/scripts/trace_opcodes.py @@ -0,0 +1,1169 @@ +#!/usr/bin/env python3 +""" +Script to analyze blockchain test cases and trace opcodes during actual execution. +For each test case, this script: +1. Extracts bytecode from contracts and transaction inputs +2. Executes transactions using an EVM implementation +3. Traces opcode execution sequence during execution +4. Counts how many times each opcode is called + +Usage: + python3 trace_opcodes.py [--output OUTPUT_DIR] [--test-case TEST_CASE_NAME] [--method METHOD] + +Methods: + - pyevm: Use py-evm library for accurate execution traces + * Handles jumps and conditionals correctly + * Detects precompile calls from stack values + * Provides actual execution flow (not static analysis) + * Requires: pip install py-evm + + - static: Enhanced static analysis with basic jump handling + * Fast but may miss some execution paths + * Doesn't handle complex conditionals accurately + * No dependencies required + + - evmtrace: Use evm tool from go-ethereum + * Requires: evm binary in PATH (from go-ethereum) + * Very accurate but requires external dependency + +Examples: + # Use py-evm for accurate traces (recommended) + python3 trace_opcodes.py --method pyevm + + # Analyze specific test case with py-evm + python3 trace_opcodes.py --test-case worst_push --method pyevm + + # Use static analysis (faster, less accurate) + python3 trace_opcodes.py --method static + +For accurate traces, use --method pyevm. This uses py-evm to execute bytecode +and capture opcodes during actual execution, providing traces that reflect +real execution flow including jumps, conditionals, and precompile calls. +""" + +import json +import sys +import subprocess +from pathlib import Path +from typing import Dict, List, Tuple, Optional +from collections import Counter +import argparse + +# EVM opcode mapping (0x00-0xff) +OPCODES = { + 0x00: "STOP", 0x01: "ADD", 0x02: "MUL", 0x03: "SUB", 0x04: "DIV", + 0x05: "SDIV", 0x06: "MOD", 0x07: "SMOD", 0x08: "ADDMOD", 0x09: "MULMOD", + 0x0a: "EXP", 0x0b: "SIGNEXTEND", 0x10: "LT", 0x11: "GT", 0x12: "SLT", + 0x13: "SGT", 0x14: "EQ", 0x15: "ISZERO", 0x16: "AND", 0x17: "OR", + 0x18: "XOR", 0x19: "NOT", 0x1a: "BYTE", 0x1b: "SHL", 0x1c: "SHR", + 0x1d: "SAR", 0x20: "SHA3", 0x30: "ADDRESS", 0x31: "BALANCE", 0x32: "ORIGIN", + 0x33: "CALLER", 0x34: "CALLVALUE", 0x35: "CALLDATALOAD", 0x36: "CALLDATASIZE", + 0x37: "CALLDATACOPY", 0x38: "CODESIZE", 0x39: "CODECOPY", 0x3a: "GASPRICE", + 0x3b: "EXTCODESIZE", 0x3c: "EXTCODECOPY", 0x3d: "RETURNDATASIZE", + 0x3e: "RETURNDATACOPY", 0x3f: "EXTCODEHASH", 0x40: "BLOCKHASH", 0x41: "COINBASE", + 0x42: "TIMESTAMP", 0x43: "NUMBER", 0x44: "DIFFICULTY", 0x45: "GASLIMIT", + 0x46: "CHAINID", 0x47: "SELFBALANCE", 0x48: "BASEFEE", 0x49: "BLOBHASH", + 0x4a: "BLOBBASEFEE", 0x50: "POP", 0x51: "MLOAD", 0x52: "MSTORE", 0x53: "MSTORE8", + 0x54: "SLOAD", 0x55: "SSTORE", 0x56: "JUMP", 0x57: "JUMPI", 0x58: "PC", + 0x59: "MSIZE", 0x5a: "GAS", 0x5b: "JUMPDEST", 0x5f: "PUSH0", 0x60: "PUSH1", + 0x61: "PUSH2", 0x62: "PUSH3", 0x63: "PUSH4", 0x64: "PUSH5", 0x65: "PUSH6", + 0x66: "PUSH7", 0x67: "PUSH8", 0x68: "PUSH9", 0x69: "PUSH10", 0x6a: "PUSH11", + 0x6b: "PUSH12", 0x6c: "PUSH13", 0x6d: "PUSH14", 0x6e: "PUSH15", 0x6f: "PUSH16", + 0x70: "PUSH17", 0x71: "PUSH18", 0x72: "PUSH19", 0x73: "PUSH20", 0x74: "PUSH21", + 0x75: "PUSH22", 0x76: "PUSH23", 0x77: "PUSH24", 0x78: "PUSH25", 0x79: "PUSH26", + 0x7a: "PUSH27", 0x7b: "PUSH28", 0x7c: "PUSH29", 0x7d: "PUSH30", 0x7e: "PUSH31", + 0x7f: "PUSH32", 0x80: "DUP1", 0x81: "DUP2", 0x82: "DUP3", 0x83: "DUP4", + 0x84: "DUP5", 0x85: "DUP6", 0x86: "DUP7", 0x87: "DUP8", 0x88: "DUP9", + 0x89: "DUP10", 0x8a: "DUP11", 0x8b: "DUP12", 0x8c: "DUP13", 0x8d: "DUP14", + 0x8e: "DUP15", 0x8f: "DUP16", 0x90: "SWAP1", 0x91: "SWAP2", 0x92: "SWAP3", + 0x93: "SWAP4", 0x94: "SWAP5", 0x95: "SWAP6", 0x96: "SWAP7", 0x97: "SWAP8", + 0x98: "SWAP9", 0x99: "SWAP10", 0x9a: "SWAP11", 0x9b: "SWAP12", 0x9c: "SWAP13", + 0x9d: "SWAP14", 0x9e: "SWAP15", 0x9f: "SWAP16", 0xa0: "LOG0", 0xa1: "LOG1", + 0xa2: "LOG2", 0xa3: "LOG3", 0xa4: "LOG4", 0xf0: "CREATE", 0xf1: "CALL", + 0xf2: "CALLCODE", 0xf3: "RETURN", 0xf4: "DELEGATECALL", 0xf5: "CREATE2", + 0xfa: "STATICCALL", 0xfd: "REVERT", 0xfe: "INVALID", 0xff: "SELFDESTRUCT", +} + +# Reverse mapping: opcode name -> value +OPCODE_VALUES = {name: value for value, name in OPCODES.items()} + +# Precompiled contracts (addresses 0x01-0x11) +# Reference: https://www.evm.codes/precompiled +PRECOMPILES = { + # Original precompiles (Frontier, Byzantium, Istanbul, Berlin, Cancun) + 0x01: "ECRECOVER", # ECDSA public key recovery (Frontier) + 0x02: "SHA256", # SHA-256 hash function (Frontier) + 0x03: "RIPEMD160", # RIPEMD-160 hash function (Frontier) + 0x04: "IDENTITY", # Identity/datacopy (Frontier) + 0x05: "MODEXP", # Big integer modular exponentiation (Byzantium, EIP-198) + 0x06: "ECADD", # BN256/alt_bn128 point addition (Byzantium, EIP-196) + 0x07: "ECMUL", # BN256/alt_bn128 scalar multiplication (Byzantium, EIP-196) + 0x08: "ECPAIRING", # BN256/alt_bn128 pairing check (Byzantium, EIP-197) + 0x09: "BLAKE2F", # BLAKE2b F compression function (Istanbul, EIP-152) + 0x0a: "KZG_POINT_EVALUATION", # KZG point evaluation (Cancun, EIP-4844) + # BLS12-381 precompiles (Pectra, EIP-2537) + 0x0b: "BLS12_G1ADD", # BLS12-381 G1 point addition + 0x0c: "BLS12_G1MSM", # BLS12-381 G1 multi-scalar multiplication + 0x0d: "BLS12_G2ADD", # BLS12-381 G2 point addition + 0x0e: "BLS12_G2MSM", # BLS12-381 G2 multi-scalar multiplication + 0x0f: "BLS12_PAIRING_CHECK", # BLS12-381 pairing check + 0x10: "BLS12_MAP_FP_TO_G1", # BLS12-381 map base field element to G1 + 0x11: "BLS12_MAP_FP2_TO_G2", # BLS12-381 map extension field element to G2 +} + +# Precompile address range for quick checking +PRECOMPILE_ADDRESSES = set(PRECOMPILES.keys()) + +# Call opcodes that can invoke precompiles +CALL_OPCODES = {"CALL", "STATICCALL", "DELEGATECALL", "CALLCODE"} + +# Push opcodes that read data +PUSH_OPCODES = {0x5f} | set(range(0x60, 0x80)) + +# EVM opcode gas costs (base costs, simplified - actual costs can vary) +# These are approximate base costs for Prague/Istanbul fork +OPCODE_GAS_COSTS = { + "STOP": 0, "ADD": 3, "MUL": 5, "SUB": 3, "DIV": 5, "SDIV": 5, "MOD": 5, "SMOD": 5, + "ADDMOD": 8, "MULMOD": 8, "EXP": 10, "SIGNEXTEND": 5, "LT": 3, "GT": 3, "SLT": 3, + "SGT": 3, "EQ": 3, "ISZERO": 3, "AND": 3, "OR": 3, "XOR": 3, "NOT": 3, "BYTE": 3, + "SHL": 3, "SHR": 3, "SAR": 3, "SHA3": 30, "ADDRESS": 2, "BALANCE": 100, "ORIGIN": 2, + "CALLER": 2, "CALLVALUE": 2, "CALLDATALOAD": 3, "CALLDATASIZE": 2, "CALLDATACOPY": 3, + "CODESIZE": 2, "CODECOPY": 3, "GASPRICE": 2, "EXTCODESIZE": 100, "EXTCODECOPY": 100, + "RETURNDATASIZE": 2, "RETURNDATACOPY": 3, "EXTCODEHASH": 100, "BLOCKHASH": 20, + "COINBASE": 2, "TIMESTAMP": 2, "NUMBER": 2, "DIFFICULTY": 2, "GASLIMIT": 2, + "CHAINID": 2, "SELFBALANCE": 5, "BASEFEE": 2, "BLOBHASH": 3, "BLOBBASEFEE": 2, + "POP": 2, "MLOAD": 3, "MSTORE": 3, "MSTORE8": 3, "SLOAD": 100, "SSTORE": 100, + "JUMP": 8, "JUMPI": 10, "PC": 2, "MSIZE": 2, "GAS": 2, "JUMPDEST": 1, + "PUSH0": 2, "PUSH1": 3, "PUSH2": 3, "PUSH3": 3, "PUSH4": 3, "PUSH5": 3, + "PUSH6": 3, "PUSH7": 3, "PUSH8": 3, "PUSH9": 3, "PUSH10": 3, "PUSH11": 3, + "PUSH12": 3, "PUSH13": 3, "PUSH14": 3, "PUSH15": 3, "PUSH16": 3, "PUSH17": 3, + "PUSH18": 3, "PUSH19": 3, "PUSH20": 3, "PUSH21": 3, "PUSH22": 3, "PUSH23": 3, + "PUSH24": 3, "PUSH25": 3, "PUSH26": 3, "PUSH27": 3, "PUSH28": 3, "PUSH29": 3, + "PUSH30": 3, "PUSH31": 3, "PUSH32": 3, + "DUP1": 3, "DUP2": 3, "DUP3": 3, "DUP4": 3, "DUP5": 3, "DUP6": 3, "DUP7": 3, + "DUP8": 3, "DUP9": 3, "DUP10": 3, "DUP11": 3, "DUP12": 3, "DUP13": 3, "DUP14": 3, + "DUP15": 3, "DUP16": 3, + "SWAP1": 3, "SWAP2": 3, "SWAP3": 3, "SWAP4": 3, "SWAP5": 3, "SWAP6": 3, "SWAP7": 3, + "SWAP8": 3, "SWAP9": 3, "SWAP10": 3, "SWAP11": 3, "SWAP12": 3, "SWAP13": 3, "SWAP14": 3, + "SWAP15": 3, "SWAP16": 3, + "LOG0": 375, "LOG1": 375, "LOG2": 375, "LOG3": 375, "LOG4": 375, + "CREATE": 32000, "CALL": 100, "CALLCODE": 100, "RETURN": 0, "DELEGATECALL": 100, + "CREATE2": 32000, "STATICCALL": 100, "REVERT": 0, "INVALID": 0, "SELFDESTRUCT": 5000, +} + + +def hex_to_bytes(hex_str: str) -> bytes: + """Convert hex string to bytes.""" + if hex_str.startswith("0x"): + hex_str = hex_str[2:] + if not hex_str: + return b"" + return bytes.fromhex(hex_str) + + +def bytes_to_hex(b: bytes) -> str: + """Convert bytes to hex string with 0x prefix.""" + return "0x" + b.hex() + + +def disassemble_bytecode(bytecode: bytes) -> List[Tuple[int, int, str, Optional[bytes]]]: + """ + Disassemble bytecode into opcodes. + Returns list of (pc, opcode_value, opcode_name, push_data). + """ + instructions = [] + i = 0 + while i < len(bytecode): + opcode = bytecode[i] + opcode_name = OPCODES.get(opcode, f"UNKNOWN(0x{opcode:02x})") + pc = i + + if opcode in PUSH_OPCODES: + # PUSH opcodes read 1-32 bytes after the opcode + if opcode == 0x5f: # PUSH0 + push_data = None + i += 1 + else: + push_size = opcode - 0x5f # PUSH1 = 1 byte, PUSH2 = 2 bytes, etc. + if i + 1 + push_size <= len(bytecode): + push_data = bytecode[i + 1:i + 1 + push_size] + i += 1 + push_size + else: + push_data = bytecode[i + 1:] if i + 1 < len(bytecode) else None + i = len(bytecode) + instructions.append((pc, opcode, opcode_name, push_data)) + else: + instructions.append((pc, opcode, opcode_name, None)) + i += 1 + + return instructions + + +def is_precompile_address(address: int) -> bool: + """Check if an address corresponds to a precompile.""" + return address in PRECOMPILE_ADDRESSES + + +def get_precompile_name(address: int) -> Optional[str]: + """Get the name of a precompile by its address.""" + return PRECOMPILES.get(address) + + +def address_from_bytes(addr_bytes: bytes) -> int: + """Convert address bytes to integer, handling various lengths.""" + if not addr_bytes: + return 0 + # Addresses are 20 bytes, but push data might be shorter + # Take the last 20 bytes and interpret as address + addr_bytes = addr_bytes[-20:] if len(addr_bytes) >= 20 else addr_bytes + return int.from_bytes(addr_bytes, 'big') + + +class EVMTracer: + """Base class for EVM tracers.""" + + def trace_execution(self, bytecode: bytes, calldata: Optional[bytes] = None, + caller: Optional[str] = None, value: int = 0, + pre_state: Optional[Dict] = None, gas_limit: Optional[int] = None) -> Tuple[List[str], Counter, Counter]: + """ + Trace opcode execution. + Returns: (opcode_sequence, opcode_counts, precompile_counts) + """ + raise NotImplementedError + + +class StaticTracer(EVMTracer): + """Enhanced static analyzer with proper jump handling and precompile detection.""" + + def trace_execution(self, bytecode: bytes, calldata: Optional[bytes] = None, + caller: Optional[str] = None, value: int = 0, + pre_state: Optional[Dict] = None, gas_limit: Optional[int] = None) -> Tuple[List[str], Counter, Counter]: + """Trace execution using static analysis with jump handling and precompile detection.""" + instructions = disassemble_bytecode(bytecode) + if not instructions: + return [], Counter(), Counter() + + # Create a map from PC to instruction index + pc_to_idx = {pc: idx for idx, (pc, _, _, _) in enumerate(instructions)} + + opcode_sequence = [] + opcode_counts = Counter() + precompile_counts = Counter() + + # Find all JUMPDEST locations + jumpdests = {pc for pc, _, name, _ in instructions if name == "JUMPDEST"} + + # Simple linear execution with basic jump handling and gas tracking + # For accurate traces, use py-evm or evm tool + visited_pcs = set() + idx = 0 + + # Track gas consumption if gas_limit is provided + gas_remaining = gas_limit if gas_limit is not None else None + track_gas = gas_remaining is not None + + # Set max iterations based on whether we're tracking gas + # If tracking gas, scale max_iterations with gas_limit to allow full execution + # If not tracking gas, use a reasonable limit to prevent infinite loops + if track_gas: + # Scale max_iterations with gas_limit - assume average 1-2 gas per instruction + # Use gas_limit * 2 to ensure we don't hit iteration limit before gas runs out + max_iterations = max(10_000_000, gas_limit * 2) if gas_limit else 10_000_000 + else: + max_iterations = min(100000, len(instructions) * 100) # Prevent infinite loops + + iteration = 0 + + # Track recent push values for precompile detection + recent_pushes = [] # Stack of (push_value, push_data) + + while idx < len(instructions) and iteration < max_iterations: + iteration += 1 + pc, opcode_val, opcode_name, push_data = instructions[idx] + + # Check gas limit - stop if we've run out of gas + if track_gas: + opcode_gas = OPCODE_GAS_COSTS.get(opcode_name, 1) # Default to 1 gas for unknown opcodes + if gas_remaining < opcode_gas: + # Out of gas - stop execution + break + gas_remaining -= opcode_gas + + # Avoid infinite loops - but respect gas limits + # If we're tracking gas, let gas determine when to stop + # Otherwise, use loop detection + if pc in visited_pcs and opcode_name not in ("JUMPI",): + # If we've seen this PC before and it's not a conditional jump, we might be looping + if track_gas: + # When tracking gas, continue until gas runs out + # The gas check above will stop execution + pass + else: + # Without gas tracking, break on large loops + if len(visited_pcs) > 1000: # Large loop detected + break + visited_pcs.add(pc) + + opcode_sequence.append(opcode_name) + opcode_counts[opcode_name] += 1 + + # Track push data for precompile detection + if opcode_name.startswith("PUSH") and push_data is not None: + recent_pushes.append(push_data) + # Keep only last 10 pushes to limit memory + if len(recent_pushes) > 10: + recent_pushes.pop(0) + + # Detect precompile calls + # For CALL: stack order is gas, addr, value, argsOffset, argsLength, retOffset, retLength + # For STATICCALL/DELEGATECALL: stack order is gas, addr, argsOffset, argsLength, retOffset, retLength + # The address is typically pushed as the 2nd-to-last item before the call + if opcode_name in CALL_OPCODES and len(recent_pushes) >= 2: + # Try to detect precompile address from recent pushes + # The address is usually one of the recent push values + for push_val in reversed(recent_pushes): + addr = address_from_bytes(push_val) + if is_precompile_address(addr): + precompile_name = get_precompile_name(addr) + if precompile_name: + precompile_counts[precompile_name] += 1 + opcode_sequence.append(f"PRECOMPILE_{precompile_name}") + break + + # Handle control flow + if opcode_name in ("STOP", "RETURN", "REVERT", "SELFDESTRUCT"): + break + elif opcode_name == "JUMP": + # For JUMP, we'd need to know the stack value + # Since we don't have full execution context, we'll try to find valid jumpdests + # If tracking gas, allow jumping back to create loops + found_jump = False + for dest_pc in sorted(jumpdests): + if dest_pc in pc_to_idx: + idx = pc_to_idx[dest_pc] + found_jump = True + # When tracking gas, allow loops (gas will stop them) + # Without gas tracking, break on repeated jumps to same location + if not track_gas and dest_pc in visited_pcs: + # Already visited this destination, might be infinite loop + if len(visited_pcs) > 100: + break + break + if not found_jump: + break + elif opcode_name == "JUMPI": + # For JUMPI, we trace the fallthrough path (condition false) + # In real execution, this would depend on stack value + # When tracking gas, we could also try the jump path, but for simplicity + # we'll just follow fallthrough + idx += 1 + else: + idx += 1 + + return opcode_sequence, opcode_counts, precompile_counts + + +class PyEVMTracer(EVMTracer): + """ + Tracer using py-evm library with accurate opcode tracing. + + This tracer uses py-evm to execute bytecode and capture opcodes during + actual execution, providing accurate traces that reflect: + - Actual execution flow (handles jumps and conditionals correctly) + - Dynamic opcode sequences (not just static analysis) + - Precompile calls (detected from stack values during CALL opcodes) + - Gas consumption and state changes + + Installation: + pip install py-evm + + Usage: + tracer = PyEVMTracer() + if tracer.available: + opcode_seq, opcode_counts, precompile_counts = tracer.trace_execution( + bytecode=bytecode, + calldata=calldata, + caller=caller_address, + value=eth_value + ) + + How it works: + 1. Creates a custom Computation class that overrides _execute_opcode() + 2. Before each opcode executes, captures the opcode byte and name + 3. For CALL opcodes, inspects the stack to detect precompile addresses + 4. Returns the complete execution trace with opcode counts + + Advantages over static analysis: + - Handles JUMP/JUMPI correctly (follows actual execution path) + - Respects conditional logic (only traces executed branches) + - Detects precompiles from actual stack values + - Accounts for dynamic code execution (CREATE, CALL, etc.) + """ + + def __init__(self): + try: + # Try to import py-evm components (updated for py-evm 0.12+) + from eth import constants + from eth.vm.forks import PragueVM + from eth.vm.computation import BaseComputation + from eth.vm.message import Message + from eth.vm.transaction_context import BaseTransactionContext + from eth_utils import to_canonical_address + + # Get the state class from the VM fork + try: + from eth.vm.forks.prague import PragueState + self.StateClass = PragueState + except ImportError: + # Fallback to getting it from VM + self.StateClass = getattr(PragueVM, '_state_class', None) + + # Try to get DB backend + try: + from eth.db.backends.memory import MemoryDB + self.DB = MemoryDB + except ImportError: + try: + from eth.db import get_db_backend + self.DB = get_db_backend() + except ImportError: + # Fallback: try to create state without explicit DB + self.DB = None + + self.constants = constants + self.PragueVM = PragueVM + self.BaseComputation = BaseComputation + self.Message = Message + self.BaseTransactionContext = BaseTransactionContext + self.to_canonical_address = to_canonical_address + self.available = True + except ImportError: + # Try alternative imports for different py-evm versions + try: + from eth import constants + from eth.vm.forks import IstanbulVM + from eth.vm.computation import BaseComputation + from eth.vm.message import Message + from eth.vm.transaction_context import BaseTransactionContext + from eth_utils import to_canonical_address + + # Get the state class from the VM fork + try: + from eth.vm.forks.istanbul import IstanbulState + self.StateClass = IstanbulState + except ImportError: + self.StateClass = getattr(IstanbulVM, '_state_class', None) + + try: + from eth.db.backends.memory import MemoryDB + self.DB = MemoryDB + except ImportError: + self.DB = None + + self.constants = constants + self.PragueVM = IstanbulVM + self.BaseComputation = BaseComputation + self.Message = Message + self.BaseTransactionContext = BaseTransactionContext + self.to_canonical_address = to_canonical_address + self.available = True + except ImportError: + self.available = False + + def trace_execution(self, bytecode: bytes, calldata: Optional[bytes] = None, + caller: Optional[str] = None, value: int = 0, + pre_state: Optional[Dict] = None, gas_limit: Optional[int] = None) -> Tuple[List[str], Counter, Counter]: + """ + Trace execution using py-evm with accurate opcode tracking. + + This method uses py-evm's computation hooks to capture each opcode + as it executes, providing accurate traces that reflect actual execution + flow including jumps, conditionals, and precompile calls. + """ + if not self.available: + raise RuntimeError("py-evm not available. Install with: pip install py-evm") + + from eth.vm.transaction_context import BaseTransactionContext + from eth_utils import to_canonical_address + + # Store trace data + trace_data = { + "sequence": [], + "opcode_counts": Counter(), + "precompile_counts": Counter() + } + + try: + # Setup EVM using MiningChain - the proper way for py-evm 0.12+ + from eth.chains.base import MiningChain + from eth import constants + # Use AtomicDB instead of MemoryDB for proper batch support + try: + from eth.db.atomic import AtomicDB + db_class = AtomicDB + except ImportError: + from eth.db.backends.memory import MemoryDB + db_class = MemoryDB + + # Use IstanbulVM for simpler setup (Prague requires system contracts) + try: + from eth.vm.forks import IstanbulVM + vm_class = IstanbulVM + except ImportError: + vm_class = self.PragueVM + + # Create chain with minimal genesis + CustomChain = MiningChain.configure( + __name__='TracingChain', + vm_configuration=((constants.GENESIS_BLOCK_NUMBER, vm_class),), + ) + + # Initialize chain with empty genesis + db = db_class() + # Genesis params - simplified format (block_number is determined by GENESIS_BLOCK_NUMBER) + genesis_params = { + 'difficulty': 1, + 'gas_limit': gas_limit if gas_limit else 100000000, + 'timestamp': 1, + } + + # Initialize genesis state from pre_state if provided + genesis_state = {} + if pre_state: + for address_str, account_data in pre_state.items(): + try: + address_bytes = to_canonical_address(address_str) + account_dict = {} + if "balance" in account_data: + balance_str = account_data["balance"] + if isinstance(balance_str, str): + # Handle empty string or hex format + if balance_str == "" or balance_str == "0x": + balance = 0 + else: + balance = int(balance_str, 16) if balance_str.startswith("0x") else int(balance_str, 16) + else: + balance = balance_str + account_dict["balance"] = balance + else: + account_dict["balance"] = 0 + # Always include code, even if empty + if "code" in account_data and account_data["code"]: + code_hex = account_data["code"] + if isinstance(code_hex, str): + code_bytes = hex_to_bytes(code_hex) + else: + code_bytes = code_hex + account_dict["code"] = code_bytes if code_bytes else b"" + else: + account_dict["code"] = b"" + if "nonce" in account_data: + nonce_str = account_data["nonce"] + if isinstance(nonce_str, str): + if nonce_str == "" or nonce_str == "0x": + nonce = 0 + else: + nonce = int(nonce_str, 16) if nonce_str.startswith("0x") else int(nonce_str, 16) + else: + nonce = nonce_str + account_dict["nonce"] = nonce + else: + account_dict["nonce"] = 0 + if "storage" in account_data: + # Convert storage values from hex strings to integers + storage_dict = {} + for slot_str, value_str in account_data["storage"].items(): + slot = int(slot_str, 16) if isinstance(slot_str, str) else slot_str + value = int(value_str, 16) if isinstance(value_str, str) else value_str + storage_dict[slot] = value + account_dict["storage"] = storage_dict + genesis_state[address_bytes] = account_dict + except Exception: + pass + + # Also add caller and code addresses to genesis state + if caller: + caller_addr = to_canonical_address(caller) + if caller_addr not in genesis_state: + genesis_state[caller_addr] = { + "balance": value if value > 0 else 1000000000000000000, + "nonce": 0, + "code": b"", + "storage": {} + } + + code_addr = to_canonical_address("0x" + "1" * 40) + if code_addr not in genesis_state: + genesis_state[code_addr] = { + "balance": 0, + "nonce": 0, + "code": bytecode, + "storage": {} + } + + # Create chain from genesis + chain = CustomChain.from_genesis(db, genesis_params, genesis_state) + + # Get VM from chain + vm = chain.get_vm() + + # Get the actual computation class from the VM + # In py-evm, the computation class is typically stored as a class attribute + # or can be obtained from the VM instance + try: + # Try to get computation class from VM + if hasattr(vm, 'computation_class'): + ComputationClass = vm.computation_class + elif hasattr(vm_class, 'computation_class'): + ComputationClass = vm_class.computation_class + else: + # Fallback: use BaseComputation + ComputationClass = self.BaseComputation + except: + ComputationClass = self.BaseComputation + + # Create a custom computation class that overrides get_opcode_fn to trace + class TracingComputation(ComputationClass): + """Computation class that traces opcode execution.""" + + def get_opcode_fn(self, opcode): + """Override to trace opcodes as they're retrieved.""" + opcode_fn = super().get_opcode_fn(opcode) + + # Record opcode + opcode_name = OPCODES.get(opcode, f"UNKNOWN(0x{opcode:02x})") + trace_data["sequence"].append(opcode_name) + trace_data["opcode_counts"][opcode_name] += 1 + + # Wrap opcode function to check for precompiles + if opcode_name in CALL_OPCODES and opcode_fn: + original_fn = opcode_fn + def traced_opcode_fn(computation): + try: + stack = getattr(computation, 'stack', None) + if stack: + if hasattr(stack, 'values'): + stack_vals = stack.values + elif hasattr(stack, '_values'): + stack_vals = stack._values + else: + stack_vals = list(stack) if hasattr(stack, '__iter__') else [] + + if len(stack_vals) >= 2: + addr_item = stack_vals[-2] + addr = addr_item if isinstance(addr_item, int) else int(addr_item) + if is_precompile_address(addr): + precompile_name = get_precompile_name(addr) + if precompile_name: + trace_data["sequence"].append(f"PRECOMPILE_{precompile_name}") + trace_data["precompile_counts"][precompile_name] += 1 + except Exception: + pass + return original_fn(computation) + opcode_fn = traced_opcode_fn + + return opcode_fn + + # Replace computation class temporarily + original_computation_class = getattr(vm, '_computation_class', None) + vm._computation_class = TracingComputation + + # Create addresses (already done above, but keep for reference) + if caller is None: + caller_addr = to_canonical_address("0x" + "0" * 40) + else: + caller_addr = to_canonical_address(caller) + + try: + # Execute bytecode using VM's execute_bytecode + # The TracingComputation class will automatically trace opcodes + effective_gas_limit = gas_limit if gas_limit is not None else 100000000 + computation = vm.execute_bytecode( + origin=caller_addr, + gas_price=1, + gas=effective_gas_limit, + to=code_addr, + sender=caller_addr, + value=value, + data=calldata or b"", + code=bytecode, + code_address=code_addr, + ) + finally: + # Restore original computation class + if original_computation_class is not None: + vm._computation_class = original_computation_class + + # Extract results + opcode_sequence = trace_data["sequence"] + + # Separate opcodes from precompiles + actual_opcodes = [op for op in opcode_sequence if not op.startswith("PRECOMPILE_")] + opcode_counts = Counter(actual_opcodes) + precompile_counts = trace_data["precompile_counts"] + + return opcode_sequence, opcode_counts, precompile_counts + + except Exception as e: + # If execution fails, provide helpful error and fallback + error_msg = str(e) + error_type = type(e).__name__ + + # Print warning for debugging (can be removed later) + if "Unknown format" not in error_msg: + # Only show first occurrence of each error type to avoid spam + if not hasattr(self, '_error_shown'): + self._error_shown = set() + if error_type not in self._error_shown: + print(f"Warning: py-evm execution failed ({error_type}): {error_msg[:100]}") + self._error_shown.add(error_type) + + static_tracer = StaticTracer() + return static_tracer.trace_execution(bytecode, calldata, caller, value, pre_state, gas_limit) + + +class EVMTraceTracer(EVMTracer): + """Tracer using evm tool from go-ethereum.""" + + def __init__(self): + self.available = self._check_evm_available() + + def _check_evm_available(self) -> bool: + """Check if evm tool is available.""" + try: + result = subprocess.run(["evm", "--help"], + capture_output=True, + timeout=5) + return result.returncode == 0 + except (FileNotFoundError, subprocess.TimeoutExpired): + return False + + def trace_execution(self, bytecode: bytes, calldata: Optional[bytes] = None, + caller: Optional[str] = None, value: int = 0, + pre_state: Optional[Dict] = None, gas_limit: Optional[int] = None) -> Tuple[List[str], Counter, Counter]: + """Trace execution using evm tool.""" + if not self.available: + raise RuntimeError("evm tool not available. Install go-ethereum and ensure 'evm' is in PATH") + + # Use evm tool to trace + code_hex = bytes_to_hex(bytecode) + input_hex = bytes_to_hex(calldata) if calldata else "0x" + + try: + # Try to use evm trace + cmd = ["evm", "run", "--code", code_hex, "--input", input_hex, "--trace"] + result = subprocess.run(cmd, capture_output=True, text=True, timeout=30) + + if result.returncode == 0: + # Parse trace output + opcode_sequence = [] + opcode_counts = Counter() + precompile_counts = Counter() + + for line in result.stdout.split('\n'): + if 'op=' in line: + # Extract opcode from trace + parts = line.split() + opcode_name = None + for part in parts: + if part.startswith('op='): + opcode_hex = part.split('=')[1] + try: + opcode_val = int(opcode_hex, 16) + opcode_name = OPCODES.get(opcode_val, f"UNKNOWN(0x{opcode_val:02x})") + opcode_sequence.append(opcode_name) + opcode_counts[opcode_name] += 1 + except ValueError: + pass + + # Try to extract stack for precompile detection + if opcode_name in CALL_OPCODES: + # Look for stack values in the trace line + for part in parts: + if part.startswith('stack='): + stack_str = part.split('=')[1] + # Parse stack values and check for precompile addresses + try: + # Stack values are usually hex + stack_vals = stack_str.strip('[]').split(',') + for val in stack_vals: + val = val.strip() + if val: + addr = int(val, 16) if val.startswith('0x') else int(val) + if is_precompile_address(addr): + precompile_name = get_precompile_name(addr) + if precompile_name: + precompile_counts[precompile_name] += 1 + opcode_sequence.append(f"PRECOMPILE_{precompile_name}") + break + except (ValueError, IndexError): + pass + + if opcode_sequence: + return opcode_sequence, opcode_counts, precompile_counts + except (subprocess.TimeoutExpired, FileNotFoundError) as e: + print(f"Warning: evm tool execution failed: {e}") + + # Fallback to static analysis + static_tracer = StaticTracer() + return static_tracer.trace_execution(bytecode, calldata, caller, value) + + +def analyze_test_case(test_file: Path, tracer: EVMTracer, gas_filter: Optional[str] = None) -> Dict: + """Analyze a single test case file.""" + print(f"\nAnalyzing: {test_file.name}") + + with open(test_file, 'r') as f: + test_data = json.load(f) + + results = {} + + for test_name, test_case in test_data.items(): + # Filter by gas value if specified + if gas_filter: + gas_pattern = f"gas-value_{gas_filter}" + if gas_pattern not in test_name: + continue # Skip this test case + print(f" Processing test: {test_name}") + test_result = { + "test_name": test_name, + "contracts": {}, + "transactions": [] + } + + # Extract contract bytecode from pre state + contracts = {} + if "pre" in test_case: + for address, account in test_case["pre"].items(): + if "code" in account and account["code"]: + code_hex = account["code"] + bytecode = hex_to_bytes(code_hex) + if bytecode: + contracts[address] = bytecode + + # Process transactions + if "blocks" in test_case: + for block in test_case["blocks"]: + if "transactions" in block: + for tx_idx, tx in enumerate(block["transactions"]): + tx_data = { + "index": tx_idx, + "to": tx.get("to", ""), + "input": tx.get("input", ""), + "value": int(tx.get("value", "0x0"), 16) if tx.get("value") else 0, + "from": tx.get("from", ""), + } + + # Get contract bytecode + to_addr = tx_data["to"] + if to_addr and to_addr in contracts: + bytecode = contracts[to_addr] + calldata = hex_to_bytes(tx_data["input"]) + + try: + # Get gas limit from transaction (try both 'gas' and 'gasLimit') + tx_gas = None + if tx.get("gas"): + tx_gas = int(tx.get("gas"), 16) if isinstance(tx.get("gas"), str) else tx.get("gas") + elif tx.get("gasLimit"): + tx_gas = int(tx.get("gasLimit"), 16) if isinstance(tx.get("gasLimit"), str) else tx.get("gasLimit") + # If not in transaction, extract from test case name (e.g., "value_100M" -> 100000000) + if tx_gas is None: + test_name_lower = test_name.lower() + if "100m" in test_name_lower: + tx_gas = 100_000_000 + elif "150m" in test_name_lower: + tx_gas = 150_000_000 + elif "60m" in test_name_lower: + tx_gas = 60_000_000 + elif "45m" in test_name_lower: + tx_gas = 45_000_000 + elif "30m" in test_name_lower: + tx_gas = 30_000_000 + elif "10m" in test_name_lower: + tx_gas = 10_000_000 + elif "1m" in test_name_lower: + tx_gas = 1_000_000 + opcode_seq, opcode_counts, precompile_counts = tracer.trace_execution( + bytecode, calldata, tx_data["from"], tx_data["value"], + pre_state=test_case.get("pre"), gas_limit=tx_gas + ) + + # Combine opcodes and precompiles into unified instruction counts + instruction_counts = Counter(opcode_counts) + instruction_counts.update(precompile_counts) + + tx_data["opcode_sequence"] = opcode_seq + tx_data["opcode_counts"] = dict(opcode_counts) + tx_data["precompile_counts"] = dict(precompile_counts) + tx_data["instruction_counts"] = dict(instruction_counts) + tx_data["total_instructions"] = sum(instruction_counts.values()) + tx_data["bytecode_length"] = len(bytecode) + except Exception as e: + print(f" Warning: Failed to trace transaction {tx_idx}: {e}") + tx_data["error"] = str(e) + elif not to_addr: + # Contract creation + initcode = hex_to_bytes(tx_data["input"]) + if initcode: + try: + # Get gas limit from transaction + tx_gas = int(tx.get("gas", "0x5f5e100"), 16) if tx.get("gas") else None + opcode_seq, opcode_counts, precompile_counts = tracer.trace_execution( + initcode, None, tx_data["from"], tx_data["value"], + pre_state=test_case.get("pre"), gas_limit=tx_gas + ) + + # Combine opcodes and precompiles into unified instruction counts + instruction_counts = Counter(opcode_counts) + instruction_counts.update(precompile_counts) + + tx_data["opcode_sequence"] = opcode_seq + tx_data["opcode_counts"] = dict(opcode_counts) + tx_data["precompile_counts"] = dict(precompile_counts) + tx_data["instruction_counts"] = dict(instruction_counts) + tx_data["total_instructions"] = sum(instruction_counts.values()) + tx_data["bytecode_length"] = len(initcode) + tx_data["is_creation"] = True + except Exception as e: + print(f" Warning: Failed to trace creation {tx_idx}: {e}") + tx_data["error"] = str(e) + + test_result["transactions"].append(tx_data) + + # Also analyze contract bytecode statically + for address, bytecode in contracts.items(): + try: + opcode_seq, opcode_counts, precompile_counts = tracer.trace_execution( + bytecode, None, None, 0, test_case.get("pre"), None + ) + + # Combine opcodes and precompiles into unified instruction counts + instruction_counts = Counter(opcode_counts) + instruction_counts.update(precompile_counts) + + test_result["contracts"][address] = { + "bytecode_length": len(bytecode), + "opcode_sequence": opcode_seq, + "opcode_counts": dict(opcode_counts), + "precompile_counts": dict(precompile_counts), + "instruction_counts": dict(instruction_counts), + "total_instructions": sum(instruction_counts.values()) + } + except Exception as e: + print(f" Warning: Failed to trace contract {address}: {e}") + + results[test_name] = test_result + + return results + + +def generate_report(all_results: Dict[str, Dict], output_dir: Path): + """Generate HTML and text reports.""" + output_dir.mkdir(parents=True, exist_ok=True) + + # Generate text report + report_file = output_dir / "opcode_trace_report.txt" + with open(report_file, 'w') as f: + f.write("=" * 80 + "\n") + f.write("EVM Opcode Trace Analysis Report\n") + f.write("=" * 80 + "\n\n") + + for test_file, results in all_results.items(): + f.write(f"\n{'=' * 80}\n") + f.write(f"Test File: {test_file}\n") + f.write(f"{'=' * 80}\n\n") + + for test_name, test_result in results.items(): + f.write(f"Test Case: {test_result['test_name']}\n") + f.write("-" * 80 + "\n\n") + + # Contract analysis + if test_result["contracts"]: + f.write("Contracts:\n") + for address, contract_info in test_result["contracts"].items(): + f.write(f" Address: {address}\n") + f.write(f" Bytecode Length: {contract_info['bytecode_length']} bytes\n") + f.write(f" Total Instructions: {contract_info.get('total_instructions', 0)}\n") + f.write(f" Instruction Counts (opcodes + precompiles):\n") + for instr, count in sorted(contract_info.get('instruction_counts', {}).items(), + key=lambda x: -x[1]): + f.write(f" {instr}: {count}\n") + f.write(f" Execution Sequence (first 200):\n") + seq_preview = contract_info['opcode_sequence'][:200] + f.write(f" {' -> '.join(seq_preview)}\n") + if len(contract_info['opcode_sequence']) > 200: + f.write(f" ... ({len(contract_info['opcode_sequence']) - 200} more)\n") + f.write("\n") + + # Transaction analysis + if test_result["transactions"]: + f.write(f"Transactions: {len(test_result['transactions'])}\n\n") + for tx in test_result["transactions"]: + f.write(f" Transaction {tx.get('index', '?')}:\n") + f.write(f" To: {tx.get('to', 'CREATE')}\n") + if 'is_creation' in tx: + f.write(f" Type: Contract Creation\n") + if 'bytecode_length' in tx: + f.write(f" Bytecode Length: {tx['bytecode_length']} bytes\n") + if 'total_instructions' in tx: + f.write(f" Total Instructions: {tx['total_instructions']}\n") + if 'instruction_counts' in tx: + f.write(f" Instruction Counts (opcodes + precompiles):\n") + for instr, count in sorted(tx['instruction_counts'].items(), + key=lambda x: -x[1]): + f.write(f" {instr}: {count}\n") + if 'opcode_sequence' in tx: + f.write(f" Execution Sequence (first 200):\n") + seq_preview = tx['opcode_sequence'][:200] + f.write(f" {' -> '.join(seq_preview)}\n") + if len(tx['opcode_sequence']) > 200: + f.write(f" ... ({len(tx['opcode_sequence']) - 200} more)\n") + if 'error' in tx: + f.write(f" Error: {tx['error']}\n") + f.write("\n") + + f.write("\n") + + # Generate JSON report + json_file = output_dir / "opcode_trace_report.json" + with open(json_file, 'w') as f: + json.dump(all_results, f, indent=2) + + # Generate summary CSV + csv_file = output_dir / "instruction_summary.csv" + with open(csv_file, 'w') as f: + f.write("Test File,Test Case,Transaction Index,Total Instructions,Unique Instructions,All Instructions\n") + for test_file, results in all_results.items(): + for test_name, test_result in results.items(): + for tx in test_result.get("transactions", []): + if 'instruction_counts' in tx: + total = tx.get('total_instructions', 0) + unique = len(tx['instruction_counts']) + all_instructions = ', '.join([f"{instr}({count})" for instr, count in + sorted(tx['instruction_counts'].items(), + key=lambda x: -x[1])]) + f.write(f"{test_file},{test_name},{tx.get('index', '?')}," + f"{total},{unique},\"{all_instructions}\"\n") + + # Generate detailed instruction breakdown CSV (per instruction type) + instruction_breakdown_file = output_dir / "instruction_breakdown.csv" + with open(instruction_breakdown_file, 'w') as f: + f.write("Test File,Test Case,Transaction Index,Instruction,Count,Type\n") + for test_file, results in all_results.items(): + for test_name, test_result in results.items(): + for tx in test_result.get("transactions", []): + if tx.get('instruction_counts'): + for instr, count in sorted(tx['instruction_counts'].items(), + key=lambda x: -x[1]): + # Determine if it's a precompile or opcode + instr_type = "precompile" if instr in PRECOMPILES.values() else "opcode" + f.write(f"{test_file},{test_name},{tx.get('index', '?')}," + f"{instr},{count},{instr_type}\n") + + # Generate instruction totals summary + instruction_totals = Counter() + for test_file, results in all_results.items(): + for test_name, test_result in results.items(): + for tx in test_result.get("transactions", []): + if tx.get('instruction_counts'): + instruction_totals.update(tx['instruction_counts']) + for address, contract_info in test_result.get("contracts", {}).items(): + if contract_info.get('instruction_counts'): + instruction_totals.update(contract_info['instruction_counts']) + + print(f"\nReports generated:") + print(f" Text: {report_file}") + print(f" JSON: {json_file}") + print(f" Instruction Summary CSV: {csv_file}") + print(f" Instruction Breakdown CSV: {instruction_breakdown_file}") + + if instruction_totals: + # Separate into opcodes and precompiles for display + precompile_names = set(PRECOMPILES.values()) + opcode_totals = {k: v for k, v in instruction_totals.items() if k not in precompile_names} + precompile_totals = {k: v for k, v in instruction_totals.items() if k in precompile_names} + + print(f"\nInstruction Usage Summary:") + print(f" Total unique instructions: {len(instruction_totals)}") + print(f" Total instruction count: {sum(instruction_totals.values())}") + + if precompile_totals: + print(f"\n Precompiles ({len(precompile_totals)} types, {sum(precompile_totals.values())} calls):") + for precompile, count in sorted(precompile_totals.items(), key=lambda x: -x[1]): + print(f" {precompile}: {count}") + + print(f"\n Top 10 Opcodes ({len(opcode_totals)} types, {sum(opcode_totals.values())} total):") + for opcode, count in sorted(opcode_totals.items(), key=lambda x: -x[1])[:10]: + print(f" {opcode}: {count}") + + +def main(): + parser = argparse.ArgumentParser(description="Analyze blockchain test cases and trace opcodes") + parser.add_argument("--fixtures-dir", type=str, + default="./zkevm-fixtures/fixtures/blockchain_tests/benchmark", + help="Directory containing test case JSON files") + parser.add_argument("--output", type=str, default="./opcode_traces", + help="Output directory for reports") + parser.add_argument("--test-case", type=str, default=None, + help="Specific test case file to analyze (optional)") + parser.add_argument("--method", type=str, default="static", + choices=["static", "pyevm", "evmtrace"], + help="Tracing method to use") + parser.add_argument("--gas-filter", type=str, default=None, + help="Filter test cases by gas value (e.g., '1M', '10M', '0.1', '0.2')") + + args = parser.parse_args() + + fixtures_dir = Path(args.fixtures_dir) + if not fixtures_dir.exists(): + print(f"Error: Fixtures directory not found: {fixtures_dir}") + sys.exit(1) + + # Initialize tracer + if args.method == "pyevm": + tracer = PyEVMTracer() + if not tracer.available: + print("Warning: py-evm not available, falling back to static analysis") + tracer = StaticTracer() + elif args.method == "evmtrace": + tracer = EVMTraceTracer() + if not tracer.available: + print("Warning: evm tool not available, falling back to static analysis") + tracer = StaticTracer() + else: + tracer = StaticTracer() + + print(f"Using tracing method: {args.method}") + + # Find all test case JSON files + if args.test_case: + test_files = list(fixtures_dir.rglob(f"*{args.test_case}*.json")) + if not test_files: + print(f"Error: Test case '{args.test_case}' not found") + sys.exit(1) + else: + test_files = list(fixtures_dir.rglob("*.json")) + + print(f"Found {len(test_files)} test case file(s)") + + all_results = {} + for test_file in test_files: + try: + results = analyze_test_case(test_file, tracer, gas_filter=args.gas_filter) + if results: # Only add if there are results (after filtering) + all_results[test_file.name] = results + except Exception as e: + print(f"Error analyzing {test_file}: {e}") + import traceback + traceback.print_exc() + + # Generate reports + output_dir = Path(args.output) + generate_report(all_results, output_dir) + + print(f"\nAnalysis complete! Processed {len(test_files)} test case file(s).") + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/tests/src/stateless_validator.rs b/tests/src/stateless_validator.rs index 9375b3e3..1620a782 100644 --- a/tests/src/stateless_validator.rs +++ b/tests/src/stateless_validator.rs @@ -41,9 +41,9 @@ mod tests { (ExecutionClient::Reth, zkVMKind::Airbender), (ExecutionClient::Ethrex, zkVMKind::SP1), (ExecutionClient::Ethrex, zkVMKind::Risc0), + (ExecutionClient::Ethrex, zkVMKind::Zisk), // (ExecutionClient::Ethrex, zkVMKind::OpenVM), // See https://github.com/eth-act/ere/issues/168 // (ExecutionClient::Ethrex, zkVMKind::Pico), // See https://github.com/eth-act/ere/issues/174 - // (ExecutionClient::Ethrex, zkVMKind::Zisk), // See https://github.com/eth-act/ere/issues/XXX ]); empty_block(Action::Execute, &el_zkvms).await; } @@ -59,6 +59,7 @@ mod tests { (ExecutionClient::Reth, zkVMKind::Airbender), (ExecutionClient::Ethrex, zkVMKind::SP1), (ExecutionClient::Ethrex, zkVMKind::Risc0), + (ExecutionClient::Ethrex, zkVMKind::Zisk), ]); for (el, zkvm) in el_zkvms { @@ -101,6 +102,7 @@ mod tests { (ExecutionClient::Reth, zkVMKind::Airbender), (ExecutionClient::Ethrex, zkVMKind::SP1), (ExecutionClient::Ethrex, zkVMKind::Risc0), + (ExecutionClient::Ethrex, zkVMKind::Zisk), ]); for (el, zkvm) in el_zkvms { let eest_fixtures_path = PathBuf::from("assets/eest-invalid-block"); diff --git a/www/.gitignore b/www/.gitignore new file mode 100644 index 00000000..04c01ba7 --- /dev/null +++ b/www/.gitignore @@ -0,0 +1,2 @@ +node_modules/ +dist/ \ No newline at end of file diff --git a/www/README.md b/www/README.md new file mode 100644 index 00000000..3bb11a44 --- /dev/null +++ b/www/README.md @@ -0,0 +1 @@ +This is a [Vocs](https://vocs.dev) project bootstrapped with the Vocs CLI. diff --git a/www/docs/components/CsvTable.tsx b/www/docs/components/CsvTable.tsx new file mode 100644 index 00000000..9e432b1b --- /dev/null +++ b/www/docs/components/CsvTable.tsx @@ -0,0 +1,126 @@ +import { + useEffect, + useState, +} from 'react'; + +interface CsvTableProps { + src: string; + columns?: string[]; // Optional: show only specific columns + maxRows?: number; // Optional: limit number of rows +} + +export function CsvTable({ src, columns, maxRows }: CsvTableProps) { + const [data, setData] = useState([]); + const [headers, setHeaders] = useState([]); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(null); + + useEffect(() => { + fetch(src) + .then((res) => { + if (!res.ok) throw new Error(`Failed to load CSV: ${res.status}`); + return res.text(); + }) + .then((text) => { + const lines = text.trim().split('\n'); + const allHeaders = lines[0].split(','); + const rows = lines.slice(1).map((line) => line.split(',')); + + // Filter columns if specified + if (columns && columns.length > 0) { + const indices = columns.map((col) => allHeaders.indexOf(col)).filter((i) => i !== -1); + setHeaders(indices.map((i) => allHeaders[i])); + setData(rows.map((row) => indices.map((i) => row[i]))); + } else { + setHeaders(allHeaders); + setData(rows); + } + setLoading(false); + }) + .catch((err) => { + setError(err.message); + setLoading(false); + }); + }, [src, columns]); + + if (loading) return
Loading CSV...
; + if (error) return
Error: {error}
; + + const displayData = maxRows ? data.slice(0, maxRows) : data; + + return ( +
+ + + + {headers.map((header, i) => ( + + ))} + + + + {displayData.map((row, rowIndex) => ( + + {row.map((cell, cellIndex) => ( + + ))} + + ))} + +
+ {header} +
+ {formatCell(cell)} +
+ {maxRows && data.length > maxRows && ( +

+ Showing {maxRows} of {data.length} rows.{' '} + + Download full CSV + +

+ )} +
+ ); +} + +function formatCell(value: string): string { + const num = parseFloat(value); + if (isNaN(num)) return value; + + // Format large numbers + if (Math.abs(num) >= 1e9) return (num / 1e9).toFixed(2) + 'B'; + if (Math.abs(num) >= 1e6) return (num / 1e6).toFixed(2) + 'M'; + if (Math.abs(num) >= 1e3) return (num / 1e3).toFixed(2) + 'K'; + + // Format small decimals (like R² values) + if (Math.abs(num) < 1 && Math.abs(num) > 0) return num.toFixed(4); + + // Format scientific notation + if (value.includes('e')) return num.toExponential(2); + + return num.toFixed(2); +} + +export default CsvTable; + diff --git a/www/docs/pages/benchmark-results.mdx b/www/docs/pages/benchmark-results.mdx new file mode 100644 index 00000000..fc4d758e --- /dev/null +++ b/www/docs/pages/benchmark-results.mdx @@ -0,0 +1,239 @@ +# Benchmark Results + +This page displays the generated benchmark results from zkGas profiling. Here you can view, analyze, and compare OPCODE resource requirements across different gas categories and zkVM implementations. + +## Current Results + +*No benchmark results available yet. Run the profiling scripts to generate results.* + +### How to Generate Results + +1. **Generate Fixtures**: + ```bash + ./scripts/generate-gas-categorized-fixtures.sh + ``` + +2. **Run Profiling**: + ```bash + ./scripts/run-gas-categorized-benchmarks.sh + ``` + +3. **Compare Results**: + ```bash + python3 scripts/compare_executions.py zkevm-metrics-risc0-1M zkevm-metrics-sp1-1M + python3 scripts/compare_provings.py zkevm-metrics-risc0-1M zkevm-metrics-sp1-1M + ``` + +## Results Display + +Once results are generated, they will be displayed here in organized sections: + +### Gas Category Analysis +Results will be organized by gas categories (1M, 10M, 30M, 45M, 60M, 100M, 500M) showing: +- Execution cycles and duration +- Proving time and memory usage +- Resource efficiency metrics + +### zkVM Implementation Comparison +Side-by-side comparison of different zkVM implementations (RISC0, SP1, OpenVM, Pico, Zisk) showing: +- Performance differences +- Resource usage patterns +- Optimization opportunities + +### Statistical Analysis +Comprehensive statistical analysis including: +- Mean, median, and standard deviation +- Performance ranges and distributions +- Correlation analysis between metrics + +## Directory Structure + +``` +benchmark-results/ +├── README.md # Main documentation +├── gas-categorized/ # Results organized by gas categories +│ ├── 1M/ # 1 million gas limit results +│ ├── 10M/ # 10 million gas limit results +│ ├── 30M/ # 30 million gas limit results +│ ├── 45M/ # 45 million gas limit results +│ ├── 60M/ # 60 million gas limit results +│ ├── 100M/ # 100 million gas limit results +│ └── 500M/ # 500 million gas limit results +├── zkvm-comparisons/ # Results organized by zkVM implementations +│ ├── risc0/ # RISC0 zkVM results +│ ├── sp1/ # SP1 zkVM results +│ ├── openvm/ # OpenVM zkVM results +│ ├── pico/ # Pico zkVM results +│ └── zisk/ # Zisk zkVM results +├── execution-clients/ # Results organized by execution client +│ ├── reth/ # Reth execution client results +│ └── ethrex/ # Ethrex execution client results +└── archived/ # Archived results from previous runs + ├── 2024-01/ # Results from January 2024 + ├── 2024-02/ # Results from February 2024 + └── ... +``` + +## Viewing Results + +### Gas-Categorized Results + +Browse results organized by gas categories: + +```bash +# List all gas categories +ls benchmark-results/gas-categorized/ + +# View results for specific gas category +ls benchmark-results/gas-categorized/10M/ + +# View a specific result file +cat benchmark-results/gas-categorized/10M/block_001.json +``` + +### zkVM Comparison Results + +Compare results across different zkVM implementations: + +```bash +# List all zkVM implementations +ls benchmark-results/zkvm-comparisons/ + +# View RISC0 results +ls benchmark-results/zkvm-comparisons/risc0/ + +# Compare RISC0 and SP1 results +diff benchmark-results/zkvm-comparisons/risc0/ benchmark-results/zkvm-comparisons/sp1/ +``` + +## Generating Results + +### Complete Workflow + +```bash +# 1. Generate fixtures +./scripts/generate-gas-categorized-fixtures.sh + +# 2. Run profiling +./scripts/run-gas-categorized-benchmarks.sh + +# 3. Compare results between different zkVM implementations +python3 scripts/compare_executions.py zkevm-metrics-risc0-1M zkevm-metrics-sp1-1M +python3 scripts/compare_provings.py zkevm-metrics-risc0-1M zkevm-metrics-sp1-1M +``` + +## File Types and Formats + +### JSON Metrics Files +- **Location**: `gas-categorized/` and `zkvm-comparisons/` +- **Format**: JSON files containing detailed profiling metrics +- **Content**: Execution cycles, proving time, memory usage, and metadata +- **Usage**: Raw data for analysis and comparison + +## Organization Best Practices + +### Naming Conventions + +#### Gas Category Directories +- Format: `{GAS_VALUE}` (e.g., `1M`, `10M`, `100M`) +- Purpose: Organize results by computational complexity + +#### zkVM Comparison Directories +- Format: `{ZKVM_NAME}` (e.g., `risc0`, `sp1`, `openvm`) +- Purpose: Organize results by zkVM implementation + +### Archiving Strategy + +#### Regular Archiving +```bash +# Archive current results monthly +mv benchmark-results/gas-categorized/1M benchmark-results/archived/$(date +%Y-%m)/1M + +# Create new directory for fresh results +mkdir -p benchmark-results/gas-categorized/1M +``` + +## Analysis Workflows + +### Quick Analysis +```bash +# Check specific gas category +ls benchmark-results/gas-categorized/10M/ +``` + +### Detailed Comparison +```bash +# Compare execution metrics between zkVMs +python3 scripts/compare_executions.py zkevm-metrics-risc0-10M zkevm-metrics-sp1-10M + +# Compare proving metrics between zkVMs +python3 scripts/compare_provings.py zkevm-metrics-risc0-10M zkevm-metrics-sp1-10M +``` + +## Troubleshooting + +### Missing Results +```bash +# Check if profiling has been run +ls zkevm-metrics-* + +# Verify fixtures exist +ls zkevm-fixtures-input-* + +# Run profiling if missing +./scripts/run-gas-categorized-benchmarks.sh +``` + +### Permission Issues +```bash +# Fix directory permissions +chmod 755 benchmark-results/ +chmod 755 benchmark-results/*/ +``` + +### Disk Space Management +```bash +# Check disk usage +du -sh benchmark-results/ + +# Clean up old results +rm -rf benchmark-results/archived/old-results/ +``` + +## Best Practices + +### Organization +1. **Use Consistent Naming**: Follow established naming conventions +2. **Regular Archiving**: Archive old results to maintain organization +3. **Document Changes**: Update README files when adding new structures +4. **Version Control**: Consider versioning important result sets + +### Analysis +1. **Start with Latest**: Begin analysis with the most recent results +2. **Compare Systematically**: Use comparison scripts for systematic analysis +3. **Document Findings**: Add notes about significant discoveries + +### Maintenance +1. **Regular Cleanup**: Archive old results to keep directory organized +2. **Backup Important Results**: Keep copies of significant findings +3. **Monitor Disk Usage**: Ensure sufficient space for new results +4. **Update Documentation**: Keep README files current with directory structure + +## Integration with Documentation + +The benchmark results directory integrates with the main documentation: + +- **Getting Started**: Overview of the profiling workflow and results organization +- **Gas Categorized Benchmarks**: How to generate the results stored here +- **Scripts**: Documentation for comparison scripts + +## Examples + +### Comparing Implementations +```bash +# Compare RISC0 vs SP1 execution metrics +python3 scripts/compare_executions.py zkevm-metrics-risc0-10M zkevm-metrics-sp1-10M + +# Compare RISC0 vs SP1 proving metrics +python3 scripts/compare_provings.py zkevm-metrics-risc0-10M zkevm-metrics-sp1-10M +``` diff --git a/www/docs/pages/benchmark-results/README.md b/www/docs/pages/benchmark-results/README.md new file mode 100644 index 00000000..4df4e403 --- /dev/null +++ b/www/docs/pages/benchmark-results/README.md @@ -0,0 +1,28 @@ +# Benchmark Results Directory + +This directory contains the benchmark results displayed in the documentation. Results are automatically updated when profiling is run. + +## Directory Structure + +``` +benchmark-results/ +├── README.md # This file +├── gas-categorized/ # Results by gas categories +├── zkvm-comparisons/ # Results by zkVM implementations +├── comparisons/ # Comparison reports +└── statistics/ # Statistical analysis reports +``` + +## How Results Are Updated + +Results are automatically updated when you run: + +```bash +# Generate results and update documentation +./scripts/generate_results.sh --compare --statistics --output benchmark-results/markdown-reports/latest/profiling-results.md +./scripts/update-docs-with-results.sh +``` + +## Viewing Results + +Results are displayed in the main [Benchmark Results](/benchmark-results) documentation page. diff --git a/www/docs/pages/benchmark-results/example-results.mdx b/www/docs/pages/benchmark-results/example-results.mdx new file mode 100644 index 00000000..f74d1401 --- /dev/null +++ b/www/docs/pages/benchmark-results/example-results.mdx @@ -0,0 +1,57 @@ +# Example Results + +This is an example of what the benchmark results would look like when displayed in the documentation. + +## Gas Category Analysis + +### 1M Gas Limit Results + +| Benchmark | Total Cycles | Duration (ms) | Proof Size (bytes) | Proving Time (ms) | +|-----------|--------------|---------------|-------------------|-------------------| +| block_001 | 1,234,567 | 45.2 | 2,048 | 1,250.5 | +| block_002 | 1,345,678 | 49.1 | 2,096 | 1,300.2 | +| block_003 | 1,456,789 | 52.8 | 2,144 | 1,350.8 | + +### 10M Gas Limit Results + +| Benchmark | Total Cycles | Duration (ms) | Proof Size (bytes) | Proving Time (ms) | +|-----------|--------------|---------------|-------------------|-------------------| +| block_001 | 12,345,678 | 452.1 | 4,096 | 12,505.0 | +| block_002 | 13,456,789 | 491.2 | 4,192 | 13,002.1 | +| block_003 | 14,567,890 | 528.3 | 4,288 | 13,508.2 | + +## zkVM Implementation Comparison + +### RISC0 vs SP1 (10M Gas) + +| Metric | RISC0 | SP1 | Difference | +|--------|-------|-----|------------| +| Avg Cycles | 13,456,789 | 12,345,678 | -8.3% | +| Avg Duration (ms) | 491.2 | 452.1 | -8.0% | +| Avg Proof Size (bytes) | 4,192 | 4,096 | -2.3% | +| Avg Proving Time (ms) | 13,002.1 | 12,505.0 | -3.8% | + +## Statistical Analysis + +### Execution Statistics +- **Total Cycles**: Min: 1,000,000, Max: 15,000,000, Avg: 8,000,000 +- **Duration**: Min: 30.0ms, Max: 600.0ms, Avg: 315.0ms + +### Proving Statistics +- **Proof Size**: Min: 2,048 bytes, Max: 8,192 bytes, Avg: 5,120 bytes +- **Proving Time**: Min: 1,000.0ms, Max: 15,000.0ms, Avg: 8,000.0ms +- **Peak Memory**: Min: 512.0MB, Max: 2,048.0MB, Avg: 1,280.0MB + +## Key Insights + +1. **Gas Scaling**: Performance scales linearly with gas limit for most opcodes +2. **zkVM Differences**: SP1 shows 3-8% better performance than RISC0 +3. **Memory Usage**: Peak memory usage correlates with gas limit +4. **Proving Efficiency**: Larger gas limits show better proving efficiency per cycle + +## Optimization Opportunities + +1. **Memory Management**: Optimize memory usage for high gas limit operations +2. **zkVM Selection**: Consider SP1 for better performance in high-throughput scenarios +3. **Gas Limit Tuning**: Find optimal gas limits for different opcode types +4. **Proving Optimization**: Focus on reducing proving time for frequently used opcodes diff --git a/www/docs/pages/benchmark-results/gas-categorized/0.1m/0.1M-4.md b/www/docs/pages/benchmark-results/gas-categorized/0.1m/0.1M-4.md new file mode 100644 index 00000000..a144dfe9 --- /dev/null +++ b/www/docs/pages/benchmark-results/gas-categorized/0.1m/0.1M-4.md @@ -0,0 +1,505 @@ +# zkVM Proving Time (in secs) Comparison + +**Gas Category:** 0.1M + +**Number of GPUs:** 4 + + +| Benchmark | risc0 | sp1 | +|---|---|---| +| Address State Cold (0.1M, Absent Accounts False, Balance) | 7.13 | 6.05 | +| Address State Cold (0.1M, Absent Accounts True, Balance) | 5.57 | 5.57 | +| Address State Warm (0.1M, Absent Target, Balance) | 6.63 | 6.58 | +| Address State Warm (0.1M, Absent Target, Call) | 9.43 | 7.06 | +| Address State Warm (0.1M, Absent Target, Callcode) | 9.56 | 7.07 | +| Address State Warm (0.1M, Absent Target, Delegatecall) | 9.40 | 7.08 | +| Address State Warm (0.1M, Absent Target, Extcodehash) | 7.08 | 6.57 | +| Address State Warm (0.1M, Absent Target, Extcodesize) | 6.82 | 7.06 | +| Address State Warm (0.1M, Absent Target, Staticcall) | 9.09 | 6.56 | +| Address State Warm (0.1M, Present Target, Balance) | 7.57 | 6.06 | +| Address State Warm (0.1M, Present Target, Call) | 10.99 | 7.08 | +| Address State Warm (0.1M, Present Target, Callcode) | 11.16 | 7.07 | +| Address State Warm (0.1M, Present Target, Delegatecall) | 10.96 | 6.58 | +| Address State Warm (0.1M, Present Target, Extcodehash) | 8.42 | 6.08 | +| Address State Warm (0.1M, Present Target, Extcodesize) | 8.76 | 6.56 | +| Address State Warm (0.1M, Present Target, Staticcall) | 10.29 | 7.07 | +| Amortized Bn128 Pairings (0.1M) | 5.71 | 6.56 | +| Binop Simple (0.1M, Add) | 7.74 | 6.08 | +| Binop Simple (0.1M, And) | 6.72 | 6.56 | +| Binop Simple (0.1M, Byte) | 6.87 | 6.06 | +| Binop Simple (0.1M, Div, 0) | 14.78 | 7.57 | +| Binop Simple (0.1M, Div, 1) | 13.75 | 7.59 | +| Binop Simple (0.1M, Eq) | 13.00 | 7.07 | +| Binop Simple (0.1M, Exp) | 14.06 | 7.06 | +| Binop Simple (0.1M, Gt) | 6.96 | 7.12 | +| Binop Simple (0.1M, Lt) | 7.12 | 6.57 | +| Binop Simple (0.1M, Mod) | 11.50 | 6.56 | +| Binop Simple (0.1M, Mul) | 10.92 | 7.08 | +| Binop Simple (0.1M, Or) | 7.55 | 6.06 | +| Binop Simple (0.1M, Sar) | 9.58 | 6.56 | +| Binop Simple (0.1M, Sdiv, 0) | 15.37 | 8.07 | +| Binop Simple (0.1M, Sdiv, 1) | 15.07 | 7.57 | +| Binop Simple (0.1M, Sgt) | 10.67 | 7.06 | +| Binop Simple (0.1M, Shl) | 9.41 | 7.08 | +| Binop Simple (0.1M, Shr) | 10.24 | 7.06 | +| Binop Simple (0.1M, Signextend) | 8.53 | 7.08 | +| Binop Simple (0.1M, Slt) | 11.24 | 6.56 | +| Binop Simple (0.1M, Smod) | 11.00 | 7.07 | +| Binop Simple (0.1M, Sub) | 10.15 | 7.07 | +| Binop Simple (0.1M, Xor) | 6.82 | 6.56 | +| Blobhash (0.1M, No Blobs) | 10.02 | 6.06 | +| Blobhash (0.1M, One Blob And Accessed) | 7.86 | 6.07 | +| Blobhash (0.1M, One Blob But Access Non, Existent Index) | 6.42 | 6.07 | +| Blobhash (0.1M, Six Blobs, Access Latest) | 9.16 | 6.63 | +| Block Full Access List And Data (0.1M) | 5.45 | 6.07 | +| Block Full Data (0.1M, Non Zero Byte) | 4.98 | 6.07 | +| Block Full Data (0.1M, Zero Byte) | 5.61 | 5.55 | +| Block Full Of Ether Transfers (0.1M, A To A) | 6.25 | 6.55 | +| Block Full Of Ether Transfers (0.1M, A To B) | 6.62 | 6.05 | +| Block Full Of Ether Transfers (0.1M, A To Diff Acc) | 6.04 | 6.06 | +| Block Full Of Ether Transfers (0.1M, Diff Acc To B) | 6.92 | 6.57 | +| Block Full Of Ether Transfers (0.1M, Diff Acc To Diff Acc) | 6.47 | 6.05 | +| Blockhash (0.1M) | 12.86 | 7.08 | +| Bytecode Single Opcode (0.1M, Call) | 18.84 | 7.58 | +| Bytecode Single Opcode (0.1M, Callcode) | 20.86 | 9.10 | +| Bytecode Single Opcode (0.1M, Delegatecall) | 18.68 | 7.57 | +| Bytecode Single Opcode (0.1M, Extcodecopy) | 17.97 | 8.57 | +| Bytecode Single Opcode (0.1M, Extcodehash) | 17.64 | 8.59 | +| Bytecode Single Opcode (0.1M, Extcodesize) | 19.84 | 8.07 | +| Bytecode Single Opcode (0.1M, Staticcall) | 19.20 | 8.08 | +| Calldatacopy (0.1M, Non Zero, Dynamic Src Dst, 100Bytes, Call) | 9.31 | 6.56 | +| Calldatacopy (0.1M, Non Zero, Dynamic Src Dst, 100Bytes, Transaction) | 11.35 | 6.55 | +| Calldatacopy (0.1M, Non Zero, Fixed Src Dst, 100Bytes, Call) | 7.35 | 6.65 | +| Calldatacopy (0.1M, Non Zero, Fixed Src Dst, 100Bytes, Transaction) | 7.52 | 6.55 | +| Calldatacopy (0.1M, Zero Data, Dynamic Src Dst, 0Bytes, Call) | 9.69 | 7.60 | +| Calldatacopy (0.1M, Zero Data, Dynamic Src Dst, 0Bytes, Transaction) | 9.18 | 7.07 | +| Calldatacopy (0.1M, Zero Data, Dynamic Src Dst, 100Bytes, Call) | 9.13 | 6.07 | +| Calldatacopy (0.1M, Zero Data, Dynamic Src Dst, 100Bytes, Transaction) | 8.75 | 6.59 | +| Calldatacopy (0.1M, Zero Data, Dynamic Src Dst, 10Kib, Call) | 7.24 | 6.07 | +| Calldatacopy (0.1M, Zero Data, Dynamic Src Dst, 10Kib, Transaction) | 5.58 | 6.08 | +| Calldatacopy (0.1M, Zero Data, Dynamic Src Dst, 1Mib, Call) | 5.27 | 6.07 | +| Calldatacopy (0.1M, Zero Data, Dynamic Src Dst, 1Mib, Transaction) | 5.31 | 6.06 | +| Calldatacopy (0.1M, Zero Data, Fixed Src Dst, 0Bytes, Call) | 7.74 | 7.07 | +| Calldatacopy (0.1M, Zero Data, Fixed Src Dst, 0Bytes, Transaction) | 8.90 | 6.06 | +| Calldatacopy (0.1M, Zero Data, Fixed Src Dst, 100Bytes, Call) | 6.98 | 7.06 | +| Calldatacopy (0.1M, Zero Data, Fixed Src Dst, 100Bytes, Transaction) | 7.92 | 6.07 | +| Calldatacopy (0.1M, Zero Data, Fixed Src Dst, 10Kib, Call) | 5.75 | 6.59 | +| Calldatacopy (0.1M, Zero Data, Fixed Src Dst, 10Kib, Transaction) | 6.53 | 6.07 | +| Calldatacopy (0.1M, Zero Data, Fixed Src Dst, 1Mib, Call) | 5.25 | 6.05 | +| Calldatacopy (0.1M, Zero Data, Fixed Src Dst, 1Mib, Transaction) | 5.38 | 6.06 | +| Calldataload (0.1M, Empty) | 8.99 | 7.09 | +| Calldataload (0.1M, One, Loop) | 11.88 | 7.57 | +| Calldataload (0.1M, Zero, Loop) | 12.30 | 7.08 | +| Calldatasize (0.1M, Calldata Length 0) | 8.91 | 6.08 | +| Calldatasize (0.1M, Calldata Length 1000) | 6.91 | 6.06 | +| Callvalue (0.1M, From Origin False, Non Zero Value False) | 7.64 | 6.57 | +| Callvalue (0.1M, From Origin False, Non Zero Value True) | 7.96 | 6.07 | +| Callvalue (0.1M, From Origin True, Non Zero Value False) | 7.61 | 6.59 | +| Callvalue (0.1M, From Origin True, Non Zero Value True) | 8.57 | 7.59 | +| Codecopy (0.1M, Dynamic Src Dst, 0.25X Max Code) | 6.06 | 6.58 | +| Codecopy (0.1M, Dynamic Src Dst, 0.50X Max Code Size) | 6.87 | 6.06 | +| Codecopy (0.1M, Dynamic Src Dst, 0.75X Max Code Size) | 7.27 | 6.07 | +| Codecopy (0.1M, Dynamic Src Dst, 0Bytes) | 9.90 | 6.56 | +| Codecopy (0.1M, Dynamic Src Dst, Max Code) | 6.62 | 6.57 | +| Codecopy (0.1M, Fixed Src Dst, 0.25X Max Code) | 6.49 | 6.08 | +| Codecopy (0.1M, Fixed Src Dst, 0.50X Max Code Size) | 5.53 | 6.56 | +| Codecopy (0.1M, Fixed Src Dst, 0.75X Max Code Size) | 6.21 | 6.57 | +| Codecopy (0.1M, Fixed Src Dst, 0Bytes) | 6.56 | 6.56 | +| Codecopy (0.1M, Fixed Src Dst, Max Code) | 6.48 | 7.07 | +| Create (0.1M, 0.25X Max Code, Create) | 6.78 | 6.56 | +| Create (0.1M, 0.25X Max Code, Create2) | 6.61 | 5.56 | +| Create (0.1M, 0.25X Max Code, Zero Data, Create) | 7.12 | 6.08 | +| Create (0.1M, 0.25X Max Code, Zero Data, Create2) | 6.18 | 6.06 | +| Create (0.1M, 0.50X Max Code Size With Non, Zero Data, Create) | 6.64 | 6.57 | +| Create (0.1M, 0.50X Max Code Size With Non, Zero Data, Create2) | 7.24 | 6.08 | +| Create (0.1M, 0.50X Max Code Size With Zero Data, Create) | 6.20 | 6.59 | +| Create (0.1M, 0.50X Max Code Size With Zero Data, Create2) | 5.59 | 6.05 | +| Create (0.1M, 0.75X Max Code Size With Non, Zero Data, Create) | 6.47 | 6.55 | +| Create (0.1M, 0.75X Max Code Size With Non, Zero Data, Create2) | 6.63 | 6.06 | +| Create (0.1M, 0.75X Max Code Size With Zero Data, Create) | 5.92 | 6.58 | +| Create (0.1M, 0.75X Max Code Size With Zero Data, Create2) | 7.55 | 6.05 | +| Create (0.1M, 0Bytes, Create) | 5.91 | 6.05 | +| Create (0.1M, 0Bytes, Create2) | 5.57 | 6.06 | +| Create (0.1M, Max Code, Create) | 6.85 | 6.57 | +| Create (0.1M, Max Code, Create2) | 6.13 | 6.58 | +| Create (0.1M, Max Code, Zero Data, Create) | 6.88 | 6.06 | +| Create (0.1M, Max Code, Zero Data, Create2) | 7.56 | 6.57 | +| Creates Collisions (0.1M, Create) | 6.29 | 6.07 | +| Creates Collisions (0.1M, Create2) | 5.74 | 6.06 | +| Dup (0.1M, Dup1) | 7.20 | 6.05 | +| Dup (0.1M, Dup10) | 7.58 | 6.57 | +| Dup (0.1M, Dup11) | 7.33 | 7.08 | +| Dup (0.1M, Dup12) | 8.75 | 6.08 | +| Dup (0.1M, Dup13) | 7.04 | 6.58 | +| Dup (0.1M, Dup14) | 6.79 | 6.57 | +| Dup (0.1M, Dup15) | 7.09 | 6.56 | +| Dup (0.1M, Dup16) | 7.76 | 6.56 | +| Dup (0.1M, Dup2) | 6.51 | 6.57 | +| Dup (0.1M, Dup3) | 6.78 | 6.05 | +| Dup (0.1M, Dup4) | 9.06 | 7.09 | +| Dup (0.1M, Dup5) | 7.12 | 6.56 | +| Dup (0.1M, Dup6) | 7.10 | 6.56 | +| Dup (0.1M, Dup7) | 7.91 | 6.57 | +| Dup (0.1M, Dup8) | 7.03 | 6.58 | +| Dup (0.1M, Dup9) | 8.22 | 6.58 | +| Empty Block (0.1M) | 5.09 | 4.55 | +| Extcodecopy Warm (0.1M, 1Kib) | 5.61 | 6.06 | +| Extcodecopy Warm (0.1M, 512) | 6.08 | 6.55 | +| Extcodecopy Warm (0.1M, 5Kib) | 6.42 | 6.57 | +| Initcode Jumpdest Analysis (0.1M, 00) | 6.44 | 6.56 | +| Initcode Jumpdest Analysis (0.1M, 5B) | 6.69 | 6.55 | +| Initcode Jumpdest Analysis (0.1M, 605B) | 6.28 | 6.06 | +| Initcode Jumpdest Analysis (0.1M, 605B5B) | 6.59 | 6.07 | +| Initcode Jumpdest Analysis (0.1M, 615B5B) | 6.47 | 6.06 | +| Initcode Jumpdest Analysis (0.1M, 615B5B5B) | 6.03 | 6.58 | +| Jumpdests (0.1M) | 11.37 | 7.07 | +| Jumpi Fallthrough (0.1M) | 7.75 | 6.06 | +| Jumpis (0.1M) | 5.80 | 6.56 | +| Jumps (0.1M) | 6.01 | 6.05 | +| Keccak (0.1M) | 12.37 | 7.06 | +| Log Opcodes (0.1M, Dynamic, Non Zero Topic, 0 Bytes Data, Log0) | 6.11 | 7.06 | +| Log Opcodes (0.1M, Dynamic, Non Zero Topic, 0 Bytes Data, Log1) | 5.90 | 6.05 | +| Log Opcodes (0.1M, Dynamic, Non Zero Topic, 0 Bytes Data, Log2) | 5.99 | 6.07 | +| Log Opcodes (0.1M, Dynamic, Non Zero Topic, 0 Bytes Data, Log3) | 6.28 | 6.06 | +| Log Opcodes (0.1M, Dynamic, Non Zero Topic, 0 Bytes Data, Log4) | 5.67 | 6.07 | +| Log Opcodes (0.1M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log0) | 5.90 | 6.05 | +| Log Opcodes (0.1M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log1) | 6.65 | 6.04 | +| Log Opcodes (0.1M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log2) | 6.13 | 6.08 | +| Log Opcodes (0.1M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log3) | 5.74 | 6.07 | +| Log Opcodes (0.1M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log4) | 5.56 | 6.06 | +| Log Opcodes (0.1M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log0) | 4.98 | 6.06 | +| Log Opcodes (0.1M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log1) | 5.49 | 6.07 | +| Log Opcodes (0.1M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log2) | 6.18 | 6.57 | +| Log Opcodes (0.1M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log3) | 5.22 | 6.05 | +| Log Opcodes (0.1M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log4) | 5.62 | 6.09 | +| Log Opcodes (0.1M, Dynamic, Zero Topic, 0 Bytes Data, Log0) | 6.05 | 6.55 | +| Log Opcodes (0.1M, Dynamic, Zero Topic, 0 Bytes Data, Log1) | 5.80 | 6.07 | +| Log Opcodes (0.1M, Dynamic, Zero Topic, 0 Bytes Data, Log2) | 7.00 | 6.06 | +| Log Opcodes (0.1M, Dynamic, Zero Topic, 0 Bytes Data, Log3) | 5.29 | 6.07 | +| Log Opcodes (0.1M, Dynamic, Zero Topic, 0 Bytes Data, Log4) | 5.73 | 6.56 | +| Log Opcodes (0.1M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log0) | 6.31 | 6.58 | +| Log Opcodes (0.1M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log1) | 5.20 | 5.56 | +| Log Opcodes (0.1M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log2) | 5.20 | 5.58 | +| Log Opcodes (0.1M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log3) | 6.31 | 5.55 | +| Log Opcodes (0.1M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log4) | 6.11 | 6.07 | +| Log Opcodes (0.1M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log0) | 5.61 | 6.05 | +| Log Opcodes (0.1M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log1) | 5.54 | 6.58 | +| Log Opcodes (0.1M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log2) | 6.35 | 6.06 | +| Log Opcodes (0.1M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log3) | 5.34 | 6.07 | +| Log Opcodes (0.1M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log4) | 5.52 | 6.05 | +| Log Opcodes (0.1M, Fixed, Non Zero Topic, 0 Bytes Data, Log0) | 6.06 | 6.06 | +| Log Opcodes (0.1M, Fixed, Non Zero Topic, 0 Bytes Data, Log1) | 6.37 | 5.57 | +| Log Opcodes (0.1M, Fixed, Non Zero Topic, 0 Bytes Data, Log2) | 6.80 | 6.06 | +| Log Opcodes (0.1M, Fixed, Non Zero Topic, 0 Bytes Data, Log3) | 5.67 | 5.55 | +| Log Opcodes (0.1M, Fixed, Non Zero Topic, 0 Bytes Data, Log4) | 6.12 | 6.07 | +| Log Opcodes (0.1M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log0) | 6.02 | 6.06 | +| Log Opcodes (0.1M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log1) | 6.40 | 6.05 | +| Log Opcodes (0.1M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log2) | 6.25 | 6.07 | +| Log Opcodes (0.1M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log3) | 6.17 | 6.06 | +| Log Opcodes (0.1M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log4) | 5.85 | 6.06 | +| Log Opcodes (0.1M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log0) | 5.16 | 6.07 | +| Log Opcodes (0.1M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log1) | 5.97 | 6.06 | +| Log Opcodes (0.1M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log2) | 6.18 | 6.07 | +| Log Opcodes (0.1M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log3) | 5.91 | 6.56 | +| Log Opcodes (0.1M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log4) | 5.35 | 6.06 | +| Log Opcodes (0.1M, Fixed, Zero Topic, 0 Bytes Data, Log0) | 6.09 | 6.08 | +| Log Opcodes (0.1M, Fixed, Zero Topic, 0 Bytes Data, Log1) | 6.83 | 6.06 | +| Log Opcodes (0.1M, Fixed, Zero Topic, 0 Bytes Data, Log2) | 5.44 | 6.57 | +| Log Opcodes (0.1M, Fixed, Zero Topic, 0 Bytes Data, Log3) | 6.67 | 5.55 | +| Log Opcodes (0.1M, Fixed, Zero Topic, 0 Bytes Data, Log4) | 5.29 | 6.05 | +| Log Opcodes (0.1M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log0) | 5.66 | 6.57 | +| Log Opcodes (0.1M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log1) | 6.08 | 6.06 | +| Log Opcodes (0.1M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log2) | 6.08 | 6.56 | +| Log Opcodes (0.1M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log3) | 5.89 | 5.56 | +| Log Opcodes (0.1M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log4) | 6.04 | 6.05 | +| Log Opcodes (0.1M, Fixed, Zero Topic, 1 Mib Zeros Data, Log0) | 6.07 | 6.07 | +| Log Opcodes (0.1M, Fixed, Zero Topic, 1 Mib Zeros Data, Log1) | 5.64 | 6.57 | +| Log Opcodes (0.1M, Fixed, Zero Topic, 1 Mib Zeros Data, Log2) | 5.22 | 6.05 | +| Log Opcodes (0.1M, Fixed, Zero Topic, 1 Mib Zeros Data, Log3) | 5.99 | 6.06 | +| Log Opcodes (0.1M, Fixed, Zero Topic, 1 Mib Zeros Data, Log4) | 5.40 | 6.08 | +| Mcopy (0.1M, Dynamic Src Dst, 0Bytes) | 8.10 | 6.56 | +| Mcopy (0.1M, Dynamic Src Dst, 100Bytes) | 8.41 | 6.57 | +| Mcopy (0.1M, Dynamic Src Dst, 10Kib) | 7.07 | 6.57 | +| Mcopy (0.1M, Dynamic Src Dst, 1Mib) | 4.97 | 6.07 | +| Mcopy (0.1M, Fixed Src Dst, 0Bytes) | 6.68 | 6.57 | +| Mcopy (0.1M, Fixed Src Dst, 100Bytes) | 7.16 | 6.08 | +| Mcopy (0.1M, Fixed Src Dst, 10Kib) | 8.09 | 6.55 | +| Mcopy (0.1M, Fixed Src Dst, 1Mib) | 5.41 | 6.06 | +| Memory Access (0.1M, Big Mem, Init Offset, Off 0, Mload) | 9.29 | 6.07 | +| Memory Access (0.1M, Big Mem, Init Offset, Off 0, Mstore) | 8.87 | 6.55 | +| Memory Access (0.1M, Big Mem, Init Offset, Off 0, Mstore8) | 7.68 | 6.04 | +| Memory Access (0.1M, Big Mem, Init Offset, Off 1, Mload) | 8.11 | 7.07 | +| Memory Access (0.1M, Big Mem, Init Offset, Off 1, Mstore) | 8.34 | 6.57 | +| Memory Access (0.1M, Big Mem, Init Offset, Off 1, Mstore8) | 6.64 | 6.57 | +| Memory Access (0.1M, Big Mem, Init Offset, Off 31, Mload) | 7.82 | 6.07 | +| Memory Access (0.1M, Big Mem, Init Offset, Off 31, Mstore) | 7.69 | 6.57 | +| Memory Access (0.1M, Big Mem, Init Offset, Off 31, Mstore8) | 8.62 | 6.54 | +| Memory Access (0.1M, Big Mem, Uninit Offset, Off 0, Mload) | 8.83 | 7.07 | +| Memory Access (0.1M, Big Mem, Uninit Offset, Off 0, Mstore) | 9.57 | 6.57 | +| Memory Access (0.1M, Big Mem, Uninit Offset, Off 0, Mstore8) | 7.01 | 6.08 | +| Memory Access (0.1M, Big Mem, Uninit Offset, Off 1, Mload) | 7.66 | 6.07 | +| Memory Access (0.1M, Big Mem, Uninit Offset, Off 1, Mstore) | 7.85 | 6.57 | +| Memory Access (0.1M, Big Mem, Uninit Offset, Off 1, Mstore8) | 7.94 | 7.06 | +| Memory Access (0.1M, Big Mem, Uninit Offset, Off 31, Mload) | 8.78 | 7.06 | +| Memory Access (0.1M, Big Mem, Uninit Offset, Off 31, Mstore) | 9.04 | 7.08 | +| Memory Access (0.1M, Big Mem, Uninit Offset, Off 31, Mstore8) | 6.91 | 7.07 | +| Memory Access (0.1M, Small Mem, Init Offset, Off 0, Mload) | 8.61 | 7.07 | +| Memory Access (0.1M, Small Mem, Init Offset, Off 0, Mstore) | 9.09 | 6.57 | +| Memory Access (0.1M, Small Mem, Init Offset, Off 0, Mstore8) | 8.14 | 6.06 | +| Memory Access (0.1M, Small Mem, Init Offset, Off 1, Mload) | 9.37 | 6.56 | +| Memory Access (0.1M, Small Mem, Init Offset, Off 1, Mstore) | 7.46 | 6.56 | +| Memory Access (0.1M, Small Mem, Init Offset, Off 1, Mstore8) | 8.12 | 6.56 | +| Memory Access (0.1M, Small Mem, Init Offset, Off 31, Mload) | 8.44 | 6.57 | +| Memory Access (0.1M, Small Mem, Init Offset, Off 31, Mstore) | 8.10 | 6.56 | +| Memory Access (0.1M, Small Mem, Init Offset, Off 31, Mstore8) | 8.28 | 7.09 | +| Memory Access (0.1M, Small Mem, Uninit Offset, Off 0, Mload) | 7.52 | 6.06 | +| Memory Access (0.1M, Small Mem, Uninit Offset, Off 0, Mstore) | 9.12 | 6.58 | +| Memory Access (0.1M, Small Mem, Uninit Offset, Off 0, Mstore8) | 7.03 | 6.55 | +| Memory Access (0.1M, Small Mem, Uninit Offset, Off 1, Mload) | 9.91 | 6.06 | +| Memory Access (0.1M, Small Mem, Uninit Offset, Off 1, Mstore) | 8.52 | 6.06 | +| Memory Access (0.1M, Small Mem, Uninit Offset, Off 1, Mstore8) | 7.91 | 6.60 | +| Memory Access (0.1M, Small Mem, Uninit Offset, Off 31, Mload) | 7.75 | 6.55 | +| Memory Access (0.1M, Small Mem, Uninit Offset, Off 31, Mstore) | 8.18 | 6.06 | +| Memory Access (0.1M, Small Mem, Uninit Offset, Off 31, Mstore8) | 6.80 | 6.05 | +| Mod (0.1M, Op Mod, Mod Bits 127) | 13.87 | 7.58 | +| Mod (0.1M, Op Mod, Mod Bits 191) | 14.54 | 7.57 | +| Mod (0.1M, Op Mod, Mod Bits 255) | 14.10 | 7.57 | +| Mod (0.1M, Op Mod, Mod Bits 63) | 12.23 | 7.08 | +| Mod (0.1M, Op Smod, Mod Bits 127) | 13.38 | 7.57 | +| Mod (0.1M, Op Smod, Mod Bits 191) | 15.51 | 7.58 | +| Mod (0.1M, Op Smod, Mod Bits 255) | 13.44 | 8.07 | +| Mod (0.1M, Op Smod, Mod Bits 63) | 13.91 | 7.55 | +| Modarith (0.1M, Op Addmod, Mod Bits 127) | 14.58 | 6.08 | +| Modarith (0.1M, Op Addmod, Mod Bits 191) | 15.07 | 7.57 | +| Modarith (0.1M, Op Addmod, Mod Bits 255) | 12.22 | 7.06 | +| Modarith (0.1M, Op Addmod, Mod Bits 63) | 12.92 | 7.07 | +| Modarith (0.1M, Op Mulmod, Mod Bits 127) | 15.33 | 8.58 | +| Modarith (0.1M, Op Mulmod, Mod Bits 191) | 18.75 | 10.09 | +| Modarith (0.1M, Op Mulmod, Mod Bits 255) | 18.37 | 9.10 | +| Modarith (0.1M, Op Mulmod, Mod Bits 63) | 14.23 | 8.09 | +| Modexp (0.1M, Mod 1045 Gas Base Heavy) | 86.00 | 32.34 | +| Modexp (0.1M, Mod 1360 Gas Balanced) | 31.05 | 14.17 | +| Modexp (0.1M, Mod 400 Gas Exp Heavy) | 39.52 | 15.69 | +| Modexp (0.1M, Mod 408 Gas Balanced) | 29.41 | 13.12 | +| Modexp (0.1M, Mod 408 Gas Base Heavy) | 82.97 | 31.78 | +| Modexp (0.1M, Mod 600 As Balanced) | 34.99 | 13.64 | +| Modexp (0.1M, Mod 600 Gas Exp Heavy) | 39.81 | 16.17 | +| Modexp (0.1M, Mod 616 Gas Base Heavy) | 88.06 | 32.88 | +| Modexp (0.1M, Mod 677 Gas Base Heavy) | 32.33 | 14.64 | +| Modexp (0.1M, Mod 765 Gas Exp Heavy) | 32.72 | 14.64 | +| Modexp (0.1M, Mod 767 Gas Balanced) | 28.14 | 13.12 | +| Modexp (0.1M, Mod 800 Gas Base Heavy) | 86.54 | 33.80 | +| Modexp (0.1M, Mod 800 Gas Exp Heavy) | 40.57 | 17.16 | +| Modexp (0.1M, Mod 852 Gas Exp Heavy) | 41.20 | 16.14 | +| Modexp (0.1M, Mod 867 Gas Base Heavy) | 84.98 | 33.36 | +| Modexp (0.1M, Mod 996 Gas Balanced) | 30.11 | 12.63 | +| Modexp (0.1M, Mod Even 128B Exp 1024) | 7.54 | 6.05 | +| Modexp (0.1M, Mod Even 16B Exp 320) | 39.82 | 15.68 | +| Modexp (0.1M, Mod Even 24B Exp 168) | 33.75 | 15.18 | +| Modexp (0.1M, Mod Even 256B Exp 1024) | 6.18 | 6.07 | +| Modexp (0.1M, Mod Even 32B Exp 256) | 31.12 | 14.63 | +| Modexp (0.1M, Mod Even 32B Exp 40) | 28.55 | 13.12 | +| Modexp (0.1M, Mod Even 32B Exp 96) | 30.53 | 14.15 | +| Modexp (0.1M, Mod Even 512B Exp 1024) | 6.16 | 6.06 | +| Modexp (0.1M, Mod Even 64B Exp 512) | 26.61 | 12.10 | +| Modexp (0.1M, Mod Even 8B Exp 896) | 59.52 | 24.20 | +| Modexp (0.1M, Mod Exp 208 Gas Balanced) | 31.35 | 12.66 | +| Modexp (0.1M, Mod Exp 215 Gas Exp Heavy) | 53.43 | 22.23 | +| Modexp (0.1M, Mod Exp 298 Gas Exp Heavy) | 58.80 | 23.22 | +| Modexp (0.1M, Mod Min As Balanced) | 28.64 | 12.64 | +| Modexp (0.1M, Mod Min As Base Heavy) | 72.37 | 27.31 | +| Modexp (0.1M, Mod Min As Exp Heavy) | 53.58 | 21.21 | +| Modexp (0.1M, Mod Odd 128B Exp 1024) | 5.70 | 6.05 | +| Modexp (0.1M, Mod Odd 256B Exp 1024) | 6.55 | 6.07 | +| Modexp (0.1M, Mod Odd 32B Exp 256) | 32.39 | 14.15 | +| Modexp (0.1M, Mod Odd 32B Exp 96) | 31.71 | 14.15 | +| Modexp (0.1M, Mod Odd 32B Exp Cover Windows) | 25.63 | 11.64 | +| Modexp (0.1M, Mod Odd 512B Exp 1024) | 5.70 | 6.05 | +| Modexp (0.1M, Mod Odd 64B Exp 512) | 27.08 | 12.64 | +| Modexp (0.1M, Mod Pawel 2) | 37.64 | 16.66 | +| Modexp (0.1M, Mod Pawel 3) | 33.36 | 14.18 | +| Modexp (0.1M, Mod Pawel 4) | 30.89 | 13.14 | +| Modexp (0.1M, Mod Vul Common 1152N1) | 22.96 | 10.11 | +| Modexp (0.1M, Mod Vul Common 1349N1) | 31.83 | 12.12 | +| Modexp (0.1M, Mod Vul Common 1360N1) | 29.64 | 12.63 | +| Modexp (0.1M, Mod Vul Common 1360N2) | 28.72 | 12.10 | +| Modexp (0.1M, Mod Vul Common 200N1) | 18.94 | 8.58 | +| Modexp (0.1M, Mod Vul Common 200N2) | 22.75 | 10.62 | +| Modexp (0.1M, Mod Vul Common 200N3) | 26.50 | 10.13 | +| Modexp (0.1M, Mod Vul Example 1) | 32.27 | 15.15 | +| Modexp (0.1M, Mod Vul Example 2) | 36.99 | 15.17 | +| Modexp (0.1M, Mod Vul Guido 1 Even) | 24.21 | 12.11 | +| Modexp (0.1M, Mod Vul Guido 2 Even) | 33.33 | 14.66 | +| Modexp (0.1M, Mod Vul Guido 3 Even) | 48.66 | 20.22 | +| Modexp (0.1M, Mod Vul Marius 1 Even) | 33.30 | 13.65 | +| Modexp (0.1M, Mod Vul Nagydani 1 Pow 0X10001) | 27.50 | 11.65 | +| Modexp (0.1M, Mod Vul Nagydani 1 Qube) | 22.04 | 10.10 | +| Modexp (0.1M, Mod Vul Nagydani 1 Square) | 20.56 | 10.11 | +| Modexp (0.1M, Mod Vul Nagydani 2 Pow 0X10001) | 25.73 | 11.62 | +| Modexp (0.1M, Mod Vul Nagydani 2 Qube) | 45.28 | 18.18 | +| Modexp (0.1M, Mod Vul Nagydani 2 Square) | 42.73 | 16.67 | +| Modexp (0.1M, Mod Vul Nagydani 3 Pow 0X10001) | 23.68 | 11.60 | +| Modexp (0.1M, Mod Vul Nagydani 3 Qube) | 93.42 | 33.86 | +| Modexp (0.1M, Mod Vul Nagydani 3 Square) | 86.46 | 31.32 | +| Modexp (0.1M, Mod Vul Nagydani 4 Pow 0X10001) | 18.62 | 9.62 | +| Modexp (0.1M, Mod Vul Nagydani 4 Qube) | 92.29 | 36.35 | +| Modexp (0.1M, Mod Vul Nagydani 4 Square) | 85.95 | 32.33 | +| Modexp (0.1M, Mod Vul Pawel 1 Exp Heavy) | 56.46 | 22.20 | +| Modexp (0.1M, Mod Vul Pawel 2 Exp Heavy) | 37.49 | 15.16 | +| Modexp (0.1M, Mod Vul Pawel 3 Exp Heavy) | 31.56 | 14.67 | +| Modexp (0.1M, Mod Vul Pawel 4 Exp Heavy) | 29.17 | 13.12 | +| Msize (0.1M, Mem Size 0) | 10.49 | 6.55 | +| Msize (0.1M, Mem Size 1) | 8.06 | 6.05 | +| Msize (0.1M, Mem Size 1000) | 8.06 | 7.06 | +| Msize (0.1M, Mem Size 100000) | 8.74 | 6.05 | +| Msize (0.1M, Mem Size 1000000) | 8.87 | 6.57 | +| Precompile Fixed Cost (0.1M, Blake2F) | 26.89 | 12.12 | +| Precompile Fixed Cost (0.1M, Bls12 Fp To G1) | 10.25 | 19.22 | +| Precompile Fixed Cost (0.1M, Bls12 Fp To G2) | 9.02 | 14.65 | +| Precompile Fixed Cost (0.1M, Bls12 G1Add) | 11.45 | 12.64 | +| Precompile Fixed Cost (0.1M, Bls12 G1Msm) | 7.05 | 6.06 | +| Precompile Fixed Cost (0.1M, Bls12 G2Add) | 9.11 | 14.64 | +| Precompile Fixed Cost (0.1M, Bls12 G2Msm) | 6.61 | 6.07 | +| Precompile Fixed Cost (0.1M, Bls12 Pairing Check) | 13.47 | 16.68 | +| Precompile Fixed Cost (0.1M, Bn128 Add 1 2) | 10.77 | 8.07 | +| Precompile Fixed Cost (0.1M, Bn128 Add Infinities) | 7.88 | 6.05 | +| Precompile Fixed Cost (0.1M, Bn128 Add) | 9.58 | 9.12 | +| Precompile Fixed Cost (0.1M, Bn128 Mul 1 2 2 Scalar) | 6.17 | 7.59 | +| Precompile Fixed Cost (0.1M, Bn128 Mul 1 2 32 Byte Scalar) | 16.21 | 9.10 | +| Precompile Fixed Cost (0.1M, Bn128 Mul 32 Byte Coord And 2 Scalar) | 6.38 | 6.57 | +| Precompile Fixed Cost (0.1M, Bn128 Mul 32 Byte Coord And Scalar) | 19.05 | 9.10 | +| Precompile Fixed Cost (0.1M, Bn128 Mul Infinities 2 Scalar) | 6.69 | 6.58 | +| Precompile Fixed Cost (0.1M, Bn128 Mul Infinities 32 Byte Scalar) | 14.21 | 8.08 | +| Precompile Fixed Cost (0.1M, Bn128 Mul) | 16.45 | 9.08 | +| Precompile Fixed Cost (0.1M, Bn128 One Pairing) | 5.50 | 6.04 | +| Precompile Fixed Cost (0.1M, Bn128 Two Pairings Empty) | 5.85 | 6.06 | +| Precompile Fixed Cost (0.1M, Bn128 Two Pairings) | 5.41 | 6.07 | +| Precompile Fixed Cost (0.1M, Ecrecover) | 17.07 | 7.57 | +| Precompile Fixed Cost (0.1M, Point Evaluation) | 15.94 | 25.29 | +| Precompile Only Data Input (0.1M, Identity) | 8.42 | 6.07 | +| Precompile Only Data Input (0.1M, Ripemd, 160) | 6.08 | 6.05 | +| Precompile Only Data Input (0.1M, Sha2, 256) | 7.32 | 7.57 | +| Push (0.1M, Push0) | 8.05 | 6.58 | +| Push (0.1M, Push1) | 7.62 | 7.07 | +| Push (0.1M, Push10) | 7.83 | 7.06 | +| Push (0.1M, Push11) | 7.73 | 6.58 | +| Push (0.1M, Push12) | 7.63 | 6.56 | +| Push (0.1M, Push13) | 8.29 | 6.57 | +| Push (0.1M, Push14) | 8.43 | 6.05 | +| Push (0.1M, Push15) | 7.86 | 6.56 | +| Push (0.1M, Push16) | 9.28 | 6.59 | +| Push (0.1M, Push17) | 10.11 | 6.57 | +| Push (0.1M, Push18) | 7.78 | 6.09 | +| Push (0.1M, Push19) | 9.79 | 6.59 | +| Push (0.1M, Push2) | 6.89 | 6.06 | +| Push (0.1M, Push20) | 10.12 | 6.57 | +| Push (0.1M, Push21) | 9.66 | 6.57 | +| Push (0.1M, Push22) | 9.96 | 7.07 | +| Push (0.1M, Push23) | 9.56 | 7.08 | +| Push (0.1M, Push24) | 8.48 | 6.56 | +| Push (0.1M, Push25) | 9.52 | 6.57 | +| Push (0.1M, Push26) | 10.34 | 6.57 | +| Push (0.1M, Push27) | 10.24 | 7.57 | +| Push (0.1M, Push28) | 9.12 | 7.59 | +| Push (0.1M, Push29) | 11.68 | 7.59 | +| Push (0.1M, Push3) | 6.91 | 6.56 | +| Push (0.1M, Push30) | 9.14 | 7.08 | +| Push (0.1M, Push31) | 9.13 | 7.05 | +| Push (0.1M, Push32) | 9.62 | 7.05 | +| Push (0.1M, Push4) | 6.85 | 6.06 | +| Push (0.1M, Push5) | 6.99 | 7.07 | +| Push (0.1M, Push6) | 7.32 | 6.55 | +| Push (0.1M, Push7) | 8.63 | 6.56 | +| Push (0.1M, Push8) | 7.39 | 6.05 | +| Push (0.1M, Push9) | 9.38 | 7.06 | +| Return Revert (0.1M, 1Kib Of Non, Zero Data, Return) | 11.26 | 7.09 | +| Return Revert (0.1M, 1Kib Of Non, Zero Data, Revert) | 9.37 | 7.08 | +| Return Revert (0.1M, 1Kib Of Zero Data, Return) | 10.50 | 6.56 | +| Return Revert (0.1M, 1Kib Of Zero Data, Revert) | 9.62 | 7.07 | +| Return Revert (0.1M, 1Mib Of Non, Zero Data, Return) | 6.03 | 6.58 | +| Return Revert (0.1M, 1Mib Of Non, Zero Data, Revert) | 8.08 | 6.56 | +| Return Revert (0.1M, 1Mib Of Zero Data, Return) | 5.49 | 6.58 | +| Return Revert (0.1M, 1Mib Of Zero Data, Revert) | 5.92 | 7.09 | +| Return Revert (0.1M, Empty, Return) | 9.50 | 7.05 | +| Return Revert (0.1M, Empty, Revert) | 10.17 | 6.59 | +| Returndatacopy (0.1M, Fixed Dst False, 0Bytes) | 9.32 | 7.61 | +| Returndatacopy (0.1M, Fixed Dst False, 100Bytes) | 8.54 | 6.06 | +| Returndatacopy (0.1M, Fixed Dst False, 10Kib) | 8.82 | 6.05 | +| Returndatacopy (0.1M, Fixed Dst False, 1Mib) | 6.09 | 6.06 | +| Returndatacopy (0.1M, Fixed Dst True, 0Bytes) | 7.52 | 6.06 | +| Returndatacopy (0.1M, Fixed Dst True, 100Bytes) | 6.41 | 6.58 | +| Returndatacopy (0.1M, Fixed Dst True, 10Kib) | 6.11 | 6.58 | +| Returndatacopy (0.1M, Fixed Dst True, 1Mib) | 6.20 | 6.56 | +| Returndatasize Nonzero (0.1M, Returned Size 0, Return Data Style Returndatastyle.Identity) | 7.28 | 7.07 | +| Returndatasize Nonzero (0.1M, Returned Size 0, Return Data Style Returndatastyle.Return) | 7.69 | 6.05 | +| Returndatasize Nonzero (0.1M, Returned Size 0, Return Data Style Returndatastyle.Revert) | 7.09 | 7.07 | +| Returndatasize Nonzero (0.1M, Returned Size 1, Return Data Style Returndatastyle.Identity) | 7.17 | 6.56 | +| Returndatasize Nonzero (0.1M, Returned Size 1, Return Data Style Returndatastyle.Return) | 6.97 | 6.56 | +| Returndatasize Nonzero (0.1M, Returned Size 1, Return Data Style Returndatastyle.Revert) | 7.01 | 6.56 | +| Returndatasize Zero (0.1M) | 6.57 | 6.58 | +| Selfbalance (0.1M) | 17.35 | 8.59 | +| Selfdestruct Created (0.1M, No Value) | 5.21 | 6.05 | +| Selfdestruct Created (0.1M, With Value) | 5.54 | 6.59 | +| Selfdestruct Existing (0.1M, No Value) | 5.77 | 5.57 | +| Selfdestruct Existing (0.1M, With Value) | 5.59 | 6.07 | +| Selfdestruct Initcode (0.1M, No Value) | 5.38 | 6.07 | +| Selfdestruct Initcode (0.1M, With Value) | 5.03 | 6.06 | +| Shifts (0.1M, Shift Right Sar) | 9.22 | 7.07 | +| Shifts (0.1M, Shift Right Shr) | 9.61 | 7.57 | +| Storage Access Cold (0.1M, Absent Slots False, Ssload) | 5.93 | 6.06 | +| Storage Access Cold (0.1M, Absent Slots False, Sstore New Value) | 5.02 | 6.06 | +| Storage Access Cold (0.1M, Absent Slots False, Sstore New Value, Out Of Gas) | 5.51 | 6.56 | +| Storage Access Cold (0.1M, Absent Slots False, Sstore New Value, Revert) | 6.26 | 6.06 | +| Storage Access Cold (0.1M, Absent Slots False, Sstore Same Value) | 7.20 | 6.08 | +| Storage Access Cold (0.1M, Absent Slots False, Sstore Same Value, Out Of Gas) | 6.49 | 6.05 | +| Storage Access Cold (0.1M, Absent Slots False, Sstore Same Value, Revert) | 6.67 | 6.56 | +| Storage Access Cold (0.1M, Absent Slots True, Ssload) | 5.18 | 5.55 | +| Storage Access Cold (0.1M, Absent Slots True, Sstore New Value) | 5.80 | 6.05 | +| Storage Access Cold (0.1M, Absent Slots True, Sstore New Value, Out Of Gas) | 5.00 | 6.10 | +| Storage Access Cold (0.1M, Absent Slots True, Sstore New Value, Revert) | 5.61 | 6.05 | +| Storage Access Cold (0.1M, Absent Slots True, Sstore Same Value) | 5.53 | 6.05 | +| Storage Access Cold (0.1M, Absent Slots True, Sstore Same Value, Out Of Gas) | 5.48 | 6.59 | +| Storage Access Cold (0.1M, Absent Slots True, Sstore Same Value, Revert) | 5.17 | 6.05 | +| Storage Access Warm (0.1M, Sload) | 5.94 | 6.06 | +| Storage Access Warm (0.1M, Sstore New Value) | 9.76 | 6.10 | +| Storage Access Warm (0.1M, Sstore Same Value) | 7.63 | 6.07 | +| Swap (0.1M, Swap1) | 10.26 | 7.06 | +| Swap (0.1M, Swap10) | 9.98 | 8.08 | +| Swap (0.1M, Swap11) | 9.12 | 7.07 | +| Swap (0.1M, Swap12) | 10.17 | 8.08 | +| Swap (0.1M, Swap13) | 11.34 | 7.58 | +| Swap (0.1M, Swap14) | 10.00 | 7.08 | +| Swap (0.1M, Swap15) | 10.84 | 7.06 | +| Swap (0.1M, Swap16) | 9.66 | 7.06 | +| Swap (0.1M, Swap2) | 8.44 | 7.57 | +| Swap (0.1M, Swap3) | 10.72 | 7.07 | +| Swap (0.1M, Swap4) | 10.20 | 7.58 | +| Swap (0.1M, Swap5) | 9.29 | 7.07 | +| Swap (0.1M, Swap6) | 11.14 | 7.58 | +| Swap (0.1M, Swap7) | 10.18 | 7.57 | +| Swap (0.1M, Swap8) | 9.19 | 7.07 | +| Swap (0.1M, Swap9) | 9.67 | 7.07 | +| Tload (0.1M, Val Mut False, Key Mut False) | 7.42 | 6.05 | +| Tload (0.1M, Val Mut False, Key Mut True) | 6.55 | 5.55 | +| Tload (0.1M, Val Mut True, Key Mut False) | 6.00 | 6.05 | +| Tload (0.1M, Val Mut True, Key Mut True) | 6.78 | 6.05 | +| Tstore (0.1M, Dense Val Mut False, Key Mut False) | 7.46 | 6.57 | +| Tstore (0.1M, Dense Val Mut False, Key Mut True) | 7.83 | 6.56 | +| Tstore (0.1M, Dense Val Mut True, Key Mut False) | 9.40 | 7.10 | +| Tstore (0.1M, Dense Val Mut True, Key Mut True) | 10.06 | 6.58 | +| Unop (0.1M, Iszero) | 8.62 | 7.55 | +| Unop (0.1M, Not) | 7.86 | 7.09 | +| Zero Param (0.1M, Address) | 9.58 | 7.07 | +| Zero Param (0.1M, Basefee) | 10.11 | 6.07 | +| Zero Param (0.1M, Blobbasefee) | 9.87 | 7.07 | +| Zero Param (0.1M, Caller) | 11.26 | 7.07 | +| Zero Param (0.1M, Chainid) | 10.18 | 6.55 | +| Zero Param (0.1M, Codesize) | 9.46 | 6.08 | +| Zero Param (0.1M, Coinbase) | 9.37 | 7.06 | +| Zero Param (0.1M, Gas) | 8.10 | 6.07 | +| Zero Param (0.1M, Gaslimit) | 8.28 | 7.05 | +| Zero Param (0.1M, Gasprice) | 8.61 | 7.58 | +| Zero Param (0.1M, Number) | 9.14 | 6.55 | +| Zero Param (0.1M, Origin) | 12.32 | 7.58 | +| Zero Param (0.1M, Prevrandao) | 12.27 | 7.09 | +| Zero Param (0.1M, Timestamp) | 7.67 | 6.06 | \ No newline at end of file diff --git a/www/docs/pages/benchmark-results/gas-categorized/0.1m/risc0-0.1M-4.md b/www/docs/pages/benchmark-results/gas-categorized/0.1m/risc0-0.1M-4.md new file mode 100644 index 00000000..2b9166c8 --- /dev/null +++ b/www/docs/pages/benchmark-results/gas-categorized/0.1m/risc0-0.1M-4.md @@ -0,0 +1,533 @@ +# zkEVM Benchmark Results + +Generated on: 2026-01-01 15:22:14 + +## Folder: zkevm-metrics-risc0-0.1M-4 + +**zkVM:** risc0-v3.0.3 (4 GPUs) + +**Hardware Configuration:** CPU: AMD EPYC 7B13 64-Core Processor | RAM: 371 GiB | GPU: NVIDIA GeForce RTX 4090, NVIDIA GeForce RTX 4090, NVIDIA GeForce RTX 4090, NVIDIA GeForce RTX 4090 + +## Proving Metrics + +| Benchmark | Gas Used | Proof Size (bytes) | Proving Time (ms) | Proving Time (s) | Peak Memory (MB) | Avg Memory (MB) | Initial Memory (MB) | +|---|---|---|---|---|---|---|---| +| Block Full Access List And Data (0.1M) | 99,990 | 223,239 | 5,445 | 5.45 | 14,114,800 | 14,114,800 | 14,114,152 | +| Block Full Data (0.1M, Non Zero Byte) | 100,000 | 223,239 | 4,977 | 4.98 | 13,482,232 | 13,471,150 | 13,446,560 | +| Block Full Data (0.1M, Zero Byte) | 100,000 | 223,239 | 5,608 | 5.61 | 3,806,792 | 3,801,838.7 | 3,788,488 | +| Block Full Of Ether Transfers (0.1M, A To A) | 84,000 | 223,239 | 6,247 | 6.25 | 13,925,208 | 13,916,464 | 13,925,208 | +| Block Full Of Ether Transfers (0.1M, A To B) | 84,000 | 223,239 | 6,622 | 6.62 | 4,947,520 | 4,944,562 | 4,939,276 | +| Block Full Of Ether Transfers (0.1M, A To Diff Acc) | 84,000 | 223,239 | 6,041 | 6.04 | 12,056,308 | 12,040,402 | 12,035,484 | +| Block Full Of Ether Transfers (0.1M, Diff Acc To B) | 84,000 | 223,239 | 6,924 | 6.92 | 9,528,676 | 9,528,676 | 9,514,484 | +| Block Full Of Ether Transfers (0.1M, Diff Acc To Diff Acc) | 84,000 | 223,239 | 6,469 | 6.47 | 12,495,224 | 12,484,724 | 12,467,120 | +| Bytecode Single Opcode (0.1M, Callcode) | 100,000 | 223,239 | 20,856 | 20.86 | 9,905,632 | 9,874,940.3 | 9,831,128 | +| Bytecode Single Opcode (0.1M, Call) | 100,000 | 223,239 | 18,841 | 18.84 | 9,013,896 | 9,013,896 | 9,008,240 | +| Bytecode Single Opcode (0.1M, Delegatecall) | 100,000 | 223,239 | 18,676 | 18.68 | 13,237,056 | 13,218,890.7 | 13,201,596 | +| Bytecode Single Opcode (0.1M, Extcodecopy) | 100,000 | 223,239 | 17,966 | 17.97 | 6,964,096 | 6,946,371.5 | 6,926,524 | +| Bytecode Single Opcode (0.1M, Extcodehash) | 100,000 | 223,239 | 17,644 | 17.64 | 8,442,380 | 8,399,860.4 | 8,361,024 | +| Bytecode Single Opcode (0.1M, Extcodesize) | 100,000 | 223,239 | 19,835 | 19.84 | 9,458,800 | 9,438,476.8 | 9,417,180 | +| Bytecode Single Opcode (0.1M, Staticcall) | 100,000 | 223,239 | 19,202 | 19.20 | 7,678,640 | 7,665,876 | 7,619,624 | +| Create (0.1M, 0Bytes, Create2) | 100,000 | 223,239 | 5,847 | 5.85 | 5,995,608 | 5,987,536 | 5,981,896 | +| Create (0.1M, 0Bytes, Create) | 100,000 | 223,239 | 5,637 | 5.64 | 11,000,092 | 10,992,198 | 10,985,332 | +| Create (0.1M, 0Bytes, Create2) | 100,000 | 223,239 | 5,574 | 5.57 | 5,261,816 | 5,254,544 | 5,261,816 | +| Create (0.1M, 0Bytes, Create) | 100,000 | 223,239 | 5,906 | 5.91 | 10,579,500 | 10,569,762 | 10,551,472 | +| Create (0.1M, 0.25X Max Code, Zero Data, Create2) | 100,000 | 223,239 | 6,182 | 6.18 | 7,566,356 | 7,556,108 | 7,566,356 | +| Create (0.1M, 0.25X Max Code, Zero Data, Create) | 100,000 | 223,239 | 7,116 | 7.12 | 5,412,332 | 5,403,817.6 | 5,392,392 | +| Create (0.1M, 0.25X Max Code, Create2) | 100,000 | 223,239 | 6,611 | 6.61 | 13,773,668 | 13,769,595.2 | 13,752,836 | +| Create (0.1M, 0.25X Max Code, Create) | 100,000 | 223,239 | 6,780 | 6.78 | 6,047,292 | 6,041,722 | 6,047,292 | +| Create (0.1M, 0.50X Max Code Size With Non, Zero Data, Create2) | 100,000 | 223,239 | 7,241 | 7.24 | 9,133,760 | 9,133,760 | 9,087,168 | +| Create (0.1M, 0.50X Max Code Size With Non, Zero Data, Create) | 100,000 | 223,239 | 6,642 | 6.64 | 2,418,356 | 2,411,836 | 2,418,356 | +| Create (0.1M, 0.50X Max Code Size With Zero Data, Create2) | 100,000 | 223,239 | 5,587 | 5.59 | 7,821,352 | 7,821,352 | 7,820,960 | +| Create (0.1M, 0.50X Max Code Size With Zero Data, Create) | 100,000 | 223,239 | 6,203 | 6.20 | 11,486,708 | 11,479,568 | 11,486,708 | +| Create (0.1M, 0.75X Max Code Size With Non, Zero Data, Create2) | 100,000 | 223,239 | 6,629 | 6.63 | 1,345,132 | 1,340,072.8 | 1,329,132 | +| Create (0.1M, 0.75X Max Code Size With Non, Zero Data, Create) | 100,000 | 223,239 | 6,467 | 6.47 | 11,031,888 | 11,027,337 | 11,028,628 | +| Create (0.1M, 0.75X Max Code Size With Zero Data, Create2) | 100,000 | 223,239 | 7,546 | 7.55 | 10,336,828 | 10,327,131.2 | 10,336,828 | +| Create (0.1M, 0.75X Max Code Size With Zero Data, Create) | 100,000 | 223,239 | 5,921 | 5.92 | 12,865,652 | 12,862,490 | 12,865,652 | +| Create (0.1M, Max Code, Zero Data, Create2) | 100,000 | 223,239 | 7,557 | 7.56 | 10,984,428 | 10,971,643 | 10,951,852 | +| Create (0.1M, Max Code, Zero Data, Create) | 100,000 | 223,239 | 6,875 | 6.88 | 7,681,604 | 7,676,187.2 | 7,662,948 | +| Create (0.1M, Max Code, Create2) | 100,000 | 223,239 | 6,126 | 6.13 | 10,621,528 | 10,610,480 | 10,604,444 | +| Create (0.1M, Max Code, Create) | 100,000 | 223,239 | 6,849 | 6.85 | 8,372,664 | 8,366,759.2 | 8,365,520 | +| Creates Collisions (0.1M, Create2) | 100,000 | 223,239 | 5,744 | 5.74 | 5,792,620 | 5,787,538.7 | 5,772,412 | +| Creates Collisions (0.1M, Create) | 100,000 | 223,239 | 6,287 | 6.29 | 11,601,500 | 11,590,477.6 | 11,573,256 | +| Initcode Jumpdest Analysis (0.1M, 00) | 100,000 | 223,239 | 6,436 | 6.44 | 13,602,852 | 13,597,391.3 | 13,593,532 | +| Initcode Jumpdest Analysis (0.1M, 5B) | 100,000 | 223,239 | 6,690 | 6.69 | 7,312,648 | 7,301,004 | 7,295,908 | +| Initcode Jumpdest Analysis (0.1M, 605B5B) | 100,000 | 223,239 | 6,591 | 6.59 | 11,694,592 | 11,683,828.8 | 11,658,356 | +| Initcode Jumpdest Analysis (0.1M, 605B) | 100,000 | 223,239 | 6,277 | 6.28 | 4,243,680 | 4,239,098 | 4,232,036 | +| Initcode Jumpdest Analysis (0.1M, 615B5B5B) | 100,000 | 223,239 | 6,028 | 6.03 | 11,608,472 | 11,590,520 | 11,571,292 | +| Initcode Jumpdest Analysis (0.1M, 615B5B) | 100,000 | 223,239 | 6,475 | 6.47 | 7,622,768 | 7,611,354 | 7,588,232 | +| Amortized Bn128 Pairings (0.1M) | 100,000 | 223,239 | 5,712 | 5.71 | 5,148,648 | 5,129,619.3 | 5,104,036 | +| Empty Block (0.1M) | 0 | 223,239 | 5,091 | 5.09 | 8,168,256 | 8,166,461 | 8,162,660 | +| Binop Simple (0.1M, Add) | 100,000 | 223,239 | 7,740 | 7.74 | 3,951,248 | 3,940,693.6 | 3,932,916 | +| Binop Simple (0.1M, And) | 100,000 | 223,239 | 6,717 | 6.72 | 5,752,232 | 5,752,232 | 5,732,380 | +| Binop Simple (0.1M, Byte) | 100,000 | 223,239 | 6,874 | 6.87 | 3,412,948 | 3,403,238 | 3,397,024 | +| Binop Simple (0.1M, Div, 0) | 100,000 | 223,239 | 14,775 | 14.78 | 10,853,640 | 10,841,342.9 | 10,843,152 | +| Binop Simple (0.1M, Div, 1) | 100,000 | 223,239 | 13,752 | 13.75 | 5,708,068 | 5,684,364 | 5,666,064 | +| Binop Simple (0.1M, Eq) | 100,000 | 223,239 | 13,000 | 13 | 9,501,132 | 9,486,146 | 9,462,384 | +| Binop Simple (0.1M, Exp) | 100,000 | 223,239 | 14,063 | 14.06 | 10,059,476 | 10,031,319.4 | 10,004,808 | +| Binop Simple (0.1M, Gt) | 100,000 | 223,239 | 6,959 | 6.96 | 12,335,068 | 12,335,068 | 12,302,576 | +| Binop Simple (0.1M, Lt) | 100,000 | 223,239 | 7,121 | 7.12 | 6,726,792 | 6,715,790 | 6,707,072 | +| Binop Simple (0.1M, Mod) | 100,000 | 223,239 | 11,503 | 11.50 | 10,377,716 | 10,369,474 | 10,360,224 | +| Binop Simple (0.1M, Mul) | 100,000 | 223,239 | 10,921 | 10.92 | 11,945,124 | 11,934,456 | 11,908,028 | +| Binop Simple (0.1M, Or) | 100,000 | 223,239 | 7,546 | 7.55 | 2,943,520 | 2,939,126.4 | 2,932,168 | +| Binop Simple (0.1M, Sar) | 100,000 | 223,239 | 9,578 | 9.58 | 4,637,384 | 4,629,444.8 | 4,616,456 | +| Binop Simple (0.1M, Sdiv, 0) | 100,000 | 223,239 | 15,369 | 15.37 | 12,158,032 | 12,150,722 | 12,143,488 | +| Binop Simple (0.1M, Sdiv, 1) | 100,000 | 223,239 | 15,067 | 15.07 | 14,022,396 | 13,990,218.4 | 13,969,676 | +| Binop Simple (0.1M, Sgt) | 100,000 | 223,239 | 10,673 | 10.67 | 6,432,420 | 6,413,611 | 6,392,028 | +| Binop Simple (0.1M, Shl) | 100,000 | 223,239 | 9,414 | 9.41 | 9,912,752 | 9,896,573.1 | 9,890,088 | +| Binop Simple (0.1M, Shr) | 100,000 | 223,239 | 10,241 | 10.24 | 8,368,108 | 8,353,528 | 8,334,268 | +| Binop Simple (0.1M, Signextend) | 100,000 | 223,239 | 8,533 | 8.53 | 8,850,096 | 8,842,960 | 8,850,096 | +| Binop Simple (0.1M, Slt) | 100,000 | 223,239 | 11,239 | 11.24 | 10,308,616 | 10,308,616 | 10,303,696 | +| Binop Simple (0.1M, Smod) | 100,000 | 223,239 | 11,004 | 11.00 | 9,867,664 | 9,867,664 | 9,848,168 | +| Binop Simple (0.1M, Sub) | 100,000 | 223,239 | 10,151 | 10.15 | 9,574,680 | 9,566,220 | 9,560,620 | +| Binop Simple (0.1M, Xor) | 100,000 | 223,239 | 6,815 | 6.82 | 2,727,684 | 2,723,056 | 2,712,496 | +| Blobhash (0.1M, No Blobs) | 100,000 | 223,239 | 10,015 | 10.02 | 9,739,788 | 9,735,794 | 9,726,060 | +| Blobhash (0.1M, One Blob And Accessed) | 100,000 | 223,239 | 7,856 | 7.86 | 1,076,448 | 1,050,636.7 | 1,022,300 | +| Blobhash (0.1M, One Blob But Access Non, Existent Index) | 100,000 | 223,239 | 6,415 | 6.42 | 12,989,580 | 12,979,708.8 | 12,959,084 | +| Blobhash (0.1M, Six Blobs, Access Latest) | 100,000 | 223,239 | 9,165 | 9.16 | 10,004,644 | 9,990,012 | 9,952,040 | +| Calldataload (0.1M, Empty) | 100,000 | 223,239 | 8,993 | 8.99 | 5,853,704 | 5,838,052 | 5,810,880 | +| Calldataload (0.1M, One, Loop) | 100,000 | 223,239 | 11,883 | 11.88 | 3,935,164 | 3,920,649.7 | 3,907,460 | +| Calldataload (0.1M, Zero, Loop) | 100,000 | 223,239 | 12,298 | 12.30 | 12,857,684 | 12,857,516 | 12,815,660 | +| Calldatasize (0.1M, Calldata Length 0) | 100,000 | 223,239 | 8,913 | 8.91 | 3,836,776 | 3,817,670 | 3,810,896 | +| Calldatasize (0.1M, Calldata Length 1000) | 100,000 | 223,239 | 6,906 | 6.91 | 5,355,612 | 5,347,493.3 | 5,341,984 | +| Callvalue (0.1M, From Origin False, Non Zero Value False) | 100,000 | 223,239 | 7,637 | 7.64 | 977,724 | 970,852.6 | 967,624 | +| Callvalue (0.1M, From Origin False, Non Zero Value True) | 100,000 | 223,239 | 7,956 | 7.96 | 3,674,736 | 3,670,694 | 3,670,720 | +| Callvalue (0.1M, From Origin True, Non Zero Value False) | 100,000 | 223,239 | 7,607 | 7.61 | 3,675,048 | 3,673,818.7 | 3,674,160 | +| Callvalue (0.1M, From Origin True, Non Zero Value True) | 100,000 | 223,239 | 8,566 | 8.57 | 4,546,616 | 4,531,208 | 4,532,468 | +| Dup (0.1M, Dup10) | 100,000 | 223,239 | 7,578 | 7.58 | 7,578,884 | 7,578,260 | 7,572,744 | +| Dup (0.1M, Dup11) | 100,000 | 223,239 | 7,330 | 7.33 | 9,097,968 | 9,072,574.4 | 9,045,012 | +| Dup (0.1M, Dup12) | 100,000 | 223,239 | 8,754 | 8.75 | 12,892,936 | 12,870,784 | 12,892,936 | +| Dup (0.1M, Dup13) | 100,000 | 223,239 | 7,041 | 7.04 | 1,162,008 | 1,149,582.4 | 1,108,400 | +| Dup (0.1M, Dup14) | 100,000 | 223,239 | 6,785 | 6.79 | 663,540 | 653,798.4 | 649,528 | +| Dup (0.1M, Dup15) | 100,000 | 223,239 | 7,089 | 7.09 | 12,678,516 | 12,675,380 | 12,670,600 | +| Dup (0.1M, Dup16) | 100,000 | 223,239 | 7,760 | 7.76 | 406,468 | 369,063.5 | 309,792 | +| Dup (0.1M, Dup1) | 100,000 | 223,239 | 7,200 | 7.20 | 8,180,828 | 8,180,828 | 8,165,664 | +| Dup (0.1M, Dup2) | 100,000 | 223,239 | 6,514 | 6.51 | 2,386,964 | 2,378,692 | 2,373,736 | +| Dup (0.1M, Dup3) | 100,000 | 223,239 | 6,779 | 6.78 | 12,723,596 | 12,704,277.3 | 12,693,272 | +| Dup (0.1M, Dup4) | 100,000 | 223,239 | 9,057 | 9.06 | 13,970,288 | 13,953,754.7 | 13,927,976 | +| Dup (0.1M, Dup5) | 100,000 | 223,239 | 7,118 | 7.12 | 5,173,348 | 5,166,800 | 5,149,592 | +| Dup (0.1M, Dup6) | 100,000 | 223,239 | 7,096 | 7.10 | 465,840 | 441,426.7 | 405,340 | +| Dup (0.1M, Dup7) | 100,000 | 223,239 | 7,914 | 7.91 | 6,638,000 | 6,632,352 | 6,626,864 | +| Dup (0.1M, Dup8) | 100,000 | 223,239 | 7,034 | 7.03 | 3,777,300 | 3,770,044.8 | 3,755,636 | +| Dup (0.1M, Dup9) | 100,000 | 223,239 | 8,220 | 8.22 | 10,169,316 | 10,165,650 | 10,153,112 | +| Jumpdests (0.1M) | 100,000 | 223,239 | 11,373 | 11.37 | 9,364,828 | 9,347,243.2 | 9,348,848 | +| Jumpi Fallthrough (0.1M) | 100,000 | 223,239 | 7,752 | 7.75 | 12,531,192 | 12,508,997 | 12,493,464 | +| Jumpis (0.1M) | 100,000 | 223,239 | 5,803 | 5.80 | 2,407,512 | 2,402,266.7 | 2,407,512 | +| Jumps (0.1M) | 100,000 | 223,239 | 6,009 | 6.01 | 5,446,148 | 5,434,417.7 | 5,420,604 | +| Keccak (0.1M) | 100,000 | 223,239 | 12,372 | 12.37 | 12,533,092 | 12,516,574.2 | 12,505,104 | +| Memory Access (0.1M, Small Mem, Uninit Offset, Off 0, Mload) | 100,000 | 223,239 | 7,520 | 7.52 | 12,505,532 | 12,503,188 | 12,485,988 | +| Memory Access (0.1M, Small Mem, Uninit Offset, Off 0, Mstore8) | 100,000 | 223,239 | 7,032 | 7.03 | 2,676,864 | 2,665,147 | 2,656,460 | +| Memory Access (0.1M, Small Mem, Uninit Offset, Off 0, Mstore) | 100,000 | 223,239 | 9,118 | 9.12 | 6,444,364 | 6,431,611.2 | 6,412,620 | +| Memory Access (0.1M, Small Mem, Uninit Offset, Off 1, Mload) | 100,000 | 223,239 | 9,911 | 9.91 | 10,368,940 | 10,341,987.2 | 10,314,176 | +| Memory Access (0.1M, Small Mem, Uninit Offset, Off 1, Mstore8) | 100,000 | 223,239 | 7,911 | 7.91 | 13,507,148 | 13,507,148 | 13,475,888 | +| Memory Access (0.1M, Small Mem, Uninit Offset, Off 1, Mstore) | 100,000 | 223,239 | 8,515 | 8.52 | 13,628,512 | 13,613,744.8 | 13,593,480 | +| Memory Access (0.1M, Small Mem, Uninit Offset, Off 31, Mload) | 100,000 | 223,239 | 7,755 | 7.75 | 8,947,324 | 8,937,536 | 8,924,528 | +| Memory Access (0.1M, Small Mem, Uninit Offset, Off 31, Mstore8) | 100,000 | 223,239 | 6,798 | 6.80 | 8,974,976 | 8,964,782.7 | 8,957,808 | +| Memory Access (0.1M, Small Mem, Uninit Offset, Off 31, Mstore) | 100,000 | 223,239 | 8,179 | 8.18 | 4,918,708 | 4,911,608 | 4,906,164 | +| Memory Access (0.1M, Small Mem, Init Offset, Off 0, Mload) | 100,000 | 223,239 | 8,608 | 8.61 | 12,149,784 | 12,136,042 | 12,118,528 | +| Memory Access (0.1M, Small Mem, Init Offset, Off 0, Mstore8) | 100,000 | 223,239 | 8,138 | 8.14 | 13,632,348 | 13,628,553.3 | 13,631,664 | +| Memory Access (0.1M, Small Mem, Init Offset, Off 0, Mstore) | 100,000 | 223,239 | 9,088 | 9.09 | 3,383,524 | 3,379,770.3 | 3,367,180 | +| Memory Access (0.1M, Small Mem, Init Offset, Off 1, Mload) | 100,000 | 223,239 | 9,365 | 9.37 | 12,284,320 | 12,271,658.4 | 12,260,904 | +| Memory Access (0.1M, Small Mem, Init Offset, Off 1, Mstore8) | 100,000 | 223,239 | 8,124 | 8.12 | 8,485,404 | 8,482,878.4 | 8,478,920 | +| Memory Access (0.1M, Small Mem, Init Offset, Off 1, Mstore) | 100,000 | 223,239 | 7,464 | 7.46 | 4,620,408 | 4,616,464 | 4,603,984 | +| Memory Access (0.1M, Small Mem, Init Offset, Off 31, Mload) | 100,000 | 223,239 | 8,440 | 8.44 | 13,486,108 | 13,485,469.3 | 13,474,176 | +| Memory Access (0.1M, Small Mem, Init Offset, Off 31, Mstore8) | 100,000 | 223,239 | 8,281 | 8.28 | 7,199,772 | 7,179,947 | 7,199,772 | +| Memory Access (0.1M, Small Mem, Init Offset, Off 31, Mstore) | 100,000 | 223,239 | 8,102 | 8.10 | 6,983,400 | 6,968,057.6 | 6,952,808 | +| Memory Access (0.1M, Big Mem, Uninit Offset, Off 0, Mload) | 100,000 | 223,239 | 8,828 | 8.83 | 8,819,476 | 8,788,166.7 | 8,763,736 | +| Memory Access (0.1M, Big Mem, Uninit Offset, Off 0, Mstore8) | 100,000 | 223,239 | 7,008 | 7.01 | 12,896,740 | 12,877,796 | 12,859,352 | +| Memory Access (0.1M, Big Mem, Uninit Offset, Off 0, Mstore) | 100,000 | 223,239 | 9,570 | 9.57 | 7,783,484 | 7,771,252 | 7,756,856 | +| Memory Access (0.1M, Big Mem, Uninit Offset, Off 1, Mload) | 100,000 | 223,239 | 7,661 | 7.66 | 12,148,408 | 12,129,412 | 12,148,408 | +| Memory Access (0.1M, Big Mem, Uninit Offset, Off 1, Mstore8) | 100,000 | 223,239 | 7,944 | 7.94 | 5,965,060 | 5,965,060 | 5,929,312 | +| Memory Access (0.1M, Big Mem, Uninit Offset, Off 1, Mstore) | 100,000 | 223,239 | 7,851 | 7.85 | 6,447,520 | 6,440,032 | 6,424,448 | +| Memory Access (0.1M, Big Mem, Uninit Offset, Off 31, Mload) | 100,000 | 223,239 | 8,777 | 8.78 | 7,550,784 | 7,544,960 | 7,546,120 | +| Memory Access (0.1M, Big Mem, Uninit Offset, Off 31, Mstore8) | 100,000 | 223,239 | 6,914 | 6.91 | 3,863,084 | 3,849,965 | 3,842,444 | +| Memory Access (0.1M, Big Mem, Uninit Offset, Off 31, Mstore) | 100,000 | 223,239 | 9,035 | 9.04 | 13,586,976 | 13,584,281.3 | 13,555,220 | +| Memory Access (0.1M, Big Mem, Init Offset, Off 0, Mload) | 100,000 | 223,239 | 9,287 | 9.29 | 9,357,992 | 9,354,691 | 9,354,052 | +| Memory Access (0.1M, Big Mem, Init Offset, Off 0, Mstore8) | 100,000 | 223,239 | 7,677 | 7.68 | 11,174,040 | 11,147,569 | 11,134,168 | +| Memory Access (0.1M, Big Mem, Init Offset, Off 0, Mstore) | 100,000 | 223,239 | 8,870 | 8.87 | 7,990,888 | 7,986,560 | 7,981,636 | +| Memory Access (0.1M, Big Mem, Init Offset, Off 1, Mload) | 100,000 | 223,239 | 8,112 | 8.11 | 5,465,368 | 5,457,485.6 | 5,445,608 | +| Memory Access (0.1M, Big Mem, Init Offset, Off 1, Mstore8) | 100,000 | 223,239 | 6,639 | 6.64 | 6,866,288 | 6,855,631.3 | 6,833,092 | +| Memory Access (0.1M, Big Mem, Init Offset, Off 1, Mstore) | 100,000 | 223,239 | 8,337 | 8.34 | 13,021,792 | 12,997,880.7 | 12,974,224 | +| Memory Access (0.1M, Big Mem, Init Offset, Off 31, Mload) | 100,000 | 223,239 | 7,819 | 7.82 | 10,842,856 | 10,842,856 | 10,822,888 | +| Memory Access (0.1M, Big Mem, Init Offset, Off 31, Mstore8) | 100,000 | 223,239 | 8,620 | 8.62 | 3,376,356 | 3,375,680 | 3,373,796 | +| Memory Access (0.1M, Big Mem, Init Offset, Off 31, Mstore) | 100,000 | 223,239 | 7,687 | 7.69 | 1,476,864 | 1,475,214 | 1,463,152 | +| Mod (0.1M, Op Mod, Mod Bits 127) | 100,000 | 223,239 | 13,865 | 13.87 | 5,530,808 | 5,519,364 | 5,508,552 | +| Mod (0.1M, Op Mod, Mod Bits 191) | 100,000 | 223,239 | 14,535 | 14.54 | 12,508,156 | 12,485,931.2 | 12,434,712 | +| Mod (0.1M, Op Mod, Mod Bits 255) | 100,000 | 223,239 | 14,100 | 14.10 | 10,854,584 | 10,854,584 | 10,837,920 | +| Mod (0.1M, Op Mod, Mod Bits 63) | 100,000 | 223,239 | 12,230 | 12.23 | 14,164,332 | 14,131,028.8 | 14,103,668 | +| Mod (0.1M, Op Smod, Mod Bits 127) | 100,000 | 223,239 | 13,379 | 13.38 | 6,411,916 | 6,395,572.6 | 6,383,536 | +| Mod (0.1M, Op Smod, Mod Bits 191) | 100,000 | 223,239 | 15,510 | 15.51 | 6,063,832 | 6,032,083.6 | 5,993,844 | +| Mod (0.1M, Op Smod, Mod Bits 255) | 100,000 | 223,239 | 13,435 | 13.44 | 5,436,004 | 5,415,342.9 | 5,415,512 | +| Mod (0.1M, Op Smod, Mod Bits 63) | 100,000 | 223,239 | 13,915 | 13.91 | 6,475,604 | 6,459,644 | 6,434,528 | +| Modarith (0.1M, Op Addmod, Mod Bits 127) | 100,000 | 223,239 | 14,577 | 14.58 | 5,525,356 | 5,489,310.7 | 5,463,092 | +| Modarith (0.1M, Op Addmod, Mod Bits 191) | 100,000 | 223,239 | 15,070 | 15.07 | 9,161,632 | 9,161,632 | 9,131,356 | +| Modarith (0.1M, Op Addmod, Mod Bits 255) | 100,000 | 223,239 | 12,219 | 12.22 | 11,521,892 | 11,497,390.9 | 11,480,396 | +| Modarith (0.1M, Op Addmod, Mod Bits 63) | 100,000 | 223,239 | 12,916 | 12.92 | 10,434,260 | 10,420,055.6 | 10,384,784 | +| Modarith (0.1M, Op Mulmod, Mod Bits 127) | 100,000 | 223,239 | 15,327 | 15.33 | 8,917,236 | 8,877,168.4 | 8,844,292 | +| Modarith (0.1M, Op Mulmod, Mod Bits 191) | 100,000 | 223,239 | 18,750 | 18.75 | 11,122,220 | 11,122,220 | 11,095,348 | +| Modarith (0.1M, Op Mulmod, Mod Bits 255) | 100,000 | 223,239 | 18,372 | 18.37 | 12,707,024 | 12,685,857.3 | 12,707,024 | +| Modarith (0.1M, Op Mulmod, Mod Bits 63) | 100,000 | 223,239 | 14,235 | 14.23 | 4,027,340 | 4,007,612.7 | 3,950,488 | +| Modexp (0.1M, Mod 1045 Gas Base Heavy) | 100,000 | 223,239 | 86,002 | 86.00 | 774,736 | 739,889.6 | 641,000 | +| Modexp (0.1M, Mod 1360 Gas Balanced) | 100,000 | 223,239 | 31,046 | 31.05 | 8,685,120 | 8,639,989.3 | 8,562,800 | +| Modexp (0.1M, Mod 400 Gas Exp Heavy) | 100,000 | 223,239 | 39,516 | 39.52 | 10,920,240 | 10,883,416.8 | 10,833,084 | +| Modexp (0.1M, Mod 408 Gas Balanced) | 100,000 | 223,239 | 29,409 | 29.41 | 13,380,364 | 13,366,638.7 | 13,333,148 | +| Modexp (0.1M, Mod 408 Gas Base Heavy) | 100,000 | 223,239 | 82,972 | 82.97 | 6,414,360 | 6,324,635.8 | 6,213,244 | +| Modexp (0.1M, Mod 600 As Balanced) | 100,000 | 223,239 | 34,995 | 34.99 | 10,134,804 | 10,097,357.1 | 10,049,408 | +| Modexp (0.1M, Mod 600 Gas Exp Heavy) | 100,000 | 223,239 | 39,810 | 39.81 | 3,657,736 | 3,604,164 | 3,548,228 | +| Modexp (0.1M, Mod 616 Gas Base Heavy) | 100,000 | 223,239 | 88,063 | 88.06 | 6,652,936 | 6,604,320.5 | 6,473,468 | +| Modexp (0.1M, Mod 677 Gas Base Heavy) | 100,000 | 223,239 | 32,327 | 32.33 | 13,450,264 | 13,415,438.2 | 13,385,412 | +| Modexp (0.1M, Mod 765 Gas Exp Heavy) | 100,000 | 223,239 | 32,719 | 32.72 | 4,171,740 | 4,121,368 | 4,065,568 | +| Modexp (0.1M, Mod 767 Gas Balanced) | 100,000 | 223,239 | 28,139 | 28.14 | 3,047,608 | 2,990,464.3 | 2,941,784 | +| Modexp (0.1M, Mod 800 Gas Base Heavy) | 100,000 | 223,239 | 86,537 | 86.54 | 453,488 | 394,708.8 | 83,228 | +| Modexp (0.1M, Mod 800 Gas Exp Heavy) | 100,000 | 223,239 | 40,567 | 40.57 | 978,812 | 933,480.1 | 867,408 | +| Modexp (0.1M, Mod 852 Gas Exp Heavy) | 100,000 | 223,239 | 41,205 | 41.20 | 12,255,112 | 12,231,083.4 | 12,217,172 | +| Modexp (0.1M, Mod 867 Gas Base Heavy) | 100,000 | 223,239 | 84,984 | 84.98 | 2,426,932 | 2,364,434.2 | 2,177,676 | +| Modexp (0.1M, Mod 996 Gas Balanced) | 100,000 | 223,239 | 30,112 | 30.11 | 13,850,300 | 13,834,028 | 13,807,964 | +| Modexp (0.1M, Mod Even 128B Exp 1024) | 100,000 | 223,239 | 7,538 | 7.54 | 10,167,488 | 10,150,665 | 10,119,016 | +| Modexp (0.1M, Mod Even 16B Exp 320) | 100,000 | 223,239 | 39,821 | 39.82 | 10,743,684 | 10,695,243.2 | 10,623,276 | +| Modexp (0.1M, Mod Even 24B Exp 168) | 100,000 | 223,239 | 33,749 | 33.75 | 13,478,016 | 13,460,718.5 | 13,442,648 | +| Modexp (0.1M, Mod Even 256B Exp 1024) | 100,000 | 223,239 | 6,184 | 6.18 | 11,697,512 | 11,696,008 | 11,697,512 | +| Modexp (0.1M, Mod Even 32B Exp 256) | 100,000 | 223,239 | 31,118 | 31.12 | 7,510,460 | 7,463,420 | 7,367,660 | +| Modexp (0.1M, Mod Even 32B Exp 40) | 100,000 | 223,239 | 28,548 | 28.55 | 11,797,688 | 11,762,655.3 | 11,718,748 | +| Modexp (0.1M, Mod Even 32B Exp 96) | 100,000 | 223,239 | 30,532 | 30.53 | 13,326,140 | 13,308,608 | 13,326,140 | +| Modexp (0.1M, Mod Even 512B Exp 1024) | 100,000 | 223,239 | 6,159 | 6.16 | 9,028,860 | 9,028,860 | 9,025,676 | +| Modexp (0.1M, Mod Even 64B Exp 512) | 100,000 | 223,239 | 26,611 | 26.61 | 12,041,496 | 12,009,880.4 | 11,981,620 | +| Modexp (0.1M, Mod Even 8B Exp 896) | 100,000 | 223,239 | 59,521 | 59.52 | 3,552,564 | 3,486,214.3 | 3,407,332 | +| Modexp (0.1M, Mod Exp 208 Gas Balanced) | 100,000 | 223,239 | 31,351 | 31.35 | 9,849,612 | 9,814,500.3 | 9,773,576 | +| Modexp (0.1M, Mod Exp 215 Gas Exp Heavy) | 100,000 | 223,239 | 53,432 | 53.43 | 3,304,644 | 3,289,555 | 3,281,080 | +| Modexp (0.1M, Mod Exp 298 Gas Exp Heavy) | 100,000 | 223,239 | 58,803 | 58.80 | 2,122,696 | 1,958,492.3 | 1,826,156 | +| Modexp (0.1M, Mod Min As Balanced) | 100,000 | 223,239 | 28,638 | 28.64 | 6,834,740 | 6,790,064.3 | 6,736,012 | +| Modexp (0.1M, Mod Min As Base Heavy) | 100,000 | 223,239 | 72,372 | 72.37 | 5,328,856 | 5,254,077.9 | 5,156,368 | +| Modexp (0.1M, Mod Min As Exp Heavy) | 100,000 | 223,239 | 53,580 | 53.58 | 5,698,156 | 5,601,132 | 5,528,160 | +| Modexp (0.1M, Mod Odd 128B Exp 1024) | 100,000 | 223,239 | 5,702 | 5.70 | 1,839,352 | 1,825,948 | 1,839,352 | +| Modexp (0.1M, Mod Odd 256B Exp 1024) | 100,000 | 223,239 | 6,548 | 6.55 | 9,578,404 | 9,575,154 | 9,565,820 | +| Modexp (0.1M, Mod Odd 32B Exp 256) | 100,000 | 223,239 | 32,394 | 32.39 | 904,804 | 867,703.1 | 774,480 | +| Modexp (0.1M, Mod Odd 32B Exp 96) | 100,000 | 223,239 | 31,715 | 31.71 | 11,934,676 | 11,895,220 | 11,811,372 | +| Modexp (0.1M, Mod Odd 32B Exp Cover Windows) | 100,000 | 223,239 | 25,626 | 25.63 | 7,233,692 | 7,159,922.3 | 7,133,304 | +| Modexp (0.1M, Mod Odd 512B Exp 1024) | 100,000 | 223,239 | 5,701 | 5.70 | 12,961,536 | 12,958,498.7 | 12,940,584 | +| Modexp (0.1M, Mod Odd 64B Exp 512) | 100,000 | 223,239 | 27,076 | 27.08 | 1,002,004 | 973,267.5 | 936,344 | +| Modexp (0.1M, Mod Pawel 2) | 100,000 | 223,239 | 37,636 | 37.64 | 7,087,548 | 7,039,244.5 | 6,994,404 | +| Modexp (0.1M, Mod Pawel 3) | 100,000 | 223,239 | 33,361 | 33.36 | 10,552,048 | 10,513,056 | 10,441,960 | +| Modexp (0.1M, Mod Pawel 4) | 100,000 | 223,239 | 30,894 | 30.89 | 12,401,460 | 12,373,255.3 | 12,332,032 | +| Modexp (0.1M, Mod Vul Common 1152N1) | 100,000 | 223,239 | 22,961 | 22.96 | 5,403,200 | 5,375,619.2 | 5,308,352 | +| Modexp (0.1M, Mod Vul Common 1349N1) | 100,000 | 223,239 | 31,832 | 31.83 | 9,731,972 | 9,712,357.5 | 9,636,720 | +| Modexp (0.1M, Mod Vul Common 1360N1) | 100,000 | 223,239 | 29,638 | 29.64 | 12,113,996 | 12,066,690.2 | 12,040,884 | +| Modexp (0.1M, Mod Vul Common 1360N2) | 100,000 | 223,239 | 28,719 | 28.72 | 8,132,404 | 8,106,378.9 | 8,066,988 | +| Modexp (0.1M, Mod Vul Common 200N1) | 100,000 | 223,239 | 18,940 | 18.94 | 4,537,564 | 4,494,472.7 | 4,454,632 | +| Modexp (0.1M, Mod Vul Common 200N2) | 100,000 | 223,239 | 22,748 | 22.75 | 2,970,328 | 2,953,533.5 | 2,942,084 | +| Modexp (0.1M, Mod Vul Common 200N3) | 100,000 | 223,239 | 26,501 | 26.50 | 10,300,136 | 10,249,240.6 | 10,189,520 | +| Modexp (0.1M, Mod Vul Example 1) | 100,000 | 223,239 | 32,268 | 32.27 | 11,577,288 | 11,529,936.8 | 11,492,256 | +| Modexp (0.1M, Mod Vul Example 2) | 100,000 | 223,239 | 36,993 | 36.99 | 9,374,544 | 9,339,416.4 | 9,303,676 | +| Modexp (0.1M, Mod Vul Guido 1 Even) | 100,000 | 223,239 | 24,214 | 24.21 | 3,350,604 | 3,325,484.4 | 3,301,660 | +| Modexp (0.1M, Mod Vul Guido 2 Even) | 100,000 | 223,239 | 33,333 | 33.33 | 7,583,012 | 7,583,012 | 7,529,196 | +| Modexp (0.1M, Mod Vul Guido 3 Even) | 100,000 | 223,239 | 48,659 | 48.66 | 12,669,420 | 12,588,478.9 | 12,553,112 | +| Modexp (0.1M, Mod Vul Marius 1 Even) | 100,000 | 223,239 | 33,305 | 33.30 | 13,952,608 | 13,936,666.4 | 13,864,196 | +| Modexp (0.1M, Mod Vul Nagydani 1 Pow 0X10001) | 100,000 | 223,239 | 27,505 | 27.50 | 9,243,024 | 9,197,380 | 9,149,560 | +| Modexp (0.1M, Mod Vul Nagydani 1 Qube) | 100,000 | 223,239 | 22,044 | 22.04 | 12,712,540 | 12,701,143.1 | 12,674,608 | +| Modexp (0.1M, Mod Vul Nagydani 1 Square) | 100,000 | 223,239 | 20,563 | 20.56 | 624,300 | 590,153.9 | 536,344 | +| Modexp (0.1M, Mod Vul Nagydani 2 Pow 0X10001) | 100,000 | 223,239 | 25,735 | 25.73 | 4,369,820 | 4,319,324.6 | 4,270,568 | +| Modexp (0.1M, Mod Vul Nagydani 2 Qube) | 100,000 | 223,239 | 45,282 | 45.28 | 10,831,220 | 10,794,597 | 10,722,560 | +| Modexp (0.1M, Mod Vul Nagydani 2 Square) | 100,000 | 223,239 | 42,727 | 42.73 | 11,484,532 | 11,399,199.6 | 11,233,148 | +| Modexp (0.1M, Mod Vul Nagydani 3 Pow 0X10001) | 100,000 | 223,239 | 23,675 | 23.68 | 12,326,856 | 12,298,153.8 | 12,271,412 | +| Modexp (0.1M, Mod Vul Nagydani 3 Qube) | 100,000 | 223,239 | 93,423 | 93.42 | 13,178,452 | 13,070,321.1 | 13,032,696 | +| Modexp (0.1M, Mod Vul Nagydani 3 Square) | 100,000 | 223,239 | 86,457 | 86.46 | 8,348,256 | 8,302,829.2 | 8,172,036 | +| Modexp (0.1M, Mod Vul Nagydani 4 Pow 0X10001) | 100,000 | 223,239 | 18,617 | 18.62 | 6,170,368 | 6,148,534.9 | 6,124,616 | +| Modexp (0.1M, Mod Vul Nagydani 4 Qube) | 100,000 | 223,239 | 92,289 | 92.29 | 2,950,572 | 2,859,598.5 | 2,728,700 | +| Modexp (0.1M, Mod Vul Nagydani 4 Square) | 100,000 | 223,239 | 85,952 | 85.95 | 4,945,164 | 4,789,456 | 4,667,944 | +| Modexp (0.1M, Mod Vul Pawel 1 Exp Heavy) | 100,000 | 223,239 | 56,464 | 56.46 | 7,993,800 | 7,917,402.5 | 7,816,924 | +| Modexp (0.1M, Mod Vul Pawel 2 Exp Heavy) | 100,000 | 223,239 | 37,491 | 37.49 | 12,265,036 | 12,265,036 | 12,154,276 | +| Modexp (0.1M, Mod Vul Pawel 3 Exp Heavy) | 100,000 | 223,239 | 31,564 | 31.56 | 5,918,556 | 5,911,261 | 5,853,000 | +| Modexp (0.1M, Mod Vul Pawel 4 Exp Heavy) | 100,000 | 223,239 | 29,171 | 29.17 | 2,655,680 | 2,557,316 | 2,522,604 | +| Msize (0.1M, Mem Size 0) | 100,000 | 223,239 | 10,488 | 10.49 | 2,498,300 | 2,495,221.1 | 2,493,500 | +| Msize (0.1M, Mem Size 1000000) | 100,000 | 223,239 | 8,872 | 8.87 | 13,213,128 | 13,206,990.7 | 13,202,388 | +| Msize (0.1M, Mem Size 100000) | 100,000 | 223,239 | 8,736 | 8.74 | 2,424,876 | 2,419,670 | 2,407,844 | +| Msize (0.1M, Mem Size 1000) | 100,000 | 223,239 | 8,059 | 8.06 | 8,022,760 | 8,016,344.8 | 7,988,240 | +| Msize (0.1M, Mem Size 1) | 100,000 | 223,239 | 8,061 | 8.06 | 8,961,136 | 8,945,372.8 | 8,961,136 | +| Precompile Fixed Cost (0.1M, Blake2F) | 100,000 | 223,239 | 26,893 | 26.89 | 14,106,420 | 14,080,496.5 | 14,028,484 | +| Precompile Fixed Cost (0.1M, Bls12 Fp To G1) | 100,000 | 223,239 | 10,252 | 10.25 | 5,927,768 | 5,924,669 | 5,916,556 | +| Precompile Fixed Cost (0.1M, Bls12 Fp To G2) | 100,000 | 223,239 | 9,018 | 9.02 | 4,984,960 | 4,970,478 | 4,942,768 | +| Precompile Fixed Cost (0.1M, Bls12 G1Add) | 100,000 | 223,239 | 11,447 | 11.45 | 12,961,392 | 12,937,523 | 12,897,508 | +| Precompile Fixed Cost (0.1M, Bls12 G1Msm) | 100,000 | 223,239 | 7,054 | 7.05 | 9,419,440 | 9,417,028 | 9,418,148 | +| Precompile Fixed Cost (0.1M, Bls12 G2Add) | 100,000 | 223,239 | 9,109 | 9.11 | 2,401,348 | 2,400,576 | 2,390,440 | +| Precompile Fixed Cost (0.1M, Bls12 G2Msm) | 100,000 | 223,239 | 6,610 | 6.61 | 12,699,560 | 12,691,666.7 | 12,682,312 | +| Precompile Fixed Cost (0.1M, Bls12 Pairing Check) | 100,000 | 223,239 | 13,470 | 13.47 | 5,339,376 | 5,321,127.2 | 5,303,704 | +| Precompile Fixed Cost (0.1M, Bn128 Add) | 100,000 | 223,239 | 9,583 | 9.58 | 650,464 | 635,214.9 | 620,352 | +| Precompile Fixed Cost (0.1M, Bn128 Add 1 2) | 100,000 | 223,239 | 10,767 | 10.77 | 11,626,016 | 11,601,306.4 | 11,587,400 | +| Precompile Fixed Cost (0.1M, Bn128 Add Infinities) | 100,000 | 223,239 | 7,876 | 7.88 | 5,379,348 | 5,376,472 | 5,379,348 | +| Precompile Fixed Cost (0.1M, Bn128 Mul) | 100,000 | 223,239 | 16,450 | 16.45 | 12,805,880 | 12,779,482.2 | 12,736,208 | +| Precompile Fixed Cost (0.1M, Bn128 Mul 1 2 2 Scalar) | 100,000 | 223,239 | 6,168 | 6.17 | 8,957,656 | 8,947,105 | 8,924,948 | +| Precompile Fixed Cost (0.1M, Bn128 Mul 1 2 32 Byte Scalar) | 100,000 | 223,239 | 16,213 | 16.21 | 6,134,780 | 6,114,792 | 6,063,432 | +| Precompile Fixed Cost (0.1M, Bn128 Mul 32 Byte Coord And 2 Scalar) | 100,000 | 223,239 | 6,376 | 6.38 | 3,933,128 | 3,933,128 | 3,931,844 | +| Precompile Fixed Cost (0.1M, Bn128 Mul 32 Byte Coord And Scalar) | 100,000 | 223,239 | 19,053 | 19.05 | 9,607,140 | 9,604,562.4 | 9,590,060 | +| Precompile Fixed Cost (0.1M, Bn128 Mul Infinities 2 Scalar) | 100,000 | 223,239 | 6,689 | 6.69 | 8,052,644 | 8,041,926.4 | 8,026,668 | +| Precompile Fixed Cost (0.1M, Bn128 Mul Infinities 32 Byte Scalar) | 100,000 | 223,239 | 14,205 | 14.21 | 13,700,128 | 13,693,709.3 | 13,675,108 | +| Precompile Fixed Cost (0.1M, Bn128 One Pairing) | 100,000 | 223,239 | 5,495 | 5.50 | 11,964,568 | 11,964,568 | 11,949,864 | +| Precompile Fixed Cost (0.1M, Bn128 Two Pairings) | 100,000 | 223,239 | 5,413 | 5.41 | 6,642,616 | 6,639,223 | 6,639,804 | +| Precompile Fixed Cost (0.1M, Bn128 Two Pairings Empty) | 100,000 | 223,239 | 5,846 | 5.85 | 6,054,360 | 6,054,360 | 6,047,984 | +| Precompile Fixed Cost (0.1M, Ecrecover) | 100,000 | 223,239 | 17,070 | 17.07 | 11,716,636 | 11,698,880 | 11,685,356 | +| Precompile Fixed Cost (0.1M, Point Evaluation) | 100,000 | 223,239 | 15,937 | 15.94 | 12,336,660 | 12,329,461 | 12,314,368 | +| Precompile Only Data Input (0.1M, Identity) | 100,000 | 223,239 | 8,420 | 8.42 | 9,261,744 | 9,259,710 | 9,242,132 | +| Precompile Only Data Input (0.1M, Ripemd, 160) | 100,000 | 223,239 | 6,079 | 6.08 | 7,253,096 | 7,253,096 | 7,242,660 | +| Precompile Only Data Input (0.1M, Sha2, 256) | 100,000 | 223,239 | 7,321 | 7.32 | 7,241,856 | 7,236,039 | 7,225,664 | +| Push (0.1M, Push0) | 100,000 | 223,239 | 8,054 | 8.05 | 5,570,652 | 5,553,778.7 | 5,546,816 | +| Push (0.1M, Push10) | 100,000 | 223,239 | 7,833 | 7.83 | 5,071,228 | 5,052,147.3 | 5,027,236 | +| Push (0.1M, Push11) | 100,000 | 223,239 | 7,726 | 7.73 | 3,670,616 | 3,662,587.3 | 3,662,024 | +| Push (0.1M, Push12) | 100,000 | 223,239 | 7,634 | 7.63 | 5,983,432 | 5,969,097 | 5,983,432 | +| Push (0.1M, Push13) | 100,000 | 223,239 | 8,286 | 8.29 | 13,950,896 | 13,944,183.2 | 13,937,112 | +| Push (0.1M, Push14) | 100,000 | 223,239 | 8,434 | 8.43 | 5,397,436 | 5,388,460 | 5,385,000 | +| Push (0.1M, Push15) | 100,000 | 223,239 | 7,857 | 7.86 | 13,933,864 | 13,933,864 | 13,916,600 | +| Push (0.1M, Push16) | 100,000 | 223,239 | 9,277 | 9.28 | 4,486,108 | 4,470,624 | 4,452,600 | +| Push (0.1M, Push17) | 100,000 | 223,239 | 10,110 | 10.11 | 12,163,940 | 12,151,870.7 | 12,150,868 | +| Push (0.1M, Push18) | 100,000 | 223,239 | 7,775 | 7.78 | 5,101,780 | 5,090,446.7 | 5,079,936 | +| Push (0.1M, Push19) | 100,000 | 223,290 | 9,793 | 9.79 | 268,748 | 193,415.5 | 55,060 | +| Push (0.1M, Push1) | 100,000 | 223,239 | 7,623 | 7.62 | 7,547,448 | 7,536,963.2 | 7,535,824 | +| Push (0.1M, Push20) | 100,000 | 223,239 | 10,118 | 10.12 | 4,054,108 | 4,044,997.3 | 4,026,672 | +| Push (0.1M, Push21) | 100,000 | 223,239 | 9,658 | 9.66 | 8,522,724 | 8,513,788.6 | 8,482,404 | +| Push (0.1M, Push22) | 100,000 | 223,239 | 9,964 | 9.96 | 4,438,664 | 4,416,274.3 | 4,375,760 | +| Push (0.1M, Push23) | 100,000 | 223,239 | 9,560 | 9.56 | 3,710,424 | 3,702,784 | 3,686,472 | +| Push (0.1M, Push24) | 100,000 | 223,239 | 8,483 | 8.48 | 10,922,076 | 10,914,986 | 10,914,320 | +| Push (0.1M, Push25) | 100,000 | 223,239 | 9,515 | 9.52 | 8,075,348 | 8,062,214.4 | 8,045,640 | +| Push (0.1M, Push26) | 100,000 | 223,239 | 10,336 | 10.34 | 5,310,208 | 5,309,168 | 5,309,188 | +| Push (0.1M, Push27) | 100,000 | 223,239 | 10,239 | 10.24 | 784,020 | 768,574.2 | 760,712 | +| Push (0.1M, Push28) | 100,000 | 223,239 | 9,121 | 9.12 | 4,981,328 | 4,955,363.2 | 4,944,936 | +| Push (0.1M, Push29) | 100,000 | 223,239 | 11,683 | 11.68 | 7,761,036 | 7,751,888 | 7,761,036 | +| Push (0.1M, Push2) | 100,000 | 223,239 | 6,891 | 6.89 | 8,566,108 | 8,560,415.2 | 8,545,232 | +| Push (0.1M, Push30) | 100,000 | 223,239 | 9,137 | 9.14 | 1,779,436 | 1,750,669.1 | 1,725,532 | +| Push (0.1M, Push31) | 100,000 | 223,239 | 9,129 | 9.13 | 6,642,316 | 6,642,316 | 6,639,352 | +| Push (0.1M, Push32) | 100,000 | 223,239 | 9,620 | 9.62 | 14,168,228 | 14,145,844 | 14,113,612 | +| Push (0.1M, Push3) | 100,000 | 223,239 | 6,909 | 6.91 | 2,946,248 | 2,939,352.7 | 2,936,340 | +| Push (0.1M, Push4) | 100,000 | 223,239 | 6,848 | 6.85 | 3,377,812 | 3,375,316 | 3,368,564 | +| Push (0.1M, Push5) | 100,000 | 223,239 | 6,991 | 6.99 | 3,675,868 | 3,674,586 | 3,670,368 | +| Push (0.1M, Push6) | 100,000 | 223,239 | 7,319 | 7.32 | 5,427,824 | 5,417,221.6 | 5,412,636 | +| Push (0.1M, Push7) | 100,000 | 223,239 | 8,628 | 8.63 | 8,703,184 | 8,694,194 | 8,696,636 | +| Push (0.1M, Push8) | 100,000 | 223,239 | 7,393 | 7.39 | 1,462,224 | 1,449,000 | 1,455,852 | +| Push (0.1M, Push9) | 100,000 | 223,239 | 9,376 | 9.38 | 9,618,848 | 9,610,312 | 9,607,064 | +| Return Revert (0.1M, 1Kib Of Non, Zero Data, Return) | 100,000 | 223,239 | 11,256 | 11.26 | 10,375,928 | 10,362,157.8 | 10,354,508 | +| Return Revert (0.1M, 1Kib Of Non, Zero Data, Revert) | 100,000 | 223,239 | 9,367 | 9.37 | 7,000,744 | 6,980,597.5 | 6,970,112 | +| Return Revert (0.1M, 1Kib Of Zero Data, Return) | 100,000 | 223,239 | 10,499 | 10.50 | 3,755,008 | 3,730,962.7 | 3,705,528 | +| Return Revert (0.1M, 1Kib Of Zero Data, Revert) | 100,000 | 223,239 | 9,618 | 9.62 | 8,856,628 | 8,842,103 | 8,817,604 | +| Return Revert (0.1M, 1Mib Of Non, Zero Data, Return) | 100,000 | 223,239 | 6,031 | 6.03 | 8,751,452 | 8,729,724 | 8,688,060 | +| Return Revert (0.1M, 1Mib Of Non, Zero Data, Revert) | 100,000 | 223,239 | 8,080 | 8.08 | 2,142,064 | 2,136,425.6 | 2,127,576 | +| Return Revert (0.1M, 1Mib Of Zero Data, Return) | 100,000 | 223,239 | 5,488 | 5.49 | 6,452,468 | 6,449,570 | 6,442,380 | +| Return Revert (0.1M, 1Mib Of Zero Data, Revert) | 100,000 | 223,239 | 5,921 | 5.92 | 7,302,956 | 7,279,722.7 | 7,244,456 | +| Return Revert (0.1M, Empty, Return) | 100,000 | 223,239 | 9,496 | 9.50 | 11,938,736 | 11,938,736 | 11,926,632 | +| Return Revert (0.1M, Empty, Revert) | 100,000 | 223,239 | 10,170 | 10.17 | 13,931,496 | 13,926,982 | 13,931,460 | +| Returndatasize Nonzero (0.1M, Returned Size 0, Return Data Style Returndatastyle.Identity) | 100,000 | 223,239 | 7,275 | 7.28 | 8,739,152 | 8,718,249.3 | 8,708,280 | +| Returndatasize Nonzero (0.1M, Returned Size 0, Return Data Style Returndatastyle.Return) | 100,000 | 223,239 | 7,692 | 7.69 | 4,463,860 | 4,458,724 | 4,463,860 | +| Returndatasize Nonzero (0.1M, Returned Size 0, Return Data Style Returndatastyle.Revert) | 100,000 | 223,239 | 7,095 | 7.09 | 11,056,148 | 11,051,472 | 11,027,900 | +| Returndatasize Nonzero (0.1M, Returned Size 1, Return Data Style Returndatastyle.Identity) | 100,000 | 223,239 | 7,169 | 7.17 | 12,576,188 | 12,576,188 | 12,557,124 | +| Returndatasize Nonzero (0.1M, Returned Size 1, Return Data Style Returndatastyle.Return) | 100,000 | 223,239 | 6,968 | 6.97 | 6,423,364 | 6,418,594.7 | 6,423,364 | +| Returndatasize Nonzero (0.1M, Returned Size 1, Return Data Style Returndatastyle.Revert) | 100,000 | 223,239 | 7,007 | 7.01 | 4,186,220 | 4,181,761.3 | 4,170,044 | +| Returndatasize Zero (0.1M) | 100,000 | 223,239 | 6,567 | 6.57 | 4,270,416 | 4,265,579 | 4,264,828 | +| Shifts (0.1M, Shift Right Sar) | 100,000 | 223,239 | 9,225 | 9.22 | 1,458,632 | 1,420,530.7 | 1,377,244 | +| Shifts (0.1M, Shift Right Shr) | 100,000 | 223,239 | 9,613 | 9.61 | 6,164,032 | 6,158,872 | 6,155,768 | +| Swap (0.1M, Swap10) | 100,000 | 223,239 | 9,984 | 9.98 | 13,601,484 | 13,600,064 | 13,600,752 | +| Swap (0.1M, Swap11) | 100,000 | 223,239 | 9,118 | 9.12 | 3,547,036 | 3,534,236.8 | 3,517,736 | +| Swap (0.1M, Swap12) | 100,000 | 223,239 | 10,169 | 10.17 | 2,696,736 | 2,692,136 | 2,681,296 | +| Swap (0.1M, Swap13) | 100,000 | 223,239 | 11,339 | 11.34 | 10,132,516 | 10,116,973 | 10,132,516 | +| Swap (0.1M, Swap14) | 100,000 | 223,239 | 9,999 | 10.00 | 12,327,968 | 12,308,208 | 12,327,968 | +| Swap (0.1M, Swap15) | 100,000 | 223,239 | 10,840 | 10.84 | 10,373,984 | 10,359,484.8 | 10,339,660 | +| Swap (0.1M, Swap16) | 100,000 | 223,239 | 9,659 | 9.66 | 4,237,056 | 4,233,393 | 4,225,652 | +| Swap (0.1M, Swap1) | 100,000 | 223,239 | 10,255 | 10.26 | 7,738,028 | 7,722,152 | 7,682,804 | +| Swap (0.1M, Swap2) | 100,000 | 223,239 | 8,438 | 8.44 | 1,040,072 | 1,021,429.5 | 988,352 | +| Swap (0.1M, Swap3) | 100,000 | 223,239 | 10,722 | 10.72 | 4,199,832 | 4,199,832 | 4,185,008 | +| Swap (0.1M, Swap4) | 100,000 | 223,239 | 10,202 | 10.20 | 11,488,640 | 11,471,928 | 11,488,640 | +| Swap (0.1M, Swap5) | 100,000 | 223,239 | 9,289 | 9.29 | 5,308,452 | 5,302,699 | 5,289,380 | +| Swap (0.1M, Swap6) | 100,000 | 223,239 | 11,140 | 11.14 | 5,029,432 | 5,018,023.1 | 5,001,144 | +| Swap (0.1M, Swap7) | 100,000 | 223,239 | 10,175 | 10.18 | 11,659,812 | 11,651,326 | 11,629,948 | +| Swap (0.1M, Swap8) | 100,000 | 223,239 | 9,191 | 9.19 | 7,134,780 | 7,130,512 | 7,117,992 | +| Swap (0.1M, Swap9) | 100,000 | 223,239 | 9,673 | 9.67 | 13,530,828 | 13,529,892 | 13,530,828 | +| Tload (0.1M, Val Mut False, Key Mut False) | 100,000 | 223,239 | 7,415 | 7.42 | 9,629,568 | 9,619,724 | 9,604,304 | +| Tload (0.1M, Val Mut False, Key Mut True) | 100,000 | 223,239 | 6,554 | 6.55 | 11,204,692 | 11,188,274 | 11,179,332 | +| Tload (0.1M, Val Mut True, Key Mut False) | 100,000 | 223,239 | 6,001 | 6.00 | 6,734,188 | 6,734,188 | 6,722,996 | +| Tload (0.1M, Val Mut True, Key Mut True) | 100,000 | 223,239 | 6,781 | 6.78 | 12,911,764 | 12,911,764 | 12,897,008 | +| Tstore (0.1M, Dense Val Mut False, Key Mut False) | 100,000 | 223,239 | 7,461 | 7.46 | 12,134,448 | 12,126,857 | 12,111,812 | +| Tstore (0.1M, Dense Val Mut False, Key Mut True) | 100,000 | 223,239 | 7,830 | 7.83 | 3,903,420 | 3,883,261 | 3,865,360 | +| Tstore (0.1M, Dense Val Mut True, Key Mut False) | 100,000 | 223,239 | 9,401 | 9.40 | 8,123,196 | 8,121,508 | 8,123,196 | +| Tstore (0.1M, Dense Val Mut True, Key Mut True) | 100,000 | 223,239 | 10,058 | 10.06 | 5,730,952 | 5,727,748 | 5,706,660 | +| Unop (0.1M, Iszero) | 100,000 | 223,239 | 8,625 | 8.62 | 2,193,892 | 2,184,737.7 | 2,174,204 | +| Unop (0.1M, Not) | 100,000 | 223,239 | 7,858 | 7.86 | 10,131,460 | 10,119,412 | 10,097,724 | +| Zero Param (0.1M, Address) | 100,000 | 223,239 | 9,584 | 9.58 | 6,012,596 | 5,988,904 | 5,968,404 | +| Zero Param (0.1M, Basefee) | 100,000 | 223,239 | 10,112 | 10.11 | 13,733,644 | 13,733,644 | 13,730,664 | +| Zero Param (0.1M, Blobbasefee) | 100,000 | 223,239 | 9,871 | 9.87 | 6,232,448 | 6,222,672.7 | 6,228,072 | +| Zero Param (0.1M, Caller) | 100,000 | 223,239 | 11,257 | 11.26 | 3,407,944 | 3,397,661.3 | 3,384,600 | +| Zero Param (0.1M, Chainid) | 100,000 | 223,239 | 10,184 | 10.18 | 4,223,816 | 4,213,341 | 4,193,828 | +| Zero Param (0.1M, Codesize) | 100,000 | 223,239 | 9,459 | 9.46 | 9,525,664 | 9,513,797.6 | 9,500,316 | +| Zero Param (0.1M, Coinbase) | 100,000 | 223,239 | 9,368 | 9.37 | 6,228,316 | 6,211,056 | 6,228,316 | +| Zero Param (0.1M, Gaslimit) | 100,000 | 223,239 | 8,283 | 8.28 | 12,332,428 | 12,329,920 | 12,325,480 | +| Zero Param (0.1M, Gasprice) | 100,000 | 223,239 | 8,613 | 8.61 | 11,053,340 | 11,035,167.4 | 11,018,192 | +| Zero Param (0.1M, Gas) | 100,000 | 223,239 | 8,100 | 8.10 | 13,762,264 | 13,762,264 | 13,729,388 | +| Zero Param (0.1M, Number) | 100,000 | 223,239 | 9,140 | 9.14 | 13,643,892 | 13,636,271 | 13,615,068 | +| Zero Param (0.1M, Origin) | 100,000 | 223,239 | 12,322 | 12.32 | 8,740,292 | 8,728,164 | 8,740,292 | +| Zero Param (0.1M, Prevrandao) | 100,000 | 223,239 | 12,270 | 12.27 | 7,109,208 | 7,099,827 | 7,088,652 | +| Zero Param (0.1M, Timestamp) | 100,000 | 223,239 | 7,671 | 7.67 | 2,691,276 | 2,687,860.8 | 2,675,664 | +| Calldatacopy (0.1M, Zero Data, Dynamic Src Dst, 0Bytes, Call) | 100,000 | 223,239 | 9,686 | 9.69 | 13,309,672 | 13,298,597.6 | 13,293,352 | +| Calldatacopy (0.1M, Zero Data, Dynamic Src Dst, 0Bytes, Transaction) | 100,000 | 223,239 | 9,178 | 9.18 | 12,148,916 | 12,135,782.3 | 12,119,052 | +| Calldatacopy (0.1M, Zero Data, Dynamic Src Dst, 100Bytes, Call) | 100,000 | 223,239 | 9,135 | 9.13 | 7,177,472 | 7,162,161.6 | 7,148,676 | +| Calldatacopy (0.1M, Zero Data, Dynamic Src Dst, 100Bytes, Transaction) | 100,000 | 223,239 | 8,747 | 8.75 | 4,256,648 | 4,249,900.8 | 4,244,024 | +| Calldatacopy (0.1M, Zero Data, Dynamic Src Dst, 10Kib, Call) | 100,000 | 223,239 | 7,243 | 7.24 | 8,491,292 | 8,470,572 | 8,449,164 | +| Calldatacopy (0.1M, Zero Data, Dynamic Src Dst, 10Kib, Transaction) | 100,000 | 223,239 | 5,578 | 5.58 | 3,533,564 | 3,517,978 | 3,533,564 | +| Calldatacopy (0.1M, Zero Data, Dynamic Src Dst, 1Mib, Call) | 100,000 | 223,239 | 5,273 | 5.27 | 8,343,256 | 8,337,890 | 8,336,668 | +| Calldatacopy (0.1M, Zero Data, Dynamic Src Dst, 1Mib, Transaction) | 100,000 | 223,239 | 5,308 | 5.31 | 2,468,204 | 2,468,048 | 2,459,644 | +| Calldatacopy (0.1M, Zero Data, Fixed Src Dst, 0Bytes, Call) | 100,000 | 223,239 | 7,741 | 7.74 | 9,634,808 | 9,611,008 | 9,594,012 | +| Calldatacopy (0.1M, Zero Data, Fixed Src Dst, 0Bytes, Transaction) | 100,000 | 223,239 | 8,905 | 8.90 | 9,745,200 | 9,736,938.3 | 9,734,064 | +| Calldatacopy (0.1M, Zero Data, Fixed Src Dst, 100Bytes, Call) | 100,000 | 223,239 | 6,982 | 6.98 | 3,275,616 | 3,270,239.2 | 3,263,968 | +| Calldatacopy (0.1M, Zero Data, Fixed Src Dst, 100Bytes, Transaction) | 100,000 | 223,239 | 7,921 | 7.92 | 4,932,048 | 4,922,833.3 | 4,917,568 | +| Calldatacopy (0.1M, Zero Data, Fixed Src Dst, 10Kib, Call) | 100,000 | 223,239 | 5,755 | 5.75 | 14,244,428 | 14,239,411 | 14,192,544 | +| Calldatacopy (0.1M, Zero Data, Fixed Src Dst, 10Kib, Transaction) | 100,000 | 223,239 | 6,529 | 6.53 | 10,949,244 | 10,949,244 | 10,929,000 | +| Calldatacopy (0.1M, Zero Data, Fixed Src Dst, 1Mib, Call) | 100,000 | 223,239 | 5,255 | 5.25 | 8,514,360 | 8,483,240 | 8,514,360 | +| Calldatacopy (0.1M, Zero Data, Fixed Src Dst, 1Mib, Transaction) | 100,000 | 223,239 | 5,380 | 5.38 | 4,661,800 | 4,652,720 | 4,627,852 | +| Calldatacopy (0.1M, Non Zero, Dynamic Src Dst, 100Bytes, Call) | 100,000 | 223,239 | 9,307 | 9.31 | 11,930,156 | 11,921,246.7 | 11,906,912 | +| Calldatacopy (0.1M, Non Zero, Dynamic Src Dst, 100Bytes, Transaction) | 100,000 | 223,239 | 11,348 | 11.35 | 10,349,888 | 10,333,330.9 | 10,317,636 | +| Calldatacopy (0.1M, Non Zero, Fixed Src Dst, 100Bytes, Call) | 100,000 | 223,239 | 7,354 | 7.35 | 12,123,876 | 12,123,876 | 12,107,268 | +| Calldatacopy (0.1M, Non Zero, Fixed Src Dst, 100Bytes, Transaction) | 100,000 | 223,239 | 7,520 | 7.52 | 5,983,908 | 5,970,545.3 | 5,959,576 | +| Codecopy (0.1M, Dynamic Src Dst, 0Bytes) | 100,000 | 223,239 | 9,898 | 9.90 | 12,565,380 | 12,557,063 | 12,525,844 | +| Codecopy (0.1M, Dynamic Src Dst, 0.25X Max Code) | 100,000 | 223,239 | 6,063 | 6.06 | 13,195,800 | 13,195,621.3 | 13,187,140 | +| Codecopy (0.1M, Dynamic Src Dst, 0.50X Max Code Size) | 100,000 | 223,239 | 6,872 | 6.87 | 6,901,660 | 6,897,892 | 6,884,108 | +| Codecopy (0.1M, Dynamic Src Dst, 0.75X Max Code Size) | 100,000 | 223,239 | 7,273 | 7.27 | 1,589,012 | 1,587,764 | 1,567,888 | +| Codecopy (0.1M, Dynamic Src Dst, Max Code) | 100,000 | 223,239 | 6,619 | 6.62 | 7,520,128 | 7,510,872 | 7,506,796 | +| Codecopy (0.1M, Fixed Src Dst, 0Bytes) | 100,000 | 223,239 | 6,559 | 6.56 | 10,614,488 | 10,605,312.7 | 10,587,380 | +| Codecopy (0.1M, Fixed Src Dst, 0.25X Max Code) | 100,000 | 223,239 | 6,489 | 6.49 | 6,932,648 | 6,919,242.7 | 6,910,392 | +| Codecopy (0.1M, Fixed Src Dst, 0.50X Max Code Size) | 100,000 | 223,239 | 5,533 | 5.53 | 801,780 | 787,133.1 | 774,068 | +| Codecopy (0.1M, Fixed Src Dst, 0.75X Max Code Size) | 100,000 | 223,239 | 6,213 | 6.21 | 539,420 | 532,908.7 | 514,332 | +| Codecopy (0.1M, Fixed Src Dst, Max Code) | 100,000 | 223,239 | 6,477 | 6.48 | 11,821,556 | 11,821,556 | 11,800,752 | +| Mcopy (0.1M, Dynamic Src Dst, 0Bytes) | 100,000 | 223,239 | 8,104 | 8.10 | 5,384,792 | 5,379,717 | 5,378,940 | +| Mcopy (0.1M, Dynamic Src Dst, 100Bytes) | 100,000 | 223,239 | 8,411 | 8.41 | 8,350,216 | 8,345,472 | 8,350,216 | +| Mcopy (0.1M, Dynamic Src Dst, 10Kib) | 100,000 | 223,239 | 7,073 | 7.07 | 2,491,164 | 2,486,310.4 | 2,470,616 | +| Mcopy (0.1M, Dynamic Src Dst, 1Mib) | 100,000 | 223,239 | 4,971 | 4.97 | 6,064,940 | 6,056,794 | 6,050,580 | +| Mcopy (0.1M, Fixed Src Dst, 0Bytes) | 100,000 | 223,239 | 6,678 | 6.68 | 13,778,300 | 13,778,300 | 13,772,748 | +| Mcopy (0.1M, Fixed Src Dst, 100Bytes) | 100,000 | 223,239 | 7,161 | 7.16 | 1,625,620 | 1,610,463 | 1,585,244 | +| Mcopy (0.1M, Fixed Src Dst, 10Kib) | 100,000 | 223,239 | 8,093 | 8.09 | 303,936 | 227,945.7 | 85,008 | +| Mcopy (0.1M, Fixed Src Dst, 1Mib) | 100,000 | 223,239 | 5,406 | 5.41 | 7,224,672 | 7,202,158 | 7,174,912 | +| Returndatacopy (0.1M, Fixed Dst False, 0Bytes) | 100,000 | 223,239 | 9,325 | 9.32 | 772,396 | 761,273.7 | 737,040 | +| Returndatacopy (0.1M, Fixed Dst False, 100Bytes) | 100,000 | 223,239 | 8,538 | 8.54 | 11,026,808 | 11,010,072.8 | 10,990,868 | +| Returndatacopy (0.1M, Fixed Dst False, 10Kib) | 100,000 | 223,239 | 8,820 | 8.82 | 9,419,392 | 9,419,392 | 9,345,952 | +| Returndatacopy (0.1M, Fixed Dst False, 1Mib) | 100,000 | 223,239 | 6,089 | 6.09 | 4,911,676 | 4,908,338.7 | 4,904,488 | +| Returndatacopy (0.1M, Fixed Dst True, 0Bytes) | 100,000 | 223,239 | 7,518 | 7.52 | 519,772 | 515,337.5 | 500,256 | +| Returndatacopy (0.1M, Fixed Dst True, 100Bytes) | 100,000 | 223,239 | 6,409 | 6.41 | 3,365,700 | 3,361,646.4 | 3,359,340 | +| Returndatacopy (0.1M, Fixed Dst True, 10Kib) | 100,000 | 223,239 | 6,112 | 6.11 | 5,544,456 | 5,534,728 | 5,526,840 | +| Returndatacopy (0.1M, Fixed Dst True, 1Mib) | 100,000 | 223,239 | 6,200 | 6.20 | 7,338,236 | 7,326,214.7 | 7,297,292 | +| Log Opcodes (0.1M, Dynamic, Non Zero Topic, 0 Bytes Data, Log0) | 100,000 | 223,239 | 6,107 | 6.11 | 7,755,464 | 7,748,452 | 7,744,176 | +| Log Opcodes (0.1M, Dynamic, Non Zero Topic, 0 Bytes Data, Log1) | 100,000 | 223,239 | 5,896 | 5.90 | 8,029,540 | 8,029,034 | 8,021,392 | +| Log Opcodes (0.1M, Dynamic, Non Zero Topic, 0 Bytes Data, Log2) | 100,000 | 223,239 | 5,991 | 5.99 | 13,028,320 | 13,024,596 | 13,028,320 | +| Log Opcodes (0.1M, Dynamic, Non Zero Topic, 0 Bytes Data, Log3) | 100,000 | 223,239 | 6,279 | 6.28 | 2,381,108 | 2,378,096 | 2,372,652 | +| Log Opcodes (0.1M, Dynamic, Non Zero Topic, 0 Bytes Data, Log4) | 100,000 | 223,239 | 5,669 | 5.67 | 5,288,488 | 5,277,323 | 5,261,972 | +| Log Opcodes (0.1M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log0) | 100,000 | 223,239 | 5,901 | 5.90 | 8,684,832 | 8,679,997 | 8,680,796 | +| Log Opcodes (0.1M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log1) | 100,000 | 223,239 | 6,652 | 6.65 | 9,931,596 | 9,915,266 | 9,903,972 | +| Log Opcodes (0.1M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log2) | 100,000 | 223,239 | 6,127 | 6.13 | 7,818,264 | 7,809,175 | 7,790,428 | +| Log Opcodes (0.1M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log3) | 100,000 | 223,239 | 5,738 | 5.74 | 14,280,172 | 14,269,452.8 | 14,244,560 | +| Log Opcodes (0.1M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log4) | 100,000 | 223,239 | 5,561 | 5.56 | 13,736,012 | 13,728,980 | 13,702,520 | +| Log Opcodes (0.1M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log0) | 100,000 | 223,239 | 4,980 | 4.98 | 7,550,472 | 7,539,118 | 7,523,700 | +| Log Opcodes (0.1M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log1) | 100,000 | 223,239 | 5,490 | 5.49 | 12,332,892 | 12,330,416 | 12,332,892 | +| Log Opcodes (0.1M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log2) | 100,000 | 223,239 | 6,184 | 6.18 | 1,555,980 | 1,546,790 | 1,526,356 | +| Log Opcodes (0.1M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log3) | 100,000 | 223,239 | 5,217 | 5.22 | 1,664,024 | 1,664,024 | 1,641,356 | +| Log Opcodes (0.1M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log4) | 100,000 | 223,239 | 5,617 | 5.62 | 1,002,048 | 989,164 | 965,076 | +| Log Opcodes (0.1M, Dynamic, Zero Topic, 0 Bytes Data, Log0) | 100,000 | 223,239 | 6,049 | 6.05 | 6,467,968 | 6,456,685.3 | 6,465,328 | +| Log Opcodes (0.1M, Dynamic, Zero Topic, 0 Bytes Data, Log1) | 100,000 | 223,239 | 5,802 | 5.80 | 1,111,720 | 1,096,732 | 1,071,160 | +| Log Opcodes (0.1M, Dynamic, Zero Topic, 0 Bytes Data, Log2) | 100,000 | 223,239 | 7,005 | 7.00 | 13,259,304 | 13,259,304 | 13,250,520 | +| Log Opcodes (0.1M, Dynamic, Zero Topic, 0 Bytes Data, Log3) | 100,000 | 223,239 | 5,289 | 5.29 | 8,163,072 | 8,163,072 | 8,152,080 | +| Log Opcodes (0.1M, Dynamic, Zero Topic, 0 Bytes Data, Log4) | 100,000 | 223,239 | 5,727 | 5.73 | 3,402,132 | 3,398,356.8 | 3,389,940 | +| Log Opcodes (0.1M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log0) | 100,000 | 223,239 | 6,309 | 6.31 | 11,178,100 | 11,176,492 | 11,175,684 | +| Log Opcodes (0.1M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log1) | 100,000 | 223,239 | 5,201 | 5.20 | 8,069,900 | 8,064,974.4 | 8,047,016 | +| Log Opcodes (0.1M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log2) | 100,000 | 223,239 | 5,202 | 5.20 | 2,425,072 | 2,419,992 | 2,410,316 | +| Log Opcodes (0.1M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log3) | 100,000 | 223,239 | 6,306 | 6.31 | 8,062,644 | 8,053,582.4 | 8,047,164 | +| Log Opcodes (0.1M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log4) | 100,000 | 223,239 | 6,110 | 6.11 | 10,145,612 | 10,139,122.7 | 10,115,200 | +| Log Opcodes (0.1M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log0) | 100,000 | 223,239 | 5,605 | 5.61 | 7,506,832 | 7,506,832 | 7,505,328 | +| Log Opcodes (0.1M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log1) | 100,000 | 223,239 | 5,542 | 5.54 | 4,198,076 | 4,192,701.3 | 4,192,584 | +| Log Opcodes (0.1M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log2) | 100,000 | 223,239 | 6,347 | 6.35 | 14,052,088 | 14,052,088 | 14,019,948 | +| Log Opcodes (0.1M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log3) | 100,000 | 223,239 | 5,344 | 5.34 | 499,740 | 493,550.3 | 482,324 | +| Log Opcodes (0.1M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log4) | 100,000 | 223,239 | 5,516 | 5.52 | 13,713,420 | 13,706,375.2 | 13,695,460 | +| Log Opcodes (0.1M, Fixed, Non Zero Topic, 0 Bytes Data, Log0) | 100,000 | 223,239 | 6,062 | 6.06 | 4,219,268 | 4,216,532 | 4,212,676 | +| Log Opcodes (0.1M, Fixed, Non Zero Topic, 0 Bytes Data, Log1) | 100,000 | 223,239 | 6,374 | 6.37 | 3,789,124 | 3,780,025 | 3,767,044 | +| Log Opcodes (0.1M, Fixed, Non Zero Topic, 0 Bytes Data, Log2) | 100,000 | 223,239 | 6,803 | 6.80 | 7,577,372 | 7,565,138.7 | 7,558,056 | +| Log Opcodes (0.1M, Fixed, Non Zero Topic, 0 Bytes Data, Log3) | 100,000 | 223,239 | 5,675 | 5.67 | 2,457,332 | 2,456,516 | 2,453,432 | +| Log Opcodes (0.1M, Fixed, Non Zero Topic, 0 Bytes Data, Log4) | 100,000 | 223,239 | 6,124 | 6.12 | 12,697,100 | 12,695,633.3 | 12,691,552 | +| Log Opcodes (0.1M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log0) | 100,000 | 223,239 | 6,018 | 6.02 | 3,764,800 | 3,764,628 | 3,764,800 | +| Log Opcodes (0.1M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log1) | 100,000 | 223,239 | 6,397 | 6.40 | 12,911,260 | 12,901,188 | 12,879,600 | +| Log Opcodes (0.1M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log2) | 100,000 | 223,239 | 6,248 | 6.25 | 12,112,976 | 12,102,812.8 | 12,112,976 | +| Log Opcodes (0.1M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log3) | 100,000 | 223,239 | 6,175 | 6.17 | 1,692,072 | 1,677,881.3 | 1,655,340 | +| Log Opcodes (0.1M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log4) | 100,000 | 223,239 | 5,854 | 5.85 | 4,050,244 | 4,045,884.8 | 4,037,952 | +| Log Opcodes (0.1M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log0) | 100,000 | 223,239 | 5,156 | 5.16 | 8,707,592 | 8,693,597.6 | 8,677,732 | +| Log Opcodes (0.1M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log1) | 100,000 | 223,239 | 5,970 | 5.97 | 12,434,060 | 12,428,473 | 12,408,552 | +| Log Opcodes (0.1M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log2) | 100,000 | 223,239 | 6,180 | 6.18 | 13,274,792 | 13,268,794 | 13,260,448 | +| Log Opcodes (0.1M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log3) | 100,000 | 223,239 | 5,907 | 5.91 | 13,936,868 | 13,929,833.3 | 13,932,636 | +| Log Opcodes (0.1M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log4) | 100,000 | 223,239 | 5,349 | 5.35 | 13,665,444 | 13,656,641.6 | 13,641,000 | +| Log Opcodes (0.1M, Fixed, Zero Topic, 0 Bytes Data, Log0) | 100,000 | 223,239 | 6,090 | 6.09 | 6,434,460 | 6,432,012 | 6,431,364 | +| Log Opcodes (0.1M, Fixed, Zero Topic, 0 Bytes Data, Log1) | 100,000 | 223,239 | 6,830 | 6.83 | 8,925,020 | 8,917,964 | 8,909,608 | +| Log Opcodes (0.1M, Fixed, Zero Topic, 0 Bytes Data, Log2) | 100,000 | 223,239 | 5,436 | 5.44 | 5,309,428 | 5,303,992 | 5,309,428 | +| Log Opcodes (0.1M, Fixed, Zero Topic, 0 Bytes Data, Log3) | 100,000 | 223,239 | 6,669 | 6.67 | 9,516,736 | 9,510,785.3 | 9,497,116 | +| Log Opcodes (0.1M, Fixed, Zero Topic, 0 Bytes Data, Log4) | 100,000 | 223,239 | 5,293 | 5.29 | 8,983,092 | 8,983,092 | 8,968,836 | +| Log Opcodes (0.1M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log0) | 100,000 | 223,239 | 5,662 | 5.66 | 1,186,768 | 1,162,271.2 | 1,148,936 | +| Log Opcodes (0.1M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log1) | 100,000 | 223,239 | 6,079 | 6.08 | 13,865,640 | 13,865,640 | 13,848,928 | +| Log Opcodes (0.1M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log2) | 100,000 | 223,239 | 6,075 | 6.08 | 7,371,676 | 7,357,760 | 7,345,712 | +| Log Opcodes (0.1M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log3) | 100,000 | 223,239 | 5,887 | 5.89 | 6,881,940 | 6,879,366 | 6,870,048 | +| Log Opcodes (0.1M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log4) | 100,000 | 223,239 | 6,035 | 6.04 | 1,167,908 | 1,159,322.4 | 1,162,340 | +| Log Opcodes (0.1M, Fixed, Zero Topic, 1 Mib Zeros Data, Log0) | 100,000 | 223,239 | 6,065 | 6.07 | 9,966,476 | 9,949,548 | 9,929,100 | +| Log Opcodes (0.1M, Fixed, Zero Topic, 1 Mib Zeros Data, Log1) | 100,000 | 223,239 | 5,642 | 5.64 | 8,540,652 | 8,535,772 | 8,525,104 | +| Log Opcodes (0.1M, Fixed, Zero Topic, 1 Mib Zeros Data, Log2) | 100,000 | 223,239 | 5,225 | 5.22 | 3,680,768 | 3,679,334 | 3,675,300 | +| Log Opcodes (0.1M, Fixed, Zero Topic, 1 Mib Zeros Data, Log3) | 100,000 | 223,239 | 5,991 | 5.99 | 11,476,464 | 11,470,987.2 | 11,466,828 | +| Log Opcodes (0.1M, Fixed, Zero Topic, 1 Mib Zeros Data, Log4) | 100,000 | 223,239 | 5,398 | 5.40 | 12,900,720 | 12,882,496 | 12,858,488 | +| Address State Cold (0.1M, Absent Accounts False, Balance) | 100,000 | 223,239 | 7,131 | 7.13 | 9,298,788 | 9,281,492 | 9,248,924 | +| Address State Cold (0.1M, Absent Accounts True, Balance) | 100,000 | 223,239 | 5,572 | 5.57 | 1,722,424 | 1,721,166 | 1,716,984 | +| Address State Warm (0.1M, Present Target, Balance) | 100,000 | 223,239 | 7,572 | 7.57 | 4,572,736 | 4,548,818.4 | 4,511,256 | +| Address State Warm (0.1M, Present Target, Callcode) | 100,000 | 223,239 | 11,163 | 11.16 | 1,840,880 | 1,809,299.5 | 1,777,588 | +| Address State Warm (0.1M, Present Target, Call) | 100,000 | 223,239 | 10,988 | 10.99 | 7,122,376 | 7,105,688 | 7,090,564 | +| Address State Warm (0.1M, Present Target, Delegatecall) | 100,000 | 223,239 | 10,961 | 10.96 | 9,784,820 | 9,765,700.7 | 9,740,460 | +| Address State Warm (0.1M, Present Target, Extcodehash) | 100,000 | 223,239 | 8,421 | 8.42 | 1,248,072 | 1,206,564 | 1,160,824 | +| Address State Warm (0.1M, Present Target, Extcodesize) | 100,000 | 223,239 | 8,759 | 8.76 | 3,528,864 | 3,523,206 | 3,524,032 | +| Address State Warm (0.1M, Present Target, Staticcall) | 100,000 | 223,239 | 10,286 | 10.29 | 12,492,396 | 12,483,312 | 12,492,396 | +| Address State Warm (0.1M, Absent Target, Balance) | 100,000 | 223,239 | 6,631 | 6.63 | 7,760,716 | 7,754,155.2 | 7,756,208 | +| Address State Warm (0.1M, Absent Target, Callcode) | 100,000 | 223,239 | 9,557 | 9.56 | 4,249,340 | 4,239,690 | 4,238,080 | +| Address State Warm (0.1M, Absent Target, Call) | 100,000 | 223,239 | 9,427 | 9.43 | 1,316,980 | 1,282,635.4 | 1,254,296 | +| Address State Warm (0.1M, Absent Target, Delegatecall) | 100,000 | 223,239 | 9,401 | 9.40 | 12,707,656 | 12,699,152 | 12,679,412 | +| Address State Warm (0.1M, Absent Target, Extcodehash) | 100,000 | 223,239 | 7,079 | 7.08 | 8,552,892 | 8,552,892 | 8,541,644 | +| Address State Warm (0.1M, Absent Target, Extcodesize) | 100,000 | 223,239 | 6,818 | 6.82 | 11,657,896 | 11,644,244 | 11,621,916 | +| Address State Warm (0.1M, Absent Target, Staticcall) | 100,000 | 223,239 | 9,089 | 9.09 | 2,408,676 | 2,402,408.8 | 2,400,356 | +| Blockhash (0.1M) | 100,000 | 223,239 | 12,856 | 12.86 | 8,371,964 | 8,332,715.4 | 8,306,000 | +| Extcodecopy Warm (0.1M, 1Kib) | 100,000 | 223,239 | 5,608 | 5.61 | 1,379,452 | 1,358,100 | 1,334,740 | +| Extcodecopy Warm (0.1M, 512) | 100,000 | 223,239 | 6,083 | 6.08 | 12,178,376 | 12,164,475 | 12,148,156 | +| Extcodecopy Warm (0.1M, 5Kib) | 100,000 | 223,239 | 6,422 | 6.42 | 11,036,416 | 11,029,054 | 11,023,788 | +| Selfbalance (0.1M) | 100,000 | 223,239 | 17,354 | 17.35 | 7,788,516 | 7,771,300.7 | 7,746,860 | +| Selfdestruct Created (0.1M, No Value) | 63,608 | 223,239 | 5,212 | 5.21 | 5,775,648 | 5,764,020 | 5,751,220 | +| Selfdestruct Created (0.1M, With Value) | 63,608 | 223,239 | 5,535 | 5.54 | 2,457,740 | 2,449,493 | 2,444,196 | +| Selfdestruct Existing (0.1M, No Value) | 95,531 | 223,239 | 5,766 | 5.77 | 5,523,912 | 5,516,349 | 5,523,912 | +| Selfdestruct Existing (0.1M, With Value) | 95,531 | 223,239 | 5,590 | 5.59 | 8,518,436 | 8,518,436 | 8,486,696 | +| Selfdestruct Initcode (0.1M, No Value) | 63,064 | 223,239 | 5,381 | 5.38 | 3,832,792 | 3,824,215 | 3,799,288 | +| Selfdestruct Initcode (0.1M, With Value) | 63,064 | 223,239 | 5,034 | 5.03 | 1,728,184 | 1,712,811.2 | 1,690,704 | +| Storage Access Cold (0.1M, Absent Slots False, Ssload) | 97,935 | 223,239 | 5,927 | 5.93 | 8,481,872 | 8,475,944 | 8,481,872 | +| Storage Access Cold (0.1M, Absent Slots False, Sstore New Value, Out Of Gas) | 100,000 | 223,239 | 5,509 | 5.51 | 5,289,228 | 5,285,608 | 5,280,416 | +| Storage Access Cold (0.1M, Absent Slots False, Sstore New Value, Revert) | 96,624 | 223,239 | 6,256 | 6.26 | 9,469,360 | 9,461,264 | 9,458,364 | +| Storage Access Cold (0.1M, Absent Slots False, Sstore New Value) | 96,618 | 223,239 | 5,023 | 5.02 | 11,651,460 | 11,631,092 | 11,651,460 | +| Storage Access Cold (0.1M, Absent Slots False, Sstore Same Value, Out Of Gas) | 100,000 | 223,239 | 6,491 | 6.49 | 6,470,292 | 6,457,769.3 | 6,444,864 | +| Storage Access Cold (0.1M, Absent Slots False, Sstore Same Value, Revert) | 99,339 | 223,239 | 6,674 | 6.67 | 11,709,688 | 11,693,184 | 11,683,188 | +| Storage Access Cold (0.1M, Absent Slots False, Sstore Same Value) | 99,333 | 223,239 | 7,195 | 7.20 | 6,687,976 | 6,684,276 | 6,677,312 | +| Storage Access Cold (0.1M, Absent Slots True, Ssload) | 97,935 | 223,239 | 5,176 | 5.18 | 4,595,912 | 4,590,112 | 4,576,364 | +| Storage Access Cold (0.1M, Absent Slots True, Sstore New Value, Out Of Gas) | 100,000 | 223,239 | 4,997 | 5.00 | 5,387,220 | 5,371,100 | 5,387,220 | +| Storage Access Cold (0.1M, Absent Slots True, Sstore New Value, Revert) | 87,432 | 223,239 | 5,608 | 5.61 | 14,191,644 | 14,150,121 | 14,125,020 | +| Storage Access Cold (0.1M, Absent Slots True, Sstore New Value) | 87,426 | 223,239 | 5,800 | 5.80 | 2,440,356 | 2,440,356 | 2,417,652 | +| Storage Access Cold (0.1M, Absent Slots True, Sstore Same Value, Out Of Gas) | 100,000 | 223,239 | 5,477 | 5.48 | 6,840,840 | 6,840,840 | 6,832,464 | +| Storage Access Cold (0.1M, Absent Slots True, Sstore Same Value, Revert) | 87,423 | 223,239 | 5,171 | 5.17 | 483,460 | 472,540.3 | 463,444 | +| Storage Access Cold (0.1M, Absent Slots True, Sstore Same Value) | 87,417 | 223,239 | 5,529 | 5.53 | 11,066,492 | 11,064,179 | 11,044,800 | +| Storage Access Warm (0.1M, Sload) | 100,000 | 223,239 | 5,939 | 5.94 | 11,093,892 | 11,093,892 | 11,070,716 | +| Storage Access Warm (0.1M, Sstore New Value) | 100,000 | 223,239 | 9,763 | 9.76 | 5,085,736 | 5,079,548 | 5,073,888 | +| Storage Access Warm (0.1M, Sstore Same Value) | 100,000 | 223,239 | 7,634 | 7.63 | 2,164,428 | 2,159,051.2 | 2,145,704 | + +## Summary Statistics + +- **Total Tests:** 498 +- **Successful Tests:** 498 +- **Failed Tests:** 0 + +### Proving Time (ms) +- **Average:** 12,664.6 +- **Minimum:** 4,971 +- **Maximum:** 93,423 + +### Peak Memory Usage (MB) +- **Average:** 7,748,009.2 +- **Minimum:** 268,748 +- **Maximum:** 14,280,172 + +### Proof Size (bytes) +- **Average:** 223,239.1 +- **Minimum:** 223,239 +- **Maximum:** 223,290 diff --git a/www/docs/pages/benchmark-results/gas-categorized/0.1m/sp1-0.1M-4.md b/www/docs/pages/benchmark-results/gas-categorized/0.1m/sp1-0.1M-4.md new file mode 100644 index 00000000..c3ace35f --- /dev/null +++ b/www/docs/pages/benchmark-results/gas-categorized/0.1m/sp1-0.1M-4.md @@ -0,0 +1,533 @@ +# zkEVM Benchmark Results + +Generated on: 2026-01-01 15:22:14 + +## Folder: zkevm-metrics-sp1-0.1M-4 + +**zkVM:** sp1-cluster-v5.2.3 (4 GPUs) + +**Hardware Configuration:** CPU: AMD EPYC 7B13 64-Core Processor | RAM: 396 GiB | GPU: NVIDIA GeForce RTX 4090, NVIDIA GeForce RTX 4090, NVIDIA GeForce RTX 4090, NVIDIA GeForce RTX 4090 + +## Proving Metrics + +| Benchmark | Gas Used | Proof Size (bytes) | Proving Time (ms) | Proving Time (s) | Peak Memory (MB) | Avg Memory (MB) | Initial Memory (MB) | +|---|---|---|---|---|---|---|---| +| Block Full Access List And Data (0.1M) | 99,990 | 1,477,226 | 6,066 | 6.07 | 11,526,732 | 11,525,674 | 11,523,832 | +| Block Full Data (0.1M, Non Zero Byte) | 100,000 | 1,477,226 | 6,065 | 6.07 | 10,595,052 | 10,585,408 | 10,569,648 | +| Block Full Data (0.1M, Zero Byte) | 100,000 | 1,477,226 | 5,546 | 5.55 | 3,210,164 | 3,204,306.7 | 3,196,916 | +| Block Full Of Ether Transfers (0.1M, A To A) | 84,000 | 1,477,226 | 6,555 | 6.55 | 11,211,044 | 11,202,393.6 | 11,194,284 | +| Block Full Of Ether Transfers (0.1M, A To B) | 84,000 | 1,477,226 | 6,050 | 6.05 | 3,940,972 | 3,930,198.4 | 3,923,128 | +| Block Full Of Ether Transfers (0.1M, A To Diff Acc) | 84,000 | 1,477,226 | 6,061 | 6.06 | 9,050,904 | 9,043,965 | 9,046,800 | +| Block Full Of Ether Transfers (0.1M, Diff Acc To B) | 84,000 | 1,477,226 | 6,569 | 6.57 | 8,315,072 | 8,309,304 | 8,280,216 | +| Block Full Of Ether Transfers (0.1M, Diff Acc To Diff Acc) | 84,000 | 1,477,226 | 6,054 | 6.05 | 9,669,860 | 9,656,736.7 | 9,650,808 | +| Bytecode Single Opcode (0.1M, Callcode) | 100,000 | 1,477,226 | 9,100 | 9.10 | 8,385,660 | 8,378,299 | 8,370,896 | +| Bytecode Single Opcode (0.1M, Call) | 100,000 | 1,477,226 | 7,583 | 7.58 | 7,826,112 | 7,809,454.4 | 7,803,084 | +| Bytecode Single Opcode (0.1M, Delegatecall) | 100,000 | 1,477,226 | 7,568 | 7.57 | 10,395,756 | 10,389,248 | 10,380,776 | +| Bytecode Single Opcode (0.1M, Extcodecopy) | 100,000 | 1,477,226 | 8,574 | 8.57 | 5,597,764 | 5,591,378.9 | 5,580,944 | +| Bytecode Single Opcode (0.1M, Extcodehash) | 100,000 | 1,477,226 | 8,591 | 8.59 | 7,118,764 | 7,118,764 | 7,111,048 | +| Bytecode Single Opcode (0.1M, Extcodesize) | 100,000 | 1,477,226 | 8,068 | 8.07 | 8,144,700 | 8,131,870.7 | 8,117,764 | +| Bytecode Single Opcode (0.1M, Staticcall) | 100,000 | 1,477,226 | 8,076 | 8.08 | 6,315,700 | 6,310,784.8 | 6,287,280 | +| Create (0.1M, 0Bytes, Create2) | 100,000 | 1,477,226 | 6,071 | 6.07 | 4,880,680 | 4,874,698 | 4,866,780 | +| Create (0.1M, 0Bytes, Create) | 100,000 | 1,477,226 | 6,561 | 6.56 | 8,539,744 | 8,532,918.7 | 8,523,300 | +| Create (0.1M, 0Bytes, Create2) | 100,000 | 1,477,226 | 6,056 | 6.06 | 4,214,596 | 4,212,314.7 | 4,206,172 | +| Create (0.1M, 0Bytes, Create) | 100,000 | 1,477,226 | 6,055 | 6.05 | 8,535,728 | 8,529,248 | 8,528,384 | +| Create (0.1M, 0.25X Max Code, Zero Data, Create2) | 100,000 | 1,477,226 | 6,062 | 6.06 | 6,208,516 | 6,196,180 | 6,208,516 | +| Create (0.1M, 0.25X Max Code, Zero Data, Create) | 100,000 | 1,477,226 | 6,085 | 6.08 | 4,371,976 | 4,363,698.7 | 4,350,972 | +| Create (0.1M, 0.25X Max Code, Create2) | 100,000 | 1,477,226 | 5,556 | 5.56 | 11,113,160 | 11,113,160 | 11,073,144 | +| Create (0.1M, 0.25X Max Code, Create) | 100,000 | 1,477,226 | 6,559 | 6.56 | 4,925,688 | 4,924,616 | 4,925,688 | +| Create (0.1M, 0.50X Max Code Size With Non, Zero Data, Create2) | 100,000 | 1,477,226 | 6,083 | 6.08 | 7,920,092 | 7,908,218 | 7,879,620 | +| Create (0.1M, 0.50X Max Code Size With Non, Zero Data, Create) | 100,000 | 1,477,226 | 6,565 | 6.57 | 2,128,772 | 2,118,485 | 2,099,564 | +| Create (0.1M, 0.50X Max Code Size With Zero Data, Create2) | 100,000 | 1,477,226 | 6,051 | 6.05 | 6,569,508 | 6,544,379.3 | 6,524,404 | +| Create (0.1M, 0.50X Max Code Size With Zero Data, Create) | 100,000 | 1,477,226 | 6,595 | 6.59 | 8,654,248 | 8,647,872 | 8,654,248 | +| Create (0.1M, 0.75X Max Code Size With Non, Zero Data, Create2) | 100,000 | 1,477,226 | 6,056 | 6.06 | 1,308,980 | 1,295,227.3 | 1,276,056 | +| Create (0.1M, 0.75X Max Code Size With Non, Zero Data, Create) | 100,000 | 1,477,226 | 6,552 | 6.55 | 8,542,200 | 8,542,200 | 8,536,788 | +| Create (0.1M, 0.75X Max Code Size With Zero Data, Create2) | 100,000 | 1,477,226 | 6,055 | 6.05 | 8,492,628 | 8,486,072 | 8,492,628 | +| Create (0.1M, 0.75X Max Code Size With Zero Data, Create) | 100,000 | 1,477,226 | 6,582 | 6.58 | 10,068,980 | 10,057,447.2 | 10,029,328 | +| Create (0.1M, Max Code, Zero Data, Create2) | 100,000 | 1,477,226 | 6,567 | 6.57 | 8,534,064 | 8,521,669.3 | 8,534,064 | +| Create (0.1M, Max Code, Zero Data, Create) | 100,000 | 1,477,226 | 6,060 | 6.06 | 6,316,772 | 6,316,772 | 6,303,728 | +| Create (0.1M, Max Code, Create2) | 100,000 | 1,477,226 | 6,583 | 6.58 | 8,554,248 | 8,547,605 | 8,544,264 | +| Create (0.1M, Max Code, Create) | 100,000 | 1,477,226 | 6,567 | 6.57 | 7,102,436 | 7,092,849 | 7,073,164 | +| Creates Collisions (0.1M, Create2) | 100,000 | 1,477,226 | 6,056 | 6.06 | 4,713,840 | 4,692,588 | 4,676,368 | +| Creates Collisions (0.1M, Create) | 100,000 | 1,477,226 | 6,067 | 6.07 | 8,665,432 | 8,657,348 | 8,657,196 | +| Initcode Jumpdest Analysis (0.1M, 00) | 100,000 | 1,477,226 | 6,562 | 6.56 | 10,723,248 | 10,722,680 | 10,715,696 | +| Initcode Jumpdest Analysis (0.1M, 5B) | 100,000 | 1,477,226 | 6,550 | 6.55 | 6,001,216 | 6,000,534 | 5,923,288 | +| Initcode Jumpdest Analysis (0.1M, 605B5B) | 100,000 | 1,477,226 | 6,071 | 6.07 | 8,776,604 | 8,768,134 | 8,757,896 | +| Initcode Jumpdest Analysis (0.1M, 605B) | 100,000 | 1,477,226 | 6,058 | 6.06 | 3,503,088 | 3,494,541.6 | 3,481,924 | +| Initcode Jumpdest Analysis (0.1M, 615B5B5B) | 100,000 | 1,477,226 | 6,580 | 6.58 | 8,655,060 | 8,649,009.6 | 8,640,000 | +| Initcode Jumpdest Analysis (0.1M, 615B5B) | 100,000 | 1,477,226 | 6,056 | 6.06 | 6,286,124 | 6,274,960 | 6,249,180 | +| Amortized Bn128 Pairings (0.1M) | 100,000 | 1,477,226 | 6,557 | 6.56 | 4,055,300 | 4,043,273 | 4,030,196 | +| Empty Block (0.1M) | 0 | 1,477,226 | 4,553 | 4.55 | 6,980,628 | 6,974,220 | 6,962,140 | +| Binop Simple (0.1M, Add) | 100,000 | 1,477,226 | 6,082 | 6.08 | 3,293,836 | 3,293,836 | 3,280,948 | +| Binop Simple (0.1M, And) | 100,000 | 1,477,226 | 6,556 | 6.56 | 4,645,648 | 4,636,039 | 4,634,820 | +| Binop Simple (0.1M, Byte) | 100,000 | 1,477,226 | 6,056 | 6.06 | 2,844,684 | 2,835,583.3 | 2,820,220 | +| Binop Simple (0.1M, Div, 0) | 100,000 | 1,477,226 | 7,565 | 7.57 | 8,579,432 | 8,568,334 | 8,556,536 | +| Binop Simple (0.1M, Div, 1) | 100,000 | 1,477,226 | 7,592 | 7.59 | 4,586,552 | 4,583,365 | 4,576,504 | +| Binop Simple (0.1M, Eq) | 100,000 | 1,477,226 | 7,067 | 7.07 | 8,205,456 | 8,191,018 | 8,170,724 | +| Binop Simple (0.1M, Exp) | 100,000 | 1,477,226 | 7,061 | 7.06 | 8,488,068 | 8,474,242 | 8,464,684 | +| Binop Simple (0.1M, Gt) | 100,000 | 1,477,226 | 7,121 | 7.12 | 9,500,392 | 9,495,318 | 9,487,528 | +| Binop Simple (0.1M, Lt) | 100,000 | 1,477,226 | 6,569 | 6.57 | 5,412,432 | 5,392,387.2 | 5,373,132 | +| Binop Simple (0.1M, Mod) | 100,000 | 1,477,226 | 6,557 | 6.56 | 8,527,976 | 8,519,884 | 8,517,580 | +| Binop Simple (0.1M, Mul) | 100,000 | 1,477,226 | 7,080 | 7.08 | 8,994,472 | 8,994,384 | 8,983,536 | +| Binop Simple (0.1M, Or) | 100,000 | 1,477,226 | 6,060 | 6.06 | 2,560,440 | 2,548,823.3 | 2,529,604 | +| Binop Simple (0.1M, Sar) | 100,000 | 1,477,226 | 6,564 | 6.56 | 3,730,740 | 3,717,989.6 | 3,707,200 | +| Binop Simple (0.1M, Sdiv, 0) | 100,000 | 1,477,226 | 8,073 | 8.07 | 9,283,808 | 9,265,441 | 9,239,056 | +| Binop Simple (0.1M, Sdiv, 1) | 100,000 | 1,477,226 | 7,571 | 7.57 | 11,395,916 | 11,380,588 | 11,363,748 | +| Binop Simple (0.1M, Sgt) | 100,000 | 1,477,226 | 7,060 | 7.06 | 5,119,300 | 5,115,805.1 | 5,107,712 | +| Binop Simple (0.1M, Shl) | 100,000 | 1,477,226 | 7,079 | 7.08 | 8,385,668 | 8,385,668 | 8,378,836 | +| Binop Simple (0.1M, Shr) | 100,000 | 1,477,226 | 7,061 | 7.06 | 7,072,924 | 7,058,674 | 7,045,064 | +| Binop Simple (0.1M, Signextend) | 100,000 | 1,477,226 | 7,075 | 7.08 | 7,604,604 | 7,594,226.7 | 7,572,644 | +| Binop Simple (0.1M, Slt) | 100,000 | 1,477,226 | 6,562 | 6.56 | 8,484,892 | 8,484,386.7 | 8,483,264 | +| Binop Simple (0.1M, Smod) | 100,000 | 1,477,226 | 7,066 | 7.07 | 8,431,876 | 8,423,948 | 8,403,360 | +| Binop Simple (0.1M, Sub) | 100,000 | 1,477,226 | 7,070 | 7.07 | 8,406,340 | 8,406,340 | 8,311,508 | +| Binop Simple (0.1M, Xor) | 100,000 | 1,477,226 | 6,556 | 6.56 | 2,444,332 | 2,444,332 | 2,422,892 | +| Blobhash (0.1M, No Blobs) | 100,000 | 1,477,226 | 6,061 | 6.06 | 8,289,072 | 8,285,080 | 8,283,868 | +| Blobhash (0.1M, One Blob And Accessed) | 100,000 | 1,477,226 | 6,071 | 6.07 | 1,041,524 | 1,022,840.6 | 998,784 | +| Blobhash (0.1M, One Blob But Access Non, Existent Index) | 100,000 | 1,477,226 | 6,067 | 6.07 | 10,187,776 | 10,173,606 | 10,187,776 | +| Blobhash (0.1M, Six Blobs, Access Latest) | 100,000 | 1,477,226 | 6,630 | 6.63 | 8,471,100 | 8,460,070.7 | 8,452,696 | +| Calldataload (0.1M, Empty) | 100,000 | 1,477,226 | 7,091 | 7.09 | 4,763,500 | 4,739,298.4 | 4,709,308 | +| Calldataload (0.1M, One, Loop) | 100,000 | 1,477,226 | 7,573 | 7.57 | 3,257,724 | 3,251,876 | 3,240,472 | +| Calldataload (0.1M, Zero, Loop) | 100,000 | 1,477,226 | 7,081 | 7.08 | 9,929,104 | 9,923,173 | 9,904,912 | +| Calldatasize (0.1M, Calldata Length 0) | 100,000 | 1,477,226 | 6,076 | 6.08 | 3,219,708 | 3,219,708 | 3,205,256 | +| Calldatasize (0.1M, Calldata Length 1000) | 100,000 | 1,477,226 | 6,056 | 6.06 | 4,198,372 | 4,195,226.7 | 4,191,564 | +| Callvalue (0.1M, From Origin False, Non Zero Value False) | 100,000 | 1,477,226 | 6,566 | 6.57 | 962,592 | 953,042.3 | 944,312 | +| Callvalue (0.1M, From Origin False, Non Zero Value True) | 100,000 | 1,477,226 | 6,067 | 6.07 | 3,066,044 | 3,053,464 | 3,027,416 | +| Callvalue (0.1M, From Origin True, Non Zero Value False) | 100,000 | 1,477,226 | 6,588 | 6.59 | 3,041,352 | 3,040,394 | 3,033,712 | +| Callvalue (0.1M, From Origin True, Non Zero Value True) | 100,000 | 1,477,226 | 7,593 | 7.59 | 3,664,736 | 3,657,867.3 | 3,650,560 | +| Dup (0.1M, Dup10) | 100,000 | 1,477,226 | 6,571 | 6.57 | 6,258,420 | 6,239,642.7 | 6,228,804 | +| Dup (0.1M, Dup11) | 100,000 | 1,477,226 | 7,080 | 7.08 | 7,853,216 | 7,852,012 | 7,846,256 | +| Dup (0.1M, Dup12) | 100,000 | 1,477,226 | 6,077 | 6.08 | 10,002,896 | 9,988,479 | 9,971,500 | +| Dup (0.1M, Dup13) | 100,000 | 1,477,226 | 6,576 | 6.58 | 1,134,480 | 1,119,518 | 1,078,628 | +| Dup (0.1M, Dup14) | 100,000 | 1,477,226 | 6,567 | 6.57 | 671,964 | 652,754 | 629,460 | +| Dup (0.1M, Dup15) | 100,000 | 1,477,226 | 6,561 | 6.56 | 9,816,760 | 9,808,753 | 9,765,944 | +| Dup (0.1M, Dup16) | 100,000 | 1,477,226 | 6,557 | 6.56 | 378,436 | 344,893.4 | 267,880 | +| Dup (0.1M, Dup1) | 100,000 | 1,477,226 | 6,054 | 6.05 | 6,996,876 | 6,992,228 | 6,981,648 | +| Dup (0.1M, Dup2) | 100,000 | 1,477,226 | 6,566 | 6.57 | 2,067,112 | 2,059,160.7 | 2,041,992 | +| Dup (0.1M, Dup3) | 100,000 | 1,477,226 | 6,047 | 6.05 | 9,942,776 | 9,920,405.3 | 9,933,728 | +| Dup (0.1M, Dup4) | 100,000 | 1,477,226 | 7,092 | 7.09 | 11,360,964 | 11,321,548 | 11,283,576 | +| Dup (0.1M, Dup5) | 100,000 | 1,477,226 | 6,562 | 6.56 | 4,080,268 | 4,073,921.6 | 4,063,176 | +| Dup (0.1M, Dup6) | 100,000 | 1,477,226 | 6,564 | 6.56 | 441,844 | 421,267.2 | 386,684 | +| Dup (0.1M, Dup7) | 100,000 | 1,477,226 | 6,568 | 6.57 | 5,335,356 | 5,326,178.4 | 5,312,200 | +| Dup (0.1M, Dup8) | 100,000 | 1,477,226 | 6,580 | 6.58 | 3,161,972 | 3,151,103.3 | 3,140,664 | +| Dup (0.1M, Dup9) | 100,000 | 1,477,226 | 6,582 | 6.58 | 8,469,052 | 8,460,585.3 | 8,458,464 | +| Jumpdests (0.1M) | 100,000 | 1,477,226 | 7,074 | 7.07 | 8,064,676 | 8,057,938.4 | 8,044,100 | +| Jumpi Fallthrough (0.1M) | 100,000 | 1,477,226 | 6,060 | 6.06 | 9,628,056 | 9,616,440 | 9,597,496 | +| Jumpis (0.1M) | 100,000 | 1,477,226 | 6,562 | 6.56 | 2,178,620 | 2,162,944 | 2,153,840 | +| Jumps (0.1M) | 100,000 | 1,477,226 | 6,052 | 6.05 | 4,472,084 | 4,462,136.8 | 4,449,364 | +| Keccak (0.1M) | 100,000 | 1,477,226 | 7,063 | 7.06 | 9,705,868 | 9,701,524 | 9,688,876 | +| Memory Access (0.1M, Small Mem, Uninit Offset, Off 0, Mload) | 100,000 | 1,477,226 | 6,061 | 6.06 | 9,690,916 | 9,680,018 | 9,671,068 | +| Memory Access (0.1M, Small Mem, Uninit Offset, Off 0, Mstore8) | 100,000 | 1,477,226 | 6,552 | 6.55 | 2,365,000 | 2,361,620.8 | 2,341,316 | +| Memory Access (0.1M, Small Mem, Uninit Offset, Off 0, Mstore) | 100,000 | 1,477,226 | 6,584 | 6.58 | 5,153,652 | 5,137,596 | 5,153,652 | +| Memory Access (0.1M, Small Mem, Uninit Offset, Off 1, Mload) | 100,000 | 1,477,226 | 6,057 | 6.06 | 8,492,936 | 8,482,126.3 | 8,478,980 | +| Memory Access (0.1M, Small Mem, Uninit Offset, Off 1, Mstore8) | 100,000 | 1,477,226 | 6,596 | 6.60 | 10,637,492 | 10,610,773 | 10,597,828 | +| Memory Access (0.1M, Small Mem, Uninit Offset, Off 1, Mstore) | 100,000 | 1,477,226 | 6,057 | 6.06 | 10,781,652 | 10,775,898 | 10,768,368 | +| Memory Access (0.1M, Small Mem, Uninit Offset, Off 31, Mload) | 100,000 | 1,477,226 | 6,548 | 6.55 | 7,720,456 | 7,716,042.4 | 7,710,316 | +| Memory Access (0.1M, Small Mem, Uninit Offset, Off 31, Mstore8) | 100,000 | 1,477,226 | 6,051 | 6.05 | 7,671,368 | 7,663,389.3 | 7,650,616 | +| Memory Access (0.1M, Small Mem, Uninit Offset, Off 31, Mstore) | 100,000 | 1,477,226 | 6,062 | 6.06 | 3,868,772 | 3,865,977.6 | 3,862,024 | +| Memory Access (0.1M, Small Mem, Init Offset, Off 0, Mload) | 100,000 | 1,477,226 | 7,073 | 7.07 | 9,228,212 | 9,218,479.2 | 9,203,080 | +| Memory Access (0.1M, Small Mem, Init Offset, Off 0, Mstore8) | 100,000 | 1,477,226 | 6,062 | 6.06 | 10,834,144 | 10,822,741 | 10,812,012 | +| Memory Access (0.1M, Small Mem, Init Offset, Off 0, Mstore) | 100,000 | 1,477,226 | 6,568 | 6.57 | 2,748,528 | 2,748,528 | 2,734,776 | +| Memory Access (0.1M, Small Mem, Init Offset, Off 1, Mload) | 100,000 | 1,477,226 | 6,558 | 6.56 | 9,303,540 | 9,303,396 | 9,303,540 | +| Memory Access (0.1M, Small Mem, Init Offset, Off 1, Mstore8) | 100,000 | 1,477,226 | 6,561 | 6.56 | 7,215,296 | 7,215,296 | 7,210,736 | +| Memory Access (0.1M, Small Mem, Init Offset, Off 1, Mstore) | 100,000 | 1,477,226 | 6,564 | 6.56 | 3,700,428 | 3,695,205.3 | 3,693,128 | +| Memory Access (0.1M, Small Mem, Init Offset, Off 31, Mload) | 100,000 | 1,477,226 | 6,570 | 6.57 | 10,599,248 | 10,596,706.7 | 10,589,448 | +| Memory Access (0.1M, Small Mem, Init Offset, Off 31, Mstore8) | 100,000 | 1,477,226 | 7,091 | 7.09 | 5,843,344 | 5,827,676.8 | 5,804,960 | +| Memory Access (0.1M, Small Mem, Init Offset, Off 31, Mstore) | 100,000 | 1,477,226 | 6,564 | 6.56 | 5,631,616 | 5,626,169 | 5,592,668 | +| Memory Access (0.1M, Big Mem, Uninit Offset, Off 0, Mload) | 100,000 | 1,477,226 | 7,069 | 7.07 | 7,524,568 | 7,493,879 | 7,452,104 | +| Memory Access (0.1M, Big Mem, Uninit Offset, Off 0, Mstore8) | 100,000 | 1,477,226 | 6,079 | 6.08 | 9,965,848 | 9,965,848 | 9,938,244 | +| Memory Access (0.1M, Big Mem, Uninit Offset, Off 0, Mstore) | 100,000 | 1,477,226 | 6,572 | 6.57 | 6,480,376 | 6,480,376 | 6,432,680 | +| Memory Access (0.1M, Big Mem, Uninit Offset, Off 1, Mload) | 100,000 | 1,477,226 | 6,068 | 6.07 | 9,237,784 | 9,230,265.3 | 9,224,476 | +| Memory Access (0.1M, Big Mem, Uninit Offset, Off 1, Mstore8) | 100,000 | 1,477,226 | 7,059 | 7.06 | 4,822,004 | 4,809,365.3 | 4,798,572 | +| Memory Access (0.1M, Big Mem, Uninit Offset, Off 1, Mstore) | 100,000 | 1,477,226 | 6,568 | 6.57 | 5,132,320 | 5,128,462.4 | 5,129,044 | +| Memory Access (0.1M, Big Mem, Uninit Offset, Off 31, Mload) | 100,000 | 1,477,226 | 7,060 | 7.06 | 6,235,568 | 6,213,269.3 | 6,183,592 | +| Memory Access (0.1M, Big Mem, Uninit Offset, Off 31, Mstore8) | 100,000 | 1,477,226 | 7,070 | 7.07 | 3,228,340 | 3,225,848 | 3,219,168 | +| Memory Access (0.1M, Big Mem, Uninit Offset, Off 31, Mstore) | 100,000 | 1,477,226 | 7,075 | 7.08 | 10,709,796 | 10,659,249.6 | 10,622,608 | +| Memory Access (0.1M, Big Mem, Init Offset, Off 0, Mload) | 100,000 | 1,477,226 | 6,071 | 6.07 | 8,085,644 | 8,076,257 | 8,066,464 | +| Memory Access (0.1M, Big Mem, Init Offset, Off 0, Mstore8) | 100,000 | 1,477,226 | 6,043 | 6.04 | 8,548,536 | 8,544,489.3 | 8,540,372 | +| Memory Access (0.1M, Big Mem, Init Offset, Off 0, Mstore) | 100,000 | 1,477,226 | 6,550 | 6.55 | 6,621,292 | 6,618,201.3 | 6,596,736 | +| Memory Access (0.1M, Big Mem, Init Offset, Off 1, Mload) | 100,000 | 1,477,226 | 7,068 | 7.07 | 4,472,812 | 4,472,812 | 4,454,508 | +| Memory Access (0.1M, Big Mem, Init Offset, Off 1, Mstore8) | 100,000 | 1,477,226 | 6,568 | 6.57 | 5,523,064 | 5,518,258 | 5,513,388 | +| Memory Access (0.1M, Big Mem, Init Offset, Off 1, Mstore) | 100,000 | 1,477,226 | 6,568 | 6.57 | 10,265,408 | 10,251,060 | 10,188,272 | +| Memory Access (0.1M, Big Mem, Init Offset, Off 31, Mload) | 100,000 | 1,477,226 | 6,070 | 6.07 | 8,560,176 | 8,553,236 | 8,543,764 | +| Memory Access (0.1M, Big Mem, Init Offset, Off 31, Mstore8) | 100,000 | 1,477,226 | 6,538 | 6.54 | 2,761,284 | 2,761,284 | 2,755,548 | +| Memory Access (0.1M, Big Mem, Init Offset, Off 31, Mstore) | 100,000 | 1,477,226 | 6,568 | 6.57 | 1,434,400 | 1,425,326.4 | 1,407,044 | +| Mod (0.1M, Op Mod, Mod Bits 127) | 100,000 | 1,477,226 | 7,581 | 7.58 | 4,514,764 | 4,504,230.3 | 4,497,332 | +| Mod (0.1M, Op Mod, Mod Bits 191) | 100,000 | 1,477,226 | 7,566 | 7.57 | 9,588,016 | 9,583,370 | 9,573,548 | +| Mod (0.1M, Op Mod, Mod Bits 255) | 100,000 | 1,477,226 | 7,571 | 7.57 | 8,579,092 | 8,573,608.6 | 8,571,676 | +| Mod (0.1M, Op Mod, Mod Bits 63) | 100,000 | 1,477,226 | 7,084 | 7.08 | 11,526,076 | 11,523,086 | 11,521,500 | +| Mod (0.1M, Op Smod, Mod Bits 127) | 100,000 | 1,477,226 | 7,572 | 7.57 | 5,115,400 | 5,101,772 | 5,092,076 | +| Mod (0.1M, Op Smod, Mod Bits 191) | 100,000 | 1,477,226 | 7,577 | 7.58 | 4,926,016 | 4,912,433.6 | 4,890,612 | +| Mod (0.1M, Op Smod, Mod Bits 255) | 100,000 | 1,477,226 | 8,068 | 8.07 | 4,401,204 | 4,386,028 | 4,370,160 | +| Mod (0.1M, Op Smod, Mod Bits 63) | 100,000 | 1,477,226 | 7,552 | 7.55 | 5,236,016 | 5,223,210 | 5,210,052 | +| Modarith (0.1M, Op Addmod, Mod Bits 127) | 100,000 | 1,477,226 | 6,078 | 6.08 | 4,520,428 | 4,508,659 | 4,499,768 | +| Modarith (0.1M, Op Addmod, Mod Bits 191) | 100,000 | 1,477,226 | 7,573 | 7.57 | 7,924,000 | 7,917,110.7 | 7,919,844 | +| Modarith (0.1M, Op Addmod, Mod Bits 255) | 100,000 | 1,477,226 | 7,063 | 7.06 | 8,653,132 | 8,637,935.2 | 8,625,652 | +| Modarith (0.1M, Op Addmod, Mod Bits 63) | 100,000 | 1,477,226 | 7,067 | 7.07 | 8,525,332 | 8,511,516 | 8,525,332 | +| Modarith (0.1M, Op Mulmod, Mod Bits 127) | 100,000 | 1,477,226 | 8,579 | 8.58 | 7,664,160 | 7,657,204 | 7,604,340 | +| Modarith (0.1M, Op Mulmod, Mod Bits 191) | 100,000 | 1,477,226 | 10,094 | 10.09 | 8,537,408 | 8,518,583 | 8,501,980 | +| Modarith (0.1M, Op Mulmod, Mod Bits 255) | 100,000 | 1,477,226 | 9,103 | 9.10 | 9,888,536 | 9,882,694.7 | 9,842,392 | +| Modarith (0.1M, Op Mulmod, Mod Bits 63) | 100,000 | 1,477,226 | 8,087 | 8.09 | 3,309,484 | 3,307,510 | 3,287,660 | +| Modexp (0.1M, Mod 1045 Gas Base Heavy) | 100,000 | 1,477,226 | 32,340 | 32.34 | 749,768 | 717,315.1 | 674,008 | +| Modexp (0.1M, Mod 1360 Gas Balanced) | 100,000 | 1,477,226 | 14,169 | 14.17 | 7,341,224 | 7,320,795 | 7,291,100 | +| Modexp (0.1M, Mod 400 Gas Exp Heavy) | 100,000 | 1,477,226 | 15,693 | 15.69 | 8,574,824 | 8,565,005.6 | 8,563,520 | +| Modexp (0.1M, Mod 408 Gas Balanced) | 100,000 | 1,477,226 | 13,119 | 13.12 | 10,515,512 | 10,505,536 | 10,496,180 | +| Modexp (0.1M, Mod 408 Gas Base Heavy) | 100,000 | 1,477,226 | 31,782 | 31.78 | 5,091,860 | 5,066,094 | 5,031,252 | +| Modexp (0.1M, Mod 600 As Balanced) | 100,000 | 1,477,226 | 13,640 | 13.64 | 8,478,272 | 8,467,762 | 8,456,740 | +| Modexp (0.1M, Mod 600 Gas Exp Heavy) | 100,000 | 1,477,226 | 16,174 | 16.17 | 2,963,388 | 2,958,235.3 | 2,905,928 | +| Modexp (0.1M, Mod 616 Gas Base Heavy) | 100,000 | 1,477,226 | 32,876 | 32.88 | 5,328,952 | 5,291,159.7 | 5,235,904 | +| Modexp (0.1M, Mod 677 Gas Base Heavy) | 100,000 | 1,477,226 | 14,641 | 14.64 | 10,571,772 | 10,552,422.7 | 10,531,136 | +| Modexp (0.1M, Mod 765 Gas Exp Heavy) | 100,000 | 1,477,226 | 14,644 | 14.64 | 3,359,372 | 3,350,181.5 | 3,336,840 | +| Modexp (0.1M, Mod 767 Gas Balanced) | 100,000 | 1,477,226 | 13,117 | 13.12 | 2,582,620 | 2,568,210.8 | 2,557,024 | +| Modexp (0.1M, Mod 800 Gas Base Heavy) | 100,000 | 1,477,226 | 33,803 | 33.80 | 2,637,096 | 2,637,096 | 2,576,216 | +| Modexp (0.1M, Mod 800 Gas Exp Heavy) | 100,000 | 1,477,226 | 17,164 | 17.16 | 906,680 | 871,148.8 | 819,464 | +| Modexp (0.1M, Mod 852 Gas Exp Heavy) | 100,000 | 1,477,226 | 16,140 | 16.14 | 9,313,624 | 9,311,953.3 | 9,296,852 | +| Modexp (0.1M, Mod 867 Gas Base Heavy) | 100,000 | 1,477,226 | 33,362 | 33.36 | 1,947,704 | 1,947,376 | 1,947,704 | +| Modexp (0.1M, Mod 996 Gas Balanced) | 100,000 | 1,477,226 | 12,632 | 12.63 | 11,161,088 | 11,139,681.3 | 11,121,576 | +| Modexp (0.1M, Mod Even 128B Exp 1024) | 100,000 | 1,477,226 | 6,047 | 6.05 | 8,465,072 | 8,462,131 | 8,452,628 | +| Modexp (0.1M, Mod Even 16B Exp 320) | 100,000 | 1,477,226 | 15,679 | 15.68 | 8,580,500 | 8,561,261.3 | 8,554,084 | +| Modexp (0.1M, Mod Even 24B Exp 168) | 100,000 | 1,477,226 | 15,175 | 15.18 | 10,626,676 | 10,611,218.7 | 10,600,500 | +| Modexp (0.1M, Mod Even 256B Exp 1024) | 100,000 | 1,477,226 | 6,071 | 6.07 | 8,796,616 | 8,793,274.4 | 8,776,640 | +| Modexp (0.1M, Mod Even 32B Exp 256) | 100,000 | 1,477,226 | 14,632 | 14.63 | 6,088,816 | 6,063,982.7 | 6,042,860 | +| Modexp (0.1M, Mod Even 32B Exp 40) | 100,000 | 1,477,226 | 13,125 | 13.12 | 8,877,196 | 8,866,332.8 | 8,846,604 | +| Modexp (0.1M, Mod Even 32B Exp 96) | 100,000 | 1,477,226 | 14,149 | 14.15 | 10,501,188 | 10,485,662 | 10,497,932 | +| Modexp (0.1M, Mod Even 512B Exp 1024) | 100,000 | 1,477,226 | 6,062 | 6.06 | 7,843,620 | 7,843,620 | 7,821,380 | +| Modexp (0.1M, Mod Even 64B Exp 512) | 100,000 | 1,477,226 | 12,104 | 12.10 | 9,014,452 | 9,007,665.6 | 8,995,792 | +| Modexp (0.1M, Mod Even 8B Exp 896) | 100,000 | 1,477,226 | 24,203 | 24.20 | 2,841,692 | 2,825,339.6 | 2,821,032 | +| Modexp (0.1M, Mod Exp 208 Gas Balanced) | 100,000 | 1,477,226 | 12,661 | 12.66 | 8,366,804 | 8,335,624 | 8,320,764 | +| Modexp (0.1M, Mod Exp 215 Gas Exp Heavy) | 100,000 | 1,477,226 | 22,226 | 22.23 | 2,681,284 | 2,649,960.6 | 2,618,812 | +| Modexp (0.1M, Mod Exp 298 Gas Exp Heavy) | 100,000 | 1,477,226 | 23,220 | 23.22 | 1,801,160 | 1,801,160 | 1,796,604 | +| Modexp (0.1M, Mod Min As Balanced) | 100,000 | 1,477,226 | 12,640 | 12.64 | 5,478,808 | 5,470,238.4 | 5,447,368 | +| Modexp (0.1M, Mod Min As Base Heavy) | 100,000 | 1,477,226 | 27,310 | 27.31 | 4,145,740 | 4,115,193.6 | 4,069,024 | +| Modexp (0.1M, Mod Min As Exp Heavy) | 100,000 | 1,477,226 | 21,215 | 21.21 | 4,588,212 | 4,571,442 | 4,545,212 | +| Modexp (0.1M, Mod Odd 128B Exp 1024) | 100,000 | 1,477,226 | 6,049 | 6.05 | 1,797,204 | 1,797,204 | 1,765,708 | +| Modexp (0.1M, Mod Odd 256B Exp 1024) | 100,000 | 1,477,226 | 6,069 | 6.07 | 8,378,756 | 8,374,801.6 | 8,369,236 | +| Modexp (0.1M, Mod Odd 32B Exp 256) | 100,000 | 1,477,226 | 14,150 | 14.15 | 836,156 | 823,609.5 | 786,448 | +| Modexp (0.1M, Mod Odd 32B Exp 96) | 100,000 | 1,477,226 | 14,152 | 14.15 | 8,870,400 | 8,865,581 | 8,858,676 | +| Modexp (0.1M, Mod Odd 32B Exp Cover Windows) | 100,000 | 1,477,226 | 11,641 | 11.64 | 5,824,756 | 5,804,346 | 5,774,456 | +| Modexp (0.1M, Mod Odd 512B Exp 1024) | 100,000 | 1,477,226 | 6,050 | 6.05 | 10,173,792 | 10,153,442.7 | 10,119,932 | +| Modexp (0.1M, Mod Odd 64B Exp 512) | 100,000 | 1,477,226 | 12,641 | 12.64 | 951,496 | 913,894.5 | 889,432 | +| Modexp (0.1M, Mod Pawel 2) | 100,000 | 1,477,226 | 16,664 | 16.66 | 5,712,060 | 5,689,640 | 5,649,492 | +| Modexp (0.1M, Mod Pawel 3) | 100,000 | 1,477,226 | 14,181 | 14.18 | 8,529,528 | 8,519,266.7 | 8,513,676 | +| Modexp (0.1M, Mod Pawel 4) | 100,000 | 1,477,226 | 13,136 | 13.14 | 9,547,132 | 9,547,132 | 9,515,492 | +| Modexp (0.1M, Mod Vul Common 1152N1) | 100,000 | 1,477,226 | 10,107 | 10.11 | 4,310,056 | 4,295,450.2 | 4,280,316 | +| Modexp (0.1M, Mod Vul Common 1349N1) | 100,000 | 1,477,226 | 12,117 | 12.12 | 8,289,984 | 8,284,938 | 8,266,560 | +| Modexp (0.1M, Mod Vul Common 1360N1) | 100,000 | 1,477,226 | 12,627 | 12.63 | 9,107,208 | 9,073,926.5 | 9,046,736 | +| Modexp (0.1M, Mod Vul Common 1360N2) | 100,000 | 1,477,226 | 12,102 | 12.10 | 6,810,268 | 6,802,985.7 | 6,800,564 | +| Modexp (0.1M, Mod Vul Common 200N1) | 100,000 | 1,477,226 | 8,584 | 8.58 | 3,664,104 | 3,656,472 | 3,625,908 | +| Modexp (0.1M, Mod Vul Common 200N2) | 100,000 | 1,477,226 | 10,624 | 10.62 | 2,541,280 | 2,541,280 | 2,534,220 | +| Modexp (0.1M, Mod Vul Common 200N3) | 100,000 | 1,477,226 | 10,126 | 10.13 | 8,479,500 | 8,476,140 | 8,479,500 | +| Modexp (0.1M, Mod Vul Example 1) | 100,000 | 1,477,226 | 15,151 | 15.15 | 8,640,820 | 8,635,508 | 8,627,524 | +| Modexp (0.1M, Mod Vul Example 2) | 100,000 | 1,477,226 | 15,167 | 15.17 | 8,050,792 | 8,023,811.3 | 7,987,816 | +| Modexp (0.1M, Mod Vul Guido 1 Even) | 100,000 | 1,477,226 | 12,109 | 12.11 | 2,711,848 | 2,691,050.3 | 2,675,232 | +| Modexp (0.1M, Mod Vul Guido 2 Even) | 100,000 | 1,477,226 | 14,660 | 14.66 | 6,208,572 | 6,179,251.4 | 6,152,476 | +| Modexp (0.1M, Mod Vul Guido 3 Even) | 100,000 | 1,477,226 | 20,221 | 20.22 | 9,775,892 | 9,754,140.4 | 9,734,952 | +| Modexp (0.1M, Mod Vul Marius 1 Even) | 100,000 | 1,477,226 | 13,648 | 13.65 | 11,224,692 | 11,210,564 | 11,185,260 | +| Modexp (0.1M, Mod Vul Nagydani 1 Pow 0X10001) | 100,000 | 1,477,226 | 11,648 | 11.65 | 7,977,156 | 7,968,866 | 7,928,372 | +| Modexp (0.1M, Mod Vul Nagydani 1 Qube) | 100,000 | 1,477,226 | 10,103 | 10.10 | 9,824,624 | 9,822,236.8 | 9,810,092 | +| Modexp (0.1M, Mod Vul Nagydani 1 Square) | 100,000 | 1,477,226 | 10,111 | 10.11 | 601,864 | 587,807.8 | 564,948 | +| Modexp (0.1M, Mod Vul Nagydani 2 Pow 0X10001) | 100,000 | 1,477,226 | 11,622 | 11.62 | 3,581,668 | 3,581,668 | 3,537,436 | +| Modexp (0.1M, Mod Vul Nagydani 2 Qube) | 100,000 | 1,477,226 | 18,185 | 18.18 | 8,555,284 | 8,545,324.3 | 8,528,808 | +| Modexp (0.1M, Mod Vul Nagydani 2 Square) | 100,000 | 1,477,226 | 16,672 | 16.67 | 8,600,392 | 8,586,303.4 | 8,564,816 | +| Modexp (0.1M, Mod Vul Nagydani 3 Pow 0X10001) | 100,000 | 1,477,226 | 11,603 | 11.60 | 9,334,296 | 9,330,868 | 9,334,296 | +| Modexp (0.1M, Mod Vul Nagydani 3 Qube) | 100,000 | 1,477,226 | 33,859 | 33.86 | 10,339,512 | 10,323,869.5 | 10,257,980 | +| Modexp (0.1M, Mod Vul Nagydani 3 Square) | 100,000 | 1,477,226 | 31,318 | 31.32 | 7,081,864 | 7,048,529.6 | 7,006,976 | +| Modexp (0.1M, Mod Vul Nagydani 4 Pow 0X10001) | 100,000 | 1,477,226 | 9,622 | 9.62 | 5,004,580 | 5,004,172 | 5,004,580 | +| Modexp (0.1M, Mod Vul Nagydani 4 Qube) | 100,000 | 1,477,226 | 36,355 | 36.35 | 2,534,504 | 2,499,510.5 | 2,449,412 | +| Modexp (0.1M, Mod Vul Nagydani 4 Square) | 100,000 | 1,477,226 | 32,328 | 32.33 | 3,856,192 | 3,830,329.8 | 3,771,124 | +| Modexp (0.1M, Mod Vul Pawel 1 Exp Heavy) | 100,000 | 1,477,226 | 22,202 | 22.20 | 6,656,760 | 6,656,760 | 6,559,208 | +| Modexp (0.1M, Mod Vul Pawel 2 Exp Heavy) | 100,000 | 1,477,226 | 15,164 | 15.16 | 9,309,848 | 9,287,420.6 | 9,256,872 | +| Modexp (0.1M, Mod Vul Pawel 3 Exp Heavy) | 100,000 | 1,477,226 | 14,670 | 14.67 | 4,770,400 | 4,763,074.2 | 4,758,292 | +| Modexp (0.1M, Mod Vul Pawel 4 Exp Heavy) | 100,000 | 1,477,226 | 13,121 | 13.12 | 2,359,572 | 2,351,052 | 2,328,860 | +| Msize (0.1M, Mem Size 0) | 100,000 | 1,477,226 | 6,549 | 6.55 | 2,323,864 | 2,313,996 | 2,299,972 | +| Msize (0.1M, Mem Size 1000000) | 100,000 | 1,477,226 | 6,572 | 6.57 | 10,341,488 | 10,340,154 | 10,320,276 | +| Msize (0.1M, Mem Size 100000) | 100,000 | 1,477,226 | 6,055 | 6.05 | 2,106,356 | 2,091,182.4 | 2,072,516 | +| Msize (0.1M, Mem Size 1000) | 100,000 | 1,477,226 | 7,056 | 7.06 | 6,660,736 | 6,635,632 | 6,611,044 | +| Msize (0.1M, Mem Size 1) | 100,000 | 1,477,226 | 6,053 | 6.05 | 7,695,520 | 7,682,236.7 | 7,665,796 | +| Precompile Fixed Cost (0.1M, Blake2F) | 100,000 | 1,477,226 | 12,125 | 12.12 | 11,499,276 | 11,473,440 | 11,440,960 | +| Precompile Fixed Cost (0.1M, Bls12 Fp To G1) | 100,000 | 1,477,226 | 19,223 | 19.22 | 4,798,472 | 4,798,472 | 4,785,812 | +| Precompile Fixed Cost (0.1M, Bls12 Fp To G2) | 100,000 | 1,477,226 | 14,647 | 14.65 | 3,946,456 | 3,935,840 | 3,939,252 | +| Precompile Fixed Cost (0.1M, Bls12 G1Add) | 100,000 | 1,477,226 | 12,637 | 12.64 | 10,170,936 | 10,142,514 | 10,112,504 | +| Precompile Fixed Cost (0.1M, Bls12 G1Msm) | 100,000 | 1,477,226 | 6,063 | 6.06 | 8,114,824 | 8,111,510 | 8,076,576 | +| Precompile Fixed Cost (0.1M, Bls12 G2Add) | 100,000 | 1,477,226 | 14,645 | 14.64 | 2,065,376 | 2,062,132.5 | 2,059,280 | +| Precompile Fixed Cost (0.1M, Bls12 G2Msm) | 100,000 | 1,477,226 | 6,068 | 6.07 | 9,829,516 | 9,816,538 | 9,804,960 | +| Precompile Fixed Cost (0.1M, Bls12 Pairing Check) | 100,000 | 1,477,226 | 16,678 | 16.68 | 4,181,644 | 4,163,397.3 | 4,148,764 | +| Precompile Fixed Cost (0.1M, Bn128 Add) | 100,000 | 1,477,226 | 9,125 | 9.12 | 636,592 | 618,764.3 | 596,600 | +| Precompile Fixed Cost (0.1M, Bn128 Add 1 2) | 100,000 | 1,477,226 | 8,068 | 8.07 | 8,694,860 | 8,682,935.3 | 8,664,520 | +| Precompile Fixed Cost (0.1M, Bn128 Add Infinities) | 100,000 | 1,477,226 | 6,048 | 6.05 | 4,424,256 | 4,414,808 | 4,406,716 | +| Precompile Fixed Cost (0.1M, Bn128 Mul) | 100,000 | 1,477,226 | 9,084 | 9.08 | 9,910,224 | 9,903,452 | 9,910,224 | +| Precompile Fixed Cost (0.1M, Bn128 Mul 1 2 2 Scalar) | 100,000 | 1,477,226 | 7,586 | 7.59 | 7,647,772 | 7,645,820 | 7,630,528 | +| Precompile Fixed Cost (0.1M, Bn128 Mul 1 2 32 Byte Scalar) | 100,000 | 1,477,226 | 9,103 | 9.10 | 4,963,600 | 4,961,660 | 4,963,600 | +| Precompile Fixed Cost (0.1M, Bn128 Mul 32 Byte Coord And 2 Scalar) | 100,000 | 1,477,226 | 6,570 | 6.57 | 3,287,472 | 3,275,818.7 | 3,270,560 | +| Precompile Fixed Cost (0.1M, Bn128 Mul 32 Byte Coord And Scalar) | 100,000 | 1,477,226 | 9,095 | 9.10 | 8,404,600 | 8,391,186.7 | 8,376,296 | +| Precompile Fixed Cost (0.1M, Bn128 Mul Infinities 2 Scalar) | 100,000 | 1,477,226 | 6,581 | 6.58 | 6,770,544 | 6,749,811 | 6,727,144 | +| Precompile Fixed Cost (0.1M, Bn128 Mul Infinities 32 Byte Scalar) | 100,000 | 1,477,226 | 8,076 | 8.08 | 10,988,288 | 10,910,175 | 10,864,304 | +| Precompile Fixed Cost (0.1M, Bn128 One Pairing) | 100,000 | 1,477,226 | 6,042 | 6.04 | 8,989,964 | 8,989,902 | 8,986,724 | +| Precompile Fixed Cost (0.1M, Bn128 Two Pairings) | 100,000 | 1,477,226 | 6,074 | 6.07 | 5,349,064 | 5,337,776 | 5,331,340 | +| Precompile Fixed Cost (0.1M, Bn128 Two Pairings Empty) | 100,000 | 1,477,226 | 6,061 | 6.06 | 4,946,424 | 4,941,260 | 4,945,948 | +| Precompile Fixed Cost (0.1M, Ecrecover) | 100,000 | 1,477,226 | 7,573 | 7.57 | 8,849,264 | 8,849,264 | 8,812,884 | +| Precompile Fixed Cost (0.1M, Point Evaluation) | 100,000 | 1,477,226 | 25,291 | 25.29 | 9,464,916 | 9,435,770.6 | 9,388,620 | +| Precompile Only Data Input (0.1M, Identity) | 100,000 | 1,477,226 | 6,069 | 6.07 | 7,990,192 | 7,974,232 | 7,957,620 | +| Precompile Only Data Input (0.1M, Ripemd, 160) | 100,000 | 1,477,226 | 6,051 | 6.05 | 5,816,984 | 5,809,602 | 5,790,456 | +| Precompile Only Data Input (0.1M, Sha2, 256) | 100,000 | 1,477,226 | 7,573 | 7.57 | 5,910,964 | 5,909,106.4 | 5,896,328 | +| Push (0.1M, Push0) | 100,000 | 1,477,226 | 6,581 | 6.58 | 4,548,192 | 4,548,192 | 4,534,692 | +| Push (0.1M, Push10) | 100,000 | 1,477,226 | 7,062 | 7.06 | 4,021,980 | 4,000,205 | 3,974,712 | +| Push (0.1M, Push11) | 100,000 | 1,477,226 | 6,576 | 6.58 | 2,990,708 | 2,980,308 | 2,968,988 | +| Push (0.1M, Push12) | 100,000 | 1,477,226 | 6,556 | 6.56 | 4,852,228 | 4,841,428 | 4,833,116 | +| Push (0.1M, Push13) | 100,000 | 1,477,226 | 6,571 | 6.57 | 11,251,044 | 11,251,044 | 11,208,660 | +| Push (0.1M, Push14) | 100,000 | 1,477,226 | 6,053 | 6.05 | 4,355,988 | 4,348,408 | 4,313,768 | +| Push (0.1M, Push15) | 100,000 | 1,477,226 | 6,563 | 6.56 | 11,211,716 | 11,207,886.7 | 11,204,708 | +| Push (0.1M, Push16) | 100,000 | 1,477,226 | 6,592 | 6.59 | 3,595,716 | 3,589,583.2 | 3,584,168 | +| Push (0.1M, Push17) | 100,000 | 1,477,226 | 6,567 | 6.57 | 9,179,864 | 9,170,894.7 | 9,141,820 | +| Push (0.1M, Push18) | 100,000 | 1,477,226 | 6,087 | 6.09 | 4,037,468 | 4,033,413.6 | 4,034,908 | +| Push (0.1M, Push19) | 100,000 | 1,477,226 | 6,590 | 6.59 | 11,515,872 | 11,511,742.4 | 11,509,100 | +| Push (0.1M, Push1) | 100,000 | 1,477,226 | 7,069 | 7.07 | 6,146,676 | 6,146,676 | 6,139,836 | +| Push (0.1M, Push20) | 100,000 | 1,477,226 | 6,569 | 6.57 | 3,337,752 | 3,332,490.4 | 3,319,416 | +| Push (0.1M, Push21) | 100,000 | 1,477,226 | 6,567 | 6.57 | 7,252,212 | 7,241,370.7 | 7,220,032 | +| Push (0.1M, Push22) | 100,000 | 1,477,226 | 7,072 | 7.07 | 3,582,384 | 3,576,173.3 | 3,567,468 | +| Push (0.1M, Push23) | 100,000 | 1,477,226 | 7,083 | 7.08 | 3,111,180 | 3,101,070.4 | 3,087,184 | +| Push (0.1M, Push24) | 100,000 | 1,477,226 | 6,560 | 6.56 | 8,555,652 | 8,531,032 | 8,552,048 | +| Push (0.1M, Push25) | 100,000 | 1,477,226 | 6,571 | 6.57 | 6,787,428 | 6,778,476.8 | 6,762,892 | +| Push (0.1M, Push26) | 100,000 | 1,477,226 | 6,570 | 6.57 | 4,144,512 | 4,137,490.7 | 4,137,512 | +| Push (0.1M, Push27) | 100,000 | 1,477,226 | 7,571 | 7.57 | 780,184 | 760,082.5 | 736,440 | +| Push (0.1M, Push28) | 100,000 | 1,477,226 | 7,590 | 7.59 | 3,860,752 | 3,854,830.4 | 3,850,924 | +| Push (0.1M, Push29) | 100,000 | 1,477,226 | 7,595 | 7.59 | 6,435,268 | 6,416,780.8 | 6,401,684 | +| Push (0.1M, Push2) | 100,000 | 1,477,226 | 6,061 | 6.06 | 7,303,880 | 7,294,207 | 7,252,336 | +| Push (0.1M, Push30) | 100,000 | 1,477,226 | 7,081 | 7.08 | 1,700,868 | 1,680,736.7 | 1,656,256 | +| Push (0.1M, Push31) | 100,000 | 1,477,226 | 7,054 | 7.05 | 5,369,264 | 5,358,317.3 | 5,339,776 | +| Push (0.1M, Push32) | 100,000 | 1,477,226 | 7,051 | 7.05 | 11,569,920 | 11,548,726 | 11,514,248 | +| Push (0.1M, Push3) | 100,000 | 1,477,226 | 6,564 | 6.56 | 2,542,668 | 2,532,483.3 | 2,505,640 | +| Push (0.1M, Push4) | 100,000 | 1,477,226 | 6,059 | 6.06 | 2,749,760 | 2,746,726 | 2,732,000 | +| Push (0.1M, Push5) | 100,000 | 1,477,226 | 7,068 | 7.07 | 3,029,472 | 3,011,372.8 | 2,988,992 | +| Push (0.1M, Push6) | 100,000 | 1,477,226 | 6,550 | 6.55 | 4,459,236 | 4,449,010.3 | 4,432,480 | +| Push (0.1M, Push7) | 100,000 | 1,477,226 | 6,557 | 6.56 | 7,427,780 | 7,427,780 | 7,420,268 | +| Push (0.1M, Push8) | 100,000 | 1,477,226 | 6,053 | 6.05 | 1,408,788 | 1,390,707.3 | 1,354,996 | +| Push (0.1M, Push9) | 100,000 | 1,477,226 | 7,062 | 7.06 | 8,386,276 | 8,268,732 | 8,386,276 | +| Return Revert (0.1M, 1Kib Of Non, Zero Data, Return) | 100,000 | 1,477,226 | 7,087 | 7.09 | 8,508,260 | 8,502,774.7 | 8,495,396 | +| Return Revert (0.1M, 1Kib Of Non, Zero Data, Revert) | 100,000 | 1,477,226 | 7,082 | 7.08 | 5,646,100 | 5,646,100 | 5,632,932 | +| Return Revert (0.1M, 1Kib Of Zero Data, Return) | 100,000 | 1,477,226 | 6,559 | 6.56 | 3,134,540 | 3,128,433.3 | 3,114,136 | +| Return Revert (0.1M, 1Kib Of Zero Data, Revert) | 100,000 | 1,477,226 | 7,069 | 7.07 | 7,571,000 | 7,558,165.3 | 7,537,060 | +| Return Revert (0.1M, 1Mib Of Non, Zero Data, Return) | 100,000 | 1,477,226 | 6,584 | 6.58 | 7,444,412 | 7,444,412 | 7,410,584 | +| Return Revert (0.1M, 1Mib Of Non, Zero Data, Revert) | 100,000 | 1,477,226 | 6,560 | 6.56 | 1,911,232 | 1,910,202 | 1,900,580 | +| Return Revert (0.1M, 1Mib Of Zero Data, Return) | 100,000 | 1,477,226 | 6,577 | 6.58 | 5,182,432 | 5,166,502.4 | 5,157,476 | +| Return Revert (0.1M, 1Mib Of Zero Data, Revert) | 100,000 | 1,477,226 | 7,092 | 7.09 | 5,928,844 | 5,926,498 | 5,913,604 | +| Return Revert (0.1M, Empty, Return) | 100,000 | 1,477,226 | 7,054 | 7.05 | 8,970,888 | 8,970,888 | 8,936,348 | +| Return Revert (0.1M, Empty, Revert) | 100,000 | 1,477,226 | 6,586 | 6.59 | 11,229,260 | 11,216,706 | 11,223,556 | +| Returndatasize Nonzero (0.1M, Returned Size 0, Return Data Style Returndatastyle.Identity) | 100,000 | 1,477,226 | 7,065 | 7.07 | 7,393,500 | 7,387,209.3 | 7,371,536 | +| Returndatasize Nonzero (0.1M, Returned Size 0, Return Data Style Returndatastyle.Return) | 100,000 | 1,477,226 | 6,052 | 6.05 | 3,631,296 | 3,618,852 | 3,600,688 | +| Returndatasize Nonzero (0.1M, Returned Size 0, Return Data Style Returndatastyle.Revert) | 100,000 | 1,477,226 | 7,065 | 7.07 | 8,516,864 | 8,516,864 | 8,492,444 | +| Returndatasize Nonzero (0.1M, Returned Size 1, Return Data Style Returndatastyle.Identity) | 100,000 | 1,477,226 | 6,559 | 6.56 | 9,737,272 | 9,729,217.3 | 9,719,344 | +| Returndatasize Nonzero (0.1M, Returned Size 1, Return Data Style Returndatastyle.Return) | 100,000 | 1,477,226 | 6,562 | 6.56 | 5,143,084 | 5,133,004 | 5,123,704 | +| Returndatasize Nonzero (0.1M, Returned Size 1, Return Data Style Returndatastyle.Revert) | 100,000 | 1,477,226 | 6,557 | 6.56 | 3,374,148 | 3,367,462 | 3,354,084 | +| Returndatasize Zero (0.1M) | 100,000 | 1,477,226 | 6,575 | 6.58 | 3,530,704 | 3,522,255 | 3,505,044 | +| Shifts (0.1M, Shift Right Sar) | 100,000 | 1,477,226 | 7,072 | 7.07 | 1,375,672 | 1,357,657.1 | 1,325,968 | +| Shifts (0.1M, Shift Right Shr) | 100,000 | 1,477,226 | 7,573 | 7.57 | 5,016,728 | 5,006,924 | 5,004,008 | +| Swap (0.1M, Swap10) | 100,000 | 1,477,226 | 8,076 | 8.08 | 10,777,088 | 10,757,184 | 10,735,040 | +| Swap (0.1M, Swap11) | 100,000 | 1,477,226 | 7,068 | 7.07 | 2,896,024 | 2,887,054 | 2,880,716 | +| Swap (0.1M, Swap12) | 100,000 | 1,477,226 | 8,078 | 8.08 | 2,414,648 | 2,408,454 | 2,399,332 | +| Swap (0.1M, Swap13) | 100,000 | 1,477,226 | 7,582 | 7.58 | 8,519,240 | 8,453,120 | 8,519,240 | +| Swap (0.1M, Swap14) | 100,000 | 1,477,226 | 7,080 | 7.08 | 9,471,804 | 9,470,400 | 9,464,644 | +| Swap (0.1M, Swap15) | 100,000 | 1,477,226 | 7,057 | 7.06 | 8,495,944 | 8,492,656 | 8,491,184 | +| Swap (0.1M, Swap16) | 100,000 | 1,477,226 | 7,061 | 7.06 | 3,479,220 | 3,479,220 | 3,450,872 | +| Swap (0.1M, Swap1) | 100,000 | 1,477,226 | 7,061 | 7.06 | 6,372,984 | 6,365,566 | 6,335,700 | +| Swap (0.1M, Swap2) | 100,000 | 1,477,226 | 7,567 | 7.57 | 1,029,216 | 1,010,096.6 | 965,908 | +| Swap (0.1M, Swap3) | 100,000 | 1,477,226 | 7,067 | 7.07 | 3,390,068 | 3,381,660 | 3,369,928 | +| Swap (0.1M, Swap4) | 100,000 | 1,477,226 | 7,580 | 7.58 | 8,600,332 | 8,592,672 | 8,582,792 | +| Swap (0.1M, Swap5) | 100,000 | 1,477,226 | 7,074 | 7.07 | 4,280,948 | 4,265,990 | 4,248,576 | +| Swap (0.1M, Swap6) | 100,000 | 1,477,226 | 7,575 | 7.58 | 3,973,108 | 3,964,366 | 3,955,192 | +| Swap (0.1M, Swap7) | 100,000 | 1,477,226 | 7,566 | 7.57 | 8,758,264 | 8,746,897.1 | 8,736,020 | +| Swap (0.1M, Swap8) | 100,000 | 1,477,226 | 7,071 | 7.07 | 5,769,532 | 5,753,709.6 | 5,743,120 | +| Swap (0.1M, Swap9) | 100,000 | 1,477,226 | 7,068 | 7.07 | 10,627,164 | 10,620,696.7 | 10,627,164 | +| Tload (0.1M, Val Mut False, Key Mut False) | 100,000 | 1,477,226 | 6,050 | 6.05 | 8,257,048 | 8,256,176 | 8,245,864 | +| Tload (0.1M, Val Mut False, Key Mut True) | 100,000 | 1,477,226 | 5,549 | 5.55 | 8,570,520 | 8,560,224.8 | 8,556,580 | +| Tload (0.1M, Val Mut True, Key Mut False) | 100,000 | 1,477,226 | 6,052 | 6.05 | 5,448,960 | 5,430,101 | 5,409,900 | +| Tload (0.1M, Val Mut True, Key Mut True) | 100,000 | 1,477,226 | 6,048 | 6.05 | 10,108,436 | 10,103,175 | 10,102,496 | +| Tstore (0.1M, Dense Val Mut False, Key Mut False) | 100,000 | 1,477,226 | 6,568 | 6.57 | 9,217,724 | 9,200,589.3 | 9,190,196 | +| Tstore (0.1M, Dense Val Mut False, Key Mut True) | 100,000 | 1,477,226 | 6,559 | 6.56 | 3,238,920 | 3,235,364 | 3,233,928 | +| Tstore (0.1M, Dense Val Mut True, Key Mut False) | 100,000 | 1,477,226 | 7,099 | 7.10 | 6,918,468 | 6,916,516 | 6,834,124 | +| Tstore (0.1M, Dense Val Mut True, Key Mut True) | 100,000 | 1,477,226 | 6,578 | 6.58 | 4,624,228 | 4,624,228 | 4,587,984 | +| Unop (0.1M, Iszero) | 100,000 | 1,477,226 | 7,552 | 7.55 | 1,962,116 | 1,956,167.2 | 1,941,820 | +| Unop (0.1M, Not) | 100,000 | 1,477,226 | 7,088 | 7.09 | 8,506,644 | 8,492,307.2 | 8,472,700 | +| Zero Param (0.1M, Address) | 100,000 | 1,477,226 | 7,068 | 7.07 | 4,859,228 | 4,851,343.5 | 4,848,620 | +| Zero Param (0.1M, Basefee) | 100,000 | 1,477,226 | 6,069 | 6.07 | 11,080,544 | 11,051,340 | 11,030,216 | +| Zero Param (0.1M, Blobbasefee) | 100,000 | 1,477,226 | 7,068 | 7.07 | 5,026,176 | 5,007,503 | 4,996,292 | +| Zero Param (0.1M, Caller) | 100,000 | 1,477,226 | 7,068 | 7.07 | 2,801,304 | 2,793,951.3 | 2,776,636 | +| Zero Param (0.1M, Chainid) | 100,000 | 1,477,226 | 6,552 | 6.55 | 3,456,368 | 3,451,806.7 | 3,416,040 | +| Zero Param (0.1M, Codesize) | 100,000 | 1,477,226 | 6,075 | 6.08 | 8,280,036 | 8,260,404 | 8,217,900 | +| Zero Param (0.1M, Coinbase) | 100,000 | 1,477,226 | 7,061 | 7.06 | 5,035,928 | 5,031,354.7 | 5,022,280 | +| Zero Param (0.1M, Gaslimit) | 100,000 | 1,477,226 | 7,055 | 7.05 | 9,523,724 | 9,520,722 | 9,519,372 | +| Zero Param (0.1M, Gasprice) | 100,000 | 1,477,226 | 7,575 | 7.58 | 8,543,484 | 8,541,840 | 8,543,484 | +| Zero Param (0.1M, Gas) | 100,000 | 1,477,226 | 6,069 | 6.07 | 11,080,048 | 11,072,936 | 11,069,784 | +| Zero Param (0.1M, Number) | 100,000 | 1,477,226 | 6,551 | 6.55 | 10,807,820 | 10,791,519 | 10,779,704 | +| Zero Param (0.1M, Origin) | 100,000 | 1,477,226 | 7,578 | 7.58 | 7,414,400 | 7,404,432.7 | 7,385,560 | +| Zero Param (0.1M, Prevrandao) | 100,000 | 1,477,226 | 7,087 | 7.09 | 5,733,532 | 5,719,840 | 5,704,284 | +| Zero Param (0.1M, Timestamp) | 100,000 | 1,477,226 | 6,064 | 6.06 | 2,402,852 | 2,384,608.8 | 2,373,528 | +| Calldatacopy (0.1M, Zero Data, Dynamic Src Dst, 0Bytes, Call) | 100,000 | 1,477,226 | 7,596 | 7.60 | 10,487,008 | 10,478,965 | 10,462,508 | +| Calldatacopy (0.1M, Zero Data, Dynamic Src Dst, 0Bytes, Transaction) | 100,000 | 1,477,226 | 7,069 | 7.07 | 9,140,016 | 9,118,494.7 | 9,101,144 | +| Calldatacopy (0.1M, Zero Data, Dynamic Src Dst, 100Bytes, Call) | 100,000 | 1,477,226 | 6,066 | 6.07 | 5,864,144 | 5,855,995.2 | 5,841,632 | +| Calldatacopy (0.1M, Zero Data, Dynamic Src Dst, 100Bytes, Transaction) | 100,000 | 1,477,226 | 6,588 | 6.59 | 3,511,772 | 3,507,656 | 3,511,772 | +| Calldatacopy (0.1M, Zero Data, Dynamic Src Dst, 10Kib, Call) | 100,000 | 1,477,226 | 6,066 | 6.07 | 7,142,648 | 7,135,325.6 | 7,121,620 | +| Calldatacopy (0.1M, Zero Data, Dynamic Src Dst, 10Kib, Transaction) | 100,000 | 1,477,226 | 6,080 | 6.08 | 2,847,148 | 2,844,400 | 2,840,284 | +| Calldatacopy (0.1M, Zero Data, Dynamic Src Dst, 1Mib, Call) | 100,000 | 1,477,226 | 6,065 | 6.07 | 7,078,004 | 7,066,549.6 | 7,060,760 | +| Calldatacopy (0.1M, Zero Data, Dynamic Src Dst, 1Mib, Transaction) | 100,000 | 1,477,226 | 6,057 | 6.06 | 2,263,648 | 2,260,066.7 | 2,258,824 | +| Calldatacopy (0.1M, Zero Data, Fixed Src Dst, 0Bytes, Call) | 100,000 | 1,477,226 | 7,065 | 7.07 | 8,246,912 | 8,246,912 | 8,227,436 | +| Calldatacopy (0.1M, Zero Data, Fixed Src Dst, 0Bytes, Transaction) | 100,000 | 1,477,226 | 6,064 | 6.06 | 8,306,588 | 8,298,776.6 | 8,288,996 | +| Calldatacopy (0.1M, Zero Data, Fixed Src Dst, 100Bytes, Call) | 100,000 | 1,477,226 | 7,063 | 7.06 | 2,619,176 | 2,618,870 | 2,618,288 | +| Calldatacopy (0.1M, Zero Data, Fixed Src Dst, 100Bytes, Transaction) | 100,000 | 1,477,226 | 6,071 | 6.07 | 3,928,164 | 3,902,560 | 3,874,560 | +| Calldatacopy (0.1M, Zero Data, Fixed Src Dst, 10Kib, Call) | 100,000 | 1,477,226 | 6,586 | 6.59 | 11,604,600 | 11,592,220.6 | 11,565,204 | +| Calldatacopy (0.1M, Zero Data, Fixed Src Dst, 10Kib, Transaction) | 100,000 | 1,477,226 | 6,065 | 6.07 | 8,536,216 | 8,533,287.2 | 8,520,664 | +| Calldatacopy (0.1M, Zero Data, Fixed Src Dst, 1Mib, Call) | 100,000 | 1,477,226 | 6,055 | 6.05 | 7,213,780 | 7,203,225.3 | 7,180,500 | +| Calldatacopy (0.1M, Zero Data, Fixed Src Dst, 1Mib, Transaction) | 100,000 | 1,477,226 | 6,064 | 6.06 | 3,747,368 | 3,747,368 | 3,740,908 | +| Calldatacopy (0.1M, Non Zero, Dynamic Src Dst, 100Bytes, Call) | 100,000 | 1,477,226 | 6,559 | 6.56 | 8,939,856 | 8,926,230.7 | 8,908,388 | +| Calldatacopy (0.1M, Non Zero, Dynamic Src Dst, 100Bytes, Transaction) | 100,000 | 1,477,226 | 6,547 | 6.55 | 8,502,432 | 8,496,076 | 8,487,472 | +| Calldatacopy (0.1M, Non Zero, Fixed Src Dst, 100Bytes, Call) | 100,000 | 1,477,226 | 6,648 | 6.65 | 9,287,532 | 9,258,958.7 | 9,258,128 | +| Calldatacopy (0.1M, Non Zero, Fixed Src Dst, 100Bytes, Transaction) | 100,000 | 1,477,226 | 6,552 | 6.55 | 4,813,568 | 4,813,568 | 4,804,028 | +| Codecopy (0.1M, Dynamic Src Dst, 0Bytes) | 100,000 | 1,477,226 | 6,560 | 6.56 | 9,721,388 | 9,721,388 | 9,711,432 | +| Codecopy (0.1M, Dynamic Src Dst, 0.25X Max Code) | 100,000 | 1,477,226 | 6,580 | 6.58 | 10,317,720 | 10,317,720 | 10,310,452 | +| Codecopy (0.1M, Dynamic Src Dst, 0.50X Max Code Size) | 100,000 | 1,477,226 | 6,061 | 6.06 | 5,581,160 | 5,566,962 | 5,536,868 | +| Codecopy (0.1M, Dynamic Src Dst, 0.75X Max Code Size) | 100,000 | 1,477,226 | 6,067 | 6.07 | 1,505,592 | 1,497,332 | 1,468,768 | +| Codecopy (0.1M, Dynamic Src Dst, Max Code) | 100,000 | 1,477,226 | 6,569 | 6.57 | 6,099,936 | 6,095,305.3 | 6,083,912 | +| Codecopy (0.1M, Fixed Src Dst, 0Bytes) | 100,000 | 1,477,226 | 6,559 | 6.56 | 8,543,516 | 8,539,767 | 8,538,680 | +| Codecopy (0.1M, Fixed Src Dst, 0.25X Max Code) | 100,000 | 1,477,226 | 6,078 | 6.08 | 5,587,808 | 5,585,252 | 5,569,520 | +| Codecopy (0.1M, Fixed Src Dst, 0.50X Max Code Size) | 100,000 | 1,477,226 | 6,563 | 6.56 | 788,852 | 776,952.5 | 765,676 | +| Codecopy (0.1M, Fixed Src Dst, 0.75X Max Code Size) | 100,000 | 1,477,226 | 6,566 | 6.57 | 567,568 | 544,566.5 | 512,040 | +| Codecopy (0.1M, Fixed Src Dst, Max Code) | 100,000 | 1,477,226 | 7,068 | 7.07 | 8,885,680 | 8,873,491 | 8,865,944 | +| Mcopy (0.1M, Dynamic Src Dst, 0Bytes) | 100,000 | 1,477,226 | 6,556 | 6.56 | 4,319,004 | 4,319,004 | 4,313,200 | +| Mcopy (0.1M, Dynamic Src Dst, 100Bytes) | 100,000 | 1,477,226 | 6,565 | 6.57 | 7,085,980 | 7,085,980 | 7,076,416 | +| Mcopy (0.1M, Dynamic Src Dst, 10Kib) | 100,000 | 1,477,226 | 6,566 | 6.57 | 2,299,952 | 2,295,688 | 2,293,704 | +| Mcopy (0.1M, Dynamic Src Dst, 1Mib) | 100,000 | 1,477,226 | 6,066 | 6.07 | 4,964,656 | 4,954,376.8 | 4,941,012 | +| Mcopy (0.1M, Fixed Src Dst, 0Bytes) | 100,000 | 1,477,226 | 6,567 | 6.57 | 11,125,488 | 11,113,597.3 | 11,093,348 | +| Mcopy (0.1M, Fixed Src Dst, 100Bytes) | 100,000 | 1,477,226 | 6,083 | 6.08 | 1,548,176 | 1,548,176 | 1,500,252 | +| Mcopy (0.1M, Fixed Src Dst, 10Kib) | 100,000 | 1,477,226 | 6,555 | 6.55 | 258,828 | 193,756.2 | 78,912 | +| Mcopy (0.1M, Fixed Src Dst, 1Mib) | 100,000 | 1,477,226 | 6,061 | 6.06 | 5,898,352 | 5,893,472 | 5,873,560 | +| Returndatacopy (0.1M, Fixed Dst False, 0Bytes) | 100,000 | 1,477,226 | 7,610 | 7.61 | 742,984 | 738,220.8 | 724,036 | +| Returndatacopy (0.1M, Fixed Dst False, 100Bytes) | 100,000 | 1,477,226 | 6,061 | 6.06 | 8,546,248 | 8,546,248 | 8,534,880 | +| Returndatacopy (0.1M, Fixed Dst False, 10Kib) | 100,000 | 1,477,226 | 6,047 | 6.05 | 8,106,500 | 8,092,458 | 8,084,472 | +| Returndatacopy (0.1M, Fixed Dst False, 1Mib) | 100,000 | 1,477,226 | 6,062 | 6.06 | 3,860,100 | 3,853,265.3 | 3,849,188 | +| Returndatacopy (0.1M, Fixed Dst True, 0Bytes) | 100,000 | 1,477,226 | 6,057 | 6.06 | 518,036 | 510,340 | 499,504 | +| Returndatacopy (0.1M, Fixed Dst True, 100Bytes) | 100,000 | 1,477,226 | 6,575 | 6.58 | 2,731,960 | 2,725,363.2 | 2,720,376 | +| Returndatacopy (0.1M, Fixed Dst True, 10Kib) | 100,000 | 1,477,226 | 6,576 | 6.58 | 4,524,892 | 4,520,840 | 4,512,972 | +| Returndatacopy (0.1M, Fixed Dst True, 1Mib) | 100,000 | 1,477,226 | 6,563 | 6.56 | 6,007,452 | 6,001,672 | 5,994,044 | +| Log Opcodes (0.1M, Dynamic, Non Zero Topic, 0 Bytes Data, Log0) | 100,000 | 1,477,226 | 7,058 | 7.06 | 6,399,756 | 6,390,202.4 | 6,366,180 | +| Log Opcodes (0.1M, Dynamic, Non Zero Topic, 0 Bytes Data, Log1) | 100,000 | 1,477,226 | 6,054 | 6.05 | 6,669,228 | 6,667,142.7 | 6,658,032 | +| Log Opcodes (0.1M, Dynamic, Non Zero Topic, 0 Bytes Data, Log2) | 100,000 | 1,477,226 | 6,069 | 6.07 | 10,276,492 | 10,266,025.3 | 10,248,060 | +| Log Opcodes (0.1M, Dynamic, Non Zero Topic, 0 Bytes Data, Log3) | 100,000 | 1,477,226 | 6,059 | 6.06 | 2,037,728 | 2,033,127 | 2,024,504 | +| Log Opcodes (0.1M, Dynamic, Non Zero Topic, 0 Bytes Data, Log4) | 100,000 | 1,477,226 | 6,073 | 6.07 | 4,207,968 | 4,207,968 | 4,202,856 | +| Log Opcodes (0.1M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log0) | 100,000 | 1,477,226 | 6,050 | 6.05 | 7,356,476 | 7,352,038.7 | 7,345,900 | +| Log Opcodes (0.1M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log1) | 100,000 | 1,477,226 | 6,041 | 6.04 | 8,435,592 | 8,429,908.8 | 8,421,048 | +| Log Opcodes (0.1M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log2) | 100,000 | 1,477,226 | 6,076 | 6.08 | 6,521,640 | 6,519,810.7 | 6,513,280 | +| Log Opcodes (0.1M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log3) | 100,000 | 1,477,226 | 6,071 | 6.07 | 11,640,316 | 11,617,027.4 | 11,598,112 | +| Log Opcodes (0.1M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log4) | 100,000 | 1,477,226 | 6,064 | 6.06 | 11,042,556 | 11,020,852 | 10,998,172 | +| Log Opcodes (0.1M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log0) | 100,000 | 1,477,226 | 6,062 | 6.06 | 6,165,384 | 6,147,866 | 6,124,328 | +| Log Opcodes (0.1M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log1) | 100,000 | 1,477,226 | 6,066 | 6.07 | 9,401,008 | 9,391,760 | 9,357,268 | +| Log Opcodes (0.1M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log2) | 100,000 | 1,477,226 | 6,574 | 6.57 | 1,467,356 | 1,455,589.6 | 1,426,596 | +| Log Opcodes (0.1M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log3) | 100,000 | 1,477,226 | 6,055 | 6.05 | 1,582,772 | 1,567,923 | 1,542,896 | +| Log Opcodes (0.1M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log4) | 100,000 | 1,477,226 | 6,095 | 6.09 | 974,512 | 960,003.2 | 950,516 | +| Log Opcodes (0.1M, Dynamic, Zero Topic, 0 Bytes Data, Log0) | 100,000 | 1,477,226 | 6,547 | 6.55 | 5,209,500 | 5,204,252 | 5,197,172 | +| Log Opcodes (0.1M, Dynamic, Zero Topic, 0 Bytes Data, Log1) | 100,000 | 1,477,226 | 6,067 | 6.07 | 1,081,440 | 1,064,932.7 | 1,040,088 | +| Log Opcodes (0.1M, Dynamic, Zero Topic, 0 Bytes Data, Log2) | 100,000 | 1,477,226 | 6,064 | 6.06 | 10,426,884 | 10,426,884 | 10,385,020 | +| Log Opcodes (0.1M, Dynamic, Zero Topic, 0 Bytes Data, Log3) | 100,000 | 1,477,226 | 6,074 | 6.07 | 6,949,980 | 6,935,849.3 | 6,919,220 | +| Log Opcodes (0.1M, Dynamic, Zero Topic, 0 Bytes Data, Log4) | 100,000 | 1,477,226 | 6,561 | 6.56 | 2,831,012 | 2,815,651.2 | 2,806,996 | +| Log Opcodes (0.1M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log0) | 100,000 | 1,477,226 | 6,582 | 6.58 | 8,556,504 | 8,556,504 | 8,552,616 | +| Log Opcodes (0.1M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log1) | 100,000 | 1,477,226 | 5,556 | 5.56 | 6,727,516 | 6,719,603 | 6,698,048 | +| Log Opcodes (0.1M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log2) | 100,000 | 1,477,226 | 5,576 | 5.58 | 2,142,752 | 2,142,268 | 2,130,772 | +| Log Opcodes (0.1M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log3) | 100,000 | 1,477,226 | 5,552 | 5.55 | 6,701,588 | 6,688,442.7 | 6,669,712 | +| Log Opcodes (0.1M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log4) | 100,000 | 1,477,226 | 6,071 | 6.07 | 8,521,376 | 8,514,780.6 | 8,502,500 | +| Log Opcodes (0.1M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log0) | 100,000 | 1,477,226 | 6,055 | 6.05 | 6,134,452 | 6,125,078.7 | 6,101,568 | +| Log Opcodes (0.1M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log1) | 100,000 | 1,477,226 | 6,580 | 6.58 | 3,369,148 | 3,369,148 | 3,368,692 | +| Log Opcodes (0.1M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log2) | 100,000 | 1,477,226 | 6,060 | 6.06 | 11,446,492 | 11,429,096 | 11,403,192 | +| Log Opcodes (0.1M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log3) | 100,000 | 1,477,226 | 6,071 | 6.07 | 493,552 | 483,366.4 | 471,996 | +| Log Opcodes (0.1M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log4) | 100,000 | 1,477,226 | 6,053 | 6.05 | 10,995,036 | 10,989,556 | 10,987,080 | +| Log Opcodes (0.1M, Fixed, Non Zero Topic, 0 Bytes Data, Log0) | 100,000 | 1,477,226 | 6,064 | 6.06 | 3,408,108 | 3,407,884 | 3,386,964 | +| Log Opcodes (0.1M, Fixed, Non Zero Topic, 0 Bytes Data, Log1) | 100,000 | 1,477,226 | 5,569 | 5.57 | 3,198,112 | 3,196,320 | 3,179,816 | +| Log Opcodes (0.1M, Fixed, Non Zero Topic, 0 Bytes Data, Log2) | 100,000 | 1,477,226 | 6,056 | 6.06 | 6,258,944 | 6,251,554 | 6,224,020 | +| Log Opcodes (0.1M, Fixed, Non Zero Topic, 0 Bytes Data, Log3) | 100,000 | 1,477,226 | 5,550 | 5.55 | 2,249,552 | 2,248,640 | 2,235,832 | +| Log Opcodes (0.1M, Fixed, Non Zero Topic, 0 Bytes Data, Log4) | 100,000 | 1,477,226 | 6,071 | 6.07 | 9,836,412 | 9,836,412 | 9,835,116 | +| Log Opcodes (0.1M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log0) | 100,000 | 1,477,226 | 6,063 | 6.06 | 3,174,848 | 3,165,788.8 | 3,155,576 | +| Log Opcodes (0.1M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log1) | 100,000 | 1,477,226 | 6,055 | 6.05 | 10,101,016 | 10,085,160 | 10,049,980 | +| Log Opcodes (0.1M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log2) | 100,000 | 1,477,226 | 6,071 | 6.07 | 9,200,840 | 9,195,414.7 | 9,186,520 | +| Log Opcodes (0.1M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log3) | 100,000 | 1,477,226 | 6,056 | 6.06 | 1,616,348 | 1,600,676 | 1,585,512 | +| Log Opcodes (0.1M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log4) | 100,000 | 1,477,226 | 6,057 | 6.06 | 3,332,740 | 3,325,960 | 3,307,664 | +| Log Opcodes (0.1M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log0) | 100,000 | 1,477,226 | 6,073 | 6.07 | 7,370,948 | 7,361,338.7 | 7,353,120 | +| Log Opcodes (0.1M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log1) | 100,000 | 1,477,226 | 6,063 | 6.06 | 9,577,904 | 9,577,904 | 9,547,804 | +| Log Opcodes (0.1M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log2) | 100,000 | 1,477,226 | 6,072 | 6.07 | 10,442,308 | 10,429,709.3 | 10,410,720 | +| Log Opcodes (0.1M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log3) | 100,000 | 1,477,226 | 6,561 | 6.56 | 11,299,228 | 11,295,409.6 | 11,275,140 | +| Log Opcodes (0.1M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log4) | 100,000 | 1,477,226 | 6,059 | 6.06 | 10,871,692 | 10,858,344.8 | 10,844,388 | +| Log Opcodes (0.1M, Fixed, Zero Topic, 0 Bytes Data, Log0) | 100,000 | 1,477,226 | 6,083 | 6.08 | 5,143,200 | 5,139,981.3 | 5,134,000 | +| Log Opcodes (0.1M, Fixed, Zero Topic, 0 Bytes Data, Log1) | 100,000 | 1,477,226 | 6,056 | 6.06 | 7,708,716 | 7,700,787.3 | 7,692,208 | +| Log Opcodes (0.1M, Fixed, Zero Topic, 0 Bytes Data, Log2) | 100,000 | 1,477,226 | 6,566 | 6.57 | 4,160,864 | 4,160,864 | 4,140,196 | +| Log Opcodes (0.1M, Fixed, Zero Topic, 0 Bytes Data, Log3) | 100,000 | 1,477,226 | 5,553 | 5.55 | 8,284,696 | 8,281,294 | 8,284,696 | +| Log Opcodes (0.1M, Fixed, Zero Topic, 0 Bytes Data, Log4) | 100,000 | 1,477,226 | 6,049 | 6.05 | 7,803,388 | 7,749,587.2 | 7,724,812 | +| Log Opcodes (0.1M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log0) | 100,000 | 1,477,226 | 6,566 | 6.57 | 1,184,812 | 1,172,845.3 | 1,169,260 | +| Log Opcodes (0.1M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log1) | 100,000 | 1,477,226 | 6,060 | 6.06 | 11,184,852 | 11,173,414 | 11,165,692 | +| Log Opcodes (0.1M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log2) | 100,000 | 1,477,226 | 6,564 | 6.56 | 6,051,444 | 6,031,125.3 | 5,988,976 | +| Log Opcodes (0.1M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log3) | 100,000 | 1,477,226 | 5,558 | 5.56 | 5,534,508 | 5,534,508 | 5,518,208 | +| Log Opcodes (0.1M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log4) | 100,000 | 1,477,226 | 6,053 | 6.05 | 1,162,384 | 1,154,410.4 | 1,114,816 | +| Log Opcodes (0.1M, Fixed, Zero Topic, 1 Mib Zeros Data, Log0) | 100,000 | 1,477,226 | 6,071 | 6.07 | 8,450,812 | 8,450,812 | 8,442,116 | +| Log Opcodes (0.1M, Fixed, Zero Topic, 1 Mib Zeros Data, Log1) | 100,000 | 1,477,226 | 6,565 | 6.57 | 7,258,460 | 7,254,600.7 | 7,236,724 | +| Log Opcodes (0.1M, Fixed, Zero Topic, 1 Mib Zeros Data, Log2) | 100,000 | 1,477,226 | 6,047 | 6.05 | 3,088,636 | 3,078,094.4 | 3,067,016 | +| Log Opcodes (0.1M, Fixed, Zero Topic, 1 Mib Zeros Data, Log3) | 100,000 | 1,477,226 | 6,063 | 6.06 | 8,617,632 | 8,615,948 | 8,598,712 | +| Log Opcodes (0.1M, Fixed, Zero Topic, 1 Mib Zeros Data, Log4) | 100,000 | 1,477,226 | 6,083 | 6.08 | 9,963,176 | 9,957,850 | 9,947,892 | +| Address State Cold (0.1M, Absent Accounts False, Balance) | 100,000 | 1,477,226 | 6,052 | 6.05 | 8,010,972 | 8,004,962 | 7,987,356 | +| Address State Cold (0.1M, Absent Accounts True, Balance) | 100,000 | 1,477,226 | 5,566 | 5.57 | 1,659,184 | 1,646,710.4 | 1,639,768 | +| Address State Warm (0.1M, Present Target, Balance) | 100,000 | 1,477,226 | 6,059 | 6.06 | 3,674,628 | 3,669,693 | 3,660,188 | +| Address State Warm (0.1M, Present Target, Callcode) | 100,000 | 1,477,226 | 7,074 | 7.07 | 1,722,784 | 1,713,066.4 | 1,702,628 | +| Address State Warm (0.1M, Present Target, Call) | 100,000 | 1,477,226 | 7,079 | 7.08 | 5,759,756 | 5,751,618.7 | 5,741,964 | +| Address State Warm (0.1M, Present Target, Delegatecall) | 100,000 | 1,477,226 | 6,579 | 6.58 | 8,318,688 | 8,313,649.6 | 8,305,760 | +| Address State Warm (0.1M, Present Target, Extcodehash) | 100,000 | 1,477,226 | 6,076 | 6.08 | 1,201,308 | 1,195,265.3 | 1,181,016 | +| Address State Warm (0.1M, Present Target, Extcodesize) | 100,000 | 1,477,226 | 6,558 | 6.56 | 2,876,328 | 2,869,569 | 2,861,132 | +| Address State Warm (0.1M, Present Target, Staticcall) | 100,000 | 1,477,226 | 7,070 | 7.07 | 9,645,168 | 9,637,320 | 9,634,368 | +| Address State Warm (0.1M, Absent Target, Balance) | 100,000 | 1,477,226 | 6,581 | 6.58 | 6,460,064 | 6,443,859.2 | 6,446,120 | +| Address State Warm (0.1M, Absent Target, Callcode) | 100,000 | 1,477,226 | 7,073 | 7.07 | 3,514,324 | 3,508,958 | 3,508,240 | +| Address State Warm (0.1M, Absent Target, Call) | 100,000 | 1,477,226 | 7,062 | 7.06 | 1,265,180 | 1,247,350.3 | 1,212,692 | +| Address State Warm (0.1M, Absent Target, Delegatecall) | 100,000 | 1,477,226 | 7,081 | 7.08 | 9,946,892 | 9,925,860.8 | 9,892,500 | +| Address State Warm (0.1M, Absent Target, Extcodehash) | 100,000 | 1,477,226 | 6,565 | 6.57 | 7,271,836 | 7,267,242 | 7,264,896 | +| Address State Warm (0.1M, Absent Target, Extcodesize) | 100,000 | 1,477,226 | 7,063 | 7.06 | 8,700,340 | 8,694,550 | 8,690,856 | +| Address State Warm (0.1M, Absent Target, Staticcall) | 100,000 | 1,477,226 | 6,562 | 6.56 | 2,034,704 | 2,026,115 | 2,007,124 | +| Blockhash (0.1M) | 100,000 | 1,477,226 | 7,078 | 7.08 | 7,099,408 | 7,093,259 | 7,074,320 | +| Extcodecopy Warm (0.1M, 1Kib) | 100,000 | 1,477,226 | 6,062 | 6.06 | 1,326,548 | 1,320,114 | 1,307,152 | +| Extcodecopy Warm (0.1M, 512) | 100,000 | 1,477,226 | 6,550 | 6.55 | 9,237,316 | 9,232,230.7 | 9,226,828 | +| Extcodecopy Warm (0.1M, 5Kib) | 100,000 | 1,477,226 | 6,567 | 6.57 | 8,492,956 | 8,486,236 | 8,475,144 | +| Selfbalance (0.1M) | 100,000 | 1,477,226 | 8,591 | 8.59 | 6,529,440 | 6,515,320.7 | 6,487,768 | +| Selfdestruct Created (0.1M, No Value) | 63,608 | 1,477,226 | 6,053 | 6.05 | 4,678,664 | 4,663,159 | 4,644,380 | +| Selfdestruct Created (0.1M, With Value) | 63,608 | 1,477,226 | 6,590 | 6.59 | 2,234,776 | 2,224,453.3 | 2,214,864 | +| Selfdestruct Existing (0.1M, No Value) | 95,531 | 1,477,226 | 5,567 | 5.57 | 4,540,712 | 4,531,665.6 | 4,531,980 | +| Selfdestruct Existing (0.1M, With Value) | 95,531 | 1,477,226 | 6,072 | 6.07 | 7,186,896 | 7,180,893 | 7,163,968 | +| Selfdestruct Initcode (0.1M, No Value) | 63,064 | 1,477,226 | 6,071 | 6.07 | 3,198,656 | 3,192,804 | 3,198,656 | +| Selfdestruct Initcode (0.1M, With Value) | 63,064 | 1,477,226 | 6,064 | 6.06 | 1,636,092 | 1,632,976 | 1,625,152 | +| Storage Access Cold (0.1M, Absent Slots False, Ssload) | 97,935 | 1,477,226 | 6,059 | 6.06 | 7,150,780 | 7,143,458.4 | 7,139,592 | +| Storage Access Cold (0.1M, Absent Slots False, Sstore New Value, Out Of Gas) | 100,000 | 1,477,226 | 6,562 | 6.56 | 4,251,444 | 4,238,840.8 | 4,223,408 | +| Storage Access Cold (0.1M, Absent Slots False, Sstore New Value, Revert) | 96,624 | 1,477,226 | 6,063 | 6.06 | 8,165,108 | 8,153,568 | 8,133,220 | +| Storage Access Cold (0.1M, Absent Slots False, Sstore New Value) | 96,618 | 1,477,226 | 6,064 | 6.06 | 8,735,356 | 8,718,532.7 | 8,702,552 | +| Storage Access Cold (0.1M, Absent Slots False, Sstore Same Value, Out Of Gas) | 100,000 | 1,477,226 | 6,055 | 6.05 | 5,194,720 | 5,190,184 | 5,180,316 | +| Storage Access Cold (0.1M, Absent Slots False, Sstore Same Value, Revert) | 99,339 | 1,477,226 | 6,563 | 6.56 | 8,794,624 | 8,794,624 | 8,785,524 | +| Storage Access Cold (0.1M, Absent Slots False, Sstore Same Value) | 99,333 | 1,477,226 | 6,076 | 6.08 | 5,379,864 | 5,372,634 | 5,354,788 | +| Storage Access Cold (0.1M, Absent Slots True, Ssload) | 97,935 | 1,477,226 | 5,546 | 5.55 | 3,689,624 | 3,682,641.3 | 3,680,544 | +| Storage Access Cold (0.1M, Absent Slots True, Sstore New Value, Out Of Gas) | 100,000 | 1,477,226 | 6,098 | 6.10 | 4,400,828 | 4,393,334 | 4,389,380 | +| Storage Access Cold (0.1M, Absent Slots True, Sstore New Value, Revert) | 87,432 | 1,477,226 | 6,055 | 6.05 | 11,580,768 | 11,573,946 | 11,566,740 | +| Storage Access Cold (0.1M, Absent Slots True, Sstore New Value) | 87,426 | 1,477,226 | 6,053 | 6.05 | 2,212,788 | 2,200,109 | 2,179,800 | +| Storage Access Cold (0.1M, Absent Slots True, Sstore Same Value, Out Of Gas) | 100,000 | 1,477,226 | 6,591 | 6.59 | 5,506,040 | 5,497,258.7 | 5,482,596 | +| Storage Access Cold (0.1M, Absent Slots True, Sstore Same Value, Revert) | 87,423 | 1,477,226 | 6,050 | 6.05 | 474,860 | 456,874.5 | 441,884 | +| Storage Access Cold (0.1M, Absent Slots True, Sstore Same Value) | 87,417 | 1,477,226 | 6,050 | 6.05 | 8,487,460 | 8,471,245.6 | 8,487,460 | +| Storage Access Warm (0.1M, Sload) | 100,000 | 1,477,226 | 6,056 | 6.06 | 8,501,056 | 8,495,644 | 8,497,052 | +| Storage Access Warm (0.1M, Sstore New Value) | 100,000 | 1,477,226 | 6,096 | 6.10 | 4,037,548 | 4,028,741.6 | 4,024,204 | +| Storage Access Warm (0.1M, Sstore Same Value) | 100,000 | 1,477,226 | 6,066 | 6.07 | 1,953,884 | 1,936,414 | 1,913,348 | + +## Summary Statistics + +- **Total Tests:** 498 +- **Successful Tests:** 498 +- **Failed Tests:** 0 + +### Proving Time (ms) +- **Average:** 8,119.7 +- **Minimum:** 4,553 +- **Maximum:** 36,355 + +### Peak Memory Usage (MB) +- **Average:** 6,287,867.5 +- **Minimum:** 258,828 +- **Maximum:** 11,640,316 + +### Proof Size (bytes) +- **Average:** 1,477,226 +- **Minimum:** 1,477,226 +- **Maximum:** 1,477,226 diff --git a/www/docs/pages/benchmark-results/gas-categorized/0.2m/0.2M-4.md b/www/docs/pages/benchmark-results/gas-categorized/0.2m/0.2M-4.md new file mode 100644 index 00000000..02056eac --- /dev/null +++ b/www/docs/pages/benchmark-results/gas-categorized/0.2m/0.2M-4.md @@ -0,0 +1,511 @@ +# zkVM Proving Time (in secs) Comparison + +**Gas Category:** 0.2M + +**Number of GPUs:** 4 + + +| Benchmark | risc0 | sp1 | +|---|---|---| +| Address State Cold (0.2M, Absent Accounts False, Balance) | 5.82 | 6.56 | +| Address State Cold (0.2M, Absent Accounts True, Balance) | 5.59 | 6.05 | +| Address State Warm (0.2M, Absent Target, Balance) | 6.73 | 6.58 | +| Address State Warm (0.2M, Absent Target, Call) | 9.55 | 7.07 | +| Address State Warm (0.2M, Absent Target, Callcode) | 10.28 | 7.57 | +| Address State Warm (0.2M, Absent Target, Delegatecall) | 10.38 | 7.06 | +| Address State Warm (0.2M, Absent Target, Extcodehash) | 9.54 | 7.06 | +| Address State Warm (0.2M, Absent Target, Extcodesize) | 6.64 | 7.11 | +| Address State Warm (0.2M, Absent Target, Staticcall) | 9.92 | 7.07 | +| Address State Warm (0.2M, Present Target, Balance) | 7.90 | 6.05 | +| Address State Warm (0.2M, Present Target, Call) | 10.09 | 6.59 | +| Address State Warm (0.2M, Present Target, Callcode) | 10.95 | 7.07 | +| Address State Warm (0.2M, Present Target, Delegatecall) | 10.90 | 7.05 | +| Address State Warm (0.2M, Present Target, Extcodehash) | 5.87 | 6.07 | +| Address State Warm (0.2M, Present Target, Extcodesize) | 6.31 | 6.55 | +| Address State Warm (0.2M, Present Target, Staticcall) | 10.18 | 7.58 | +| Amortized Bn128 Pairings (0.2M) | 21.71 | 11.10 | +| Binop Simple (0.2M, Add) | 7.10 | 7.07 | +| Binop Simple (0.2M, And) | 8.60 | 7.08 | +| Binop Simple (0.2M, Byte) | 9.26 | 7.08 | +| Binop Simple (0.2M, Div, 0) | 17.35 | 9.10 | +| Binop Simple (0.2M, Div, 1) | 17.36 | 9.61 | +| Binop Simple (0.2M, Eq) | 9.49 | 8.10 | +| Binop Simple (0.2M, Exp) | 13.38 | 7.59 | +| Binop Simple (0.2M, Gt) | 8.53 | 7.05 | +| Binop Simple (0.2M, Lt) | 7.59 | 7.07 | +| Binop Simple (0.2M, Mod) | 9.77 | 7.09 | +| Binop Simple (0.2M, Mul) | 12.24 | 6.57 | +| Binop Simple (0.2M, Or) | 10.04 | 6.58 | +| Binop Simple (0.2M, Sar) | 12.10 | 7.09 | +| Binop Simple (0.2M, Sdiv, 0) | 18.32 | 10.10 | +| Binop Simple (0.2M, Sdiv, 1) | 18.65 | 10.11 | +| Binop Simple (0.2M, Sgt) | 12.27 | 7.59 | +| Binop Simple (0.2M, Shl) | 11.07 | 7.07 | +| Binop Simple (0.2M, Shr) | 9.57 | 7.06 | +| Binop Simple (0.2M, Signextend) | 11.54 | 7.08 | +| Binop Simple (0.2M, Slt) | 10.43 | 7.09 | +| Binop Simple (0.2M, Smod) | 11.80 | 7.10 | +| Binop Simple (0.2M, Sub) | 7.53 | 7.08 | +| Binop Simple (0.2M, Xor) | 9.51 | 7.05 | +| Blobhash (0.2M, No Blobs) | 7.27 | 7.08 | +| Blobhash (0.2M, One Blob And Accessed) | 11.56 | 7.58 | +| Blobhash (0.2M, One Blob But Access Non, Existent Index) | 9.88 | 6.58 | +| Blobhash (0.2M, Six Blobs, Access Latest) | 8.90 | 7.06 | +| Block Full Access List And Data (0.2M) | 3.92 | 6.05 | +| Block Full Data (0.2M, Non Zero Byte) | 4.26 | 6.07 | +| Block Full Data (0.2M, Zero Byte) | 4.33 | 6.08 | +| Block Full Of Ether Transfers (0.2M, A To A) | 6.55 | 6.56 | +| Block Full Of Ether Transfers (0.2M, A To B) | 6.78 | 6.55 | +| Block Full Of Ether Transfers (0.2M, A To Diff Acc) | 7.83 | 7.58 | +| Block Full Of Ether Transfers (0.2M, Diff Acc To B) | 6.91 | 6.06 | +| Block Full Of Ether Transfers (0.2M, Diff Acc To Diff Acc) | 7.97 | 7.09 | +| Blockhash (0.2M) | 10.90 | 7.58 | +| Bytecode Single Opcode (0.2M, Call) | 26.88 | 11.12 | +| Bytecode Single Opcode (0.2M, Callcode) | 24.36 | 11.12 | +| Bytecode Single Opcode (0.2M, Delegatecall) | 26.20 | 11.60 | +| Bytecode Single Opcode (0.2M, Extcodecopy) | 24.52 | 11.12 | +| Bytecode Single Opcode (0.2M, Extcodehash) | 26.65 | 11.59 | +| Bytecode Single Opcode (0.2M, Extcodesize) | 24.22 | 11.09 | +| Bytecode Single Opcode (0.2M, Staticcall) | 26.91 | 11.12 | +| Calldatacopy (0.2M, Non Zero, Dynamic Src Dst, 100Bytes, Call) | 10.19 | 7.06 | +| Calldatacopy (0.2M, Non Zero, Dynamic Src Dst, 100Bytes, Transaction) | 7.69 | 7.07 | +| Calldatacopy (0.2M, Non Zero, Fixed Src Dst, 100Bytes, Call) | 7.41 | 6.57 | +| Calldatacopy (0.2M, Non Zero, Fixed Src Dst, 100Bytes, Transaction) | 7.11 | 6.57 | +| Calldatacopy (0.2M, Zero Data, Dynamic Src Dst, 0Bytes, Call) | 9.21 | 7.07 | +| Calldatacopy (0.2M, Zero Data, Dynamic Src Dst, 0Bytes, Transaction) | 9.71 | 7.06 | +| Calldatacopy (0.2M, Zero Data, Dynamic Src Dst, 100Bytes, Call) | 8.78 | 7.56 | +| Calldatacopy (0.2M, Zero Data, Dynamic Src Dst, 100Bytes, Transaction) | 11.08 | 7.08 | +| Calldatacopy (0.2M, Zero Data, Dynamic Src Dst, 10Kib, Call) | 7.49 | 6.57 | +| Calldatacopy (0.2M, Zero Data, Dynamic Src Dst, 10Kib, Transaction) | 5.87 | 6.59 | +| Calldatacopy (0.2M, Zero Data, Dynamic Src Dst, 1Mib, Call) | 3.97 | 5.56 | +| Calldatacopy (0.2M, Zero Data, Dynamic Src Dst, 1Mib, Transaction) | 4.20 | 5.56 | +| Calldatacopy (0.2M, Zero Data, Fixed Src Dst, 0Bytes, Call) | 8.13 | 6.56 | +| Calldatacopy (0.2M, Zero Data, Fixed Src Dst, 0Bytes, Transaction) | 9.72 | 6.59 | +| Calldatacopy (0.2M, Zero Data, Fixed Src Dst, 100Bytes, Call) | 6.85 | 6.07 | +| Calldatacopy (0.2M, Zero Data, Fixed Src Dst, 100Bytes, Transaction) | 5.96 | 6.07 | +| Calldatacopy (0.2M, Zero Data, Fixed Src Dst, 10Kib, Call) | 6.53 | 6.56 | +| Calldatacopy (0.2M, Zero Data, Fixed Src Dst, 10Kib, Transaction) | 4.89 | 6.05 | +| Calldatacopy (0.2M, Zero Data, Fixed Src Dst, 1Mib, Call) | 4.22 | 6.08 | +| Calldatacopy (0.2M, Zero Data, Fixed Src Dst, 1Mib, Transaction) | 4.38 | 6.06 | +| Calldataload (0.2M, Empty) | 11.38 | 7.05 | +| Calldataload (0.2M, One, Loop) | 12.02 | 7.08 | +| Calldataload (0.2M, Zero, Loop) | 12.67 | 7.07 | +| Calldatasize (0.2M, Calldata Length 0) | 9.31 | 7.06 | +| Calldatasize (0.2M, Calldata Length 1000) | 7.88 | 6.56 | +| Calldatasize (0.2M, Calldata Length 10000) | 8.97 | 7.07 | +| Callvalue (0.2M, From Origin False, Non Zero Value False) | 9.99 | 7.07 | +| Callvalue (0.2M, From Origin False, Non Zero Value True) | 7.79 | 7.07 | +| Callvalue (0.2M, From Origin True, Non Zero Value False) | 8.03 | 7.58 | +| Callvalue (0.2M, From Origin True, Non Zero Value True) | 7.74 | 6.56 | +| Codecopy (0.2M, Dynamic Src Dst, 0.25X Max Code) | 8.39 | 6.56 | +| Codecopy (0.2M, Dynamic Src Dst, 0.50X Max Code Size) | 6.46 | 6.57 | +| Codecopy (0.2M, Dynamic Src Dst, 0.75X Max Code Size) | 7.87 | 6.07 | +| Codecopy (0.2M, Dynamic Src Dst, 0Bytes) | 8.15 | 7.08 | +| Codecopy (0.2M, Dynamic Src Dst, Max Code) | 6.38 | 6.04 | +| Codecopy (0.2M, Fixed Src Dst, 0.25X Max Code) | 5.92 | 6.58 | +| Codecopy (0.2M, Fixed Src Dst, 0.50X Max Code Size) | 6.38 | 6.56 | +| Codecopy (0.2M, Fixed Src Dst, 0.75X Max Code Size) | 5.54 | 6.57 | +| Codecopy (0.2M, Fixed Src Dst, 0Bytes) | 9.33 | 7.06 | +| Codecopy (0.2M, Fixed Src Dst, Max Code) | 5.33 | 6.06 | +| Create (0.2M, 0.25X Max Code, Create) | 4.97 | 5.56 | +| Create (0.2M, 0.25X Max Code, Create2) | 5.13 | 5.55 | +| Create (0.2M, 0.25X Max Code, Zero Data, Create) | 5.03 | 6.05 | +| Create (0.2M, 0.25X Max Code, Zero Data, Create2) | 4.73 | 6.58 | +| Create (0.2M, 0.50X Max Code Size With Non, Zero Data, Create) | 5.44 | 6.06 | +| Create (0.2M, 0.50X Max Code Size With Non, Zero Data, Create2) | 5.49 | 6.05 | +| Create (0.2M, 0.50X Max Code Size With Zero Data, Create) | 4.75 | 6.06 | +| Create (0.2M, 0.50X Max Code Size With Zero Data, Create2) | 4.52 | 6.05 | +| Create (0.2M, 0.75X Max Code Size With Non, Zero Data, Create) | 5.46 | 6.07 | +| Create (0.2M, 0.75X Max Code Size With Non, Zero Data, Create2) | 6.00 | 6.08 | +| Create (0.2M, 0.75X Max Code Size With Zero Data, Create) | 5.68 | 6.06 | +| Create (0.2M, 0.75X Max Code Size With Zero Data, Create2) | 4.96 | 6.06 | +| Create (0.2M, 0Bytes, Create) | 5.33 | 6.06 | +| Create (0.2M, 0Bytes, Create2) | 5.06 | 6.07 | +| Create (0.2M, Max Code, Create) | 5.54 | 6.07 | +| Create (0.2M, Max Code, Create2) | 5.23 | 6.06 | +| Create (0.2M, Max Code, Zero Data, Create) | 6.17 | 6.57 | +| Create (0.2M, Max Code, Zero Data, Create2) | 5.59 | 6.57 | +| Creates Collisions (0.2M, Create) | 5.08 | 6.07 | +| Creates Collisions (0.2M, Create2) | 4.88 | 6.06 | +| Dup (0.2M, Dup1) | 7.78 | 7.56 | +| Dup (0.2M, Dup10) | 7.41 | 6.57 | +| Dup (0.2M, Dup11) | 7.67 | 7.08 | +| Dup (0.2M, Dup12) | 8.81 | 6.55 | +| Dup (0.2M, Dup13) | 7.79 | 7.08 | +| Dup (0.2M, Dup14) | 8.25 | 7.08 | +| Dup (0.2M, Dup15) | 7.98 | 7.08 | +| Dup (0.2M, Dup16) | 7.97 | 7.55 | +| Dup (0.2M, Dup2) | 7.55 | 7.07 | +| Dup (0.2M, Dup3) | 7.29 | 7.07 | +| Dup (0.2M, Dup4) | 6.33 | 7.06 | +| Dup (0.2M, Dup5) | 6.50 | 7.09 | +| Dup (0.2M, Dup6) | 7.30 | 7.09 | +| Dup (0.2M, Dup7) | 7.49 | 6.56 | +| Dup (0.2M, Dup8) | 7.34 | 7.07 | +| Dup (0.2M, Dup9) | 7.19 | 7.06 | +| Empty Block (0.2M) | 3.77 | 4.54 | +| Extcodecopy Warm (0.2M, 1Kib) | 5.93 | 6.61 | +| Extcodecopy Warm (0.2M, 512) | 5.32 | 6.06 | +| Extcodecopy Warm (0.2M, 5Kib) | 6.34 | 6.56 | +| Initcode Jumpdest Analysis (0.2M, 00) | 7.18 | 6.57 | +| Initcode Jumpdest Analysis (0.2M, 5B) | 8.66 | 7.08 | +| Initcode Jumpdest Analysis (0.2M, 605B) | 6.66 | 6.57 | +| Initcode Jumpdest Analysis (0.2M, 605B5B) | 6.69 | 6.06 | +| Initcode Jumpdest Analysis (0.2M, 615B5B) | 7.12 | 6.57 | +| Initcode Jumpdest Analysis (0.2M, 615B5B5B) | 6.74 | 6.58 | +| Jumpdests (0.2M) | 7.27 | 7.06 | +| Jumpi Fallthrough (0.2M) | 8.48 | 6.57 | +| Jumpis (0.2M) | 7.16 | 6.06 | +| Jumps (0.2M) | 5.29 | 6.07 | +| Keccak (0.2M) | 14.16 | 8.60 | +| Log Opcodes (0.2M, Dynamic, Non Zero Topic, 0 Bytes Data, Log0) | 4.72 | 6.06 | +| Log Opcodes (0.2M, Dynamic, Non Zero Topic, 0 Bytes Data, Log1) | 5.06 | 6.06 | +| Log Opcodes (0.2M, Dynamic, Non Zero Topic, 0 Bytes Data, Log2) | 4.85 | 6.06 | +| Log Opcodes (0.2M, Dynamic, Non Zero Topic, 0 Bytes Data, Log3) | 4.70 | 6.05 | +| Log Opcodes (0.2M, Dynamic, Non Zero Topic, 0 Bytes Data, Log4) | 4.82 | 6.05 | +| Log Opcodes (0.2M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log0) | 4.43 | 6.07 | +| Log Opcodes (0.2M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log1) | 4.72 | 5.56 | +| Log Opcodes (0.2M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log2) | 4.06 | 6.59 | +| Log Opcodes (0.2M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log3) | 5.22 | 6.05 | +| Log Opcodes (0.2M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log4) | 4.17 | 6.56 | +| Log Opcodes (0.2M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log0) | 4.04 | 6.07 | +| Log Opcodes (0.2M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log1) | 4.11 | 6.08 | +| Log Opcodes (0.2M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log2) | 4.54 | 6.05 | +| Log Opcodes (0.2M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log3) | 5.02 | 6.05 | +| Log Opcodes (0.2M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log4) | 4.54 | 5.55 | +| Log Opcodes (0.2M, Dynamic, Zero Topic, 0 Bytes Data, Log0) | 4.95 | 6.04 | +| Log Opcodes (0.2M, Dynamic, Zero Topic, 0 Bytes Data, Log1) | 5.22 | 6.08 | +| Log Opcodes (0.2M, Dynamic, Zero Topic, 0 Bytes Data, Log2) | 5.27 | 6.06 | +| Log Opcodes (0.2M, Dynamic, Zero Topic, 0 Bytes Data, Log3) | 5.08 | 6.07 | +| Log Opcodes (0.2M, Dynamic, Zero Topic, 0 Bytes Data, Log4) | 4.78 | 6.05 | +| Log Opcodes (0.2M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log0) | 4.22 | 5.57 | +| Log Opcodes (0.2M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log1) | 5.58 | 6.06 | +| Log Opcodes (0.2M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log2) | 4.88 | 6.08 | +| Log Opcodes (0.2M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log3) | 4.88 | 6.58 | +| Log Opcodes (0.2M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log4) | 4.45 | 5.56 | +| Log Opcodes (0.2M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log0) | 4.05 | 6.08 | +| Log Opcodes (0.2M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log1) | 4.90 | 6.57 | +| Log Opcodes (0.2M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log2) | 4.96 | 6.06 | +| Log Opcodes (0.2M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log3) | 4.56 | 6.08 | +| Log Opcodes (0.2M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log4) | 4.57 | 6.06 | +| Log Opcodes (0.2M, Fixed, Non Zero Topic, 0 Bytes Data, Log0) | 4.87 | 6.09 | +| Log Opcodes (0.2M, Fixed, Non Zero Topic, 0 Bytes Data, Log1) | 5.18 | 6.03 | +| Log Opcodes (0.2M, Fixed, Non Zero Topic, 0 Bytes Data, Log2) | 4.38 | 6.06 | +| Log Opcodes (0.2M, Fixed, Non Zero Topic, 0 Bytes Data, Log3) | 5.36 | 6.06 | +| Log Opcodes (0.2M, Fixed, Non Zero Topic, 0 Bytes Data, Log4) | 5.09 | 6.06 | +| Log Opcodes (0.2M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log0) | 4.97 | 6.05 | +| Log Opcodes (0.2M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log1) | 4.45 | 6.06 | +| Log Opcodes (0.2M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log2) | 5.60 | 6.07 | +| Log Opcodes (0.2M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log3) | 5.18 | 6.07 | +| Log Opcodes (0.2M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log4) | 4.16 | 5.57 | +| Log Opcodes (0.2M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log0) | 4.29 | 6.56 | +| Log Opcodes (0.2M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log1) | 5.55 | 5.56 | +| Log Opcodes (0.2M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log2) | 4.74 | 6.05 | +| Log Opcodes (0.2M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log3) | 4.34 | 6.05 | +| Log Opcodes (0.2M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log4) | 3.97 | 5.54 | +| Log Opcodes (0.2M, Fixed, Zero Topic, 0 Bytes Data, Log0) | 4.77 | 6.57 | +| Log Opcodes (0.2M, Fixed, Zero Topic, 0 Bytes Data, Log1) | 5.46 | 6.06 | +| Log Opcodes (0.2M, Fixed, Zero Topic, 0 Bytes Data, Log2) | 4.93 | 6.57 | +| Log Opcodes (0.2M, Fixed, Zero Topic, 0 Bytes Data, Log3) | 5.59 | 6.57 | +| Log Opcodes (0.2M, Fixed, Zero Topic, 0 Bytes Data, Log4) | 5.57 | 6.57 | +| Log Opcodes (0.2M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log0) | 4.20 | 5.56 | +| Log Opcodes (0.2M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log1) | 4.77 | 6.55 | +| Log Opcodes (0.2M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log2) | 4.73 | 5.57 | +| Log Opcodes (0.2M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log3) | 5.00 | 6.05 | +| Log Opcodes (0.2M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log4) | 4.89 | 6.07 | +| Log Opcodes (0.2M, Fixed, Zero Topic, 1 Mib Zeros Data, Log0) | 4.82 | 6.04 | +| Log Opcodes (0.2M, Fixed, Zero Topic, 1 Mib Zeros Data, Log1) | 4.91 | 6.05 | +| Log Opcodes (0.2M, Fixed, Zero Topic, 1 Mib Zeros Data, Log2) | 5.19 | 6.06 | +| Log Opcodes (0.2M, Fixed, Zero Topic, 1 Mib Zeros Data, Log3) | 4.36 | 6.05 | +| Log Opcodes (0.2M, Fixed, Zero Topic, 1 Mib Zeros Data, Log4) | 4.45 | 6.06 | +| Mcopy (0.2M, Dynamic Src Dst, 0Bytes) | 8.27 | 7.05 | +| Mcopy (0.2M, Dynamic Src Dst, 100Bytes) | 9.52 | 7.07 | +| Mcopy (0.2M, Dynamic Src Dst, 10Kib) | 8.18 | 7.08 | +| Mcopy (0.2M, Dynamic Src Dst, 1Mib) | 4.27 | 5.58 | +| Mcopy (0.2M, Fixed Src Dst, 0Bytes) | 8.58 | 6.56 | +| Mcopy (0.2M, Fixed Src Dst, 100Bytes) | 9.24 | 6.55 | +| Mcopy (0.2M, Fixed Src Dst, 10Kib) | 7.84 | 6.57 | +| Mcopy (0.2M, Fixed Src Dst, 1Mib) | 4.87 | 5.58 | +| Memory Access (0.2M, Big Mem, Init Offset, Off 0, Mload) | 7.95 | 7.09 | +| Memory Access (0.2M, Big Mem, Init Offset, Off 0, Mstore) | 10.56 | 7.07 | +| Memory Access (0.2M, Big Mem, Init Offset, Off 0, Mstore8) | 7.77 | 6.58 | +| Memory Access (0.2M, Big Mem, Init Offset, Off 1, Mload) | 7.70 | 6.56 | +| Memory Access (0.2M, Big Mem, Init Offset, Off 1, Mstore) | 8.38 | 7.09 | +| Memory Access (0.2M, Big Mem, Init Offset, Off 1, Mstore8) | 9.04 | 6.56 | +| Memory Access (0.2M, Big Mem, Init Offset, Off 31, Mload) | 7.72 | 7.08 | +| Memory Access (0.2M, Big Mem, Init Offset, Off 31, Mstore) | 8.29 | 7.10 | +| Memory Access (0.2M, Big Mem, Init Offset, Off 31, Mstore8) | 7.57 | 7.06 | +| Memory Access (0.2M, Big Mem, Uninit Offset, Off 0, Mload) | 7.94 | 7.07 | +| Memory Access (0.2M, Big Mem, Uninit Offset, Off 0, Mstore) | 9.20 | 7.57 | +| Memory Access (0.2M, Big Mem, Uninit Offset, Off 0, Mstore8) | 7.91 | 7.57 | +| Memory Access (0.2M, Big Mem, Uninit Offset, Off 1, Mload) | 8.75 | 6.56 | +| Memory Access (0.2M, Big Mem, Uninit Offset, Off 1, Mstore) | 9.15 | 7.58 | +| Memory Access (0.2M, Big Mem, Uninit Offset, Off 1, Mstore8) | 7.95 | 7.10 | +| Memory Access (0.2M, Big Mem, Uninit Offset, Off 31, Mload) | 11.89 | 7.06 | +| Memory Access (0.2M, Big Mem, Uninit Offset, Off 31, Mstore) | 9.27 | 7.60 | +| Memory Access (0.2M, Big Mem, Uninit Offset, Off 31, Mstore8) | 7.42 | 7.07 | +| Memory Access (0.2M, Small Mem, Init Offset, Off 0, Mload) | 8.00 | 6.59 | +| Memory Access (0.2M, Small Mem, Init Offset, Off 0, Mstore) | 10.17 | 7.55 | +| Memory Access (0.2M, Small Mem, Init Offset, Off 0, Mstore8) | 7.51 | 6.56 | +| Memory Access (0.2M, Small Mem, Init Offset, Off 1, Mload) | 10.23 | 7.58 | +| Memory Access (0.2M, Small Mem, Init Offset, Off 1, Mstore) | 9.74 | 7.06 | +| Memory Access (0.2M, Small Mem, Init Offset, Off 1, Mstore8) | 9.10 | 7.06 | +| Memory Access (0.2M, Small Mem, Init Offset, Off 31, Mload) | 8.56 | 7.06 | +| Memory Access (0.2M, Small Mem, Init Offset, Off 31, Mstore) | 11.10 | 7.06 | +| Memory Access (0.2M, Small Mem, Init Offset, Off 31, Mstore8) | 6.76 | 7.07 | +| Memory Access (0.2M, Small Mem, Uninit Offset, Off 0, Mload) | 10.21 | 7.08 | +| Memory Access (0.2M, Small Mem, Uninit Offset, Off 0, Mstore) | 9.11 | 7.57 | +| Memory Access (0.2M, Small Mem, Uninit Offset, Off 0, Mstore8) | 8.05 | 7.58 | +| Memory Access (0.2M, Small Mem, Uninit Offset, Off 1, Mload) | 8.43 | 7.06 | +| Memory Access (0.2M, Small Mem, Uninit Offset, Off 1, Mstore) | 10.18 | 7.06 | +| Memory Access (0.2M, Small Mem, Uninit Offset, Off 1, Mstore8) | 8.18 | 7.60 | +| Memory Access (0.2M, Small Mem, Uninit Offset, Off 31, Mload) | 8.84 | 7.07 | +| Memory Access (0.2M, Small Mem, Uninit Offset, Off 31, Mstore) | 8.11 | 7.57 | +| Memory Access (0.2M, Small Mem, Uninit Offset, Off 31, Mstore8) | 6.83 | 6.57 | +| Mod (0.2M, Op Mod, Mod Bits 127) | 17.60 | 9.12 | +| Mod (0.2M, Op Mod, Mod Bits 191) | 20.62 | 10.62 | +| Mod (0.2M, Op Mod, Mod Bits 255) | 18.10 | 9.59 | +| Mod (0.2M, Op Mod, Mod Bits 63) | 14.09 | 8.10 | +| Mod (0.2M, Op Smod, Mod Bits 127) | 18.27 | 10.09 | +| Mod (0.2M, Op Smod, Mod Bits 191) | 21.47 | 10.10 | +| Mod (0.2M, Op Smod, Mod Bits 255) | 16.91 | 9.59 | +| Mod (0.2M, Op Smod, Mod Bits 63) | 14.90 | 8.09 | +| Modarith (0.2M, Op Addmod, Mod Bits 127) | 14.88 | 9.08 | +| Modarith (0.2M, Op Addmod, Mod Bits 191) | 17.71 | 9.07 | +| Modarith (0.2M, Op Addmod, Mod Bits 255) | 16.18 | 9.59 | +| Modarith (0.2M, Op Addmod, Mod Bits 63) | 13.11 | 7.57 | +| Modarith (0.2M, Op Mulmod, Mod Bits 127) | 21.39 | 11.60 | +| Modarith (0.2M, Op Mulmod, Mod Bits 191) | 29.24 | 12.64 | +| Modarith (0.2M, Op Mulmod, Mod Bits 255) | 24.59 | 12.60 | +| Modarith (0.2M, Op Mulmod, Mod Bits 63) | 18.25 | 9.59 | +| Modexp (0.2M, Mod 1045 Gas Base Heavy) | 197.9 | 74.26 | +| Modexp (0.2M, Mod 1360 Gas Balanced) | 58.20 | 23.26 | +| Modexp (0.2M, Mod 400 Gas Exp Heavy) | 66.74 | 26.26 | +| Modexp (0.2M, Mod 408 Gas Balanced) | 48.93 | 20.69 | +| Modexp (0.2M, Mod 408 Gas Base Heavy) | 186.8 | 67.72 | +| Modexp (0.2M, Mod 600 As Balanced) | 53.77 | 22.18 | +| Modexp (0.2M, Mod 600 Gas Exp Heavy) | 72.56 | 28.30 | +| Modexp (0.2M, Mod 616 Gas Base Heavy) | 183.6 | 72.73 | +| Modexp (0.2M, Mod 677 Gas Base Heavy) | 56.06 | 23.25 | +| Modexp (0.2M, Mod 765 Gas Exp Heavy) | 64.16 | 23.78 | +| Modexp (0.2M, Mod 767 Gas Balanced) | 50.72 | 20.20 | +| Modexp (0.2M, Mod 800 Gas Base Heavy) | 192.4 | 74.72 | +| Modexp (0.2M, Mod 800 Gas Exp Heavy) | 71.56 | 29.33 | +| Modexp (0.2M, Mod 852 Gas Exp Heavy) | 72.71 | 28.79 | +| Modexp (0.2M, Mod 867 Gas Base Heavy) | 193.3 | 74.16 | +| Modexp (0.2M, Mod 996 Gas Balanced) | 50.51 | 21.73 | +| Modexp (0.2M, Mod Even 1024B Exp 1024) | 5.03 | 6.05 | +| Modexp (0.2M, Mod Even 128B Exp 1024) | 27.98 | 14.63 | +| Modexp (0.2M, Mod Even 16B Exp 320) | 71.94 | 27.80 | +| Modexp (0.2M, Mod Even 24B Exp 168) | 58.73 | 24.22 | +| Modexp (0.2M, Mod Even 256B Exp 1024) | 4.60 | 6.57 | +| Modexp (0.2M, Mod Even 32B Exp 256) | 55.61 | 22.70 | +| Modexp (0.2M, Mod Even 32B Exp 40) | 46.92 | 20.69 | +| Modexp (0.2M, Mod Even 32B Exp 96) | 53.65 | 21.71 | +| Modexp (0.2M, Mod Even 512B Exp 1024) | 5.12 | 6.05 | +| Modexp (0.2M, Mod Even 64B Exp 512) | 44.70 | 22.27 | +| Modexp (0.2M, Mod Even 8B Exp 896) | 120.4 | 43.42 | +| Modexp (0.2M, Mod Exp 208 Gas Balanced) | 43.95 | 19.21 | +| Modexp (0.2M, Mod Exp 215 Gas Exp Heavy) | 105.3 | 39.92 | +| Modexp (0.2M, Mod Exp 298 Gas Exp Heavy) | 117.2 | 42.89 | +| Modexp (0.2M, Mod Min As Balanced) | 48.70 | 20.70 | +| Modexp (0.2M, Mod Min As Base Heavy) | 153.7 | 57.01 | +| Modexp (0.2M, Mod Min As Exp Heavy) | 98.25 | 38.90 | +| Modexp (0.2M, Mod Odd 1024B Exp 1024) | 5.72 | 6.06 | +| Modexp (0.2M, Mod Odd 128B Exp 1024) | 26.89 | 15.14 | +| Modexp (0.2M, Mod Odd 256B Exp 1024) | 5.21 | 6.55 | +| Modexp (0.2M, Mod Odd 32B Exp 256) | 58.52 | 23.25 | +| Modexp (0.2M, Mod Odd 32B Exp 96) | 52.44 | 22.74 | +| Modexp (0.2M, Mod Odd 32B Exp Cover Windows) | 45.17 | 18.19 | +| Modexp (0.2M, Mod Odd 512B Exp 1024) | 5.22 | 5.56 | +| Modexp (0.2M, Mod Odd 64B Exp 512) | 45.34 | 22.24 | +| Modexp (0.2M, Mod Pawel 2) | 68.28 | 26.24 | +| Modexp (0.2M, Mod Pawel 3) | 56.09 | 22.70 | +| Modexp (0.2M, Mod Pawel 4) | 49.86 | 20.71 | +| Modexp (0.2M, Mod Vul Common 1152N1) | 33.88 | 15.67 | +| Modexp (0.2M, Mod Vul Common 1349N1) | 46.87 | 20.19 | +| Modexp (0.2M, Mod Vul Common 1360N1) | 49.94 | 21.23 | +| Modexp (0.2M, Mod Vul Common 1360N2) | 44.44 | 20.71 | +| Modexp (0.2M, Mod Vul Common 200N1) | 30.53 | 14.66 | +| Modexp (0.2M, Mod Vul Common 200N2) | 34.39 | 15.65 | +| Modexp (0.2M, Mod Vul Common 200N3) | 33.70 | 15.64 | +| Modexp (0.2M, Mod Vul Example 1) | 56.88 | 23.25 | +| Modexp (0.2M, Mod Vul Example 2) | 55.31 | 21.73 | +| Modexp (0.2M, Mod Vul Guido 1 Even) | 38.85 | 18.18 | +| Modexp (0.2M, Mod Vul Guido 2 Even) | 64.07 | 25.77 | +| Modexp (0.2M, Mod Vul Guido 3 Even) | 98.59 | 41.38 | +| Modexp (0.2M, Mod Vul Marius 1 Even) | 57.90 | 23.74 | +| Modexp (0.2M, Mod Vul Nagydani 1 Pow 0X10001) | 39.58 | 17.70 | +| Modexp (0.2M, Mod Vul Nagydani 1 Qube) | 32.08 | 15.16 | +| Modexp (0.2M, Mod Vul Nagydani 1 Square) | 32.69 | 14.67 | +| Modexp (0.2M, Mod Vul Nagydani 2 Pow 0X10001) | 40.24 | 18.21 | +| Modexp (0.2M, Mod Vul Nagydani 2 Qube) | 88.21 | 33.33 | +| Modexp (0.2M, Mod Vul Nagydani 2 Square) | 75.69 | 30.28 | +| Modexp (0.2M, Mod Vul Nagydani 3 Pow 0X10001) | 37.25 | 18.18 | +| Modexp (0.2M, Mod Vul Nagydani 3 Qube) | 198.9 | 74.18 | +| Modexp (0.2M, Mod Vul Nagydani 3 Square) | 175.2 | 67.19 | +| Modexp (0.2M, Mod Vul Nagydani 4 Pow 0X10001) | 36.76 | 17.66 | +| Modexp (0.2M, Mod Vul Nagydani 4 Qube) | 221.3 | 82.34 | +| Modexp (0.2M, Mod Vul Nagydani 4 Square) | 200.3 | 76.23 | +| Modexp (0.2M, Mod Vul Nagydani 5 Pow 0X10001) | 23.30 | 12.61 | +| Modexp (0.2M, Mod Vul Nagydani 5 Qube) | 199.3 | 77.28 | +| Modexp (0.2M, Mod Vul Nagydani 5 Square) | 185.4 | 70.69 | +| Modexp (0.2M, Mod Vul Pawel 1 Exp Heavy) | 113.8 | 41.91 | +| Modexp (0.2M, Mod Vul Pawel 2 Exp Heavy) | 64.84 | 25.77 | +| Modexp (0.2M, Mod Vul Pawel 3 Exp Heavy) | 56.02 | 22.73 | +| Modexp (0.2M, Mod Vul Pawel 4 Exp Heavy) | 48.59 | 21.23 | +| Msize (0.2M, Mem Size 0) | 8.00 | 7.07 | +| Msize (0.2M, Mem Size 1) | 8.29 | 7.08 | +| Msize (0.2M, Mem Size 1000) | 8.09 | 7.09 | +| Msize (0.2M, Mem Size 100000) | 9.42 | 7.07 | +| Msize (0.2M, Mem Size 1000000) | 8.69 | 6.58 | +| Precompile Fixed Cost (0.2M, Blake2F) | 39.29 | 16.16 | +| Precompile Fixed Cost (0.2M, Bls12 Fp To G1) | 11.96 | 31.29 | +| Precompile Fixed Cost (0.2M, Bls12 Fp To G2) | 10.87 | 23.75 | +| Precompile Fixed Cost (0.2M, Bls12 G1Add) | 9.65 | 21.21 | +| Precompile Fixed Cost (0.2M, Bls12 G1Msm) | 4.91 | 6.06 | +| Precompile Fixed Cost (0.2M, Bls12 G2Add) | 10.76 | 22.23 | +| Precompile Fixed Cost (0.2M, Bls12 G2Msm) | 5.11 | 6.07 | +| Precompile Fixed Cost (0.2M, Bls12 Pairing Check) | 13.99 | 25.28 | +| Precompile Fixed Cost (0.2M, Bn128 Add 1 2) | 12.53 | 7.59 | +| Precompile Fixed Cost (0.2M, Bn128 Add Infinities) | 10.53 | 6.57 | +| Precompile Fixed Cost (0.2M, Bn128 Add) | 12.54 | 10.61 | +| Precompile Fixed Cost (0.2M, Bn128 Mul 1 2 2 Scalar) | 5.20 | 6.58 | +| Precompile Fixed Cost (0.2M, Bn128 Mul 1 2 32 Byte Scalar) | 22.29 | 13.15 | +| Precompile Fixed Cost (0.2M, Bn128 Mul 32 Byte Coord And 2 Scalar) | 5.68 | 7.07 | +| Precompile Fixed Cost (0.2M, Bn128 Mul 32 Byte Coord And Scalar) | 23.13 | 13.11 | +| Precompile Fixed Cost (0.2M, Bn128 Mul Infinities 2 Scalar) | 4.55 | 7.08 | +| Precompile Fixed Cost (0.2M, Bn128 Mul Infinities 32 Byte Scalar) | 16.68 | 10.09 | +| Precompile Fixed Cost (0.2M, Bn128 Mul) | 22.78 | 13.66 | +| Precompile Fixed Cost (0.2M, Bn128 One Pairing) | 20.71 | 11.10 | +| Precompile Fixed Cost (0.2M, Bn128 Two Pairings Empty) | 4.21 | 5.58 | +| Precompile Fixed Cost (0.2M, Bn128 Two Pairings) | 17.12 | 10.61 | +| Precompile Fixed Cost (0.2M, Ecrecover) | 23.28 | 8.08 | +| Precompile Fixed Cost (0.2M, Point Evaluation) | 23.03 | 64.17 | +| Precompile Only Data Input (0.2M, Identity) | 7.52 | 7.06 | +| Precompile Only Data Input (0.2M, Ripemd, 160) | 5.34 | 6.06 | +| Precompile Only Data Input (0.2M, Sha2, 256) | 5.32 | 8.59 | +| Push (0.2M, Push0) | 8.57 | 7.07 | +| Push (0.2M, Push1) | 8.80 | 6.56 | +| Push (0.2M, Push10) | 7.72 | 7.06 | +| Push (0.2M, Push11) | 7.86 | 6.56 | +| Push (0.2M, Push12) | 8.98 | 7.06 | +| Push (0.2M, Push13) | 10.32 | 6.57 | +| Push (0.2M, Push14) | 7.57 | 7.08 | +| Push (0.2M, Push15) | 9.82 | 6.59 | +| Push (0.2M, Push16) | 9.71 | 7.09 | +| Push (0.2M, Push17) | 10.89 | 7.07 | +| Push (0.2M, Push18) | 8.86 | 7.07 | +| Push (0.2M, Push19) | 8.95 | 7.06 | +| Push (0.2M, Push2) | 9.36 | 6.58 | +| Push (0.2M, Push20) | 9.88 | 7.08 | +| Push (0.2M, Push21) | 8.27 | 7.07 | +| Push (0.2M, Push22) | 10.81 | 7.58 | +| Push (0.2M, Push23) | 10.30 | 7.56 | +| Push (0.2M, Push24) | 9.86 | 8.09 | +| Push (0.2M, Push25) | 12.83 | 7.07 | +| Push (0.2M, Push26) | 11.25 | 7.56 | +| Push (0.2M, Push27) | 10.64 | 7.07 | +| Push (0.2M, Push28) | 12.12 | 7.07 | +| Push (0.2M, Push29) | 10.35 | 7.07 | +| Push (0.2M, Push3) | 7.69 | 7.07 | +| Push (0.2M, Push30) | 10.68 | 7.56 | +| Push (0.2M, Push31) | 10.80 | 7.05 | +| Push (0.2M, Push32) | 10.96 | 8.06 | +| Push (0.2M, Push4) | 6.76 | 6.58 | +| Push (0.2M, Push5) | 9.43 | 6.55 | +| Push (0.2M, Push6) | 9.61 | 7.08 | +| Push (0.2M, Push7) | 7.69 | 7.58 | +| Push (0.2M, Push8) | 8.03 | 7.07 | +| Push (0.2M, Push9) | 9.41 | 7.08 | +| Return Revert (0.2M, 1Kib Of Non, Zero Data, Return) | 8.72 | 7.08 | +| Return Revert (0.2M, 1Kib Of Non, Zero Data, Revert) | 11.54 | 7.07 | +| Return Revert (0.2M, 1Kib Of Zero Data, Return) | 10.77 | 6.55 | +| Return Revert (0.2M, 1Kib Of Zero Data, Revert) | 12.78 | 6.58 | +| Return Revert (0.2M, 1Mib Of Non, Zero Data, Return) | 5.92 | 6.05 | +| Return Revert (0.2M, 1Mib Of Non, Zero Data, Revert) | 6.02 | 5.57 | +| Return Revert (0.2M, 1Mib Of Zero Data, Return) | 4.55 | 6.08 | +| Return Revert (0.2M, 1Mib Of Zero Data, Revert) | 4.61 | 5.56 | +| Return Revert (0.2M, Empty, Return) | 10.74 | 7.58 | +| Return Revert (0.2M, Empty, Revert) | 11.76 | 8.08 | +| Returndatacopy (0.2M, Fixed Dst False, 0Bytes) | 11.94 | 7.06 | +| Returndatacopy (0.2M, Fixed Dst False, 100Bytes) | 8.38 | 7.07 | +| Returndatacopy (0.2M, Fixed Dst False, 10Kib) | 7.35 | 6.56 | +| Returndatacopy (0.2M, Fixed Dst False, 1Mib) | 5.00 | 5.56 | +| Returndatacopy (0.2M, Fixed Dst True, 0Bytes) | 8.83 | 7.07 | +| Returndatacopy (0.2M, Fixed Dst True, 100Bytes) | 8.32 | 7.07 | +| Returndatacopy (0.2M, Fixed Dst True, 10Kib) | 6.97 | 6.05 | +| Returndatacopy (0.2M, Fixed Dst True, 1Mib) | 5.19 | 6.06 | +| Returndatasize Nonzero (0.2M, Returned Size 0, Return Data Style Returndatastyle.Identity) | 7.81 | 7.08 | +| Returndatasize Nonzero (0.2M, Returned Size 0, Return Data Style Returndatastyle.Return) | 7.66 | 7.07 | +| Returndatasize Nonzero (0.2M, Returned Size 0, Return Data Style Returndatastyle.Revert) | 9.81 | 7.05 | +| Returndatasize Nonzero (0.2M, Returned Size 1, Return Data Style Returndatastyle.Identity) | 7.24 | 7.06 | +| Returndatasize Nonzero (0.2M, Returned Size 1, Return Data Style Returndatastyle.Return) | 7.69 | 7.08 | +| Returndatasize Nonzero (0.2M, Returned Size 1, Return Data Style Returndatastyle.Revert) | 8.08 | 7.06 | +| Returndatasize Zero (0.2M) | 7.82 | 7.06 | +| Selfbalance (0.2M) | 22.71 | 11.09 | +| Selfdestruct Created (0.2M, No Value) | 4.26 | 6.55 | +| Selfdestruct Created (0.2M, With Value) | 3.88 | 6.07 | +| Selfdestruct Existing (0.2M, No Value) | 4.60 | 6.06 | +| Selfdestruct Existing (0.2M, With Value) | 5.14 | 6.08 | +| Selfdestruct Initcode (0.2M, No Value) | 3.92 | 5.55 | +| Selfdestruct Initcode (0.2M, With Value) | 4.22 | 6.08 | +| Shifts (0.2M, Shift Right Sar) | 10.95 | 6.55 | +| Shifts (0.2M, Shift Right Shr) | 10.59 | 7.58 | +| Storage Access Cold (0.2M, Absent Slots False, Ssload) | 6.19 | 6.06 | +| Storage Access Cold (0.2M, Absent Slots False, Sstore New Value) | 4.85 | 6.05 | +| Storage Access Cold (0.2M, Absent Slots False, Sstore New Value, Out Of Gas) | 4.90 | 6.09 | +| Storage Access Cold (0.2M, Absent Slots False, Sstore New Value, Revert) | 5.26 | 6.57 | +| Storage Access Cold (0.2M, Absent Slots False, Sstore Same Value) | 5.47 | 6.56 | +| Storage Access Cold (0.2M, Absent Slots False, Sstore Same Value, Out Of Gas) | 6.80 | 7.07 | +| Storage Access Cold (0.2M, Absent Slots False, Sstore Same Value, Revert) | 6.18 | 6.07 | +| Storage Access Cold (0.2M, Absent Slots True, Ssload) | 4.86 | 6.06 | +| Storage Access Cold (0.2M, Absent Slots True, Sstore New Value) | 4.09 | 5.55 | +| Storage Access Cold (0.2M, Absent Slots True, Sstore New Value, Out Of Gas) | 4.15 | 6.04 | +| Storage Access Cold (0.2M, Absent Slots True, Sstore New Value, Revert) | 4.35 | 5.54 | +| Storage Access Cold (0.2M, Absent Slots True, Sstore Same Value) | 4.12 | 6.56 | +| Storage Access Cold (0.2M, Absent Slots True, Sstore Same Value, Out Of Gas) | 4.50 | 6.05 | +| Storage Access Cold (0.2M, Absent Slots True, Sstore Same Value, Revert) | 3.76 | 6.06 | +| Storage Access Warm (0.2M, Sload) | 6.25 | 6.56 | +| Storage Access Warm (0.2M, Sstore New Value) | 11.69 | 7.07 | +| Storage Access Warm (0.2M, Sstore Same Value) | 8.41 | 6.55 | +| Swap (0.2M, Swap1) | 10.64 | 7.08 | +| Swap (0.2M, Swap10) | 10.60 | 7.07 | +| Swap (0.2M, Swap11) | 13.90 | 7.10 | +| Swap (0.2M, Swap12) | 11.72 | 7.58 | +| Swap (0.2M, Swap13) | 10.28 | 7.07 | +| Swap (0.2M, Swap14) | 10.97 | 7.07 | +| Swap (0.2M, Swap15) | 10.11 | 7.08 | +| Swap (0.2M, Swap16) | 10.11 | 7.07 | +| Swap (0.2M, Swap2) | 10.17 | 8.07 | +| Swap (0.2M, Swap3) | 10.34 | 7.58 | +| Swap (0.2M, Swap4) | 9.54 | 7.58 | +| Swap (0.2M, Swap5) | 9.94 | 7.57 | +| Swap (0.2M, Swap6) | 9.76 | 7.57 | +| Swap (0.2M, Swap7) | 10.07 | 7.59 | +| Swap (0.2M, Swap8) | 11.93 | 7.05 | +| Swap (0.2M, Swap9) | 9.88 | 7.56 | +| Tload (0.2M, Val Mut False, Key Mut False) | 5.14 | 6.06 | +| Tload (0.2M, Val Mut False, Key Mut True) | 4.87 | 6.05 | +| Tload (0.2M, Val Mut True, Key Mut False) | 5.47 | 5.55 | +| Tload (0.2M, Val Mut True, Key Mut True) | 4.79 | 6.05 | +| Tstore (0.2M, Dense Val Mut False, Key Mut False) | 7.54 | 7.07 | +| Tstore (0.2M, Dense Val Mut False, Key Mut True) | 6.48 | 6.07 | +| Tstore (0.2M, Dense Val Mut True, Key Mut False) | 11.02 | 6.56 | +| Tstore (0.2M, Dense Val Mut True, Key Mut True) | 9.44 | 6.57 | +| Unop (0.2M, Iszero) | 11.15 | 7.58 | +| Unop (0.2M, Not) | 7.64 | 7.08 | +| Zero Param (0.2M, Address) | 12.33 | 8.09 | +| Zero Param (0.2M, Basefee) | 10.62 | 6.58 | +| Zero Param (0.2M, Blobbasefee) | 9.42 | 7.57 | +| Zero Param (0.2M, Caller) | 10.66 | 7.08 | +| Zero Param (0.2M, Chainid) | 9.10 | 7.09 | +| Zero Param (0.2M, Codesize) | 9.71 | 7.06 | +| Zero Param (0.2M, Coinbase) | 10.95 | 7.58 | +| Zero Param (0.2M, Gas) | 10.08 | 7.07 | +| Zero Param (0.2M, Gaslimit) | 8.76 | 7.07 | +| Zero Param (0.2M, Gasprice) | 10.58 | 7.56 | +| Zero Param (0.2M, Number) | 9.07 | 7.08 | +| Zero Param (0.2M, Origin) | 11.95 | 7.09 | +| Zero Param (0.2M, Prevrandao) | 13.10 | 8.07 | +| Zero Param (0.2M, Timestamp) | 9.84 | 7.58 | \ No newline at end of file diff --git a/www/docs/pages/benchmark-results/gas-categorized/0.2m/risc0-0.2M-4.md b/www/docs/pages/benchmark-results/gas-categorized/0.2m/risc0-0.2M-4.md new file mode 100644 index 00000000..23c36958 --- /dev/null +++ b/www/docs/pages/benchmark-results/gas-categorized/0.2m/risc0-0.2M-4.md @@ -0,0 +1,539 @@ +# zkEVM Benchmark Results + +Generated on: 2026-01-01 15:22:14 + +## Folder: zkevm-metrics-risc0-0.2M-4 + +**zkVM:** risc0-v3.0.3 (4 GPUs) + +**Hardware Configuration:** CPU: AMD EPYC 7B13 64-Core Processor | RAM: 371 GiB | GPU: NVIDIA GeForce RTX 4090, NVIDIA GeForce RTX 4090, NVIDIA GeForce RTX 4090, NVIDIA GeForce RTX 4090 + +## Proving Metrics + +| Benchmark | Gas Used | Proof Size (bytes) | Proving Time (ms) | Proving Time (s) | Peak Memory (MB) | Avg Memory (MB) | Initial Memory (MB) | +|---|---|---|---|---|---|---|---| +| Block Full Access List And Data (0.2M) | 199,990 | 223,239 | 3,919 | 3.92 | 12,124,372 | 12,118,028 | 12,102,900 | +| Block Full Data (0.2M, Non Zero Byte) | 200,000 | 223,239 | 4,262 | 4.26 | 13,553,268 | 13,553,268 | 13,548,388 | +| Block Full Data (0.2M, Zero Byte) | 200,000 | 223,239 | 4,327 | 4.33 | 6,516,908 | 6,515,932 | 6,510,144 | +| Block Full Of Ether Transfers (0.2M, A To A) | 189,000 | 223,239 | 6,551 | 6.55 | 11,312,524 | 11,297,493.6 | 11,279,340 | +| Block Full Of Ether Transfers (0.2M, A To B) | 189,000 | 223,239 | 6,783 | 6.78 | 2,581,912 | 2,581,912 | 2,569,160 | +| Block Full Of Ether Transfers (0.2M, A To Diff Acc) | 189,000 | 223,239 | 7,827 | 7.83 | 9,633,068 | 9,630,140 | 9,613,472 | +| Block Full Of Ether Transfers (0.2M, Diff Acc To B) | 189,000 | 223,239 | 6,914 | 6.91 | 4,507,108 | 4,507,108 | 4,500,276 | +| Block Full Of Ether Transfers (0.2M, Diff Acc To Diff Acc) | 189,000 | 223,239 | 7,969 | 7.97 | 2,084,904 | 2,078,825.1 | 2,063,432 | +| Bytecode Single Opcode (0.2M, Callcode) | 200,000 | 223,239 | 24,362 | 24.36 | 2,223,124 | 2,157,122 | 2,082,580 | +| Bytecode Single Opcode (0.2M, Call) | 200,000 | 223,239 | 26,884 | 26.88 | 7,974,580 | 7,937,899.8 | 7,886,316 | +| Bytecode Single Opcode (0.2M, Delegatecall) | 200,000 | 223,239 | 26,196 | 26.20 | 8,289,784 | 8,245,735.2 | 8,233,188 | +| Bytecode Single Opcode (0.2M, Extcodecopy) | 200,000 | 223,239 | 24,517 | 24.52 | 14,400,408 | 14,376,332.3 | 14,338,256 | +| Bytecode Single Opcode (0.2M, Extcodehash) | 200,000 | 223,239 | 26,647 | 26.65 | 13,506,012 | 13,503,508 | 13,503,084 | +| Bytecode Single Opcode (0.2M, Extcodesize) | 200,000 | 223,239 | 24,219 | 24.22 | 2,689,204 | 2,642,681.4 | 2,603,292 | +| Bytecode Single Opcode (0.2M, Staticcall) | 200,000 | 223,239 | 26,911 | 26.91 | 4,847,956 | 4,842,046 | 4,812,388 | +| Create (0.2M, 0Bytes, Create2) | 200,000 | 223,239 | 5,870 | 5.87 | 8,359,448 | 8,352,128 | 8,336,024 | +| Create (0.2M, 0Bytes, Create) | 200,000 | 223,239 | 4,586 | 4.59 | 2,937,832 | 2,935,625.3 | 2,932,952 | +| Create (0.2M, 0Bytes, Create2) | 200,000 | 223,239 | 5,059 | 5.06 | 3,877,016 | 3,874,576 | 3,866,280 | +| Create (0.2M, 0Bytes, Create) | 200,000 | 223,239 | 5,332 | 5.33 | 15,090,568 | 15,053,334 | 15,090,568 | +| Create (0.2M, 0.25X Max Code, Zero Data, Create2) | 200,000 | 223,239 | 4,734 | 4.73 | 870,200 | 857,941.1 | 840,920 | +| Create (0.2M, 0.25X Max Code, Zero Data, Create) | 200,000 | 223,239 | 5,026 | 5.03 | 2,937,584 | 2,936,040 | 2,923,920 | +| Create (0.2M, 0.25X Max Code, Create2) | 200,000 | 223,239 | 5,131 | 5.13 | 13,619,668 | 13,619,092 | 13,611,860 | +| Create (0.2M, 0.25X Max Code, Create) | 200,000 | 223,239 | 4,971 | 4.97 | 4,140,064 | 4,140,064 | 4,133,164 | +| Create (0.2M, 0.50X Max Code Size With Non, Zero Data, Create2) | 200,000 | 223,239 | 5,492 | 5.49 | 7,565,908 | 7,562,097.3 | 7,546,668 | +| Create (0.2M, 0.50X Max Code Size With Non, Zero Data, Create) | 200,000 | 223,239 | 5,441 | 5.44 | 5,890,908 | 5,887,636 | 5,888,456 | +| Create (0.2M, 0.50X Max Code Size With Zero Data, Create2) | 200,000 | 223,239 | 4,524 | 4.52 | 10,487,084 | 10,486,433.3 | 10,484,156 | +| Create (0.2M, 0.50X Max Code Size With Zero Data, Create) | 200,000 | 223,239 | 4,754 | 4.75 | 2,915,548 | 2,914,572 | 2,904,812 | +| Create (0.2M, 0.75X Max Code Size With Non, Zero Data, Create2) | 200,000 | 223,239 | 5,997 | 6.00 | 4,175,312 | 4,172,969.6 | 4,161,648 | +| Create (0.2M, 0.75X Max Code Size With Non, Zero Data, Create) | 200,000 | 223,239 | 5,465 | 5.46 | 7,218,540 | 7,218,149.6 | 7,203,900 | +| Create (0.2M, 0.75X Max Code Size With Zero Data, Create2) | 200,000 | 223,239 | 4,960 | 4.96 | 13,823,436 | 13,822,460 | 13,821,868 | +| Create (0.2M, 0.75X Max Code Size With Zero Data, Create) | 200,000 | 223,239 | 5,683 | 5.68 | 4,093,324 | 4,093,324 | 4,084,404 | +| Create (0.2M, Max Code, Zero Data, Create2) | 200,000 | 223,239 | 5,593 | 5.59 | 5,834,872 | 5,834,686 | 5,826,088 | +| Create (0.2M, Max Code, Zero Data, Create) | 200,000 | 223,239 | 6,167 | 6.17 | 13,619,240 | 13,618,756 | 13,618,800 | +| Create (0.2M, Max Code, Create2) | 200,000 | 223,239 | 5,233 | 5.23 | 11,437,200 | 11,437,200 | 11,402,072 | +| Create (0.2M, Max Code, Create) | 200,000 | 223,239 | 5,543 | 5.54 | 4,860,332 | 4,855,930 | 4,848,932 | +| Creates Collisions (0.2M, Create2) | 200,000 | 223,239 | 4,879 | 4.88 | 621,484 | 618,383 | 614,652 | +| Creates Collisions (0.2M, Create) | 200,000 | 223,239 | 5,080 | 5.08 | 11,029,480 | 11,027,853.3 | 11,024,600 | +| Initcode Jumpdest Analysis (0.2M, 00) | 200,000 | 223,239 | 7,184 | 7.18 | 2,261,128 | 2,257,386.7 | 2,245,512 | +| Initcode Jumpdest Analysis (0.2M, 5B) | 200,000 | 223,239 | 8,660 | 8.66 | 6,218,240 | 6,214,893.7 | 6,208,480 | +| Initcode Jumpdest Analysis (0.2M, 605B5B) | 200,000 | 223,239 | 6,693 | 6.69 | 2,957,812 | 2,950,550 | 2,945,852 | +| Initcode Jumpdest Analysis (0.2M, 605B) | 200,000 | 223,239 | 6,664 | 6.66 | 8,982,916 | 8,981,632 | 8,982,916 | +| Initcode Jumpdest Analysis (0.2M, 615B5B5B) | 200,000 | 223,239 | 6,742 | 6.74 | 7,207,536 | 7,203,795.2 | 7,206,716 | +| Initcode Jumpdest Analysis (0.2M, 615B5B) | 200,000 | 223,239 | 7,122 | 7.12 | 14,819,388 | 14,814,358.4 | 14,809,704 | +| Amortized Bn128 Pairings (0.2M) | 200,000 | 223,239 | 21,715 | 21.71 | 3,674,516 | 3,645,352.9 | 3,621,496 | +| Empty Block (0.2M) | 0 | 223,239 | 3,769 | 3.77 | 10,541,852 | 10,533,800 | 10,523,308 | +| Binop Simple (0.2M, Add) | 200,000 | 223,239 | 7,102 | 7.10 | 1,908,828 | 1,898,386.4 | 1,889,920 | +| Binop Simple (0.2M, And) | 200,000 | 223,239 | 8,596 | 8.60 | 14,068,708 | 14,066,888 | 14,057,972 | +| Binop Simple (0.2M, Byte) | 200,000 | 223,239 | 9,256 | 9.26 | 6,174,088 | 6,158,484 | 6,174,088 | +| Binop Simple (0.2M, Div, 0) | 200,000 | 223,239 | 17,349 | 17.35 | 3,213,328 | 3,205,194.7 | 3,188,588 | +| Binop Simple (0.2M, Div, 1) | 200,000 | 223,239 | 17,359 | 17.36 | 9,358,176 | 9,338,798 | 9,318,396 | +| Binop Simple (0.2M, Eq) | 200,000 | 223,239 | 9,490 | 9.49 | 12,156,376 | 12,145,096 | 12,119,376 | +| Binop Simple (0.2M, Exp) | 200,000 | 223,239 | 13,375 | 13.38 | 14,910,564 | 14,910,564 | 14,882,648 | +| Binop Simple (0.2M, Gt) | 200,000 | 223,239 | 8,533 | 8.53 | 7,125,632 | 7,123,389.1 | 7,120,752 | +| Binop Simple (0.2M, Lt) | 200,000 | 223,239 | 7,594 | 7.59 | 656,064 | 646,234.3 | 630,688 | +| Binop Simple (0.2M, Mod) | 200,000 | 223,239 | 9,769 | 9.77 | 14,616,436 | 14,606,874 | 14,612,532 | +| Binop Simple (0.2M, Mul) | 200,000 | 223,239 | 12,241 | 12.24 | 4,866,200 | 4,860,077.8 | 4,854,488 | +| Binop Simple (0.2M, Or) | 200,000 | 223,239 | 10,039 | 10.04 | 8,511,720 | 8,503,424 | 8,490,248 | +| Binop Simple (0.2M, Sar) | 200,000 | 223,239 | 12,095 | 12.10 | 7,856,532 | 7,838,347 | 7,821,224 | +| Binop Simple (0.2M, Sdiv, 0) | 200,000 | 223,239 | 18,324 | 18.32 | 739,252 | 714,344.5 | 678,740 | +| Binop Simple (0.2M, Sdiv, 1) | 200,000 | 223,239 | 18,646 | 18.65 | 10,515,744 | 10,510,099 | 10,490,012 | +| Binop Simple (0.2M, Sgt) | 200,000 | 223,239 | 12,272 | 12.27 | 14,115,260 | 14,098,342.7 | 14,089,236 | +| Binop Simple (0.2M, Shl) | 200,000 | 223,239 | 11,068 | 11.07 | 1,250,080 | 1,224,843.4 | 1,189,568 | +| Binop Simple (0.2M, Shr) | 200,000 | 223,239 | 9,570 | 9.57 | 11,024,600 | 11,009,374.4 | 10,990,440 | +| Binop Simple (0.2M, Signextend) | 200,000 | 223,239 | 11,541 | 11.54 | 2,022,160 | 1,995,612.8 | 1,980,192 | +| Binop Simple (0.2M, Slt) | 200,000 | 223,239 | 10,429 | 10.43 | 10,226,712 | 10,218,507.6 | 10,188,332 | +| Binop Simple (0.2M, Smod) | 200,000 | 223,239 | 11,799 | 11.80 | 8,424,652 | 8,410,096.4 | 8,393,940 | +| Binop Simple (0.2M, Sub) | 200,000 | 223,239 | 7,532 | 7.53 | 10,967,868 | 10,960,786 | 10,942,932 | +| Binop Simple (0.2M, Xor) | 200,000 | 223,239 | 9,508 | 9.51 | 14,408,332 | 14,398,932.8 | 14,403,176 | +| Blobhash (0.2M, No Blobs) | 200,000 | 223,239 | 7,272 | 7.27 | 5,367,688 | 5,365,345.6 | 5,361,832 | +| Blobhash (0.2M, One Blob And Accessed) | 200,000 | 223,239 | 11,559 | 11.56 | 7,260,204 | 7,246,087.1 | 7,218,536 | +| Blobhash (0.2M, One Blob But Access Non, Existent Index) | 200,000 | 223,239 | 9,881 | 9.88 | 6,627,112 | 6,625,624 | 6,622,680 | +| Blobhash (0.2M, Six Blobs, Access Latest) | 200,000 | 223,239 | 8,901 | 8.90 | 13,609,068 | 13,603,572.9 | 13,597,356 | +| Calldataload (0.2M, Empty) | 200,000 | 223,239 | 11,381 | 11.38 | 13,259,152 | 13,246,124.9 | 13,238,656 | +| Calldataload (0.2M, One, Loop) | 200,000 | 223,239 | 12,016 | 12.02 | 5,955,152 | 5,952,430 | 5,940,924 | +| Calldataload (0.2M, Zero, Loop) | 200,000 | 223,239 | 12,672 | 12.67 | 7,159,952 | 7,149,866.7 | 7,136,528 | +| Calldatasize (0.2M, Calldata Length 0) | 200,000 | 223,239 | 9,309 | 9.31 | 1,273,052 | 1,259,810.5 | 1,250,080 | +| Calldatasize (0.2M, Calldata Length 10000) | 200,000 | 223,239 | 8,967 | 8.97 | 9,750,728 | 9,745,388 | 9,731,780 | +| Calldatasize (0.2M, Calldata Length 1000) | 200,000 | 223,239 | 7,877 | 7.88 | 5,125,172 | 5,112,236 | 5,095,956 | +| Callvalue (0.2M, From Origin False, Non Zero Value False) | 200,000 | 223,239 | 9,992 | 9.99 | 13,065,384 | 13,052,208 | 13,041,976 | +| Callvalue (0.2M, From Origin False, Non Zero Value True) | 200,000 | 223,239 | 7,786 | 7.79 | 678,740 | 668,188 | 657,036 | +| Callvalue (0.2M, From Origin True, Non Zero Value False) | 200,000 | 223,239 | 8,026 | 8.03 | 14,948,116 | 14,935,102.7 | 14,920,788 | +| Callvalue (0.2M, From Origin True, Non Zero Value True) | 200,000 | 223,239 | 7,744 | 7.74 | 2,276,744 | 2,270,860.6 | 2,264,056 | +| Dup (0.2M, Dup10) | 200,000 | 223,239 | 7,409 | 7.41 | 5,267,372 | 5,263,468 | 5,253,708 | +| Dup (0.2M, Dup11) | 200,000 | 223,239 | 7,665 | 7.67 | 6,965,464 | 6,962,997.5 | 6,961,560 | +| Dup (0.2M, Dup12) | 200,000 | 223,239 | 8,812 | 8.81 | 13,617,288 | 13,617,288 | 13,597,008 | +| Dup (0.2M, Dup13) | 200,000 | 223,239 | 7,787 | 7.79 | 7,200,972 | 7,196,295 | 7,188,880 | +| Dup (0.2M, Dup14) | 200,000 | 223,239 | 8,253 | 8.25 | 10,985,736 | 10,968,337.6 | 10,955,692 | +| Dup (0.2M, Dup15) | 200,000 | 223,239 | 7,976 | 7.98 | 4,113,600 | 4,109,696 | 4,097,984 | +| Dup (0.2M, Dup16) | 200,000 | 223,239 | 7,975 | 7.97 | 11,257,232 | 11,244,556 | 11,210,408 | +| Dup (0.2M, Dup1) | 200,000 | 223,239 | 7,775 | 7.78 | 14,161,024 | 14,153,547.3 | 14,148,372 | +| Dup (0.2M, Dup2) | 200,000 | 223,239 | 7,550 | 7.55 | 14,827,220 | 14,826,634.4 | 14,824,292 | +| Dup (0.2M, Dup3) | 200,000 | 223,239 | 7,286 | 7.29 | 1,156,236 | 1,140,201.7 | 1,118,172 | +| Dup (0.2M, Dup4) | 200,000 | 223,239 | 6,326 | 6.33 | 12,026,916 | 12,020,084 | 12,014,228 | +| Dup (0.2M, Dup5) | 200,000 | 223,239 | 6,500 | 6.50 | 14,902,208 | 14,890,157.3 | 14,881,712 | +| Dup (0.2M, Dup6) | 200,000 | 223,239 | 7,300 | 7.30 | 3,410,840 | 3,410,840 | 3,405,960 | +| Dup (0.2M, Dup7) | 200,000 | 223,239 | 7,493 | 7.49 | 2,756,004 | 2,751,774.7 | 2,741,364 | +| Dup (0.2M, Dup8) | 200,000 | 223,239 | 7,339 | 7.34 | 11,275,436 | 11,269,010 | 11,261,608 | +| Dup (0.2M, Dup9) | 200,000 | 223,239 | 7,188 | 7.19 | 2,490,492 | 2,485,903.2 | 2,480,732 | +| Jumpdests (0.2M) | 200,000 | 223,239 | 7,268 | 7.27 | 6,150,920 | 6,146,772 | 6,144,172 | +| Jumpi Fallthrough (0.2M) | 200,000 | 223,239 | 8,476 | 8.48 | 14,624,816 | 14,621,470 | 14,614,080 | +| Jumpis (0.2M) | 200,000 | 223,239 | 7,155 | 7.16 | 6,100,760 | 6,096,444.6 | 6,093,928 | +| Jumps (0.2M) | 200,000 | 223,239 | 5,293 | 5.29 | 10,568,260 | 10,565,982.7 | 10,557,996 | +| Keccak (0.2M) | 200,000 | 223,239 | 14,163 | 14.16 | 11,406,148 | 11,401,056 | 11,399,284 | +| Memory Access (0.2M, Small Mem, Uninit Offset, Off 0, Mload) | 200,000 | 223,239 | 10,215 | 10.21 | 3,424,996 | 3,419,140 | 3,407,428 | +| Memory Access (0.2M, Small Mem, Uninit Offset, Off 0, Mstore8) | 200,000 | 223,239 | 8,046 | 8.05 | 13,079,048 | 13,078,267.2 | 13,068,312 | +| Memory Access (0.2M, Small Mem, Uninit Offset, Off 0, Mstore) | 200,000 | 223,239 | 9,114 | 9.11 | 7,666,044 | 7,655,525 | 7,641,428 | +| Memory Access (0.2M, Small Mem, Uninit Offset, Off 1, Mload) | 200,000 | 223,239 | 8,428 | 8.43 | 13,588,404 | 13,579,815.2 | 13,563,028 | +| Memory Access (0.2M, Small Mem, Uninit Offset, Off 1, Mstore8) | 200,000 | 223,239 | 8,181 | 8.18 | 7,782,744 | 7,772,470 | 7,776,888 | +| Memory Access (0.2M, Small Mem, Uninit Offset, Off 1, Mstore) | 200,000 | 223,239 | 10,184 | 10.18 | 2,061,484 | 2,054,930.9 | 2,048,796 | +| Memory Access (0.2M, Small Mem, Uninit Offset, Off 31, Mload) | 200,000 | 223,239 | 8,838 | 8.84 | 7,757,216 | 7,742,592 | 7,741,924 | +| Memory Access (0.2M, Small Mem, Uninit Offset, Off 31, Mstore8) | 200,000 | 223,239 | 6,826 | 6.83 | 10,985,736 | 10,984,584 | 10,985,736 | +| Memory Access (0.2M, Small Mem, Uninit Offset, Off 31, Mstore) | 200,000 | 223,239 | 8,112 | 8.11 | 9,786,348 | 9,786,348 | 9,754,912 | +| Memory Access (0.2M, Small Mem, Init Offset, Off 0, Mload) | 200,000 | 223,239 | 8,003 | 8.00 | 1,116,220 | 1,103,288 | 1,083,036 | +| Memory Access (0.2M, Small Mem, Init Offset, Off 0, Mstore8) | 200,000 | 223,239 | 7,511 | 7.51 | 11,930,004 | 11,919,678.7 | 11,896,216 | +| Memory Access (0.2M, Small Mem, Init Offset, Off 0, Mstore) | 200,000 | 223,239 | 10,170 | 10.17 | 10,324,092 | 10,304,246.9 | 10,259,676 | +| Memory Access (0.2M, Small Mem, Init Offset, Off 1, Mload) | 200,000 | 223,239 | 10,233 | 10.23 | 6,198,308 | 6,190,988 | 6,179,764 | +| Memory Access (0.2M, Small Mem, Init Offset, Off 1, Mstore8) | 200,000 | 223,239 | 9,100 | 9.10 | 10,115,896 | 10,104,432 | 10,102,560 | +| Memory Access (0.2M, Small Mem, Init Offset, Off 1, Mstore) | 200,000 | 223,239 | 9,745 | 9.74 | 8,869,116 | 8,847,110 | 8,818,364 | +| Memory Access (0.2M, Small Mem, Init Offset, Off 31, Mload) | 200,000 | 223,239 | 8,564 | 8.56 | 14,411,400 | 14,405,769.7 | 14,401,384 | +| Memory Access (0.2M, Small Mem, Init Offset, Off 31, Mstore8) | 200,000 | 223,239 | 6,757 | 6.76 | 2,040,556 | 2,037,628 | 2,023,964 | +| Memory Access (0.2M, Small Mem, Init Offset, Off 31, Mstore) | 200,000 | 223,239 | 11,103 | 11.10 | 13,993,392 | 13,991,196 | 13,977,776 | +| Memory Access (0.2M, Big Mem, Uninit Offset, Off 0, Mload) | 200,000 | 223,239 | 7,939 | 7.94 | 9,513,156 | 9,500,468 | 9,492,168 | +| Memory Access (0.2M, Big Mem, Uninit Offset, Off 0, Mstore8) | 200,000 | 223,239 | 7,906 | 7.91 | 5,657,784 | 5,653,612.6 | 5,650,444 | +| Memory Access (0.2M, Big Mem, Uninit Offset, Off 0, Mstore) | 200,000 | 223,239 | 9,199 | 9.20 | 14,853,564 | 14,842,064 | 14,828,612 | +| Memory Access (0.2M, Big Mem, Uninit Offset, Off 1, Mload) | 200,000 | 223,239 | 8,751 | 8.75 | 7,805,900 | 7,787,744 | 7,769,004 | +| Memory Access (0.2M, Big Mem, Uninit Offset, Off 1, Mstore8) | 200,000 | 223,239 | 7,951 | 7.95 | 14,977,396 | 14,967,440.8 | 14,953,972 | +| Memory Access (0.2M, Big Mem, Uninit Offset, Off 1, Mstore) | 200,000 | 223,239 | 9,150 | 9.15 | 13,655,440 | 13,646,516.6 | 13,637,872 | +| Memory Access (0.2M, Big Mem, Uninit Offset, Off 31, Mload) | 200,000 | 223,239 | 11,892 | 11.89 | 6,970,736 | 6,965,705.8 | 6,958,248 | +| Memory Access (0.2M, Big Mem, Uninit Offset, Off 31, Mstore8) | 200,000 | 223,239 | 7,415 | 7.42 | 10,620,916 | 10,607,740 | 10,591,636 | +| Memory Access (0.2M, Big Mem, Uninit Offset, Off 31, Mstore) | 200,000 | 223,239 | 9,266 | 9.27 | 7,593,260 | 7,587,404 | 7,575,692 | +| Memory Access (0.2M, Big Mem, Init Offset, Off 0, Mload) | 200,000 | 223,239 | 7,949 | 7.95 | 2,596,552 | 2,590,305.6 | 2,583,864 | +| Memory Access (0.2M, Big Mem, Init Offset, Off 0, Mstore8) | 200,000 | 223,239 | 7,772 | 7.77 | 12,499,580 | 12,476,633.3 | 12,442,972 | +| Memory Access (0.2M, Big Mem, Init Offset, Off 0, Mstore) | 200,000 | 223,239 | 10,563 | 10.56 | 8,875,260 | 8,860,180.9 | 8,847,112 | +| Memory Access (0.2M, Big Mem, Init Offset, Off 1, Mload) | 200,000 | 223,239 | 7,696 | 7.70 | 11,055,736 | 11,045,976 | 11,034,264 | +| Memory Access (0.2M, Big Mem, Init Offset, Off 1, Mstore8) | 200,000 | 223,239 | 9,040 | 9.04 | 9,413,392 | 9,413,392 | 9,382,968 | +| Memory Access (0.2M, Big Mem, Init Offset, Off 1, Mstore) | 200,000 | 223,239 | 8,383 | 8.38 | 9,071,916 | 9,068,396.7 | 9,064,588 | +| Memory Access (0.2M, Big Mem, Init Offset, Off 31, Mload) | 200,000 | 223,239 | 7,718 | 7.72 | 10,589,684 | 10,581,895.2 | 10,572,164 | +| Memory Access (0.2M, Big Mem, Init Offset, Off 31, Mstore8) | 200,000 | 223,239 | 7,566 | 7.57 | 527,788 | 522,016.9 | 502,412 | +| Memory Access (0.2M, Big Mem, Init Offset, Off 31, Mstore) | 200,000 | 223,239 | 8,291 | 8.29 | 5,143,640 | 5,138,234.9 | 5,127,124 | +| Mod (0.2M, Op Mod, Mod Bits 127) | 200,000 | 223,239 | 17,599 | 17.60 | 796,952 | 771,709.1 | 739,252 | +| Mod (0.2M, Op Mod, Mod Bits 191) | 200,000 | 223,239 | 20,624 | 20.62 | 13,794,176 | 13,772,209 | 13,794,176 | +| Mod (0.2M, Op Mod, Mod Bits 255) | 200,000 | 223,239 | 18,100 | 18.10 | 13,609,784 | 13,595,111.4 | 13,588,404 | +| Mod (0.2M, Op Mod, Mod Bits 63) | 200,000 | 223,239 | 14,088 | 14.09 | 10,425,712 | 10,422,433.1 | 10,415,952 | +| Mod (0.2M, Op Smod, Mod Bits 127) | 200,000 | 223,239 | 18,272 | 18.27 | 9,936,208 | 9,898,097.5 | 9,873,616 | +| Mod (0.2M, Op Smod, Mod Bits 191) | 200,000 | 223,239 | 21,471 | 21.47 | 4,965,812 | 4,946,290.4 | 4,916,036 | +| Mod (0.2M, Op Smod, Mod Bits 255) | 200,000 | 223,239 | 16,913 | 16.91 | 10,673,600 | 10,662,666 | 10,637,812 | +| Mod (0.2M, Op Smod, Mod Bits 63) | 200,000 | 223,239 | 14,898 | 14.90 | 11,452,412 | 11,440,290 | 11,439,548 | +| Modarith (0.2M, Op Addmod, Mod Bits 127) | 200,000 | 223,239 | 14,876 | 14.88 | 10,253,408 | 10,244,083 | 10,237,836 | +| Modarith (0.2M, Op Addmod, Mod Bits 191) | 200,000 | 223,239 | 17,712 | 17.71 | 7,643,728 | 7,610,585.8 | 7,606,420 | +| Modarith (0.2M, Op Addmod, Mod Bits 255) | 200,000 | 223,239 | 16,179 | 16.18 | 4,503,176 | 4,499,444 | 4,502,504 | +| Modarith (0.2M, Op Addmod, Mod Bits 63) | 200,000 | 223,239 | 13,111 | 13.11 | 4,132,188 | 4,128,269.3 | 4,116,528 | +| Modarith (0.2M, Op Mulmod, Mod Bits 127) | 200,000 | 223,239 | 21,392 | 21.39 | 6,609,108 | 6,596,049.8 | 6,584,496 | +| Modarith (0.2M, Op Mulmod, Mod Bits 191) | 200,000 | 223,239 | 29,237 | 29.24 | 4,498,464 | 4,479,706.7 | 4,449,252 | +| Modarith (0.2M, Op Mulmod, Mod Bits 255) | 200,000 | 223,239 | 24,593 | 24.59 | 12,101,204 | 12,080,846.9 | 12,052,364 | +| Modarith (0.2M, Op Mulmod, Mod Bits 63) | 200,000 | 223,239 | 18,246 | 18.25 | 13,270,644 | 13,258,985.5 | 13,255,456 | +| Modexp (0.2M, Mod 1045 Gas Base Heavy) | 200,000 | 223,239 | 197,905 | 197.91 | 6,478,556 | 6,429,615.3 | 6,368,584 | +| Modexp (0.2M, Mod 1360 Gas Balanced) | 200,000 | 223,239 | 58,197 | 58.20 | 13,781,488 | 13,752,452 | 13,728,784 | +| Modexp (0.2M, Mod 400 Gas Exp Heavy) | 200,000 | 223,239 | 66,742 | 66.74 | 5,465,328 | 5,419,590.4 | 5,369,044 | +| Modexp (0.2M, Mod 408 Gas Balanced) | 200,000 | 223,239 | 48,927 | 48.93 | 5,076,468 | 5,024,310.1 | 4,979,364 | +| Modexp (0.2M, Mod 408 Gas Base Heavy) | 200,000 | 223,239 | 186,771 | 186.77 | 8,843,732 | 8,754,637.8 | 8,596,980 | +| Modexp (0.2M, Mod 600 As Balanced) | 200,000 | 223,239 | 53,767 | 53.77 | 8,072,620 | 8,020,665.1 | 7,971,128 | +| Modexp (0.2M, Mod 600 Gas Exp Heavy) | 200,000 | 223,239 | 72,555 | 72.56 | 15,127,140 | 15,069,552.7 | 15,019,864 | +| Modexp (0.2M, Mod 616 Gas Base Heavy) | 200,000 | 223,239 | 183,577 | 183.58 | 6,114,896 | 6,031,196.7 | 5,955,160 | +| Modexp (0.2M, Mod 677 Gas Base Heavy) | 200,000 | 223,239 | 56,059 | 56.06 | 6,482,396 | 6,460,697.3 | 6,453,220 | +| Modexp (0.2M, Mod 765 Gas Exp Heavy) | 200,000 | 223,239 | 64,159 | 64.16 | 8,227,008 | 8,154,299.4 | 8,083,624 | +| Modexp (0.2M, Mod 767 Gas Balanced) | 200,000 | 223,239 | 50,717 | 50.72 | 3,557,528 | 3,505,300.2 | 3,428,984 | +| Modexp (0.2M, Mod 800 Gas Base Heavy) | 200,000 | 223,239 | 192,368 | 192.37 | 13,041,976 | 12,940,172.4 | 12,777,148 | +| Modexp (0.2M, Mod 800 Gas Exp Heavy) | 200,000 | 223,239 | 71,559 | 71.56 | 12,808,552 | 12,700,709.3 | 12,632,636 | +| Modexp (0.2M, Mod 852 Gas Exp Heavy) | 200,000 | 223,239 | 72,708 | 72.71 | 6,382,168 | 6,367,704 | 6,294,224 | +| Modexp (0.2M, Mod 867 Gas Base Heavy) | 200,000 | 223,239 | 193,256 | 193.26 | 13,507,804 | 13,405,370.3 | 13,239,708 | +| Modexp (0.2M, Mod 996 Gas Balanced) | 200,000 | 223,239 | 50,512 | 50.51 | 14,765,668 | 14,747,034.6 | 14,732,220 | +| Modexp (0.2M, Mod Even 1024B Exp 1024) | 200,000 | 223,239 | 5,031 | 5.03 | 11,258,680 | 11,258,680 | 11,250,796 | +| Modexp (0.2M, Mod Even 128B Exp 1024) | 200,000 | 223,239 | 27,980 | 27.98 | 7,738,160 | 7,710,527.3 | 7,686,832 | +| Modexp (0.2M, Mod Even 16B Exp 320) | 200,000 | 223,239 | 71,945 | 71.94 | 13,174,804 | 13,144,004.6 | 13,096,984 | +| Modexp (0.2M, Mod Even 24B Exp 168) | 200,000 | 223,239 | 58,734 | 58.73 | 5,651,268 | 5,590,549.7 | 5,529,956 | +| Modexp (0.2M, Mod Even 256B Exp 1024) | 200,000 | 223,239 | 4,598 | 4.60 | 4,957,988 | 4,955,810.7 | 4,955,060 | +| Modexp (0.2M, Mod Even 32B Exp 256) | 200,000 | 223,239 | 55,606 | 55.61 | 3,156,748 | 3,030,584.9 | 2,958,788 | +| Modexp (0.2M, Mod Even 32B Exp 40) | 200,000 | 223,239 | 46,916 | 46.92 | 10,765,708 | 10,719,202.4 | 10,688,300 | +| Modexp (0.2M, Mod Even 32B Exp 96) | 200,000 | 223,239 | 53,647 | 53.65 | 5,900,740 | 5,874,832.1 | 5,829,604 | +| Modexp (0.2M, Mod Even 512B Exp 1024) | 200,000 | 223,239 | 5,125 | 5.12 | 7,687,168 | 7,679,960 | 7,667,020 | +| Modexp (0.2M, Mod Even 64B Exp 512) | 200,000 | 223,239 | 44,697 | 44.70 | 12,631,660 | 12,600,155.4 | 12,537,284 | +| Modexp (0.2M, Mod Even 8B Exp 896) | 200,000 | 223,239 | 120,369 | 120.37 | 3,864,128 | 3,783,522.6 | 3,675,492 | +| Modexp (0.2M, Mod Exp 208 Gas Balanced) | 200,000 | 223,239 | 43,951 | 43.95 | 1,855,616 | 1,791,742.2 | 1,695,632 | +| Modexp (0.2M, Mod Exp 215 Gas Exp Heavy) | 200,000 | 223,239 | 105,277 | 105.28 | 14,378,560 | 14,304,216.1 | 14,197,128 | +| Modexp (0.2M, Mod Exp 298 Gas Exp Heavy) | 200,000 | 223,239 | 117,165 | 117.17 | 6,509,672 | 6,481,458.7 | 6,473,260 | +| Modexp (0.2M, Mod Min As Balanced) | 200,000 | 223,239 | 48,699 | 48.70 | 14,002,028 | 13,981,037.8 | 13,943,468 | +| Modexp (0.2M, Mod Min As Base Heavy) | 200,000 | 223,239 | 153,748 | 153.75 | 4,091,344 | 3,973,133.2 | 3,869,984 | +| Modexp (0.2M, Mod Min As Exp Heavy) | 200,000 | 223,239 | 98,247 | 98.25 | 5,515,404 | 5,487,483.6 | 5,465,328 | +| Modexp (0.2M, Mod Odd 1024B Exp 1024) | 200,000 | 223,239 | 5,720 | 5.72 | 8,888,068 | 8,888,068 | 8,864,644 | +| Modexp (0.2M, Mod Odd 128B Exp 1024) | 200,000 | 223,239 | 26,890 | 26.89 | 10,180,936 | 10,151,475.5 | 10,121,564 | +| Modexp (0.2M, Mod Odd 256B Exp 1024) | 200,000 | 223,239 | 5,213 | 5.21 | 13,796,112 | 13,787,201.6 | 13,776,592 | +| Modexp (0.2M, Mod Odd 32B Exp 256) | 200,000 | 223,239 | 58,521 | 58.52 | 14,775,760 | 14,756,302.8 | 14,726,920 | +| Modexp (0.2M, Mod Odd 32B Exp 96) | 200,000 | 223,239 | 52,435 | 52.44 | 14,605,700 | 14,541,108.8 | 14,510,532 | +| Modexp (0.2M, Mod Odd 32B Exp Cover Windows) | 200,000 | 223,239 | 45,169 | 45.17 | 4,355,492 | 4,307,588 | 4,252,720 | +| Modexp (0.2M, Mod Odd 512B Exp 1024) | 200,000 | 223,239 | 5,216 | 5.22 | 3,576,912 | 3,563,546 | 3,576,912 | +| Modexp (0.2M, Mod Odd 64B Exp 512) | 200,000 | 223,239 | 45,341 | 45.34 | 11,425,156 | 11,368,763.1 | 11,308,308 | +| Modexp (0.2M, Mod Pawel 2) | 200,000 | 223,239 | 68,275 | 68.28 | 2,480,732 | 2,379,601.4 | 2,268,128 | +| Modexp (0.2M, Mod Pawel 3) | 200,000 | 223,239 | 56,090 | 56.09 | 9,793,568 | 9,729,062.5 | 9,635,996 | +| Modexp (0.2M, Mod Pawel 4) | 200,000 | 223,239 | 49,861 | 49.86 | 502,412 | 448,376.5 | 256,460 | +| Modexp (0.2M, Mod Vul Common 1152N1) | 200,000 | 223,239 | 33,885 | 33.88 | 5,943,756 | 5,924,715.8 | 5,893,836 | +| Modexp (0.2M, Mod Vul Common 1349N1) | 200,000 | 223,239 | 46,868 | 46.87 | 13,121,532 | 13,113,217.7 | 13,079,016 | +| Modexp (0.2M, Mod Vul Common 1360N1) | 200,000 | 223,239 | 49,940 | 49.94 | 10,101,584 | 9,997,200.6 | 9,977,412 | +| Modexp (0.2M, Mod Vul Common 1360N2) | 200,000 | 223,239 | 44,437 | 44.44 | 10,930,664 | 10,876,039.5 | 10,845,828 | +| Modexp (0.2M, Mod Vul Common 200N1) | 200,000 | 223,239 | 30,531 | 30.53 | 4,445,348 | 4,401,352.3 | 4,364,476 | +| Modexp (0.2M, Mod Vul Common 200N2) | 200,000 | 223,239 | 34,393 | 34.39 | 5,252,736 | 5,235,127.5 | 5,210,016 | +| Modexp (0.2M, Mod Vul Common 200N3) | 200,000 | 223,239 | 33,699 | 33.70 | 10,423,532 | 10,379,480.4 | 10,330,832 | +| Modexp (0.2M, Mod Vul Example 1) | 200,000 | 223,239 | 56,877 | 56.88 | 14,726,356 | 14,687,820.2 | 14,648,968 | +| Modexp (0.2M, Mod Vul Example 2) | 200,000 | 223,239 | 55,308 | 55.31 | 6,967,332 | 6,912,532.3 | 6,889,252 | +| Modexp (0.2M, Mod Vul Guido 1 Even) | 200,000 | 223,239 | 38,851 | 38.85 | 2,904,812 | 2,839,140.6 | 2,802,908 | +| Modexp (0.2M, Mod Vul Guido 2 Even) | 200,000 | 223,239 | 64,070 | 64.07 | 5,358,216 | 5,338,642.1 | 5,271,276 | +| Modexp (0.2M, Mod Vul Guido 3 Even) | 200,000 | 223,239 | 98,590 | 98.59 | 7,603,876 | 7,520,502.6 | 7,357,176 | +| Modexp (0.2M, Mod Vul Marius 1 Even) | 200,000 | 223,239 | 57,899 | 57.90 | 5,825,112 | 5,797,993.0 | 5,754,680 | +| Modexp (0.2M, Mod Vul Nagydani 1 Pow 0X10001) | 200,000 | 223,239 | 39,581 | 39.58 | 1,641,988 | 1,577,982.9 | 1,465,332 | +| Modexp (0.2M, Mod Vul Nagydani 1 Qube) | 200,000 | 223,239 | 32,078 | 32.08 | 1,005,940 | 946,134.8 | 869,300 | +| Modexp (0.2M, Mod Vul Nagydani 1 Square) | 200,000 | 223,239 | 32,688 | 32.69 | 8,449,852 | 8,436,434.4 | 8,412,764 | +| Modexp (0.2M, Mod Vul Nagydani 2 Pow 0X10001) | 200,000 | 223,239 | 40,244 | 40.24 | 10,854,416 | 10,804,097.5 | 10,757,304 | +| Modexp (0.2M, Mod Vul Nagydani 2 Qube) | 200,000 | 223,239 | 88,211 | 88.21 | 13,258,084 | 13,220,055.1 | 13,178,676 | +| Modexp (0.2M, Mod Vul Nagydani 2 Square) | 200,000 | 223,239 | 75,686 | 75.69 | 615,628 | 585,415.2 | 526,812 | +| Modexp (0.2M, Mod Vul Nagydani 3 Pow 0X10001) | 200,000 | 223,239 | 37,249 | 37.25 | 12,318,504 | 12,288,160.9 | 12,236,896 | +| Modexp (0.2M, Mod Vul Nagydani 3 Qube) | 200,000 | 223,239 | 198,921 | 198.92 | 14,749,960 | 14,701,418.1 | 14,625,096 | +| Modexp (0.2M, Mod Vul Nagydani 3 Square) | 200,000 | 223,239 | 175,173 | 175.17 | 11,860,656 | 11,685,559.3 | 11,501,460 | +| Modexp (0.2M, Mod Vul Nagydani 4 Pow 0X10001) | 200,000 | 223,239 | 36,763 | 36.76 | 14,909,516 | 14,884,049.2 | 14,855,516 | +| Modexp (0.2M, Mod Vul Nagydani 4 Qube) | 200,000 | 223,239 | 221,279 | 221.28 | 4,836,696 | 4,740,578.7 | 4,530,608 | +| Modexp (0.2M, Mod Vul Nagydani 4 Square) | 200,000 | 223,239 | 200,327 | 200.33 | 13,511,532 | 13,473,553.7 | 13,408,908 | +| Modexp (0.2M, Mod Vul Nagydani 5 Pow 0X10001) | 200,000 | 223,239 | 23,305 | 23.30 | 14,464,636 | 14,456,242.4 | 14,444,456 | +| Modexp (0.2M, Mod Vul Nagydani 5 Qube) | 200,000 | 223,239 | 199,287 | 199.29 | 13,557,672 | 13,532,887.5 | 13,501,980 | +| Modexp (0.2M, Mod Vul Nagydani 5 Square) | 200,000 | 223,239 | 185,426 | 185.43 | 6,831,452 | 6,798,820.6 | 6,677,096 | +| Modexp (0.2M, Mod Vul Pawel 1 Exp Heavy) | 200,000 | 223,239 | 113,793 | 113.79 | 7,121,956 | 7,057,956.3 | 6,980,684 | +| Modexp (0.2M, Mod Vul Pawel 2 Exp Heavy) | 200,000 | 223,239 | 64,840 | 64.84 | 9,295,600 | 9,194,445.7 | 9,075,872 | +| Modexp (0.2M, Mod Vul Pawel 3 Exp Heavy) | 200,000 | 223,239 | 56,025 | 56.02 | 13,736,476 | 13,703,122.7 | 13,659,188 | +| Modexp (0.2M, Mod Vul Pawel 4 Exp Heavy) | 200,000 | 223,239 | 48,594 | 48.59 | 11,181,072 | 11,110,811.7 | 11,054,292 | +| Msize (0.2M, Mem Size 0) | 200,000 | 223,239 | 7,998 | 8.00 | 8,964,576 | 8,948,892 | 8,944,900 | +| Msize (0.2M, Mem Size 1000000) | 200,000 | 223,239 | 8,686 | 8.69 | 10,551,924 | 10,551,924 | 10,543,804 | +| Msize (0.2M, Mem Size 100000) | 200,000 | 223,239 | 9,423 | 9.42 | 12,245,248 | 12,231,507 | 12,208,612 | +| Msize (0.2M, Mem Size 1000) | 200,000 | 223,239 | 8,089 | 8.09 | 1,969,524 | 1,962,854.7 | 1,954,800 | +| Msize (0.2M, Mem Size 1) | 200,000 | 223,239 | 8,287 | 8.29 | 10,204,824 | 10,192,674 | 10,166,368 | +| Precompile Fixed Cost (0.2M, Blake2F) | 200,000 | 223,239 | 39,289 | 39.29 | 5,201,908 | 5,176,396 | 5,147,544 | +| Precompile Fixed Cost (0.2M, Bls12 Fp To G1) | 200,000 | 223,239 | 11,965 | 11.96 | 9,825,388 | 9,822,804 | 9,789,276 | +| Precompile Fixed Cost (0.2M, Bls12 Fp To G2) | 200,000 | 223,239 | 10,871 | 10.87 | 2,533,048 | 2,520,726 | 2,503,116 | +| Precompile Fixed Cost (0.2M, Bls12 G1Add) | 200,000 | 223,239 | 9,651 | 9.65 | 12,402,960 | 12,395,195.2 | 12,378,036 | +| Precompile Fixed Cost (0.2M, Bls12 G1Msm) | 200,000 | 223,239 | 4,909 | 4.91 | 12,006,636 | 12,002,190 | 11,991,996 | +| Precompile Fixed Cost (0.2M, Bls12 G2Add) | 200,000 | 223,239 | 10,764 | 10.76 | 3,274,816 | 3,268,368 | 3,259,200 | +| Precompile Fixed Cost (0.2M, Bls12 G2Msm) | 200,000 | 223,239 | 5,110 | 5.11 | 6,676,632 | 6,674,192 | 6,664,920 | +| Precompile Fixed Cost (0.2M, Bls12 Pairing Check) | 200,000 | 223,239 | 13,989 | 13.99 | 6,642,728 | 6,638,607.1 | 6,629,064 | +| Precompile Fixed Cost (0.2M, Bn128 Add) | 200,000 | 223,239 | 12,541 | 12.54 | 8,296,616 | 8,296,616 | 8,290,760 | +| Precompile Fixed Cost (0.2M, Bn128 Add 1 2) | 200,000 | 223,239 | 12,527 | 12.53 | 4,152,752 | 4,150,584 | 4,141,040 | +| Precompile Fixed Cost (0.2M, Bn128 Add Infinities) | 200,000 | 223,239 | 10,531 | 10.53 | 5,688,196 | 5,681,201.3 | 5,663,796 | +| Precompile Fixed Cost (0.2M, Bn128 Mul) | 200,000 | 223,239 | 22,778 | 22.78 | 13,901,536 | 13,878,616 | 13,857,564 | +| Precompile Fixed Cost (0.2M, Bn128 Mul 1 2 2 Scalar) | 200,000 | 223,239 | 5,202 | 5.20 | 9,305,132 | 9,294,804 | 9,277,740 | +| Precompile Fixed Cost (0.2M, Bn128 Mul 1 2 32 Byte Scalar) | 200,000 | 223,239 | 22,288 | 22.29 | 14,626,144 | 14,611,953.2 | 14,594,912 | +| Precompile Fixed Cost (0.2M, Bn128 Mul 32 Byte Coord And 2 Scalar) | 200,000 | 223,239 | 5,683 | 5.68 | 12,014,228 | 12,009,998.7 | 11,999,588 | +| Precompile Fixed Cost (0.2M, Bn128 Mul 32 Byte Coord And Scalar) | 200,000 | 223,239 | 23,134 | 23.13 | 14,059,244 | 14,041,600.8 | 14,019,572 | +| Precompile Fixed Cost (0.2M, Bn128 Mul Infinities 2 Scalar) | 200,000 | 223,239 | 4,552 | 4.55 | 11,846,176 | 11,845,200 | 11,840,320 | +| Precompile Fixed Cost (0.2M, Bn128 Mul Infinities 32 Byte Scalar) | 200,000 | 223,239 | 16,676 | 16.68 | 1,958,600 | 1,926,175.1 | 1,908,824 | +| Precompile Fixed Cost (0.2M, Bn128 One Pairing) | 200,000 | 223,239 | 20,706 | 20.71 | 13,857,568 | 13,844,894 | 13,826,364 | +| Precompile Fixed Cost (0.2M, Bn128 Two Pairings) | 200,000 | 223,239 | 17,116 | 17.12 | 8,934,136 | 8,905,732 | 8,882,792 | +| Precompile Fixed Cost (0.2M, Bn128 Two Pairings Empty) | 200,000 | 223,239 | 4,213 | 4.21 | 14,912,516 | 14,912,344 | 14,912,516 | +| Precompile Fixed Cost (0.2M, Ecrecover) | 200,000 | 223,239 | 23,280 | 23.28 | 6,544,480 | 6,544,480 | 6,528,620 | +| Precompile Fixed Cost (0.2M, Point Evaluation) | 200,000 | 223,239 | 23,034 | 23.03 | 14,710,328 | 14,699,032.9 | 14,681,348 | +| Precompile Only Data Input (0.2M, Identity) | 200,000 | 223,239 | 7,517 | 7.52 | 13,634,832 | 13,632,148 | 13,620,192 | +| Precompile Only Data Input (0.2M, Ripemd, 160) | 200,000 | 223,239 | 5,345 | 5.34 | 8,531,060 | 8,524,716 | 8,508,612 | +| Precompile Only Data Input (0.2M, Sha2, 256) | 200,000 | 223,239 | 5,324 | 5.32 | 6,504,768 | 6,498,856 | 6,503,156 | +| Push (0.2M, Push0) | 200,000 | 223,239 | 8,569 | 8.57 | 11,413,140 | 11,402,356 | 11,403,380 | +| Push (0.2M, Push10) | 200,000 | 223,239 | 7,721 | 7.72 | 9,754,916 | 9,751,012 | 9,746,132 | +| Push (0.2M, Push11) | 200,000 | 223,239 | 7,862 | 7.86 | 1,888,800 | 1,883,920 | 1,878,064 | +| Push (0.2M, Push12) | 200,000 | 223,239 | 8,982 | 8.98 | 8,218,652 | 8,203,952 | 8,192,928 | +| Push (0.2M, Push13) | 200,000 | 223,239 | 10,322 | 10.32 | 8,358,348 | 8,350,428 | 8,351,728 | +| Push (0.2M, Push14) | 200,000 | 223,239 | 7,565 | 7.57 | 12,052,120 | 12,047,923.2 | 12,039,432 | +| Push (0.2M, Push15) | 200,000 | 223,239 | 9,816 | 9.82 | 7,194,720 | 7,192,384 | 7,173,248 | +| Push (0.2M, Push16) | 200,000 | 223,239 | 9,706 | 9.71 | 14,802,824 | 14,799,581.3 | 14,795,048 | +| Push (0.2M, Push17) | 200,000 | 223,239 | 10,889 | 10.89 | 5,695,028 | 5,684,579.3 | 5,690,148 | +| Push (0.2M, Push18) | 200,000 | 223,239 | 8,858 | 8.86 | 13,085,008 | 13,081,872 | 13,082,080 | +| Push (0.2M, Push19) | 200,000 | 223,239 | 8,947 | 8.95 | 8,235,696 | 8,233,084.5 | 8,231,736 | +| Push (0.2M, Push1) | 200,000 | 223,239 | 8,797 | 8.80 | 1,979,216 | 1,974,816 | 1,966,992 | +| Push (0.2M, Push20) | 200,000 | 223,239 | 9,879 | 9.88 | 4,912,132 | 4,899,480 | 4,880,068 | +| Push (0.2M, Push21) | 200,000 | 223,239 | 8,273 | 8.27 | 10,562,660 | 10,558,830.7 | 10,560,708 | +| Push (0.2M, Push22) | 200,000 | 223,239 | 10,808 | 10.81 | 1,391,644 | 1,367,184 | 1,325,684 | +| Push (0.2M, Push23) | 200,000 | 223,239 | 10,299 | 10.30 | 15,146,020 | 15,137,626.4 | 15,127,140 | +| Push (0.2M, Push24) | 200,000 | 223,239 | 9,862 | 9.86 | 13,178,676 | 13,177,142.3 | 13,176,676 | +| Push (0.2M, Push25) | 200,000 | 223,239 | 12,829 | 12.83 | 8,073,248 | 8,070,124.8 | 8,065,440 | +| Push (0.2M, Push26) | 200,000 | 223,239 | 11,247 | 11.25 | 5,375,580 | 5,370,446.5 | 5,368,664 | +| Push (0.2M, Push27) | 200,000 | 223,239 | 10,644 | 10.64 | 7,747,900 | 7,742,411 | 7,735,088 | +| Push (0.2M, Push28) | 200,000 | 223,239 | 12,122 | 12.12 | 3,854,852 | 3,848,295.3 | 3,840,212 | +| Push (0.2M, Push29) | 200,000 | 223,239 | 10,353 | 10.35 | 12,182,424 | 12,175,600 | 12,155,108 | +| Push (0.2M, Push2) | 200,000 | 223,239 | 9,356 | 9.36 | 3,572,812 | 3,566,995.2 | 3,559,480 | +| Push (0.2M, Push30) | 200,000 | 223,239 | 10,681 | 10.68 | 8,215,356 | 8,212,746.9 | 8,212,428 | +| Push (0.2M, Push31) | 200,000 | 223,239 | 10,803 | 10.80 | 8,394,520 | 8,388,664 | 8,372,132 | +| Push (0.2M, Push32) | 200,000 | 223,239 | 10,957 | 10.96 | 15,007,328 | 14,997,194 | 14,986,312 | +| Push (0.2M, Push3) | 200,000 | 223,239 | 7,691 | 7.69 | 5,660,052 | 5,655,738 | 5,653,220 | +| Push (0.2M, Push4) | 200,000 | 223,239 | 6,760 | 6.76 | 4,256,068 | 4,253,634.7 | 4,250,524 | +| Push (0.2M, Push5) | 200,000 | 223,239 | 9,433 | 9.43 | 14,824,292 | 14,819,802.4 | 14,815,508 | +| Push (0.2M, Push6) | 200,000 | 223,239 | 9,613 | 9.61 | 3,395,576 | 3,395,576 | 3,393,624 | +| Push (0.2M, Push7) | 200,000 | 223,239 | 7,693 | 7.69 | 8,867,008 | 8,849,761.3 | 8,853,344 | +| Push (0.2M, Push8) | 200,000 | 223,239 | 8,032 | 8.03 | 3,604,908 | 3,587,177.3 | 3,568,796 | +| Push (0.2M, Push9) | 200,000 | 223,239 | 9,406 | 9.41 | 11,863,952 | 11,852,379.4 | 11,838,576 | +| Return Revert (0.2M, 1Kib Of Non, Zero Data, Return) | 200,000 | 223,239 | 8,724 | 8.72 | 9,591,992 | 9,583,929.3 | 9,571,492 | +| Return Revert (0.2M, 1Kib Of Non, Zero Data, Revert) | 200,000 | 223,239 | 11,545 | 11.54 | 11,206,912 | 11,198,588 | 11,180,096 | +| Return Revert (0.2M, 1Kib Of Zero Data, Return) | 200,000 | 223,239 | 10,772 | 10.77 | 1,875,136 | 1,866,770.3 | 1,855,616 | +| Return Revert (0.2M, 1Kib Of Zero Data, Revert) | 200,000 | 223,239 | 12,777 | 12.78 | 4,876,560 | 4,868,556.8 | 4,868,152 | +| Return Revert (0.2M, 1Mib Of Non, Zero Data, Return) | 200,000 | 223,239 | 5,923 | 5.92 | 1,692,704 | 1,686,262.4 | 1,675,136 | +| Return Revert (0.2M, 1Mib Of Non, Zero Data, Revert) | 200,000 | 223,239 | 6,024 | 6.02 | 9,750,868 | 9,744,180 | 9,750,868 | +| Return Revert (0.2M, 1Mib Of Zero Data, Return) | 200,000 | 223,239 | 4,550 | 4.55 | 13,618,264 | 13,613,926 | 13,618,264 | +| Return Revert (0.2M, 1Mib Of Zero Data, Revert) | 200,000 | 223,239 | 4,611 | 4.61 | 8,853,416 | 8,848,147.2 | 8,835,364 | +| Return Revert (0.2M, Empty, Return) | 200,000 | 223,239 | 10,744 | 10.74 | 6,137,640 | 6,131,784 | 6,117,144 | +| Return Revert (0.2M, Empty, Revert) | 200,000 | 223,239 | 11,763 | 11.76 | 14,445,432 | 14,442,992 | 14,431,768 | +| Returndatasize Nonzero (0.2M, Returned Size 0, Return Data Style Returndatastyle.Identity) | 200,000 | 223,239 | 7,812 | 7.81 | 6,583,520 | 6,581,763.2 | 6,575,712 | +| Returndatasize Nonzero (0.2M, Returned Size 0, Return Data Style Returndatastyle.Return) | 200,000 | 223,239 | 7,658 | 7.66 | 5,206,908 | 5,204,961.3 | 5,198,124 | +| Returndatasize Nonzero (0.2M, Returned Size 0, Return Data Style Returndatastyle.Revert) | 200,000 | 223,239 | 9,815 | 9.81 | 9,497,604 | 9,487,254.3 | 9,480,248 | +| Returndatasize Nonzero (0.2M, Returned Size 1, Return Data Style Returndatastyle.Identity) | 200,000 | 223,239 | 7,240 | 7.24 | 1,475,776 | 1,468,228 | 1,458,348 | +| Returndatasize Nonzero (0.2M, Returned Size 1, Return Data Style Returndatastyle.Return) | 200,000 | 223,239 | 7,688 | 7.69 | 6,179,764 | 6,176,836 | 6,171,364 | +| Returndatasize Nonzero (0.2M, Returned Size 1, Return Data Style Returndatastyle.Revert) | 200,000 | 223,239 | 8,084 | 8.08 | 7,556,980 | 7,553,610.9 | 7,546,516 | +| Returndatasize Zero (0.2M) | 200,000 | 223,239 | 7,822 | 7.82 | 4,887,224 | 4,883,970.7 | 4,873,560 | +| Shifts (0.2M, Shift Right Sar) | 200,000 | 223,239 | 10,946 | 10.95 | 7,128,776 | 7,125,160 | 7,115,496 | +| Shifts (0.2M, Shift Right Shr) | 200,000 | 223,239 | 10,592 | 10.59 | 11,926,020 | 11,926,020 | 11,922,572 | +| Swap (0.2M, Swap10) | 200,000 | 223,239 | 10,598 | 10.60 | 1,082,060 | 1,068,688.8 | 1,042,044 | +| Swap (0.2M, Swap11) | 200,000 | 223,239 | 13,898 | 13.90 | 13,644,592 | 13,641,701.3 | 13,637,760 | +| Swap (0.2M, Swap12) | 200,000 | 223,239 | 11,721 | 11.72 | 7,356,836 | 7,331,460 | 7,307,060 | +| Swap (0.2M, Swap13) | 200,000 | 223,239 | 10,278 | 10.28 | 3,254,320 | 3,246,512 | 3,232,848 | +| Swap (0.2M, Swap14) | 200,000 | 223,239 | 10,975 | 10.97 | 13,923,984 | 13,922,990 | 13,901,536 | +| Swap (0.2M, Swap15) | 200,000 | 223,239 | 10,108 | 10.11 | 14,726,920 | 14,716,428 | 14,711,304 | +| Swap (0.2M, Swap16) | 200,000 | 223,239 | 10,106 | 10.11 | 5,941,044 | 5,937,020 | 5,941,044 | +| Swap (0.2M, Swap1) | 200,000 | 223,239 | 10,638 | 10.64 | 7,546,668 | 7,546,668 | 7,535,476 | +| Swap (0.2M, Swap2) | 200,000 | 223,239 | 10,166 | 10.17 | 9,981,548 | 9,977,049.6 | 9,971,164 | +| Swap (0.2M, Swap3) | 200,000 | 223,239 | 10,343 | 10.34 | 14,499,796 | 14,490,621.6 | 14,461,732 | +| Swap (0.2M, Swap4) | 200,000 | 223,239 | 9,539 | 9.54 | 12,370,348 | 12,342,474 | 12,319,480 | +| Swap (0.2M, Swap5) | 200,000 | 223,239 | 9,942 | 9.94 | 11,995,676 | 11,977,394 | 11,956,460 | +| Swap (0.2M, Swap6) | 200,000 | 223,239 | 9,761 | 9.76 | 10,486,968 | 10,483,970 | 10,443,644 | +| Swap (0.2M, Swap7) | 200,000 | 223,239 | 10,075 | 10.07 | 6,176,052 | 6,171,724 | 6,163,364 | +| Swap (0.2M, Swap8) | 200,000 | 223,239 | 11,927 | 11.93 | 6,514,800 | 6,512,848 | 6,494,304 | +| Swap (0.2M, Swap9) | 200,000 | 223,239 | 9,880 | 9.88 | 9,576,108 | 9,568,495.2 | 9,557,716 | +| Tload (0.2M, Val Mut False, Key Mut False) | 200,000 | 223,239 | 5,136 | 5.14 | 3,878,168 | 3,862,376 | 3,878,168 | +| Tload (0.2M, Val Mut False, Key Mut True) | 200,000 | 223,239 | 4,871 | 4.87 | 13,654,460 | 13,653,676 | 13,654,460 | +| Tload (0.2M, Val Mut True, Key Mut False) | 200,000 | 223,239 | 5,467 | 5.47 | 4,099,416 | 4,096,813.3 | 4,094,536 | +| Tload (0.2M, Val Mut True, Key Mut True) | 200,000 | 223,239 | 4,793 | 4.79 | 3,864,884 | 3,860,980 | 3,851,088 | +| Tstore (0.2M, Dense Val Mut False, Key Mut False) | 200,000 | 223,239 | 7,543 | 7.54 | 9,877,436 | 9,877,436 | 9,834,828 | +| Tstore (0.2M, Dense Val Mut False, Key Mut True) | 200,000 | 223,239 | 6,478 | 6.48 | 9,045,496 | 9,025,078.3 | 8,995,720 | +| Tstore (0.2M, Dense Val Mut True, Key Mut False) | 200,000 | 223,239 | 11,020 | 11.02 | 6,627,652 | 6,619,952 | 6,610,084 | +| Tstore (0.2M, Dense Val Mut True, Key Mut True) | 200,000 | 223,239 | 9,435 | 9.44 | 8,229,784 | 8,221,854 | 8,204,776 | +| Unop (0.2M, Iszero) | 200,000 | 223,239 | 11,154 | 11.15 | 6,563,024 | 6,559,705.6 | 6,548,384 | +| Unop (0.2M, Not) | 200,000 | 223,239 | 7,640 | 7.64 | 10,330,832 | 10,329,453.3 | 10,320,840 | +| Zero Param (0.2M, Address) | 200,000 | 223,239 | 12,331 | 12.33 | 5,095,956 | 5,087,402.4 | 5,075,052 | +| Zero Param (0.2M, Basefee) | 200,000 | 223,239 | 10,621 | 10.62 | 5,715,096 | 5,701,710.9 | 5,689,248 | +| Zero Param (0.2M, Blobbasefee) | 200,000 | 223,239 | 9,417 | 9.42 | 13,095,360 | 13,089,107.2 | 13,083,928 | +| Zero Param (0.2M, Caller) | 200,000 | 223,239 | 10,659 | 10.66 | 5,359,880 | 5,358,782 | 5,359,192 | +| Zero Param (0.2M, Chainid) | 200,000 | 223,239 | 9,095 | 9.10 | 10,761,576 | 10,758,068 | 10,740,104 | +| Zero Param (0.2M, Codesize) | 200,000 | 223,239 | 9,708 | 9.71 | 13,809,144 | 13,802,556 | 13,790,600 | +| Zero Param (0.2M, Coinbase) | 200,000 | 223,239 | 10,949 | 10.95 | 10,285,904 | 10,251,868.7 | 10,227,840 | +| Zero Param (0.2M, Gaslimit) | 200,000 | 223,239 | 8,756 | 8.76 | 2,739,756 | 2,736,986 | 2,732,876 | +| Zero Param (0.2M, Gasprice) | 200,000 | 223,239 | 10,583 | 10.58 | 8,549,556 | 8,538,595.4 | 8,530,396 | +| Zero Param (0.2M, Gas) | 200,000 | 223,239 | 10,082 | 10.08 | 2,569,160 | 2,551,226 | 2,535,000 | +| Zero Param (0.2M, Number) | 200,000 | 223,239 | 9,070 | 9.07 | 8,864,312 | 8,864,312 | 8,863,188 | +| Zero Param (0.2M, Origin) | 200,000 | 223,239 | 11,947 | 11.95 | 3,883,704 | 3,881,357.7 | 3,877,732 | +| Zero Param (0.2M, Prevrandao) | 200,000 | 223,239 | 13,096 | 13.10 | 14,439,072 | 14,427,849.8 | 14,403,936 | +| Zero Param (0.2M, Timestamp) | 200,000 | 223,239 | 9,843 | 9.84 | 8,558,916 | 8,544,666.4 | 8,538,308 | +| Calldatacopy (0.2M, Zero Data, Dynamic Src Dst, 0Bytes, Call) | 200,000 | 223,239 | 9,215 | 9.21 | 4,982,312 | 4,975,912 | 4,960,788 | +| Calldatacopy (0.2M, Zero Data, Dynamic Src Dst, 0Bytes, Transaction) | 200,000 | 223,239 | 9,714 | 9.71 | 14,197,760 | 14,192,352 | 14,181,088 | +| Calldatacopy (0.2M, Zero Data, Dynamic Src Dst, 100Bytes, Call) | 200,000 | 223,239 | 8,777 | 8.78 | 10,262,780 | 10,242,022.3 | 10,237,756 | +| Calldatacopy (0.2M, Zero Data, Dynamic Src Dst, 100Bytes, Transaction) | 200,000 | 223,239 | 11,080 | 11.08 | 4,202,584 | 4,182,652 | 4,179,216 | +| Calldatacopy (0.2M, Zero Data, Dynamic Src Dst, 10Kib, Call) | 200,000 | 223,239 | 7,485 | 7.49 | 6,654,004 | 6,653,028 | 6,649,124 | +| Calldatacopy (0.2M, Zero Data, Dynamic Src Dst, 10Kib, Transaction) | 200,000 | 223,239 | 5,867 | 5.87 | 14,030,284 | 14,019,234.4 | 14,007,052 | +| Calldatacopy (0.2M, Zero Data, Dynamic Src Dst, 1Mib, Call) | 200,000 | 223,239 | 3,968 | 3.97 | 14,920,152 | 14,918,525.3 | 14,912,344 | +| Calldatacopy (0.2M, Zero Data, Dynamic Src Dst, 1Mib, Transaction) | 200,000 | 223,239 | 4,195 | 4.20 | 14,985,336 | 14,979,480 | 14,967,768 | +| Calldatacopy (0.2M, Zero Data, Fixed Src Dst, 0Bytes, Call) | 200,000 | 223,239 | 8,129 | 8.13 | 7,137,308 | 7,137,064 | 7,116,064 | +| Calldatacopy (0.2M, Zero Data, Fixed Src Dst, 0Bytes, Transaction) | 200,000 | 223,239 | 9,725 | 9.72 | 1,452,492 | 1,436,998 | 1,404,724 | +| Calldatacopy (0.2M, Zero Data, Fixed Src Dst, 100Bytes, Call) | 200,000 | 223,239 | 6,847 | 6.85 | 1,323,732 | 1,308,360 | 1,290,548 | +| Calldatacopy (0.2M, Zero Data, Fixed Src Dst, 100Bytes, Transaction) | 200,000 | 223,239 | 5,965 | 5.96 | 1,408,236 | 1,403,272.8 | 1,391,644 | +| Calldatacopy (0.2M, Zero Data, Fixed Src Dst, 10Kib, Call) | 200,000 | 223,239 | 6,534 | 6.53 | 9,556,740 | 9,555,252 | 9,542,308 | +| Calldatacopy (0.2M, Zero Data, Fixed Src Dst, 10Kib, Transaction) | 200,000 | 223,239 | 4,891 | 4.89 | 13,212,876 | 13,210,436 | 13,212,844 | +| Calldatacopy (0.2M, Zero Data, Fixed Src Dst, 1Mib, Call) | 200,000 | 223,239 | 4,218 | 4.22 | 4,809,460 | 4,805,556 | 4,801,748 | +| Calldatacopy (0.2M, Zero Data, Fixed Src Dst, 1Mib, Transaction) | 200,000 | 223,239 | 4,382 | 4.38 | 5,664,428 | 5,662,476 | 5,654,668 | +| Calldatacopy (0.2M, Non Zero, Dynamic Src Dst, 100Bytes, Call) | 200,000 | 223,239 | 10,185 | 10.19 | 2,731,900 | 2,713,495.4 | 2,689,932 | +| Calldatacopy (0.2M, Non Zero, Dynamic Src Dst, 100Bytes, Transaction) | 200,000 | 223,239 | 7,690 | 7.69 | 11,872,268 | 11,872,091 | 11,853,016 | +| Calldatacopy (0.2M, Non Zero, Fixed Src Dst, 100Bytes, Call) | 200,000 | 223,239 | 7,414 | 7.41 | 2,919,452 | 2,918,526.7 | 2,915,548 | +| Calldatacopy (0.2M, Non Zero, Fixed Src Dst, 100Bytes, Transaction) | 200,000 | 223,239 | 7,114 | 7.11 | 6,662,968 | 6,662,968 | 6,649,476 | +| Codecopy (0.2M, Dynamic Src Dst, 0Bytes) | 200,000 | 223,239 | 8,153 | 8.15 | 6,132,460 | 6,132,460 | 6,130,952 | +| Codecopy (0.2M, Dynamic Src Dst, 0.25X Max Code) | 200,000 | 223,239 | 8,395 | 8.39 | 14,976,496 | 14,966,260 | 14,969,664 | +| Codecopy (0.2M, Dynamic Src Dst, 0.50X Max Code Size) | 200,000 | 223,239 | 6,464 | 6.46 | 12,205,684 | 12,198,744 | 12,191,208 | +| Codecopy (0.2M, Dynamic Src Dst, 0.75X Max Code Size) | 200,000 | 223,239 | 7,869 | 7.87 | 7,147,068 | 7,137,721.1 | 7,141,212 | +| Codecopy (0.2M, Dynamic Src Dst, Max Code) | 200,000 | 223,239 | 6,377 | 6.38 | 1,680,728 | 1,672,010 | 1,662,184 | +| Codecopy (0.2M, Fixed Src Dst, 0Bytes) | 200,000 | 223,239 | 9,330 | 9.33 | 14,378,656 | 14,375,337.6 | 14,371,824 | +| Codecopy (0.2M, Fixed Src Dst, 0.25X Max Code) | 200,000 | 223,239 | 5,916 | 5.92 | 8,976,444 | 8,974,131 | 8,966,528 | +| Codecopy (0.2M, Fixed Src Dst, 0.50X Max Code Size) | 200,000 | 223,239 | 6,381 | 6.38 | 7,775,756 | 7,767,725 | 7,759,164 | +| Codecopy (0.2M, Fixed Src Dst, 0.75X Max Code Size) | 200,000 | 223,239 | 5,543 | 5.54 | 9,062,636 | 9,054,437.6 | 9,042,140 | +| Codecopy (0.2M, Fixed Src Dst, Max Code) | 200,000 | 223,239 | 5,332 | 5.33 | 841,896 | 835,064 | 820,424 | +| Mcopy (0.2M, Dynamic Src Dst, 0Bytes) | 200,000 | 223,239 | 8,270 | 8.27 | 13,626,088 | 13,624,780 | 13,621,208 | +| Mcopy (0.2M, Dynamic Src Dst, 100Bytes) | 200,000 | 223,239 | 9,515 | 9.52 | 7,311,364 | 7,280,213.1 | 7,259,920 | +| Mcopy (0.2M, Dynamic Src Dst, 10Kib) | 200,000 | 223,239 | 8,181 | 8.18 | 3,879,536 | 3,866,569.1 | 3,863,580 | +| Mcopy (0.2M, Dynamic Src Dst, 1Mib) | 200,000 | 223,239 | 4,273 | 4.27 | 12,370,228 | 12,370,228 | 12,367,856 | +| Mcopy (0.2M, Fixed Src Dst, 0Bytes) | 200,000 | 223,239 | 8,583 | 8.58 | 14,337,280 | 14,333,376 | 14,321,664 | +| Mcopy (0.2M, Fixed Src Dst, 100Bytes) | 200,000 | 223,239 | 9,244 | 9.24 | 13,558,648 | 13,550,476 | 13,558,648 | +| Mcopy (0.2M, Fixed Src Dst, 10Kib) | 200,000 | 223,239 | 7,842 | 7.84 | 7,866,708 | 7,855,773.6 | 7,838,888 | +| Mcopy (0.2M, Fixed Src Dst, 1Mib) | 200,000 | 223,239 | 4,865 | 4.87 | 8,588,196 | 8,584,292 | 8,559,892 | +| Returndatacopy (0.2M, Fixed Dst False, 0Bytes) | 200,000 | 223,239 | 11,937 | 11.94 | 4,229,052 | 4,218,296 | 4,201,604 | +| Returndatacopy (0.2M, Fixed Dst False, 100Bytes) | 200,000 | 223,239 | 8,385 | 8.38 | 13,820,892 | 13,815,768 | 13,812,108 | +| Returndatacopy (0.2M, Fixed Dst False, 10Kib) | 200,000 | 223,239 | 7,351 | 7.35 | 1,018,628 | 1,014,235.5 | 1,006,916 | +| Returndatacopy (0.2M, Fixed Dst False, 1Mib) | 200,000 | 223,239 | 5,003 | 5.00 | 9,315,868 | 9,310,392 | 9,310,988 | +| Returndatacopy (0.2M, Fixed Dst True, 0Bytes) | 200,000 | 223,239 | 8,827 | 8.83 | 14,842,096 | 14,827,208.8 | 14,819,388 | +| Returndatacopy (0.2M, Fixed Dst True, 100Bytes) | 200,000 | 223,239 | 8,318 | 8.32 | 1,662,184 | 1,649,349.7 | 1,641,988 | +| Returndatacopy (0.2M, Fixed Dst True, 10Kib) | 200,000 | 223,239 | 6,970 | 6.97 | 9,552,160 | 9,544,026.7 | 9,523,892 | +| Returndatacopy (0.2M, Fixed Dst True, 1Mib) | 200,000 | 223,239 | 5,186 | 5.19 | 9,077,620 | 9,077,620 | 9,072,892 | +| Log Opcodes (0.2M, Dynamic, Non Zero Topic, 0 Bytes Data, Log0) | 200,000 | 223,239 | 4,716 | 4.72 | 2,500,188 | 2,494,332 | 2,482,620 | +| Log Opcodes (0.2M, Dynamic, Non Zero Topic, 0 Bytes Data, Log1) | 200,000 | 223,239 | 5,058 | 5.06 | 3,573,008 | 3,571,056 | 3,567,152 | +| Log Opcodes (0.2M, Dynamic, Non Zero Topic, 0 Bytes Data, Log2) | 200,000 | 223,239 | 4,851 | 4.85 | 13,185,964 | 13,182,385.3 | 13,175,776 | +| Log Opcodes (0.2M, Dynamic, Non Zero Topic, 0 Bytes Data, Log3) | 200,000 | 223,239 | 4,695 | 4.70 | 5,751,752 | 5,733,496 | 5,717,048 | +| Log Opcodes (0.2M, Dynamic, Non Zero Topic, 0 Bytes Data, Log4) | 200,000 | 223,239 | 4,822 | 4.82 | 9,276,764 | 9,276,764 | 9,263,988 | +| Log Opcodes (0.2M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log0) | 200,000 | 223,239 | 4,432 | 4.43 | 3,189,464 | 3,183,933.3 | 3,172,672 | +| Log Opcodes (0.2M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log1) | 200,000 | 223,239 | 4,719 | 4.72 | 7,213,752 | 7,210,368 | 7,213,752 | +| Log Opcodes (0.2M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log2) | 200,000 | 223,239 | 4,063 | 4.06 | 12,037,568 | 12,033,664 | 12,018,048 | +| Log Opcodes (0.2M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log3) | 200,000 | 223,239 | 5,218 | 5.22 | 3,412,840 | 3,411,238 | 3,408,936 | +| Log Opcodes (0.2M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log4) | 200,000 | 223,239 | 4,167 | 4.17 | 14,129,396 | 14,125,130 | 14,116,236 | +| Log Opcodes (0.2M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log0) | 200,000 | 223,239 | 4,038 | 4.04 | 11,865,696 | 11,861,792 | 11,850,080 | +| Log Opcodes (0.2M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log1) | 200,000 | 223,239 | 4,109 | 4.11 | 10,438,764 | 10,436,244 | 10,422,784 | +| Log Opcodes (0.2M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log2) | 200,000 | 223,239 | 4,538 | 4.54 | 6,679,560 | 6,675,314.7 | 6,676,632 | +| Log Opcodes (0.2M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log3) | 200,000 | 223,239 | 5,022 | 5.02 | 8,398,424 | 8,393,906 | 8,398,424 | +| Log Opcodes (0.2M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log4) | 200,000 | 223,239 | 4,541 | 4.54 | 5,528,984 | 5,526,446.4 | 5,526,064 | +| Log Opcodes (0.2M, Dynamic, Zero Topic, 0 Bytes Data, Log0) | 200,000 | 223,239 | 4,954 | 4.95 | 9,971,252 | 9,959,362.4 | 9,941,040 | +| Log Opcodes (0.2M, Dynamic, Zero Topic, 0 Bytes Data, Log1) | 200,000 | 223,239 | 5,216 | 5.22 | 14,181,088 | 14,180,488 | 14,168,832 | +| Log Opcodes (0.2M, Dynamic, Zero Topic, 0 Bytes Data, Log2) | 200,000 | 223,239 | 5,274 | 5.27 | 4,248,572 | 4,240,520 | 4,233,932 | +| Log Opcodes (0.2M, Dynamic, Zero Topic, 0 Bytes Data, Log3) | 200,000 | 223,239 | 5,078 | 5.08 | 4,372,572 | 4,367,360 | 4,372,084 | +| Log Opcodes (0.2M, Dynamic, Zero Topic, 0 Bytes Data, Log4) | 200,000 | 223,239 | 4,783 | 4.78 | 11,501,460 | 11,501,460 | 11,495,984 | +| Log Opcodes (0.2M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log0) | 200,000 | 223,239 | 4,219 | 4.22 | 10,750,548 | 10,746,240 | 10,736,076 | +| Log Opcodes (0.2M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log1) | 200,000 | 223,239 | 5,584 | 5.58 | 13,936,636 | 13,932,244 | 13,922,972 | +| Log Opcodes (0.2M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log2) | 200,000 | 223,239 | 4,875 | 4.88 | 13,234,348 | 13,234,348 | 13,218,732 | +| Log Opcodes (0.2M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log3) | 200,000 | 223,239 | 4,879 | 4.88 | 10,634,884 | 10,632,281.3 | 10,626,100 | +| Log Opcodes (0.2M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log4) | 200,000 | 223,239 | 4,454 | 4.45 | 2,945,852 | 2,943,119.2 | 2,936,092 | +| Log Opcodes (0.2M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log0) | 200,000 | 223,239 | 4,051 | 4.05 | 14,887,072 | 14,881,712 | 14,887,072 | +| Log Opcodes (0.2M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log1) | 200,000 | 223,239 | 4,898 | 4.90 | 6,130,076 | 6,129,014.3 | 6,130,076 | +| Log Opcodes (0.2M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log2) | 200,000 | 223,239 | 4,962 | 4.96 | 6,212,800 | 6,205,954 | 6,198,104 | +| Log Opcodes (0.2M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log3) | 200,000 | 223,239 | 4,561 | 4.56 | 7,753,464 | 7,753,434 | 7,752,428 | +| Log Opcodes (0.2M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log4) | 200,000 | 223,239 | 4,571 | 4.57 | 10,989,464 | 10,988,976 | 10,984,584 | +| Log Opcodes (0.2M, Fixed, Non Zero Topic, 0 Bytes Data, Log0) | 200,000 | 223,239 | 4,865 | 4.87 | 12,410,768 | 12,410,768 | 12,406,864 | +| Log Opcodes (0.2M, Fixed, Non Zero Topic, 0 Bytes Data, Log1) | 200,000 | 223,239 | 5,176 | 5.18 | 14,140,564 | 14,138,884 | 14,132,324 | +| Log Opcodes (0.2M, Fixed, Non Zero Topic, 0 Bytes Data, Log2) | 200,000 | 223,239 | 4,384 | 4.38 | 10,516,720 | 10,516,720 | 10,515,744 | +| Log Opcodes (0.2M, Fixed, Non Zero Topic, 0 Bytes Data, Log3) | 200,000 | 223,239 | 5,360 | 5.36 | 4,520,644 | 4,511,447 | 4,501,224 | +| Log Opcodes (0.2M, Fixed, Non Zero Topic, 0 Bytes Data, Log4) | 200,000 | 223,239 | 5,094 | 5.09 | 15,027,416 | 15,021,302 | 15,018,320 | +| Log Opcodes (0.2M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log0) | 200,000 | 223,239 | 4,968 | 4.97 | 8,948,012 | 8,941,505.3 | 8,937,064 | +| Log Opcodes (0.2M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log1) | 200,000 | 223,239 | 4,449 | 4.45 | 11,033,596 | 11,031,002 | 11,030,668 | +| Log Opcodes (0.2M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log2) | 200,000 | 223,239 | 5,603 | 5.60 | 3,416,576 | 3,411,574.7 | 3,410,612 | +| Log Opcodes (0.2M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log3) | 200,000 | 223,239 | 5,180 | 5.18 | 9,297,020 | 9,263,012 | 9,297,020 | +| Log Opcodes (0.2M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log4) | 200,000 | 223,239 | 4,161 | 4.16 | 11,893,288 | 11,887,432 | 11,879,624 | +| Log Opcodes (0.2M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log0) | 200,000 | 223,239 | 4,295 | 4.29 | 6,649,124 | 6,647,844 | 6,642,724 | +| Log Opcodes (0.2M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log1) | 200,000 | 223,239 | 5,550 | 5.55 | 8,369,204 | 8,369,204 | 8,362,372 | +| Log Opcodes (0.2M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log2) | 200,000 | 223,239 | 4,739 | 4.74 | 4,535,876 | 4,524,191.2 | 4,514,868 | +| Log Opcodes (0.2M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log3) | 200,000 | 223,239 | 4,344 | 4.34 | 8,814,460 | 8,814,460 | 8,809,580 | +| Log Opcodes (0.2M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log4) | 200,000 | 223,239 | 3,970 | 3.97 | 255,488 | 201,190.8 | 106,116 | +| Log Opcodes (0.2M, Fixed, Zero Topic, 0 Bytes Data, Log0) | 200,000 | 223,239 | 4,768 | 4.77 | 6,120,088 | 6,117,404 | 6,109,352 | +| Log Opcodes (0.2M, Fixed, Zero Topic, 0 Bytes Data, Log1) | 200,000 | 223,239 | 5,458 | 5.46 | 12,121,628 | 12,114,470.7 | 12,094,300 | +| Log Opcodes (0.2M, Fixed, Zero Topic, 0 Bytes Data, Log2) | 200,000 | 223,239 | 4,929 | 4.93 | 8,984,008 | 8,981,494 | 8,981,632 | +| Log Opcodes (0.2M, Fixed, Zero Topic, 0 Bytes Data, Log3) | 200,000 | 223,239 | 5,588 | 5.59 | 4,501,820 | 4,500,429.6 | 4,498,252 | +| Log Opcodes (0.2M, Fixed, Zero Topic, 0 Bytes Data, Log4) | 200,000 | 223,239 | 5,568 | 5.57 | 8,208,444 | 8,202,978.4 | 8,197,304 | +| Log Opcodes (0.2M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log0) | 200,000 | 223,239 | 4,204 | 4.20 | 820,428 | 810,389.1 | 798,904 | +| Log Opcodes (0.2M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log1) | 200,000 | 223,239 | 4,773 | 4.77 | 14,892,956 | 14,887,588 | 14,880,268 | +| Log Opcodes (0.2M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log2) | 200,000 | 223,239 | 4,729 | 4.73 | 5,666,380 | 5,660,304 | 5,666,380 | +| Log Opcodes (0.2M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log3) | 200,000 | 223,239 | 4,999 | 5.00 | 7,129,748 | 7,125,568 | 7,129,748 | +| Log Opcodes (0.2M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log4) | 200,000 | 223,239 | 4,895 | 4.89 | 10,131,100 | 10,114,343 | 10,095,744 | +| Log Opcodes (0.2M, Fixed, Zero Topic, 1 Mib Zeros Data, Log0) | 200,000 | 223,239 | 4,817 | 4.82 | 5,217,224 | 5,217,224 | 5,214,296 | +| Log Opcodes (0.2M, Fixed, Zero Topic, 1 Mib Zeros Data, Log1) | 200,000 | 223,239 | 4,906 | 4.91 | 3,172,672 | 3,171,588 | 3,168,624 | +| Log Opcodes (0.2M, Fixed, Zero Topic, 1 Mib Zeros Data, Log2) | 200,000 | 223,239 | 5,186 | 5.19 | 4,871,844 | 4,871,844 | 4,858,180 | +| Log Opcodes (0.2M, Fixed, Zero Topic, 1 Mib Zeros Data, Log3) | 200,000 | 223,239 | 4,360 | 4.36 | 14,073,348 | 14,069,492.8 | 14,064,564 | +| Log Opcodes (0.2M, Fixed, Zero Topic, 1 Mib Zeros Data, Log4) | 200,000 | 223,239 | 4,447 | 4.45 | 13,775,616 | 13,775,616 | 13,770,736 | +| Address State Cold (0.2M, Absent Accounts False, Balance) | 200,000 | 223,239 | 5,823 | 5.82 | 13,501,004 | 13,500,678.7 | 13,500,028 | +| Address State Cold (0.2M, Absent Accounts True, Balance) | 200,000 | 223,239 | 5,592 | 5.59 | 4,372,084 | 4,364,276 | 4,355,492 | +| Address State Warm (0.2M, Present Target, Balance) | 200,000 | 223,239 | 7,899 | 7.90 | 9,731,252 | 9,730,804 | 9,731,252 | +| Address State Warm (0.2M, Present Target, Callcode) | 200,000 | 223,239 | 10,950 | 10.95 | 6,290,320 | 6,290,320 | 6,250,120 | +| Address State Warm (0.2M, Present Target, Call) | 200,000 | 223,239 | 10,087 | 10.09 | 12,530,844 | 12,530,844 | 12,489,232 | +| Address State Warm (0.2M, Present Target, Delegatecall) | 200,000 | 223,239 | 10,905 | 10.90 | 7,886,316 | 7,883,480 | 7,863,940 | +| Address State Warm (0.2M, Present Target, Extcodehash) | 200,000 | 223,239 | 5,867 | 5.87 | 5,081,348 | 5,074,252 | 5,076,468 | +| Address State Warm (0.2M, Present Target, Extcodesize) | 200,000 | 223,239 | 6,312 | 6.31 | 6,522,764 | 6,520,533.1 | 6,515,932 | +| Address State Warm (0.2M, Present Target, Staticcall) | 200,000 | 223,239 | 10,179 | 10.18 | 6,108,376 | 6,105,448 | 6,097,640 | +| Address State Warm (0.2M, Absent Target, Balance) | 200,000 | 223,239 | 6,729 | 6.73 | 1,289,512 | 1,278,987.2 | 1,267,868 | +| Address State Warm (0.2M, Absent Target, Callcode) | 200,000 | 223,239 | 10,277 | 10.28 | 14,079,740 | 14,071,632.8 | 14,060,220 | +| Address State Warm (0.2M, Absent Target, Call) | 200,000 | 223,239 | 9,555 | 9.55 | 6,247,192 | 6,236,700 | 6,219,216 | +| Address State Warm (0.2M, Absent Target, Delegatecall) | 200,000 | 223,239 | 10,384 | 10.38 | 7,555,288 | 7,555,288 | 7,552,952 | +| Address State Warm (0.2M, Absent Target, Extcodehash) | 200,000 | 223,239 | 9,542 | 9.54 | 6,575,712 | 6,572,296 | 6,564,000 | +| Address State Warm (0.2M, Absent Target, Extcodesize) | 200,000 | 223,239 | 6,639 | 6.64 | 14,809,708 | 14,803,526.7 | 14,798,512 | +| Address State Warm (0.2M, Absent Target, Staticcall) | 200,000 | 223,239 | 9,924 | 9.92 | 9,316,392 | 9,309,320 | 9,300,304 | +| Blockhash (0.2M) | 200,000 | 223,239 | 10,898 | 10.90 | 1,192,520 | 1,175,130.7 | 1,156,236 | +| Extcodecopy Warm (0.2M, 1Kib) | 200,000 | 223,239 | 5,926 | 5.93 | 1,042,048 | 1,030,893.7 | 1,017,648 | +| Extcodecopy Warm (0.2M, 512) | 200,000 | 223,239 | 5,324 | 5.32 | 2,245,512 | 2,239,005.3 | 2,231,908 | +| Extcodecopy Warm (0.2M, 5Kib) | 200,000 | 223,239 | 6,339 | 6.34 | 7,579,476 | 7,571,031.4 | 7,564,560 | +| Selfbalance (0.2M) | 200,000 | 223,239 | 22,709 | 22.71 | 3,391,672 | 3,391,672 | 3,266,536 | +| Selfdestruct Created (0.2M, No Value) | 176,372 | 223,239 | 4,264 | 4.26 | 8,219,180 | 8,217,561.3 | 8,210,396 | +| Selfdestruct Created (0.2M, With Value) | 176,372 | 223,239 | 3,884 | 3.88 | 630,688 | 629,278.2 | 621,904 | +| Selfdestruct Existing (0.2M, No Value) | 195,891 | 223,239 | 4,601 | 4.60 | 12,443,952 | 12,430,613.3 | 12,417,600 | +| Selfdestruct Existing (0.2M, With Value) | 195,891 | 223,239 | 5,138 | 5.14 | 7,543,616 | 7,542,856 | 7,543,616 | +| Selfdestruct Initcode (0.2M, No Value) | 174,196 | 223,239 | 3,916 | 3.92 | 10,683,424 | 10,680,740 | 10,677,500 | +| Selfdestruct Initcode (0.2M, With Value) | 174,196 | 223,239 | 4,222 | 4.22 | 3,873,668 | 3,868,678.7 | 3,864,884 | +| Storage Access Cold (0.2M, Absent Slots False, Ssload) | 198,374 | 223,239 | 6,186 | 6.19 | 7,815,372 | 7,811,272.8 | 7,800,732 | +| Storage Access Cold (0.2M, Absent Slots False, Sstore New Value, Out Of Gas) | 200,000 | 223,239 | 4,899 | 4.90 | 11,445,008 | 11,440,750 | 11,439,152 | +| Storage Access Cold (0.2M, Absent Slots False, Sstore New Value, Revert) | 197,444 | 223,239 | 5,256 | 5.26 | 8,520,844 | 8,516,702 | 8,515,964 | +| Storage Access Cold (0.2M, Absent Slots False, Sstore New Value) | 197,438 | 223,239 | 4,849 | 4.85 | 9,416,916 | 9,416,916 | 9,399,144 | +| Storage Access Cold (0.2M, Absent Slots False, Sstore Same Value, Out Of Gas) | 200,000 | 223,239 | 6,803 | 6.80 | 8,890,020 | 8,882,159 | 8,889,044 | +| Storage Access Cold (0.2M, Absent Slots False, Sstore Same Value, Revert) | 197,811 | 223,239 | 6,176 | 6.18 | 7,214,636 | 7,214,636 | 7,203,900 | +| Storage Access Cold (0.2M, Absent Slots False, Sstore Same Value) | 197,805 | 223,239 | 5,468 | 5.47 | 14,710,732 | 14,693,626 | 14,705,852 | +| Storage Access Cold (0.2M, Absent Slots True, Ssload) | 198,374 | 223,239 | 4,863 | 4.86 | 8,857,320 | 8,855,144 | 8,855,368 | +| Storage Access Cold (0.2M, Absent Slots True, Sstore New Value, Out Of Gas) | 200,000 | 223,239 | 4,154 | 4.15 | 9,433,048 | 9,433,048 | 9,418,868 | +| Storage Access Cold (0.2M, Absent Slots True, Sstore New Value, Revert) | 198,137 | 223,239 | 4,352 | 4.35 | 3,618,572 | 3,613,366.7 | 3,608,812 | +| Storage Access Cold (0.2M, Absent Slots True, Sstore New Value) | 198,131 | 223,239 | 4,088 | 4.09 | 9,377,112 | 9,377,112 | 9,358,176 | +| Storage Access Cold (0.2M, Absent Slots True, Sstore Same Value, Out Of Gas) | 200,000 | 223,239 | 4,499 | 4.50 | 7,580,548 | 7,576,644 | 7,567,860 | +| Storage Access Cold (0.2M, Absent Slots True, Sstore Same Value, Revert) | 198,113 | 223,239 | 3,762 | 3.76 | 14,887,072 | 14,887,072 | 14,886,764 | +| Storage Access Cold (0.2M, Absent Slots True, Sstore Same Value) | 198,107 | 223,239 | 4,123 | 4.12 | 9,600,792 | 9,600,792 | 9,598,840 | +| Storage Access Warm (0.2M, Sload) | 200,000 | 223,239 | 6,250 | 6.25 | 11,420,308 | 11,417,966 | 11,414,268 | +| Storage Access Warm (0.2M, Sstore New Value) | 200,000 | 223,239 | 11,689 | 11.69 | 14,802,364 | 14,786,223.2 | 14,766,084 | +| Storage Access Warm (0.2M, Sstore Same Value) | 200,000 | 223,239 | 8,406 | 8.41 | 7,174,228 | 7,166,750.9 | 7,159,952 | + +## Summary Statistics + +- **Total Tests:** 504 +- **Successful Tests:** 504 +- **Failed Tests:** 0 + +### Proving Time (ms) +- **Average:** 18,634.7 +- **Minimum:** 3,762 +- **Maximum:** 221,279 + +### Peak Memory Usage (MB) +- **Average:** 8,358,574.8 +- **Minimum:** 255,488 +- **Maximum:** 15,146,020 + +### Proof Size (bytes) +- **Average:** 223,239 +- **Minimum:** 223,239 +- **Maximum:** 223,239 diff --git a/www/docs/pages/benchmark-results/gas-categorized/0.2m/sp1-0.2M-4.md b/www/docs/pages/benchmark-results/gas-categorized/0.2m/sp1-0.2M-4.md new file mode 100644 index 00000000..50379b26 --- /dev/null +++ b/www/docs/pages/benchmark-results/gas-categorized/0.2m/sp1-0.2M-4.md @@ -0,0 +1,539 @@ +# zkEVM Benchmark Results + +Generated on: 2026-01-01 15:22:14 + +## Folder: zkevm-metrics-sp1-0.2M-4 + +**zkVM:** sp1-cluster-v5.2.3 (4 GPUs) + +**Hardware Configuration:** CPU: AMD EPYC 7B13 64-Core Processor | RAM: 396 GiB | GPU: NVIDIA GeForce RTX 4090, NVIDIA GeForce RTX 4090, NVIDIA GeForce RTX 4090, NVIDIA GeForce RTX 4090 + +## Proving Metrics + +| Benchmark | Gas Used | Proof Size (bytes) | Proving Time (ms) | Proving Time (s) | Peak Memory (MB) | Avg Memory (MB) | Initial Memory (MB) | +|---|---|---|---|---|---|---|---| +| Block Full Access List And Data (0.2M) | 199,990 | 1,477,226 | 6,050 | 6.05 | 10,100,708 | 10,097,963.2 | 10,082,164 | +| Block Full Data (0.2M, Non Zero Byte) | 200,000 | 1,477,226 | 6,072 | 6.07 | 11,166,156 | 11,166,156 | 11,148,588 | +| Block Full Data (0.2M, Zero Byte) | 200,000 | 1,477,226 | 6,077 | 6.08 | 5,237,072 | 5,229,142 | 5,221,456 | +| Block Full Of Ether Transfers (0.2M, A To A) | 189,000 | 1,477,226 | 6,558 | 6.56 | 9,451,572 | 9,446,073.1 | 9,445,288 | +| Block Full Of Ether Transfers (0.2M, A To B) | 189,000 | 1,477,226 | 6,551 | 6.55 | 2,208,160 | 2,201,328 | 2,191,568 | +| Block Full Of Ether Transfers (0.2M, A To Diff Acc) | 189,000 | 1,477,226 | 7,576 | 7.58 | 8,212,668 | 8,212,668 | 8,200,456 | +| Block Full Of Ether Transfers (0.2M, Diff Acc To B) | 189,000 | 1,477,226 | 6,057 | 6.06 | 3,580,692 | 3,576,137.3 | 3,565,076 | +| Block Full Of Ether Transfers (0.2M, Diff Acc To Diff Acc) | 189,000 | 1,477,226 | 7,091 | 7.09 | 1,893,188 | 1,887,982.7 | 1,873,668 | +| Bytecode Single Opcode (0.2M, Callcode) | 200,000 | 1,477,226 | 11,118 | 11.12 | 1,941,988 | 1,923,010.2 | 1,896,116 | +| Bytecode Single Opcode (0.2M, Call) | 200,000 | 1,477,226 | 11,116 | 11.12 | 6,465,828 | 6,454,224.8 | 6,434,164 | +| Bytecode Single Opcode (0.2M, Delegatecall) | 200,000 | 1,477,226 | 11,604 | 11.60 | 6,708,132 | 6,700,757.8 | 6,694,048 | +| Bytecode Single Opcode (0.2M, Extcodecopy) | 200,000 | 1,477,226 | 11,122 | 11.12 | 12,116,884 | 12,112,980 | 12,098,240 | +| Bytecode Single Opcode (0.2M, Extcodehash) | 200,000 | 1,477,226 | 11,590 | 11.59 | 11,069,320 | 11,063,040.7 | 11,049,528 | +| Bytecode Single Opcode (0.2M, Extcodesize) | 200,000 | 1,477,226 | 11,088 | 11.09 | 2,264,768 | 2,251,104 | 2,234,512 | +| Bytecode Single Opcode (0.2M, Staticcall) | 200,000 | 1,477,226 | 11,124 | 11.12 | 3,757,692 | 3,745,561.7 | 3,731,340 | +| Create (0.2M, 0Bytes, Create2) | 200,000 | 1,477,226 | 6,046 | 6.05 | 6,766,240 | 6,758,876 | 6,744,768 | +| Create (0.2M, 0Bytes, Create) | 200,000 | 1,477,226 | 5,547 | 5.55 | 2,417,996 | 2,414,872.8 | 2,410,188 | +| Create (0.2M, 0Bytes, Create2) | 200,000 | 1,477,226 | 6,070 | 6.07 | 3,068,448 | 3,061,128 | 3,049,904 | +| Create (0.2M, 0Bytes, Create) | 200,000 | 1,477,226 | 6,057 | 6.06 | 13,162,176 | 13,149,450 | 13,141,604 | +| Create (0.2M, 0.25X Max Code, Zero Data, Create2) | 200,000 | 1,477,226 | 6,579 | 6.58 | 840,688 | 828,220 | 808,684 | +| Create (0.2M, 0.25X Max Code, Zero Data, Create) | 200,000 | 1,477,226 | 6,051 | 6.05 | 2,406,288 | 2,403,945.6 | 2,400,432 | +| Create (0.2M, 0.25X Max Code, Create2) | 200,000 | 1,477,226 | 5,550 | 5.55 | 11,236,164 | 11,229,333 | 11,227,056 | +| Create (0.2M, 0.25X Max Code, Create) | 200,000 | 1,477,226 | 5,559 | 5.56 | 3,244,804 | 3,244,804 | 3,229,068 | +| Create (0.2M, 0.50X Max Code Size With Non, Zero Data, Create2) | 200,000 | 1,477,226 | 6,055 | 6.05 | 5,946,044 | 5,943,673.7 | 5,942,140 | +| Create (0.2M, 0.50X Max Code Size With Non, Zero Data, Create) | 200,000 | 1,477,226 | 6,064 | 6.06 | 4,721,116 | 4,717,407.2 | 4,713,308 | +| Create (0.2M, 0.50X Max Code Size With Zero Data, Create2) | 200,000 | 1,477,226 | 6,054 | 6.05 | 8,732,072 | 8,732,072 | 8,711,576 | +| Create (0.2M, 0.50X Max Code Size With Zero Data, Create) | 200,000 | 1,477,226 | 6,063 | 6.06 | 2,386,768 | 2,385,304 | 2,377,984 | +| Create (0.2M, 0.75X Max Code Size With Non, Zero Data, Create2) | 200,000 | 1,477,226 | 6,083 | 6.08 | 3,281,892 | 3,278,964 | 3,272,132 | +| Create (0.2M, 0.75X Max Code Size With Non, Zero Data, Create) | 200,000 | 1,477,226 | 6,074 | 6.07 | 5,831,960 | 5,831,960 | 5,818,296 | +| Create (0.2M, 0.75X Max Code Size With Zero Data, Create2) | 200,000 | 1,477,226 | 6,060 | 6.06 | 11,579,804 | 11,579,804 | 11,570,756 | +| Create (0.2M, 0.75X Max Code Size With Zero Data, Create) | 200,000 | 1,477,226 | 6,058 | 6.06 | 3,180,648 | 3,179,672 | 3,176,744 | +| Create (0.2M, Max Code, Zero Data, Create2) | 200,000 | 1,477,226 | 6,572 | 6.57 | 4,650,172 | 4,647,244 | 4,642,364 | +| Create (0.2M, Max Code, Zero Data, Create) | 200,000 | 1,477,226 | 6,568 | 6.57 | 11,265,444 | 11,256,660 | 11,237,140 | +| Create (0.2M, Max Code, Create2) | 200,000 | 1,477,226 | 6,059 | 6.06 | 9,607,596 | 9,593,200 | 9,584,172 | +| Create (0.2M, Max Code, Create) | 200,000 | 1,477,226 | 6,071 | 6.07 | 3,772,388 | 3,768,484 | 3,759,700 | +| Creates Collisions (0.2M, Create2) | 200,000 | 1,477,226 | 6,058 | 6.06 | 599,676 | 594,470.7 | 581,132 | +| Creates Collisions (0.2M, Create) | 200,000 | 1,477,226 | 6,069 | 6.07 | 9,285,116 | 9,274,054.7 | 9,260,716 | +| Initcode Jumpdest Analysis (0.2M, 00) | 200,000 | 1,477,226 | 6,571 | 6.57 | 2,027,604 | 2,016,542.7 | 2,000,276 | +| Initcode Jumpdest Analysis (0.2M, 5B) | 200,000 | 1,477,226 | 7,078 | 7.08 | 5,011,508 | 5,005,896 | 4,991,012 | +| Initcode Jumpdest Analysis (0.2M, 605B5B) | 200,000 | 1,477,226 | 6,061 | 6.06 | 2,458,572 | 2,451,349.6 | 2,445,884 | +| Initcode Jumpdest Analysis (0.2M, 605B) | 200,000 | 1,477,226 | 6,567 | 6.57 | 7,457,436 | 7,452,359.3 | 7,447,676 | +| Initcode Jumpdest Analysis (0.2M, 615B5B5B) | 200,000 | 1,477,226 | 6,576 | 6.58 | 5,836,196 | 5,832,048 | 5,826,436 | +| Initcode Jumpdest Analysis (0.2M, 615B5B) | 200,000 | 1,477,226 | 6,566 | 6.57 | 12,686,520 | 12,686,520 | 12,662,276 | +| Amortized Bn128 Pairings (0.2M) | 200,000 | 1,477,226 | 11,097 | 11.10 | 2,848,440 | 2,837,826 | 2,822,088 | +| Empty Block (0.2M) | 0 | 1,477,226 | 4,545 | 4.54 | 8,823,420 | 8,823,420 | 8,807,608 | +| Binop Simple (0.2M, Add) | 200,000 | 1,477,226 | 7,074 | 7.07 | 1,706,884 | 1,689,804 | 1,674,676 | +| Binop Simple (0.2M, And) | 200,000 | 1,477,226 | 7,079 | 7.08 | 11,844,208 | 11,837,614 | 11,824,680 | +| Binop Simple (0.2M, Byte) | 200,000 | 1,477,226 | 7,082 | 7.08 | 4,916,872 | 4,913,090 | 4,904,184 | +| Binop Simple (0.2M, Div, 0) | 200,000 | 1,477,226 | 9,104 | 9.10 | 2,553,768 | 2,550,189.3 | 2,540,104 | +| Binop Simple (0.2M, Div, 1) | 200,000 | 1,477,226 | 9,612 | 9.61 | 7,690,612 | 7,690,612 | 7,678,072 | +| Binop Simple (0.2M, Eq) | 200,000 | 1,477,226 | 8,095 | 8.10 | 10,121,052 | 10,105,309.7 | 10,097,720 | +| Binop Simple (0.2M, Exp) | 200,000 | 1,477,226 | 7,595 | 7.59 | 12,924,352 | 12,922,468 | 12,924,352 | +| Binop Simple (0.2M, Gt) | 200,000 | 1,477,226 | 7,055 | 7.05 | 5,694,372 | 5,692,664 | 5,689,492 | +| Binop Simple (0.2M, Lt) | 200,000 | 1,477,226 | 7,072 | 7.07 | 637,016 | 627,883.4 | 614,316 | +| Binop Simple (0.2M, Mod) | 200,000 | 1,477,226 | 7,089 | 7.09 | 12,382,752 | 12,377,216.7 | 12,356,152 | +| Binop Simple (0.2M, Mul) | 200,000 | 1,477,226 | 6,566 | 6.57 | 3,795,452 | 3,784,885.1 | 3,775,316 | +| Binop Simple (0.2M, Or) | 200,000 | 1,477,226 | 6,577 | 6.58 | 7,040,380 | 7,026,604 | 7,009,956 | +| Binop Simple (0.2M, Sar) | 200,000 | 1,477,226 | 7,090 | 7.09 | 6,399,844 | 6,393,988 | 6,387,156 | +| Binop Simple (0.2M, Sdiv, 0) | 200,000 | 1,477,226 | 10,095 | 10.10 | 712,804 | 696,671.3 | 668,884 | +| Binop Simple (0.2M, Sdiv, 1) | 200,000 | 1,477,226 | 10,113 | 10.11 | 8,760,472 | 8,753,290.3 | 8,735,000 | +| Binop Simple (0.2M, Sgt) | 200,000 | 1,477,226 | 7,592 | 7.59 | 11,881,564 | 11,879,937.3 | 11,856,424 | +| Binop Simple (0.2M, Shl) | 200,000 | 1,477,226 | 7,070 | 7.07 | 1,140,272 | 1,130,316.8 | 1,104,160 | +| Binop Simple (0.2M, Shr) | 200,000 | 1,477,226 | 7,064 | 7.06 | 9,259,740 | 9,259,740 | 9,247,652 | +| Binop Simple (0.2M, Signextend) | 200,000 | 1,477,226 | 7,081 | 7.08 | 1,824,868 | 1,821,452 | 1,802,420 | +| Binop Simple (0.2M, Slt) | 200,000 | 1,477,226 | 7,087 | 7.09 | 8,557,952 | 8,555,244.7 | 8,548,540 | +| Binop Simple (0.2M, Smod) | 200,000 | 1,477,226 | 7,096 | 7.10 | 6,888,916 | 6,882,246.7 | 6,867,444 | +| Binop Simple (0.2M, Sub) | 200,000 | 1,477,226 | 7,077 | 7.08 | 9,185,788 | 9,181,368 | 9,177,980 | +| Binop Simple (0.2M, Xor) | 200,000 | 1,477,226 | 7,054 | 7.05 | 12,124,208 | 12,121,961 | 12,121,764 | +| Blobhash (0.2M, No Blobs) | 200,000 | 1,477,226 | 7,076 | 7.08 | 4,291,808 | 4,289,075.2 | 4,283,024 | +| Blobhash (0.2M, One Blob And Accessed) | 200,000 | 1,477,226 | 7,582 | 7.58 | 5,852,148 | 5,851,172 | 5,836,840 | +| Blobhash (0.2M, One Blob But Access Non, Existent Index) | 200,000 | 1,477,226 | 6,577 | 6.58 | 5,360,532 | 5,351,748 | 5,345,892 | +| Blobhash (0.2M, Six Blobs, Access Latest) | 200,000 | 1,477,226 | 7,064 | 7.06 | 11,199,468 | 11,198,770.9 | 11,191,660 | +| Calldataload (0.2M, Empty) | 200,000 | 1,477,226 | 7,053 | 7.05 | 10,852,388 | 10,848,646.7 | 10,844,640 | +| Calldataload (0.2M, One, Loop) | 200,000 | 1,477,226 | 7,078 | 7.08 | 4,760,680 | 4,760,680 | 4,750,920 | +| Calldataload (0.2M, Zero, Loop) | 200,000 | 1,477,226 | 7,067 | 7.07 | 5,745,120 | 5,736,824 | 5,726,576 | +| Calldatasize (0.2M, Calldata Length 0) | 200,000 | 1,477,226 | 7,060 | 7.06 | 1,175,408 | 1,158,328 | 1,141,248 | +| Calldatasize (0.2M, Calldata Length 10000) | 200,000 | 1,477,226 | 7,069 | 7.07 | 8,282,440 | 8,280,893.1 | 8,279,296 | +| Calldatasize (0.2M, Calldata Length 1000) | 200,000 | 1,477,226 | 6,560 | 6.56 | 4,139,968 | 4,138,666.7 | 4,134,112 | +| Callvalue (0.2M, From Origin False, Non Zero Value False) | 200,000 | 1,477,226 | 7,069 | 7.07 | 10,567,464 | 10,557,428 | 10,567,464 | +| Callvalue (0.2M, From Origin False, Non Zero Value True) | 200,000 | 1,477,226 | 7,065 | 7.07 | 668,888 | 655,249.8 | 639,944 | +| Callvalue (0.2M, From Origin True, Non Zero Value False) | 200,000 | 1,477,226 | 7,583 | 7.58 | 12,972,080 | 12,971,502 | 12,941,048 | +| Callvalue (0.2M, From Origin True, Non Zero Value True) | 200,000 | 1,477,226 | 6,563 | 6.56 | 2,046,144 | 2,037,363 | 2,030,532 | +| Dup (0.2M, Dup10) | 200,000 | 1,477,226 | 6,567 | 6.57 | 4,232,272 | 4,224,464 | 4,217,632 | +| Dup (0.2M, Dup11) | 200,000 | 1,477,226 | 7,077 | 7.08 | 5,635,004 | 5,632,544 | 5,634,028 | +| Dup (0.2M, Dup12) | 200,000 | 1,477,226 | 6,552 | 6.55 | 11,207,276 | 11,204,348 | 11,199,468 | +| Dup (0.2M, Dup13) | 200,000 | 1,477,226 | 7,078 | 7.08 | 5,796,552 | 5,783,138.9 | 5,764,344 | +| Dup (0.2M, Dup14) | 200,000 | 1,477,226 | 7,083 | 7.08 | 9,218,040 | 9,211,020 | 9,196,740 | +| Dup (0.2M, Dup15) | 200,000 | 1,477,226 | 7,081 | 7.08 | 3,216,388 | 3,206,721 | 3,198,216 | +| Dup (0.2M, Dup16) | 200,000 | 1,477,226 | 7,552 | 7.55 | 9,414,436 | 9,409,558 | 9,403,700 | +| Dup (0.2M, Dup1) | 200,000 | 1,477,226 | 7,563 | 7.56 | 11,979,160 | 11,979,160 | 11,910,368 | +| Dup (0.2M, Dup2) | 200,000 | 1,477,226 | 7,071 | 7.07 | 12,656,272 | 12,645,288 | 12,656,272 | +| Dup (0.2M, Dup3) | 200,000 | 1,477,226 | 7,073 | 7.07 | 1,070,000 | 1,058,706.3 | 1,040,720 | +| Dup (0.2M, Dup4) | 200,000 | 1,477,226 | 7,061 | 7.06 | 10,020,796 | 10,006,354 | 9,990,584 | +| Dup (0.2M, Dup5) | 200,000 | 1,477,226 | 7,088 | 7.09 | 12,921,996 | 12,918,288 | 12,905,992 | +| Dup (0.2M, Dup6) | 200,000 | 1,477,226 | 7,091 | 7.09 | 2,651,836 | 2,648,380 | 2,638,000 | +| Dup (0.2M, Dup7) | 200,000 | 1,477,226 | 6,561 | 6.56 | 2,325,280 | 2,316,008 | 2,297,952 | +| Dup (0.2M, Dup8) | 200,000 | 1,477,226 | 7,069 | 7.07 | 9,442,364 | 9,433,775.2 | 9,426,748 | +| Dup (0.2M, Dup9) | 200,000 | 1,477,226 | 7,059 | 7.06 | 2,110,560 | 2,104,425.1 | 2,097,872 | +| Jumpdests (0.2M) | 200,000 | 1,477,226 | 7,061 | 7.06 | 4,904,216 | 4,902,752 | 4,899,336 | +| Jumpi Fallthrough (0.2M) | 200,000 | 1,477,226 | 6,566 | 6.57 | 12,392,628 | 12,389,826.4 | 12,377,988 | +| Jumpis (0.2M) | 200,000 | 1,477,226 | 6,061 | 6.06 | 4,839,880 | 4,838,578.7 | 4,835,000 | +| Jumps (0.2M) | 200,000 | 1,477,226 | 6,069 | 6.07 | 8,871,920 | 8,871,920 | 8,868,016 | +| Keccak (0.2M) | 200,000 | 1,477,226 | 8,600 | 8.60 | 9,527,504 | 9,518,175 | 9,504,980 | +| Memory Access (0.2M, Small Mem, Uninit Offset, Off 0, Mload) | 200,000 | 1,477,226 | 7,076 | 7.08 | 2,714,300 | 2,705,516 | 2,691,852 | +| Memory Access (0.2M, Small Mem, Uninit Offset, Off 0, Mstore8) | 200,000 | 1,477,226 | 7,583 | 7.58 | 10,567,528 | 10,567,528 | 10,561,804 | +| Memory Access (0.2M, Small Mem, Uninit Offset, Off 0, Mstore) | 200,000 | 1,477,226 | 7,572 | 7.57 | 6,093,300 | 6,093,300 | 6,084,516 | +| Memory Access (0.2M, Small Mem, Uninit Offset, Off 1, Mload) | 200,000 | 1,477,226 | 7,060 | 7.06 | 11,188,256 | 11,174,374.4 | 11,160,704 | +| Memory Access (0.2M, Small Mem, Uninit Offset, Off 1, Mstore8) | 200,000 | 1,477,226 | 7,598 | 7.60 | 6,244,236 | 6,236,037.6 | 6,228,472 | +| Memory Access (0.2M, Small Mem, Uninit Offset, Off 1, Mstore) | 200,000 | 1,477,226 | 7,063 | 7.06 | 1,871,716 | 1,864,640 | 1,846,340 | +| Memory Access (0.2M, Small Mem, Uninit Offset, Off 31, Mload) | 200,000 | 1,477,226 | 7,070 | 7.07 | 6,267,648 | 6,257,456 | 6,241,296 | +| Memory Access (0.2M, Small Mem, Uninit Offset, Off 31, Mstore8) | 200,000 | 1,477,226 | 6,565 | 6.57 | 9,212,660 | 9,209,204 | 9,212,660 | +| Memory Access (0.2M, Small Mem, Uninit Offset, Off 31, Mstore) | 200,000 | 1,477,226 | 7,567 | 7.57 | 8,323,952 | 8,318,288 | 8,302,864 | +| Memory Access (0.2M, Small Mem, Init Offset, Off 0, Mload) | 200,000 | 1,477,226 | 6,587 | 6.59 | 1,039,744 | 1,030,262.9 | 1,013,392 | +| Memory Access (0.2M, Small Mem, Init Offset, Off 0, Mstore8) | 200,000 | 1,477,226 | 6,557 | 6.56 | 9,867,504 | 9,863,962 | 9,861,480 | +| Memory Access (0.2M, Small Mem, Init Offset, Off 0, Mstore) | 200,000 | 1,477,226 | 7,552 | 7.55 | 8,605,704 | 8,599,506 | 8,599,492 | +| Memory Access (0.2M, Small Mem, Init Offset, Off 1, Mload) | 200,000 | 1,477,226 | 7,579 | 7.58 | 4,980,716 | 4,971,090 | 4,959,244 | +| Memory Access (0.2M, Small Mem, Init Offset, Off 1, Mstore8) | 200,000 | 1,477,226 | 7,060 | 7.06 | 8,504,060 | 8,501,022.4 | 8,497,656 | +| Memory Access (0.2M, Small Mem, Init Offset, Off 1, Mstore) | 200,000 | 1,477,226 | 7,063 | 7.06 | 7,282,808 | 7,282,808 | 7,266,408 | +| Memory Access (0.2M, Small Mem, Init Offset, Off 31, Mload) | 200,000 | 1,477,226 | 7,057 | 7.06 | 12,150,220 | 12,142,021.6 | 12,122,892 | +| Memory Access (0.2M, Small Mem, Init Offset, Off 31, Mstore8) | 200,000 | 1,477,226 | 7,072 | 7.07 | 1,839,508 | 1,834,488.6 | 1,826,820 | +| Memory Access (0.2M, Small Mem, Init Offset, Off 31, Mstore) | 200,000 | 1,477,226 | 7,058 | 7.06 | 11,750,760 | 11,734,818.7 | 11,717,728 | +| Memory Access (0.2M, Big Mem, Uninit Offset, Off 0, Mload) | 200,000 | 1,477,226 | 7,066 | 7.07 | 7,809,504 | 7,805,600 | 7,798,768 | +| Memory Access (0.2M, Big Mem, Uninit Offset, Off 0, Mstore8) | 200,000 | 1,477,226 | 7,566 | 7.57 | 4,466,036 | 4,452,046.7 | 4,435,780 | +| Memory Access (0.2M, Big Mem, Uninit Offset, Off 0, Mstore) | 200,000 | 1,477,226 | 7,566 | 7.57 | 12,792,796 | 12,792,796 | 12,725,508 | +| Memory Access (0.2M, Big Mem, Uninit Offset, Off 1, Mload) | 200,000 | 1,477,226 | 6,562 | 6.56 | 6,314,232 | 6,309,352 | 6,290,808 | +| Memory Access (0.2M, Big Mem, Uninit Offset, Off 1, Mstore8) | 200,000 | 1,477,226 | 7,097 | 7.10 | 12,985,208 | 12,985,208 | 12,975,008 | +| Memory Access (0.2M, Big Mem, Uninit Offset, Off 1, Mstore) | 200,000 | 1,477,226 | 7,579 | 7.58 | 11,427,392 | 11,427,392 | 11,345,940 | +| Memory Access (0.2M, Big Mem, Uninit Offset, Off 31, Mload) | 200,000 | 1,477,226 | 7,061 | 7.06 | 5,627,996 | 5,623,506.4 | 5,620,564 | +| Memory Access (0.2M, Big Mem, Uninit Offset, Off 31, Mstore8) | 200,000 | 1,477,226 | 7,070 | 7.07 | 8,930,232 | 8,916,770 | 8,898,024 | +| Memory Access (0.2M, Big Mem, Uninit Offset, Off 31, Mstore) | 200,000 | 1,477,226 | 7,599 | 7.60 | 6,037,740 | 6,037,740 | 6,025,052 | +| Memory Access (0.2M, Big Mem, Init Offset, Off 0, Mload) | 200,000 | 1,477,226 | 7,089 | 7.09 | 2,233,536 | 2,224,194.3 | 2,211,088 | +| Memory Access (0.2M, Big Mem, Init Offset, Off 0, Mstore8) | 200,000 | 1,477,226 | 6,578 | 6.58 | 10,296,836 | 10,296,836 | 10,289,028 | +| Memory Access (0.2M, Big Mem, Init Offset, Off 0, Mstore) | 200,000 | 1,477,226 | 7,072 | 7.07 | 7,297,448 | 7,291,006.4 | 7,282,808 | +| Memory Access (0.2M, Big Mem, Init Offset, Off 1, Mload) | 200,000 | 1,477,226 | 6,560 | 6.56 | 9,329,588 | 9,316,294 | 9,300,072 | +| Memory Access (0.2M, Big Mem, Init Offset, Off 1, Mstore8) | 200,000 | 1,477,226 | 6,560 | 6.56 | 7,716,416 | 7,707,046.4 | 7,700,800 | +| Memory Access (0.2M, Big Mem, Init Offset, Off 1, Mstore) | 200,000 | 1,477,226 | 7,094 | 7.09 | 7,542,176 | 7,542,176 | 7,538,272 | +| Memory Access (0.2M, Big Mem, Init Offset, Off 31, Mload) | 200,000 | 1,477,226 | 7,080 | 7.08 | 8,901,144 | 8,899,096 | 8,878,696 | +| Memory Access (0.2M, Big Mem, Init Offset, Off 31, Mstore8) | 200,000 | 1,477,226 | 7,063 | 7.06 | 497,196 | 488,709.0 | 470,844 | +| Memory Access (0.2M, Big Mem, Init Offset, Off 31, Mstore) | 200,000 | 1,477,226 | 7,099 | 7.10 | 4,155,580 | 4,154,929.3 | 4,141,916 | +| Mod (0.2M, Op Mod, Mod Bits 127) | 200,000 | 1,477,226 | 9,115 | 9.12 | 763,424 | 747,262.9 | 714,756 | +| Mod (0.2M, Op Mod, Mod Bits 191) | 200,000 | 1,477,226 | 10,615 | 10.62 | 11,497,144 | 11,497,144 | 11,479,972 | +| Mod (0.2M, Op Mod, Mod Bits 255) | 200,000 | 1,477,226 | 9,593 | 9.59 | 11,193,436 | 11,190,374.7 | 11,184,652 | +| Mod (0.2M, Op Mod, Mod Bits 63) | 200,000 | 1,477,226 | 8,097 | 8.10 | 8,675,940 | 8,672,361.3 | 8,663,252 | +| Mod (0.2M, Op Smod, Mod Bits 127) | 200,000 | 1,477,226 | 10,091 | 10.09 | 8,427,016 | 8,415,025.1 | 8,398,712 | +| Mod (0.2M, Op Smod, Mod Bits 191) | 200,000 | 1,477,226 | 10,096 | 10.10 | 4,023,036 | 4,019,945.3 | 4,009,372 | +| Mod (0.2M, Op Smod, Mod Bits 255) | 200,000 | 1,477,226 | 9,586 | 9.59 | 8,972,028 | 8,958,090.2 | 8,932,012 | +| Mod (0.2M, Op Smod, Mod Bits 63) | 200,000 | 1,477,226 | 8,090 | 8.09 | 9,614,680 | 9,610,389 | 9,605,896 | +| Modarith (0.2M, Op Addmod, Mod Bits 127) | 200,000 | 1,477,226 | 9,080 | 9.08 | 8,593,084 | 8,591,650 | 8,593,084 | +| Modarith (0.2M, Op Addmod, Mod Bits 191) | 200,000 | 1,477,226 | 9,070 | 9.07 | 6,084,516 | 6,074,616.6 | 6,057,188 | +| Modarith (0.2M, Op Addmod, Mod Bits 255) | 200,000 | 1,477,226 | 9,586 | 9.59 | 3,564,100 | 3,555,438 | 3,545,556 | +| Modarith (0.2M, Op Addmod, Mod Bits 63) | 200,000 | 1,477,226 | 7,568 | 7.57 | 3,229,072 | 3,228,096 | 3,216,384 | +| Modarith (0.2M, Op Mulmod, Mod Bits 127) | 200,000 | 1,477,226 | 11,602 | 11.60 | 5,338,844 | 5,331,372 | 5,317,372 | +| Modarith (0.2M, Op Mulmod, Mod Bits 191) | 200,000 | 1,477,226 | 12,644 | 12.64 | 3,527,012 | 3,511,674.9 | 3,498,708 | +| Modarith (0.2M, Op Mulmod, Mod Bits 255) | 200,000 | 1,477,226 | 12,604 | 12.60 | 10,080,948 | 10,065,050 | 10,051,224 | +| Modarith (0.2M, Op Mulmod, Mod Bits 63) | 200,000 | 1,477,226 | 9,588 | 9.59 | 10,778,620 | 10,759,571 | 10,749,460 | +| Modexp (0.2M, Mod 1045 Gas Base Heavy) | 200,000 | 1,477,226 | 74,264 | 74.26 | 5,158,956 | 5,134,255.3 | 5,086,772 | +| Modexp (0.2M, Mod 1360 Gas Balanced) | 200,000 | 1,477,226 | 23,259 | 23.26 | 11,476,244 | 11,468,102.7 | 11,461,260 | +| Modexp (0.2M, Mod 400 Gas Exp Heavy) | 200,000 | 1,477,226 | 26,258 | 26.26 | 4,353,968 | 4,338,019.6 | 4,310,352 | +| Modexp (0.2M, Mod 408 Gas Balanced) | 200,000 | 1,477,226 | 20,692 | 20.69 | 4,093,120 | 4,078,267.4 | 4,058,344 | +| Modexp (0.2M, Mod 408 Gas Base Heavy) | 200,000 | 1,477,226 | 67,723 | 67.72 | 7,193,460 | 7,128,255.6 | 7,098,408 | +| Modexp (0.2M, Mod 600 As Balanced) | 200,000 | 1,477,226 | 22,182 | 22.18 | 6,508,116 | 6,490,138.9 | 6,460,404 | +| Modexp (0.2M, Mod 600 Gas Exp Heavy) | 200,000 | 1,477,226 | 28,297 | 28.30 | 13,131,620 | 13,106,496.5 | 13,088,148 | +| Modexp (0.2M, Mod 616 Gas Base Heavy) | 200,000 | 1,477,226 | 72,730 | 72.73 | 4,839,096 | 4,802,769.0 | 4,765,560 | +| Modexp (0.2M, Mod 677 Gas Base Heavy) | 200,000 | 1,477,226 | 23,252 | 23.25 | 5,177,500 | 5,167,647.0 | 5,158,956 | +| Modexp (0.2M, Mod 765 Gas Exp Heavy) | 200,000 | 1,477,226 | 23,777 | 23.78 | 6,587,756 | 6,550,353.4 | 6,516,968 | +| Modexp (0.2M, Mod 767 Gas Balanced) | 200,000 | 1,477,226 | 20,199 | 20.20 | 2,748,460 | 2,728,574 | 2,714,300 | +| Modexp (0.2M, Mod 800 Gas Base Heavy) | 200,000 | 1,477,226 | 74,722 | 74.72 | 10,574,296 | 10,511,621.0 | 10,416,916 | +| Modexp (0.2M, Mod 800 Gas Exp Heavy) | 200,000 | 1,477,226 | 29,331 | 29.33 | 10,396,552 | 10,393,774.7 | 10,388,744 | +| Modexp (0.2M, Mod 852 Gas Exp Heavy) | 200,000 | 1,477,226 | 28,792 | 28.79 | 5,085,796 | 5,076,644.7 | 5,066,068 | +| Modexp (0.2M, Mod 867 Gas Base Heavy) | 200,000 | 1,477,226 | 74,158 | 74.16 | 11,005,240 | 10,956,291.6 | 10,852,388 | +| Modexp (0.2M, Mod 996 Gas Balanced) | 200,000 | 1,477,226 | 21,725 | 21.73 | 12,528,560 | 12,516,277.5 | 12,479,376 | +| Modexp (0.2M, Mod Even 1024B Exp 1024) | 200,000 | 1,477,226 | 6,050 | 6.05 | 9,432,644 | 9,420,346.4 | 9,397,508 | +| Modexp (0.2M, Mod Even 128B Exp 1024) | 200,000 | 1,477,226 | 14,634 | 14.63 | 6,177,168 | 6,151,996 | 6,131,908 | +| Modexp (0.2M, Mod Even 16B Exp 320) | 200,000 | 1,477,226 | 27,795 | 27.80 | 10,683,456 | 10,675,825.8 | 10,623,068 | +| Modexp (0.2M, Mod Even 24B Exp 168) | 200,000 | 1,477,226 | 24,223 | 24.22 | 4,427,976 | 4,409,875.6 | 4,395,768 | +| Modexp (0.2M, Mod Even 256B Exp 1024) | 200,000 | 1,477,226 | 6,571 | 6.57 | 4,029,864 | 4,028,725.3 | 4,023,032 | +| Modexp (0.2M, Mod Even 32B Exp 256) | 200,000 | 1,477,226 | 22,704 | 22.70 | 2,508,872 | 2,490,516.8 | 2,458,572 | +| Modexp (0.2M, Mod Even 32B Exp 40) | 200,000 | 1,477,226 | 20,687 | 20.69 | 9,019,796 | 9,005,981 | 8,992,592 | +| Modexp (0.2M, Mod Even 32B Exp 96) | 200,000 | 1,477,226 | 21,713 | 21.71 | 4,709,404 | 4,685,561.7 | 4,663,532 | +| Modexp (0.2M, Mod Even 512B Exp 1024) | 200,000 | 1,477,226 | 6,050 | 6.05 | 6,132,888 | 6,132,888 | 6,110,868 | +| Modexp (0.2M, Mod Even 64B Exp 512) | 200,000 | 1,477,226 | 22,266 | 22.27 | 10,394,860 | 10,365,349.8 | 10,333,428 | +| Modexp (0.2M, Mod Even 8B Exp 896) | 200,000 | 1,477,226 | 43,424 | 43.42 | 2,950,512 | 2,914,306 | 2,850,392 | +| Modexp (0.2M, Mod Exp 208 Gas Balanced) | 200,000 | 1,477,226 | 19,207 | 19.21 | 1,626,752 | 1,602,276.9 | 1,565,264 | +| Modexp (0.2M, Mod Exp 215 Gas Exp Heavy) | 200,000 | 1,477,226 | 39,917 | 39.92 | 12,063,752 | 12,063,752 | 11,988,460 | +| Modexp (0.2M, Mod Exp 298 Gas Exp Heavy) | 200,000 | 1,477,226 | 42,886 | 42.89 | 5,197,996 | 5,189,370.9 | 5,184,332 | +| Modexp (0.2M, Mod Min As Balanced) | 200,000 | 1,477,226 | 20,703 | 20.70 | 11,711,872 | 11,707,410.3 | 11,664,800 | +| Modexp (0.2M, Mod Min As Base Heavy) | 200,000 | 1,477,226 | 57,014 | 57.01 | 3,174,792 | 3,124,909.0 | 3,072,352 | +| Modexp (0.2M, Mod Min As Exp Heavy) | 200,000 | 1,477,226 | 38,895 | 38.90 | 4,410,592 | 4,390,524.4 | 4,350,080 | +| Modexp (0.2M, Mod Odd 1024B Exp 1024) | 200,000 | 1,477,226 | 6,059 | 6.06 | 7,328,604 | 7,328,604 | 7,309,160 | +| Modexp (0.2M, Mod Odd 128B Exp 1024) | 200,000 | 1,477,226 | 15,141 | 15.14 | 8,517,636 | 8,512,668 | 8,517,636 | +| Modexp (0.2M, Mod Odd 256B Exp 1024) | 200,000 | 1,477,226 | 6,549 | 6.55 | 11,520,584 | 11,508,628 | 11,500,088 | +| Modexp (0.2M, Mod Odd 32B Exp 256) | 200,000 | 1,477,226 | 23,251 | 23.25 | 12,622,024 | 12,597,549 | 12,568,948 | +| Modexp (0.2M, Mod Odd 32B Exp 96) | 200,000 | 1,477,226 | 22,744 | 22.74 | 12,357,128 | 12,357,128 | 12,296,400 | +| Modexp (0.2M, Mod Odd 32B Exp Cover Windows) | 200,000 | 1,477,226 | 18,194 | 18.19 | 3,427,316 | 3,427,316 | 3,352,164 | +| Modexp (0.2M, Mod Odd 512B Exp 1024) | 200,000 | 1,477,226 | 5,559 | 5.56 | 2,783,596 | 2,783,596 | 2,783,596 | +| Modexp (0.2M, Mod Odd 64B Exp 512) | 200,000 | 1,477,226 | 22,241 | 22.24 | 9,510,012 | 9,510,012 | 9,435,516 | +| Modexp (0.2M, Mod Pawel 2) | 200,000 | 1,477,226 | 26,242 | 26.24 | 2,092,992 | 2,076,488.7 | 2,048,096 | +| Modexp (0.2M, Mod Pawel 3) | 200,000 | 1,477,226 | 22,703 | 22.70 | 8,255,872 | 8,243,448.6 | 8,211,420 | +| Modexp (0.2M, Mod Pawel 4) | 200,000 | 1,477,226 | 20,711 | 20.71 | 468,892 | 415,146.9 | 271,740 | +| Modexp (0.2M, Mod Vul Common 1152N1) | 200,000 | 1,477,226 | 15,670 | 15.67 | 4,724,044 | 4,724,044 | 4,722,092 | +| Modexp (0.2M, Mod Vul Common 1349N1) | 200,000 | 1,477,226 | 20,187 | 20.19 | 10,622,092 | 10,600,688.7 | 10,596,644 | +| Modexp (0.2M, Mod Vul Common 1360N1) | 200,000 | 1,477,226 | 21,225 | 21.23 | 8,503,832 | 8,486,832 | 8,460,328 | +| Modexp (0.2M, Mod Vul Common 1360N2) | 200,000 | 1,477,226 | 20,706 | 20.71 | 9,124,708 | 9,124,708 | 9,119,828 | +| Modexp (0.2M, Mod Vul Common 200N1) | 200,000 | 1,477,226 | 14,656 | 14.66 | 3,495,780 | 3,473,332 | 3,460,644 | +| Modexp (0.2M, Mod Vul Common 200N2) | 200,000 | 1,477,226 | 15,654 | 15.65 | 4,210,808 | 4,209,501.3 | 4,194,216 | +| Modexp (0.2M, Mod Vul Common 200N3) | 200,000 | 1,477,226 | 15,639 | 15.64 | 8,672,816 | 8,660,310.7 | 8,609,292 | +| Modexp (0.2M, Mod Vul Example 1) | 200,000 | 1,477,226 | 23,246 | 23.25 | 12,527,984 | 12,510,720 | 12,492,480 | +| Modexp (0.2M, Mod Vul Example 2) | 200,000 | 1,477,226 | 21,730 | 21.73 | 5,650,072 | 5,639,260.9 | 5,622,744 | +| Modexp (0.2M, Mod Vul Guido 1 Even) | 200,000 | 1,477,226 | 18,183 | 18.18 | 2,376,032 | 2,376,032 | 2,327,232 | +| Modexp (0.2M, Mod Vul Guido 2 Even) | 200,000 | 1,477,226 | 25,774 | 25.77 | 4,266,432 | 4,248,638.8 | 4,236,176 | +| Modexp (0.2M, Mod Vul Guido 3 Even) | 200,000 | 1,477,226 | 41,385 | 41.38 | 5,917,056 | 5,907,624.9 | 5,891,680 | +| Modexp (0.2M, Mod Vul Marius 1 Even) | 200,000 | 1,477,226 | 23,736 | 23.74 | 4,609,952 | 4,603,852 | 4,597,264 | +| Modexp (0.2M, Mod Vul Nagydani 1 Pow 0X10001) | 200,000 | 1,477,226 | 17,703 | 17.70 | 1,467,828 | 1,440,778.9 | 1,386,820 | +| Modexp (0.2M, Mod Vul Nagydani 1 Qube) | 200,000 | 1,477,226 | 15,160 | 15.16 | 921,692 | 895,084 | 842,636 | +| Modexp (0.2M, Mod Vul Nagydani 1 Square) | 200,000 | 1,477,226 | 14,668 | 14.67 | 6,949,448 | 6,949,448 | 6,894,772 | +| Modexp (0.2M, Mod Vul Nagydani 2 Pow 0X10001) | 200,000 | 1,477,226 | 18,208 | 18.21 | 9,112,020 | 9,091,996.5 | 9,063,692 | +| Modexp (0.2M, Mod Vul Nagydani 2 Qube) | 200,000 | 1,477,226 | 33,331 | 33.33 | 10,700,424 | 10,700,424 | 10,659,432 | +| Modexp (0.2M, Mod Vul Nagydani 2 Square) | 200,000 | 1,477,226 | 30,281 | 30.28 | 579,180 | 551,827.6 | 498,172 | +| Modexp (0.2M, Mod Vul Nagydani 3 Pow 0X10001) | 200,000 | 1,477,226 | 18,180 | 18.18 | 10,207,548 | 10,202,276.4 | 10,185,676 | +| Modexp (0.2M, Mod Vul Nagydani 3 Qube) | 200,000 | 1,477,226 | 74,180 | 74.18 | 12,527,152 | 12,463,475.9 | 12,387,360 | +| Modexp (0.2M, Mod Vul Nagydani 3 Square) | 200,000 | 1,477,226 | 67,193 | 67.19 | 9,774,708 | 9,740,722.0 | 9,657,020 | +| Modexp (0.2M, Mod Vul Nagydani 4 Pow 0X10001) | 200,000 | 1,477,226 | 17,662 | 17.66 | 12,822,820 | 12,822,820 | 12,792,796 | +| Modexp (0.2M, Mod Vul Nagydani 4 Qube) | 200,000 | 1,477,226 | 82,344 | 82.34 | 3,732,948 | 3,686,721.6 | 3,613,876 | +| Modexp (0.2M, Mod Vul Nagydani 4 Square) | 200,000 | 1,477,226 | 76,229 | 76.23 | 11,021,596 | 10,980,528.8 | 10,947,084 | +| Modexp (0.2M, Mod Vul Nagydani 5 Pow 0X10001) | 200,000 | 1,477,226 | 12,609 | 12.61 | 12,270,364 | 12,268,217.3 | 12,229,764 | +| Modexp (0.2M, Mod Vul Nagydani 5 Qube) | 200,000 | 1,477,226 | 77,284 | 77.28 | 11,161,044 | 11,125,963.9 | 11,069,100 | +| Modexp (0.2M, Mod Vul Nagydani 5 Square) | 200,000 | 1,477,226 | 70,692 | 70.69 | 5,631,588 | 5,596,488.5 | 5,522,544 | +| Modexp (0.2M, Mod Vul Pawel 1 Exp Heavy) | 200,000 | 1,477,226 | 41,908 | 41.91 | 5,687,984 | 5,667,069.9 | 5,627,996 | +| Modexp (0.2M, Mod Vul Pawel 2 Exp Heavy) | 200,000 | 1,477,226 | 25,767 | 25.77 | 7,602,408 | 7,586,065.5 | 7,548,416 | +| Modexp (0.2M, Mod Vul Pawel 3 Exp Heavy) | 200,000 | 1,477,226 | 22,734 | 22.73 | 11,454,992 | 11,445,866 | 11,434,476 | +| Modexp (0.2M, Mod Vul Pawel 4 Exp Heavy) | 200,000 | 1,477,226 | 21,229 | 21.23 | 9,364,544 | 9,346,094.2 | 9,330,564 | +| Msize (0.2M, Mem Size 0) | 200,000 | 1,477,226 | 7,067 | 7.07 | 7,429,304 | 7,429,304 | 7,395,144 | +| Msize (0.2M, Mem Size 1000000) | 200,000 | 1,477,226 | 6,577 | 6.58 | 8,837,848 | 8,833,456 | 8,819,304 | +| Msize (0.2M, Mem Size 100000) | 200,000 | 1,477,226 | 7,071 | 7.07 | 10,183,724 | 10,171,546 | 10,158,052 | +| Msize (0.2M, Mem Size 1000) | 200,000 | 1,477,226 | 7,088 | 7.09 | 1,771,188 | 1,757,686.7 | 1,740,932 | +| Msize (0.2M, Mem Size 1) | 200,000 | 1,477,226 | 7,079 | 7.08 | 8,556,120 | 8,548,491.3 | 8,544,828 | +| Precompile Fixed Cost (0.2M, Blake2F) | 200,000 | 1,477,226 | 16,159 | 16.16 | 4,193,404 | 4,170,142.7 | 4,155,576 | +| Precompile Fixed Cost (0.2M, Bls12 Fp To G1) | 200,000 | 1,477,226 | 31,290 | 31.29 | 8,372,360 | 8,372,360 | 8,324,548 | +| Precompile Fixed Cost (0.2M, Bls12 Fp To G2) | 200,000 | 1,477,226 | 23,748 | 23.75 | 2,159,360 | 2,144,394.7 | 2,129,104 | +| Precompile Fixed Cost (0.2M, Bls12 G1Add) | 200,000 | 1,477,226 | 21,207 | 21.21 | 10,271,604 | 10,271,604 | 10,240,648 | +| Precompile Fixed Cost (0.2M, Bls12 G1Msm) | 200,000 | 1,477,226 | 6,064 | 6.06 | 9,934,988 | 9,928,156 | 9,930,268 | +| Precompile Fixed Cost (0.2M, Bls12 G2Add) | 200,000 | 1,477,226 | 22,226 | 22.23 | 2,613,300 | 2,589,876 | 2,575,236 | +| Precompile Fixed Cost (0.2M, Bls12 G2Msm) | 200,000 | 1,477,226 | 6,067 | 6.07 | 5,504,980 | 5,496,196 | 5,481,556 | +| Precompile Fixed Cost (0.2M, Bls12 Pairing Check) | 200,000 | 1,477,226 | 25,284 | 25.28 | 5,383,956 | 5,375,416 | 5,360,532 | +| Precompile Fixed Cost (0.2M, Bn128 Add) | 200,000 | 1,477,226 | 10,612 | 10.61 | 6,734,260 | 6,726,336 | 6,712,036 | +| Precompile Fixed Cost (0.2M, Bn128 Add 1 2) | 200,000 | 1,477,226 | 7,587 | 7.59 | 3,269,204 | 3,262,697.3 | 3,246,756 | +| Precompile Fixed Cost (0.2M, Bn128 Add Infinities) | 200,000 | 1,477,226 | 6,572 | 6.57 | 4,516,256 | 4,513,002.7 | 4,506,496 | +| Precompile Fixed Cost (0.2M, Bn128 Mul) | 200,000 | 1,477,226 | 13,665 | 13.66 | 11,634,624 | 11,624,864 | 11,611,200 | +| Precompile Fixed Cost (0.2M, Bn128 Mul 1 2 2 Scalar) | 200,000 | 1,477,226 | 6,583 | 6.58 | 7,653,936 | 7,650,835.2 | 7,641,764 | +| Precompile Fixed Cost (0.2M, Bn128 Mul 1 2 32 Byte Scalar) | 200,000 | 1,477,226 | 13,148 | 13.15 | 12,378,184 | 12,367,961.1 | 12,372,728 | +| Precompile Fixed Cost (0.2M, Bn128 Mul 32 Byte Coord And 2 Scalar) | 200,000 | 1,477,226 | 7,069 | 7.07 | 9,997,180 | 9,989,228 | 9,971,100 | +| Precompile Fixed Cost (0.2M, Bn128 Mul 32 Byte Coord And Scalar) | 200,000 | 1,477,226 | 13,108 | 13.11 | 11,796,968 | 11,785,320.4 | 11,765,496 | +| Precompile Fixed Cost (0.2M, Bn128 Mul Infinities 2 Scalar) | 200,000 | 1,477,226 | 7,076 | 7.08 | 9,798,616 | 9,790,344 | 9,785,176 | +| Precompile Fixed Cost (0.2M, Bn128 Mul Infinities 32 Byte Scalar) | 200,000 | 1,477,226 | 10,090 | 10.09 | 1,738,004 | 1,727,404 | 1,706,884 | +| Precompile Fixed Cost (0.2M, Bn128 One Pairing) | 200,000 | 1,477,226 | 11,101 | 11.10 | 11,594,444 | 11,591,693.6 | 11,579,804 | +| Precompile Fixed Cost (0.2M, Bn128 Two Pairings) | 200,000 | 1,477,226 | 10,605 | 10.61 | 7,358,480 | 7,358,480 | 7,337,984 | +| Precompile Fixed Cost (0.2M, Bn128 Two Pairings Empty) | 200,000 | 1,477,226 | 5,576 | 5.58 | 12,922,712 | 12,917,563.2 | 12,905,672 | +| Precompile Fixed Cost (0.2M, Ecrecover) | 200,000 | 1,477,226 | 8,082 | 8.08 | 5,274,036 | 5,267,918.7 | 5,243,780 | +| Precompile Fixed Cost (0.2M, Point Evaluation) | 200,000 | 1,477,226 | 64,174 | 64.17 | 12,564,288 | 12,564,288 | 12,528,960 | +| Precompile Only Data Input (0.2M, Identity) | 200,000 | 1,477,226 | 7,060 | 7.06 | 11,320,800 | 11,319,498.7 | 11,313,968 | +| Precompile Only Data Input (0.2M, Ripemd, 160) | 200,000 | 1,477,226 | 6,057 | 6.06 | 7,046,236 | 7,043,064 | 7,039,404 | +| Precompile Only Data Input (0.2M, Sha2, 256) | 200,000 | 1,477,226 | 8,588 | 8.59 | 5,204,124 | 5,193,279.6 | 5,186,556 | +| Push (0.2M, Push0) | 200,000 | 1,477,226 | 7,068 | 7.07 | 9,582,220 | 9,558,670.7 | 9,525,852 | +| Push (0.2M, Push10) | 200,000 | 1,477,226 | 7,058 | 7.06 | 8,300,912 | 8,297,333.3 | 8,291,152 | +| Push (0.2M, Push11) | 200,000 | 1,477,226 | 6,558 | 6.56 | 1,673,700 | 1,668,820 | 1,649,300 | +| Push (0.2M, Push12) | 200,000 | 1,477,226 | 7,060 | 7.06 | 6,588,256 | 6,588,256 | 6,584,388 | +| Push (0.2M, Push13) | 200,000 | 1,477,226 | 6,568 | 6.57 | 6,752,344 | 6,746,000 | 6,730,872 | +| Push (0.2M, Push14) | 200,000 | 1,477,226 | 7,078 | 7.08 | 10,050,248 | 10,045,368 | 10,038,536 | +| Push (0.2M, Push15) | 200,000 | 1,477,226 | 6,587 | 6.59 | 5,767,732 | 5,765,129.3 | 5,747,236 | +| Push (0.2M, Push16) | 200,000 | 1,477,226 | 7,087 | 7.09 | 12,638,612 | 12,632,093 | 12,636,660 | +| Push (0.2M, Push17) | 200,000 | 1,477,226 | 7,067 | 7.07 | 4,536,752 | 4,536,752 | 4,518,208 | +| Push (0.2M, Push18) | 200,000 | 1,477,226 | 7,068 | 7.07 | 10,605,588 | 10,596,398.7 | 10,584,020 | +| Push (0.2M, Push19) | 200,000 | 1,477,226 | 7,060 | 7.06 | 6,694,048 | 6,691,608 | 6,673,600 | +| Push (0.2M, Push1) | 200,000 | 1,477,226 | 6,558 | 6.56 | 1,797,540 | 1,788,560.8 | 1,773,140 | +| Push (0.2M, Push20) | 200,000 | 1,477,226 | 7,077 | 7.08 | 4,014,376 | 3,870,141 | 3,816,532 | +| Push (0.2M, Push21) | 200,000 | 1,477,226 | 7,072 | 7.07 | 8,874,936 | 8,856,717.3 | 8,837,848 | +| Push (0.2M, Push22) | 200,000 | 1,477,226 | 7,577 | 7.58 | 1,293,504 | 1,272,812.8 | 1,246,656 | +| Push (0.2M, Push23) | 200,000 | 1,477,226 | 7,561 | 7.56 | 13,145,148 | 13,137,802.4 | 13,116,844 | +| Push (0.2M, Push24) | 200,000 | 1,477,226 | 8,087 | 8.09 | 10,663,596 | 10,660,502 | 10,656,384 | +| Push (0.2M, Push25) | 200,000 | 1,477,226 | 7,067 | 7.07 | 6,517,876 | 6,516,109.3 | 6,516,900 | +| Push (0.2M, Push26) | 200,000 | 1,477,226 | 7,564 | 7.56 | 4,310,352 | 4,303,764 | 4,294,736 | +| Push (0.2M, Push27) | 200,000 | 1,477,226 | 7,067 | 7.07 | 6,207,424 | 6,197,989.3 | 6,179,120 | +| Push (0.2M, Push28) | 200,000 | 1,477,226 | 7,074 | 7.07 | 2,967,104 | 2,963,008.8 | 2,957,344 | +| Push (0.2M, Push29) | 200,000 | 1,477,226 | 7,074 | 7.07 | 10,141,468 | 10,135,341.6 | 10,128,860 | +| Push (0.2M, Push2) | 200,000 | 1,477,226 | 6,575 | 6.58 | 2,772,860 | 2,760,985.3 | 2,750,412 | +| Push (0.2M, Push30) | 200,000 | 1,477,226 | 7,561 | 7.56 | 6,635,832 | 6,632,050.3 | 6,626,072 | +| Push (0.2M, Push31) | 200,000 | 1,477,226 | 7,055 | 7.05 | 6,857,436 | 6,852,556 | 6,853,480 | +| Push (0.2M, Push32) | 200,000 | 1,477,226 | 8,061 | 8.06 | 13,073,088 | 13,061,418 | 13,038,856 | +| Push (0.2M, Push3) | 200,000 | 1,477,226 | 7,068 | 7.07 | 4,436,760 | 4,433,971.4 | 4,430,904 | +| Push (0.2M, Push4) | 200,000 | 1,477,226 | 6,585 | 6.58 | 3,350,212 | 3,345,820 | 3,332,644 | +| Push (0.2M, Push5) | 200,000 | 1,477,226 | 6,553 | 6.55 | 12,652,368 | 12,648,952 | 12,642,608 | +| Push (0.2M, Push6) | 200,000 | 1,477,226 | 7,082 | 7.08 | 2,638,000 | 2,638,000 | 2,622,384 | +| Push (0.2M, Push7) | 200,000 | 1,477,226 | 7,585 | 7.58 | 7,232,968 | 7,230,528 | 7,227,112 | +| Push (0.2M, Push8) | 200,000 | 1,477,226 | 7,066 | 7.07 | 2,805,960 | 2,805,960 | 2,790,344 | +| Push (0.2M, Push9) | 200,000 | 1,477,226 | 7,078 | 7.08 | 9,790,324 | 9,785,998.4 | 9,776,660 | +| Return Revert (0.2M, 1Kib Of Non, Zero Data, Return) | 200,000 | 1,477,226 | 7,082 | 7.08 | 8,192,852 | 8,189,812 | 8,185,300 | +| Return Revert (0.2M, 1Kib Of Non, Zero Data, Revert) | 200,000 | 1,477,226 | 7,069 | 7.07 | 9,403,700 | 9,392,720 | 9,361,732 | +| Return Revert (0.2M, 1Kib Of Zero Data, Return) | 200,000 | 1,477,226 | 6,552 | 6.55 | 1,631,632 | 1,631,632 | 1,627,728 | +| Return Revert (0.2M, 1Kib Of Zero Data, Revert) | 200,000 | 1,477,226 | 6,575 | 6.58 | 3,807,536 | 3,802,082.7 | 3,795,452 | +| Return Revert (0.2M, 1Mib Of Non, Zero Data, Return) | 200,000 | 1,477,226 | 6,055 | 6.05 | 1,559,408 | 1,550,136 | 1,534,032 | +| Return Revert (0.2M, 1Mib Of Non, Zero Data, Revert) | 200,000 | 1,477,226 | 5,574 | 5.57 | 8,291,152 | 8,290,153.3 | 8,282,300 | +| Return Revert (0.2M, 1Mib Of Zero Data, Return) | 200,000 | 1,477,226 | 6,076 | 6.08 | 11,227,772 | 11,221,720.8 | 11,206,300 | +| Return Revert (0.2M, 1Mib Of Zero Data, Revert) | 200,000 | 1,477,226 | 5,559 | 5.56 | 7,200,692 | 7,200,692 | 7,187,028 | +| Return Revert (0.2M, Empty, Return) | 200,000 | 1,477,226 | 7,578 | 7.58 | 4,868,108 | 4,863,785.7 | 4,860,300 | +| Return Revert (0.2M, Empty, Revert) | 200,000 | 1,477,226 | 8,083 | 8.08 | 12,220,980 | 12,212,928.8 | 12,204,308 | +| Returndatasize Nonzero (0.2M, Returned Size 0, Return Data Style Returndatastyle.Identity) | 200,000 | 1,477,226 | 7,078 | 7.08 | 5,308,588 | 5,300,536 | 5,285,164 | +| Returndatasize Nonzero (0.2M, Returned Size 0, Return Data Style Returndatastyle.Return) | 200,000 | 1,477,226 | 7,066 | 7.07 | 4,203,164 | 4,199,416 | 4,194,380 | +| Returndatasize Nonzero (0.2M, Returned Size 0, Return Data Style Returndatastyle.Revert) | 200,000 | 1,477,226 | 7,053 | 7.05 | 7,794,864 | 7,778,829.7 | 7,769,680 | +| Returndatasize Nonzero (0.2M, Returned Size 1, Return Data Style Returndatastyle.Identity) | 200,000 | 1,477,226 | 7,062 | 7.06 | 1,383,892 | 1,367,966.7 | 1,344,664 | +| Returndatasize Nonzero (0.2M, Returned Size 1, Return Data Style Returndatastyle.Return) | 200,000 | 1,477,226 | 7,077 | 7.08 | 4,958,268 | 4,950,948 | 4,940,700 | +| Returndatasize Nonzero (0.2M, Returned Size 1, Return Data Style Returndatastyle.Revert) | 200,000 | 1,477,226 | 7,062 | 7.06 | 5,986,320 | 5,985,356 | 5,986,320 | +| Returndatasize Zero (0.2M) | 200,000 | 1,477,226 | 7,064 | 7.06 | 3,809,292 | 3,804,900 | 3,795,628 | +| Shifts (0.2M, Shift Right Sar) | 200,000 | 1,477,226 | 6,555 | 6.55 | 5,708,036 | 5,705,758.7 | 5,701,204 | +| Shifts (0.2M, Shift Right Shr) | 200,000 | 1,477,226 | 7,575 | 7.58 | 9,908,424 | 9,891,442 | 9,871,532 | +| Swap (0.2M, Swap10) | 200,000 | 1,477,226 | 7,074 | 7.07 | 1,010,464 | 994,604 | 966,544 | +| Swap (0.2M, Swap11) | 200,000 | 1,477,226 | 7,099 | 7.10 | 11,340,084 | 11,333,614 | 11,323,728 | +| Swap (0.2M, Swap12) | 200,000 | 1,477,226 | 7,584 | 7.58 | 5,885,824 | 5,885,824 | 5,876,856 | +| Swap (0.2M, Swap13) | 200,000 | 1,477,226 | 7,067 | 7.07 | 2,574,260 | 2,574,260 | 2,556,696 | +| Swap (0.2M, Swap14) | 200,000 | 1,477,226 | 7,065 | 7.07 | 11,667,808 | 11,663,904 | 11,635,600 | +| Swap (0.2M, Swap15) | 200,000 | 1,477,226 | 7,076 | 7.08 | 12,576,416 | 12,571,621 | 12,556,896 | +| Swap (0.2M, Swap16) | 200,000 | 1,477,226 | 7,068 | 7.07 | 4,749,944 | 4,743,112 | 4,745,516 | +| Swap (0.2M, Swap1) | 200,000 | 1,477,226 | 7,080 | 7.08 | 5,942,144 | 5,941,004.7 | 5,937,264 | +| Swap (0.2M, Swap2) | 200,000 | 1,477,226 | 8,067 | 8.07 | 8,459,352 | 8,450,651.2 | 8,435,160 | +| Swap (0.2M, Swap3) | 200,000 | 1,477,226 | 7,576 | 7.58 | 12,296,400 | 12,283,272 | 12,270,364 | +| Swap (0.2M, Swap4) | 200,000 | 1,477,226 | 7,582 | 7.58 | 10,231,424 | 10,218,246.9 | 10,205,680 | +| Swap (0.2M, Swap5) | 200,000 | 1,477,226 | 7,567 | 7.57 | 9,935,060 | 9,923,286.4 | 9,909,400 | +| Swap (0.2M, Swap6) | 200,000 | 1,477,226 | 7,571 | 7.57 | 8,712,100 | 8,711,350 | 8,683,776 | +| Swap (0.2M, Swap7) | 200,000 | 1,477,226 | 7,586 | 7.59 | 4,939,724 | 4,929,934.5 | 4,916,872 | +| Swap (0.2M, Swap8) | 200,000 | 1,477,226 | 7,055 | 7.05 | 5,226,572 | 5,219,863.3 | 5,208,028 | +| Swap (0.2M, Swap9) | 200,000 | 1,477,226 | 7,562 | 7.56 | 8,183,628 | 8,180,262.3 | 8,180,564 | +| Tload (0.2M, Val Mut False, Key Mut False) | 200,000 | 1,477,226 | 6,060 | 6.06 | 3,044,052 | 3,041,904.8 | 3,038,196 | +| Tload (0.2M, Val Mut False, Key Mut True) | 200,000 | 1,477,226 | 6,051 | 6.05 | 11,436,656 | 11,428,518 | 11,414,524 | +| Tload (0.2M, Val Mut True, Key Mut False) | 200,000 | 1,477,226 | 5,549 | 5.55 | 3,197,240 | 3,197,240 | 3,180,648 | +| Tload (0.2M, Val Mut True, Key Mut True) | 200,000 | 1,477,226 | 6,051 | 6.05 | 2,973,784 | 2,966,756.8 | 2,951,336 | +| Tstore (0.2M, Dense Val Mut False, Key Mut False) | 200,000 | 1,477,226 | 7,068 | 7.07 | 8,397,736 | 8,397,736 | 8,375,288 | +| Tstore (0.2M, Dense Val Mut False, Key Mut True) | 200,000 | 1,477,226 | 6,071 | 6.07 | 7,492,400 | 7,492,400 | 7,459,632 | +| Tstore (0.2M, Dense Val Mut True, Key Mut False) | 200,000 | 1,477,226 | 6,556 | 6.56 | 5,345,892 | 5,345,892 | 5,335,156 | +| Tstore (0.2M, Dense Val Mut True, Key Mut True) | 200,000 | 1,477,226 | 6,574 | 6.57 | 6,673,600 | 6,660,845 | 6,636,748 | +| Unop (0.2M, Iszero) | 200,000 | 1,477,226 | 7,575 | 7.58 | 5,275,204 | 5,274,949 | 5,271,300 | +| Unop (0.2M, Not) | 200,000 | 1,477,226 | 7,077 | 7.08 | 8,608,316 | 8,603,924 | 8,596,604 | +| Zero Param (0.2M, Address) | 200,000 | 1,477,226 | 8,087 | 8.09 | 4,132,160 | 4,129,882.7 | 4,110,688 | +| Zero Param (0.2M, Basefee) | 200,000 | 1,477,226 | 6,585 | 6.58 | 4,565,056 | 4,558,224 | 4,545,536 | +| Zero Param (0.2M, Blobbasefee) | 200,000 | 1,477,226 | 7,570 | 7.57 | 10,592,952 | 10,584,000 | 10,564,824 | +| Zero Param (0.2M, Caller) | 200,000 | 1,477,226 | 7,078 | 7.08 | 4,283,024 | 4,276,680 | 4,267,408 | +| Zero Param (0.2M, Chainid) | 200,000 | 1,477,226 | 7,089 | 7.09 | 9,059,788 | 9,047,188 | 9,030,728 | +| Zero Param (0.2M, Codesize) | 200,000 | 1,477,226 | 7,063 | 7.06 | 11,545,212 | 11,536,352 | 11,521,560 | +| Zero Param (0.2M, Coinbase) | 200,000 | 1,477,226 | 7,581 | 7.58 | 8,589,180 | 8,578,834.4 | 8,557,948 | +| Zero Param (0.2M, Gaslimit) | 200,000 | 1,477,226 | 7,067 | 7.07 | 2,293,072 | 2,289,656 | 2,281,360 | +| Zero Param (0.2M, Gasprice) | 200,000 | 1,477,226 | 7,562 | 7.56 | 7,055,964 | 7,053,288 | 7,047,212 | +| Zero Param (0.2M, Gas) | 200,000 | 1,477,226 | 7,069 | 7.07 | 2,174,976 | 2,171,629.7 | 2,160,336 | +| Zero Param (0.2M, Number) | 200,000 | 1,477,226 | 7,078 | 7.08 | 7,303,304 | 7,303,304 | 7,298,424 | +| Zero Param (0.2M, Origin) | 200,000 | 1,477,226 | 7,087 | 7.09 | 3,038,200 | 3,024,292 | 3,016,728 | +| Zero Param (0.2M, Prevrandao) | 200,000 | 1,477,226 | 8,074 | 8.07 | 12,210,768 | 12,203,976 | 12,168,920 | +| Zero Param (0.2M, Timestamp) | 200,000 | 1,477,226 | 7,578 | 7.58 | 7,076,460 | 7,075,317.3 | 7,057,916 | +| Calldatacopy (0.2M, Zero Data, Dynamic Src Dst, 0Bytes, Call) | 200,000 | 1,477,226 | 7,072 | 7.07 | 4,060,116 | 4,057,898.7 | 4,029,860 | +| Calldatacopy (0.2M, Zero Data, Dynamic Src Dst, 0Bytes, Transaction) | 200,000 | 1,477,226 | 7,062 | 7.06 | 11,988,728 | 11,987,354.7 | 11,975,192 | +| Calldatacopy (0.2M, Zero Data, Dynamic Src Dst, 100Bytes, Call) | 200,000 | 1,477,226 | 7,563 | 7.56 | 8,622,124 | 8,619,056.6 | 8,608,460 | +| Calldatacopy (0.2M, Zero Data, Dynamic Src Dst, 100Bytes, Transaction) | 200,000 | 1,477,226 | 7,083 | 7.08 | 3,287,748 | 3,286,772 | 3,281,892 | +| Calldatacopy (0.2M, Zero Data, Dynamic Src Dst, 10Kib, Call) | 200,000 | 1,477,226 | 6,566 | 6.57 | 5,429,828 | 5,417,628 | 5,403,476 | +| Calldatacopy (0.2M, Zero Data, Dynamic Src Dst, 10Kib, Transaction) | 200,000 | 1,477,226 | 6,588 | 6.59 | 11,756,316 | 11,750,948 | 11,743,628 | +| Calldatacopy (0.2M, Zero Data, Dynamic Src Dst, 1Mib, Call) | 200,000 | 1,477,226 | 5,562 | 5.56 | 12,933,932 | 12,933,932 | 12,924,172 | +| Calldatacopy (0.2M, Zero Data, Dynamic Src Dst, 1Mib, Transaction) | 200,000 | 1,477,226 | 5,558 | 5.56 | 13,050,160 | 13,044,504 | 13,027,892 | +| Calldatacopy (0.2M, Zero Data, Fixed Src Dst, 0Bytes, Call) | 200,000 | 1,477,226 | 6,563 | 6.56 | 5,686,476 | 5,681,652 | 5,686,476 | +| Calldatacopy (0.2M, Zero Data, Fixed Src Dst, 0Bytes, Transaction) | 200,000 | 1,477,226 | 6,590 | 6.59 | 1,340,760 | 1,328,560 | 1,319,096 | +| Calldatacopy (0.2M, Zero Data, Fixed Src Dst, 100Bytes, Call) | 200,000 | 1,477,226 | 6,068 | 6.07 | 1,244,704 | 1,231,202.7 | 1,209,568 | +| Calldatacopy (0.2M, Zero Data, Fixed Src Dst, 100Bytes, Transaction) | 200,000 | 1,477,226 | 6,070 | 6.07 | 1,313,244 | 1,310,602 | 1,300,336 | +| Calldatacopy (0.2M, Zero Data, Fixed Src Dst, 10Kib, Call) | 200,000 | 1,477,226 | 6,561 | 6.56 | 8,185,552 | 8,185,552 | 7,842,688 | +| Calldatacopy (0.2M, Zero Data, Fixed Src Dst, 10Kib, Transaction) | 200,000 | 1,477,226 | 6,050 | 6.05 | 10,787,276 | 10,787,276 | 10,777,640 | +| Calldatacopy (0.2M, Zero Data, Fixed Src Dst, 1Mib, Call) | 200,000 | 1,477,226 | 6,080 | 6.08 | 3,736,608 | 3,734,493.3 | 3,729,776 | +| Calldatacopy (0.2M, Zero Data, Fixed Src Dst, 1Mib, Transaction) | 200,000 | 1,477,226 | 6,059 | 6.06 | 4,474,820 | 4,472,380 | 4,468,964 | +| Calldatacopy (0.2M, Non Zero, Dynamic Src Dst, 100Bytes, Call) | 200,000 | 1,477,226 | 7,060 | 7.06 | 2,280,384 | 2,274,853.3 | 2,264,768 | +| Calldatacopy (0.2M, Non Zero, Dynamic Src Dst, 100Bytes, Transaction) | 200,000 | 1,477,226 | 7,073 | 7.07 | 9,845,116 | 9,832,306 | 9,822,668 | +| Calldatacopy (0.2M, Non Zero, Fixed Src Dst, 100Bytes, Call) | 200,000 | 1,477,226 | 6,567 | 6.57 | 2,399,456 | 2,395,308 | 2,391,648 | +| Calldatacopy (0.2M, Non Zero, Fixed Src Dst, 100Bytes, Transaction) | 200,000 | 1,477,226 | 6,567 | 6.57 | 5,475,700 | 5,458,829.1 | 5,438,612 | +| Codecopy (0.2M, Dynamic Src Dst, 0Bytes) | 200,000 | 1,477,226 | 7,077 | 7.08 | 4,897,384 | 4,892,897.6 | 4,880,796 | +| Codecopy (0.2M, Dynamic Src Dst, 0.25X Max Code) | 200,000 | 1,477,226 | 6,556 | 6.56 | 13,017,156 | 13,004,175 | 12,989,112 | +| Codecopy (0.2M, Dynamic Src Dst, 0.50X Max Code Size) | 200,000 | 1,477,226 | 6,571 | 6.57 | 10,158,052 | 10,154,148 | 10,147,476 | +| Codecopy (0.2M, Dynamic Src Dst, 0.75X Max Code Size) | 200,000 | 1,477,226 | 6,067 | 6.07 | 5,694,712 | 5,689,393.3 | 5,683,000 | +| Codecopy (0.2M, Dynamic Src Dst, Max Code) | 200,000 | 1,477,226 | 6,045 | 6.04 | 1,536,148 | 1,527,567 | 1,511,748 | +| Codecopy (0.2M, Fixed Src Dst, 0Bytes) | 200,000 | 1,477,226 | 7,061 | 7.06 | 12,167,944 | 12,153,458.7 | 12,138,152 | +| Codecopy (0.2M, Fixed Src Dst, 0.25X Max Code) | 200,000 | 1,477,226 | 6,582 | 6.58 | 7,442,796 | 7,437,135.2 | 7,426,204 | +| Codecopy (0.2M, Fixed Src Dst, 0.50X Max Code Size) | 200,000 | 1,477,226 | 6,562 | 6.56 | 6,289,832 | 6,279,096 | 6,263,480 | +| Codecopy (0.2M, Fixed Src Dst, 0.75X Max Code Size) | 200,000 | 1,477,226 | 6,567 | 6.57 | 7,534,368 | 7,522,934.9 | 7,492,400 | +| Codecopy (0.2M, Fixed Src Dst, Max Code) | 200,000 | 1,477,226 | 6,064 | 6.06 | 805,756 | 795,630.2 | 783,920 | +| Mcopy (0.2M, Dynamic Src Dst, 0Bytes) | 200,000 | 1,477,226 | 7,047 | 7.05 | 11,313,968 | 11,313,968 | 11,266,420 | +| Mcopy (0.2M, Dynamic Src Dst, 100Bytes) | 200,000 | 1,477,226 | 7,069 | 7.07 | 5,877,524 | 5,872,783.4 | 5,859,956 | +| Mcopy (0.2M, Dynamic Src Dst, 10Kib) | 200,000 | 1,477,226 | 7,078 | 7.08 | 3,008,920 | 2,999,160 | 2,992,328 | +| Mcopy (0.2M, Dynamic Src Dst, 1Mib) | 200,000 | 1,477,226 | 5,579 | 5.58 | 10,246,904 | 10,243,694.7 | 10,233,372 | +| Mcopy (0.2M, Fixed Src Dst, 0Bytes) | 200,000 | 1,477,226 | 6,564 | 6.56 | 12,098,240 | 12,080,095.3 | 12,067,656 | +| Mcopy (0.2M, Fixed Src Dst, 100Bytes) | 200,000 | 1,477,226 | 6,555 | 6.55 | 11,151,788 | 11,147,815 | 11,151,732 | +| Mcopy (0.2M, Fixed Src Dst, 10Kib) | 200,000 | 1,477,226 | 6,568 | 6.57 | 6,423,236 | 6,416,020 | 6,401,796 | +| Mcopy (0.2M, Fixed Src Dst, 1Mib) | 200,000 | 1,477,226 | 5,578 | 5.58 | 7,080,840 | 7,079,864 | 7,073,032 | +| Returndatacopy (0.2M, Fixed Dst False, 0Bytes) | 200,000 | 1,477,226 | 7,063 | 7.06 | 3,313,124 | 3,306,487.2 | 3,289,700 | +| Returndatacopy (0.2M, Fixed Dst False, 100Bytes) | 200,000 | 1,477,226 | 7,067 | 7.07 | 11,560,996 | 11,560,996 | 11,547,164 | +| Returndatacopy (0.2M, Fixed Dst False, 10Kib) | 200,000 | 1,477,226 | 6,564 | 6.56 | 940,192 | 933,360 | 918,720 | +| Returndatacopy (0.2M, Fixed Dst False, 1Mib) | 200,000 | 1,477,226 | 5,560 | 5.56 | 7,675,144 | 7,671,240 | 7,653,672 | +| Returndatacopy (0.2M, Fixed Dst True, 0Bytes) | 200,000 | 1,477,226 | 7,068 | 7.07 | 12,706,040 | 12,697,256 | 12,686,520 | +| Returndatacopy (0.2M, Fixed Dst True, 100Bytes) | 200,000 | 1,477,226 | 7,070 | 7.07 | 1,501,988 | 1,490,666.4 | 1,471,732 | +| Returndatacopy (0.2M, Fixed Dst True, 10Kib) | 200,000 | 1,477,226 | 6,050 | 6.05 | 7,838,784 | 7,830,195.2 | 7,817,312 | +| Returndatacopy (0.2M, Fixed Dst True, 1Mib) | 200,000 | 1,477,226 | 6,056 | 6.06 | 7,563,764 | 7,543,536 | 7,563,764 | +| Log Opcodes (0.2M, Dynamic, Non Zero Topic, 0 Bytes Data, Log0) | 200,000 | 1,477,226 | 6,064 | 6.06 | 2,126,176 | 2,123,573.3 | 2,112,512 | +| Log Opcodes (0.2M, Dynamic, Non Zero Topic, 0 Bytes Data, Log1) | 200,000 | 1,477,226 | 6,057 | 6.06 | 2,782,620 | 2,778,911.2 | 2,772,860 | +| Log Opcodes (0.2M, Dynamic, Non Zero Topic, 0 Bytes Data, Log2) | 200,000 | 1,477,226 | 6,058 | 6.06 | 10,661,860 | 10,657,468 | 10,652,100 | +| Log Opcodes (0.2M, Dynamic, Non Zero Topic, 0 Bytes Data, Log3) | 200,000 | 1,477,226 | 6,054 | 6.05 | 4,593,360 | 4,582,298.7 | 4,570,912 | +| Log Opcodes (0.2M, Dynamic, Non Zero Topic, 0 Bytes Data, Log4) | 200,000 | 1,477,226 | 6,046 | 6.05 | 7,645,748 | 7,639,202.4 | 7,618,572 | +| Log Opcodes (0.2M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log0) | 200,000 | 1,477,226 | 6,065 | 6.07 | 2,540,104 | 2,536,395.2 | 2,530,344 | +| Log Opcodes (0.2M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log1) | 200,000 | 1,477,226 | 5,564 | 5.56 | 5,824,484 | 5,816,676 | 5,808,868 | +| Log Opcodes (0.2M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log2) | 200,000 | 1,477,226 | 6,594 | 6.59 | 10,035,608 | 10,028,938.7 | 10,023,724 | +| Log Opcodes (0.2M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log3) | 200,000 | 1,477,226 | 6,052 | 6.05 | 2,668,428 | 2,662,962.4 | 2,653,788 | +| Log Opcodes (0.2M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log4) | 200,000 | 1,477,226 | 6,556 | 6.56 | 11,875,072 | 11,875,072 | 11,871,348 | +| Log Opcodes (0.2M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log0) | 200,000 | 1,477,226 | 6,069 | 6.07 | 9,822,668 | 9,819,028.8 | 9,799,592 | +| Log Opcodes (0.2M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log1) | 200,000 | 1,477,226 | 6,075 | 6.08 | 8,683,776 | 8,675,480 | 8,660,352 | +| Log Opcodes (0.2M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log2) | 200,000 | 1,477,226 | 6,050 | 6.05 | 5,523,524 | 5,518,644 | 5,506,932 | +| Log Opcodes (0.2M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log3) | 200,000 | 1,477,226 | 6,049 | 6.05 | 6,869,148 | 6,865,550 | 6,858,412 | +| Log Opcodes (0.2M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log4) | 200,000 | 1,477,226 | 5,555 | 5.55 | 4,401,916 | 4,400,826.7 | 4,398,988 | +| Log Opcodes (0.2M, Dynamic, Zero Topic, 0 Bytes Data, Log0) | 200,000 | 1,477,226 | 6,041 | 6.04 | 8,435,160 | 8,430,084.8 | 8,420,520 | +| Log Opcodes (0.2M, Dynamic, Zero Topic, 0 Bytes Data, Log1) | 200,000 | 1,477,226 | 6,075 | 6.08 | 11,971,316 | 11,965,460 | 11,956,676 | +| Log Opcodes (0.2M, Dynamic, Zero Topic, 0 Bytes Data, Log2) | 200,000 | 1,477,226 | 6,064 | 6.06 | 3,328,740 | 3,320,736.8 | 3,315,076 | +| Log Opcodes (0.2M, Dynamic, Zero Topic, 0 Bytes Data, Log3) | 200,000 | 1,477,226 | 6,067 | 6.07 | 3,455,764 | 3,451,860 | 3,442,100 | +| Log Opcodes (0.2M, Dynamic, Zero Topic, 0 Bytes Data, Log4) | 200,000 | 1,477,226 | 6,055 | 6.05 | 9,655,100 | 9,632,489.3 | 9,616,060 | +| Log Opcodes (0.2M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log0) | 200,000 | 1,477,226 | 5,568 | 5.57 | 9,046,112 | 9,037,365.3 | 9,023,724 | +| Log Opcodes (0.2M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log1) | 200,000 | 1,477,226 | 6,059 | 6.06 | 11,664,880 | 11,664,840 | 11,661,860 | +| Log Opcodes (0.2M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log2) | 200,000 | 1,477,226 | 6,076 | 6.08 | 10,800,948 | 10,800,948 | 10,783,064 | +| Log Opcodes (0.2M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log3) | 200,000 | 1,477,226 | 6,581 | 6.58 | 8,911,520 | 8,911,520 | 8,910,544 | +| Log Opcodes (0.2M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log4) | 200,000 | 1,477,226 | 5,562 | 5.56 | 2,443,932 | 2,435,148 | 2,425,388 | +| Log Opcodes (0.2M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log0) | 200,000 | 1,477,226 | 6,084 | 6.08 | 12,901,176 | 12,901,133.3 | 12,901,176 | +| Log Opcodes (0.2M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log1) | 200,000 | 1,477,226 | 6,571 | 6.57 | 4,880,796 | 4,872,988 | 4,868,108 | +| Log Opcodes (0.2M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log2) | 200,000 | 1,477,226 | 6,061 | 6.06 | 4,991,012 | 4,986,620 | 4,977,348 | +| Log Opcodes (0.2M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log3) | 200,000 | 1,477,226 | 6,075 | 6.08 | 6,228,472 | 6,222,089.6 | 6,208,400 | +| Log Opcodes (0.2M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log4) | 200,000 | 1,477,226 | 6,058 | 6.06 | 9,243,748 | 9,241,145.3 | 9,229,108 | +| Log Opcodes (0.2M, Fixed, Non Zero Topic, 0 Bytes Data, Log0) | 200,000 | 1,477,226 | 6,088 | 6.09 | 10,287,012 | 10,280,307.2 | 10,268,468 | +| Log Opcodes (0.2M, Fixed, Non Zero Topic, 0 Bytes Data, Log1) | 200,000 | 1,477,226 | 6,032 | 6.03 | 11,901,828 | 11,900,249.3 | 11,878,976 | +| Log Opcodes (0.2M, Fixed, Non Zero Topic, 0 Bytes Data, Log2) | 200,000 | 1,477,226 | 6,062 | 6.06 | 8,806,632 | 8,806,632 | 8,768,280 | +| Log Opcodes (0.2M, Fixed, Non Zero Topic, 0 Bytes Data, Log3) | 200,000 | 1,477,226 | 6,058 | 6.06 | 3,595,332 | 3,585,897.3 | 3,582,644 | +| Log Opcodes (0.2M, Fixed, Non Zero Topic, 0 Bytes Data, Log4) | 200,000 | 1,477,226 | 6,059 | 6.06 | 13,083,268 | 13,073,508 | 13,057,892 | +| Log Opcodes (0.2M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log0) | 200,000 | 1,477,226 | 6,048 | 6.05 | 7,400,752 | 7,396,360 | 7,383,508 | +| Log Opcodes (0.2M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log1) | 200,000 | 1,477,226 | 6,061 | 6.06 | 9,308,540 | 9,303,660 | 9,289,996 | +| Log Opcodes (0.2M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log2) | 200,000 | 1,477,226 | 6,066 | 6.07 | 2,688,924 | 2,682,946 | 2,669,404 | +| Log Opcodes (0.2M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log3) | 200,000 | 1,477,226 | 6,068 | 6.07 | 7,606,860 | 7,604,420 | 7,601,004 | +| Log Opcodes (0.2M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log4) | 200,000 | 1,477,226 | 5,570 | 5.57 | 9,858,780 | 9,855,702.7 | 9,846,092 | +| Log Opcodes (0.2M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log0) | 200,000 | 1,477,226 | 6,560 | 6.56 | 5,400,548 | 5,392,008 | 5,385,908 | +| Log Opcodes (0.2M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log1) | 200,000 | 1,477,226 | 5,556 | 5.56 | 6,775,352 | 6,775,352 | 6,769,968 | +| Log Opcodes (0.2M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log2) | 200,000 | 1,477,226 | 6,054 | 6.05 | 3,613,876 | 3,609,191.2 | 3,600,212 | +| Log Opcodes (0.2M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log3) | 200,000 | 1,477,226 | 6,050 | 6.05 | 7,265,428 | 7,263,886 | 7,251,608 | +| Log Opcodes (0.2M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log4) | 200,000 | 1,477,226 | 5,544 | 5.54 | 266,860 | 196,785.8 | 100,156 | +| Log Opcodes (0.2M, Fixed, Zero Topic, 0 Bytes Data, Log0) | 200,000 | 1,477,226 | 6,569 | 6.57 | 4,868,184 | 4,862,218 | 4,854,520 | +| Log Opcodes (0.2M, Fixed, Zero Topic, 0 Bytes Data, Log1) | 200,000 | 1,477,226 | 6,060 | 6.06 | 10,070,460 | 10,070,460 | 10,068,508 | +| Log Opcodes (0.2M, Fixed, Zero Topic, 0 Bytes Data, Log2) | 200,000 | 1,477,226 | 6,571 | 6.57 | 7,457,680 | 7,454,426.7 | 7,444,016 | +| Log Opcodes (0.2M, Fixed, Zero Topic, 0 Bytes Data, Log3) | 200,000 | 1,477,226 | 6,567 | 6.57 | 3,544,580 | 3,539,114.4 | 3,527,988 | +| Log Opcodes (0.2M, Fixed, Zero Topic, 0 Bytes Data, Log4) | 200,000 | 1,477,226 | 6,571 | 6.57 | 6,598,396 | 6,592,462 | 6,588,256 | +| Log Opcodes (0.2M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log0) | 200,000 | 1,477,226 | 5,556 | 5.56 | 783,920 | 776,356 | 763,424 | +| Log Opcodes (0.2M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log1) | 200,000 | 1,477,226 | 6,553 | 6.55 | 12,863,232 | 12,851,273.6 | 12,828,676 | +| Log Opcodes (0.2M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log2) | 200,000 | 1,477,226 | 5,565 | 5.57 | 4,510,928 | 4,503,315.2 | 4,489,456 | +| Log Opcodes (0.2M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log3) | 200,000 | 1,477,226 | 6,050 | 6.05 | 5,721,700 | 5,721,700 | 5,711,940 | +| Log Opcodes (0.2M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log4) | 200,000 | 1,477,226 | 6,072 | 6.07 | 8,509,828 | 8,505,192 | 8,499,092 | +| Log Opcodes (0.2M, Fixed, Zero Topic, 1 Mib Zeros Data, Log0) | 200,000 | 1,477,226 | 6,043 | 6.04 | 4,194,348 | 4,192,760 | 4,188,492 | +| Log Opcodes (0.2M, Fixed, Zero Topic, 1 Mib Zeros Data, Log1) | 200,000 | 1,477,226 | 6,052 | 6.05 | 2,529,368 | 2,520,388.8 | 2,509,848 | +| Log Opcodes (0.2M, Fixed, Zero Topic, 1 Mib Zeros Data, Log2) | 200,000 | 1,477,226 | 6,058 | 6.06 | 3,809,488 | 3,799,524 | 3,809,488 | +| Log Opcodes (0.2M, Fixed, Zero Topic, 1 Mib Zeros Data, Log3) | 200,000 | 1,477,226 | 6,054 | 6.05 | 11,821,112 | 11,812,132.8 | 11,796,712 | +| Log Opcodes (0.2M, Fixed, Zero Topic, 1 Mib Zeros Data, Log4) | 200,000 | 1,477,226 | 6,059 | 6.06 | 11,499,580 | 11,499,580 | 11,498,120 | +| Address State Cold (0.2M, Absent Accounts False, Balance) | 200,000 | 1,477,226 | 6,563 | 6.56 | 11,069,532 | 11,068,350 | 11,063,264 | +| Address State Cold (0.2M, Absent Accounts True, Balance) | 200,000 | 1,477,226 | 6,054 | 6.05 | 3,440,148 | 3,435,268 | 3,432,196 | +| Address State Warm (0.2M, Present Target, Balance) | 200,000 | 1,477,226 | 6,052 | 6.05 | 8,279,296 | 8,268,560 | 8,255,872 | +| Address State Warm (0.2M, Present Target, Callcode) | 200,000 | 1,477,226 | 7,074 | 7.07 | 5,064,116 | 5,064,116 | 5,057,284 | +| Address State Warm (0.2M, Present Target, Call) | 200,000 | 1,477,226 | 6,587 | 6.59 | 10,318,500 | 10,318,500 | 10,299,764 | +| Address State Warm (0.2M, Present Target, Delegatecall) | 200,000 | 1,477,226 | 7,050 | 7.05 | 6,433,188 | 6,432,604 | 6,428,116 | +| Address State Warm (0.2M, Present Target, Extcodehash) | 200,000 | 1,477,226 | 6,073 | 6.07 | 4,109,712 | 4,108,492 | 4,098,976 | +| Address State Warm (0.2M, Present Target, Extcodesize) | 200,000 | 1,477,226 | 6,554 | 6.55 | 5,248,976 | 5,248,976 | 5,240,192 | +| Address State Warm (0.2M, Present Target, Staticcall) | 200,000 | 1,477,226 | 7,578 | 7.58 | 4,853,544 | 4,851,348 | 4,840,856 | +| Address State Warm (0.2M, Absent Target, Balance) | 200,000 | 1,477,226 | 6,584 | 6.58 | 1,203,712 | 1,193,394.3 | 1,177,360 | +| Address State Warm (0.2M, Absent Target, Callcode) | 200,000 | 1,477,226 | 7,570 | 7.57 | 11,804,164 | 11,804,164 | 11,782,872 | +| Address State Warm (0.2M, Absent Target, Call) | 200,000 | 1,477,226 | 7,066 | 7.07 | 5,055,428 | 5,049,409.3 | 5,020,292 | +| Address State Warm (0.2M, Absent Target, Delegatecall) | 200,000 | 1,477,226 | 7,064 | 7.06 | 6,000,108 | 5,999,620 | 5,986,860 | +| Address State Warm (0.2M, Absent Target, Extcodehash) | 200,000 | 1,477,226 | 7,061 | 7.06 | 5,291,752 | 5,283,618.7 | 5,274,184 | +| Address State Warm (0.2M, Absent Target, Extcodesize) | 200,000 | 1,477,226 | 7,114 | 7.11 | 12,666,032 | 12,662,492 | 12,646,264 | +| Address State Warm (0.2M, Absent Target, Staticcall) | 200,000 | 1,477,226 | 7,072 | 7.07 | 7,610,752 | 7,608,897.3 | 7,605,336 | +| Blockhash (0.2M) | 200,000 | 1,477,226 | 7,579 | 7.58 | 1,103,184 | 1,089,886 | 1,072,928 | +| Extcodecopy Warm (0.2M, 1Kib) | 200,000 | 1,477,226 | 6,606 | 6.61 | 962,640 | 958,370 | 944,096 | +| Extcodecopy Warm (0.2M, 512) | 200,000 | 1,477,226 | 6,062 | 6.06 | 1,999,300 | 1,999,300 | 1,942,964 | +| Extcodecopy Warm (0.2M, 5Kib) | 200,000 | 1,477,226 | 6,556 | 6.56 | 6,022,124 | 6,022,124 | 6,002,060 | +| Selfbalance (0.2M) | 200,000 | 1,477,226 | 11,094 | 11.09 | 2,619,456 | 2,613,878.9 | 2,608,720 | +| Selfdestruct Created (0.2M, No Value) | 176,372 | 1,477,226 | 6,554 | 6.55 | 6,625,724 | 6,614,111.4 | 6,599,372 | +| Selfdestruct Created (0.2M, With Value) | 176,372 | 1,477,226 | 6,069 | 6.07 | 614,316 | 609,811.4 | 599,676 | +| Selfdestruct Existing (0.2M, No Value) | 195,891 | 1,477,226 | 6,057 | 6.06 | 10,297,404 | 10,294,760 | 10,280,812 | +| Selfdestruct Existing (0.2M, With Value) | 195,891 | 1,477,226 | 6,076 | 6.08 | 5,988,012 | 5,977,601.3 | 5,956,780 | +| Selfdestruct Initcode (0.2M, No Value) | 174,196 | 1,477,226 | 5,547 | 5.55 | 8,980,148 | 8,980,148 | 8,974,460 | +| Selfdestruct Initcode (0.2M, With Value) | 174,196 | 1,477,226 | 6,076 | 6.08 | 2,984,520 | 2,984,520 | 2,975,736 | +| Storage Access Cold (0.2M, Absent Slots False, Ssload) | 198,374 | 1,477,226 | 6,056 | 6.06 | 6,318,184 | 6,318,184 | 6,316,184 | +| Storage Access Cold (0.2M, Absent Slots False, Sstore New Value, Out Of Gas) | 200,000 | 1,477,226 | 6,094 | 6.09 | 9,604,920 | 9,598,250.7 | 9,593,560 | +| Storage Access Cold (0.2M, Absent Slots False, Sstore New Value, Revert) | 197,444 | 1,477,226 | 6,569 | 6.57 | 7,009,960 | 7,009,960 | 6,987,512 | +| Storage Access Cold (0.2M, Absent Slots False, Sstore New Value) | 197,438 | 1,477,226 | 6,050 | 6.05 | 7,753,776 | 7,741,088 | 7,720,724 | +| Storage Access Cold (0.2M, Absent Slots False, Sstore Same Value, Out Of Gas) | 200,000 | 1,477,226 | 7,066 | 7.07 | 7,340,316 | 7,335,637.1 | 7,329,580 | +| Storage Access Cold (0.2M, Absent Slots False, Sstore Same Value, Revert) | 197,811 | 1,477,226 | 6,066 | 6.07 | 5,808,868 | 5,804,964 | 5,783,492 | +| Storage Access Cold (0.2M, Absent Slots False, Sstore Same Value) | 197,805 | 1,477,226 | 6,562 | 6.56 | 12,528,088 | 12,511,072 | 12,522,232 | +| Storage Access Cold (0.2M, Absent Slots True, Ssload) | 198,374 | 1,477,226 | 6,062 | 6.06 | 7,219,304 | 7,211,886.4 | 7,200,760 | +| Storage Access Cold (0.2M, Absent Slots True, Sstore New Value, Out Of Gas) | 200,000 | 1,477,226 | 6,045 | 6.04 | 7,769,392 | 7,763,852 | 7,753,776 | +| Storage Access Cold (0.2M, Absent Slots True, Sstore New Value, Revert) | 198,137 | 1,477,226 | 5,545 | 5.54 | 2,820,136 | 2,812,523.2 | 2,801,592 | +| Storage Access Cold (0.2M, Absent Slots True, Sstore New Value) | 198,131 | 1,477,226 | 5,550 | 5.55 | 7,700,800 | 7,697,109 | 7,688,396 | +| Storage Access Cold (0.2M, Absent Slots True, Sstore Same Value, Out Of Gas) | 200,000 | 1,477,226 | 6,047 | 6.05 | 5,952,876 | 5,951,249.3 | 5,946,044 | +| Storage Access Cold (0.2M, Absent Slots True, Sstore Same Value, Revert) | 198,113 | 1,477,226 | 6,058 | 6.06 | 12,896,268 | 12,896,268 | 12,866,916 | +| Storage Access Cold (0.2M, Absent Slots True, Sstore Same Value) | 198,107 | 1,477,226 | 6,558 | 6.56 | 8,208,184 | 8,194,845.3 | 8,180,856 | +| Storage Access Warm (0.2M, Sload) | 200,000 | 1,477,226 | 6,561 | 6.56 | 9,514,692 | 9,510,470 | 9,511,964 | +| Storage Access Warm (0.2M, Sstore New Value) | 200,000 | 1,477,226 | 7,069 | 7.07 | 12,629,828 | 12,629,096 | 12,625,924 | +| Storage Access Warm (0.2M, Sstore Same Value) | 200,000 | 1,477,226 | 6,555 | 6.55 | 5,740,552 | 5,736,695.2 | 5,740,552 | + +## Summary Statistics + +- **Total Tests:** 504 +- **Successful Tests:** 504 +- **Failed Tests:** 0 + +### Proving Time (ms) +- **Average:** 10,773.1 +- **Minimum:** 4,545 +- **Maximum:** 82,344 + +### Peak Memory Usage (MB) +- **Average:** 6,920,288.9 +- **Minimum:** 266,860 +- **Maximum:** 13,162,176 + +### Proof Size (bytes) +- **Average:** 1,477,226 +- **Minimum:** 1,477,226 +- **Maximum:** 1,477,226 diff --git a/www/docs/pages/benchmark-results/gas-categorized/0.4m/0.4M-4.md b/www/docs/pages/benchmark-results/gas-categorized/0.4m/0.4M-4.md new file mode 100644 index 00000000..82bb80ec --- /dev/null +++ b/www/docs/pages/benchmark-results/gas-categorized/0.4m/0.4M-4.md @@ -0,0 +1,511 @@ +# zkVM Proving Time (in secs) Comparison + +**Gas Category:** 0.4M + +**Number of GPUs:** 4 + + +| Benchmark | risc0 | sp1 | +|---|---|---| +| Address State Cold (0.4M, Absent Accounts False, Balance) | 7.69 | 6.56 | +| Address State Cold (0.4M, Absent Accounts True, Balance) | 7.17 | 6.06 | +| Address State Warm (0.4M, Absent Target, Balance) | 9.82 | 7.08 | +| Address State Warm (0.4M, Absent Target, Call) | 14.67 | 8.59 | +| Address State Warm (0.4M, Absent Target, Callcode) | 13.91 | 8.61 | +| Address State Warm (0.4M, Absent Target, Delegatecall) | 13.27 | 8.08 | +| Address State Warm (0.4M, Absent Target, Extcodehash) | 10.33 | 7.58 | +| Address State Warm (0.4M, Absent Target, Extcodesize) | 10.45 | 6.58 | +| Address State Warm (0.4M, Absent Target, Staticcall) | 13.79 | 8.60 | +| Address State Warm (0.4M, Present Target, Balance) | 7.74 | 7.08 | +| Address State Warm (0.4M, Present Target, Call) | 16.54 | 9.61 | +| Address State Warm (0.4M, Present Target, Callcode) | 15.37 | 9.61 | +| Address State Warm (0.4M, Present Target, Delegatecall) | 14.64 | 8.58 | +| Address State Warm (0.4M, Present Target, Extcodehash) | 8.70 | 7.08 | +| Address State Warm (0.4M, Present Target, Extcodesize) | 8.87 | 6.56 | +| Address State Warm (0.4M, Present Target, Staticcall) | 15.54 | 9.08 | +| Amortized Bn128 Pairings (0.4M) | 33.60 | 13.11 | +| Binop Simple (0.4M, Add) | 11.09 | 7.09 | +| Binop Simple (0.4M, And) | 10.44 | 7.57 | +| Binop Simple (0.4M, Byte) | 11.68 | 7.08 | +| Binop Simple (0.4M, Div, 0) | 28.05 | 15.13 | +| Binop Simple (0.4M, Div, 1) | 26.58 | 14.12 | +| Binop Simple (0.4M, Eq) | 15.29 | 10.12 | +| Binop Simple (0.4M, Exp) | 21.85 | 10.09 | +| Binop Simple (0.4M, Gt) | 10.93 | 7.07 | +| Binop Simple (0.4M, Lt) | 11.01 | 7.58 | +| Binop Simple (0.4M, Mod) | 13.03 | 9.60 | +| Binop Simple (0.4M, Mul) | 12.54 | 8.09 | +| Binop Simple (0.4M, Or) | 10.96 | 7.07 | +| Binop Simple (0.4M, Sar) | 15.75 | 9.11 | +| Binop Simple (0.4M, Sdiv, 0) | 31.25 | 15.14 | +| Binop Simple (0.4M, Sdiv, 1) | 33.97 | 15.66 | +| Binop Simple (0.4M, Sgt) | 14.98 | 9.60 | +| Binop Simple (0.4M, Shl) | 13.10 | 8.58 | +| Binop Simple (0.4M, Shr) | 14.92 | 8.08 | +| Binop Simple (0.4M, Signextend) | 12.38 | 8.08 | +| Binop Simple (0.4M, Slt) | 10.55 | 7.59 | +| Binop Simple (0.4M, Smod) | 14.59 | 9.60 | +| Binop Simple (0.4M, Sub) | 11.12 | 7.58 | +| Binop Simple (0.4M, Xor) | 11.28 | 7.05 | +| Blobhash (0.4M, No Blobs) | 9.90 | 7.57 | +| Blobhash (0.4M, One Blob And Accessed) | 12.09 | 8.09 | +| Blobhash (0.4M, One Blob But Access Non, Existent Index) | 9.40 | 7.08 | +| Blobhash (0.4M, Six Blobs, Access Latest) | 13.03 | 8.08 | +| Block Full Access List And Data (0.4M) | 5.09 | 6.07 | +| Block Full Data (0.4M, Non Zero Byte) | 3.95 | 6.07 | +| Block Full Data (0.4M, Zero Byte) | 5.10 | 6.57 | +| Block Full Of Ether Transfers (0.4M, A To A) | 8.53 | 7.09 | +| Block Full Of Ether Transfers (0.4M, A To B) | 9.04 | 7.08 | +| Block Full Of Ether Transfers (0.4M, A To Diff Acc) | 9.59 | 7.08 | +| Block Full Of Ether Transfers (0.4M, Diff Acc To B) | 9.52 | 7.59 | +| Block Full Of Ether Transfers (0.4M, Diff Acc To Diff Acc) | 8.99 | 7.59 | +| Blockhash (0.4M) | 12.30 | 7.59 | +| Bytecode Single Opcode (0.4M, Call) | 43.61 | 17.68 | +| Bytecode Single Opcode (0.4M, Callcode) | 43.04 | 18.65 | +| Bytecode Single Opcode (0.4M, Delegatecall) | 44.55 | 17.19 | +| Bytecode Single Opcode (0.4M, Extcodecopy) | 41.58 | 16.19 | +| Bytecode Single Opcode (0.4M, Extcodehash) | 41.34 | 16.66 | +| Bytecode Single Opcode (0.4M, Extcodesize) | 41.55 | 16.66 | +| Bytecode Single Opcode (0.4M, Staticcall) | 42.25 | 17.20 | +| Calldatacopy (0.4M, Non Zero, Dynamic Src Dst, 100Bytes, Call) | 11.30 | 8.09 | +| Calldatacopy (0.4M, Non Zero, Dynamic Src Dst, 100Bytes, Transaction) | 12.17 | 8.07 | +| Calldatacopy (0.4M, Non Zero, Fixed Src Dst, 100Bytes, Call) | 11.82 | 7.07 | +| Calldatacopy (0.4M, Non Zero, Fixed Src Dst, 100Bytes, Transaction) | 8.09 | 6.56 | +| Calldatacopy (0.4M, Zero Data, Dynamic Src Dst, 0Bytes, Call) | 12.49 | 8.59 | +| Calldatacopy (0.4M, Zero Data, Dynamic Src Dst, 0Bytes, Transaction) | 12.43 | 7.58 | +| Calldatacopy (0.4M, Zero Data, Dynamic Src Dst, 100Bytes, Call) | 11.67 | 8.57 | +| Calldatacopy (0.4M, Zero Data, Dynamic Src Dst, 100Bytes, Transaction) | 11.77 | 7.06 | +| Calldatacopy (0.4M, Zero Data, Dynamic Src Dst, 10Kib, Call) | 8.20 | 7.06 | +| Calldatacopy (0.4M, Zero Data, Dynamic Src Dst, 10Kib, Transaction) | 5.97 | 6.06 | +| Calldatacopy (0.4M, Zero Data, Dynamic Src Dst, 1Mib, Call) | 4.03 | 6.06 | +| Calldatacopy (0.4M, Zero Data, Dynamic Src Dst, 1Mib, Transaction) | 4.53 | 6.08 | +| Calldatacopy (0.4M, Zero Data, Fixed Src Dst, 0Bytes, Call) | 11.16 | 7.57 | +| Calldatacopy (0.4M, Zero Data, Fixed Src Dst, 0Bytes, Transaction) | 10.11 | 7.57 | +| Calldatacopy (0.4M, Zero Data, Fixed Src Dst, 100Bytes, Call) | 10.57 | 7.08 | +| Calldatacopy (0.4M, Zero Data, Fixed Src Dst, 100Bytes, Transaction) | 8.81 | 7.07 | +| Calldatacopy (0.4M, Zero Data, Fixed Src Dst, 10Kib, Call) | 7.18 | 7.58 | +| Calldatacopy (0.4M, Zero Data, Fixed Src Dst, 10Kib, Transaction) | 6.00 | 6.57 | +| Calldatacopy (0.4M, Zero Data, Fixed Src Dst, 1Mib, Call) | 4.19 | 6.06 | +| Calldatacopy (0.4M, Zero Data, Fixed Src Dst, 1Mib, Transaction) | 4.30 | 6.05 | +| Calldataload (0.4M, Empty) | 15.46 | 9.09 | +| Calldataload (0.4M, One, Loop) | 16.76 | 10.08 | +| Calldataload (0.4M, Zero, Loop) | 17.44 | 10.11 | +| Calldatasize (0.4M, Calldata Length 0) | 10.06 | 7.07 | +| Calldatasize (0.4M, Calldata Length 1000) | 11.26 | 7.07 | +| Calldatasize (0.4M, Calldata Length 10000) | 10.98 | 7.07 | +| Callvalue (0.4M, From Origin False, Non Zero Value False) | 11.20 | 7.57 | +| Callvalue (0.4M, From Origin False, Non Zero Value True) | 11.30 | 8.08 | +| Callvalue (0.4M, From Origin True, Non Zero Value False) | 9.99 | 7.08 | +| Callvalue (0.4M, From Origin True, Non Zero Value True) | 11.95 | 7.57 | +| Codecopy (0.4M, Dynamic Src Dst, 0.25X Max Code) | 7.22 | 7.55 | +| Codecopy (0.4M, Dynamic Src Dst, 0.50X Max Code Size) | 9.81 | 6.56 | +| Codecopy (0.4M, Dynamic Src Dst, 0.75X Max Code Size) | 8.40 | 7.60 | +| Codecopy (0.4M, Dynamic Src Dst, 0Bytes) | 12.02 | 8.59 | +| Codecopy (0.4M, Dynamic Src Dst, Max Code) | 7.72 | 7.06 | +| Codecopy (0.4M, Fixed Src Dst, 0.25X Max Code) | 6.50 | 7.58 | +| Codecopy (0.4M, Fixed Src Dst, 0.50X Max Code Size) | 7.72 | 7.56 | +| Codecopy (0.4M, Fixed Src Dst, 0.75X Max Code Size) | 9.37 | 6.61 | +| Codecopy (0.4M, Fixed Src Dst, 0Bytes) | 9.63 | 7.07 | +| Codecopy (0.4M, Fixed Src Dst, Max Code) | 8.65 | 7.09 | +| Create (0.4M, 0.25X Max Code, Create) | 5.10 | 6.07 | +| Create (0.4M, 0.25X Max Code, Create2) | 5.08 | 6.06 | +| Create (0.4M, 0.25X Max Code, Zero Data, Create) | 4.92 | 6.06 | +| Create (0.4M, 0.25X Max Code, Zero Data, Create2) | 5.37 | 6.57 | +| Create (0.4M, 0.50X Max Code Size With Non, Zero Data, Create) | 5.06 | 6.05 | +| Create (0.4M, 0.50X Max Code Size With Non, Zero Data, Create2) | 5.17 | 6.56 | +| Create (0.4M, 0.50X Max Code Size With Zero Data, Create) | 5.20 | 6.07 | +| Create (0.4M, 0.50X Max Code Size With Zero Data, Create2) | 5.97 | 6.06 | +| Create (0.4M, 0.75X Max Code Size With Non, Zero Data, Create) | 5.59 | 6.06 | +| Create (0.4M, 0.75X Max Code Size With Non, Zero Data, Create2) | 5.21 | 5.56 | +| Create (0.4M, 0.75X Max Code Size With Zero Data, Create) | 4.67 | 6.06 | +| Create (0.4M, 0.75X Max Code Size With Zero Data, Create2) | 5.23 | 6.56 | +| Create (0.4M, 0Bytes, Create) | 6.27 | 6.06 | +| Create (0.4M, 0Bytes, Create2) | 4.44 | 6.05 | +| Create (0.4M, Max Code, Create) | 5.93 | 6.05 | +| Create (0.4M, Max Code, Create2) | 5.73 | 6.07 | +| Create (0.4M, Max Code, Zero Data, Create) | 5.11 | 7.08 | +| Create (0.4M, Max Code, Zero Data, Create2) | 5.99 | 6.06 | +| Creates Collisions (0.4M, Create) | 4.65 | 6.56 | +| Creates Collisions (0.4M, Create2) | 5.88 | 5.56 | +| Dup (0.4M, Dup1) | 10.27 | 7.07 | +| Dup (0.4M, Dup10) | 9.99 | 6.57 | +| Dup (0.4M, Dup11) | 9.38 | 6.56 | +| Dup (0.4M, Dup12) | 8.79 | 7.08 | +| Dup (0.4M, Dup13) | 10.05 | 7.09 | +| Dup (0.4M, Dup14) | 9.41 | 7.06 | +| Dup (0.4M, Dup15) | 10.66 | 7.58 | +| Dup (0.4M, Dup16) | 9.94 | 7.09 | +| Dup (0.4M, Dup2) | 9.64 | 7.08 | +| Dup (0.4M, Dup3) | 10.25 | 7.07 | +| Dup (0.4M, Dup4) | 8.73 | 6.57 | +| Dup (0.4M, Dup5) | 8.74 | 7.07 | +| Dup (0.4M, Dup6) | 10.68 | 7.07 | +| Dup (0.4M, Dup7) | 11.54 | 7.05 | +| Dup (0.4M, Dup8) | 9.43 | 7.09 | +| Dup (0.4M, Dup9) | 8.89 | 7.57 | +| Empty Block (0.4M) | 3.80 | 5.55 | +| Extcodecopy Warm (0.4M, 1Kib) | 9.79 | 7.06 | +| Extcodecopy Warm (0.4M, 512) | 8.44 | 6.57 | +| Extcodecopy Warm (0.4M, 5Kib) | 7.88 | 7.06 | +| Initcode Jumpdest Analysis (0.4M, 00) | 7.97 | 7.59 | +| Initcode Jumpdest Analysis (0.4M, 5B) | 9.69 | 7.08 | +| Initcode Jumpdest Analysis (0.4M, 605B) | 7.51 | 6.55 | +| Initcode Jumpdest Analysis (0.4M, 605B5B) | 8.68 | 7.06 | +| Initcode Jumpdest Analysis (0.4M, 615B5B) | 7.34 | 6.58 | +| Initcode Jumpdest Analysis (0.4M, 615B5B5B) | 8.55 | 7.58 | +| Jumpdests (0.4M) | 10.67 | 6.57 | +| Jumpi Fallthrough (0.4M) | 9.83 | 8.08 | +| Jumpis (0.4M) | 11.40 | 7.09 | +| Jumps (0.4M) | 8.17 | 7.08 | +| Keccak (0.4M) | 24.58 | 8.62 | +| Log Opcodes (0.4M, Dynamic, Non Zero Topic, 0 Bytes Data, Log0) | 4.97 | 6.59 | +| Log Opcodes (0.4M, Dynamic, Non Zero Topic, 0 Bytes Data, Log1) | 4.54 | 6.07 | +| Log Opcodes (0.4M, Dynamic, Non Zero Topic, 0 Bytes Data, Log2) | 4.92 | 6.07 | +| Log Opcodes (0.4M, Dynamic, Non Zero Topic, 0 Bytes Data, Log3) | 4.83 | 6.08 | +| Log Opcodes (0.4M, Dynamic, Non Zero Topic, 0 Bytes Data, Log4) | 4.71 | 5.56 | +| Log Opcodes (0.4M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log0) | 4.76 | 6.08 | +| Log Opcodes (0.4M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log1) | 5.47 | 6.07 | +| Log Opcodes (0.4M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log2) | 4.19 | 5.60 | +| Log Opcodes (0.4M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log3) | 4.33 | 6.58 | +| Log Opcodes (0.4M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log4) | 4.69 | 6.57 | +| Log Opcodes (0.4M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log0) | 4.72 | 6.05 | +| Log Opcodes (0.4M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log1) | 4.62 | 6.58 | +| Log Opcodes (0.4M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log2) | 4.24 | 6.56 | +| Log Opcodes (0.4M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log3) | 5.34 | 6.08 | +| Log Opcodes (0.4M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log4) | 4.92 | 6.08 | +| Log Opcodes (0.4M, Dynamic, Zero Topic, 0 Bytes Data, Log0) | 4.80 | 6.07 | +| Log Opcodes (0.4M, Dynamic, Zero Topic, 0 Bytes Data, Log1) | 4.90 | 6.06 | +| Log Opcodes (0.4M, Dynamic, Zero Topic, 0 Bytes Data, Log2) | 5.72 | 5.56 | +| Log Opcodes (0.4M, Dynamic, Zero Topic, 0 Bytes Data, Log3) | 4.80 | 6.07 | +| Log Opcodes (0.4M, Dynamic, Zero Topic, 0 Bytes Data, Log4) | 4.42 | 5.56 | +| Log Opcodes (0.4M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log0) | 4.15 | 7.08 | +| Log Opcodes (0.4M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log1) | 4.38 | 6.07 | +| Log Opcodes (0.4M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log2) | 4.75 | 6.56 | +| Log Opcodes (0.4M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log3) | 4.09 | 6.07 | +| Log Opcodes (0.4M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log4) | 4.57 | 6.08 | +| Log Opcodes (0.4M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log0) | 4.58 | 6.07 | +| Log Opcodes (0.4M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log1) | 4.47 | 5.55 | +| Log Opcodes (0.4M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log2) | 4.30 | 6.07 | +| Log Opcodes (0.4M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log3) | 4.97 | 6.56 | +| Log Opcodes (0.4M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log4) | 4.18 | 5.56 | +| Log Opcodes (0.4M, Fixed, Non Zero Topic, 0 Bytes Data, Log0) | 5.77 | 6.64 | +| Log Opcodes (0.4M, Fixed, Non Zero Topic, 0 Bytes Data, Log1) | 5.35 | 6.57 | +| Log Opcodes (0.4M, Fixed, Non Zero Topic, 0 Bytes Data, Log2) | 4.92 | 6.05 | +| Log Opcodes (0.4M, Fixed, Non Zero Topic, 0 Bytes Data, Log3) | 5.27 | 6.57 | +| Log Opcodes (0.4M, Fixed, Non Zero Topic, 0 Bytes Data, Log4) | 5.32 | 6.07 | +| Log Opcodes (0.4M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log0) | 4.53 | 6.05 | +| Log Opcodes (0.4M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log1) | 4.56 | 6.04 | +| Log Opcodes (0.4M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log2) | 4.03 | 6.06 | +| Log Opcodes (0.4M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log3) | 3.88 | 6.05 | +| Log Opcodes (0.4M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log4) | 4.70 | 5.54 | +| Log Opcodes (0.4M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log0) | 5.44 | 6.06 | +| Log Opcodes (0.4M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log1) | 4.23 | 6.06 | +| Log Opcodes (0.4M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log2) | 4.66 | 6.56 | +| Log Opcodes (0.4M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log3) | 4.25 | 6.07 | +| Log Opcodes (0.4M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log4) | 4.46 | 5.55 | +| Log Opcodes (0.4M, Fixed, Zero Topic, 0 Bytes Data, Log0) | 5.14 | 6.07 | +| Log Opcodes (0.4M, Fixed, Zero Topic, 0 Bytes Data, Log1) | 5.75 | 6.06 | +| Log Opcodes (0.4M, Fixed, Zero Topic, 0 Bytes Data, Log2) | 4.69 | 6.08 | +| Log Opcodes (0.4M, Fixed, Zero Topic, 0 Bytes Data, Log3) | 4.54 | 6.06 | +| Log Opcodes (0.4M, Fixed, Zero Topic, 0 Bytes Data, Log4) | 4.98 | 6.06 | +| Log Opcodes (0.4M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log0) | 5.32 | 5.55 | +| Log Opcodes (0.4M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log1) | 4.13 | 6.07 | +| Log Opcodes (0.4M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log2) | 4.81 | 5.55 | +| Log Opcodes (0.4M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log3) | 5.28 | 6.05 | +| Log Opcodes (0.4M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log4) | 5.23 | 6.05 | +| Log Opcodes (0.4M, Fixed, Zero Topic, 1 Mib Zeros Data, Log0) | 5.08 | 5.55 | +| Log Opcodes (0.4M, Fixed, Zero Topic, 1 Mib Zeros Data, Log1) | 4.08 | 6.06 | +| Log Opcodes (0.4M, Fixed, Zero Topic, 1 Mib Zeros Data, Log2) | 4.08 | 6.06 | +| Log Opcodes (0.4M, Fixed, Zero Topic, 1 Mib Zeros Data, Log3) | 4.25 | 6.07 | +| Log Opcodes (0.4M, Fixed, Zero Topic, 1 Mib Zeros Data, Log4) | 4.47 | 6.06 | +| Mcopy (0.4M, Dynamic Src Dst, 0Bytes) | 12.39 | 8.57 | +| Mcopy (0.4M, Dynamic Src Dst, 100Bytes) | 11.37 | 8.06 | +| Mcopy (0.4M, Dynamic Src Dst, 10Kib) | 10.84 | 7.07 | +| Mcopy (0.4M, Dynamic Src Dst, 1Mib) | 4.96 | 6.06 | +| Mcopy (0.4M, Fixed Src Dst, 0Bytes) | 9.48 | 7.58 | +| Mcopy (0.4M, Fixed Src Dst, 100Bytes) | 8.69 | 7.59 | +| Mcopy (0.4M, Fixed Src Dst, 10Kib) | 9.08 | 7.07 | +| Mcopy (0.4M, Fixed Src Dst, 1Mib) | 5.72 | 6.06 | +| Memory Access (0.4M, Big Mem, Init Offset, Off 0, Mload) | 12.69 | 7.57 | +| Memory Access (0.4M, Big Mem, Init Offset, Off 0, Mstore) | 12.29 | 8.08 | +| Memory Access (0.4M, Big Mem, Init Offset, Off 0, Mstore8) | 10.62 | 7.08 | +| Memory Access (0.4M, Big Mem, Init Offset, Off 1, Mload) | 11.21 | 7.58 | +| Memory Access (0.4M, Big Mem, Init Offset, Off 1, Mstore) | 11.47 | 8.07 | +| Memory Access (0.4M, Big Mem, Init Offset, Off 1, Mstore8) | 10.06 | 7.07 | +| Memory Access (0.4M, Big Mem, Init Offset, Off 31, Mload) | 11.35 | 8.58 | +| Memory Access (0.4M, Big Mem, Init Offset, Off 31, Mstore) | 12.62 | 8.07 | +| Memory Access (0.4M, Big Mem, Init Offset, Off 31, Mstore8) | 11.05 | 6.57 | +| Memory Access (0.4M, Big Mem, Uninit Offset, Off 0, Mload) | 12.07 | 8.08 | +| Memory Access (0.4M, Big Mem, Uninit Offset, Off 0, Mstore) | 12.42 | 8.09 | +| Memory Access (0.4M, Big Mem, Uninit Offset, Off 0, Mstore8) | 11.14 | 7.08 | +| Memory Access (0.4M, Big Mem, Uninit Offset, Off 1, Mload) | 12.61 | 7.58 | +| Memory Access (0.4M, Big Mem, Uninit Offset, Off 1, Mstore) | 11.35 | 8.09 | +| Memory Access (0.4M, Big Mem, Uninit Offset, Off 1, Mstore8) | 10.51 | 7.07 | +| Memory Access (0.4M, Big Mem, Uninit Offset, Off 31, Mload) | 11.49 | 8.08 | +| Memory Access (0.4M, Big Mem, Uninit Offset, Off 31, Mstore) | 12.45 | 8.61 | +| Memory Access (0.4M, Big Mem, Uninit Offset, Off 31, Mstore8) | 9.19 | 7.08 | +| Memory Access (0.4M, Small Mem, Init Offset, Off 0, Mload) | 11.92 | 8.08 | +| Memory Access (0.4M, Small Mem, Init Offset, Off 0, Mstore) | 11.61 | 8.59 | +| Memory Access (0.4M, Small Mem, Init Offset, Off 0, Mstore8) | 8.87 | 7.07 | +| Memory Access (0.4M, Small Mem, Init Offset, Off 1, Mload) | 11.50 | 7.55 | +| Memory Access (0.4M, Small Mem, Init Offset, Off 1, Mstore) | 11.51 | 8.58 | +| Memory Access (0.4M, Small Mem, Init Offset, Off 1, Mstore8) | 11.08 | 7.07 | +| Memory Access (0.4M, Small Mem, Init Offset, Off 31, Mload) | 12.65 | 8.09 | +| Memory Access (0.4M, Small Mem, Init Offset, Off 31, Mstore) | 11.50 | 7.58 | +| Memory Access (0.4M, Small Mem, Init Offset, Off 31, Mstore8) | 12.21 | 7.08 | +| Memory Access (0.4M, Small Mem, Uninit Offset, Off 0, Mload) | 10.85 | 8.07 | +| Memory Access (0.4M, Small Mem, Uninit Offset, Off 0, Mstore) | 11.97 | 8.07 | +| Memory Access (0.4M, Small Mem, Uninit Offset, Off 0, Mstore8) | 11.24 | 7.57 | +| Memory Access (0.4M, Small Mem, Uninit Offset, Off 1, Mload) | 11.71 | 7.58 | +| Memory Access (0.4M, Small Mem, Uninit Offset, Off 1, Mstore) | 11.69 | 8.09 | +| Memory Access (0.4M, Small Mem, Uninit Offset, Off 1, Mstore8) | 9.65 | 6.56 | +| Memory Access (0.4M, Small Mem, Uninit Offset, Off 31, Mload) | 11.64 | 7.57 | +| Memory Access (0.4M, Small Mem, Uninit Offset, Off 31, Mstore) | 11.56 | 8.08 | +| Memory Access (0.4M, Small Mem, Uninit Offset, Off 31, Mstore8) | 12.75 | 6.60 | +| Mod (0.4M, Op Mod, Mod Bits 127) | 28.03 | 14.64 | +| Mod (0.4M, Op Mod, Mod Bits 191) | 32.74 | 15.63 | +| Mod (0.4M, Op Mod, Mod Bits 255) | 27.34 | 14.64 | +| Mod (0.4M, Op Mod, Mod Bits 63) | 20.36 | 11.62 | +| Mod (0.4M, Op Smod, Mod Bits 127) | 29.00 | 13.65 | +| Mod (0.4M, Op Smod, Mod Bits 191) | 33.75 | 16.66 | +| Mod (0.4M, Op Smod, Mod Bits 255) | 29.52 | 14.65 | +| Mod (0.4M, Op Smod, Mod Bits 63) | 23.44 | 11.60 | +| Modarith (0.4M, Op Addmod, Mod Bits 127) | 25.07 | 11.12 | +| Modarith (0.4M, Op Addmod, Mod Bits 191) | 28.07 | 13.13 | +| Modarith (0.4M, Op Addmod, Mod Bits 255) | 25.32 | 11.13 | +| Modarith (0.4M, Op Addmod, Mod Bits 63) | 19.04 | 10.09 | +| Modarith (0.4M, Op Mulmod, Mod Bits 127) | 34.89 | 17.16 | +| Modarith (0.4M, Op Mulmod, Mod Bits 191) | 50.02 | 20.70 | +| Modarith (0.4M, Op Mulmod, Mod Bits 255) | 44.32 | 20.18 | +| Modarith (0.4M, Op Mulmod, Mod Bits 63) | 31.26 | 14.17 | +| Modexp (0.4M, Mod 1045 Gas Base Heavy) | 422.5 | 159.1 | +| Modexp (0.4M, Mod 1360 Gas Balanced) | 114.3 | 41.97 | +| Modexp (0.4M, Mod 400 Gas Exp Heavy) | N/A | 50.02 | +| Modexp (0.4M, Mod 408 Gas Balanced) | 95.44 | 37.35 | +| Modexp (0.4M, Mod 408 Gas Base Heavy) | 370.6 | 142.0 | +| Modexp (0.4M, Mod 600 As Balanced) | 101.3 | 36.86 | +| Modexp (0.4M, Mod 600 Gas Exp Heavy) | 150.6 | 53.55 | +| Modexp (0.4M, Mod 616 Gas Base Heavy) | 411.3 | 151.0 | +| Modexp (0.4M, Mod 677 Gas Base Heavy) | 102.3 | 40.39 | +| Modexp (0.4M, Mod 765 Gas Exp Heavy) | 123.2 | 44.98 | +| Modexp (0.4M, Mod 767 Gas Balanced) | 91.84 | 36.87 | +| Modexp (0.4M, Mod 800 Gas Base Heavy) | 417.0 | 158.1 | +| Modexp (0.4M, Mod 800 Gas Exp Heavy) | 149.9 | 55.60 | +| Modexp (0.4M, Mod 852 Gas Exp Heavy) | 148.1 | 56.06 | +| Modexp (0.4M, Mod 867 Gas Base Heavy) | 419.4 | 159.2 | +| Modexp (0.4M, Mod 996 Gas Balanced) | 94.95 | 37.41 | +| Modexp (0.4M, Mod Even 1024B Exp 1024) | 5.89 | 6.07 | +| Modexp (0.4M, Mod Even 128B Exp 1024) | 82.96 | 35.84 | +| Modexp (0.4M, Mod Even 16B Exp 320) | N/A | 52.05 | +| Modexp (0.4M, Mod Even 24B Exp 168) | 114.1 | 43.46 | +| Modexp (0.4M, Mod Even 256B Exp 1024) | 79.08 | 33.84 | +| Modexp (0.4M, Mod Even 32B Exp 256) | 117.7 | 42.91 | +| Modexp (0.4M, Mod Even 32B Exp 40) | 95.83 | 36.35 | +| Modexp (0.4M, Mod Even 32B Exp 96) | 105.2 | 40.44 | +| Modexp (0.4M, Mod Even 512B Exp 1024) | 4.83 | 6.56 | +| Modexp (0.4M, Mod Even 64B Exp 512) | 101.6 | 40.86 | +| Modexp (0.4M, Mod Even 8B Exp 896) | 235.6 | 86.36 | +| Modexp (0.4M, Mod Exp 208 Gas Balanced) | 90.88 | 34.89 | +| Modexp (0.4M, Mod Exp 215 Gas Exp Heavy) | 204.1 | 77.25 | +| Modexp (0.4M, Mod Exp 298 Gas Exp Heavy) | 237.5 | 84.93 | +| Modexp (0.4M, Mod Min As Balanced) | 91.43 | 36.82 | +| Modexp (0.4M, Mod Min As Base Heavy) | 302.3 | 115.1 | +| Modexp (0.4M, Mod Min As Exp Heavy) | 221.3 | 76.30 | +| Modexp (0.4M, Mod Odd 1024B Exp 1024) | 5.15 | 6.08 | +| Modexp (0.4M, Mod Odd 128B Exp 1024) | 86.69 | 35.86 | +| Modexp (0.4M, Mod Odd 256B Exp 1024) | 82.48 | 34.31 | +| Modexp (0.4M, Mod Odd 32B Exp 256) | 110.7 | 42.44 | +| Modexp (0.4M, Mod Odd 32B Exp 96) | N/A | 39.38 | +| Modexp (0.4M, Mod Odd 32B Exp Cover Windows) | 85.44 | 32.33 | +| Modexp (0.4M, Mod Odd 512B Exp 1024) | 4.69 | 5.56 | +| Modexp (0.4M, Mod Odd 64B Exp 512) | 96.61 | 41.42 | +| Modexp (0.4M, Mod Pawel 2) | 136.1 | 50.48 | +| Modexp (0.4M, Mod Pawel 3) | 109.9 | 42.45 | +| Modexp (0.4M, Mod Pawel 4) | 100.3 | 39.43 | +| Modexp (0.4M, Mod Vul Common 1152N1) | 63.34 | 25.79 | +| Modexp (0.4M, Mod Vul Common 1349N1) | 86.15 | 35.37 | +| Modexp (0.4M, Mod Vul Common 1360N1) | 100.1 | 37.89 | +| Modexp (0.4M, Mod Vul Common 1360N2) | 85.57 | 34.88 | +| Modexp (0.4M, Mod Vul Common 200N1) | 50.46 | 22.71 | +| Modexp (0.4M, Mod Vul Common 200N2) | 65.18 | 25.76 | +| Modexp (0.4M, Mod Vul Common 200N3) | 66.14 | 26.27 | +| Modexp (0.4M, Mod Vul Example 1) | 115.1 | 42.42 | +| Modexp (0.4M, Mod Vul Example 2) | 108.3 | 39.45 | +| Modexp (0.4M, Mod Vul Guido 1 Even) | 73.63 | 32.31 | +| Modexp (0.4M, Mod Vul Guido 2 Even) | 132.3 | 48.53 | +| Modexp (0.4M, Mod Vul Guido 3 Even) | 202.5 | 82.84 | +| Modexp (0.4M, Mod Vul Marius 1 Even) | 121.8 | 44.95 | +| Modexp (0.4M, Mod Vul Nagydani 1 Pow 0X10001) | 78.18 | 31.32 | +| Modexp (0.4M, Mod Vul Nagydani 1 Qube) | 63.72 | 24.75 | +| Modexp (0.4M, Mod Vul Nagydani 1 Square) | 57.87 | 23.24 | +| Modexp (0.4M, Mod Vul Nagydani 2 Pow 0X10001) | 80.71 | 32.82 | +| Modexp (0.4M, Mod Vul Nagydani 2 Qube) | 180.0 | 65.17 | +| Modexp (0.4M, Mod Vul Nagydani 2 Square) | 157.7 | 60.12 | +| Modexp (0.4M, Mod Vul Nagydani 3 Pow 0X10001) | 80.08 | 32.35 | +| Modexp (0.4M, Mod Vul Nagydani 3 Qube) | 405.4 | 152.0 | +| Modexp (0.4M, Mod Vul Nagydani 3 Square) | 391.5 | 138.9 | +| Modexp (0.4M, Mod Vul Nagydani 4 Pow 0X10001) | 71.60 | 31.28 | +| Modexp (0.4M, Mod Vul Nagydani 4 Qube) | N/A | 178.3 | +| Modexp (0.4M, Mod Vul Nagydani 4 Square) | 409.5 | 163.6 | +| Modexp (0.4M, Mod Vul Nagydani 5 Pow 0X10001) | 53.15 | 24.73 | +| Modexp (0.4M, Mod Vul Nagydani 5 Qube) | 461.1 | 174.7 | +| Modexp (0.4M, Mod Vul Nagydani 5 Square) | 393.7 | 161.1 | +| Modexp (0.4M, Mod Vul Pawel 1 Exp Heavy) | 210.3 | 80.34 | +| Modexp (0.4M, Mod Vul Pawel 2 Exp Heavy) | 136.7 | 48.51 | +| Modexp (0.4M, Mod Vul Pawel 3 Exp Heavy) | 105.7 | 40.40 | +| Modexp (0.4M, Mod Vul Pawel 4 Exp Heavy) | 99.86 | 37.33 | +| Msize (0.4M, Mem Size 0) | 12.21 | 8.07 | +| Msize (0.4M, Mem Size 1) | 12.93 | 8.07 | +| Msize (0.4M, Mem Size 1000) | 11.57 | 8.08 | +| Msize (0.4M, Mem Size 100000) | 10.49 | 8.07 | +| Msize (0.4M, Mem Size 1000000) | 12.85 | 7.57 | +| Precompile Fixed Cost (0.4M, Blake2F) | 92.21 | 31.26 | +| Precompile Fixed Cost (0.4M, Bls12 Fp To G1) | 16.93 | 61.61 | +| Precompile Fixed Cost (0.4M, Bls12 Fp To G2) | 14.47 | 45.47 | +| Precompile Fixed Cost (0.4M, Bls12 G1Add) | 14.58 | 37.42 | +| Precompile Fixed Cost (0.4M, Bls12 G1Msm) | 4.94 | 6.57 | +| Precompile Fixed Cost (0.4M, Bls12 G2Add) | 15.21 | 39.90 | +| Precompile Fixed Cost (0.4M, Bls12 G2Msm) | 5.24 | 6.06 | +| Precompile Fixed Cost (0.4M, Bls12 Pairing Check) | 21.28 | 55.57 | +| Precompile Fixed Cost (0.4M, Bn128 Add 1 2) | 16.72 | 10.11 | +| Precompile Fixed Cost (0.4M, Bn128 Add Infinities) | 12.98 | 7.59 | +| Precompile Fixed Cost (0.4M, Bn128 Add) | 17.05 | 14.16 | +| Precompile Fixed Cost (0.4M, Bn128 Mul 1 2 2 Scalar) | 6.01 | 7.08 | +| Precompile Fixed Cost (0.4M, Bn128 Mul 1 2 32 Byte Scalar) | 36.34 | 19.22 | +| Precompile Fixed Cost (0.4M, Bn128 Mul 32 Byte Coord And 2 Scalar) | 4.99 | 7.57 | +| Precompile Fixed Cost (0.4M, Bn128 Mul 32 Byte Coord And Scalar) | 36.29 | 20.19 | +| Precompile Fixed Cost (0.4M, Bn128 Mul Infinities 2 Scalar) | 6.82 | 7.57 | +| Precompile Fixed Cost (0.4M, Bn128 Mul Infinities 32 Byte Scalar) | 26.14 | 14.15 | +| Precompile Fixed Cost (0.4M, Bn128 Mul) | 36.55 | 20.72 | +| Precompile Fixed Cost (0.4M, Bn128 One Pairing) | N/A | 12.10 | +| Precompile Fixed Cost (0.4M, Bn128 Two Pairings Empty) | 5.03 | 6.06 | +| Precompile Fixed Cost (0.4M, Bn128 Two Pairings) | 36.27 | 14.14 | +| Precompile Fixed Cost (0.4M, Ecrecover) | 37.35 | 10.09 | +| Precompile Fixed Cost (0.4M, Point Evaluation) | 39.17 | 142.5 | +| Precompile Only Data Input (0.4M, Identity) | 8.90 | 7.05 | +| Precompile Only Data Input (0.4M, Ripemd, 160) | 6.82 | 6.56 | +| Precompile Only Data Input (0.4M, Sha2, 256) | 6.36 | 10.08 | +| Push (0.4M, Push0) | 11.31 | 7.57 | +| Push (0.4M, Push1) | 10.10 | 6.56 | +| Push (0.4M, Push10) | 11.48 | 7.57 | +| Push (0.4M, Push11) | 12.12 | 7.57 | +| Push (0.4M, Push12) | 12.65 | 7.57 | +| Push (0.4M, Push13) | 11.60 | 7.06 | +| Push (0.4M, Push14) | 12.75 | 8.06 | +| Push (0.4M, Push15) | 12.04 | 7.58 | +| Push (0.4M, Push16) | 11.43 | 7.08 | +| Push (0.4M, Push17) | 12.24 | 7.57 | +| Push (0.4M, Push18) | 13.28 | 7.58 | +| Push (0.4M, Push19) | 13.27 | 8.09 | +| Push (0.4M, Push2) | 9.64 | 7.06 | +| Push (0.4M, Push20) | 13.26 | 8.08 | +| Push (0.4M, Push21) | 12.97 | 8.59 | +| Push (0.4M, Push22) | 12.34 | 8.09 | +| Push (0.4M, Push23) | 13.56 | 8.08 | +| Push (0.4M, Push24) | 12.46 | 8.10 | +| Push (0.4M, Push25) | 12.63 | 8.07 | +| Push (0.4M, Push26) | 13.25 | 8.07 | +| Push (0.4M, Push27) | 14.11 | 8.08 | +| Push (0.4M, Push28) | 14.47 | 7.59 | +| Push (0.4M, Push29) | 13.99 | 9.11 | +| Push (0.4M, Push3) | 11.67 | 7.56 | +| Push (0.4M, Push30) | 14.77 | 8.59 | +| Push (0.4M, Push31) | 15.28 | 8.10 | +| Push (0.4M, Push32) | 13.51 | 8.09 | +| Push (0.4M, Push4) | 10.28 | 8.08 | +| Push (0.4M, Push5) | 10.93 | 7.08 | +| Push (0.4M, Push6) | 12.42 | 7.57 | +| Push (0.4M, Push7) | 11.26 | 7.57 | +| Push (0.4M, Push8) | 11.71 | 6.57 | +| Push (0.4M, Push9) | 10.88 | 7.57 | +| Return Revert (0.4M, 1Kib Of Non, Zero Data, Return) | 13.97 | 7.56 | +| Return Revert (0.4M, 1Kib Of Non, Zero Data, Revert) | 12.76 | 8.60 | +| Return Revert (0.4M, 1Kib Of Zero Data, Return) | 13.06 | 8.08 | +| Return Revert (0.4M, 1Kib Of Zero Data, Revert) | 14.42 | 8.09 | +| Return Revert (0.4M, 1Mib Of Non, Zero Data, Return) | 4.65 | 6.07 | +| Return Revert (0.4M, 1Mib Of Non, Zero Data, Revert) | 5.25 | 6.57 | +| Return Revert (0.4M, 1Mib Of Zero Data, Return) | 4.54 | 6.56 | +| Return Revert (0.4M, 1Mib Of Zero Data, Revert) | 3.98 | 6.06 | +| Return Revert (0.4M, Empty, Return) | 13.96 | 10.09 | +| Return Revert (0.4M, Empty, Revert) | 17.56 | 9.12 | +| Returndatacopy (0.4M, Fixed Dst False, 0Bytes) | 12.64 | 7.57 | +| Returndatacopy (0.4M, Fixed Dst False, 100Bytes) | 10.46 | 7.60 | +| Returndatacopy (0.4M, Fixed Dst False, 10Kib) | 10.30 | 7.07 | +| Returndatacopy (0.4M, Fixed Dst False, 1Mib) | 5.45 | 6.07 | +| Returndatacopy (0.4M, Fixed Dst True, 0Bytes) | 10.82 | 7.07 | +| Returndatacopy (0.4M, Fixed Dst True, 100Bytes) | 9.87 | 7.06 | +| Returndatacopy (0.4M, Fixed Dst True, 10Kib) | 7.04 | 7.09 | +| Returndatacopy (0.4M, Fixed Dst True, 1Mib) | 5.35 | 5.57 | +| Returndatasize Nonzero (0.4M, Returned Size 0, Return Data Style Returndatastyle.Identity) | 10.95 | 7.07 | +| Returndatasize Nonzero (0.4M, Returned Size 0, Return Data Style Returndatastyle.Return) | 10.43 | 7.08 | +| Returndatasize Nonzero (0.4M, Returned Size 0, Return Data Style Returndatastyle.Revert) | 10.72 | 7.06 | +| Returndatasize Nonzero (0.4M, Returned Size 1, Return Data Style Returndatastyle.Identity) | 9.24 | 7.57 | +| Returndatasize Nonzero (0.4M, Returned Size 1, Return Data Style Returndatastyle.Return) | 11.47 | 7.07 | +| Returndatasize Nonzero (0.4M, Returned Size 1, Return Data Style Returndatastyle.Revert) | 11.20 | 7.07 | +| Returndatasize Zero (0.4M) | 11.87 | 7.06 | +| Selfbalance (0.4M) | 37.62 | 18.16 | +| Selfdestruct Created (0.4M, No Value) | 4.91 | 6.58 | +| Selfdestruct Created (0.4M, With Value) | 4.34 | 6.06 | +| Selfdestruct Existing (0.4M, No Value) | 5.31 | 7.08 | +| Selfdestruct Existing (0.4M, With Value) | 5.90 | 6.07 | +| Selfdestruct Initcode (0.4M, No Value) | 4.27 | 5.56 | +| Selfdestruct Initcode (0.4M, With Value) | 3.79 | 5.54 | +| Shifts (0.4M, Shift Right Sar) | 14.16 | 8.59 | +| Shifts (0.4M, Shift Right Shr) | 15.00 | 8.08 | +| Storage Access Cold (0.4M, Absent Slots False, Ssload) | 8.53 | 6.07 | +| Storage Access Cold (0.4M, Absent Slots False, Sstore New Value) | 6.16 | 6.06 | +| Storage Access Cold (0.4M, Absent Slots False, Sstore New Value, Out Of Gas) | 6.75 | 6.06 | +| Storage Access Cold (0.4M, Absent Slots False, Sstore New Value, Revert) | 6.97 | 6.56 | +| Storage Access Cold (0.4M, Absent Slots False, Sstore Same Value) | 8.68 | 6.57 | +| Storage Access Cold (0.4M, Absent Slots False, Sstore Same Value, Out Of Gas) | 7.98 | 6.55 | +| Storage Access Cold (0.4M, Absent Slots False, Sstore Same Value, Revert) | 8.08 | 6.58 | +| Storage Access Cold (0.4M, Absent Slots True, Ssload) | 7.12 | 6.07 | +| Storage Access Cold (0.4M, Absent Slots True, Sstore New Value) | 4.05 | 6.58 | +| Storage Access Cold (0.4M, Absent Slots True, Sstore New Value, Out Of Gas) | 3.94 | 6.55 | +| Storage Access Cold (0.4M, Absent Slots True, Sstore New Value, Revert) | 3.95 | 5.56 | +| Storage Access Cold (0.4M, Absent Slots True, Sstore Same Value) | 4.16 | 5.56 | +| Storage Access Cold (0.4M, Absent Slots True, Sstore Same Value, Out Of Gas) | 4.07 | 6.55 | +| Storage Access Cold (0.4M, Absent Slots True, Sstore Same Value, Revert) | 3.96 | 6.56 | +| Storage Access Warm (0.4M, Sload) | 7.53 | 7.58 | +| Storage Access Warm (0.4M, Sstore New Value) | 12.45 | 8.09 | +| Storage Access Warm (0.4M, Sstore Same Value) | 11.29 | 7.58 | +| Swap (0.4M, Swap1) | 14.03 | 9.62 | +| Swap (0.4M, Swap10) | 14.41 | 10.11 | +| Swap (0.4M, Swap11) | 15.57 | 10.10 | +| Swap (0.4M, Swap12) | 14.27 | 9.60 | +| Swap (0.4M, Swap13) | 14.34 | 10.11 | +| Swap (0.4M, Swap14) | 13.62 | 9.60 | +| Swap (0.4M, Swap15) | 13.67 | 10.09 | +| Swap (0.4M, Swap16) | 13.16 | 9.59 | +| Swap (0.4M, Swap2) | 14.13 | 10.10 | +| Swap (0.4M, Swap3) | 13.58 | 10.59 | +| Swap (0.4M, Swap4) | 13.38 | 10.10 | +| Swap (0.4M, Swap5) | 13.68 | 10.09 | +| Swap (0.4M, Swap6) | 13.89 | 10.11 | +| Swap (0.4M, Swap7) | 14.36 | 10.08 | +| Swap (0.4M, Swap8) | 14.10 | 10.11 | +| Swap (0.4M, Swap9) | 15.85 | 9.59 | +| Tload (0.4M, Val Mut False, Key Mut False) | 4.73 | 6.07 | +| Tload (0.4M, Val Mut False, Key Mut True) | 5.20 | 6.57 | +| Tload (0.4M, Val Mut True, Key Mut False) | 5.01 | 6.06 | +| Tload (0.4M, Val Mut True, Key Mut True) | 5.21 | 6.07 | +| Tstore (0.4M, Dense Val Mut False, Key Mut False) | 8.05 | 7.07 | +| Tstore (0.4M, Dense Val Mut False, Key Mut True) | 8.16 | 7.07 | +| Tstore (0.4M, Dense Val Mut True, Key Mut False) | 13.00 | 7.58 | +| Tstore (0.4M, Dense Val Mut True, Key Mut True) | 12.84 | 7.57 | +| Unop (0.4M, Iszero) | 15.78 | 9.59 | +| Unop (0.4M, Not) | 10.20 | 7.06 | +| Zero Param (0.4M, Address) | 16.61 | 9.59 | +| Zero Param (0.4M, Basefee) | 11.35 | 8.07 | +| Zero Param (0.4M, Blobbasefee) | 13.84 | 8.61 | +| Zero Param (0.4M, Caller) | 16.15 | 9.63 | +| Zero Param (0.4M, Chainid) | 12.50 | 7.57 | +| Zero Param (0.4M, Codesize) | 12.30 | 7.57 | +| Zero Param (0.4M, Coinbase) | 16.09 | 9.59 | +| Zero Param (0.4M, Gas) | 12.57 | 8.08 | +| Zero Param (0.4M, Gaslimit) | 11.56 | 8.58 | +| Zero Param (0.4M, Gasprice) | 12.65 | 8.07 | +| Zero Param (0.4M, Number) | 11.64 | 7.57 | +| Zero Param (0.4M, Origin) | 18.05 | 9.59 | +| Zero Param (0.4M, Prevrandao) | 19.11 | 10.10 | +| Zero Param (0.4M, Timestamp) | 12.24 | 8.08 | \ No newline at end of file diff --git a/www/docs/pages/benchmark-results/gas-categorized/0.4m/risc0-0.4M-4.md b/www/docs/pages/benchmark-results/gas-categorized/0.4m/risc0-0.4M-4.md new file mode 100644 index 00000000..b977c04e --- /dev/null +++ b/www/docs/pages/benchmark-results/gas-categorized/0.4m/risc0-0.4M-4.md @@ -0,0 +1,539 @@ +# zkEVM Benchmark Results + +Generated on: 2026-01-01 15:22:14 + +## Folder: zkevm-metrics-risc0-0.4M-4 + +**zkVM:** risc0-v3.0.3 (4 GPUs) + +**Hardware Configuration:** CPU: AMD EPYC 7B13 64-Core Processor | RAM: 371 GiB | GPU: NVIDIA GeForce RTX 4090, NVIDIA GeForce RTX 4090, NVIDIA GeForce RTX 4090, NVIDIA GeForce RTX 4090 + +## Proving Metrics + +| Benchmark | Gas Used | Proof Size (bytes) | Proving Time (ms) | Proving Time (s) | Peak Memory (MB) | Avg Memory (MB) | Initial Memory (MB) | +|---|---|---|---|---|---|---|---| +| Block Full Access List And Data (0.4M) | 399,990 | 223,239 | 5,095 | 5.09 | 5,732,100 | 5,732,100 | 5,731,124 | +| Block Full Data (0.4M, Non Zero Byte) | 400,000 | 223,239 | 3,950 | 3.95 | 10,786,020 | 10,786,020 | 10,784,068 | +| Block Full Data (0.4M, Zero Byte) | 400,000 | 223,239 | 5,099 | 5.10 | 5,583,752 | 5,583,752 | 5,576,920 | +| Block Full Of Ether Transfers (0.4M, A To A) | 399,000 | 223,239 | 8,532 | 8.53 | 8,459,912 | 8,459,912 | 8,455,032 | +| Block Full Of Ether Transfers (0.4M, A To B) | 399,000 | 223,239 | 9,037 | 9.04 | 6,745,156 | 6,741,809.7 | 6,736,372 | +| Block Full Of Ether Transfers (0.4M, A To Diff Acc) | 399,000 | 223,239 | 9,590 | 9.59 | 4,490,360 | 4,486,130.7 | 4,477,672 | +| Block Full Of Ether Transfers (0.4M, Diff Acc To B) | 399,000 | 223,239 | 9,519 | 9.52 | 10,204,296 | 10,203,645.3 | 10,195,512 | +| Block Full Of Ether Transfers (0.4M, Diff Acc To Diff Acc) | 399,000 | 223,239 | 8,986 | 8.99 | 10,195,516 | 10,194,661.5 | 10,190,636 | +| Bytecode Single Opcode (0.4M, Callcode) | 400,000 | 223,239 | 43,040 | 43.04 | 10,326,060 | 10,296,292 | 10,272,380 | +| Bytecode Single Opcode (0.4M, Call) | 400,000 | 223,239 | 43,614 | 43.61 | 10,607,044 | 10,596,112.8 | 10,573,860 | +| Bytecode Single Opcode (0.4M, Delegatecall) | 400,000 | 223,239 | 44,550 | 44.55 | 5,262,672 | 5,248,422.4 | 5,229,488 | +| Bytecode Single Opcode (0.4M, Extcodecopy) | 400,000 | 223,239 | 41,576 | 41.58 | 7,885,352 | 7,870,268.4 | 7,849,240 | +| Bytecode Single Opcode (0.4M, Extcodehash) | 400,000 | 223,239 | 41,335 | 41.34 | 7,773,120 | 7,748,720 | 7,736,032 | +| Bytecode Single Opcode (0.4M, Extcodesize) | 400,000 | 223,239 | 41,547 | 41.55 | 7,072,112 | 7,036,854 | 6,994,032 | +| Bytecode Single Opcode (0.4M, Staticcall) | 400,000 | 223,239 | 42,252 | 42.25 | 6,708,068 | 6,700,171.3 | 6,691,476 | +| Create (0.4M, 0Bytes, Create2) | 400,000 | 223,239 | 4,599 | 4.60 | 12,276,204 | 12,276,204 | 12,275,228 | +| Create (0.4M, 0Bytes, Create) | 400,000 | 223,239 | 5,166 | 5.17 | 5,196,308 | 5,196,308 | 5,191,428 | +| Create (0.4M, 0Bytes, Create2) | 400,000 | 223,239 | 4,438 | 4.44 | 8,320,776 | 8,318,336 | 8,311,992 | +| Create (0.4M, 0Bytes, Create) | 400,000 | 223,239 | 6,269 | 6.27 | 3,951,608 | 3,951,364 | 3,947,704 | +| Create (0.4M, 0.25X Max Code, Zero Data, Create2) | 400,000 | 223,239 | 5,371 | 5.37 | 2,091,388 | 2,089,761.3 | 2,081,628 | +| Create (0.4M, 0.25X Max Code, Zero Data, Create) | 400,000 | 223,239 | 4,916 | 4.92 | 12,217,484 | 12,217,484 | 12,217,484 | +| Create (0.4M, 0.25X Max Code, Create2) | 400,000 | 223,239 | 5,076 | 5.08 | 9,971,492 | 9,969,766 | 9,966,612 | +| Create (0.4M, 0.25X Max Code, Create) | 400,000 | 223,239 | 5,104 | 5.10 | 6,878,864 | 6,877,107.2 | 6,870,080 | +| Create (0.4M, 0.50X Max Code Size With Non, Zero Data, Create2) | 400,000 | 223,239 | 5,166 | 5.17 | 12,274,936 | 12,274,936 | 12,270,056 | +| Create (0.4M, 0.50X Max Code Size With Non, Zero Data, Create) | 400,000 | 223,239 | 5,062 | 5.06 | 6,390,872 | 6,388,432 | 6,381,112 | +| Create (0.4M, 0.50X Max Code Size With Zero Data, Create2) | 400,000 | 223,239 | 5,972 | 5.97 | 11,658,056 | 11,658,056 | 11,656,104 | +| Create (0.4M, 0.50X Max Code Size With Zero Data, Create) | 400,000 | 223,239 | 5,203 | 5.20 | 4,445,464 | 4,440,584 | 4,433,752 | +| Create (0.4M, 0.75X Max Code Size With Non, Zero Data, Create2) | 400,000 | 223,239 | 5,207 | 5.21 | 5,514,456 | 5,514,456 | 5,511,528 | +| Create (0.4M, 0.75X Max Code Size With Non, Zero Data, Create) | 400,000 | 223,239 | 5,595 | 5.59 | 3,846,204 | 3,844,252 | 3,839,372 | +| Create (0.4M, 0.75X Max Code Size With Zero Data, Create2) | 400,000 | 223,239 | 5,234 | 5.23 | 10,222,840 | 10,221,376 | 10,219,912 | +| Create (0.4M, 0.75X Max Code Size With Zero Data, Create) | 400,000 | 223,239 | 4,666 | 4.67 | 11,431,824 | 11,431,336 | 11,428,896 | +| Create (0.4M, Max Code, Zero Data, Create2) | 400,000 | 223,239 | 5,994 | 5.99 | 3,927,208 | 3,922,718.4 | 3,915,496 | +| Create (0.4M, Max Code, Zero Data, Create) | 400,000 | 223,239 | 5,110 | 5.11 | 8,439,416 | 8,438,765.3 | 8,430,632 | +| Create (0.4M, Max Code, Create2) | 400,000 | 223,239 | 5,729 | 5.73 | 12,069,852 | 12,069,852 | 12,065,948 | +| Create (0.4M, Max Code, Create) | 400,000 | 223,239 | 5,934 | 5.93 | 3,108,368 | 3,107,252.6 | 3,101,536 | +| Creates Collisions (0.4M, Create2) | 400,000 | 223,239 | 5,877 | 5.88 | 3,566,092 | 3,566,092 | 3,565,116 | +| Creates Collisions (0.4M, Create) | 400,000 | 223,239 | 4,651 | 4.65 | 6,643,652 | 6,643,652 | 6,642,676 | +| Initcode Jumpdest Analysis (0.4M, 00) | 400,000 | 223,239 | 7,969 | 7.97 | 757,212 | 752,632.3 | 740,620 | +| Initcode Jumpdest Analysis (0.4M, 5B) | 400,000 | 223,239 | 9,687 | 9.69 | 8,367,020 | 8,359,136.8 | 8,352,004 | +| Initcode Jumpdest Analysis (0.4M, 605B5B) | 400,000 | 223,239 | 8,678 | 8.68 | 11,162,332 | 11,162,332 | 11,162,332 | +| Initcode Jumpdest Analysis (0.4M, 605B) | 400,000 | 223,239 | 7,506 | 7.51 | 5,577,896 | 5,577,896 | 5,569,112 | +| Initcode Jumpdest Analysis (0.4M, 615B5B5B) | 400,000 | 223,239 | 8,552 | 8.55 | 4,902,540 | 4,902,540 | 4,897,660 | +| Initcode Jumpdest Analysis (0.4M, 615B5B) | 400,000 | 223,239 | 7,344 | 7.34 | 4,946,460 | 4,943,141.6 | 4,938,652 | +| Amortized Bn128 Pairings (0.4M) | 400,000 | 223,239 | 33,600 | 33.60 | 6,691,476 | 6,670,447.6 | 6,662,196 | +| Empty Block (0.4M) | 0 | 223,239 | 3,801 | 3.80 | 6,845,684 | 6,838,120 | 6,828,116 | +| Binop Simple (0.4M, Add) | 400,000 | 223,239 | 11,091 | 11.09 | 5,810,180 | 5,810,071.6 | 5,808,228 | +| Binop Simple (0.4M, And) | 400,000 | 223,239 | 10,436 | 10.44 | 8,221,784 | 8,218,438 | 8,216,904 | +| Binop Simple (0.4M, Byte) | 400,000 | 223,239 | 11,683 | 11.68 | 3,644,172 | 3,632,948 | 3,625,628 | +| Binop Simple (0.4M, Div, 0) | 400,000 | 223,239 | 28,051 | 28.05 | 8,389,592 | 8,381,234 | 8,367,020 | +| Binop Simple (0.4M, Div, 1) | 400,000 | 223,239 | 26,578 | 26.58 | 6,637,796 | 6,618,833.7 | 6,606,564 | +| Binop Simple (0.4M, Eq) | 400,000 | 223,239 | 15,286 | 15.29 | 5,731,124 | 5,730,636 | 5,727,220 | +| Binop Simple (0.4M, Exp) | 400,000 | 223,239 | 21,853 | 21.85 | 3,078,116 | 3,063,042.2 | 3,053,716 | +| Binop Simple (0.4M, Gt) | 400,000 | 223,239 | 10,926 | 10.93 | 9,978,736 | 9,975,509.3 | 9,968,040 | +| Binop Simple (0.4M, Lt) | 400,000 | 223,239 | 11,007 | 11.01 | 1,398,436 | 1,391,278.7 | 1,371,108 | +| Binop Simple (0.4M, Mod) | 400,000 | 223,239 | 13,034 | 13.03 | 5,510,556 | 5,508,882.9 | 5,505,676 | +| Binop Simple (0.4M, Mul) | 400,000 | 223,239 | 12,541 | 12.54 | 8,216,348 | 8,214,518 | 8,210,492 | +| Binop Simple (0.4M, Or) | 400,000 | 223,239 | 10,965 | 10.96 | 8,869,172 | 8,869,172 | 8,854,532 | +| Binop Simple (0.4M, Sar) | 400,000 | 223,239 | 15,751 | 15.75 | 10,791,876 | 10,790,656 | 10,786,020 | +| Binop Simple (0.4M, Sdiv, 0) | 400,000 | 223,239 | 31,250 | 31.25 | 8,675,068 | 8,658,298.5 | 8,632,124 | +| Binop Simple (0.4M, Sdiv, 1) | 400,000 | 223,239 | 33,974 | 33.97 | 5,222,660 | 5,219,016.3 | 5,211,924 | +| Binop Simple (0.4M, Sgt) | 400,000 | 223,239 | 14,985 | 14.98 | 7,656,004 | 7,653,184.4 | 7,645,268 | +| Binop Simple (0.4M, Shl) | 400,000 | 223,239 | 13,099 | 13.10 | 12,309,808 | 12,308,506.7 | 12,307,856 | +| Binop Simple (0.4M, Shr) | 400,000 | 223,239 | 14,921 | 14.92 | 9,926,784 | 9,926,458.7 | 9,923,856 | +| Binop Simple (0.4M, Signextend) | 400,000 | 223,239 | 12,384 | 12.38 | 5,614,008 | 5,612,706.7 | 5,605,224 | +| Binop Simple (0.4M, Slt) | 400,000 | 223,239 | 10,554 | 10.55 | 6,896,432 | 6,890,413.3 | 6,880,816 | +| Binop Simple (0.4M, Smod) | 400,000 | 223,239 | 14,591 | 14.59 | 11,171,112 | 11,171,112 | 11,165,256 | +| Binop Simple (0.4M, Sub) | 400,000 | 223,239 | 11,116 | 11.12 | 2,836,072 | 2,833,144 | 2,826,312 | +| Binop Simple (0.4M, Xor) | 400,000 | 223,239 | 11,276 | 11.28 | 5,605,224 | 5,604,108.6 | 5,601,320 | +| Blobhash (0.4M, No Blobs) | 400,000 | 223,239 | 9,896 | 9.90 | 6,860,324 | 6,858,860 | 6,857,396 | +| Blobhash (0.4M, One Blob And Accessed) | 400,000 | 223,239 | 12,089 | 12.09 | 11,239,528 | 11,238,308 | 11,236,600 | +| Blobhash (0.4M, One Blob But Access Non, Existent Index) | 400,000 | 223,239 | 9,405 | 9.40 | 12,373,136 | 12,372,438.9 | 12,368,256 | +| Blobhash (0.4M, Six Blobs, Access Latest) | 400,000 | 223,239 | 13,034 | 13.03 | 10,179,900 | 10,176,972 | 10,174,044 | +| Calldataload (0.4M, Empty) | 400,000 | 223,239 | 15,455 | 15.46 | 1,341,828 | 1,334,245.2 | 1,322,308 | +| Calldataload (0.4M, One, Loop) | 400,000 | 223,239 | 16,760 | 16.76 | 11,973,056 | 11,972,568 | 11,970,128 | +| Calldataload (0.4M, Zero, Loop) | 400,000 | 223,239 | 17,437 | 17.44 | 5,363,196 | 5,362,805.6 | 5,356,364 | +| Calldatasize (0.4M, Calldata Length 0) | 400,000 | 223,239 | 10,059 | 10.06 | 5,970,232 | 5,969,451.2 | 5,969,256 | +| Calldatasize (0.4M, Calldata Length 10000) | 400,000 | 223,239 | 10,985 | 10.98 | 6,122,488 | 6,121,902.4 | 6,118,584 | +| Calldatasize (0.4M, Calldata Length 1000) | 400,000 | 223,239 | 11,261 | 11.26 | 3,129,836 | 3,127,047.4 | 3,123,004 | +| Callvalue (0.4M, From Origin False, Non Zero Value False) | 400,000 | 223,239 | 11,201 | 11.20 | 7,780,928 | 7,777,860.6 | 7,773,120 | +| Callvalue (0.4M, From Origin False, Non Zero Value True) | 400,000 | 223,239 | 11,302 | 11.30 | 3,662,716 | 3,660,568.8 | 3,644,172 | +| Callvalue (0.4M, From Origin True, Non Zero Value False) | 400,000 | 223,239 | 9,990 | 9.99 | 9,918,000 | 9,918,000 | 9,917,024 | +| Callvalue (0.4M, From Origin True, Non Zero Value True) | 400,000 | 223,239 | 11,952 | 11.95 | 5,211,924 | 5,209,362 | 5,204,116 | +| Dup (0.4M, Dup10) | 400,000 | 223,239 | 9,994 | 9.99 | 4,405,448 | 4,404,797.3 | 4,399,592 | +| Dup (0.4M, Dup11) | 400,000 | 223,239 | 9,378 | 9.38 | 5,476,400 | 5,475,586.7 | 5,473,472 | +| Dup (0.4M, Dup12) | 400,000 | 223,239 | 8,788 | 8.79 | 11,165,640 | 11,162,516.8 | 11,153,928 | +| Dup (0.4M, Dup13) | 400,000 | 223,239 | 10,049 | 10.05 | 5,726,244 | 5,725,593.3 | 5,717,460 | +| Dup (0.4M, Dup14) | 400,000 | 223,239 | 9,407 | 9.41 | 7,086,748 | 7,083,982.7 | 7,080,892 | +| Dup (0.4M, Dup15) | 400,000 | 223,239 | 10,656 | 10.66 | 3,180,588 | 3,174,406.7 | 3,164,972 | +| Dup (0.4M, Dup16) | 400,000 | 223,239 | 9,943 | 9.94 | 11,703,928 | 11,698,716.7 | 11,693,192 | +| Dup (0.4M, Dup1) | 400,000 | 223,239 | 10,271 | 10.27 | 2,068,944 | 2,064,342.9 | 2,056,256 | +| Dup (0.4M, Dup2) | 400,000 | 223,239 | 9,640 | 9.64 | 12,308,360 | 12,305,106.7 | 12,294,696 | +| Dup (0.4M, Dup3) | 400,000 | 223,239 | 10,253 | 10.25 | 4,938,652 | 4,934,260 | 4,925,964 | +| Dup (0.4M, Dup4) | 400,000 | 223,239 | 8,732 | 8.73 | 7,802,396 | 7,799,712 | 7,786,780 | +| Dup (0.4M, Dup5) | 400,000 | 223,239 | 8,743 | 8.74 | 8,255,388 | 8,252,216 | 8,244,652 | +| Dup (0.4M, Dup6) | 400,000 | 223,239 | 10,677 | 10.68 | 8,324,680 | 8,324,484.8 | 8,321,752 | +| Dup (0.4M, Dup7) | 400,000 | 223,239 | 11,545 | 11.54 | 6,407,464 | 6,406,000 | 6,403,560 | +| Dup (0.4M, Dup8) | 400,000 | 223,239 | 9,426 | 9.43 | 6,155,668 | 6,155,389.1 | 6,149,812 | +| Dup (0.4M, Dup9) | 400,000 | 223,239 | 8,890 | 8.89 | 7,081,872 | 7,081,872 | 7,073,088 | +| Jumpdests (0.4M) | 400,000 | 223,239 | 10,670 | 10.67 | 551,280 | 536,884 | 510,288 | +| Jumpi Fallthrough (0.4M) | 400,000 | 223,239 | 9,826 | 9.83 | 8,688,732 | 8,682,388 | 8,677,020 | +| Jumpis (0.4M) | 400,000 | 223,239 | 11,399 | 11.40 | 3,947,704 | 3,945,101.3 | 3,940,872 | +| Jumps (0.4M) | 400,000 | 223,239 | 8,171 | 8.17 | 5,632,548 | 5,630,921.3 | 5,626,692 | +| Keccak (0.4M) | 400,000 | 223,239 | 24,580 | 24.58 | 3,527,052 | 3,502,408 | 3,478,252 | +| Memory Access (0.4M, Small Mem, Uninit Offset, Off 0, Mload) | 400,000 | 223,239 | 10,851 | 10.85 | 10,885,056 | 10,880,013.3 | 10,869,440 | +| Memory Access (0.4M, Small Mem, Uninit Offset, Off 0, Mstore8) | 400,000 | 223,239 | 11,239 | 11.24 | 8,244,652 | 8,241,398.7 | 8,237,820 | +| Memory Access (0.4M, Small Mem, Uninit Offset, Off 0, Mstore) | 400,000 | 223,239 | 11,975 | 11.97 | 6,426,980 | 6,426,980 | 6,421,124 | +| Memory Access (0.4M, Small Mem, Uninit Offset, Off 1, Mload) | 400,000 | 223,239 | 11,711 | 11.71 | 1,369,156 | 1,356,565.6 | 1,341,828 | +| Memory Access (0.4M, Small Mem, Uninit Offset, Off 1, Mstore8) | 400,000 | 223,239 | 9,650 | 9.65 | 3,865,724 | 3,860,193.3 | 3,850,108 | +| Memory Access (0.4M, Small Mem, Uninit Offset, Off 1, Mstore) | 400,000 | 223,239 | 11,690 | 11.69 | 10,117,888 | 10,115,545.6 | 10,112,032 | +| Memory Access (0.4M, Small Mem, Uninit Offset, Off 31, Mload) | 400,000 | 223,239 | 11,641 | 11.64 | 1,667,812 | 1,664,396 | 1,657,076 | +| Memory Access (0.4M, Small Mem, Uninit Offset, Off 31, Mstore8) | 400,000 | 223,239 | 12,748 | 12.75 | 2,745,308 | 2,740,288.6 | 2,729,692 | +| Memory Access (0.4M, Small Mem, Uninit Offset, Off 31, Mstore) | 400,000 | 223,239 | 11,557 | 11.56 | 12,272,528 | 12,270,359.1 | 12,266,672 | +| Memory Access (0.4M, Small Mem, Init Offset, Off 0, Mload) | 400,000 | 223,239 | 11,923 | 11.92 | 6,421,124 | 6,420,287.4 | 6,414,292 | +| Memory Access (0.4M, Small Mem, Init Offset, Off 0, Mstore8) | 400,000 | 223,239 | 8,868 | 8.87 | 11,332,504 | 11,332,504 | 11,330,552 | +| Memory Access (0.4M, Small Mem, Init Offset, Off 0, Mstore) | 400,000 | 223,239 | 11,613 | 11.61 | 10,573,860 | 10,569,468 | 10,550,436 | +| Memory Access (0.4M, Small Mem, Init Offset, Off 1, Mload) | 400,000 | 223,239 | 11,497 | 11.50 | 7,658,444 | 7,657,328.6 | 7,653,564 | +| Memory Access (0.4M, Small Mem, Init Offset, Off 1, Mstore8) | 400,000 | 223,239 | 11,084 | 11.08 | 8,274,908 | 8,271,492 | 8,266,124 | +| Memory Access (0.4M, Small Mem, Init Offset, Off 1, Mstore) | 400,000 | 223,239 | 11,507 | 11.51 | 8,230,012 | 8,230,012 | 8,230,012 | +| Memory Access (0.4M, Small Mem, Init Offset, Off 31, Mload) | 400,000 | 223,239 | 12,648 | 12.65 | 6,142,008 | 6,141,357.3 | 6,136,152 | +| Memory Access (0.4M, Small Mem, Init Offset, Off 31, Mstore8) | 400,000 | 223,239 | 12,213 | 12.21 | 835,288 | 824,322.4 | 804,056 | +| Memory Access (0.4M, Small Mem, Init Offset, Off 31, Mstore) | 400,000 | 223,239 | 11,501 | 11.50 | 4,870,024 | 4,869,536 | 4,866,120 | +| Memory Access (0.4M, Big Mem, Uninit Offset, Off 0, Mload) | 400,000 | 223,239 | 12,066 | 12.07 | 5,971,208 | 5,971,208 | 5,971,208 | +| Memory Access (0.4M, Big Mem, Uninit Offset, Off 0, Mstore8) | 400,000 | 223,239 | 11,143 | 11.14 | 5,601,320 | 5,601,320 | 5,592,536 | +| Memory Access (0.4M, Big Mem, Uninit Offset, Off 0, Mstore) | 400,000 | 223,239 | 12,422 | 12.42 | 5,485,184 | 5,480,846.2 | 5,476,400 | +| Memory Access (0.4M, Big Mem, Uninit Offset, Off 1, Mload) | 400,000 | 223,239 | 12,607 | 12.61 | 10,433,944 | 10,426,084.8 | 10,420,460 | +| Memory Access (0.4M, Big Mem, Uninit Offset, Off 1, Mstore8) | 400,000 | 223,239 | 10,508 | 10.51 | 9,966,836 | 9,966,836 | 9,960,980 | +| Memory Access (0.4M, Big Mem, Uninit Offset, Off 1, Mstore) | 400,000 | 223,239 | 11,345 | 11.35 | 6,403,560 | 6,403,141.7 | 6,396,728 | +| Memory Access (0.4M, Big Mem, Uninit Offset, Off 31, Mload) | 400,000 | 223,239 | 11,493 | 11.49 | 6,954,992 | 6,942,629.3 | 6,935,472 | +| Memory Access (0.4M, Big Mem, Uninit Offset, Off 31, Mstore8) | 400,000 | 223,239 | 9,194 | 9.19 | 7,838,504 | 7,838,504 | 7,838,504 | +| Memory Access (0.4M, Big Mem, Uninit Offset, Off 31, Mstore) | 400,000 | 223,239 | 12,448 | 12.45 | 9,928,736 | 9,928,736 | 9,928,736 | +| Memory Access (0.4M, Big Mem, Init Offset, Off 0, Mload) | 400,000 | 223,239 | 12,689 | 12.69 | 2,762,876 | 2,758,794.5 | 2,746,284 | +| Memory Access (0.4M, Big Mem, Init Offset, Off 0, Mstore8) | 400,000 | 223,239 | 10,624 | 10.62 | 10,416,556 | 10,408,910.7 | 10,395,084 | +| Memory Access (0.4M, Big Mem, Init Offset, Off 0, Mstore) | 400,000 | 223,239 | 12,295 | 12.29 | 5,129,940 | 5,128,768.8 | 5,118,228 | +| Memory Access (0.4M, Big Mem, Init Offset, Off 1, Mload) | 400,000 | 223,239 | 11,215 | 11.21 | 6,200,560 | 6,199,305.1 | 6,192,752 | +| Memory Access (0.4M, Big Mem, Init Offset, Off 1, Mstore8) | 400,000 | 223,239 | 10,058 | 10.06 | 8,220,116 | 8,220,116 | 8,211,332 | +| Memory Access (0.4M, Big Mem, Init Offset, Off 1, Mstore) | 400,000 | 223,239 | 11,471 | 11.47 | 10,465,176 | 10,460,784 | 10,455,416 | +| Memory Access (0.4M, Big Mem, Init Offset, Off 31, Mload) | 400,000 | 223,239 | 11,348 | 11.35 | 6,328,412 | 6,327,680 | 6,324,508 | +| Memory Access (0.4M, Big Mem, Init Offset, Off 31, Mstore8) | 400,000 | 223,239 | 11,046 | 11.05 | 4,991,352 | 4,991,352 | 4,985,496 | +| Memory Access (0.4M, Big Mem, Init Offset, Off 31, Mstore) | 400,000 | 223,239 | 12,623 | 12.62 | 5,203,140 | 5,200,944 | 5,197,284 | +| Mod (0.4M, Op Mod, Mod Bits 127) | 400,000 | 223,239 | 28,027 | 28.03 | 5,110,420 | 5,110,420 | 5,103,588 | +| Mod (0.4M, Op Mod, Mod Bits 191) | 400,000 | 223,239 | 32,736 | 32.74 | 8,778,524 | 8,761,513.7 | 8,720,940 | +| Mod (0.4M, Op Mod, Mod Bits 255) | 400,000 | 223,239 | 27,342 | 27.34 | 5,380,760 | 5,380,684.9 | 5,375,880 | +| Mod (0.4M, Op Mod, Mod Bits 63) | 400,000 | 223,239 | 20,359 | 20.36 | 7,786,784 | 7,785,807.6 | 7,780,928 | +| Mod (0.4M, Op Smod, Mod Bits 127) | 400,000 | 223,239 | 28,996 | 29.00 | 6,158,596 | 6,158,205.6 | 6,155,668 | +| Mod (0.4M, Op Smod, Mod Bits 191) | 400,000 | 223,239 | 33,747 | 33.75 | 11,164,432 | 11,161,028.9 | 11,160,364 | +| Mod (0.4M, Op Smod, Mod Bits 255) | 400,000 | 223,239 | 29,524 | 29.52 | 923,128 | 888,495.7 | 836,264 | +| Mod (0.4M, Op Smod, Mod Bits 63) | 400,000 | 223,239 | 23,440 | 23.44 | 4,475,720 | 4,462,462.7 | 4,446,440 | +| Modarith (0.4M, Op Addmod, Mod Bits 127) | 400,000 | 223,239 | 25,073 | 25.07 | 2,826,316 | 2,797,036 | 2,776,540 | +| Modarith (0.4M, Op Addmod, Mod Bits 191) | 400,000 | 223,239 | 28,071 | 28.07 | 11,751,624 | 11,744,418.7 | 11,739,248 | +| Modarith (0.4M, Op Addmod, Mod Bits 255) | 400,000 | 223,239 | 25,319 | 25.32 | 3,624,652 | 3,605,240.4 | 3,581,708 | +| Modarith (0.4M, Op Addmod, Mod Bits 63) | 400,000 | 223,239 | 19,041 | 19.04 | 11,386,880 | 11,377,852 | 11,368,336 | +| Modarith (0.4M, Op Mulmod, Mod Bits 127) | 400,000 | 223,239 | 34,890 | 34.89 | 10,840,544 | 10,829,034.7 | 10,822,096 | +| Modarith (0.4M, Op Mulmod, Mod Bits 191) | 400,000 | 223,239 | 50,020 | 50.02 | 2,707,244 | 2,693,220.4 | 2,655,516 | +| Modarith (0.4M, Op Mulmod, Mod Bits 255) | 400,000 | 223,239 | 44,322 | 44.32 | 11,215,772 | 11,204,869.3 | 11,178,440 | +| Modarith (0.4M, Op Mulmod, Mod Bits 63) | 400,000 | 223,239 | 31,256 | 31.26 | 5,084,068 | 5,083,092 | 5,079,188 | +| Modexp (0.4M, Mod 1045 Gas Base Heavy) | 400,000 | 223,239 | 422,529 | 422.53 | 4,897,352 | 4,887,438.3 | 4,883,688 | +| Modexp (0.4M, Mod 1360 Gas Balanced) | 400,000 | 223,239 | 114,282 | 114.28 | 3,828,636 | 3,769,712.8 | 3,676,380 | +| Modexp (0.4M, Mod 400 Gas Exp Heavy) | 400,000 | N/A | N/A | N/A | N/A | N/A | N/A | +| Modexp (0.4M, Mod 408 Gas Balanced) | 400,000 | 223,239 | 95,437 | 95.44 | 9,138,340 | 9,138,340 | 9,137,364 | +| Modexp (0.4M, Mod 408 Gas Base Heavy) | 400,000 | 223,239 | 370,572 | 370.57 | 9,874,640 | 9,773,728.8 | 9,688,564 | +| Modexp (0.4M, Mod 600 As Balanced) | 400,000 | 223,239 | 101,332 | 101.33 | 663,520 | 625,180.3 | 553,232 | +| Modexp (0.4M, Mod 600 Gas Exp Heavy) | 400,000 | 223,239 | 150,624 | 150.62 | 1,233,492 | 1,200,564.8 | 1,149,556 | +| Modexp (0.4M, Mod 616 Gas Base Heavy) | 400,000 | 223,239 | 411,293 | 411.29 | 4,760,712 | 4,653,029.3 | 4,492,312 | +| Modexp (0.4M, Mod 677 Gas Base Heavy) | 400,000 | 223,239 | 102,291 | 102.29 | 9,136,388 | 9,081,300.3 | 9,016,340 | +| Modexp (0.4M, Mod 765 Gas Exp Heavy) | 400,000 | 223,239 | 123,163 | 123.16 | 5,450,052 | 5,440,928.5 | 5,420,772 | +| Modexp (0.4M, Mod 767 Gas Balanced) | 400,000 | 223,239 | 91,842 | 91.84 | 7,716,512 | 7,701,196.3 | 7,677,472 | +| Modexp (0.4M, Mod 800 Gas Base Heavy) | 400,000 | 223,239 | 416,983 | 416.98 | 5,969,256 | 5,916,459.4 | 5,833,592 | +| Modexp (0.4M, Mod 800 Gas Exp Heavy) | 400,000 | 223,239 | 149,884 | 149.88 | 12,142,416 | 12,112,253.4 | 12,089,228 | +| Modexp (0.4M, Mod 852 Gas Exp Heavy) | 400,000 | 223,239 | 148,134 | 148.13 | 12,227,024 | 12,204,179.4 | 12,179,384 | +| Modexp (0.4M, Mod 867 Gas Base Heavy) | 400,000 | 223,239 | 419,428 | 419.43 | 6,112,728 | 6,027,200.1 | 5,984,872 | +| Modexp (0.4M, Mod 996 Gas Balanced) | 400,000 | 223,239 | 94,950 | 94.95 | 11,370,652 | 11,352,030.2 | 11,333,480 | +| Modexp (0.4M, Mod Even 1024B Exp 1024) | 400,000 | 223,239 | 5,895 | 5.89 | 4,398,616 | 4,394,874.7 | 4,388,856 | +| Modexp (0.4M, Mod Even 128B Exp 1024) | 400,000 | 223,239 | 82,960 | 82.96 | 6,501,156 | 6,495,439.4 | 6,483,588 | +| Modexp (0.4M, Mod Even 16B Exp 320) | 400,000 | N/A | N/A | N/A | N/A | N/A | N/A | +| Modexp (0.4M, Mod Even 24B Exp 168) | 400,000 | 223,239 | 114,107 | 114.11 | 12,387,672 | 12,351,531.7 | 12,310,784 | +| Modexp (0.4M, Mod Even 256B Exp 1024) | 400,000 | 223,239 | 79,079 | 79.08 | 10,528,036 | 10,486,794.4 | 10,466,152 | +| Modexp (0.4M, Mod Even 32B Exp 256) | 400,000 | 223,239 | 117,703 | 117.70 | 4,388,856 | 4,353,394.7 | 4,331,272 | +| Modexp (0.4M, Mod Even 32B Exp 40) | 400,000 | 223,239 | 95,828 | 95.83 | 2,980,520 | 2,905,295.7 | 2,842,904 | +| Modexp (0.4M, Mod Even 32B Exp 96) | 400,000 | 223,239 | 105,169 | 105.17 | 11,309,580 | 11,282,692.7 | 11,240,504 | +| Modexp (0.4M, Mod Even 512B Exp 1024) | 400,000 | 223,239 | 4,825 | 4.83 | 5,393,448 | 5,393,448 | 5,390,520 | +| Modexp (0.4M, Mod Even 64B Exp 512) | 400,000 | 223,239 | 101,648 | 101.65 | 1,148,580 | 1,079,656.3 | 957,284 | +| Modexp (0.4M, Mod Even 8B Exp 896) | 400,000 | 223,239 | 235,641 | 235.64 | 11,662,200 | 11,611,689.3 | 11,558,208 | +| Modexp (0.4M, Mod Exp 208 Gas Balanced) | 400,000 | 223,239 | 90,876 | 90.88 | 6,189,828 | 6,176,359.1 | 6,164,452 | +| Modexp (0.4M, Mod Exp 215 Gas Exp Heavy) | 400,000 | 223,239 | 204,130 | 204.13 | 12,273,080 | 12,242,006.0 | 12,218,460 | +| Modexp (0.4M, Mod Exp 298 Gas Exp Heavy) | 400,000 | 223,239 | 237,531 | 237.53 | 5,356,368 | 5,333,920 | 5,294,880 | +| Modexp (0.4M, Mod Min As Balanced) | 400,000 | 223,239 | 91,429 | 91.43 | 8,211,332 | 8,140,432.6 | 8,104,948 | +| Modexp (0.4M, Mod Min As Base Heavy) | 400,000 | 223,239 | 302,274 | 302.27 | 11,971,104 | 11,916,792.5 | 11,895,376 | +| Modexp (0.4M, Mod Min As Exp Heavy) | 400,000 | 223,239 | 221,263 | 221.26 | 2,429,084 | 2,341,648.7 | 2,108,956 | +| Modexp (0.4M, Mod Odd 1024B Exp 1024) | 400,000 | 223,239 | 5,149 | 5.15 | 697,680 | 692,199.4 | 679,136 | +| Modexp (0.4M, Mod Odd 128B Exp 1024) | 400,000 | 223,239 | 86,690 | 86.69 | 5,470,544 | 5,463,561.8 | 5,456,880 | +| Modexp (0.4M, Mod Odd 256B Exp 1024) | 400,000 | 223,239 | 82,484 | 82.48 | 5,026,484 | 5,024,744.2 | 5,016,724 | +| Modexp (0.4M, Mod Odd 32B Exp 256) | 400,000 | 223,239 | 110,659 | 110.66 | 9,595,748 | 9,573,021.1 | 9,550,852 | +| Modexp (0.4M, Mod Odd 32B Exp 96) | 400,000 | N/A | N/A | N/A | N/A | N/A | N/A | +| Modexp (0.4M, Mod Odd 32B Exp Cover Windows) | 400,000 | 223,239 | 85,435 | 85.44 | 1,622,916 | 1,556,363.8 | 1,442,356 | +| Modexp (0.4M, Mod Odd 512B Exp 1024) | 400,000 | 223,239 | 4,694 | 4.69 | 3,475,324 | 3,473,046.7 | 3,469,468 | +| Modexp (0.4M, Mod Odd 64B Exp 512) | 400,000 | 223,239 | 96,606 | 96.61 | 10,686,188 | 10,650,879.5 | 10,608,020 | +| Modexp (0.4M, Mod Pawel 2) | 400,000 | 223,239 | 136,055 | 136.06 | 11,330,096 | 11,323,323.2 | 11,306,036 | +| Modexp (0.4M, Mod Pawel 3) | 400,000 | 223,239 | 109,911 | 109.91 | 9,623,180 | 9,608,145.5 | 9,595,960 | +| Modexp (0.4M, Mod Pawel 4) | 400,000 | 223,239 | 100,253 | 100.25 | 9,013,412 | 8,961,170.1 | 8,885,760 | +| Modexp (0.4M, Mod Vul Common 1152N1) | 400,000 | 223,239 | 63,342 | 63.34 | 9,934,868 | 9,932,826.1 | 9,928,736 | +| Modexp (0.4M, Mod Vul Common 1349N1) | 400,000 | 223,239 | 86,151 | 86.15 | 7,343,196 | 7,287,307.2 | 7,263,164 | +| Modexp (0.4M, Mod Vul Common 1360N1) | 400,000 | 223,239 | 100,096 | 100.10 | 5,557,400 | 5,531,954.3 | 5,524,216 | +| Modexp (0.4M, Mod Vul Common 1360N2) | 400,000 | 223,239 | 85,572 | 85.57 | 7,961,480 | 7,929,125.6 | 7,886,328 | +| Modexp (0.4M, Mod Vul Common 200N1) | 400,000 | 223,239 | 50,461 | 50.46 | 10,160,380 | 10,136,841.3 | 10,130,572 | +| Modexp (0.4M, Mod Vul Common 200N2) | 400,000 | 223,239 | 65,183 | 65.18 | 9,997,280 | 9,987,194.7 | 9,978,736 | +| Modexp (0.4M, Mod Vul Common 200N3) | 400,000 | 223,239 | 66,139 | 66.14 | 1,829,828 | 1,768,312.1 | 1,695,140 | +| Modexp (0.4M, Mod Vul Example 1) | 400,000 | 223,239 | 115,058 | 115.06 | 5,662,804 | 5,646,428.9 | 5,632,548 | +| Modexp (0.4M, Mod Vul Example 2) | 400,000 | 223,239 | 108,301 | 108.30 | 5,761,380 | 5,741,409.5 | 5,732,100 | +| Modexp (0.4M, Mod Vul Guido 1 Even) | 400,000 | 223,239 | 73,633 | 73.63 | 12,438,244 | 12,407,301.9 | 12,380,944 | +| Modexp (0.4M, Mod Vul Guido 2 Even) | 400,000 | 223,239 | 132,283 | 132.28 | 12,062,044 | 11,995,348 | 11,984,092 | +| Modexp (0.4M, Mod Vul Guido 3 Even) | 400,000 | 223,239 | 202,495 | 202.50 | 5,069,428 | 5,057,373.5 | 5,029,412 | +| Modexp (0.4M, Mod Vul Marius 1 Even) | 400,000 | 223,239 | 121,811 | 121.81 | 3,455,812 | 3,411,560.9 | 3,342,596 | +| Modexp (0.4M, Mod Vul Nagydani 1 Pow 0X10001) | 400,000 | 223,239 | 78,181 | 78.18 | 7,254,380 | 7,180,655.2 | 7,086,748 | +| Modexp (0.4M, Mod Vul Nagydani 1 Qube) | 400,000 | 223,239 | 63,724 | 63.72 | 1,992,816 | 1,939,563 | 1,888,384 | +| Modexp (0.4M, Mod Vul Nagydani 1 Square) | 400,000 | 223,239 | 57,873 | 57.87 | 11,734,368 | 11,725,246.5 | 11,715,020 | +| Modexp (0.4M, Mod Vul Nagydani 2 Pow 0X10001) | 400,000 | 223,239 | 80,706 | 80.71 | 10,783,092 | 10,724,928.6 | 10,685,244 | +| Modexp (0.4M, Mod Vul Nagydani 2 Qube) | 400,000 | 223,239 | 180,015 | 180.01 | 4,985,500 | 4,971,084 | 4,946,460 | +| Modexp (0.4M, Mod Vul Nagydani 2 Square) | 400,000 | 223,239 | 157,676 | 157.68 | 11,837,364 | 11,787,677.5 | 11,754,740 | +| Modexp (0.4M, Mod Vul Nagydani 3 Pow 0X10001) | 400,000 | 223,239 | 80,082 | 80.08 | 5,294,880 | 5,284,027.8 | 5,263,648 | +| Modexp (0.4M, Mod Vul Nagydani 3 Qube) | 400,000 | 223,239 | 405,396 | 405.40 | 9,512,276 | 9,424,763.7 | 9,301,212 | +| Modexp (0.4M, Mod Vul Nagydani 3 Square) | 400,000 | 223,239 | 391,549 | 391.55 | 4,311,752 | 4,157,274.3 | 3,954,536 | +| Modexp (0.4M, Mod Vul Nagydani 4 Pow 0X10001) | 400,000 | 223,239 | 71,602 | 71.60 | 10,112,032 | 10,098,981.7 | 10,079,416 | +| Modexp (0.4M, Mod Vul Nagydani 4 Qube) | 400,000 | N/A | N/A | N/A | N/A | N/A | N/A | +| Modexp (0.4M, Mod Vul Nagydani 4 Square) | 400,000 | 223,239 | 409,544 | 409.54 | 11,146,352 | 11,031,310.9 | 10,927,528 | +| Modexp (0.4M, Mod Vul Nagydani 5 Pow 0X10001) | 400,000 | 223,239 | 53,146 | 53.15 | 10,371,712 | 10,352,745.6 | 10,327,036 | +| Modexp (0.4M, Mod Vul Nagydani 5 Qube) | 400,000 | 223,239 | 461,110 | 461.11 | 4,865,144 | 4,821,696.3 | 4,776,328 | +| Modexp (0.4M, Mod Vul Nagydani 5 Square) | 400,000 | 223,239 | 393,688 | 393.69 | 7,647,708 | 7,531,548.5 | 7,355,884 | +| Modexp (0.4M, Mod Vul Pawel 1 Exp Heavy) | 400,000 | 223,239 | 210,252 | 210.25 | 11,557,836 | 11,480,255.2 | 11,445,488 | +| Modexp (0.4M, Mod Vul Pawel 2 Exp Heavy) | 400,000 | 223,239 | 136,712 | 136.71 | 2,655,516 | 2,580,656.8 | 2,491,548 | +| Modexp (0.4M, Mod Vul Pawel 3 Exp Heavy) | 400,000 | 223,239 | 105,662 | 105.66 | 10,043,852 | 10,031,917.4 | 10,012,620 | +| Modexp (0.4M, Mod Vul Pawel 4 Exp Heavy) | 400,000 | 223,239 | 99,859 | 99.86 | 6,382,092 | 6,362,905.9 | 6,331,340 | +| Msize (0.4M, Mem Size 0) | 400,000 | 223,239 | 12,215 | 12.21 | 7,260,236 | 7,258,005.1 | 7,255,356 | +| Msize (0.4M, Mem Size 1000000) | 400,000 | 223,239 | 12,845 | 12.85 | 5,626,696 | 5,621,676.6 | 5,614,984 | +| Msize (0.4M, Mem Size 100000) | 400,000 | 223,239 | 10,492 | 10.49 | 6,118,584 | 6,118,258.7 | 6,113,704 | +| Msize (0.4M, Mem Size 1000) | 400,000 | 223,239 | 11,573 | 11.57 | 8,796,948 | 8,785,661.3 | 8,780,476 | +| Msize (0.4M, Mem Size 1) | 400,000 | 223,239 | 12,934 | 12.93 | 4,996,232 | 4,994,280 | 4,990,376 | +| Precompile Fixed Cost (0.4M, Blake2F) | 400,000 | 223,239 | 92,206 | 92.21 | 3,343,576 | 3,294,689.9 | 3,232,312 | +| Precompile Fixed Cost (0.4M, Bls12 Fp To G1) | 400,000 | 223,239 | 16,926 | 16.93 | 6,465,044 | 6,465,044 | 6,460,164 | +| Precompile Fixed Cost (0.4M, Bls12 Fp To G2) | 400,000 | 223,239 | 14,469 | 14.47 | 5,415,896 | 5,407,014.4 | 5,400,280 | +| Precompile Fixed Cost (0.4M, Bls12 G1Add) | 400,000 | 223,239 | 14,576 | 14.58 | 11,707,796 | 11,703,669.1 | 11,698,036 | +| Precompile Fixed Cost (0.4M, Bls12 G1Msm) | 400,000 | 223,239 | 4,941 | 4.94 | 10,069,656 | 10,069,656 | 10,067,704 | +| Precompile Fixed Cost (0.4M, Bls12 G2Add) | 400,000 | 223,239 | 15,212 | 15.21 | 5,815,060 | 5,814,920.6 | 5,809,204 | +| Precompile Fixed Cost (0.4M, Bls12 G2Msm) | 400,000 | 223,239 | 5,238 | 5.24 | 5,505,676 | 5,503,480 | 5,496,892 | +| Precompile Fixed Cost (0.4M, Bls12 Pairing Check) | 400,000 | 223,239 | 21,277 | 21.28 | 5,229,492 | 5,227,628.4 | 5,222,660 | +| Precompile Fixed Cost (0.4M, Bn128 Add) | 400,000 | 223,239 | 17,045 | 17.05 | 1,269,604 | 1,260,754.9 | 1,249,108 | +| Precompile Fixed Cost (0.4M, Bn128 Add 1 2) | 400,000 | 223,239 | 16,718 | 16.72 | 9,955,124 | 9,949,658.4 | 9,944,388 | +| Precompile Fixed Cost (0.4M, Bn128 Add Infinities) | 400,000 | 223,239 | 12,978 | 12.98 | 2,994,184 | 2,988,572 | 2,981,496 | +| Precompile Fixed Cost (0.4M, Bn128 Mul) | 400,000 | 223,239 | 36,553 | 36.55 | 8,015,160 | 8,015,160 | 7,961,480 | +| Precompile Fixed Cost (0.4M, Bn128 Mul 1 2 2 Scalar) | 400,000 | 223,239 | 6,015 | 6.01 | 2,492,524 | 2,491,792 | 2,489,596 | +| Precompile Fixed Cost (0.4M, Bn128 Mul 1 2 32 Byte Scalar) | 400,000 | 223,239 | 36,341 | 36.34 | 8,049,320 | 8,036,892 | 8,015,160 | +| Precompile Fixed Cost (0.4M, Bn128 Mul 32 Byte Coord And 2 Scalar) | 400,000 | 223,239 | 4,991 | 4.99 | 12,276,888 | 12,276,887 | 12,276,888 | +| Precompile Fixed Cost (0.4M, Bn128 Mul 32 Byte Coord And Scalar) | 400,000 | 223,239 | 36,294 | 36.29 | 8,854,532 | 8,848,188 | 8,829,156 | +| Precompile Fixed Cost (0.4M, Bn128 Mul Infinities 2 Scalar) | 400,000 | 223,239 | 6,818 | 6.82 | 9,529,840 | 9,524,179.2 | 9,516,176 | +| Precompile Fixed Cost (0.4M, Bn128 Mul Infinities 32 Byte Scalar) | 400,000 | 223,239 | 26,135 | 26.14 | 12,160,960 | 12,158,419.6 | 12,144,368 | +| Precompile Fixed Cost (0.4M, Bn128 One Pairing) | 400,000 | N/A | N/A | N/A | N/A | N/A | N/A | +| Precompile Fixed Cost (0.4M, Bn128 Two Pairings) | 400,000 | 223,239 | 36,265 | 36.27 | 9,943,412 | 9,941,460 | 9,938,532 | +| Precompile Fixed Cost (0.4M, Bn128 Two Pairings Empty) | 400,000 | 223,239 | 5,030 | 5.03 | 7,844,360 | 7,842,798.4 | 7,839,480 | +| Precompile Fixed Cost (0.4M, Ecrecover) | 400,000 | 223,239 | 37,354 | 37.35 | 8,093,236 | 8,069,767.6 | 8,049,316 | +| Precompile Fixed Cost (0.4M, Point Evaluation) | 400,000 | 223,239 | 39,174 | 39.17 | 4,776,328 | 4,772,424 | 4,768,520 | +| Precompile Only Data Input (0.4M, Identity) | 400,000 | 223,239 | 8,901 | 8.90 | 9,917,024 | 9,917,024 | 9,917,024 | +| Precompile Only Data Input (0.4M, Ripemd, 160) | 400,000 | 223,239 | 6,817 | 6.82 | 4,319,560 | 4,318,909.3 | 4,312,728 | +| Precompile Only Data Input (0.4M, Sha2, 256) | 400,000 | 223,239 | 6,356 | 6.36 | 6,305,968 | 6,300,112 | 6,297,184 | +| Push (0.4M, Push0) | 400,000 | 223,239 | 11,312 | 11.31 | 1,633,652 | 1,631,839.4 | 1,622,916 | +| Push (0.4M, Push10) | 400,000 | 223,239 | 11,484 | 11.48 | 3,097,632 | 3,092,752 | 3,082,016 | +| Push (0.4M, Push11) | 400,000 | 223,239 | 12,118 | 12.12 | 2,055,280 | 2,046,658.7 | 2,033,808 | +| Push (0.4M, Push12) | 400,000 | 223,239 | 12,652 | 12.65 | 2,775,564 | 2,771,497.3 | 2,762,876 | +| Push (0.4M, Push13) | 400,000 | 223,239 | 11,602 | 11.60 | 3,017,608 | 3,016,436.8 | 3,000,040 | +| Push (0.4M, Push14) | 400,000 | 223,239 | 12,746 | 12.75 | 3,164,972 | 3,159,952.6 | 3,147,404 | +| Push (0.4M, Push15) | 400,000 | 223,239 | 12,040 | 12.04 | 5,015,748 | 5,015,138 | 5,006,964 | +| Push (0.4M, Push16) | 400,000 | 223,239 | 11,425 | 11.43 | 12,269,080 | 12,269,080 | 12,269,080 | +| Push (0.4M, Push17) | 400,000 | 223,239 | 12,241 | 12.24 | 5,523,240 | 5,517,506 | 5,514,456 | +| Push (0.4M, Push18) | 400,000 | 223,239 | 13,284 | 13.28 | 12,089,228 | 12,083,113.7 | 12,072,780 | +| Push (0.4M, Push19) | 400,000 | 223,239 | 13,273 | 13.27 | 804,056 | 784,330.5 | 758,184 | +| Push (0.4M, Push1) | 400,000 | 223,239 | 10,099 | 10.10 | 4,415,208 | 4,411,499.2 | 4,407,400 | +| Push (0.4M, Push20) | 400,000 | 223,239 | 13,257 | 13.26 | 1,249,108 | 1,244,437.1 | 1,232,516 | +| Push (0.4M, Push21) | 400,000 | 223,239 | 12,975 | 12.97 | 10,902,260 | 10,902,016 | 10,901,284 | +| Push (0.4M, Push22) | 400,000 | 223,239 | 12,336 | 12.34 | 9,286,572 | 9,284,010 | 9,277,788 | +| Push (0.4M, Push23) | 400,000 | 223,239 | 13,561 | 13.56 | 6,148,836 | 6,147,534.7 | 6,143,956 | +| Push (0.4M, Push24) | 400,000 | 223,239 | 12,455 | 12.46 | 5,557,400 | 5,557,400 | 5,557,400 | +| Push (0.4M, Push25) | 400,000 | 223,239 | 12,633 | 12.63 | 7,821,916 | 7,820,452 | 7,803,372 | +| Push (0.4M, Push26) | 400,000 | 223,239 | 13,254 | 13.25 | 1,692,212 | 1,677,711.4 | 1,667,812 | +| Push (0.4M, Push27) | 400,000 | 223,239 | 14,114 | 14.11 | 1,884,480 | 1,877,105.8 | 1,863,984 | +| Push (0.4M, Push28) | 400,000 | 223,239 | 14,471 | 14.47 | 3,551,452 | 3,540,390.7 | 3,527,052 | +| Push (0.4M, Push29) | 400,000 | 223,239 | 13,991 | 13.99 | 725,980 | 716,141.9 | 696,700 | +| Push (0.4M, Push2) | 400,000 | 223,239 | 9,638 | 9.64 | 3,049,812 | 3,039,808 | 3,031,268 | +| Push (0.4M, Push30) | 400,000 | 223,239 | 14,770 | 14.77 | 1,298,884 | 1,288,033.2 | 1,270,580 | +| Push (0.4M, Push31) | 400,000 | 223,239 | 15,278 | 15.28 | 679,136 | 672,304 | 663,520 | +| Push (0.4M, Push32) | 400,000 | 223,239 | 13,505 | 13.51 | 9,676,852 | 9,675,039.4 | 9,671,972 | +| Push (0.4M, Push3) | 400,000 | 223,239 | 11,668 | 11.67 | 10,915,732 | 10,913,129.3 | 10,903,044 | +| Push (0.4M, Push4) | 400,000 | 223,239 | 10,282 | 10.28 | 11,165,256 | 11,163,629.3 | 11,161,352 | +| Push (0.4M, Push5) | 400,000 | 223,239 | 10,930 | 10.93 | 11,425,968 | 11,421,628.8 | 11,412,880 | +| Push (0.4M, Push6) | 400,000 | 223,239 | 12,421 | 12.42 | 5,383,688 | 5,382,956 | 5,381,736 | +| Push (0.4M, Push7) | 400,000 | 223,239 | 11,262 | 11.26 | 7,676,496 | 7,673,812 | 7,671,616 | +| Push (0.4M, Push8) | 400,000 | 223,239 | 11,713 | 11.71 | 957,288 | 944,321.1 | 923,128 | +| Push (0.4M, Push9) | 400,000 | 223,239 | 10,878 | 10.88 | 8,828,180 | 8,824,415.4 | 8,816,468 | +| Return Revert (0.4M, 1Kib Of Non, Zero Data, Return) | 400,000 | 223,239 | 13,973 | 13.97 | 11,667,080 | 11,662,549.7 | 11,663,176 | +| Return Revert (0.4M, 1Kib Of Non, Zero Data, Revert) | 400,000 | 223,239 | 12,756 | 12.76 | 9,301,212 | 9,298,392.4 | 9,293,404 | +| Return Revert (0.4M, 1Kib Of Zero Data, Return) | 400,000 | 223,239 | 13,059 | 13.06 | 5,400,280 | 5,400,280 | 5,395,400 | +| Return Revert (0.4M, 1Kib Of Zero Data, Revert) | 400,000 | 223,239 | 14,417 | 14.42 | 5,370,028 | 5,370,028 | 5,365,148 | +| Return Revert (0.4M, 1Mib Of Non, Zero Data, Return) | 400,000 | 223,239 | 4,648 | 4.65 | 4,330,296 | 4,330,296 | 4,320,536 | +| Return Revert (0.4M, 1Mib Of Non, Zero Data, Revert) | 400,000 | 223,239 | 5,252 | 5.25 | 12,179,384 | 12,177,432 | 12,173,528 | +| Return Revert (0.4M, 1Mib Of Zero Data, Return) | 400,000 | 223,239 | 4,542 | 4.54 | 6,432,836 | 6,432,836 | 6,429,908 | +| Return Revert (0.4M, 1Mib Of Zero Data, Revert) | 400,000 | 223,239 | 3,985 | 3.98 | 8,814,516 | 8,802,804 | 8,796,948 | +| Return Revert (0.4M, Empty, Return) | 400,000 | 223,239 | 13,959 | 13.96 | 6,936,448 | 6,915,812.6 | 6,896,432 | +| Return Revert (0.4M, Empty, Revert) | 400,000 | 223,239 | 17,564 | 17.56 | 5,183,620 | 5,181,559.6 | 5,180,692 | +| Returndatasize Nonzero (0.4M, Returned Size 0, Return Data Style Returndatastyle.Identity) | 400,000 | 223,239 | 10,947 | 10.95 | 11,879,636 | 11,879,453.2 | 11,877,684 | +| Returndatasize Nonzero (0.4M, Returned Size 0, Return Data Style Returndatastyle.Return) | 400,000 | 223,239 | 10,434 | 10.43 | 5,592,536 | 5,591,141.7 | 5,586,680 | +| Returndatasize Nonzero (0.4M, Returned Size 0, Return Data Style Returndatastyle.Revert) | 400,000 | 223,239 | 10,717 | 10.72 | 11,329,112 | 11,329,112 | 11,329,112 | +| Returndatasize Nonzero (0.4M, Returned Size 1, Return Data Style Returndatastyle.Identity) | 400,000 | 223,239 | 9,237 | 9.24 | 9,643,672 | 9,643,550 | 9,637,816 | +| Returndatasize Nonzero (0.4M, Returned Size 1, Return Data Style Returndatastyle.Return) | 400,000 | 223,239 | 11,466 | 11.47 | 6,413,320 | 6,412,148 | 6,408,440 | +| Returndatasize Nonzero (0.4M, Returned Size 1, Return Data Style Returndatastyle.Revert) | 400,000 | 223,239 | 11,204 | 11.20 | 6,449,428 | 6,444,304 | 6,435,764 | +| Returndatasize Zero (0.4M) | 400,000 | 223,239 | 11,865 | 11.87 | 11,690,264 | 11,685,140 | 11,673,672 | +| Shifts (0.4M, Shift Right Sar) | 400,000 | 223,239 | 14,159 | 14.16 | 10,901,284 | 10,890,651 | 10,884,076 | +| Shifts (0.4M, Shift Right Shr) | 400,000 | 223,239 | 15,002 | 15.00 | 3,146,428 | 3,142,090.2 | 3,130,812 | +| Swap (0.4M, Swap10) | 400,000 | 223,239 | 14,414 | 14.41 | 3,111,292 | 3,111,292 | 3,108,364 | +| Swap (0.4M, Swap11) | 400,000 | 223,239 | 15,567 | 15.57 | 2,007,456 | 2,001,383.1 | 1,992,816 | +| Swap (0.4M, Swap12) | 400,000 | 223,239 | 14,265 | 14.27 | 3,911,592 | 3,900,205.3 | 3,884,264 | +| Swap (0.4M, Swap13) | 400,000 | 223,239 | 14,343 | 14.34 | 5,372,952 | 5,372,952 | 5,371,000 | +| Swap (0.4M, Swap14) | 400,000 | 223,239 | 13,625 | 13.62 | 11,403,124 | 11,398,143.1 | 11,387,856 | +| Swap (0.4M, Swap15) | 400,000 | 223,239 | 13,668 | 13.67 | 2,459,340 | 2,456,272.6 | 2,443,724 | +| Swap (0.4M, Swap16) | 400,000 | 223,239 | 13,161 | 13.16 | 8,303,212 | 8,286,864 | 8,277,836 | +| Swap (0.4M, Swap1) | 400,000 | 223,239 | 14,025 | 14.03 | 5,569,112 | 5,567,376.9 | 5,562,280 | +| Swap (0.4M, Swap2) | 400,000 | 223,239 | 14,127 | 14.13 | 12,376,484 | 12,376,484 | 12,372,580 | +| Swap (0.4M, Swap3) | 400,000 | 223,239 | 13,582 | 13.58 | 8,407,160 | 8,400,328 | 8,389,592 | +| Swap (0.4M, Swap4) | 400,000 | 223,239 | 13,376 | 13.38 | 11,335,944 | 11,334,683.4 | 11,330,088 | +| Swap (0.4M, Swap5) | 400,000 | 223,239 | 13,676 | 13.68 | 11,880,308 | 11,867,175.6 | 11,858,076 | +| Swap (0.4M, Swap6) | 400,000 | 223,239 | 13,887 | 13.89 | 11,141,724 | 11,137,409 | 11,138,796 | +| Swap (0.4M, Swap7) | 400,000 | 223,239 | 14,355 | 14.36 | 11,208,924 | 11,204,840 | 11,208,924 | +| Swap (0.4M, Swap8) | 400,000 | 223,239 | 14,098 | 14.10 | 10,255,048 | 10,242,360 | 10,224,792 | +| Swap (0.4M, Swap9) | 400,000 | 223,239 | 15,845 | 15.85 | 11,673,672 | 11,670,158.4 | 11,658,056 | +| Tload (0.4M, Val Mut False, Key Mut False) | 400,000 | 223,239 | 4,727 | 4.73 | 11,754,740 | 11,754,154.4 | 11,751,812 | +| Tload (0.4M, Val Mut False, Key Mut True) | 400,000 | 223,239 | 5,199 | 5.20 | 6,857,396 | 6,854,793.3 | 6,848,612 | +| Tload (0.4M, Val Mut True, Key Mut False) | 400,000 | 223,239 | 5,012 | 5.01 | 11,407,024 | 11,407,024 | 11,402,144 | +| Tload (0.4M, Val Mut True, Key Mut True) | 400,000 | 223,239 | 5,206 | 5.21 | 6,316,700 | 6,315,724 | 6,311,820 | +| Tstore (0.4M, Dense Val Mut False, Key Mut False) | 400,000 | 223,239 | 8,050 | 8.05 | 8,886,740 | 8,884,788 | 8,878,932 | +| Tstore (0.4M, Dense Val Mut False, Key Mut True) | 400,000 | 223,239 | 8,160 | 8.16 | 11,875,552 | 11,875,552 | 11,870,672 | +| Tstore (0.4M, Dense Val Mut True, Key Mut False) | 400,000 | 223,239 | 13,002 | 13.00 | 5,104,564 | 5,104,455.6 | 5,100,660 | +| Tstore (0.4M, Dense Val Mut True, Key Mut True) | 400,000 | 223,239 | 12,836 | 12.84 | 3,936,968 | 3,936,968 | 3,935,016 | +| Unop (0.4M, Iszero) | 400,000 | 223,239 | 15,780 | 15.78 | 1,440,404 | 1,420,465.7 | 1,397,460 | +| Unop (0.4M, Not) | 400,000 | 223,239 | 10,200 | 10.20 | 5,822,864 | 5,820,326.4 | 5,814,080 | +| Zero Param (0.4M, Address) | 400,000 | 223,239 | 16,605 | 16.61 | 5,420,776 | 5,419,691.6 | 5,415,896 | +| Zero Param (0.4M, Basefee) | 400,000 | 223,239 | 11,354 | 11.35 | 7,838,504 | 7,832,648 | 7,827,768 | +| Zero Param (0.4M, Blobbasefee) | 400,000 | 223,239 | 13,839 | 13.84 | 10,453,464 | 10,449,560 | 10,435,896 | +| Zero Param (0.4M, Caller) | 400,000 | 223,239 | 16,152 | 16.15 | 10,395,084 | 10,387,926.7 | 10,371,660 | +| Zero Param (0.4M, Chainid) | 400,000 | 223,239 | 12,497 | 12.50 | 8,470,648 | 8,470,648 | 8,459,912 | +| Zero Param (0.4M, Codesize) | 400,000 | 223,239 | 12,302 | 12.30 | 10,796,756 | 10,795,222.3 | 10,792,852 | +| Zero Param (0.4M, Coinbase) | 400,000 | 223,239 | 16,087 | 16.09 | 11,444,512 | 11,439,144 | 11,431,824 | +| Zero Param (0.4M, Gaslimit) | 400,000 | 223,239 | 11,556 | 11.56 | 9,634,888 | 9,633,521.6 | 9,630,008 | +| Zero Param (0.4M, Gasprice) | 400,000 | 223,239 | 12,649 | 12.65 | 8,450,152 | 8,450,152 | 8,439,416 | +| Zero Param (0.4M, Gas) | 400,000 | 223,239 | 12,571 | 12.57 | 5,716,484 | 5,715,752 | 5,711,604 | +| Zero Param (0.4M, Number) | 400,000 | 223,239 | 11,641 | 11.64 | 8,431,560 | 8,420,281.8 | 8,410,088 | +| Zero Param (0.4M, Origin) | 400,000 | 223,239 | 18,054 | 18.05 | 5,118,228 | 5,117,837.6 | 5,114,324 | +| Zero Param (0.4M, Prevrandao) | 400,000 | 223,239 | 19,112 | 19.11 | 5,834,576 | 5,832,705.3 | 5,826,768 | +| Zero Param (0.4M, Timestamp) | 400,000 | 223,239 | 12,239 | 12.24 | 5,980,968 | 5,977,649.6 | 5,970,232 | +| Calldatacopy (0.4M, Zero Data, Dynamic Src Dst, 0Bytes, Call) | 400,000 | 223,239 | 12,488 | 12.49 | 10,174,044 | 10,167,016.8 | 10,164,284 | +| Calldatacopy (0.4M, Zero Data, Dynamic Src Dst, 0Bytes, Transaction) | 400,000 | 223,239 | 12,431 | 12.43 | 5,180,692 | 5,176,788 | 5,174,836 | +| Calldatacopy (0.4M, Zero Data, Dynamic Src Dst, 100Bytes, Call) | 400,000 | 223,239 | 11,674 | 11.67 | 12,176,548 | 12,163,441.7 | 12,156,052 | +| Calldatacopy (0.4M, Zero Data, Dynamic Src Dst, 100Bytes, Transaction) | 400,000 | 223,239 | 11,770 | 11.77 | 1,861,056 | 1,852,369.6 | 1,842,512 | +| Calldatacopy (0.4M, Zero Data, Dynamic Src Dst, 10Kib, Call) | 400,000 | 223,239 | 8,202 | 8.20 | 11,141,240 | 11,135,817.8 | 11,124,648 | +| Calldatacopy (0.4M, Zero Data, Dynamic Src Dst, 10Kib, Transaction) | 400,000 | 223,239 | 5,970 | 5.97 | 9,543,064 | 9,537,734.4 | 9,539,160 | +| Calldatacopy (0.4M, Zero Data, Dynamic Src Dst, 1Mib, Call) | 400,000 | 223,239 | 4,029 | 4.03 | 6,605,588 | 6,604,124 | 6,594,852 | +| Calldatacopy (0.4M, Zero Data, Dynamic Src Dst, 1Mib, Transaction) | 400,000 | 223,239 | 4,534 | 4.53 | 741,596 | 738,451.1 | 725,980 | +| Calldatacopy (0.4M, Zero Data, Fixed Src Dst, 0Bytes, Call) | 400,000 | 223,239 | 11,164 | 11.16 | 5,153,364 | 5,148,902.3 | 5,142,628 | +| Calldatacopy (0.4M, Zero Data, Fixed Src Dst, 0Bytes, Transaction) | 400,000 | 223,239 | 10,108 | 10.11 | 5,139,700 | 5,139,700 | 5,134,820 | +| Calldatacopy (0.4M, Zero Data, Fixed Src Dst, 100Bytes, Call) | 400,000 | 223,239 | 10,575 | 10.57 | 12,297,380 | 12,291,524 | 12,279,812 | +| Calldatacopy (0.4M, Zero Data, Fixed Src Dst, 100Bytes, Transaction) | 400,000 | 223,239 | 8,809 | 8.81 | 8,547,020 | 8,544,092 | 8,534,332 | +| Calldatacopy (0.4M, Zero Data, Fixed Src Dst, 10Kib, Call) | 400,000 | 223,239 | 7,178 | 7.18 | 10,869,444 | 10,869,444 | 10,863,588 | +| Calldatacopy (0.4M, Zero Data, Fixed Src Dst, 10Kib, Transaction) | 400,000 | 223,239 | 6,002 | 6.00 | 5,983,896 | 5,983,896 | 5,979,992 | +| Calldatacopy (0.4M, Zero Data, Fixed Src Dst, 1Mib, Call) | 400,000 | 223,239 | 4,192 | 4.19 | 6,136,152 | 6,136,152 | 6,122,488 | +| Calldatacopy (0.4M, Zero Data, Fixed Src Dst, 1Mib, Transaction) | 400,000 | 223,239 | 4,302 | 4.30 | 9,287,460 | 9,276,812 | 9,287,460 | +| Calldatacopy (0.4M, Non Zero, Dynamic Src Dst, 100Bytes, Call) | 400,000 | 223,239 | 11,301 | 11.30 | 7,670,640 | 7,667,224 | 7,661,856 | +| Calldatacopy (0.4M, Non Zero, Dynamic Src Dst, 100Bytes, Transaction) | 400,000 | 223,239 | 12,167 | 12.17 | 387,316 | 309,539.6 | 140,388 | +| Calldatacopy (0.4M, Non Zero, Fixed Src Dst, 100Bytes, Call) | 400,000 | 223,239 | 11,823 | 11.82 | 2,032,832 | 2,023,397.3 | 2,007,456 | +| Calldatacopy (0.4M, Non Zero, Fixed Src Dst, 100Bytes, Transaction) | 400,000 | 223,239 | 8,087 | 8.09 | 12,270,384 | 12,269,814 | 12,264,528 | +| Codecopy (0.4M, Dynamic Src Dst, 0Bytes) | 400,000 | 223,239 | 12,015 | 12.02 | 8,104,948 | 8,101,434.4 | 8,093,236 | +| Codecopy (0.4M, Dynamic Src Dst, 0.25X Max Code) | 400,000 | 223,239 | 7,224 | 7.22 | 9,549,876 | 9,543,044 | 9,534,260 | +| Codecopy (0.4M, Dynamic Src Dst, 0.50X Max Code Size) | 400,000 | 223,239 | 9,813 | 9.81 | 1,322,308 | 1,313,435.3 | 1,299,860 | +| Codecopy (0.4M, Dynamic Src Dst, 0.75X Max Code Size) | 400,000 | 223,239 | 8,404 | 8.40 | 12,391,576 | 12,391,576 | 12,391,576 | +| Codecopy (0.4M, Dynamic Src Dst, Max Code) | 400,000 | 223,239 | 7,724 | 7.72 | 5,134,820 | 5,134,332 | 5,129,940 | +| Codecopy (0.4M, Fixed Src Dst, 0Bytes) | 400,000 | 223,239 | 9,633 | 9.63 | 11,849,292 | 11,849,292 | 11,837,364 | +| Codecopy (0.4M, Fixed Src Dst, 0.25X Max Code) | 400,000 | 223,239 | 6,499 | 6.50 | 9,664,164 | 9,664,164 | 9,659,284 | +| Codecopy (0.4M, Fixed Src Dst, 0.50X Max Code Size) | 400,000 | 223,239 | 7,725 | 7.72 | 10,130,572 | 10,126,180 | 10,121,788 | +| Codecopy (0.4M, Fixed Src Dst, 0.75X Max Code Size) | 400,000 | 223,239 | 9,374 | 9.37 | 10,011,644 | 10,010,918.4 | 10,005,088 | +| Codecopy (0.4M, Fixed Src Dst, Max Code) | 400,000 | 223,239 | 8,655 | 8.65 | 2,712,124 | 2,711,473.3 | 2,707,244 | +| Mcopy (0.4M, Dynamic Src Dst, 0Bytes) | 400,000 | 223,239 | 12,388 | 12.39 | 9,630,012 | 9,627,920.6 | 9,623,180 | +| Mcopy (0.4M, Dynamic Src Dst, 100Bytes) | 400,000 | 223,239 | 11,370 | 11.37 | 10,914,640 | 10,910,869.5 | 10,902,260 | +| Mcopy (0.4M, Dynamic Src Dst, 10Kib) | 400,000 | 223,239 | 10,842 | 10.84 | 6,395,752 | 6,395,752 | 6,390,872 | +| Mcopy (0.4M, Dynamic Src Dst, 1Mib) | 400,000 | 223,239 | 4,956 | 4.96 | 6,202,512 | 6,202,512 | 6,199,584 | +| Mcopy (0.4M, Fixed Src Dst, 0Bytes) | 400,000 | 223,239 | 9,476 | 9.48 | 6,311,820 | 6,308,569.3 | 6,305,968 | +| Mcopy (0.4M, Fixed Src Dst, 100Bytes) | 400,000 | 223,239 | 8,691 | 8.69 | 6,736,372 | 6,736,372 | 6,724,660 | +| Mcopy (0.4M, Fixed Src Dst, 10Kib) | 400,000 | 223,239 | 9,079 | 9.08 | 6,460,164 | 6,459,188 | 6,450,404 | +| Mcopy (0.4M, Fixed Src Dst, 1Mib) | 400,000 | 223,239 | 5,719 | 5.72 | 2,717,004 | 2,717,004 | 2,713,100 | +| Returndatacopy (0.4M, Fixed Dst False, 0Bytes) | 400,000 | 223,239 | 12,639 | 12.64 | 8,597,772 | 8,588,012 | 8,548,972 | +| Returndatacopy (0.4M, Fixed Dst False, 100Bytes) | 400,000 | 223,239 | 10,456 | 10.46 | 6,223,008 | 6,214,386.7 | 6,203,488 | +| Returndatacopy (0.4M, Fixed Dst False, 10Kib) | 400,000 | 223,239 | 10,296 | 10.30 | 7,727,248 | 7,727,248 | 7,718,464 | +| Returndatacopy (0.4M, Fixed Dst False, 1Mib) | 400,000 | 223,239 | 5,453 | 5.45 | 10,122,768 | 10,121,466.7 | 10,117,888 | +| Returndatacopy (0.4M, Fixed Dst True, 0Bytes) | 400,000 | 223,239 | 10,821 | 10.82 | 1,656,100 | 1,645,782.3 | 1,633,652 | +| Returndatacopy (0.4M, Fixed Dst True, 100Bytes) | 400,000 | 223,239 | 9,873 | 9.87 | 4,766,568 | 4,765,104 | 4,761,688 | +| Returndatacopy (0.4M, Fixed Dst True, 10Kib) | 400,000 | 223,239 | 7,041 | 7.04 | 5,389,544 | 5,387,592 | 5,383,688 | +| Returndatacopy (0.4M, Fixed Dst True, 1Mib) | 400,000 | 223,239 | 5,349 | 5.35 | 2,476,908 | 2,475,444 | 2,462,268 | +| Log Opcodes (0.4M, Dynamic, Non Zero Topic, 0 Bytes Data, Log0) | 400,000 | 223,239 | 4,971 | 4.97 | 10,214,056 | 10,214,056 | 10,211,128 | +| Log Opcodes (0.4M, Dynamic, Non Zero Topic, 0 Bytes Data, Log1) | 400,000 | 223,239 | 4,537 | 4.54 | 8,347,124 | 8,347,124 | 8,342,244 | +| Log Opcodes (0.4M, Dynamic, Non Zero Topic, 0 Bytes Data, Log2) | 400,000 | 223,239 | 4,920 | 4.92 | 2,081,628 | 2,079,350.7 | 2,069,916 | +| Log Opcodes (0.4M, Dynamic, Non Zero Topic, 0 Bytes Data, Log3) | 400,000 | 223,239 | 4,829 | 4.83 | 6,295,232 | 6,295,232 | 6,291,328 | +| Log Opcodes (0.4M, Dynamic, Non Zero Topic, 0 Bytes Data, Log4) | 400,000 | 223,239 | 4,714 | 4.71 | 10,690,092 | 10,688,481.3 | 10,687,164 | +| Log Opcodes (0.4M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log0) | 400,000 | 223,239 | 4,757 | 4.76 | 11,125,624 | 11,125,428.8 | 11,121,720 | +| Log Opcodes (0.4M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log1) | 400,000 | 223,239 | 5,474 | 5.47 | 6,203,488 | 6,203,488 | 6,202,512 | +| Log Opcodes (0.4M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log2) | 400,000 | 223,239 | 4,189 | 4.19 | 7,263,164 | 7,263,164 | 7,262,188 | +| Log Opcodes (0.4M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log3) | 400,000 | 223,239 | 4,334 | 4.33 | 10,848,352 | 10,848,352 | 10,840,544 | +| Log Opcodes (0.4M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log4) | 400,000 | 223,239 | 4,691 | 4.69 | 5,394,424 | 5,394,424 | 5,393,448 | +| Log Opcodes (0.4M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log0) | 400,000 | 223,239 | 4,721 | 4.72 | 9,651,476 | 9,648,222.7 | 9,642,692 | +| Log Opcodes (0.4M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log1) | 400,000 | 223,239 | 4,619 | 4.62 | 2,842,904 | 2,842,416 | 2,838,024 | +| Log Opcodes (0.4M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log2) | 400,000 | 223,239 | 4,241 | 4.24 | 10,208,200 | 10,208,200 | 10,204,296 | +| Log Opcodes (0.4M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log3) | 400,000 | 223,239 | 5,337 | 5.34 | 9,293,404 | 9,291,452 | 9,287,548 | +| Log Opcodes (0.4M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log4) | 400,000 | 223,239 | 4,918 | 4.92 | 9,922,880 | 9,922,880 | 9,920,928 | +| Log Opcodes (0.4M, Dynamic, Zero Topic, 0 Bytes Data, Log0) | 400,000 | 223,239 | 4,800 | 4.80 | 6,320,604 | 6,319,953.3 | 6,316,700 | +| Log Opcodes (0.4M, Dynamic, Zero Topic, 0 Bytes Data, Log1) | 400,000 | 223,239 | 4,900 | 4.90 | 5,189,476 | 5,189,476 | 5,184,596 | +| Log Opcodes (0.4M, Dynamic, Zero Topic, 0 Bytes Data, Log2) | 400,000 | 223,239 | 5,718 | 5.72 | 12,281,084 | 12,278,481.3 | 12,276,204 | +| Log Opcodes (0.4M, Dynamic, Zero Topic, 0 Bytes Data, Log3) | 400,000 | 223,239 | 4,805 | 4.80 | 5,456,880 | 5,456,880 | 5,452,976 | +| Log Opcodes (0.4M, Dynamic, Zero Topic, 0 Bytes Data, Log4) | 400,000 | 223,239 | 4,425 | 4.42 | 5,005,012 | 4,999,644 | 4,996,228 | +| Log Opcodes (0.4M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log0) | 400,000 | 223,239 | 4,147 | 4.15 | 8,309,064 | 8,306,380 | 8,302,232 | +| Log Opcodes (0.4M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log1) | 400,000 | 223,239 | 4,383 | 4.38 | 10,005,088 | 10,005,088 | 10,004,112 | +| Log Opcodes (0.4M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log2) | 400,000 | 223,239 | 4,749 | 4.75 | 6,642,676 | 6,642,025.3 | 6,640,724 | +| Log Opcodes (0.4M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log3) | 400,000 | 223,239 | 4,093 | 4.09 | 6,724,660 | 6,724,660 | 6,721,732 | +| Log Opcodes (0.4M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log4) | 400,000 | 223,239 | 4,571 | 4.57 | 11,411,904 | 11,411,904 | 11,407,024 | +| Log Opcodes (0.4M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log0) | 400,000 | 223,239 | 4,576 | 4.58 | 12,442,148 | 12,442,148 | 12,439,220 | +| Log Opcodes (0.4M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log1) | 400,000 | 223,239 | 4,471 | 4.47 | 10,079,416 | 10,079,416 | 10,070,632 | +| Log Opcodes (0.4M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log2) | 400,000 | 223,239 | 4,297 | 4.30 | 6,657,316 | 6,657,316 | 6,648,532 | +| Log Opcodes (0.4M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log3) | 400,000 | 223,239 | 4,971 | 4.97 | 5,155,316 | 5,155,316 | 5,154,340 | +| Log Opcodes (0.4M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log4) | 400,000 | 223,239 | 4,185 | 4.18 | 6,957,920 | 6,957,432 | 6,954,016 | +| Log Opcodes (0.4M, Fixed, Non Zero Topic, 0 Bytes Data, Log0) | 400,000 | 223,239 | 5,773 | 5.77 | 3,228,408 | 3,218,651.2 | 3,212,796 | +| Log Opcodes (0.4M, Fixed, Non Zero Topic, 0 Bytes Data, Log1) | 400,000 | 223,239 | 5,346 | 5.35 | 6,192,752 | 6,192,752 | 6,189,824 | +| Log Opcodes (0.4M, Fixed, Non Zero Topic, 0 Bytes Data, Log2) | 400,000 | 223,239 | 4,918 | 4.92 | 10,822,096 | 10,822,096 | 10,814,288 | +| Log Opcodes (0.4M, Fixed, Non Zero Topic, 0 Bytes Data, Log3) | 400,000 | 223,239 | 5,271 | 5.27 | 2,443,724 | 2,438,356 | 2,429,084 | +| Log Opcodes (0.4M, Fixed, Non Zero Topic, 0 Bytes Data, Log4) | 400,000 | 223,239 | 5,315 | 5.32 | 10,929,396 | 10,928,448 | 10,917,684 | +| Log Opcodes (0.4M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log0) | 400,000 | 223,239 | 4,533 | 4.53 | 5,100,660 | 5,100,660 | 5,098,708 | +| Log Opcodes (0.4M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log1) | 400,000 | 223,239 | 4,561 | 4.56 | 9,537,208 | 9,537,208 | 9,530,816 | +| Log Opcodes (0.4M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log2) | 400,000 | 223,239 | 4,026 | 4.03 | 6,591,924 | 6,591,924 | 6,591,924 | +| Log Opcodes (0.4M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log3) | 400,000 | 223,239 | 3,883 | 3.88 | 12,368,256 | 12,366,792 | 12,364,352 | +| Log Opcodes (0.4M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log4) | 400,000 | 223,239 | 4,699 | 4.70 | 6,869,104 | 6,863,898.7 | 6,860,320 | +| Log Opcodes (0.4M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log0) | 400,000 | 223,239 | 5,438 | 5.44 | 11,984,092 | 11,984,092 | 11,975,984 | +| Log Opcodes (0.4M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log1) | 400,000 | 223,239 | 4,228 | 4.23 | 5,561,304 | 5,560,328 | 5,557,400 | +| Log Opcodes (0.4M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log2) | 400,000 | 223,239 | 4,659 | 4.66 | 6,593,876 | 6,593,144 | 6,591,924 | +| Log Opcodes (0.4M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log3) | 400,000 | 223,239 | 4,250 | 4.25 | 10,218,936 | 10,217,634.7 | 10,215,032 | +| Log Opcodes (0.4M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log4) | 400,000 | 223,239 | 4,461 | 4.46 | 5,374,904 | 5,374,904 | 5,373,928 | +| Log Opcodes (0.4M, Fixed, Zero Topic, 0 Bytes Data, Log0) | 400,000 | 223,239 | 5,143 | 5.14 | 2,107,004 | 2,104,401.3 | 2,093,340 | +| Log Opcodes (0.4M, Fixed, Zero Topic, 0 Bytes Data, Log1) | 400,000 | 223,239 | 5,747 | 5.75 | 4,433,752 | 4,426,920 | 4,419,112 | +| Log Opcodes (0.4M, Fixed, Zero Topic, 0 Bytes Data, Log2) | 400,000 | 223,239 | 4,686 | 4.69 | 11,236,600 | 11,236,600 | 11,235,624 | +| Log Opcodes (0.4M, Fixed, Zero Topic, 0 Bytes Data, Log3) | 400,000 | 223,239 | 4,540 | 4.54 | 6,593,876 | 6,593,876 | 6,593,876 | +| Log Opcodes (0.4M, Fixed, Zero Topic, 0 Bytes Data, Log4) | 400,000 | 223,239 | 4,978 | 4.98 | 3,188,396 | 3,187,664 | 3,181,564 | +| Log Opcodes (0.4M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log0) | 400,000 | 223,239 | 5,320 | 5.32 | 10,551,412 | 10,551,216.8 | 10,551,412 | +| Log Opcodes (0.4M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log1) | 400,000 | 223,239 | 4,128 | 4.13 | 10,814,288 | 10,807,781.3 | 10,800,624 | +| Log Opcodes (0.4M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log2) | 400,000 | 223,239 | 4,809 | 4.81 | 11,178,440 | 11,176,481.6 | 11,172,088 | +| Log Opcodes (0.4M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log3) | 400,000 | 223,239 | 5,283 | 5.28 | 5,453,956 | 5,453,956 | 5,450,052 | +| Log Opcodes (0.4M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log4) | 400,000 | 223,239 | 5,232 | 5.23 | 3,838,396 | 3,836,053.6 | 3,829,612 | +| Log Opcodes (0.4M, Fixed, Zero Topic, 1 Mib Zeros Data, Log0) | 400,000 | 223,239 | 5,082 | 5.08 | 6,149,812 | 6,149,812 | 6,148,836 | +| Log Opcodes (0.4M, Fixed, Zero Topic, 1 Mib Zeros Data, Log1) | 400,000 | 223,239 | 4,077 | 4.08 | 12,276,888 | 12,276,888 | 12,275,912 | +| Log Opcodes (0.4M, Fixed, Zero Topic, 1 Mib Zeros Data, Log2) | 400,000 | 223,239 | 4,075 | 4.08 | 7,736,032 | 7,736,032 | 7,728,224 | +| Log Opcodes (0.4M, Fixed, Zero Topic, 1 Mib Zeros Data, Log3) | 400,000 | 223,239 | 4,251 | 4.25 | 3,563,164 | 3,559,585.3 | 3,551,452 | +| Log Opcodes (0.4M, Fixed, Zero Topic, 1 Mib Zeros Data, Log4) | 400,000 | 223,239 | 4,469 | 4.47 | 5,077,236 | 5,073,527.2 | 5,069,428 | +| Address State Cold (0.4M, Absent Accounts False, Balance) | 400,000 | 223,239 | 7,688 | 7.69 | 5,158,244 | 5,158,000 | 5,156,292 | +| Address State Cold (0.4M, Absent Accounts True, Balance) | 400,000 | 223,239 | 7,169 | 7.17 | 2,489,596 | 2,483,902.7 | 2,477,884 | +| Address State Warm (0.4M, Present Target, Balance) | 400,000 | 223,239 | 7,739 | 7.74 | 7,660,884 | 7,658,932 | 7,656,004 | +| Address State Warm (0.4M, Present Target, Callcode) | 400,000 | 223,239 | 15,369 | 15.37 | 10,190,636 | 10,189,985.3 | 10,188,684 | +| Address State Warm (0.4M, Present Target, Call) | 400,000 | 223,239 | 16,537 | 16.54 | 11,241,928 | 11,225,779.6 | 11,204,840 | +| Address State Warm (0.4M, Present Target, Delegatecall) | 400,000 | 223,239 | 14,642 | 14.64 | 10,263,596 | 10,259,204 | 10,253,836 | +| Address State Warm (0.4M, Present Target, Extcodehash) | 400,000 | 223,239 | 8,699 | 8.70 | 3,676,380 | 3,671,500 | 3,663,692 | +| Address State Warm (0.4M, Present Target, Extcodesize) | 400,000 | 223,239 | 8,870 | 8.87 | 1,841,540 | 1,838,123.3 | 1,832,756 | +| Address State Warm (0.4M, Present Target, Staticcall) | 400,000 | 223,239 | 15,538 | 15.54 | 4,883,688 | 4,883,688 | 4,874,904 | +| Address State Warm (0.4M, Absent Target, Balance) | 400,000 | 223,239 | 9,821 | 9.82 | 11,236,100 | 11,235,028 | 11,236,100 | +| Address State Warm (0.4M, Absent Target, Callcode) | 400,000 | 223,239 | 13,907 | 13.91 | 12,225,748 | 12,225,688 | 12,225,748 | +| Address State Warm (0.4M, Absent Target, Call) | 400,000 | 223,239 | 14,667 | 14.67 | 5,496,892 | 5,494,072.4 | 5,486,156 | +| Address State Warm (0.4M, Absent Target, Delegatecall) | 400,000 | 223,239 | 13,265 | 13.27 | 8,622,364 | 8,614,428 | 8,597,772 | +| Address State Warm (0.4M, Absent Target, Extcodehash) | 400,000 | 223,239 | 10,326 | 10.33 | 3,882,312 | 3,878,733.3 | 3,871,576 | +| Address State Warm (0.4M, Absent Target, Extcodesize) | 400,000 | 223,239 | 10,452 | 10.45 | 11,151,976 | 11,151,976 | 11,141,240 | +| Address State Warm (0.4M, Absent Target, Staticcall) | 400,000 | 223,239 | 13,786 | 13.79 | 6,980,368 | 6,972,397.3 | 6,963,776 | +| Blockhash (0.4M) | 400,000 | 223,239 | 12,297 | 12.30 | 8,700,444 | 8,694,154.2 | 8,689,708 | +| Extcodecopy Warm (0.4M, 1Kib) | 400,000 | 223,239 | 9,785 | 9.79 | 3,209,868 | 3,202,896.6 | 3,190,348 | +| Extcodecopy Warm (0.4M, 512) | 400,000 | 223,239 | 8,436 | 8.44 | 4,919,132 | 4,918,741.6 | 4,914,252 | +| Extcodecopy Warm (0.4M, 5Kib) | 400,000 | 223,239 | 7,885 | 7.88 | 3,470,448 | 3,469,146.7 | 3,462,640 | +| Selfbalance (0.4M) | 400,000 | 223,239 | 37,615 | 37.62 | 8,526,524 | 8,514,021.9 | 8,498,220 | +| Selfdestruct Created (0.4M, No Value) | 364,312 | 223,239 | 4,906 | 4.91 | 4,896,684 | 4,895,220 | 4,892,780 | +| Selfdestruct Created (0.4M, With Value) | 364,312 | 223,239 | 4,344 | 4.34 | 3,461,668 | 3,461,668 | 3,455,812 | +| Selfdestruct Existing (0.4M, No Value) | 396,611 | 223,239 | 5,307 | 5.31 | 8,879,908 | 8,879,908 | 8,871,124 | +| Selfdestruct Existing (0.4M, With Value) | 396,611 | 223,239 | 5,904 | 5.90 | 8,343,224 | 8,336,066.7 | 8,324,680 | +| Selfdestruct Initcode (0.4M, No Value) | 396,460 | 223,239 | 4,270 | 4.27 | 3,871,576 | 3,870,112 | 3,866,696 | +| Selfdestruct Initcode (0.4M, With Value) | 396,460 | 223,239 | 3,785 | 3.79 | 12,376,484 | 12,367,745.3 | 12,376,484 | +| Storage Access Cold (0.4M, Absent Slots False, Ssload) | 399,252 | 223,239 | 8,533 | 8.53 | 11,715,020 | 11,715,020 | 11,707,212 | +| Storage Access Cold (0.4M, Absent Slots False, Sstore New Value, Out Of Gas) | 400,000 | 223,239 | 6,752 | 6.75 | 2,729,692 | 2,726,178.4 | 2,721,884 | +| Storage Access Cold (0.4M, Absent Slots False, Sstore New Value, Revert) | 399,084 | 223,239 | 6,975 | 6.97 | 9,657,332 | 9,656,356 | 9,653,428 | +| Storage Access Cold (0.4M, Absent Slots False, Sstore New Value) | 399,078 | 223,239 | 6,157 | 6.16 | 6,993,056 | 6,989,291.4 | 6,980,368 | +| Storage Access Cold (0.4M, Absent Slots False, Sstore Same Value, Out Of Gas) | 400,000 | 223,239 | 7,983 | 7.98 | 8,720,940 | 8,716,548 | 8,701,420 | +| Storage Access Cold (0.4M, Absent Slots False, Sstore Same Value, Revert) | 399,231 | 223,239 | 8,078 | 8.08 | 5,587,656 | 5,586,842.7 | 5,584,728 | +| Storage Access Cold (0.4M, Absent Slots False, Sstore Same Value) | 399,225 | 223,239 | 8,682 | 8.68 | 12,064,972 | 12,063,996 | 12,062,044 | +| Storage Access Cold (0.4M, Absent Slots True, Ssload) | 399,252 | 223,239 | 7,122 | 7.12 | 4,924,988 | 4,924,012 | 4,919,132 | +| Storage Access Cold (0.4M, Absent Slots True, Sstore New Value, Out Of Gas) | 400,000 | 223,239 | 3,942 | 3.94 | 12,226,724 | 12,226,724 | 12,224,772 | +| Storage Access Cold (0.4M, Absent Slots True, Sstore New Value, Revert) | 397,406 | 223,239 | 3,949 | 3.95 | 6,435,764 | 6,435,764 | 6,435,764 | +| Storage Access Cold (0.4M, Absent Slots True, Sstore New Value) | 397,400 | 223,239 | 4,050 | 4.05 | 3,934,040 | 3,933,308 | 3,928,184 | +| Storage Access Cold (0.4M, Absent Slots True, Sstore Same Value, Out Of Gas) | 400,000 | 223,239 | 4,068 | 4.07 | 9,665,140 | 9,665,140 | 9,664,164 | +| Storage Access Cold (0.4M, Absent Slots True, Sstore Same Value, Revert) | 397,355 | 223,239 | 3,956 | 3.96 | 9,921,904 | 9,921,578.7 | 9,918,976 | +| Storage Access Cold (0.4M, Absent Slots True, Sstore Same Value) | 397,349 | 223,239 | 4,159 | 4.16 | 11,850,268 | 11,850,268 | 11,850,268 | +| Storage Access Warm (0.4M, Sload) | 400,000 | 223,239 | 7,525 | 7.53 | 7,651,612 | 7,650,636 | 7,648,684 | +| Storage Access Warm (0.4M, Sstore New Value) | 400,000 | 223,239 | 12,447 | 12.45 | 9,686,612 | 9,686,612 | 9,677,828 | +| Storage Access Warm (0.4M, Sstore Same Value) | 400,000 | 223,239 | 11,290 | 11.29 | 10,186,732 | 10,186,732 | 10,180,876 | + +## Summary Statistics + +- **Total Tests:** 504 +- **Successful Tests:** 499 +- **Failed Tests:** 5 + +### Proving Time (ms) +- **Average:** 31,780.2 +- **Minimum:** 3,785 +- **Maximum:** 461,110 + +### Peak Memory Usage (MB) +- **Average:** 7,196,489.4 +- **Minimum:** 387,316 +- **Maximum:** 12,442,148 + +### Proof Size (bytes) +- **Average:** 223,239 +- **Minimum:** 223,239 +- **Maximum:** 223,239 diff --git a/www/docs/pages/benchmark-results/gas-categorized/0.4m/sp1-0.4M-4.md b/www/docs/pages/benchmark-results/gas-categorized/0.4m/sp1-0.4M-4.md new file mode 100644 index 00000000..36ab5610 --- /dev/null +++ b/www/docs/pages/benchmark-results/gas-categorized/0.4m/sp1-0.4M-4.md @@ -0,0 +1,539 @@ +# zkEVM Benchmark Results + +Generated on: 2026-01-01 15:22:14 + +## Folder: zkevm-metrics-sp1-0.4M-4 + +**zkVM:** sp1-cluster-v5.2.3 (4 GPUs) + +**Hardware Configuration:** CPU: AMD EPYC 7B13 64-Core Processor | RAM: 396 GiB | GPU: NVIDIA GeForce RTX 4090, NVIDIA GeForce RTX 4090, NVIDIA GeForce RTX 4090, NVIDIA GeForce RTX 4090 + +## Proving Metrics + +| Benchmark | Gas Used | Proof Size (bytes) | Proving Time (ms) | Proving Time (s) | Peak Memory (MB) | Avg Memory (MB) | Initial Memory (MB) | +|---|---|---|---|---|---|---|---| +| Block Full Access List And Data (0.4M) | 399,990 | 1,477,226 | 6,069 | 6.07 | 5,782,020 | 5,782,020 | 5,778,116 | +| Block Full Data (0.4M, Non Zero Byte) | 400,000 | 1,477,226 | 6,074 | 6.07 | 11,328,828 | 11,327,852 | 11,322,972 | +| Block Full Data (0.4M, Zero Byte) | 400,000 | 1,477,226 | 6,570 | 6.57 | 5,545,836 | 5,545,348 | 5,541,932 | +| Block Full Of Ether Transfers (0.4M, A To A) | 399,000 | 1,477,226 | 7,089 | 7.09 | 8,895,280 | 8,885,659.4 | 8,866,000 | +| Block Full Of Ether Transfers (0.4M, A To B) | 399,000 | 1,477,226 | 7,078 | 7.08 | 7,359,444 | 7,349,684 | 7,338,948 | +| Block Full Of Ether Transfers (0.4M, A To Diff Acc) | 399,000 | 1,477,226 | 7,082 | 7.08 | 3,754,924 | 3,747,929.3 | 3,735,404 | +| Block Full Of Ether Transfers (0.4M, Diff Acc To B) | 399,000 | 1,477,226 | 7,590 | 7.59 | 10,754,968 | 10,754,968 | 10,752,040 | +| Block Full Of Ether Transfers (0.4M, Diff Acc To Diff Acc) | 399,000 | 1,477,226 | 7,589 | 7.59 | 10,751,064 | 10,746,316 | 10,731,320 | +| Bytecode Single Opcode (0.4M, Callcode) | 400,000 | 1,477,226 | 18,647 | 18.65 | 10,894,636 | 10,893,896 | 10,894,636 | +| Bytecode Single Opcode (0.4M, Call) | 400,000 | 1,477,226 | 17,678 | 17.68 | 11,292,792 | 11,282,338 | 11,272,456 | +| Bytecode Single Opcode (0.4M, Delegatecall) | 400,000 | 1,477,226 | 17,194 | 17.19 | 4,946,604 | 4,943,773.6 | 4,929,036 | +| Bytecode Single Opcode (0.4M, Extcodecopy) | 400,000 | 1,477,226 | 16,188 | 16.19 | 8,375,856 | 8,374,554.7 | 8,367,072 | +| Bytecode Single Opcode (0.4M, Extcodehash) | 400,000 | 1,477,226 | 16,656 | 16.66 | 8,255,864 | 8,252,378.3 | 8,229,940 | +| Bytecode Single Opcode (0.4M, Extcodesize) | 400,000 | 1,477,226 | 16,655 | 16.66 | 7,685,772 | 7,679,590.7 | 7,666,252 | +| Bytecode Single Opcode (0.4M, Staticcall) | 400,000 | 1,477,226 | 17,203 | 17.20 | 7,288,196 | 7,287,708 | 7,286,244 | +| Create (0.4M, 0Bytes, Create2) | 400,000 | 1,477,226 | 6,566 | 6.57 | 13,341,952 | 13,333,268 | 13,341,952 | +| Create (0.4M, 0Bytes, Create) | 400,000 | 1,477,226 | 6,059 | 6.06 | 4,792,396 | 4,791,664 | 4,783,612 | +| Create (0.4M, 0Bytes, Create2) | 400,000 | 1,477,226 | 6,053 | 6.05 | 8,710,128 | 8,710,128 | 8,699,392 | +| Create (0.4M, 0Bytes, Create) | 400,000 | 1,477,226 | 6,063 | 6.06 | 3,348,908 | 3,345,166.7 | 3,335,244 | +| Create (0.4M, 0.25X Max Code, Zero Data, Create2) | 400,000 | 1,477,226 | 6,567 | 6.57 | 1,896,648 | 1,896,648 | 1,832,232 | +| Create (0.4M, 0.25X Max Code, Zero Data, Create) | 400,000 | 1,477,226 | 6,058 | 6.06 | 13,205,072 | 13,201,168 | 13,199,784 | +| Create (0.4M, 0.25X Max Code, Create2) | 400,000 | 1,477,226 | 6,060 | 6.06 | 10,363,800 | 10,363,800 | 10,316,180 | +| Create (0.4M, 0.25X Max Code, Create) | 400,000 | 1,477,226 | 6,068 | 6.07 | 7,524,232 | 7,505,492.8 | 7,495,928 | +| Create (0.4M, 0.50X Max Code Size With Non, Zero Data, Create2) | 400,000 | 1,477,226 | 6,562 | 6.56 | 13,404,180 | 13,404,180 | 13,388,564 | +| Create (0.4M, 0.50X Max Code Size With Non, Zero Data, Create) | 400,000 | 1,477,226 | 6,046 | 6.05 | 6,782,404 | 6,777,524 | 6,769,716 | +| Create (0.4M, 0.50X Max Code Size With Zero Data, Create2) | 400,000 | 1,477,226 | 6,063 | 6.06 | 12,446,200 | 12,446,200 | 12,445,544 | +| Create (0.4M, 0.50X Max Code Size With Zero Data, Create) | 400,000 | 1,477,226 | 6,074 | 6.07 | 3,696,364 | 3,690,508 | 3,679,772 | +| Create (0.4M, 0.75X Max Code Size With Non, Zero Data, Create2) | 400,000 | 1,477,226 | 5,556 | 5.56 | 5,407,248 | 5,407,248 | 5,399,440 | +| Create (0.4M, 0.75X Max Code Size With Non, Zero Data, Create) | 400,000 | 1,477,226 | 6,062 | 6.06 | 3,179,092 | 3,174,351.4 | 3,166,404 | +| Create (0.4M, 0.75X Max Code Size With Zero Data, Create2) | 400,000 | 1,477,226 | 6,561 | 6.56 | 10,841,400 | 10,834,664 | 10,823,584 | +| Create (0.4M, 0.75X Max Code Size With Zero Data, Create) | 400,000 | 1,477,226 | 6,062 | 6.06 | 12,208,496 | 12,208,496 | 12,183,120 | +| Create (0.4M, Max Code, Zero Data, Create2) | 400,000 | 1,477,226 | 6,061 | 6.06 | 3,296,208 | 3,287,033.6 | 3,274,736 | +| Create (0.4M, Max Code, Zero Data, Create) | 400,000 | 1,477,226 | 7,078 | 7.08 | 8,834,372 | 8,833,884 | 8,815,828 | +| Create (0.4M, Max Code, Create2) | 400,000 | 1,477,226 | 6,065 | 6.07 | 12,965,540 | 12,959,764 | 12,954,804 | +| Create (0.4M, Max Code, Create) | 400,000 | 1,477,226 | 6,051 | 6.05 | 2,597,404 | 2,595,061.6 | 2,584,716 | +| Creates Collisions (0.4M, Create2) | 400,000 | 1,477,226 | 5,564 | 5.56 | 3,005,368 | 2,997,560 | 2,985,848 | +| Creates Collisions (0.4M, Create) | 400,000 | 1,477,226 | 6,561 | 6.56 | 7,240,372 | 7,238,420 | 7,226,708 | +| Initcode Jumpdest Analysis (0.4M, 00) | 400,000 | 1,477,226 | 7,589 | 7.59 | 754,732 | 741,518.5 | 722,524 | +| Initcode Jumpdest Analysis (0.4M, 5B) | 400,000 | 1,477,226 | 7,078 | 7.08 | 8,766,052 | 8,765,564 | 8,754,340 | +| Initcode Jumpdest Analysis (0.4M, 605B5B) | 400,000 | 1,477,226 | 7,058 | 7.06 | 11,741,792 | 11,739,142.9 | 11,726,176 | +| Initcode Jumpdest Analysis (0.4M, 605B) | 400,000 | 1,477,226 | 6,555 | 6.55 | 5,540,956 | 5,536,808 | 5,531,196 | +| Initcode Jumpdest Analysis (0.4M, 615B5B5B) | 400,000 | 1,477,226 | 7,578 | 7.58 | 4,273,180 | 4,270,902.7 | 4,265,372 | +| Initcode Jumpdest Analysis (0.4M, 615B5B) | 400,000 | 1,477,226 | 6,579 | 6.58 | 4,302,460 | 4,301,484 | 4,299,532 | +| Amortized Bn128 Pairings (0.4M) | 400,000 | 1,477,226 | 13,109 | 13.11 | 7,285,268 | 7,270,546.7 | 7,255,988 | +| Empty Block (0.4M) | 0 | 1,477,226 | 5,550 | 5.55 | 7,426,636 | 7,420,780 | 7,414,924 | +| Binop Simple (0.4M, Add) | 400,000 | 1,477,226 | 7,095 | 7.09 | 5,877,664 | 5,877,664 | 5,864,976 | +| Binop Simple (0.4M, And) | 400,000 | 1,477,226 | 7,571 | 7.57 | 8,586,128 | 8,585,152 | 8,579,296 | +| Binop Simple (0.4M, Byte) | 400,000 | 1,477,226 | 7,075 | 7.08 | 3,058,068 | 3,047,169.3 | 3,032,692 | +| Binop Simple (0.4M, Div, 0) | 400,000 | 1,477,226 | 15,128 | 15.13 | 8,791,428 | 8,777,675.3 | 8,768,980 | +| Binop Simple (0.4M, Div, 1) | 400,000 | 1,477,226 | 14,121 | 14.12 | 7,218,900 | 7,206,992.8 | 7,190,596 | +| Binop Simple (0.4M, Eq) | 400,000 | 1,477,226 | 10,116 | 10.12 | 5,769,332 | 5,762,500 | 5,741,028 | +| Binop Simple (0.4M, Exp) | 400,000 | 1,477,226 | 10,088 | 10.09 | 2,571,052 | 2,566,032.6 | 2,557,388 | +| Binop Simple (0.4M, Gt) | 400,000 | 1,477,226 | 7,065 | 7.07 | 10,357,460 | 10,353,273.3 | 10,355,508 | +| Binop Simple (0.4M, Lt) | 400,000 | 1,477,226 | 7,580 | 7.58 | 1,295,432 | 1,289,994.3 | 1,280,792 | +| Binop Simple (0.4M, Mod) | 400,000 | 1,477,226 | 9,601 | 9.60 | 5,399,440 | 5,394,072 | 5,383,824 | +| Binop Simple (0.4M, Mul) | 400,000 | 1,477,226 | 8,094 | 8.09 | 8,610,528 | 8,610,528 | 8,599,792 | +| Binop Simple (0.4M, Or) | 400,000 | 1,477,226 | 7,065 | 7.07 | 9,252,884 | 9,252,884 | 9,242,148 | +| Binop Simple (0.4M, Sar) | 400,000 | 1,477,226 | 9,110 | 9.11 | 11,341,516 | 11,335,660 | 11,329,804 | +| Binop Simple (0.4M, Sdiv, 0) | 400,000 | 1,477,226 | 15,144 | 15.14 | 9,078,844 | 9,072,879.6 | 9,051,516 | +| Binop Simple (0.4M, Sdiv, 1) | 400,000 | 1,477,226 | 15,657 | 15.66 | 4,866,572 | 4,853,351.6 | 4,827,532 | +| Binop Simple (0.4M, Sgt) | 400,000 | 1,477,226 | 9,604 | 9.60 | 8,110,872 | 8,106,968 | 8,102,088 | +| Binop Simple (0.4M, Shl) | 400,000 | 1,477,226 | 8,580 | 8.58 | 13,476,320 | 13,474,856 | 13,475,876 | +| Binop Simple (0.4M, Shr) | 400,000 | 1,477,226 | 8,084 | 8.08 | 10,195,564 | 10,187,951.2 | 10,177,996 | +| Binop Simple (0.4M, Signextend) | 400,000 | 1,477,226 | 8,082 | 8.08 | 5,620,008 | 5,616,382.9 | 5,605,368 | +| Binop Simple (0.4M, Slt) | 400,000 | 1,477,226 | 7,587 | 7.59 | 7,539,848 | 7,539,848 | 7,524,232 | +| Binop Simple (0.4M, Smod) | 400,000 | 1,477,226 | 9,603 | 9.60 | 11,769,828 | 11,765,306 | 11,765,216 | +| Binop Simple (0.4M, Sub) | 400,000 | 1,477,226 | 7,578 | 7.58 | 2,356,332 | 2,353,543.4 | 2,346,572 | +| Binop Simple (0.4M, Xor) | 400,000 | 1,477,226 | 7,053 | 7.05 | 5,602,440 | 5,600,488 | 5,590,728 | +| Blobhash (0.4M, No Blobs) | 400,000 | 1,477,226 | 7,569 | 7.57 | 7,443,224 | 7,443,224 | 7,441,272 | +| Blobhash (0.4M, One Blob And Accessed) | 400,000 | 1,477,226 | 8,093 | 8.09 | 11,882,248 | 11,879,180.6 | 11,870,536 | +| Blobhash (0.4M, One Blob But Access Non, Existent Index) | 400,000 | 1,477,226 | 7,084 | 7.08 | 13,583,012 | 13,580,572 | 13,575,204 | +| Blobhash (0.4M, Six Blobs, Access Latest) | 400,000 | 1,477,226 | 8,076 | 8.08 | 10,703,320 | 10,696,992 | 10,687,704 | +| Calldataload (0.4M, Empty) | 400,000 | 1,477,226 | 9,087 | 9.09 | 1,261,272 | 1,256,880 | 1,244,680 | +| Calldataload (0.4M, One, Loop) | 400,000 | 1,477,226 | 10,081 | 10.08 | 12,868,152 | 12,868,152 | 12,863,272 | +| Calldataload (0.4M, Zero, Loop) | 400,000 | 1,477,226 | 10,114 | 10.11 | 5,043,224 | 5,037,925.7 | 5,029,560 | +| Calldatasize (0.4M, Calldata Length 0) | 400,000 | 1,477,226 | 7,065 | 7.07 | 6,165,584 | 6,163,144 | 6,158,752 | +| Calldatasize (0.4M, Calldata Length 10000) | 400,000 | 1,477,226 | 7,069 | 7.07 | 6,347,120 | 6,347,120 | 6,342,240 | +| Calldatasize (0.4M, Calldata Length 1000) | 400,000 | 1,477,226 | 7,070 | 7.07 | 2,690,124 | 2,690,124 | 2,619,852 | +| Callvalue (0.4M, From Origin False, Non Zero Value False) | 400,000 | 1,477,226 | 7,565 | 7.57 | 8,260,740 | 8,259,113.3 | 8,254,884 | +| Callvalue (0.4M, From Origin False, Non Zero Value True) | 400,000 | 1,477,226 | 8,078 | 8.08 | 3,079,540 | 3,071,406.7 | 3,058,068 | +| Callvalue (0.4M, From Origin True, Non Zero Value False) | 400,000 | 1,477,226 | 7,084 | 7.08 | 10,153,600 | 10,153,600 | 10,148,720 | +| Callvalue (0.4M, From Origin True, Non Zero Value True) | 400,000 | 1,477,226 | 7,566 | 7.57 | 4,826,556 | 4,814,844 | 4,808,012 | +| Dup (0.4M, Dup10) | 400,000 | 1,477,226 | 6,571 | 6.57 | 3,653,420 | 3,652,444 | 3,642,684 | +| Dup (0.4M, Dup11) | 400,000 | 1,477,226 | 6,557 | 6.56 | 5,344,796 | 5,344,796 | 5,336,012 | +| Dup (0.4M, Dup12) | 400,000 | 1,477,226 | 7,080 | 7.08 | 11,721,192 | 11,714,412 | 11,720,216 | +| Dup (0.4M, Dup13) | 400,000 | 1,477,226 | 7,090 | 7.09 | 5,738,100 | 5,735,416 | 5,733,220 | +| Dup (0.4M, Dup14) | 400,000 | 1,477,226 | 7,058 | 7.06 | 7,720,908 | 7,718,305.3 | 7,705,292 | +| Dup (0.4M, Dup15) | 400,000 | 1,477,226 | 7,576 | 7.58 | 2,747,708 | 2,736,972 | 2,718,428 | +| Dup (0.4M, Dup16) | 400,000 | 1,477,226 | 7,086 | 7.09 | 12,494,996 | 12,488,460 | 12,494,996 | +| Dup (0.4M, Dup1) | 400,000 | 1,477,226 | 7,068 | 7.07 | 1,815,640 | 1,808,157.3 | 1,794,168 | +| Dup (0.4M, Dup2) | 400,000 | 1,477,226 | 7,079 | 7.08 | 13,475,876 | 13,464,977.3 | 13,460,260 | +| Dup (0.4M, Dup3) | 400,000 | 1,477,226 | 7,072 | 7.07 | 4,299,532 | 4,294,652 | 4,287,820 | +| Dup (0.4M, Dup4) | 400,000 | 1,477,226 | 6,571 | 6.57 | 8,300,756 | 8,299,129.3 | 8,293,924 | +| Dup (0.4M, Dup5) | 400,000 | 1,477,226 | 7,069 | 7.07 | 8,647,616 | 8,647,616 | 8,635,904 | +| Dup (0.4M, Dup6) | 400,000 | 1,477,226 | 7,069 | 7.07 | 8,736,480 | 8,727,370.7 | 8,713,056 | +| Dup (0.4M, Dup7) | 400,000 | 1,477,226 | 7,055 | 7.05 | 6,836,080 | 6,832,176 | 6,823,392 | +| Dup (0.4M, Dup8) | 400,000 | 1,477,226 | 7,086 | 7.09 | 6,421,296 | 6,421,296 | 6,406,656 | +| Dup (0.4M, Dup9) | 400,000 | 1,477,226 | 7,571 | 7.57 | 7,701,388 | 7,701,388 | 7,684,796 | +| Jumpdests (0.4M) | 400,000 | 1,477,226 | 6,572 | 6.57 | 534,160 | 521,374.4 | 500,000 | +| Jumpi Fallthrough (0.4M) | 400,000 | 1,477,226 | 8,081 | 8.08 | 9,089,576 | 9,085,346.7 | 9,078,840 | +| Jumpis (0.4M) | 400,000 | 1,477,226 | 7,090 | 7.09 | 3,327,436 | 3,327,436 | 3,325,484 | +| Jumps (0.4M) | 400,000 | 1,477,226 | 7,076 | 7.08 | 5,653,188 | 5,648,958.7 | 5,640,500 | +| Keccak (0.4M) | 400,000 | 1,477,226 | 8,624 | 8.62 | 2,955,592 | 2,943,026 | 2,931,192 | +| Memory Access (0.4M, Small Mem, Uninit Offset, Off 0, Mload) | 400,000 | 1,477,226 | 8,069 | 8.07 | 11,451,764 | 11,449,161.3 | 11,443,956 | +| Memory Access (0.4M, Small Mem, Uninit Offset, Off 0, Mstore8) | 400,000 | 1,477,226 | 7,568 | 7.57 | 8,635,904 | 8,633,812.6 | 8,627,120 | +| Memory Access (0.4M, Small Mem, Uninit Offset, Off 0, Mstore) | 400,000 | 1,477,226 | 8,072 | 8.07 | 6,878,048 | 6,871,704 | 6,867,312 | +| Memory Access (0.4M, Small Mem, Uninit Offset, Off 1, Mload) | 400,000 | 1,477,226 | 7,584 | 7.58 | 1,275,912 | 1,273,123.4 | 1,263,224 | +| Memory Access (0.4M, Small Mem, Uninit Offset, Off 1, Mstore8) | 400,000 | 1,477,226 | 6,559 | 6.56 | 3,214,228 | 3,211,788 | 3,188,852 | +| Memory Access (0.4M, Small Mem, Uninit Offset, Off 1, Mstore) | 400,000 | 1,477,226 | 8,086 | 8.09 | 10,573,632 | 10,573,632 | 10,570,704 | +| Memory Access (0.4M, Small Mem, Uninit Offset, Off 31, Mload) | 400,000 | 1,477,226 | 7,574 | 7.57 | 1,498,440 | 1,489,330.7 | 1,475,992 | +| Memory Access (0.4M, Small Mem, Uninit Offset, Off 31, Mstore8) | 400,000 | 1,477,226 | 6,597 | 6.60 | 2,281,180 | 2,278,530.9 | 2,266,540 | +| Memory Access (0.4M, Small Mem, Uninit Offset, Off 31, Mstore) | 400,000 | 1,477,226 | 8,083 | 8.08 | 13,356,360 | 13,355,708 | 13,349,528 | +| Memory Access (0.4M, Small Mem, Init Offset, Off 0, Mload) | 400,000 | 1,477,226 | 8,077 | 8.08 | 6,856,576 | 6,856,576 | 6,853,648 | +| Memory Access (0.4M, Small Mem, Init Offset, Off 0, Mstore8) | 400,000 | 1,477,226 | 7,067 | 7.07 | 12,064,132 | 12,058,312 | 12,047,124 | +| Memory Access (0.4M, Small Mem, Init Offset, Off 0, Mstore) | 400,000 | 1,477,226 | 8,590 | 8.59 | 11,261,572 | 11,261,572 | 11,257,668 | +| Memory Access (0.4M, Small Mem, Init Offset, Off 1, Mload) | 400,000 | 1,477,226 | 7,555 | 7.55 | 8,101,112 | 8,096,789.7 | 8,091,352 | +| Memory Access (0.4M, Small Mem, Init Offset, Off 1, Mstore8) | 400,000 | 1,477,226 | 7,074 | 7.07 | 8,649,360 | 8,649,360 | 8,647,616 | +| Memory Access (0.4M, Small Mem, Init Offset, Off 1, Mstore) | 400,000 | 1,477,226 | 8,578 | 8.58 | 8,620,288 | 8,619,800 | 8,611,504 | +| Memory Access (0.4M, Small Mem, Init Offset, Off 31, Mload) | 400,000 | 1,477,226 | 8,088 | 8.09 | 6,371,520 | 6,371,520 | 6,353,952 | +| Memory Access (0.4M, Small Mem, Init Offset, Off 31, Mstore8) | 400,000 | 1,477,226 | 7,079 | 7.08 | 834,764 | 820,567.6 | 796,700 | +| Memory Access (0.4M, Small Mem, Init Offset, Off 31, Mstore) | 400,000 | 1,477,226 | 7,575 | 7.58 | 4,157,036 | 4,156,757.1 | 4,152,156 | +| Memory Access (0.4M, Big Mem, Uninit Offset, Off 0, Mload) | 400,000 | 1,477,226 | 8,076 | 8.08 | 6,171,440 | 6,169,627.4 | 6,167,536 | +| Memory Access (0.4M, Big Mem, Uninit Offset, Off 0, Mstore8) | 400,000 | 1,477,226 | 7,077 | 7.08 | 5,590,728 | 5,579,178.7 | 5,571,208 | +| Memory Access (0.4M, Big Mem, Uninit Offset, Off 0, Mstore) | 400,000 | 1,477,226 | 8,093 | 8.09 | 5,360,412 | 5,354,695.4 | 5,350,652 | +| Memory Access (0.4M, Big Mem, Uninit Offset, Off 1, Mload) | 400,000 | 1,477,226 | 7,581 | 7.58 | 11,209,716 | 11,206,300 | 11,199,956 | +| Memory Access (0.4M, Big Mem, Uninit Offset, Off 1, Mstore8) | 400,000 | 1,477,226 | 7,074 | 7.07 | 10,315,204 | 10,300,564 | 10,288,852 | +| Memory Access (0.4M, Big Mem, Uninit Offset, Off 1, Mstore) | 400,000 | 1,477,226 | 8,094 | 8.09 | 6,823,396 | 6,816,564 | 6,804,852 | +| Memory Access (0.4M, Big Mem, Uninit Offset, Off 31, Mload) | 400,000 | 1,477,226 | 8,081 | 8.08 | 7,604,764 | 7,604,764 | 7,594,028 | +| Memory Access (0.4M, Big Mem, Uninit Offset, Off 31, Mstore8) | 400,000 | 1,477,226 | 7,077 | 7.08 | 8,362,192 | 8,359,752 | 8,350,480 | +| Memory Access (0.4M, Big Mem, Uninit Offset, Off 31, Mstore) | 400,000 | 1,477,226 | 8,608 | 8.61 | 10,201,420 | 10,200,729.3 | 10,196,540 | +| Memory Access (0.4M, Big Mem, Init Offset, Off 0, Mload) | 400,000 | 1,477,226 | 7,570 | 7.57 | 2,308,508 | 2,297,284 | 2,283,132 | +| Memory Access (0.4M, Big Mem, Init Offset, Off 0, Mstore8) | 400,000 | 1,477,226 | 7,075 | 7.08 | 11,198,004 | 11,195,466.4 | 11,194,100 | +| Memory Access (0.4M, Big Mem, Init Offset, Off 0, Mstore) | 400,000 | 1,477,226 | 8,076 | 8.08 | 4,707,488 | 4,705,698.7 | 4,697,728 | +| Memory Access (0.4M, Big Mem, Init Offset, Off 1, Mload) | 400,000 | 1,477,226 | 7,585 | 7.58 | 6,503,280 | 6,499,376 | 6,489,616 | +| Memory Access (0.4M, Big Mem, Init Offset, Off 1, Mstore8) | 400,000 | 1,477,226 | 7,072 | 7.07 | 8,577,344 | 8,577,344 | 8,556,848 | +| Memory Access (0.4M, Big Mem, Init Offset, Off 1, Mstore) | 400,000 | 1,477,226 | 8,069 | 8.07 | 11,216,624 | 11,215,322.7 | 11,214,672 | +| Memory Access (0.4M, Big Mem, Init Offset, Off 31, Mload) | 400,000 | 1,477,226 | 8,582 | 8.58 | 6,719,940 | 6,719,940 | 6,710,180 | +| Memory Access (0.4M, Big Mem, Init Offset, Off 31, Mstore8) | 400,000 | 1,477,226 | 6,570 | 6.57 | 4,392,252 | 4,389,568 | 4,382,492 | +| Memory Access (0.4M, Big Mem, Init Offset, Off 31, Mstore) | 400,000 | 1,477,226 | 8,068 | 8.07 | 4,808,012 | 4,802,400 | 4,793,372 | +| Mod (0.4M, Op Mod, Mod Bits 127) | 400,000 | 1,477,226 | 14,642 | 14.64 | 4,682,116 | 4,676,817.7 | 4,672,356 | +| Mod (0.4M, Op Mod, Mod Bits 191) | 400,000 | 1,477,226 | 15,635 | 15.63 | 9,172,076 | 9,162,734.3 | 9,136,940 | +| Mod (0.4M, Op Mod, Mod Bits 255) | 400,000 | 1,477,226 | 14,642 | 14.64 | 5,084,212 | 5,082,260 | 5,079,332 | +| Mod (0.4M, Op Mod, Mod Bits 63) | 400,000 | 1,477,226 | 11,622 | 11.62 | 8,290,996 | 8,283,885.1 | 8,260,740 | +| Mod (0.4M, Op Smod, Mod Bits 127) | 400,000 | 1,477,226 | 13,649 | 13.65 | 6,438,864 | 6,435,936 | 6,421,296 | +| Mod (0.4M, Op Smod, Mod Bits 191) | 400,000 | 1,477,226 | 16,661 | 16.66 | 11,726,176 | 11,726,176 | 11,708,608 | +| Mod (0.4M, Op Smod, Mod Bits 255) | 400,000 | 1,477,226 | 14,651 | 14.65 | 908,940 | 882,051.2 | 834,764 | +| Mod (0.4M, Op Smod, Mod Bits 63) | 400,000 | 1,477,226 | 11,603 | 11.60 | 3,734,428 | 3,713,322 | 3,698,316 | +| Modarith (0.4M, Op Addmod, Mod Bits 127) | 400,000 | 1,477,226 | 11,125 | 11.12 | 2,345,596 | 2,334,581.1 | 2,328,028 | +| Modarith (0.4M, Op Addmod, Mod Bits 191) | 400,000 | 1,477,226 | 13,131 | 13.13 | 12,622,736 | 12,619,668.6 | 12,614,928 | +| Modarith (0.4M, Op Addmod, Mod Bits 255) | 400,000 | 1,477,226 | 11,135 | 11.13 | 3,032,692 | 3,032,692 | 3,004,388 | +| Modarith (0.4M, Op Addmod, Mod Bits 63) | 400,000 | 1,477,226 | 10,092 | 10.09 | 12,123,376 | 12,122,400 | 12,096,048 | +| Modarith (0.4M, Op Mulmod, Mod Bits 127) | 400,000 | 1,477,226 | 17,157 | 17.16 | 11,437,224 | 11,421,709.1 | 11,411,828 | +| Modarith (0.4M, Op Mulmod, Mod Bits 191) | 400,000 | 1,477,226 | 20,701 | 20.70 | 2,232,384 | 2,219,439.5 | 2,197,252 | +| Modarith (0.4M, Op Mulmod, Mod Bits 255) | 400,000 | 1,477,226 | 20,177 | 20.18 | 11,811,176 | 11,800,374.9 | 11,780,920 | +| Modarith (0.4M, Op Mulmod, Mod Bits 63) | 400,000 | 1,477,226 | 14,170 | 14.17 | 4,599,160 | 4,590,376 | 4,583,544 | +| Modexp (0.4M, Mod 1045 Gas Base Heavy) | 400,000 | 1,477,226 | 159,140 | 159.14 | 4,258,540 | 4,230,358 | 4,167,772 | +| Modexp (0.4M, Mod 1360 Gas Balanced) | 400,000 | 1,477,226 | 41,967 | 41.97 | 3,153,716 | 3,128,886.6 | 3,098,084 | +| Modexp (0.4M, Mod 400 Gas Exp Heavy) | 400,000 | 1,477,226 | 50,022 | 50.02 | 4,642,100 | 4,623,488.7 | 4,598,180 | +| Modexp (0.4M, Mod 408 Gas Balanced) | 400,000 | 1,477,226 | 37,355 | 37.35 | 9,441,252 | 9,432,793.3 | 9,424,660 | +| Modexp (0.4M, Mod 408 Gas Base Heavy) | 400,000 | 1,477,226 | 141,965 | 141.97 | 9,998,096 | 9,951,013.4 | 9,893,248 | +| Modexp (0.4M, Mod 600 As Balanced) | 400,000 | 1,477,226 | 36,856 | 36.86 | 613,216 | 591,648.5 | 536,112 | +| Modexp (0.4M, Mod 600 Gas Exp Heavy) | 400,000 | 1,477,226 | 53,547 | 53.55 | 1,168,552 | 1,116,682.0 | 1,069,000 | +| Modexp (0.4M, Mod 616 Gas Base Heavy) | 400,000 | 1,477,226 | 151,038 | 151.04 | 3,940,364 | 3,873,097.1 | 3,754,924 | +| Modexp (0.4M, Mod 677 Gas Base Heavy) | 400,000 | 1,477,226 | 40,388 | 40.39 | 9,424,660 | 9,402,052.8 | 9,389,900 | +| Modexp (0.4M, Mod 765 Gas Exp Heavy) | 400,000 | 1,477,226 | 44,978 | 44.98 | 5,282,336 | 5,264,054.8 | 5,246,224 | +| Modexp (0.4M, Mod 767 Gas Balanced) | 400,000 | 1,477,226 | 36,872 | 36.87 | 8,210,424 | 8,185,698.7 | 8,152,840 | +| Modexp (0.4M, Mod 800 Gas Base Heavy) | 400,000 | 1,477,226 | 158,139 | 158.14 | 6,154,848 | 6,083,737.6 | 5,991,856 | +| Modexp (0.4M, Mod 800 Gas Exp Heavy) | 400,000 | 1,477,226 | 55,600 | 55.60 | 13,103,348 | 13,049,663.5 | 12,995,720 | +| Modexp (0.4M, Mod 852 Gas Exp Heavy) | 400,000 | 1,477,226 | 56,056 | 56.06 | 13,164,652 | 13,136,370.3 | 13,113,132 | +| Modexp (0.4M, Mod 867 Gas Base Heavy) | 400,000 | 1,477,226 | 159,208 | 159.21 | 6,267,088 | 6,234,245.6 | 6,204,624 | +| Modexp (0.4M, Mod 996 Gas Balanced) | 400,000 | 1,477,226 | 37,406 | 37.41 | 12,099,444 | 12,083,554.6 | 12,063,156 | +| Modexp (0.4M, Mod Even 1024B Exp 1024) | 400,000 | 1,477,226 | 6,068 | 6.07 | 3,641,708 | 3,640,732 | 3,635,852 | +| Modexp (0.4M, Mod Even 128B Exp 1024) | 400,000 | 1,477,226 | 35,842 | 35.84 | 7,123,996 | 7,123,996 | 7,117,164 | +| Modexp (0.4M, Mod Even 16B Exp 320) | 400,000 | 1,477,226 | 52,050 | 52.05 | 6,606,724 | 6,580,581.1 | 6,560,852 | +| Modexp (0.4M, Mod Even 24B Exp 168) | 400,000 | 1,477,226 | 43,461 | 43.46 | 13,528,000 | 13,495,248.6 | 13,477,296 | +| Modexp (0.4M, Mod Even 256B Exp 1024) | 400,000 | 1,477,226 | 33,840 | 33.84 | 11,227,940 | 11,227,452 | 11,216,624 | +| Modexp (0.4M, Mod Even 32B Exp 256) | 400,000 | 1,477,226 | 42,915 | 42.91 | 3,634,876 | 3,611,491.0 | 3,577,292 | +| Modexp (0.4M, Mod Even 32B Exp 40) | 400,000 | 1,477,226 | 36,355 | 36.35 | 2,447,100 | 2,447,100 | 2,376,828 | +| Modexp (0.4M, Mod Even 32B Exp 96) | 400,000 | 1,477,226 | 40,443 | 40.44 | 11,956,992 | 11,936,879.5 | 11,882,248 | +| Modexp (0.4M, Mod Even 512B Exp 1024) | 400,000 | 1,477,226 | 6,563 | 6.56 | 5,123,252 | 5,120,128.8 | 5,118,372 | +| Modexp (0.4M, Mod Even 64B Exp 512) | 400,000 | 1,477,226 | 40,857 | 40.86 | 1,068,024 | 1,013,638.0 | 939,192 | +| Modexp (0.4M, Mod Even 8B Exp 896) | 400,000 | 1,477,226 | 86,361 | 86.36 | 12,451,268 | 12,396,980.3 | 12,344,700 | +| Modexp (0.4M, Mod Exp 208 Gas Balanced) | 400,000 | 1,477,226 | 34,894 | 34.89 | 6,476,928 | 6,457,329.9 | 6,438,864 | +| Modexp (0.4M, Mod Exp 215 Gas Exp Heavy) | 400,000 | 1,477,226 | 77,253 | 77.25 | 13,351,188 | 13,310,351.8 | 13,211,904 | +| Modexp (0.4M, Mod Exp 298 Gas Exp Heavy) | 400,000 | 1,477,226 | 84,934 | 84.93 | 5,027,608 | 5,003,366.3 | 4,973,928 | +| Modexp (0.4M, Mod Min As Balanced) | 400,000 | 1,477,226 | 36,816 | 36.82 | 8,555,872 | 8,511,789.3 | 8,497,312 | +| Modexp (0.4M, Mod Min As Base Heavy) | 400,000 | 1,477,226 | 115,145 | 115.14 | 12,862,296 | 12,797,258.4 | 12,728,536 | +| Modexp (0.4M, Mod Min As Exp Heavy) | 400,000 | 1,477,226 | 76,303 | 76.30 | 1,985,464 | 1,963,355.5 | 1,926,904 | +| Modexp (0.4M, Mod Odd 1024B Exp 1024) | 400,000 | 1,477,226 | 6,077 | 6.08 | 658,108 | 650,722 | 637,616 | +| Modexp (0.4M, Mod Odd 128B Exp 1024) | 400,000 | 1,477,226 | 35,859 | 35.86 | 5,336,012 | 5,322,055.2 | 5,302,828 | +| Modexp (0.4M, Mod Odd 256B Exp 1024) | 400,000 | 1,477,226 | 34,312 | 34.31 | 4,479,116 | 4,463,203.0 | 4,442,028 | +| Modexp (0.4M, Mod Odd 32B Exp 256) | 400,000 | 1,477,226 | 42,442 | 42.44 | 9,705,204 | 9,682,805.3 | 9,663,212 | +| Modexp (0.4M, Mod Odd 32B Exp 96) | 400,000 | 1,477,226 | 39,381 | 39.38 | 7,408,092 | 7,392,847.5 | 7,361,396 | +| Modexp (0.4M, Mod Odd 32B Exp Cover Windows) | 400,000 | 1,477,226 | 32,325 | 32.33 | 1,424,264 | 1,387,025.8 | 1,338,376 | +| Modexp (0.4M, Mod Odd 512B Exp 1024) | 400,000 | 1,477,226 | 5,559 | 5.56 | 2,927,288 | 2,924,555.2 | 2,917,528 | +| Modexp (0.4M, Mod Odd 64B Exp 512) | 400,000 | 1,477,226 | 41,418 | 41.42 | 11,303,528 | 11,299,258 | 11,292,792 | +| Modexp (0.4M, Mod Pawel 2) | 400,000 | 1,477,226 | 50,480 | 50.48 | 12,030,392 | 11,994,932 | 11,957,896 | +| Modexp (0.4M, Mod Pawel 3) | 400,000 | 1,477,226 | 42,445 | 42.45 | 9,735,948 | 9,731,751.2 | 9,704,716 | +| Modexp (0.4M, Mod Pawel 4) | 400,000 | 1,477,226 | 39,426 | 39.43 | 9,363,392 | 9,334,748.2 | 9,291,924 | +| Modexp (0.4M, Mod Vul Common 1152N1) | 400,000 | 1,477,226 | 25,785 | 25.79 | 10,242,816 | 10,222,207.7 | 10,210,340 | +| Modexp (0.4M, Mod Vul Common 1349N1) | 400,000 | 1,477,226 | 35,371 | 35.37 | 7,876,012 | 7,848,424.5 | 7,803,860 | +| Modexp (0.4M, Mod Vul Common 1360N1) | 400,000 | 1,477,226 | 37,886 | 37.89 | 5,429,696 | 5,429,696 | 5,422,864 | +| Modexp (0.4M, Mod Vul Common 1360N2) | 400,000 | 1,477,226 | 34,884 | 34.88 | 8,415,872 | 8,407,349.1 | 8,387,568 | +| Modexp (0.4M, Mod Vul Common 200N1) | 400,000 | 1,477,226 | 22,712 | 22.71 | 10,667,032 | 10,649,942 | 10,616,280 | +| Modexp (0.4M, Mod Vul Common 200N2) | 400,000 | 1,477,226 | 25,764 | 25.76 | 10,373,384 | 10,367,632.6 | 10,356,060 | +| Modexp (0.4M, Mod Vul Common 200N3) | 400,000 | 1,477,226 | 26,275 | 26.27 | 1,601,896 | 1,572,762.4 | 1,529,672 | +| Modexp (0.4M, Mod Vul Example 1) | 400,000 | 1,477,226 | 42,424 | 42.42 | 5,717,604 | 5,688,974.7 | 5,653,188 | +| Modexp (0.4M, Mod Vul Example 2) | 400,000 | 1,477,226 | 39,446 | 39.45 | 5,860,096 | 5,806,090.7 | 5,789,824 | +| Modexp (0.4M, Mod Vul Guido 1 Even) | 400,000 | 1,477,226 | 32,309 | 32.31 | 13,681,616 | 13,621,815 | 13,588,868 | +| Modexp (0.4M, Mod Vul Guido 2 Even) | 400,000 | 1,477,226 | 48,532 | 48.53 | 12,949,560 | 12,917,450.3 | 12,886,884 | +| Modexp (0.4M, Mod Vul Guido 3 Even) | 400,000 | 1,477,226 | 82,843 | 82.84 | 4,580,620 | 4,539,329.8 | 4,481,068 | +| Modexp (0.4M, Mod Vul Marius 1 Even) | 400,000 | 1,477,226 | 44,951 | 44.95 | 2,882,396 | 2,851,225 | 2,828,716 | +| Modexp (0.4M, Mod Vul Nagydani 1 Pow 0X10001) | 400,000 | 1,477,226 | 31,315 | 31.32 | 7,776,536 | 7,763,049.5 | 7,720,904 | +| Modexp (0.4M, Mod Vul Nagydani 1 Qube) | 400,000 | 1,477,226 | 24,754 | 24.75 | 1,727,800 | 1,698,910.4 | 1,659,480 | +| Modexp (0.4M, Mod Vul Nagydani 1 Square) | 400,000 | 1,477,226 | 23,241 | 23.24 | 12,598,272 | 12,582,933.2 | 12,562,744 | +| Modexp (0.4M, Mod Vul Nagydani 2 Pow 0X10001) | 400,000 | 1,477,226 | 32,823 | 32.82 | 11,324,576 | 11,314,425.6 | 11,305,056 | +| Modexp (0.4M, Mod Vul Nagydani 2 Qube) | 400,000 | 1,477,226 | 65,169 | 65.17 | 4,382,492 | 4,347,415.2 | 4,305,388 | +| Modexp (0.4M, Mod Vul Nagydani 2 Square) | 400,000 | 1,477,226 | 60,119 | 60.12 | 12,688,680 | 12,663,952 | 12,649,088 | +| Modexp (0.4M, Mod Vul Nagydani 3 Pow 0X10001) | 400,000 | 1,477,226 | 32,355 | 32.35 | 4,974,908 | 4,962,870.7 | 4,946,604 | +| Modexp (0.4M, Mod Vul Nagydani 3 Qube) | 400,000 | 1,477,226 | 152,006 | 152.01 | 9,638,676 | 9,567,769.6 | 9,511,448 | +| Modexp (0.4M, Mod Vul Nagydani 3 Square) | 400,000 | 1,477,226 | 138,915 | 138.91 | 3,529,468 | 3,438,421.1 | 3,350,860 | +| Modexp (0.4M, Mod Vul Nagydani 4 Pow 0X10001) | 400,000 | 1,477,226 | 31,282 | 31.28 | 10,558,680 | 10,550,384 | 10,538,184 | +| Modexp (0.4M, Mod Vul Nagydani 4 Qube) | 400,000 | 1,477,226 | 178,272 | 178.27 | 10,132,128 | 10,068,567.9 | 9,999,072 | +| Modexp (0.4M, Mod Vul Nagydani 4 Square) | 400,000 | 1,477,226 | 163,615 | 163.62 | 11,707,156 | 11,614,459.3 | 11,536,096 | +| Modexp (0.4M, Mod Vul Nagydani 5 Pow 0X10001) | 400,000 | 1,477,226 | 24,729 | 24.73 | 11,180,772 | 11,164,333.3 | 11,151,676 | +| Modexp (0.4M, Mod Vul Nagydani 5 Qube) | 400,000 | 1,477,226 | 174,725 | 174.72 | 4,151,180 | 4,113,004 | 4,077,004 | +| Modexp (0.4M, Mod Vul Nagydani 5 Square) | 400,000 | 1,477,226 | 161,129 | 161.13 | 7,880,892 | 7,880,892 | 7,878,940 | +| Modexp (0.4M, Mod Vul Pawel 1 Exp Heavy) | 400,000 | 1,477,226 | 80,339 | 80.34 | 12,338,552 | 12,292,409.4 | 12,234,104 | +| Modexp (0.4M, Mod Vul Pawel 2 Exp Heavy) | 400,000 | 1,477,226 | 48,508 | 48.51 | 2,196,276 | 2,158,008.7 | 2,115,268 | +| Modexp (0.4M, Mod Vul Pawel 3 Exp Heavy) | 400,000 | 1,477,226 | 40,396 | 40.40 | 10,498,876 | 10,465,780.3 | 10,443,092 | +| Modexp (0.4M, Mod Vul Pawel 4 Exp Heavy) | 400,000 | 1,477,226 | 37,328 | 37.33 | 6,766,788 | 6,752,026 | 6,719,940 | +| Msize (0.4M, Mem Size 0) | 400,000 | 1,477,226 | 8,074 | 8.07 | 7,794,104 | 7,793,128 | 7,776,536 | +| Msize (0.4M, Mem Size 1000000) | 400,000 | 1,477,226 | 7,574 | 7.57 | 5,634,648 | 5,634,648 | 5,622,936 | +| Msize (0.4M, Mem Size 100000) | 400,000 | 1,477,226 | 8,073 | 8.07 | 6,341,264 | 6,335,798.4 | 6,325,648 | +| Msize (0.4M, Mem Size 1000) | 400,000 | 1,477,226 | 8,081 | 8.08 | 9,191,596 | 9,188,528.6 | 9,173,052 | +| Msize (0.4M, Mem Size 1) | 400,000 | 1,477,226 | 8,075 | 8.07 | 4,402,988 | 4,397,945.3 | 4,393,228 | +| Precompile Fixed Cost (0.4M, Blake2F) | 400,000 | 1,477,226 | 31,262 | 31.26 | 2,826,764 | 2,811,392 | 2,781,868 | +| Precompile Fixed Cost (0.4M, Bls12 Fp To G1) | 400,000 | 1,477,226 | 61,614 | 61.61 | 7,112,288 | 7,009,808 | 6,976,624 | +| Precompile Fixed Cost (0.4M, Bls12 Fp To G2) | 400,000 | 1,477,226 | 45,470 | 45.47 | 5,220,852 | 5,197,102.7 | 5,149,604 | +| Precompile Fixed Cost (0.4M, Bls12 G1Add) | 400,000 | 1,477,226 | 37,422 | 37.42 | 12,545,836 | 12,525,583.6 | 12,494,316 | +| Precompile Fixed Cost (0.4M, Bls12 G1Msm) | 400,000 | 1,477,226 | 6,566 | 6.57 | 10,532,452 | 10,521,356.7 | 10,498,876 | +| Precompile Fixed Cost (0.4M, Bls12 G2Add) | 400,000 | 1,477,226 | 39,901 | 39.90 | 5,957,696 | 5,909,796.9 | 5,878,640 | +| Precompile Fixed Cost (0.4M, Bls12 G2Msm) | 400,000 | 1,477,226 | 6,056 | 6.06 | 5,379,932 | 5,379,932 | 5,373,100 | +| Precompile Fixed Cost (0.4M, Bls12 Pairing Check) | 400,000 | 1,477,226 | 55,570 | 55.57 | 4,928,060 | 4,899,539.1 | 4,869,500 | +| Precompile Fixed Cost (0.4M, Bn128 Add) | 400,000 | 1,477,226 | 14,161 | 14.16 | 1,199,784 | 1,195,099.2 | 1,186,120 | +| Precompile Fixed Cost (0.4M, Bn128 Add 1 2) | 400,000 | 1,477,226 | 10,105 | 10.11 | 10,280,532 | 10,275,983 | 10,260,872 | +| Precompile Fixed Cost (0.4M, Bn128 Add Infinities) | 400,000 | 1,477,226 | 7,593 | 7.59 | 2,470,524 | 2,466,620 | 2,451,980 | +| Precompile Fixed Cost (0.4M, Bn128 Mul) | 400,000 | 1,477,226 | 20,723 | 20.72 | 8,451,440 | 8,433,802.3 | 8,415,328 | +| Precompile Fixed Cost (0.4M, Bn128 Mul 1 2 2 Scalar) | 400,000 | 1,477,226 | 7,085 | 7.08 | 2,113,320 | 2,104,048 | 2,096,728 | +| Precompile Fixed Cost (0.4M, Bn128 Mul 1 2 32 Byte Scalar) | 400,000 | 1,477,226 | 19,224 | 19.22 | 8,468,032 | 8,465,104 | 8,451,440 | +| Precompile Fixed Cost (0.4M, Bn128 Mul 32 Byte Coord And 2 Scalar) | 400,000 | 1,477,226 | 7,571 | 7.57 | 13,434,884 | 13,434,233.3 | 13,432,932 | +| Precompile Fixed Cost (0.4M, Bn128 Mul 32 Byte Coord And Scalar) | 400,000 | 1,477,226 | 20,189 | 20.19 | 9,230,436 | 9,227,182.7 | 9,220,676 | +| Precompile Fixed Cost (0.4M, Bn128 Mul Infinities 2 Scalar) | 400,000 | 1,477,226 | 7,571 | 7.57 | 9,652,720 | 9,643,285.3 | 9,633,200 | +| Precompile Fixed Cost (0.4M, Bn128 Mul Infinities 32 Byte Scalar) | 400,000 | 1,477,226 | 14,146 | 14.15 | 13,104,256 | 13,101,328 | 13,103,348 | +| Precompile Fixed Cost (0.4M, Bn128 One Pairing) | 400,000 | 1,477,226 | 12,101 | 12.10 | 499,024 | 442,880.8 | 339,936 | +| Precompile Fixed Cost (0.4M, Bn128 Two Pairings) | 400,000 | 1,477,226 | 14,138 | 14.14 | 10,260,876 | 10,260,386 | 10,238,428 | +| Precompile Fixed Cost (0.4M, Bn128 Two Pairings Empty) | 400,000 | 1,477,226 | 6,057 | 6.06 | 8,366,096 | 8,364,632 | 8,362,192 | +| Precompile Fixed Cost (0.4M, Ecrecover) | 400,000 | 1,477,226 | 10,092 | 10.09 | 8,484,624 | 8,481,305.6 | 8,475,840 | +| Precompile Fixed Cost (0.4M, Point Evaluation) | 400,000 | 1,477,226 | 142,472 | 142.47 | 4,073,100 | 4,004,682.4 | 3,951,100 | +| Precompile Only Data Input (0.4M, Identity) | 400,000 | 1,477,226 | 7,054 | 7.05 | 10,146,768 | 10,141,644 | 10,134,080 | +| Precompile Only Data Input (0.4M, Ripemd, 160) | 400,000 | 1,477,226 | 6,559 | 6.56 | 3,544,108 | 3,543,132 | 3,530,444 | +| Precompile Only Data Input (0.4M, Sha2, 256) | 400,000 | 1,477,226 | 10,078 | 10.08 | 6,661,380 | 6,659,102.7 | 6,656,500 | +| Push (0.4M, Push0) | 400,000 | 1,477,226 | 7,570 | 7.57 | 1,455,496 | 1,441,274.3 | 1,425,240 | +| Push (0.4M, Push10) | 400,000 | 1,477,226 | 7,571 | 7.57 | 2,581,788 | 2,580,161.3 | 2,571,052 | +| Push (0.4M, Push11) | 400,000 | 1,477,226 | 7,571 | 7.57 | 1,793,192 | 1,788,730.3 | 1,771,720 | +| Push (0.4M, Push12) | 400,000 | 1,477,226 | 7,571 | 7.57 | 2,321,196 | 2,321,196 | 2,308,508 | +| Push (0.4M, Push13) | 400,000 | 1,477,226 | 7,057 | 7.06 | 2,486,140 | 2,481,064.8 | 2,471,500 | +| Push (0.4M, Push14) | 400,000 | 1,477,226 | 8,065 | 8.06 | 2,717,452 | 2,714,198.7 | 2,704,764 | +| Push (0.4M, Push15) | 400,000 | 1,477,226 | 7,584 | 7.58 | 4,441,052 | 4,432,918.7 | 4,420,556 | +| Push (0.4M, Push16) | 400,000 | 1,477,226 | 7,082 | 7.08 | 13,384,660 | 13,383,440 | 13,376,852 | +| Push (0.4M, Push17) | 400,000 | 1,477,226 | 7,565 | 7.57 | 5,417,008 | 5,417,008 | 5,410,176 | +| Push (0.4M, Push18) | 400,000 | 1,477,226 | 7,585 | 7.58 | 12,985,960 | 12,972,368 | 12,955,848 | +| Push (0.4M, Push19) | 400,000 | 1,477,226 | 8,094 | 8.09 | 795,724 | 781,609.5 | 754,732 | +| Push (0.4M, Push1) | 400,000 | 1,477,226 | 6,558 | 6.56 | 3,667,084 | 3,659,666.4 | 3,654,396 | +| Push (0.4M, Push20) | 400,000 | 1,477,226 | 8,081 | 8.08 | 1,184,168 | 1,175,492.4 | 1,167,576 | +| Push (0.4M, Push21) | 400,000 | 1,477,226 | 8,587 | 8.59 | 11,489,828 | 11,486,656 | 11,471,284 | +| Push (0.4M, Push22) | 400,000 | 1,477,226 | 8,089 | 8.09 | 9,481,040 | 9,479,518 | 9,472,256 | +| Push (0.4M, Push23) | 400,000 | 1,477,226 | 8,083 | 8.08 | 6,387,136 | 6,383,720 | 6,372,496 | +| Push (0.4M, Push24) | 400,000 | 1,477,226 | 8,097 | 8.10 | 5,508,752 | 5,498,829.3 | 5,490,208 | +| Push (0.4M, Push25) | 400,000 | 1,477,226 | 8,073 | 8.07 | 8,321,252 | 8,314,420 | 8,308,564 | +| Push (0.4M, Push26) | 400,000 | 1,477,226 | 8,068 | 8.07 | 1,529,672 | 1,516,333.3 | 1,505,272 | +| Push (0.4M, Push27) | 400,000 | 1,477,226 | 8,080 | 8.08 | 1,658,504 | 1,652,810.7 | 1,637,032 | +| Push (0.4M, Push28) | 400,000 | 1,477,226 | 7,590 | 7.59 | 2,960,472 | 2,959,333.3 | 2,956,568 | +| Push (0.4M, Push29) | 400,000 | 1,477,226 | 9,106 | 9.11 | 696,172 | 683,535.4 | 659,084 | +| Push (0.4M, Push2) | 400,000 | 1,477,226 | 7,060 | 7.06 | 2,529,084 | 2,506,636 | 2,487,116 | +| Push (0.4M, Push30) | 400,000 | 1,477,226 | 8,592 | 8.59 | 1,223,208 | 1,217,840 | 1,201,736 | +| Push (0.4M, Push31) | 400,000 | 1,477,226 | 8,101 | 8.10 | 636,640 | 629,320 | 616,144 | +| Push (0.4M, Push32) | 400,000 | 1,477,226 | 8,085 | 8.09 | 9,835,692 | 9,834,228 | 9,829,836 | +| Push (0.4M, Push3) | 400,000 | 1,477,226 | 7,559 | 7.56 | 11,508,372 | 11,505,108 | 11,508,372 | +| Push (0.4M, Push4) | 400,000 | 1,477,226 | 8,082 | 8.08 | 11,765,216 | 11,760,173.3 | 11,744,720 | +| Push (0.4M, Push5) | 400,000 | 1,477,226 | 7,085 | 7.08 | 12,183,120 | 12,172,140 | 12,159,696 | +| Push (0.4M, Push6) | 400,000 | 1,477,226 | 7,568 | 7.57 | 5,089,092 | 5,089,092 | 5,088,116 | +| Push (0.4M, Push7) | 400,000 | 1,477,226 | 7,570 | 7.57 | 8,151,864 | 8,151,864 | 8,138,200 | +| Push (0.4M, Push8) | 400,000 | 1,477,226 | 6,565 | 6.57 | 939,192 | 928,676.4 | 909,916 | +| Push (0.4M, Push9) | 400,000 | 1,477,226 | 7,567 | 7.57 | 9,217,752 | 9,210,890 | 9,203,908 | +| Return Revert (0.4M, 1Kib Of Non, Zero Data, Return) | 400,000 | 1,477,226 | 7,562 | 7.56 | 12,445,544 | 12,444,958.4 | 12,441,640 | +| Return Revert (0.4M, 1Kib Of Non, Zero Data, Revert) | 400,000 | 1,477,226 | 8,601 | 8.60 | 9,511,448 | 9,504,286.9 | 9,490,568 | +| Return Revert (0.4M, 1Kib Of Zero Data, Return) | 400,000 | 1,477,226 | 8,077 | 8.08 | 5,149,604 | 5,147,652 | 5,143,748 | +| Return Revert (0.4M, 1Kib Of Zero Data, Revert) | 400,000 | 1,477,226 | 8,090 | 8.09 | 5,050,056 | 5,050,056 | 5,043,224 | +| Return Revert (0.4M, 1Mib Of Non, Zero Data, Return) | 400,000 | 1,477,226 | 6,072 | 6.07 | 3,548,988 | 3,548,988 | 3,546,060 | +| Return Revert (0.4M, 1Mib Of Non, Zero Data, Revert) | 400,000 | 1,477,226 | 6,572 | 6.57 | 13,128,628 | 13,128,628 | 13,123,400 | +| Return Revert (0.4M, 1Mib Of Zero Data, Return) | 400,000 | 1,477,226 | 6,558 | 6.56 | 6,904,400 | 6,904,400 | 6,879,024 | +| Return Revert (0.4M, 1Mib Of Zero Data, Revert) | 400,000 | 1,477,226 | 6,064 | 6.06 | 9,193,172 | 9,193,172 | 9,191,596 | +| Return Revert (0.4M, Empty, Return) | 400,000 | 1,477,226 | 10,088 | 10.09 | 7,590,124 | 7,585,081.3 | 7,580,364 | +| Return Revert (0.4M, Empty, Revert) | 400,000 | 1,477,226 | 9,115 | 9.12 | 4,776,780 | 4,775,999.2 | 4,768,972 | +| Returndatasize Nonzero (0.4M, Returned Size 0, Return Data Style Returndatastyle.Identity) | 400,000 | 1,477,226 | 7,069 | 7.07 | 12,727,560 | 12,726,421.3 | 12,720,728 | +| Returndatasize Nonzero (0.4M, Returned Size 0, Return Data Style Returndatastyle.Return) | 400,000 | 1,477,226 | 7,081 | 7.08 | 5,570,236 | 5,570,236 | 5,562,428 | +| Returndatasize Nonzero (0.4M, Returned Size 0, Return Data Style Returndatastyle.Revert) | 400,000 | 1,477,226 | 7,064 | 7.06 | 12,022,884 | 12,022,884 | 12,019,572 | +| Returndatasize Nonzero (0.4M, Returned Size 1, Return Data Style Returndatastyle.Identity) | 400,000 | 1,477,226 | 7,571 | 7.57 | 9,777,908 | 9,771,354.9 | 9,750,580 | +| Returndatasize Nonzero (0.4M, Returned Size 1, Return Data Style Returndatastyle.Return) | 400,000 | 1,477,226 | 7,069 | 7.07 | 6,853,648 | 6,845,254.4 | 6,835,104 | +| Returndatasize Nonzero (0.4M, Returned Size 1, Return Data Style Returndatastyle.Revert) | 400,000 | 1,477,226 | 7,067 | 7.07 | 6,949,296 | 6,942,268.8 | 6,931,728 | +| Returndatasize Zero (0.4M) | 400,000 | 1,477,226 | 7,064 | 7.06 | 12,492,068 | 12,492,068 | 12,469,620 | +| Shifts (0.4M, Shift Right Sar) | 400,000 | 1,477,226 | 8,589 | 8.59 | 11,471,284 | 11,466,599.2 | 11,451,764 | +| Shifts (0.4M, Shift Right Shr) | 400,000 | 1,477,226 | 8,077 | 8.08 | 2,703,788 | 2,703,788 | 2,692,076 | +| Swap (0.4M, Swap10) | 400,000 | 1,477,226 | 10,107 | 10.11 | 2,613,996 | 2,610,254.7 | 2,599,356 | +| Swap (0.4M, Swap11) | 400,000 | 1,477,226 | 10,100 | 10.10 | 1,739,512 | 1,736,779.2 | 1,731,704 | +| Swap (0.4M, Swap12) | 400,000 | 1,477,226 | 9,596 | 9.60 | 3,264,976 | 3,260,096 | 3,253,264 | +| Swap (0.4M, Swap13) | 400,000 | 1,477,226 | 10,110 | 10.11 | 5,066,648 | 5,059,258.3 | 5,052,008 | +| Swap (0.4M, Swap14) | 400,000 | 1,477,226 | 9,596 | 9.60 | 12,131,084 | 12,131,084 | 12,128,224 | +| Swap (0.4M, Swap15) | 400,000 | 1,477,226 | 10,091 | 10.09 | 2,052,808 | 2,045,650.7 | 2,039,144 | +| Swap (0.4M, Swap16) | 400,000 | 1,477,226 | 9,586 | 9.59 | 8,688,400 | 8,681,877 | 8,668,880 | +| Swap (0.4M, Swap1) | 400,000 | 1,477,226 | 9,619 | 9.62 | 5,531,200 | 5,528,028 | 5,524,368 | +| Swap (0.4M, Swap2) | 400,000 | 1,477,226 | 10,100 | 10.10 | 13,567,832 | 13,558,616.9 | 13,539,528 | +| Swap (0.4M, Swap3) | 400,000 | 1,477,226 | 10,586 | 10.59 | 8,799,236 | 8,798,845.6 | 8,796,308 | +| Swap (0.4M, Swap4) | 400,000 | 1,477,226 | 10,099 | 10.10 | 12,047,268 | 12,035,165.6 | 12,022,868 | +| Swap (0.4M, Swap5) | 400,000 | 1,477,226 | 10,086 | 10.09 | 12,709,992 | 12,702,617.8 | 12,699,256 | +| Swap (0.4M, Swap6) | 400,000 | 1,477,226 | 10,105 | 10.11 | 11,710,084 | 11,707,762 | 11,707,156 | +| Swap (0.4M, Swap7) | 400,000 | 1,477,226 | 10,081 | 10.08 | 11,837,524 | 11,831,668 | 11,819,956 | +| Swap (0.4M, Swap8) | 400,000 | 1,477,226 | 10,107 | 10.11 | 10,869,696 | 10,862,050.7 | 10,842,984 | +| Swap (0.4M, Swap9) | 400,000 | 1,477,226 | 9,589 | 9.59 | 12,467,672 | 12,463,768 | 12,447,176 | +| Tload (0.4M, Val Mut False, Key Mut False) | 400,000 | 1,477,226 | 6,069 | 6.07 | 12,648,112 | 12,648,112 | 12,632,496 | +| Tload (0.4M, Val Mut False, Key Mut True) | 400,000 | 1,477,226 | 6,565 | 6.57 | 7,438,344 | 7,436,392 | 7,427,608 | +| Tload (0.4M, Val Mut True, Key Mut False) | 400,000 | 1,477,226 | 6,057 | 6.06 | 12,147,676 | 12,140,600 | 12,134,012 | +| Tload (0.4M, Val Mut True, Key Mut True) | 400,000 | 1,477,226 | 6,069 | 6.07 | 6,686,756 | 6,686,756 | 6,680,900 | +| Tstore (0.4M, Dense Val Mut False, Key Mut False) | 400,000 | 1,477,226 | 7,068 | 7.07 | 9,292,900 | 9,286,556 | 9,275,332 | +| Tstore (0.4M, Dense Val Mut False, Key Mut True) | 400,000 | 1,477,226 | 7,071 | 7.07 | 12,716,824 | 12,713,408 | 12,709,992 | +| Tstore (0.4M, Dense Val Mut True, Key Mut False) | 400,000 | 1,477,226 | 7,575 | 7.58 | 4,671,380 | 4,663,572 | 4,653,812 | +| Tstore (0.4M, Dense Val Mut True, Key Mut True) | 400,000 | 1,477,226 | 7,570 | 7.57 | 3,325,484 | 3,319,750 | 3,310,844 | +| Unop (0.4M, Iszero) | 400,000 | 1,477,226 | 9,594 | 9.59 | 1,338,376 | 1,323,248 | 1,301,288 | +| Unop (0.4M, Not) | 400,000 | 1,477,226 | 7,061 | 7.06 | 5,979,168 | 5,966,642.7 | 5,958,672 | +| Zero Param (0.4M, Address) | 400,000 | 1,477,226 | 9,589 | 9.59 | 5,245,248 | 5,231,828 | 5,220,848 | +| Zero Param (0.4M, Basefee) | 400,000 | 1,477,226 | 8,067 | 8.07 | 8,363,220 | 8,356,144 | 8,338,820 | +| Zero Param (0.4M, Blobbasefee) | 400,000 | 1,477,226 | 8,609 | 8.61 | 11,217,524 | 11,214,596 | 11,208,740 | +| Zero Param (0.4M, Caller) | 400,000 | 1,477,226 | 9,626 | 9.63 | 11,194,424 | 11,187,825.7 | 11,180,760 | +| Zero Param (0.4M, Chainid) | 400,000 | 1,477,226 | 7,566 | 7.57 | 8,927,640 | 8,921,396.6 | 8,905,040 | +| Zero Param (0.4M, Codesize) | 400,000 | 1,477,226 | 7,566 | 7.57 | 11,363,876 | 11,363,876 | 11,360,292 | +| Zero Param (0.4M, Coinbase) | 400,000 | 1,477,226 | 9,590 | 9.59 | 12,228,248 | 12,228,248 | 12,214,352 | +| Zero Param (0.4M, Gaslimit) | 400,000 | 1,477,226 | 8,577 | 8.58 | 9,747,660 | 9,745,952 | 9,741,804 | +| Zero Param (0.4M, Gasprice) | 400,000 | 1,477,226 | 8,068 | 8.07 | 8,866,000 | 8,854,162.3 | 8,838,688 | +| Zero Param (0.4M, Gas) | 400,000 | 1,477,226 | 8,081 | 8.08 | 5,733,220 | 5,733,220 | 5,720,532 | +| Zero Param (0.4M, Number) | 400,000 | 1,477,226 | 7,572 | 7.57 | 8,809,972 | 8,805,905.3 | 8,799,236 | +| Zero Param (0.4M, Origin) | 400,000 | 1,477,226 | 9,586 | 9.59 | 4,693,824 | 4,690,408 | 4,683,088 | +| Zero Param (0.4M, Prevrandao) | 400,000 | 1,477,226 | 10,095 | 10.10 | 5,987,952 | 5,984,210.7 | 5,979,168 | +| Zero Param (0.4M, Timestamp) | 400,000 | 1,477,226 | 8,083 | 8.08 | 6,189,008 | 6,181,444 | 6,174,368 | +| Calldatacopy (0.4M, Zero Data, Dynamic Src Dst, 0Bytes, Call) | 400,000 | 1,477,226 | 8,589 | 8.59 | 10,687,704 | 10,687,704 | 10,663,576 | +| Calldatacopy (0.4M, Zero Data, Dynamic Src Dst, 0Bytes, Transaction) | 400,000 | 1,477,226 | 7,582 | 7.58 | 4,767,020 | 4,765,068 | 4,759,212 | +| Calldatacopy (0.4M, Zero Data, Dynamic Src Dst, 100Bytes, Call) | 400,000 | 1,477,226 | 8,575 | 8.57 | 13,124,376 | 13,124,376 | 13,110,112 | +| Calldatacopy (0.4M, Zero Data, Dynamic Src Dst, 100Bytes, Transaction) | 400,000 | 1,477,226 | 7,058 | 7.06 | 1,638,008 | 1,629,834 | 1,613,608 | +| Calldatacopy (0.4M, Zero Data, Dynamic Src Dst, 10Kib, Call) | 400,000 | 1,477,226 | 7,057 | 7.06 | 11,709,480 | 11,709,480 | 11,702,080 | +| Calldatacopy (0.4M, Zero Data, Dynamic Src Dst, 10Kib, Transaction) | 400,000 | 1,477,226 | 6,064 | 6.06 | 9,664,432 | 9,663,700 | 9,659,552 | +| Calldatacopy (0.4M, Zero Data, Dynamic Src Dst, 1Mib, Call) | 400,000 | 1,477,226 | 6,060 | 6.06 | 7,183,764 | 7,182,300 | 7,175,956 | +| Calldatacopy (0.4M, Zero Data, Dynamic Src Dst, 1Mib, Transaction) | 400,000 | 1,477,226 | 6,076 | 6.08 | 719,596 | 711,521.8 | 697,148 | +| Calldatacopy (0.4M, Zero Data, Fixed Src Dst, 0Bytes, Call) | 400,000 | 1,477,226 | 7,567 | 7.57 | 4,728,960 | 4,725,056 | 4,721,152 | +| Calldatacopy (0.4M, Zero Data, Fixed Src Dst, 0Bytes, Transaction) | 400,000 | 1,477,226 | 7,574 | 7.57 | 4,721,152 | 4,720,013.3 | 4,717,248 | +| Calldatacopy (0.4M, Zero Data, Fixed Src Dst, 100Bytes, Call) | 400,000 | 1,477,226 | 7,077 | 7.08 | 13,452,452 | 13,446,791.2 | 13,439,764 | +| Calldatacopy (0.4M, Zero Data, Fixed Src Dst, 100Bytes, Transaction) | 400,000 | 1,477,226 | 7,067 | 7.07 | 9,001,812 | 8,996,932 | 8,992,052 | +| Calldatacopy (0.4M, Zero Data, Fixed Src Dst, 10Kib, Call) | 400,000 | 1,477,226 | 7,578 | 7.58 | 11,442,980 | 11,439,113.3 | 11,434,496 | +| Calldatacopy (0.4M, Zero Data, Fixed Src Dst, 10Kib, Transaction) | 400,000 | 1,477,226 | 6,569 | 6.57 | 6,201,696 | 6,196,035.2 | 6,189,008 | +| Calldatacopy (0.4M, Zero Data, Fixed Src Dst, 1Mib, Call) | 400,000 | 1,477,226 | 6,061 | 6.06 | 6,352,976 | 6,352,000 | 6,349,072 | +| Calldatacopy (0.4M, Zero Data, Fixed Src Dst, 1Mib, Transaction) | 400,000 | 1,477,226 | 6,055 | 6.05 | 9,460,136 | 9,455,841.6 | 9,449,400 | +| Calldatacopy (0.4M, Non Zero, Dynamic Src Dst, 100Bytes, Call) | 400,000 | 1,477,226 | 8,090 | 8.09 | 8,135,272 | 8,132,901.7 | 8,125,512 | +| Calldatacopy (0.4M, Non Zero, Dynamic Src Dst, 100Bytes, Transaction) | 400,000 | 1,477,226 | 8,075 | 8.07 | 336,032 | 258,897.5 | 136,928 | +| Calldatacopy (0.4M, Non Zero, Fixed Src Dst, 100Bytes, Call) | 400,000 | 1,477,226 | 7,074 | 7.07 | 1,770,744 | 1,763,912 | 1,753,176 | +| Calldatacopy (0.4M, Non Zero, Fixed Src Dst, 100Bytes, Transaction) | 400,000 | 1,477,226 | 6,562 | 6.56 | 13,373,924 | 13,368,068 | 13,356,356 | +| Codecopy (0.4M, Dynamic Src Dst, 0Bytes) | 400,000 | 1,477,226 | 8,585 | 8.59 | 8,494,384 | 8,493,082.7 | 8,486,576 | +| Codecopy (0.4M, Dynamic Src Dst, 0.25X Max Code) | 400,000 | 1,477,226 | 7,547 | 7.55 | 9,671,252 | 9,666,298.7 | 9,664,432 | +| Codecopy (0.4M, Dynamic Src Dst, 0.50X Max Code Size) | 400,000 | 1,477,226 | 6,557 | 6.56 | 1,244,680 | 1,235,896 | 1,224,184 | +| Codecopy (0.4M, Dynamic Src Dst, 0.75X Max Code Size) | 400,000 | 1,477,226 | 7,596 | 7.60 | 13,540,508 | 13,537,580 | 13,528,000 | +| Codecopy (0.4M, Dynamic Src Dst, Max Code) | 400,000 | 1,477,226 | 7,058 | 7.06 | 4,717,248 | 4,714,124.8 | 4,707,488 | +| Codecopy (0.4M, Fixed Src Dst, 0Bytes) | 400,000 | 1,477,226 | 7,067 | 7.07 | 12,695,512 | 12,692,340 | 12,687,704 | +| Codecopy (0.4M, Fixed Src Dst, 0.25X Max Code) | 400,000 | 1,477,226 | 7,577 | 7.58 | 9,806,416 | 9,806,416 | 9,796,316 | +| Codecopy (0.4M, Fixed Src Dst, 0.50X Max Code Size) | 400,000 | 1,477,226 | 7,562 | 7.56 | 10,600,960 | 10,600,960 | 10,600,960 | +| Codecopy (0.4M, Fixed Src Dst, 0.75X Max Code Size) | 400,000 | 1,477,226 | 6,612 | 6.61 | 10,438,212 | 10,438,212 | 10,409,956 | +| Codecopy (0.4M, Fixed Src Dst, Max Code) | 400,000 | 1,477,226 | 7,089 | 7.09 | 2,248,000 | 2,243,817.1 | 2,233,360 | +| Mcopy (0.4M, Dynamic Src Dst, 0Bytes) | 400,000 | 1,477,226 | 8,574 | 8.57 | 9,738,876 | 9,738,876 | 9,737,900 | +| Mcopy (0.4M, Dynamic Src Dst, 100Bytes) | 400,000 | 1,477,226 | 8,064 | 8.06 | 11,506,420 | 11,502,028 | 11,492,756 | +| Mcopy (0.4M, Dynamic Src Dst, 10Kib) | 400,000 | 1,477,226 | 7,070 | 7.07 | 6,798,996 | 6,795,789.1 | 6,783,380 | +| Mcopy (0.4M, Dynamic Src Dst, 1Mib) | 400,000 | 1,477,226 | 6,058 | 6.06 | 6,514,980 | 6,509,130 | 6,503,280 | +| Mcopy (0.4M, Fixed Src Dst, 0Bytes) | 400,000 | 1,477,226 | 7,575 | 7.58 | 6,679,924 | 6,673,417.3 | 6,661,380 | +| Mcopy (0.4M, Fixed Src Dst, 100Bytes) | 400,000 | 1,477,226 | 7,588 | 7.59 | 7,336,996 | 7,332,394.9 | 7,325,284 | +| Mcopy (0.4M, Fixed Src Dst, 10Kib) | 400,000 | 1,477,226 | 7,069 | 7.07 | 6,973,696 | 6,973,696 | 6,954,176 | +| Mcopy (0.4M, Fixed Src Dst, 1Mib) | 400,000 | 1,477,226 | 6,062 | 6.06 | 2,256,784 | 2,255,320 | 2,248,976 | +| Returndatacopy (0.4M, Fixed Dst False, 0Bytes) | 400,000 | 1,477,226 | 7,574 | 7.57 | 9,003,764 | 9,003,764 | 9,001,812 | +| Returndatacopy (0.4M, Fixed Dst False, 100Bytes) | 400,000 | 1,477,226 | 7,601 | 7.60 | 6,559,876 | 6,559,876 | 6,539,380 | +| Returndatacopy (0.4M, Fixed Dst False, 10Kib) | 400,000 | 1,477,226 | 7,069 | 7.07 | 8,215,300 | 8,215,300 | 8,212,372 | +| Returndatacopy (0.4M, Fixed Dst False, 1Mib) | 400,000 | 1,477,226 | 6,065 | 6.07 | 10,594,128 | 10,594,128 | 10,593,152 | +| Returndatacopy (0.4M, Fixed Dst True, 0Bytes) | 400,000 | 1,477,226 | 7,073 | 7.07 | 1,475,016 | 1,469,485.3 | 1,456,472 | +| Returndatacopy (0.4M, Fixed Dst True, 100Bytes) | 400,000 | 1,477,226 | 7,062 | 7.06 | 3,949,148 | 3,945,732 | 3,940,364 | +| Returndatacopy (0.4M, Fixed Dst True, 10Kib) | 400,000 | 1,477,226 | 7,087 | 7.09 | 5,116,420 | 5,112,028 | 5,106,660 | +| Returndatacopy (0.4M, Fixed Dst True, 1Mib) | 400,000 | 1,477,226 | 5,567 | 5.57 | 2,082,088 | 2,075,418.7 | 2,070,376 | +| Log Opcodes (0.4M, Dynamic, Non Zero Topic, 0 Bytes Data, Log0) | 400,000 | 1,477,226 | 6,595 | 6.59 | 10,793,024 | 10,791,722.7 | 10,787,168 | +| Log Opcodes (0.4M, Dynamic, Non Zero Topic, 0 Bytes Data, Log1) | 400,000 | 1,477,226 | 6,065 | 6.07 | 8,746,532 | 8,740,920 | 8,737,748 | +| Log Opcodes (0.4M, Dynamic, Non Zero Topic, 0 Bytes Data, Log2) | 400,000 | 1,477,226 | 6,071 | 6.07 | 1,831,256 | 1,826,571.2 | 1,815,640 | +| Log Opcodes (0.4M, Dynamic, Non Zero Topic, 0 Bytes Data, Log3) | 400,000 | 1,477,226 | 6,080 | 6.08 | 6,656,500 | 6,654,222.7 | 6,652,596 | +| Log Opcodes (0.4M, Dynamic, Non Zero Topic, 0 Bytes Data, Log4) | 400,000 | 1,477,226 | 5,561 | 5.56 | 11,303,104 | 11,303,104 | 11,301,176 | +| Log Opcodes (0.4M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log0) | 400,000 | 1,477,226 | 6,084 | 6.08 | 11,708,368 | 11,701,104 | 11,708,368 | +| Log Opcodes (0.4M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log1) | 400,000 | 1,477,226 | 6,065 | 6.07 | 6,539,380 | 6,532,060 | 6,515,956 | +| Log Opcodes (0.4M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log2) | 400,000 | 1,477,226 | 5,597 | 5.60 | 7,801,912 | 7,800,285.3 | 7,796,056 | +| Log Opcodes (0.4M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log3) | 400,000 | 1,477,226 | 6,580 | 6.58 | 11,440,496 | 11,437,496 | 11,435,616 | +| Log Opcodes (0.4M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log4) | 400,000 | 1,477,226 | 6,569 | 6.57 | 5,138,868 | 5,136,428 | 5,122,276 | +| Log Opcodes (0.4M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log0) | 400,000 | 1,477,226 | 6,046 | 6.05 | 9,786,692 | 9,786,692 | 9,781,812 | +| Log Opcodes (0.4M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log1) | 400,000 | 1,477,226 | 6,581 | 6.58 | 2,376,828 | 2,373,412 | 2,359,260 | +| Log Opcodes (0.4M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log2) | 400,000 | 1,477,226 | 6,564 | 6.56 | 10,779,360 | 10,779,360 | 10,775,456 | +| Log Opcodes (0.4M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log3) | 400,000 | 1,477,226 | 6,076 | 6.08 | 9,487,640 | 9,486,176 | 9,482,760 | +| Log Opcodes (0.4M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log4) | 400,000 | 1,477,226 | 6,081 | 6.08 | 10,177,996 | 10,177,264 | 10,169,212 | +| Log Opcodes (0.4M, Dynamic, Zero Topic, 0 Bytes Data, Log0) | 400,000 | 1,477,226 | 6,066 | 6.07 | 6,708,228 | 6,704,324 | 6,686,756 | +| Log Opcodes (0.4M, Dynamic, Zero Topic, 0 Bytes Data, Log1) | 400,000 | 1,477,226 | 6,063 | 6.06 | 4,781,660 | 4,780,196 | 4,776,780 | +| Log Opcodes (0.4M, Dynamic, Zero Topic, 0 Bytes Data, Log2) | 400,000 | 1,477,226 | 5,562 | 5.56 | 13,348,552 | 13,348,552 | 13,335,708 | +| Log Opcodes (0.4M, Dynamic, Zero Topic, 0 Bytes Data, Log3) | 400,000 | 1,477,226 | 6,070 | 6.07 | 5,294,048 | 5,294,048 | 5,288,192 | +| Log Opcodes (0.4M, Dynamic, Zero Topic, 0 Bytes Data, Log4) | 400,000 | 1,477,226 | 5,559 | 5.56 | 4,420,556 | 4,419,092 | 4,412,748 | +| Log Opcodes (0.4M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log0) | 400,000 | 1,477,226 | 7,080 | 7.08 | 8,690,612 | 8,681,990.7 | 8,674,996 | +| Log Opcodes (0.4M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log1) | 400,000 | 1,477,226 | 6,067 | 6.07 | 10,409,956 | 10,383,821.6 | 10,374,360 | +| Log Opcodes (0.4M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log2) | 400,000 | 1,477,226 | 6,561 | 6.56 | 7,225,732 | 7,225,732 | 7,218,900 | +| Log Opcodes (0.4M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log3) | 400,000 | 1,477,226 | 6,069 | 6.07 | 7,322,356 | 7,322,356 | 7,310,644 | +| Log Opcodes (0.4M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log4) | 400,000 | 1,477,226 | 6,083 | 6.08 | 12,159,696 | 12,159,696 | 12,151,580 | +| Log Opcodes (0.4M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log0) | 400,000 | 1,477,226 | 6,066 | 6.07 | 13,684,540 | 13,683,564 | 13,680,636 | +| Log Opcodes (0.4M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log1) | 400,000 | 1,477,226 | 5,555 | 5.55 | 10,537,208 | 10,532,328 | 10,528,424 | +| Log Opcodes (0.4M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log2) | 400,000 | 1,477,226 | 6,066 | 6.07 | 7,253,060 | 7,252,572 | 7,242,324 | +| Log Opcodes (0.4M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log3) | 400,000 | 1,477,226 | 6,563 | 6.56 | 4,736,768 | 4,734,165.3 | 4,731,888 | +| Log Opcodes (0.4M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log4) | 400,000 | 1,477,226 | 5,557 | 5.56 | 7,620,380 | 7,616,866.4 | 7,609,644 | +| Log Opcodes (0.4M, Fixed, Non Zero Topic, 0 Bytes Data, Log0) | 400,000 | 1,477,226 | 6,637 | 6.64 | 2,777,964 | 2,775,816.8 | 2,771,132 | +| Log Opcodes (0.4M, Fixed, Non Zero Topic, 0 Bytes Data, Log1) | 400,000 | 1,477,226 | 6,573 | 6.57 | 6,488,640 | 6,487,273.6 | 6,479,856 | +| Log Opcodes (0.4M, Fixed, Non Zero Topic, 0 Bytes Data, Log2) | 400,000 | 1,477,226 | 6,054 | 6.05 | 11,411,828 | 11,411,828 | 11,391,544 | +| Log Opcodes (0.4M, Fixed, Non Zero Topic, 0 Bytes Data, Log3) | 400,000 | 1,477,226 | 6,571 | 6.57 | 2,034,264 | 2,032,312 | 2,027,432 | +| Log Opcodes (0.4M, Fixed, Non Zero Topic, 0 Bytes Data, Log4) | 400,000 | 1,477,226 | 6,066 | 6.07 | 11,524,384 | 11,521,456 | 11,508,768 | +| Log Opcodes (0.4M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log0) | 400,000 | 1,477,226 | 6,048 | 6.05 | 4,652,836 | 4,648,688 | 4,642,100 | +| Log Opcodes (0.4M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log1) | 400,000 | 1,477,226 | 6,045 | 6.04 | 9,656,624 | 9,656,624 | 9,652,720 | +| Log Opcodes (0.4M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log2) | 400,000 | 1,477,226 | 6,063 | 6.06 | 7,152,532 | 7,152,532 | 7,142,772 | +| Log Opcodes (0.4M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log3) | 400,000 | 1,477,226 | 6,053 | 6.05 | 13,575,204 | 13,571,300 | 13,566,420 | +| Log Opcodes (0.4M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log4) | 400,000 | 1,477,226 | 5,543 | 5.54 | 7,495,928 | 7,493,585.6 | 7,487,144 | +| Log Opcodes (0.4M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log0) | 400,000 | 1,477,226 | 6,060 | 6.06 | 12,891,944 | 12,889,459 | 12,888,040 | +| Log Opcodes (0.4M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log1) | 400,000 | 1,477,226 | 6,061 | 6.06 | 5,524,368 | 5,520,464 | 5,509,728 | +| Log Opcodes (0.4M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log2) | 400,000 | 1,477,226 | 6,562 | 6.56 | 7,159,364 | 7,159,364 | 7,152,532 | +| Log Opcodes (0.4M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log3) | 400,000 | 1,477,226 | 6,072 | 6.07 | 10,816,448 | 10,812,544 | 10,794,976 | +| Log Opcodes (0.4M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log4) | 400,000 | 1,477,226 | 5,552 | 5.55 | 5,072,504 | 5,072,504 | 5,066,648 | +| Log Opcodes (0.4M, Fixed, Zero Topic, 0 Bytes Data, Log0) | 400,000 | 1,477,226 | 6,069 | 6.07 | 1,904,456 | 1,904,456 | 1,898,600 | +| Log Opcodes (0.4M, Fixed, Zero Topic, 0 Bytes Data, Log1) | 400,000 | 1,477,226 | 6,060 | 6.06 | 3,679,772 | 3,671,768.8 | 3,667,084 | +| Log Opcodes (0.4M, Fixed, Zero Topic, 0 Bytes Data, Log2) | 400,000 | 1,477,226 | 6,081 | 6.08 | 11,888,608 | 11,886,562.4 | 11,882,752 | +| Log Opcodes (0.4M, Fixed, Zero Topic, 0 Bytes Data, Log3) | 400,000 | 1,477,226 | 6,062 | 6.06 | 7,171,076 | 7,167,660 | 7,161,316 | +| Log Opcodes (0.4M, Fixed, Zero Topic, 0 Bytes Data, Log4) | 400,000 | 1,477,226 | 6,057 | 6.06 | 2,758,444 | 2,754,930.4 | 2,750,636 | +| Log Opcodes (0.4M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log0) | 400,000 | 1,477,226 | 5,552 | 5.55 | 11,255,716 | 11,255,228 | 11,255,708 | +| Log Opcodes (0.4M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log1) | 400,000 | 1,477,226 | 6,073 | 6.07 | 11,389,592 | 11,389,592 | 11,369,464 | +| Log Opcodes (0.4M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log2) | 400,000 | 1,477,226 | 5,555 | 5.55 | 11,775,684 | 11,772,120.7 | 11,769,828 | +| Log Opcodes (0.4M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log3) | 400,000 | 1,477,226 | 6,050 | 6.05 | 5,287,216 | 5,285,508 | 5,282,336 | +| Log Opcodes (0.4M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log4) | 400,000 | 1,477,226 | 6,053 | 6.05 | 3,163,476 | 3,160,873.3 | 3,153,716 | +| Log Opcodes (0.4M, Fixed, Zero Topic, 1 Mib Zeros Data, Log0) | 400,000 | 1,477,226 | 5,552 | 5.55 | 6,403,728 | 6,398,457.6 | 6,387,136 | +| Log Opcodes (0.4M, Fixed, Zero Topic, 1 Mib Zeros Data, Log1) | 400,000 | 1,477,226 | 6,059 | 6.06 | 13,421,196 | 13,421,196 | 13,409,484 | +| Log Opcodes (0.4M, Fixed, Zero Topic, 1 Mib Zeros Data, Log2) | 400,000 | 1,477,226 | 6,061 | 6.06 | 8,228,964 | 8,228,964 | 8,223,108 | +| Log Opcodes (0.4M, Fixed, Zero Topic, 1 Mib Zeros Data, Log3) | 400,000 | 1,477,226 | 6,072 | 6.07 | 2,980,968 | 2,976,088 | 2,964,376 | +| Log Opcodes (0.4M, Fixed, Zero Topic, 1 Mib Zeros Data, Log4) | 400,000 | 1,477,226 | 6,058 | 6.06 | 4,583,544 | 4,582,568 | 4,580,616 | +| Address State Cold (0.4M, Absent Accounts False, Balance) | 400,000 | 1,477,226 | 6,563 | 6.56 | 4,756,288 | 4,749,177.1 | 4,737,744 | +| Address State Cold (0.4M, Absent Accounts True, Balance) | 400,000 | 1,477,226 | 6,063 | 6.06 | 2,094,776 | 2,092,946 | 2,086,968 | +| Address State Warm (0.4M, Present Target, Balance) | 400,000 | 1,477,226 | 7,084 | 7.08 | 8,125,512 | 8,120,074.3 | 8,110,872 | +| Address State Warm (0.4M, Present Target, Callcode) | 400,000 | 1,477,226 | 9,614 | 9.61 | 10,730,344 | 10,727,172 | 10,713,752 | +| Address State Warm (0.4M, Present Target, Call) | 400,000 | 1,477,226 | 9,611 | 9.61 | 11,843,588 | 11,841,636 | 11,837,524 | +| Address State Warm (0.4M, Present Target, Delegatecall) | 400,000 | 1,477,226 | 8,582 | 8.58 | 10,892,684 | 10,890,732 | 10,870,672 | +| Address State Warm (0.4M, Present Target, Extcodehash) | 400,000 | 1,477,226 | 7,085 | 7.08 | 3,098,084 | 3,092,813.6 | 3,080,516 | +| Address State Warm (0.4M, Present Target, Extcodesize) | 400,000 | 1,477,226 | 6,560 | 6.56 | 1,613,608 | 1,609,541.3 | 1,601,896 | +| Address State Warm (0.4M, Present Target, Staticcall) | 400,000 | 1,477,226 | 9,080 | 9.08 | 4,161,916 | 4,161,916 | 4,158,012 | +| Address State Warm (0.4M, Absent Target, Balance) | 400,000 | 1,477,226 | 7,080 | 7.08 | 11,882,752 | 11,882,752 | 11,849,440 | +| Address State Warm (0.4M, Absent Target, Callcode) | 400,000 | 1,477,226 | 8,605 | 8.61 | 13,199,784 | 13,194,067.4 | 13,186,120 | +| Address State Warm (0.4M, Absent Target, Call) | 400,000 | 1,477,226 | 8,587 | 8.59 | 5,371,148 | 5,366,268 | 5,360,412 | +| Address State Warm (0.4M, Absent Target, Delegatecall) | 400,000 | 1,477,226 | 8,081 | 8.08 | 9,049,564 | 9,049,564 | 9,005,716 | +| Address State Warm (0.4M, Absent Target, Extcodehash) | 400,000 | 1,477,226 | 7,577 | 7.58 | 3,254,244 | 3,248,713.3 | 3,238,628 | +| Address State Warm (0.4M, Absent Target, Extcodesize) | 400,000 | 1,477,226 | 6,579 | 6.58 | 11,718,264 | 11,714,604 | 11,710,456 | +| Address State Warm (0.4M, Absent Target, Staticcall) | 400,000 | 1,477,226 | 8,595 | 8.60 | 7,635,996 | 7,631,766.7 | 7,620,380 | +| Blockhash (0.4M) | 400,000 | 1,477,226 | 7,588 | 7.59 | 9,111,048 | 9,102,264 | 9,090,552 | +| Extcodecopy Warm (0.4M, 1Kib) | 400,000 | 1,477,226 | 7,064 | 7.06 | 2,771,132 | 2,768,008.8 | 2,759,420 | +| Extcodecopy Warm (0.4M, 512) | 400,000 | 1,477,226 | 6,568 | 6.57 | 4,275,132 | 4,275,132 | 4,274,156 | +| Extcodecopy Warm (0.4M, 5Kib) | 400,000 | 1,477,226 | 7,059 | 7.06 | 2,916,556 | 2,916,556 | 2,900,940 | +| Selfbalance (0.4M) | 400,000 | 1,477,226 | 18,156 | 18.16 | 8,991,076 | 8,967,005 | 8,929,592 | +| Selfdestruct Created (0.4M, No Value) | 364,312 | 1,477,226 | 6,577 | 6.58 | 4,264,396 | 4,264,396 | 4,258,540 | +| Selfdestruct Created (0.4M, With Value) | 364,312 | 1,477,226 | 6,061 | 6.06 | 2,898,012 | 2,894,596 | 2,882,396 | +| Selfdestruct Existing (0.4M, No Value) | 396,611 | 1,477,226 | 7,082 | 7.08 | 9,274,356 | 9,272,404 | 9,260,692 | +| Selfdestruct Existing (0.4M, With Value) | 396,611 | 1,477,226 | 6,066 | 6.07 | 8,751,120 | 8,744,987.3 | 8,739,408 | +| Selfdestruct Initcode (0.4M, No Value) | 396,460 | 1,477,226 | 5,563 | 5.56 | 3,237,652 | 3,230,234.4 | 3,219,108 | +| Selfdestruct Initcode (0.4M, With Value) | 396,460 | 1,477,226 | 5,544 | 5.54 | 13,567,396 | 13,564,663.2 | 13,557,636 | +| Storage Access Cold (0.4M, Absent Slots False, Ssload) | 399,252 | 1,477,226 | 6,071 | 6.07 | 12,562,748 | 12,559,657.3 | 12,546,156 | +| Storage Access Cold (0.4M, Absent Slots False, Sstore New Value, Out Of Gas) | 400,000 | 1,477,226 | 6,060 | 6.06 | 2,264,592 | 2,262,249.6 | 2,257,760 | +| Storage Access Cold (0.4M, Absent Slots False, Sstore New Value, Revert) | 399,084 | 1,477,226 | 6,559 | 6.56 | 9,795,340 | 9,795,340 | 9,787,668 | +| Storage Access Cold (0.4M, Absent Slots False, Sstore New Value) | 399,078 | 1,477,226 | 6,059 | 6.06 | 7,662,348 | 7,649,172 | 7,636,972 | +| Storage Access Cold (0.4M, Absent Slots False, Sstore Same Value, Out Of Gas) | 400,000 | 1,477,226 | 6,550 | 6.55 | 9,134,988 | 9,128,300 | 9,119,832 | +| Storage Access Cold (0.4M, Absent Slots False, Sstore Same Value, Revert) | 399,231 | 1,477,226 | 6,579 | 6.58 | 5,561,452 | 5,558,524 | 5,547,788 | +| Storage Access Cold (0.4M, Absent Slots False, Sstore Same Value) | 399,225 | 1,477,226 | 6,565 | 6.57 | 12,957,368 | 12,953,910.7 | 12,950,536 | +| Storage Access Cold (0.4M, Absent Slots True, Ssload) | 399,252 | 1,477,226 | 6,073 | 6.07 | 4,285,868 | 4,283,265.3 | 4,277,084 | +| Storage Access Cold (0.4M, Absent Slots True, Sstore New Value, Out Of Gas) | 400,000 | 1,477,226 | 6,555 | 6.55 | 13,185,144 | 13,180,426.7 | 13,175,384 | +| Storage Access Cold (0.4M, Absent Slots True, Sstore New Value, Revert) | 397,406 | 1,477,226 | 5,563 | 5.56 | 6,928,800 | 6,926,522.7 | 6,906,352 | +| Storage Access Cold (0.4M, Absent Slots True, Sstore New Value) | 397,400 | 1,477,226 | 6,576 | 6.58 | 3,310,844 | 3,307,333.6 | 3,302,064 | +| Storage Access Cold (0.4M, Absent Slots True, Sstore Same Value, Out Of Gas) | 400,000 | 1,477,226 | 6,555 | 6.55 | 9,810,316 | 9,808,852 | 9,805,436 | +| Storage Access Cold (0.4M, Absent Slots True, Sstore Same Value, Revert) | 397,355 | 1,477,226 | 6,559 | 6.56 | 10,170,192 | 10,162,802.3 | 10,157,504 | +| Storage Access Cold (0.4M, Absent Slots True, Sstore Same Value) | 397,349 | 1,477,226 | 5,560 | 5.56 | 12,699,256 | 12,699,256 | 12,695,512 | +| Storage Access Warm (0.4M, Sload) | 400,000 | 1,477,226 | 7,575 | 7.58 | 8,091,352 | 8,085,496 | 8,078,664 | +| Storage Access Warm (0.4M, Sstore New Value) | 400,000 | 1,477,226 | 8,085 | 8.09 | 9,893,252 | 9,892,276 | 9,875,684 | +| Storage Access Warm (0.4M, Sstore Same Value) | 400,000 | 1,477,226 | 7,584 | 7.58 | 10,712,180 | 10,707,449 | 10,699,492 | + +## Summary Statistics + +- **Total Tests:** 504 +- **Successful Tests:** 504 +- **Failed Tests:** 0 + +### Proving Time (ms) +- **Average:** 16,394.0 +- **Minimum:** 5,543 +- **Maximum:** 178,272 + +### Peak Memory Usage (MB) +- **Average:** 7,377,013.4 +- **Minimum:** 336,032 +- **Maximum:** 13,684,540 + +### Proof Size (bytes) +- **Average:** 1,477,226 +- **Minimum:** 1,477,226 +- **Maximum:** 1,477,226 diff --git a/www/docs/pages/benchmark-results/gas-categorized/0.6m/0.6M-4.md b/www/docs/pages/benchmark-results/gas-categorized/0.6m/0.6M-4.md new file mode 100644 index 00000000..c219b756 --- /dev/null +++ b/www/docs/pages/benchmark-results/gas-categorized/0.6m/0.6M-4.md @@ -0,0 +1,515 @@ +# zkVM Proving Time (in secs) Comparison + +**Gas Category:** 0.6M + +**Number of GPUs:** 4 + + +| Benchmark | risc0 | sp1 | +|---|---|---| +| Address State Cold (0.6M, Absent Accounts False, Balance) | 8.16 | 7.08 | +| Address State Cold (0.6M, Absent Accounts True, Balance) | 5.01 | 6.57 | +| Address State Warm (0.6M, Absent Target, Balance) | 10.48 | 7.07 | +| Address State Warm (0.6M, Absent Target, Call) | 18.17 | 9.59 | +| Address State Warm (0.6M, Absent Target, Callcode) | 19.33 | 9.60 | +| Address State Warm (0.6M, Absent Target, Delegatecall) | 15.96 | 9.59 | +| Address State Warm (0.6M, Absent Target, Extcodehash) | 11.83 | 7.58 | +| Address State Warm (0.6M, Absent Target, Extcodesize) | 11.05 | 7.08 | +| Address State Warm (0.6M, Absent Target, Staticcall) | 16.91 | 10.09 | +| Address State Warm (0.6M, Present Target, Balance) | 8.83 | 7.07 | +| Address State Warm (0.6M, Present Target, Call) | 19.37 | 10.62 | +| Address State Warm (0.6M, Present Target, Callcode) | 18.74 | 10.64 | +| Address State Warm (0.6M, Present Target, Delegatecall) | 18.16 | 10.11 | +| Address State Warm (0.6M, Present Target, Extcodehash) | 10.57 | 7.58 | +| Address State Warm (0.6M, Present Target, Extcodesize) | 9.49 | 7.05 | +| Address State Warm (0.6M, Present Target, Staticcall) | 18.88 | 10.62 | +| Amortized Bn128 Pairings (0.6M) | 50.14 | 18.21 | +| Binop Simple (0.6M, Add) | 12.54 | 8.11 | +| Binop Simple (0.6M, And) | 10.60 | 7.57 | +| Binop Simple (0.6M, Byte) | 13.35 | 8.08 | +| Binop Simple (0.6M, Div, 0) | 38.98 | 18.66 | +| Binop Simple (0.6M, Div, 1) | 38.03 | 17.15 | +| Binop Simple (0.6M, Eq) | 18.23 | 11.12 | +| Binop Simple (0.6M, Exp) | 25.75 | 13.65 | +| Binop Simple (0.6M, Gt) | 11.58 | 8.09 | +| Binop Simple (0.6M, Lt) | 11.69 | 8.10 | +| Binop Simple (0.6M, Mod) | 15.32 | 10.59 | +| Binop Simple (0.6M, Mul) | 15.81 | 10.10 | +| Binop Simple (0.6M, Or) | 10.96 | 8.07 | +| Binop Simple (0.6M, Sar) | 19.24 | 10.62 | +| Binop Simple (0.6M, Sdiv, 0) | 44.38 | 20.22 | +| Binop Simple (0.6M, Sdiv, 1) | 46.74 | 20.73 | +| Binop Simple (0.6M, Sgt) | 18.91 | 11.60 | +| Binop Simple (0.6M, Shl) | 17.48 | 9.12 | +| Binop Simple (0.6M, Shr) | 17.74 | 9.58 | +| Binop Simple (0.6M, Signextend) | 16.24 | 9.60 | +| Binop Simple (0.6M, Slt) | 12.30 | 8.58 | +| Binop Simple (0.6M, Smod) | 19.07 | 10.60 | +| Binop Simple (0.6M, Sub) | 13.15 | 7.57 | +| Binop Simple (0.6M, Xor) | 11.14 | 8.09 | +| Blobhash (0.6M, No Blobs) | 11.71 | 7.57 | +| Blobhash (0.6M, One Blob And Accessed) | 14.93 | 9.08 | +| Blobhash (0.6M, One Blob But Access Non, Existent Index) | 10.93 | 7.57 | +| Blobhash (0.6M, Six Blobs, Access Latest) | 15.00 | 9.11 | +| Block Full Access List And Data (0.6M) | 5.40 | 6.58 | +| Block Full Data (0.6M, Non Zero Byte) | 3.85 | 6.56 | +| Block Full Data (0.6M, Zero Byte) | 6.45 | 6.07 | +| Block Full Of Ether Transfers (0.6M, A To A) | 11.88 | 8.08 | +| Block Full Of Ether Transfers (0.6M, A To B) | 12.90 | 7.56 | +| Block Full Of Ether Transfers (0.6M, A To Diff Acc) | 9.68 | 7.57 | +| Block Full Of Ether Transfers (0.6M, Diff Acc To B) | 11.33 | 7.58 | +| Block Full Of Ether Transfers (0.6M, Diff Acc To Diff Acc) | 11.78 | 7.59 | +| Blockhash (0.6M) | 13.32 | 8.06 | +| Bytecode Single Opcode (0.6M, Call) | 61.30 | 21.70 | +| Bytecode Single Opcode (0.6M, Callcode) | 63.50 | 20.70 | +| Bytecode Single Opcode (0.6M, Delegatecall) | 62.88 | 21.21 | +| Bytecode Single Opcode (0.6M, Extcodecopy) | 59.48 | 21.20 | +| Bytecode Single Opcode (0.6M, Extcodehash) | 61.09 | 21.73 | +| Bytecode Single Opcode (0.6M, Extcodesize) | 60.58 | 21.72 | +| Bytecode Single Opcode (0.6M, Staticcall) | 63.11 | 21.20 | +| Calldatacopy (0.6M, Non Zero, Dynamic Src Dst, 100Bytes, Call) | 13.24 | 8.57 | +| Calldatacopy (0.6M, Non Zero, Dynamic Src Dst, 100Bytes, Transaction) | 13.65 | 9.09 | +| Calldatacopy (0.6M, Non Zero, Dynamic Src Dst, 10Kib, Call) | 9.64 | 7.57 | +| Calldatacopy (0.6M, Non Zero, Dynamic Src Dst, 10Kib, Transaction) | 10.46 | 7.09 | +| Calldatacopy (0.6M, Non Zero, Fixed Src Dst, 100Bytes, Call) | 10.53 | 7.06 | +| Calldatacopy (0.6M, Non Zero, Fixed Src Dst, 100Bytes, Transaction) | 10.87 | 7.56 | +| Calldatacopy (0.6M, Non Zero, Fixed Src Dst, 10Kib, Call) | 8.69 | 7.57 | +| Calldatacopy (0.6M, Non Zero, Fixed Src Dst, 10Kib, Transaction) | 9.80 | 7.06 | +| Calldatacopy (0.6M, Zero Data, Dynamic Src Dst, 0Bytes, Call) | 14.78 | 10.12 | +| Calldatacopy (0.6M, Zero Data, Dynamic Src Dst, 0Bytes, Transaction) | 14.55 | 10.12 | +| Calldatacopy (0.6M, Zero Data, Dynamic Src Dst, 100Bytes, Call) | 13.44 | 9.10 | +| Calldatacopy (0.6M, Zero Data, Dynamic Src Dst, 100Bytes, Transaction) | 12.43 | 8.08 | +| Calldatacopy (0.6M, Zero Data, Dynamic Src Dst, 10Kib, Call) | 11.49 | 6.58 | +| Calldatacopy (0.6M, Zero Data, Dynamic Src Dst, 10Kib, Transaction) | 7.16 | 6.57 | +| Calldatacopy (0.6M, Zero Data, Dynamic Src Dst, 1Mib, Call) | 4.10 | 6.07 | +| Calldatacopy (0.6M, Zero Data, Dynamic Src Dst, 1Mib, Transaction) | 4.43 | 6.06 | +| Calldatacopy (0.6M, Zero Data, Fixed Src Dst, 0Bytes, Call) | 11.38 | 8.11 | +| Calldatacopy (0.6M, Zero Data, Fixed Src Dst, 0Bytes, Transaction) | 11.70 | 8.08 | +| Calldatacopy (0.6M, Zero Data, Fixed Src Dst, 100Bytes, Call) | 11.60 | 7.08 | +| Calldatacopy (0.6M, Zero Data, Fixed Src Dst, 100Bytes, Transaction) | 10.77 | 7.59 | +| Calldatacopy (0.6M, Zero Data, Fixed Src Dst, 10Kib, Call) | 7.29 | 7.06 | +| Calldatacopy (0.6M, Zero Data, Fixed Src Dst, 10Kib, Transaction) | 6.94 | 6.07 | +| Calldatacopy (0.6M, Zero Data, Fixed Src Dst, 1Mib, Call) | 4.25 | 5.54 | +| Calldatacopy (0.6M, Zero Data, Fixed Src Dst, 1Mib, Transaction) | 4.25 | 6.56 | +| Calldataload (0.6M, Empty) | 18.57 | 10.12 | +| Calldataload (0.6M, One, Loop) | 20.11 | 10.61 | +| Calldataload (0.6M, Zero, Loop) | 20.27 | 11.11 | +| Calldatasize (0.6M, Calldata Length 0) | 11.13 | 8.59 | +| Calldatasize (0.6M, Calldata Length 1000) | 11.28 | 8.59 | +| Calldatasize (0.6M, Calldata Length 10000) | 12.09 | 8.09 | +| Callvalue (0.6M, From Origin False, Non Zero Value False) | 13.23 | 8.59 | +| Callvalue (0.6M, From Origin False, Non Zero Value True) | 12.89 | 8.07 | +| Callvalue (0.6M, From Origin True, Non Zero Value False) | 12.72 | 8.07 | +| Callvalue (0.6M, From Origin True, Non Zero Value True) | 12.59 | 8.09 | +| Codecopy (0.6M, Dynamic Src Dst, 0.25X Max Code) | 10.85 | 7.06 | +| Codecopy (0.6M, Dynamic Src Dst, 0.50X Max Code Size) | 9.18 | 7.58 | +| Codecopy (0.6M, Dynamic Src Dst, 0.75X Max Code Size) | 9.44 | 7.07 | +| Codecopy (0.6M, Dynamic Src Dst, 0Bytes) | 13.74 | 9.60 | +| Codecopy (0.6M, Dynamic Src Dst, Max Code) | 9.80 | 7.09 | +| Codecopy (0.6M, Fixed Src Dst, 0.25X Max Code) | 9.04 | 7.06 | +| Codecopy (0.6M, Fixed Src Dst, 0.50X Max Code Size) | 6.98 | 7.57 | +| Codecopy (0.6M, Fixed Src Dst, 0.75X Max Code Size) | 8.04 | 7.57 | +| Codecopy (0.6M, Fixed Src Dst, 0Bytes) | 10.79 | 8.08 | +| Codecopy (0.6M, Fixed Src Dst, Max Code) | 7.01 | 7.58 | +| Create (0.6M, 0.25X Max Code, Create) | 4.75 | 6.07 | +| Create (0.6M, 0.25X Max Code, Create2) | 4.87 | 6.05 | +| Create (0.6M, 0.25X Max Code, Zero Data, Create) | 4.50 | 6.57 | +| Create (0.6M, 0.25X Max Code, Zero Data, Create2) | 4.99 | 6.58 | +| Create (0.6M, 0.50X Max Code Size With Non, Zero Data, Create) | 5.09 | 6.05 | +| Create (0.6M, 0.50X Max Code Size With Non, Zero Data, Create2) | 5.07 | 6.07 | +| Create (0.6M, 0.50X Max Code Size With Zero Data, Create) | 4.96 | 6.05 | +| Create (0.6M, 0.50X Max Code Size With Zero Data, Create2) | 5.19 | 6.05 | +| Create (0.6M, 0.75X Max Code Size With Non, Zero Data, Create) | 5.87 | 6.07 | +| Create (0.6M, 0.75X Max Code Size With Non, Zero Data, Create2) | 5.59 | 6.06 | +| Create (0.6M, 0.75X Max Code Size With Zero Data, Create) | 5.22 | 6.05 | +| Create (0.6M, 0.75X Max Code Size With Zero Data, Create2) | 5.59 | 6.56 | +| Create (0.6M, 0Bytes, Create) | 4.85 | 6.57 | +| Create (0.6M, 0Bytes, Create2) | 5.78 | 6.56 | +| Create (0.6M, Max Code, Create) | 5.06 | 6.05 | +| Create (0.6M, Max Code, Create2) | 5.55 | 6.07 | +| Create (0.6M, Max Code, Zero Data, Create) | 6.07 | 6.57 | +| Create (0.6M, Max Code, Zero Data, Create2) | 6.09 | 6.06 | +| Creates Collisions (0.6M, Create) | 4.90 | 6.57 | +| Creates Collisions (0.6M, Create2) | 4.53 | 6.06 | +| Dup (0.6M, Dup1) | 10.96 | 7.57 | +| Dup (0.6M, Dup10) | 11.10 | 7.57 | +| Dup (0.6M, Dup11) | 10.40 | 7.58 | +| Dup (0.6M, Dup12) | 9.66 | 7.58 | +| Dup (0.6M, Dup13) | 11.25 | 7.57 | +| Dup (0.6M, Dup14) | 11.36 | 7.08 | +| Dup (0.6M, Dup15) | 10.08 | 7.58 | +| Dup (0.6M, Dup16) | 10.57 | 7.07 | +| Dup (0.6M, Dup2) | 10.57 | 6.56 | +| Dup (0.6M, Dup3) | 10.51 | 7.06 | +| Dup (0.6M, Dup4) | 9.91 | 7.07 | +| Dup (0.6M, Dup5) | 10.22 | 7.07 | +| Dup (0.6M, Dup6) | 10.12 | 7.08 | +| Dup (0.6M, Dup7) | 11.01 | 7.58 | +| Dup (0.6M, Dup8) | 11.27 | 7.57 | +| Dup (0.6M, Dup9) | 11.22 | 8.09 | +| Empty Block (0.6M) | 3.83 | 5.56 | +| Extcodecopy Warm (0.6M, 1Kib) | 9.21 | 7.08 | +| Extcodecopy Warm (0.6M, 512) | 8.77 | 6.57 | +| Extcodecopy Warm (0.6M, 5Kib) | 7.88 | 7.07 | +| Initcode Jumpdest Analysis (0.6M, 00) | 10.55 | 7.08 | +| Initcode Jumpdest Analysis (0.6M, 5B) | 11.17 | 8.08 | +| Initcode Jumpdest Analysis (0.6M, 605B) | 8.71 | 7.56 | +| Initcode Jumpdest Analysis (0.6M, 605B5B) | 10.42 | 6.56 | +| Initcode Jumpdest Analysis (0.6M, 615B5B) | 7.57 | 7.06 | +| Initcode Jumpdest Analysis (0.6M, 615B5B5B) | 8.47 | 6.59 | +| Jumpdests (0.6M) | 12.30 | 8.06 | +| Jumpi Fallthrough (0.6M) | 12.64 | 9.58 | +| Jumpis (0.6M) | 10.17 | 7.07 | +| Jumps (0.6M) | 11.01 | 7.07 | +| Keccak (0.6M) | 31.90 | 11.11 | +| Log Opcodes (0.6M, Dynamic, Non Zero Topic, 0 Bytes Data, Log0) | 5.36 | 7.06 | +| Log Opcodes (0.6M, Dynamic, Non Zero Topic, 0 Bytes Data, Log1) | 5.31 | 6.06 | +| Log Opcodes (0.6M, Dynamic, Non Zero Topic, 0 Bytes Data, Log2) | 4.59 | 7.07 | +| Log Opcodes (0.6M, Dynamic, Non Zero Topic, 0 Bytes Data, Log3) | 4.88 | 6.05 | +| Log Opcodes (0.6M, Dynamic, Non Zero Topic, 0 Bytes Data, Log4) | 4.51 | 6.05 | +| Log Opcodes (0.6M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log0) | 4.49 | 6.07 | +| Log Opcodes (0.6M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log1) | 5.33 | 6.05 | +| Log Opcodes (0.6M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log2) | 4.47 | 5.57 | +| Log Opcodes (0.6M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log3) | 4.44 | 6.06 | +| Log Opcodes (0.6M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log4) | 4.90 | 5.55 | +| Log Opcodes (0.6M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log0) | 4.32 | 6.05 | +| Log Opcodes (0.6M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log1) | 4.55 | 6.07 | +| Log Opcodes (0.6M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log2) | 4.39 | 6.05 | +| Log Opcodes (0.6M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log3) | 4.24 | 6.56 | +| Log Opcodes (0.6M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log4) | 4.15 | 6.06 | +| Log Opcodes (0.6M, Dynamic, Zero Topic, 0 Bytes Data, Log0) | 5.78 | 6.05 | +| Log Opcodes (0.6M, Dynamic, Zero Topic, 0 Bytes Data, Log1) | 4.96 | 7.06 | +| Log Opcodes (0.6M, Dynamic, Zero Topic, 0 Bytes Data, Log2) | 4.97 | 7.07 | +| Log Opcodes (0.6M, Dynamic, Zero Topic, 0 Bytes Data, Log3) | 4.96 | 6.06 | +| Log Opcodes (0.6M, Dynamic, Zero Topic, 0 Bytes Data, Log4) | 5.94 | 5.56 | +| Log Opcodes (0.6M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log0) | 4.55 | 6.07 | +| Log Opcodes (0.6M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log1) | 5.24 | 6.05 | +| Log Opcodes (0.6M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log2) | 4.06 | 6.06 | +| Log Opcodes (0.6M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log3) | 4.89 | 7.06 | +| Log Opcodes (0.6M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log4) | 4.82 | 6.05 | +| Log Opcodes (0.6M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log0) | 3.94 | 6.55 | +| Log Opcodes (0.6M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log1) | 4.54 | 6.06 | +| Log Opcodes (0.6M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log2) | 4.29 | 6.56 | +| Log Opcodes (0.6M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log3) | 3.98 | 5.56 | +| Log Opcodes (0.6M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log4) | 4.95 | 6.07 | +| Log Opcodes (0.6M, Fixed, Non Zero Topic, 0 Bytes Data, Log0) | 4.75 | 6.56 | +| Log Opcodes (0.6M, Fixed, Non Zero Topic, 0 Bytes Data, Log1) | 4.48 | 6.57 | +| Log Opcodes (0.6M, Fixed, Non Zero Topic, 0 Bytes Data, Log2) | 5.00 | 6.56 | +| Log Opcodes (0.6M, Fixed, Non Zero Topic, 0 Bytes Data, Log3) | 5.18 | 6.05 | +| Log Opcodes (0.6M, Fixed, Non Zero Topic, 0 Bytes Data, Log4) | 5.16 | 6.58 | +| Log Opcodes (0.6M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log0) | 4.56 | 6.05 | +| Log Opcodes (0.6M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log1) | 4.78 | 6.06 | +| Log Opcodes (0.6M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log2) | 4.43 | 6.07 | +| Log Opcodes (0.6M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log3) | 4.23 | 5.56 | +| Log Opcodes (0.6M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log4) | 4.72 | 6.05 | +| Log Opcodes (0.6M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log0) | 4.71 | 6.59 | +| Log Opcodes (0.6M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log1) | 3.99 | 6.07 | +| Log Opcodes (0.6M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log2) | 5.96 | 5.54 | +| Log Opcodes (0.6M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log3) | 4.83 | 6.06 | +| Log Opcodes (0.6M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log4) | 4.57 | 6.07 | +| Log Opcodes (0.6M, Fixed, Zero Topic, 0 Bytes Data, Log0) | 4.97 | 6.06 | +| Log Opcodes (0.6M, Fixed, Zero Topic, 0 Bytes Data, Log1) | 4.56 | 6.05 | +| Log Opcodes (0.6M, Fixed, Zero Topic, 0 Bytes Data, Log2) | 5.88 | 6.06 | +| Log Opcodes (0.6M, Fixed, Zero Topic, 0 Bytes Data, Log3) | 5.08 | 6.07 | +| Log Opcodes (0.6M, Fixed, Zero Topic, 0 Bytes Data, Log4) | 5.22 | 6.04 | +| Log Opcodes (0.6M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log0) | 4.79 | 6.07 | +| Log Opcodes (0.6M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log1) | 5.09 | 6.06 | +| Log Opcodes (0.6M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log2) | 3.91 | 6.07 | +| Log Opcodes (0.6M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log3) | 3.88 | 6.05 | +| Log Opcodes (0.6M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log4) | 4.63 | 6.55 | +| Log Opcodes (0.6M, Fixed, Zero Topic, 1 Mib Zeros Data, Log0) | 4.58 | 6.06 | +| Log Opcodes (0.6M, Fixed, Zero Topic, 1 Mib Zeros Data, Log1) | 4.89 | 6.06 | +| Log Opcodes (0.6M, Fixed, Zero Topic, 1 Mib Zeros Data, Log2) | 4.10 | 6.08 | +| Log Opcodes (0.6M, Fixed, Zero Topic, 1 Mib Zeros Data, Log3) | 3.83 | 6.05 | +| Log Opcodes (0.6M, Fixed, Zero Topic, 1 Mib Zeros Data, Log4) | 4.04 | 5.56 | +| Mcopy (0.6M, Dynamic Src Dst, 0Bytes) | 13.76 | 10.11 | +| Mcopy (0.6M, Dynamic Src Dst, 100Bytes) | 14.09 | 8.62 | +| Mcopy (0.6M, Dynamic Src Dst, 10Kib) | 12.36 | 8.08 | +| Mcopy (0.6M, Dynamic Src Dst, 1Mib) | 6.11 | 6.56 | +| Mcopy (0.6M, Fixed Src Dst, 0Bytes) | 11.43 | 8.09 | +| Mcopy (0.6M, Fixed Src Dst, 100Bytes) | 11.03 | 8.07 | +| Mcopy (0.6M, Fixed Src Dst, 10Kib) | 10.15 | 7.09 | +| Mcopy (0.6M, Fixed Src Dst, 1Mib) | 4.95 | 6.06 | +| Memory Access (0.6M, Big Mem, Init Offset, Off 0, Mload) | 14.12 | 8.58 | +| Memory Access (0.6M, Big Mem, Init Offset, Off 0, Mstore) | 13.00 | 8.60 | +| Memory Access (0.6M, Big Mem, Init Offset, Off 0, Mstore8) | 10.37 | 8.59 | +| Memory Access (0.6M, Big Mem, Init Offset, Off 1, Mload) | 13.56 | 8.58 | +| Memory Access (0.6M, Big Mem, Init Offset, Off 1, Mstore) | 13.73 | 9.07 | +| Memory Access (0.6M, Big Mem, Init Offset, Off 1, Mstore8) | 10.03 | 8.07 | +| Memory Access (0.6M, Big Mem, Init Offset, Off 31, Mload) | 13.96 | 8.57 | +| Memory Access (0.6M, Big Mem, Init Offset, Off 31, Mstore) | 14.21 | 9.10 | +| Memory Access (0.6M, Big Mem, Init Offset, Off 31, Mstore8) | 11.43 | 7.58 | +| Memory Access (0.6M, Big Mem, Uninit Offset, Off 0, Mload) | 13.48 | 8.59 | +| Memory Access (0.6M, Big Mem, Uninit Offset, Off 0, Mstore) | 12.99 | 8.59 | +| Memory Access (0.6M, Big Mem, Uninit Offset, Off 0, Mstore8) | 10.35 | 7.58 | +| Memory Access (0.6M, Big Mem, Uninit Offset, Off 1, Mload) | 13.89 | 8.59 | +| Memory Access (0.6M, Big Mem, Uninit Offset, Off 1, Mstore) | 13.79 | 8.58 | +| Memory Access (0.6M, Big Mem, Uninit Offset, Off 1, Mstore8) | 11.46 | 7.58 | +| Memory Access (0.6M, Big Mem, Uninit Offset, Off 31, Mload) | 13.63 | 8.08 | +| Memory Access (0.6M, Big Mem, Uninit Offset, Off 31, Mstore) | 13.35 | 9.06 | +| Memory Access (0.6M, Big Mem, Uninit Offset, Off 31, Mstore8) | 11.78 | 8.11 | +| Memory Access (0.6M, Small Mem, Init Offset, Off 0, Mload) | 13.80 | 8.62 | +| Memory Access (0.6M, Small Mem, Init Offset, Off 0, Mstore) | 13.67 | 9.10 | +| Memory Access (0.6M, Small Mem, Init Offset, Off 0, Mstore8) | 9.83 | 8.57 | +| Memory Access (0.6M, Small Mem, Init Offset, Off 1, Mload) | 13.27 | 8.09 | +| Memory Access (0.6M, Small Mem, Init Offset, Off 1, Mstore) | 13.94 | 9.11 | +| Memory Access (0.6M, Small Mem, Init Offset, Off 1, Mstore8) | 11.42 | 8.08 | +| Memory Access (0.6M, Small Mem, Init Offset, Off 31, Mload) | 13.70 | 8.62 | +| Memory Access (0.6M, Small Mem, Init Offset, Off 31, Mstore) | 13.49 | 8.58 | +| Memory Access (0.6M, Small Mem, Init Offset, Off 31, Mstore8) | 11.32 | 8.59 | +| Memory Access (0.6M, Small Mem, Uninit Offset, Off 0, Mload) | 13.38 | 8.10 | +| Memory Access (0.6M, Small Mem, Uninit Offset, Off 0, Mstore) | 13.33 | 8.60 | +| Memory Access (0.6M, Small Mem, Uninit Offset, Off 0, Mstore8) | 11.34 | 8.08 | +| Memory Access (0.6M, Small Mem, Uninit Offset, Off 1, Mload) | 13.93 | 8.58 | +| Memory Access (0.6M, Small Mem, Uninit Offset, Off 1, Mstore) | 13.34 | 9.58 | +| Memory Access (0.6M, Small Mem, Uninit Offset, Off 1, Mstore8) | 12.38 | 7.56 | +| Memory Access (0.6M, Small Mem, Uninit Offset, Off 31, Mload) | 13.25 | 8.58 | +| Memory Access (0.6M, Small Mem, Uninit Offset, Off 31, Mstore) | 13.38 | 9.12 | +| Memory Access (0.6M, Small Mem, Uninit Offset, Off 31, Mstore8) | 11.68 | 8.08 | +| Mod (0.6M, Op Mod, Mod Bits 127) | 37.09 | 17.67 | +| Mod (0.6M, Op Mod, Mod Bits 191) | 48.33 | 20.73 | +| Mod (0.6M, Op Mod, Mod Bits 255) | 36.21 | 17.19 | +| Mod (0.6M, Op Mod, Mod Bits 63) | 27.14 | 14.17 | +| Mod (0.6M, Op Smod, Mod Bits 127) | 38.28 | 18.16 | +| Mod (0.6M, Op Smod, Mod Bits 191) | 48.17 | 21.72 | +| Mod (0.6M, Op Smod, Mod Bits 255) | 37.85 | 17.68 | +| Mod (0.6M, Op Smod, Mod Bits 63) | 30.27 | 14.65 | +| Modarith (0.6M, Op Addmod, Mod Bits 127) | 30.04 | 14.64 | +| Modarith (0.6M, Op Addmod, Mod Bits 191) | 35.18 | 17.18 | +| Modarith (0.6M, Op Addmod, Mod Bits 255) | 31.63 | 14.63 | +| Modarith (0.6M, Op Addmod, Mod Bits 63) | 24.36 | 12.65 | +| Modarith (0.6M, Op Mulmod, Mod Bits 127) | 50.70 | 23.23 | +| Modarith (0.6M, Op Mulmod, Mod Bits 191) | 67.59 | 28.32 | +| Modarith (0.6M, Op Mulmod, Mod Bits 255) | 66.32 | 27.77 | +| Modarith (0.6M, Op Mulmod, Mod Bits 63) | 40.39 | 18.21 | +| Modexp (0.6M, Mod 1045 Gas Base Heavy) | 623.3 | 247.2 | +| Modexp (0.6M, Mod 1360 Gas Balanced) | 160.1 | 61.12 | +| Modexp (0.6M, Mod 400 Gas Exp Heavy) | 198.9 | 75.27 | +| Modexp (0.6M, Mod 408 Gas Balanced) | 141.1 | 53.52 | +| Modexp (0.6M, Mod 408 Gas Base Heavy) | 556.5 | 215.7 | +| Modexp (0.6M, Mod 600 As Balanced) | 147.5 | 56.09 | +| Modexp (0.6M, Mod 600 Gas Exp Heavy) | 215.1 | 79.80 | +| Modexp (0.6M, Mod 616 Gas Base Heavy) | N/A | 230.9 | +| Modexp (0.6M, Mod 677 Gas Base Heavy) | 151.3 | 57.55 | +| Modexp (0.6M, Mod 765 Gas Exp Heavy) | 172.2 | 62.60 | +| Modexp (0.6M, Mod 767 Gas Balanced) | 139.8 | 54.09 | +| Modexp (0.6M, Mod 800 Gas Base Heavy) | 616.7 | 239.4 | +| Modexp (0.6M, Mod 800 Gas Exp Heavy) | 219.3 | 80.33 | +| Modexp (0.6M, Mod 852 Gas Exp Heavy) | 224.9 | 82.84 | +| Modexp (0.6M, Mod 867 Gas Base Heavy) | 619.5 | 238.8 | +| Modexp (0.6M, Mod 996 Gas Balanced) | 139.6 | 55.15 | +| Modexp (0.6M, Mod Even 1024B Exp 1024) | 4.76 | 6.07 | +| Modexp (0.6M, Mod Even 128B Exp 1024) | 125.7 | 49.98 | +| Modexp (0.6M, Mod Even 16B Exp 320) | 207.2 | 76.34 | +| Modexp (0.6M, Mod Even 24B Exp 168) | 172.5 | 64.66 | +| Modexp (0.6M, Mod Even 256B Exp 1024) | 77.94 | 33.86 | +| Modexp (0.6M, Mod Even 32B Exp 256) | 164.9 | 61.09 | +| Modexp (0.6M, Mod Even 32B Exp 40) | 138.9 | 51.02 | +| Modexp (0.6M, Mod Even 32B Exp 96) | 157.3 | 59.09 | +| Modexp (0.6M, Mod Even 512B Exp 1024) | 4.40 | 6.56 | +| Modexp (0.6M, Mod Even 64B Exp 512) | 140.8 | 58.59 | +| Modexp (0.6M, Mod Even 8B Exp 896) | 346.1 | 129.7 | +| Modexp (0.6M, Mod Exp 208 Gas Balanced) | 124.3 | 49.05 | +| Modexp (0.6M, Mod Exp 215 Gas Exp Heavy) | 312.3 | 115.0 | +| Modexp (0.6M, Mod Exp 298 Gas Exp Heavy) | 338.6 | 124.7 | +| Modexp (0.6M, Mod Min As Balanced) | 134.9 | 50.46 | +| Modexp (0.6M, Mod Min As Base Heavy) | 450.2 | 175.2 | +| Modexp (0.6M, Mod Min As Exp Heavy) | N/A | 112.7 | +| Modexp (0.6M, Mod Odd 1024B Exp 1024) | 4.91 | 6.58 | +| Modexp (0.6M, Mod Odd 128B Exp 1024) | 120.7 | 48.96 | +| Modexp (0.6M, Mod Odd 256B Exp 1024) | 78.39 | 34.31 | +| Modexp (0.6M, Mod Odd 32B Exp 256) | 159.8 | 61.60 | +| Modexp (0.6M, Mod Odd 32B Exp 96) | 146.8 | 56.08 | +| Modexp (0.6M, Mod Odd 32B Exp Cover Windows) | 120.0 | 45.95 | +| Modexp (0.6M, Mod Odd 512B Exp 1024) | 4.59 | 5.56 | +| Modexp (0.6M, Mod Odd 64B Exp 512) | 141.7 | 58.55 | +| Modexp (0.6M, Mod Pawel 2) | 209.4 | 74.77 | +| Modexp (0.6M, Mod Pawel 3) | 170.2 | 62.12 | +| Modexp (0.6M, Mod Pawel 4) | 146.7 | 56.58 | +| Modexp (0.6M, Mod Vul Common 1152N1) | 90.50 | 36.88 | +| Modexp (0.6M, Mod Vul Common 1349N1) | 128.4 | 49.46 | +| Modexp (0.6M, Mod Vul Common 1360N1) | 141.0 | 53.55 | +| Modexp (0.6M, Mod Vul Common 1360N2) | 130.8 | 49.47 | +| Modexp (0.6M, Mod Vul Common 200N1) | 72.28 | 30.78 | +| Modexp (0.6M, Mod Vul Common 200N2) | 92.22 | 36.93 | +| Modexp (0.6M, Mod Vul Common 200N3) | 92.86 | 36.91 | +| Modexp (0.6M, Mod Vul Example 1) | 164.3 | 60.16 | +| Modexp (0.6M, Mod Vul Example 2) | 152.0 | 57.11 | +| Modexp (0.6M, Mod Vul Guido 1 Even) | 112.1 | 45.46 | +| Modexp (0.6M, Mod Vul Guido 2 Even) | 187.7 | 71.76 | +| Modexp (0.6M, Mod Vul Guido 3 Even) | N/A | 123.8 | +| Modexp (0.6M, Mod Vul Marius 1 Even) | 172.7 | 64.59 | +| Modexp (0.6M, Mod Vul Nagydani 1 Pow 0X10001) | 116.3 | 45.01 | +| Modexp (0.6M, Mod Vul Nagydani 1 Qube) | 88.58 | 35.36 | +| Modexp (0.6M, Mod Vul Nagydani 1 Square) | 82.04 | 32.82 | +| Modexp (0.6M, Mod Vul Nagydani 2 Pow 0X10001) | 119.9 | 46.49 | +| Modexp (0.6M, Mod Vul Nagydani 2 Qube) | 258.0 | 88.38 | +| Modexp (0.6M, Mod Vul Nagydani 2 Square) | 236.2 | 89.44 | +| Modexp (0.6M, Mod Vul Nagydani 3 Pow 0X10001) | 112.4 | 45.98 | +| Modexp (0.6M, Mod Vul Nagydani 3 Qube) | 612.5 | 230.9 | +| Modexp (0.6M, Mod Vul Nagydani 3 Square) | 575.5 | 208.0 | +| Modexp (0.6M, Mod Vul Nagydani 4 Pow 0X10001) | 104.8 | 44.99 | +| Modexp (0.6M, Mod Vul Nagydani 4 Qube) | 686.7 | 274.8 | +| Modexp (0.6M, Mod Vul Nagydani 4 Square) | 633.8 | 250.0 | +| Modexp (0.6M, Mod Vul Nagydani 5 Pow 0X10001) | 101.2 | 43.46 | +| Modexp (0.6M, Mod Vul Nagydani 5 Qube) | 691.2 | 274.8 | +| Modexp (0.6M, Mod Vul Nagydani 5 Square) | 636.8 | 257.3 | +| Modexp (0.6M, Mod Vul Pawel 1 Exp Heavy) | 333.0 | 119.3 | +| Modexp (0.6M, Mod Vul Pawel 2 Exp Heavy) | 192.2 | 71.71 | +| Modexp (0.6M, Mod Vul Pawel 3 Exp Heavy) | 156.5 | 58.61 | +| Modexp (0.6M, Mod Vul Pawel 4 Exp Heavy) | 140.9 | 54.03 | +| Msize (0.6M, Mem Size 0) | 13.07 | 9.10 | +| Msize (0.6M, Mem Size 1) | 14.73 | 8.61 | +| Msize (0.6M, Mem Size 1000) | 14.28 | 8.58 | +| Msize (0.6M, Mem Size 100000) | 12.21 | 8.58 | +| Msize (0.6M, Mem Size 1000000) | 14.01 | 8.60 | +| Precompile Fixed Cost (0.6M, Blake2F) | 132.4 | 46.48 | +| Precompile Fixed Cost (0.6M, Bls12 Fp To G1) | 22.35 | 91.43 | +| Precompile Fixed Cost (0.6M, Bls12 Fp To G2) | 16.85 | 67.59 | +| Precompile Fixed Cost (0.6M, Bls12 G1Add) | 17.63 | 52.51 | +| Precompile Fixed Cost (0.6M, Bls12 G1Msm) | 4.88 | 6.07 | +| Precompile Fixed Cost (0.6M, Bls12 G2Add) | 18.79 | 56.01 | +| Precompile Fixed Cost (0.6M, Bls12 G2Msm) | 5.53 | 6.57 | +| Precompile Fixed Cost (0.6M, Bls12 Pairing Check) | 28.32 | 89.45 | +| Precompile Fixed Cost (0.6M, Bn128 Add 1 2) | 19.82 | 11.13 | +| Precompile Fixed Cost (0.6M, Bn128 Add Infinities) | 13.98 | 9.12 | +| Precompile Fixed Cost (0.6M, Bn128 Add) | 20.52 | 18.68 | +| Precompile Fixed Cost (0.6M, Bn128 Mul 1 2 2 Scalar) | 6.28 | 7.08 | +| Precompile Fixed Cost (0.6M, Bn128 Mul 1 2 32 Byte Scalar) | 51.69 | 26.28 | +| Precompile Fixed Cost (0.6M, Bn128 Mul 32 Byte Coord And 2 Scalar) | 7.71 | 7.06 | +| Precompile Fixed Cost (0.6M, Bn128 Mul 32 Byte Coord And Scalar) | 51.06 | 25.74 | +| Precompile Fixed Cost (0.6M, Bn128 Mul Infinities 2 Scalar) | 5.67 | 7.58 | +| Precompile Fixed Cost (0.6M, Bn128 Mul Infinities 32 Byte Scalar) | 35.05 | 18.19 | +| Precompile Fixed Cost (0.6M, Bn128 Mul) | 52.58 | 25.75 | +| Precompile Fixed Cost (0.6M, Bn128 One Pairing) | 49.11 | 17.69 | +| Precompile Fixed Cost (0.6M, Bn128 Two Pairings Empty) | 4.06 | 6.07 | +| Precompile Fixed Cost (0.6M, Bn128 Two Pairings) | 51.05 | 19.21 | +| Precompile Fixed Cost (0.6M, Ecrecover) | 50.78 | 12.63 | +| Precompile Fixed Cost (0.6M, Point Evaluation) | 53.41 | 219.2 | +| Precompile Only Data Input (0.6M, Identity) | 11.33 | 7.58 | +| Precompile Only Data Input (0.6M, Ripemd, 160) | 10.55 | 6.57 | +| Precompile Only Data Input (0.6M, Sha2, 256) | 7.69 | 11.60 | +| Push (0.6M, Push0) | 13.38 | 8.59 | +| Push (0.6M, Push1) | 10.74 | 7.06 | +| Push (0.6M, Push10) | 12.84 | 8.08 | +| Push (0.6M, Push11) | 13.12 | 9.10 | +| Push (0.6M, Push12) | 12.18 | 8.56 | +| Push (0.6M, Push13) | 12.62 | 9.11 | +| Push (0.6M, Push14) | 13.72 | 8.60 | +| Push (0.6M, Push15) | 14.54 | 9.09 | +| Push (0.6M, Push16) | 13.81 | 8.57 | +| Push (0.6M, Push17) | 12.33 | 9.11 | +| Push (0.6M, Push18) | 14.47 | 8.59 | +| Push (0.6M, Push19) | 14.42 | 9.10 | +| Push (0.6M, Push2) | 11.46 | 7.58 | +| Push (0.6M, Push20) | 14.96 | 8.59 | +| Push (0.6M, Push21) | 14.04 | 9.10 | +| Push (0.6M, Push22) | 15.53 | 9.60 | +| Push (0.6M, Push23) | 14.66 | 10.10 | +| Push (0.6M, Push24) | 14.78 | 10.10 | +| Push (0.6M, Push25) | 15.47 | 10.10 | +| Push (0.6M, Push26) | 15.80 | 9.60 | +| Push (0.6M, Push27) | 16.92 | 10.60 | +| Push (0.6M, Push28) | 17.09 | 10.10 | +| Push (0.6M, Push29) | 17.43 | 10.10 | +| Push (0.6M, Push3) | 10.53 | 7.07 | +| Push (0.6M, Push30) | 17.24 | 9.59 | +| Push (0.6M, Push31) | 17.48 | 10.59 | +| Push (0.6M, Push32) | 16.97 | 10.09 | +| Push (0.6M, Push4) | 10.77 | 8.61 | +| Push (0.6M, Push5) | 12.02 | 7.57 | +| Push (0.6M, Push6) | 11.37 | 8.59 | +| Push (0.6M, Push7) | 12.23 | 8.60 | +| Push (0.6M, Push8) | 12.25 | 8.08 | +| Push (0.6M, Push9) | 12.39 | 7.59 | +| Return Revert (0.6M, 1Kib Of Non, Zero Data, Return) | 13.60 | 9.10 | +| Return Revert (0.6M, 1Kib Of Non, Zero Data, Revert) | 14.52 | 9.57 | +| Return Revert (0.6M, 1Kib Of Zero Data, Return) | 15.91 | 9.60 | +| Return Revert (0.6M, 1Kib Of Zero Data, Revert) | 16.73 | 10.11 | +| Return Revert (0.6M, 1Mib Of Non, Zero Data, Return) | 4.69 | 6.08 | +| Return Revert (0.6M, 1Mib Of Non, Zero Data, Revert) | 5.72 | 6.05 | +| Return Revert (0.6M, 1Mib Of Zero Data, Return) | 4.36 | 6.57 | +| Return Revert (0.6M, 1Mib Of Zero Data, Revert) | 4.06 | 6.08 | +| Return Revert (0.6M, Empty, Return) | 18.95 | 10.64 | +| Return Revert (0.6M, Empty, Revert) | 22.12 | 12.11 | +| Returndatacopy (0.6M, Fixed Dst False, 0Bytes) | 14.49 | 9.58 | +| Returndatacopy (0.6M, Fixed Dst False, 100Bytes) | 13.22 | 8.60 | +| Returndatacopy (0.6M, Fixed Dst False, 10Kib) | 11.10 | 7.08 | +| Returndatacopy (0.6M, Fixed Dst False, 1Mib) | 4.87 | 6.57 | +| Returndatacopy (0.6M, Fixed Dst True, 0Bytes) | 13.02 | 8.58 | +| Returndatacopy (0.6M, Fixed Dst True, 100Bytes) | 11.45 | 7.08 | +| Returndatacopy (0.6M, Fixed Dst True, 10Kib) | 8.89 | 7.07 | +| Returndatacopy (0.6M, Fixed Dst True, 1Mib) | 4.64 | 5.55 | +| Returndatasize Nonzero (0.6M, Returned Size 0, Return Data Style Returndatastyle.Identity) | 12.11 | 8.08 | +| Returndatasize Nonzero (0.6M, Returned Size 0, Return Data Style Returndatastyle.Return) | 11.89 | 8.60 | +| Returndatasize Nonzero (0.6M, Returned Size 0, Return Data Style Returndatastyle.Revert) | 11.57 | 8.57 | +| Returndatasize Nonzero (0.6M, Returned Size 1, Return Data Style Returndatastyle.Identity) | 10.56 | 8.57 | +| Returndatasize Nonzero (0.6M, Returned Size 1, Return Data Style Returndatastyle.Return) | 12.12 | 8.07 | +| Returndatasize Nonzero (0.6M, Returned Size 1, Return Data Style Returndatastyle.Revert) | 11.68 | 8.07 | +| Returndatasize Zero (0.6M) | 11.68 | 8.07 | +| Selfbalance (0.6M) | 53.15 | 23.23 | +| Selfdestruct Created (0.6M, No Value) | 4.08 | 6.58 | +| Selfdestruct Created (0.6M, With Value) | 3.87 | 6.55 | +| Selfdestruct Existing (0.6M, No Value) | 8.72 | 6.07 | +| Selfdestruct Existing (0.6M, With Value) | 7.79 | 6.05 | +| Selfdestruct Initcode (0.6M, No Value) | 3.78 | 5.56 | +| Selfdestruct Initcode (0.6M, With Value) | 3.86 | 6.56 | +| Shifts (0.6M, Shift Right Sar) | 17.32 | 10.10 | +| Shifts (0.6M, Shift Right Shr) | 17.32 | 10.13 | +| Storage Access Cold (0.6M, Absent Slots False, Ssload) | 11.38 | 7.57 | +| Storage Access Cold (0.6M, Absent Slots False, Sstore New Value) | 8.71 | 7.06 | +| Storage Access Cold (0.6M, Absent Slots False, Sstore New Value, Out Of Gas) | 8.87 | 6.57 | +| Storage Access Cold (0.6M, Absent Slots False, Sstore New Value, Revert) | 7.69 | 6.57 | +| Storage Access Cold (0.6M, Absent Slots False, Sstore Same Value) | 10.96 | 7.58 | +| Storage Access Cold (0.6M, Absent Slots False, Sstore Same Value, Out Of Gas) | 8.91 | 7.07 | +| Storage Access Cold (0.6M, Absent Slots False, Sstore Same Value, Revert) | 10.39 | 7.08 | +| Storage Access Cold (0.6M, Absent Slots True, Ssload) | 8.04 | 6.06 | +| Storage Access Cold (0.6M, Absent Slots True, Sstore New Value) | 3.87 | 6.05 | +| Storage Access Cold (0.6M, Absent Slots True, Sstore New Value, Out Of Gas) | 3.91 | 6.08 | +| Storage Access Cold (0.6M, Absent Slots True, Sstore New Value, Revert) | 3.85 | 5.58 | +| Storage Access Cold (0.6M, Absent Slots True, Sstore Same Value) | 4.18 | 6.08 | +| Storage Access Cold (0.6M, Absent Slots True, Sstore Same Value, Out Of Gas) | 4.24 | 6.06 | +| Storage Access Cold (0.6M, Absent Slots True, Sstore Same Value, Revert) | 3.98 | 5.56 | +| Storage Access Warm (0.6M, Sload) | 10.51 | 7.57 | +| Storage Access Warm (0.6M, Sstore New Value) | 17.12 | 10.09 | +| Storage Access Warm (0.6M, Sstore Same Value) | 12.91 | 8.58 | +| Swap (0.6M, Swap1) | 18.42 | 10.61 | +| Swap (0.6M, Swap10) | 16.80 | 10.62 | +| Swap (0.6M, Swap11) | 16.42 | 10.60 | +| Swap (0.6M, Swap12) | 16.97 | 10.63 | +| Swap (0.6M, Swap13) | 18.17 | 11.12 | +| Swap (0.6M, Swap14) | 16.38 | 11.10 | +| Swap (0.6M, Swap15) | 16.43 | 11.09 | +| Swap (0.6M, Swap16) | 16.48 | 10.61 | +| Swap (0.6M, Swap2) | 17.51 | 10.63 | +| Swap (0.6M, Swap3) | 16.36 | 10.62 | +| Swap (0.6M, Swap4) | 15.31 | 10.59 | +| Swap (0.6M, Swap5) | 16.69 | 10.61 | +| Swap (0.6M, Swap6) | 16.58 | 10.61 | +| Swap (0.6M, Swap7) | 16.89 | 10.61 | +| Swap (0.6M, Swap8) | 16.64 | 10.60 | +| Swap (0.6M, Swap9) | 17.16 | 11.12 | +| Tload (0.6M, Val Mut False, Key Mut False) | 5.16 | 6.07 | +| Tload (0.6M, Val Mut False, Key Mut True) | 5.09 | 6.57 | +| Tload (0.6M, Val Mut True, Key Mut False) | 5.03 | 6.57 | +| Tload (0.6M, Val Mut True, Key Mut True) | 6.28 | 6.57 | +| Tstore (0.6M, Dense Val Mut False, Key Mut False) | 10.78 | 7.59 | +| Tstore (0.6M, Dense Val Mut False, Key Mut True) | 10.84 | 7.09 | +| Tstore (0.6M, Dense Val Mut True, Key Mut False) | 13.72 | 8.09 | +| Tstore (0.6M, Dense Val Mut True, Key Mut True) | 14.19 | 8.58 | +| Unop (0.6M, Iszero) | 17.61 | 12.12 | +| Unop (0.6M, Not) | 10.82 | 7.08 | +| Zero Param (0.6M, Address) | 20.13 | 10.62 | +| Zero Param (0.6M, Basefee) | 13.95 | 9.09 | +| Zero Param (0.6M, Blobbasefee) | 16.59 | 10.65 | +| Zero Param (0.6M, Caller) | 20.59 | 10.61 | +| Zero Param (0.6M, Chainid) | 13.94 | 8.58 | +| Zero Param (0.6M, Codesize) | 14.16 | 8.59 | +| Zero Param (0.6M, Coinbase) | N/A | 10.12 | +| Zero Param (0.6M, Gas) | 13.78 | 9.09 | +| Zero Param (0.6M, Gaslimit) | 14.18 | 8.57 | +| Zero Param (0.6M, Gasprice) | 15.79 | 9.59 | +| Zero Param (0.6M, Number) | 13.72 | 10.13 | +| Zero Param (0.6M, Origin) | 20.64 | 10.08 | +| Zero Param (0.6M, Prevrandao) | 24.56 | 13.12 | +| Zero Param (0.6M, Timestamp) | 14.64 | 9.59 | \ No newline at end of file diff --git a/www/docs/pages/benchmark-results/gas-categorized/0.6m/risc0-0.6M-4.md b/www/docs/pages/benchmark-results/gas-categorized/0.6m/risc0-0.6M-4.md new file mode 100644 index 00000000..8339ae7f --- /dev/null +++ b/www/docs/pages/benchmark-results/gas-categorized/0.6m/risc0-0.6M-4.md @@ -0,0 +1,543 @@ +# zkEVM Benchmark Results + +Generated on: 2026-01-01 15:22:14 + +## Folder: zkevm-metrics-risc0-0.6M-4 + +**zkVM:** risc0-v3.0.3 (4 GPUs) + +**Hardware Configuration:** CPU: AMD EPYC 7B13 64-Core Processor | RAM: 371 GiB | GPU: NVIDIA GeForce RTX 4090, NVIDIA GeForce RTX 4090, NVIDIA GeForce RTX 4090, NVIDIA GeForce RTX 4090 + +## Proving Metrics + +| Benchmark | Gas Used | Proof Size (bytes) | Proving Time (ms) | Proving Time (s) | Peak Memory (MB) | Avg Memory (MB) | Initial Memory (MB) | +|---|---|---|---|---|---|---|---| +| Block Full Access List And Data (0.6M) | 599,990 | 223,239 | 5,397 | 5.40 | 5,371,540 | 5,371,540 | 5,370,564 | +| Block Full Data (0.6M, Non Zero Byte) | 600,000 | 223,239 | 3,848 | 3.85 | 5,931,676 | 5,931,676 | 5,929,724 | +| Block Full Data (0.6M, Zero Byte) | 600,000 | 223,239 | 6,454 | 6.45 | 3,257,584 | 3,254,493.3 | 3,247,824 | +| Block Full Of Ether Transfers (0.6M, A To A) | 588,000 | 223,239 | 11,879 | 11.88 | 5,620,204 | 5,620,204 | 5,619,228 | +| Block Full Of Ether Transfers (0.6M, A To B) | 588,000 | 223,239 | 12,902 | 12.90 | 3,659,680 | 3,655,342.2 | 3,645,040 | +| Block Full Of Ether Transfers (0.6M, A To Diff Acc) | 588,000 | 223,239 | 9,677 | 9.68 | 5,372,512 | 5,372,512 | 5,372,512 | +| Block Full Of Ether Transfers (0.6M, Diff Acc To B) | 588,000 | 223,239 | 11,330 | 11.33 | 4,519,532 | 4,515,194.2 | 4,510,748 | +| Block Full Of Ether Transfers (0.6M, Diff Acc To Diff Acc) | 588,000 | 223,239 | 11,777 | 11.78 | 2,350,892 | 2,340,333.5 | 2,328,444 | +| Bytecode Single Opcode (0.6M, Callcode) | 600,000 | 223,239 | 63,504 | 63.50 | 2,319,660 | 2,237,788.6 | 2,186,924 | +| Bytecode Single Opcode (0.6M, Call) | 600,000 | 223,239 | 61,296 | 61.30 | 5,472,044 | 5,468,105.1 | 5,466,188 | +| Bytecode Single Opcode (0.6M, Delegatecall) | 600,000 | 223,239 | 62,881 | 62.88 | 6,481,060 | 6,481,060 | 6,480,084 | +| Bytecode Single Opcode (0.6M, Extcodecopy) | 600,000 | 223,239 | 59,476 | 59.48 | 5,290,548 | 5,288,869.3 | 5,280,788 | +| Bytecode Single Opcode (0.6M, Extcodehash) | 600,000 | 223,239 | 61,086 | 61.09 | 5,810,476 | 5,810,476 | 5,809,500 | +| Bytecode Single Opcode (0.6M, Extcodesize) | 600,000 | 223,239 | 60,582 | 60.58 | 5,345,196 | 5,345,196 | 5,345,196 | +| Bytecode Single Opcode (0.6M, Staticcall) | 600,000 | 223,239 | 63,110 | 63.11 | 5,118,780 | 5,115,301.4 | 5,102,188 | +| Create (0.6M, 0Bytes, Create2) | 600,000 | 223,239 | 4,777 | 4.78 | 6,075,096 | 6,074,900.8 | 6,073,144 | +| Create (0.6M, 0Bytes, Create) | 600,000 | 223,239 | 4,797 | 4.80 | 5,094,384 | 5,094,384 | 5,090,480 | +| Create (0.6M, 0Bytes, Create2) | 600,000 | 223,239 | 5,780 | 5.78 | 3,267,344 | 3,267,344 | 3,258,560 | +| Create (0.6M, 0Bytes, Create) | 600,000 | 223,239 | 4,847 | 4.85 | 6,006,792 | 6,006,792 | 6,005,816 | +| Create (0.6M, 0.25X Max Code, Zero Data, Create2) | 600,000 | 223,239 | 4,985 | 4.99 | 5,852,652 | 5,852,652 | 5,852,652 | +| Create (0.6M, 0.25X Max Code, Zero Data, Create) | 600,000 | 223,239 | 4,505 | 4.50 | 5,440,816 | 5,440,816 | 5,439,840 | +| Create (0.6M, 0.25X Max Code, Create2) | 600,000 | 223,239 | 4,868 | 4.87 | 4,952,864 | 4,952,864 | 4,949,936 | +| Create (0.6M, 0.25X Max Code, Create) | 600,000 | 223,239 | 4,747 | 4.75 | 6,023,372 | 6,023,372 | 6,023,372 | +| Create (0.6M, 0.50X Max Code Size With Non, Zero Data, Create2) | 600,000 | 223,239 | 5,071 | 5.07 | 1,212,876 | 1,198,793.7 | 1,182,620 | +| Create (0.6M, 0.50X Max Code Size With Non, Zero Data, Create) | 600,000 | 223,239 | 5,090 | 5.09 | 5,823,408 | 5,823,408 | 5,822,432 | +| Create (0.6M, 0.50X Max Code Size With Zero Data, Create2) | 600,000 | 223,239 | 5,186 | 5.19 | 6,160,960 | 6,160,681.1 | 6,159,984 | +| Create (0.6M, 0.50X Max Code Size With Zero Data, Create) | 600,000 | 223,239 | 4,958 | 4.96 | 5,817,564 | 5,816,262.7 | 5,815,612 | +| Create (0.6M, 0.75X Max Code Size With Non, Zero Data, Create2) | 600,000 | 223,239 | 5,587 | 5.59 | 5,225,156 | 5,224,830.7 | 5,222,228 | +| Create (0.6M, 0.75X Max Code Size With Non, Zero Data, Create) | 600,000 | 223,239 | 5,867 | 5.87 | 5,852,652 | 5,852,326.7 | 5,852,652 | +| Create (0.6M, 0.75X Max Code Size With Zero Data, Create2) | 600,000 | 223,239 | 5,591 | 5.59 | 5,408,620 | 5,408,457.3 | 5,408,620 | +| Create (0.6M, 0.75X Max Code Size With Zero Data, Create) | 600,000 | 223,239 | 5,220 | 5.22 | 5,378,368 | 5,378,042.7 | 5,377,392 | +| Create (0.6M, Max Code, Zero Data, Create2) | 600,000 | 223,239 | 6,089 | 6.09 | 5,703,140 | 5,703,140 | 5,703,140 | +| Create (0.6M, Max Code, Zero Data, Create) | 600,000 | 223,239 | 6,066 | 6.07 | 6,470,328 | 6,470,328 | 6,470,328 | +| Create (0.6M, Max Code, Create2) | 600,000 | 223,239 | 5,547 | 5.55 | 2,899,392 | 2,898,416 | 2,889,632 | +| Create (0.6M, Max Code, Create) | 600,000 | 223,239 | 5,057 | 5.06 | 5,790,960 | 5,790,960 | 5,790,960 | +| Creates Collisions (0.6M, Create2) | 600,000 | 223,239 | 4,530 | 4.53 | 5,829,264 | 5,828,613.3 | 5,826,336 | +| Creates Collisions (0.6M, Create) | 600,000 | 223,239 | 4,901 | 4.90 | 5,939,480 | 5,939,480 | 5,939,480 | +| Initcode Jumpdest Analysis (0.6M, 00) | 600,000 | 223,239 | 10,551 | 10.55 | 5,787,060 | 5,787,060 | 5,787,060 | +| Initcode Jumpdest Analysis (0.6M, 5B) | 600,000 | 223,239 | 11,172 | 11.17 | 5,449,596 | 5,449,596 | 5,449,596 | +| Initcode Jumpdest Analysis (0.6M, 605B5B) | 600,000 | 223,239 | 10,423 | 10.42 | 5,884,856 | 5,884,856 | 5,883,880 | +| Initcode Jumpdest Analysis (0.6M, 605B) | 600,000 | 223,239 | 8,706 | 8.71 | 5,334,464 | 5,333,165.3 | 5,328,612 | +| Initcode Jumpdest Analysis (0.6M, 615B5B5B) | 600,000 | 223,239 | 8,471 | 8.47 | 5,930,700 | 5,930,700 | 5,929,724 | +| Initcode Jumpdest Analysis (0.6M, 615B5B) | 600,000 | 223,239 | 7,569 | 7.57 | 5,649,484 | 5,649,484 | 5,644,604 | +| Amortized Bn128 Pairings (0.6M) | 600,000 | 223,239 | 50,140 | 50.14 | 5,604,588 | 5,602,202.2 | 5,597,756 | +| Empty Block (0.6M) | 0 | 223,239 | 3,834 | 3.83 | 3,435,212 | 3,434,236 | 3,430,332 | +| Binop Simple (0.6M, Add) | 600,000 | 223,239 | 12,537 | 12.54 | 6,213,652 | 6,213,652 | 6,209,748 | +| Binop Simple (0.6M, And) | 600,000 | 223,239 | 10,596 | 10.60 | 5,802,924 | 5,802,924 | 5,801,948 | +| Binop Simple (0.6M, Byte) | 600,000 | 223,239 | 13,345 | 13.35 | 5,764,612 | 5,764,612 | 5,762,660 | +| Binop Simple (0.6M, Div, 0) | 600,000 | 223,239 | 38,976 | 38.98 | 5,660,220 | 5,656,373.4 | 5,652,412 | +| Binop Simple (0.6M, Div, 1) | 600,000 | 223,239 | 38,028 | 38.03 | 6,478,136 | 6,478,136 | 6,478,136 | +| Binop Simple (0.6M, Eq) | 600,000 | 223,239 | 18,227 | 18.23 | 6,407,864 | 6,405,044.4 | 6,402,984 | +| Binop Simple (0.6M, Exp) | 600,000 | 223,239 | 25,752 | 25.75 | 5,673,876 | 5,673,039.4 | 5,672,900 | +| Binop Simple (0.6M, Gt) | 600,000 | 223,239 | 11,578 | 11.58 | 5,675,820 | 5,675,820 | 5,675,820 | +| Binop Simple (0.6M, Lt) | 600,000 | 223,239 | 11,693 | 11.69 | 5,560,844 | 5,560,680.7 | 5,559,868 | +| Binop Simple (0.6M, Mod) | 600,000 | 223,239 | 15,318 | 15.32 | 5,625,084 | 5,625,084 | 5,625,084 | +| Binop Simple (0.6M, Mul) | 600,000 | 223,239 | 15,807 | 15.81 | 5,376,416 | 5,376,416 | 5,372,512 | +| Binop Simple (0.6M, Or) | 600,000 | 223,239 | 10,957 | 10.96 | 5,829,264 | 5,829,264 | 5,829,264 | +| Binop Simple (0.6M, Sar) | 600,000 | 223,239 | 19,236 | 19.24 | 5,939,480 | 5,938,666.7 | 5,937,528 | +| Binop Simple (0.6M, Sdiv, 0) | 600,000 | 223,239 | 44,379 | 44.38 | 5,456,428 | 5,456,428 | 5,456,428 | +| Binop Simple (0.6M, Sdiv, 1) | 600,000 | 223,239 | 46,743 | 46.74 | 2,683,708 | 2,640,706.6 | 2,602,700 | +| Binop Simple (0.6M, Sgt) | 600,000 | 223,239 | 18,906 | 18.91 | 5,815,612 | 5,814,014.9 | 5,810,732 | +| Binop Simple (0.6M, Shl) | 600,000 | 223,239 | 17,482 | 17.48 | 5,933,624 | 5,933,624 | 5,933,624 | +| Binop Simple (0.6M, Shr) | 600,000 | 223,239 | 17,740 | 17.74 | 6,387,372 | 6,385,908 | 6,384,444 | +| Binop Simple (0.6M, Signextend) | 600,000 | 223,239 | 16,236 | 16.24 | 5,816,576 | 5,816,576 | 5,816,576 | +| Binop Simple (0.6M, Slt) | 600,000 | 223,239 | 12,298 | 12.30 | 5,301,284 | 5,301,284 | 5,295,428 | +| Binop Simple (0.6M, Smod) | 600,000 | 223,239 | 19,070 | 19.07 | 5,850,708 | 5,849,243.3 | 5,844,852 | +| Binop Simple (0.6M, Sub) | 600,000 | 223,239 | 13,151 | 13.15 | 5,700,216 | 5,700,216 | 5,698,264 | +| Binop Simple (0.6M, Xor) | 600,000 | 223,239 | 11,140 | 11.14 | 2,787,160 | 2,776,424 | 2,765,688 | +| Blobhash (0.6M, No Blobs) | 600,000 | 223,239 | 11,708 | 11.71 | 6,003,872 | 6,003,872 | 6,003,872 | +| Blobhash (0.6M, One Blob And Accessed) | 600,000 | 223,239 | 14,934 | 14.93 | 6,061,432 | 6,061,432 | 6,057,528 | +| Blobhash (0.6M, One Blob But Access Non, Existent Index) | 600,000 | 223,239 | 10,927 | 10.93 | 5,539,376 | 5,539,376 | 5,537,424 | +| Blobhash (0.6M, Six Blobs, Access Latest) | 600,000 | 223,239 | 15,000 | 15 | 5,936,552 | 5,936,064 | 5,932,648 | +| Calldataload (0.6M, Empty) | 600,000 | 223,239 | 18,571 | 18.57 | 5,944,360 | 5,943,058.7 | 5,941,432 | +| Calldataload (0.6M, One, Loop) | 600,000 | 223,239 | 20,113 | 20.11 | 6,098,508 | 6,098,438.3 | 6,097,532 | +| Calldataload (0.6M, Zero, Loop) | 600,000 | 223,239 | 20,271 | 20.27 | 5,490,588 | 5,489,193.7 | 5,484,732 | +| Calldatasize (0.6M, Calldata Length 0) | 600,000 | 223,239 | 11,126 | 11.13 | 5,589,956 | 5,589,956 | 5,589,956 | +| Calldatasize (0.6M, Calldata Length 10000) | 600,000 | 223,239 | 12,087 | 12.09 | 6,174,620 | 6,173,888 | 6,173,644 | +| Calldatasize (0.6M, Calldata Length 1000) | 600,000 | 223,239 | 11,276 | 11.28 | 6,478,132 | 6,478,132 | 6,478,132 | +| Callvalue (0.6M, From Origin False, Non Zero Value False) | 600,000 | 223,239 | 13,229 | 13.23 | 6,069,240 | 6,068,047.1 | 6,063,384 | +| Callvalue (0.6M, From Origin False, Non Zero Value True) | 600,000 | 223,239 | 12,891 | 12.89 | 6,182,424 | 6,177,872.9 | 6,174,620 | +| Callvalue (0.6M, From Origin True, Non Zero Value False) | 600,000 | 223,239 | 12,717 | 12.72 | 3,516,220 | 3,516,220 | 3,482,060 | +| Callvalue (0.6M, From Origin True, Non Zero Value True) | 600,000 | 223,239 | 12,587 | 12.59 | 5,722,656 | 5,722,656 | 5,722,656 | +| Dup (0.6M, Dup10) | 600,000 | 223,239 | 11,101 | 11.10 | 6,198,040 | 6,196,088 | 6,193,160 | +| Dup (0.6M, Dup11) | 600,000 | 223,239 | 10,401 | 10.40 | 5,419,352 | 5,418,515.4 | 5,417,400 | +| Dup (0.6M, Dup12) | 600,000 | 223,239 | 9,657 | 9.66 | 1,001,088 | 986,748.3 | 964,000 | +| Dup (0.6M, Dup13) | 600,000 | 223,239 | 11,248 | 11.25 | 5,831,216 | 5,831,216 | 5,830,240 | +| Dup (0.6M, Dup14) | 600,000 | 223,239 | 11,363 | 11.36 | 6,138,516 | 6,138,516 | 6,138,516 | +| Dup (0.6M, Dup15) | 600,000 | 223,239 | 10,081 | 10.08 | 5,320,804 | 5,320,804 | 5,319,828 | +| Dup (0.6M, Dup16) | 600,000 | 223,239 | 10,568 | 10.57 | 806,868 | 804,250.5 | 793,204 | +| Dup (0.6M, Dup1) | 600,000 | 223,239 | 10,955 | 10.96 | 5,765,588 | 5,765,154.2 | 5,764,612 | +| Dup (0.6M, Dup2) | 600,000 | 223,239 | 10,573 | 10.57 | 2,107,868 | 2,102,554.2 | 2,091,276 | +| Dup (0.6M, Dup3) | 600,000 | 223,239 | 10,505 | 10.51 | 5,590,932 | 5,590,932 | 5,589,956 | +| Dup (0.6M, Dup4) | 600,000 | 223,239 | 9,915 | 9.91 | 5,793,168 | 5,793,168 | 5,792,192 | +| Dup (0.6M, Dup5) | 600,000 | 223,239 | 10,221 | 10.22 | 5,186,120 | 5,185,252.4 | 5,183,192 | +| Dup (0.6M, Dup6) | 600,000 | 223,239 | 10,121 | 10.12 | 5,908,276 | 5,908,276 | 5,907,300 | +| Dup (0.6M, Dup7) | 600,000 | 223,239 | 11,009 | 11.01 | 6,217,552 | 6,214,763.4 | 6,212,672 | +| Dup (0.6M, Dup8) | 600,000 | 223,239 | 11,267 | 11.27 | 5,818,528 | 5,818,528 | 5,818,528 | +| Dup (0.6M, Dup9) | 600,000 | 223,239 | 11,222 | 11.22 | 5,882,904 | 5,882,904 | 5,882,904 | +| Jumpdests (0.6M) | 600,000 | 223,239 | 12,303 | 12.30 | 6,015,572 | 6,014,874.3 | 6,013,620 | +| Jumpi Fallthrough (0.6M) | 600,000 | 223,239 | 12,641 | 12.64 | 5,560,680 | 5,560,680 | 5,558,728 | +| Jumpis (0.6M) | 600,000 | 223,239 | 10,172 | 10.17 | 6,478,136 | 6,478,038 | 6,478,136 | +| Jumps (0.6M) | 600,000 | 223,239 | 11,009 | 11.01 | 6,073,144 | 6,072,446.9 | 6,072,168 | +| Keccak (0.6M) | 600,000 | 223,239 | 31,896 | 31.90 | 1,102,592 | 1,059,447.8 | 1,001,088 | +| Memory Access (0.6M, Small Mem, Uninit Offset, Off 0, Mload) | 600,000 | 223,239 | 13,378 | 13.38 | 5,663,148 | 5,663,148 | 5,660,220 | +| Memory Access (0.6M, Small Mem, Uninit Offset, Off 0, Mstore8) | 600,000 | 223,239 | 11,336 | 11.34 | 3,546,472 | 3,538,664 | 3,521,096 | +| Memory Access (0.6M, Small Mem, Uninit Offset, Off 0, Mstore) | 600,000 | 223,239 | 13,334 | 13.33 | 3,685,056 | 3,678,419.2 | 3,660,656 | +| Memory Access (0.6M, Small Mem, Uninit Offset, Off 1, Mload) | 600,000 | 223,239 | 13,928 | 13.93 | 6,102,408 | 6,101,313.5 | 6,100,460 | +| Memory Access (0.6M, Small Mem, Uninit Offset, Off 1, Mstore8) | 600,000 | 223,239 | 12,376 | 12.38 | 2,848,644 | 2,831,198 | 2,821,316 | +| Memory Access (0.6M, Small Mem, Uninit Offset, Off 1, Mstore) | 600,000 | 223,239 | 13,338 | 13.34 | 6,034,104 | 6,027,662.4 | 6,024,344 | +| Memory Access (0.6M, Small Mem, Uninit Offset, Off 31, Mload) | 600,000 | 223,239 | 13,249 | 13.25 | 5,478,876 | 5,478,062.7 | 5,473,996 | +| Memory Access (0.6M, Small Mem, Uninit Offset, Off 31, Mstore8) | 600,000 | 223,239 | 11,680 | 11.68 | 5,170,504 | 5,167,994.3 | 5,156,840 | +| Memory Access (0.6M, Small Mem, Uninit Offset, Off 31, Mstore) | 600,000 | 223,239 | 13,380 | 13.38 | 5,443,740 | 5,442,764 | 5,439,836 | +| Memory Access (0.6M, Small Mem, Init Offset, Off 0, Mload) | 600,000 | 223,239 | 13,797 | 13.80 | 5,672,904 | 5,672,904 | 5,671,928 | +| Memory Access (0.6M, Small Mem, Init Offset, Off 0, Mstore8) | 600,000 | 223,239 | 9,832 | 9.83 | 5,745,096 | 5,745,096 | 5,745,096 | +| Memory Access (0.6M, Small Mem, Init Offset, Off 0, Mstore) | 600,000 | 223,239 | 13,672 | 13.67 | 964,976 | 952,904.4 | 931,792 | +| Memory Access (0.6M, Small Mem, Init Offset, Off 1, Mload) | 600,000 | 223,239 | 13,270 | 13.27 | 5,691,436 | 5,689,700.9 | 5,687,532 | +| Memory Access (0.6M, Small Mem, Init Offset, Off 1, Mstore8) | 600,000 | 223,239 | 11,419 | 11.42 | 1,336,828 | 1,321,114.4 | 1,297,788 | +| Memory Access (0.6M, Small Mem, Init Offset, Off 1, Mstore) | 600,000 | 223,239 | 13,944 | 13.94 | 6,133,640 | 6,131,036.9 | 6,129,736 | +| Memory Access (0.6M, Small Mem, Init Offset, Off 31, Mload) | 600,000 | 223,239 | 13,697 | 13.70 | 5,352,028 | 5,352,028 | 5,351,052 | +| Memory Access (0.6M, Small Mem, Init Offset, Off 31, Mstore8) | 600,000 | 223,239 | 11,323 | 11.32 | 6,013,620 | 6,013,620 | 6,012,644 | +| Memory Access (0.6M, Small Mem, Init Offset, Off 31, Mstore) | 600,000 | 223,239 | 13,492 | 13.49 | 5,556,940 | 5,556,940 | 5,556,940 | +| Memory Access (0.6M, Big Mem, Uninit Offset, Off 0, Mload) | 600,000 | 223,239 | 13,481 | 13.48 | 5,328,612 | 5,325,033.3 | 5,320,804 | +| Memory Access (0.6M, Big Mem, Uninit Offset, Off 0, Mstore8) | 600,000 | 223,239 | 10,351 | 10.35 | 5,839,020 | 5,839,020 | 5,839,020 | +| Memory Access (0.6M, Big Mem, Uninit Offset, Off 0, Mstore) | 600,000 | 223,239 | 12,995 | 12.99 | 5,808,560 | 5,808,560 | 5,808,560 | +| Memory Access (0.6M, Big Mem, Uninit Offset, Off 1, Mload) | 600,000 | 223,239 | 13,895 | 13.89 | 5,242,724 | 5,242,724 | 5,241,748 | +| Memory Access (0.6M, Big Mem, Uninit Offset, Off 1, Mstore8) | 600,000 | 223,239 | 11,460 | 11.46 | 2,804,728 | 2,799,429.7 | 2,787,160 | +| Memory Access (0.6M, Big Mem, Uninit Offset, Off 1, Mstore) | 600,000 | 223,239 | 13,795 | 13.79 | 5,892,660 | 5,892,660 | 5,891,684 | +| Memory Access (0.6M, Big Mem, Uninit Offset, Off 31, Mload) | 600,000 | 223,239 | 13,633 | 13.63 | 738,548 | 734,644 | 721,956 | +| Memory Access (0.6M, Big Mem, Uninit Offset, Off 31, Mstore8) | 600,000 | 223,239 | 11,784 | 11.78 | 6,398,104 | 6,398,104 | 6,398,104 | +| Memory Access (0.6M, Big Mem, Uninit Offset, Off 31, Mstore) | 600,000 | 223,239 | 13,345 | 13.35 | 4,157,440 | 4,142,474.7 | 4,134,016 | +| Memory Access (0.6M, Big Mem, Init Offset, Off 0, Mload) | 600,000 | 223,239 | 14,125 | 14.12 | 4,162,320 | 4,160,734 | 4,157,440 | +| Memory Access (0.6M, Big Mem, Init Offset, Off 0, Mstore8) | 600,000 | 223,239 | 10,369 | 10.37 | 5,729,488 | 5,727,902 | 5,723,632 | +| Memory Access (0.6M, Big Mem, Init Offset, Off 0, Mstore) | 600,000 | 223,239 | 12,999 | 13.00 | 5,930,700 | 5,930,700 | 5,929,724 | +| Memory Access (0.6M, Big Mem, Init Offset, Off 1, Mload) | 600,000 | 223,239 | 13,564 | 13.56 | 6,407,864 | 6,407,864 | 6,407,864 | +| Memory Access (0.6M, Big Mem, Init Offset, Off 1, Mstore8) | 600,000 | 223,239 | 10,029 | 10.03 | 5,914,108 | 5,914,108 | 5,914,108 | +| Memory Access (0.6M, Big Mem, Init Offset, Off 1, Mstore) | 600,000 | 223,239 | 13,726 | 13.73 | 5,010,448 | 5,009,960 | 5,002,640 | +| Memory Access (0.6M, Big Mem, Init Offset, Off 31, Mload) | 600,000 | 223,239 | 13,962 | 13.96 | 5,787,056 | 5,787,056 | 5,786,080 | +| Memory Access (0.6M, Big Mem, Init Offset, Off 31, Mstore8) | 600,000 | 223,239 | 11,426 | 11.43 | 5,703,144 | 5,702,493.3 | 5,700,216 | +| Memory Access (0.6M, Big Mem, Init Offset, Off 31, Mstore) | 600,000 | 223,239 | 14,207 | 14.21 | 4,130,112 | 4,130,112 | 4,127,184 | +| Mod (0.6M, Op Mod, Mod Bits 127) | 600,000 | 223,239 | 37,087 | 37.09 | 6,046,792 | 6,045,165.3 | 6,042,888 | +| Mod (0.6M, Op Mod, Mod Bits 191) | 600,000 | 223,239 | 48,330 | 48.33 | 5,761,684 | 5,761,471.8 | 5,759,732 | +| Mod (0.6M, Op Mod, Mod Bits 255) | 600,000 | 223,239 | 36,210 | 36.21 | 6,084,852 | 6,084,852 | 6,084,852 | +| Mod (0.6M, Op Mod, Mod Bits 63) | 600,000 | 223,239 | 27,143 | 27.14 | 1,431,500 | 1,395,133.4 | 1,339,756 | +| Mod (0.6M, Op Smod, Mod Bits 127) | 600,000 | 223,239 | 38,278 | 38.28 | 5,839,020 | 5,839,020 | 5,839,020 | +| Mod (0.6M, Op Smod, Mod Bits 191) | 600,000 | 223,239 | 48,168 | 48.17 | 793,204 | 772,718.7 | 739,524 | +| Mod (0.6M, Op Smod, Mod Bits 255) | 600,000 | 223,239 | 37,850 | 37.85 | 6,042,888 | 6,037,715.2 | 6,034,104 | +| Mod (0.6M, Op Smod, Mod Bits 63) | 600,000 | 223,239 | 30,268 | 30.27 | 6,158,032 | 6,146,053.8 | 6,142,416 | +| Modarith (0.6M, Op Addmod, Mod Bits 127) | 600,000 | 223,239 | 30,039 | 30.04 | 5,791,936 | 5,791,936 | 5,791,936 | +| Modarith (0.6M, Op Addmod, Mod Bits 191) | 600,000 | 223,239 | 35,183 | 35.18 | 6,010,696 | 6,008,646.4 | 6,007,768 | +| Modarith (0.6M, Op Addmod, Mod Bits 255) | 600,000 | 223,239 | 31,631 | 31.63 | 3,480,108 | 3,459,700.7 | 3,434,236 | +| Modarith (0.6M, Op Addmod, Mod Bits 63) | 600,000 | 223,239 | 24,363 | 24.36 | 2,508,028 | 2,484,238 | 2,466,060 | +| Modarith (0.6M, Op Mulmod, Mod Bits 127) | 600,000 | 223,239 | 50,704 | 50.70 | 3,337,616 | 3,306,286.4 | 3,267,344 | +| Modarith (0.6M, Op Mulmod, Mod Bits 191) | 600,000 | 223,239 | 67,587 | 67.59 | 5,877,048 | 5,877,048 | 5,877,048 | +| Modarith (0.6M, Op Mulmod, Mod Bits 255) | 600,000 | 223,239 | 66,316 | 66.32 | 2,456,300 | 2,408,272.7 | 2,350,892 | +| Modarith (0.6M, Op Mulmod, Mod Bits 63) | 600,000 | 223,239 | 40,386 | 40.39 | 5,759,736 | 5,759,736 | 5,758,760 | +| Modexp (0.6M, Mod 1045 Gas Base Heavy) | 600,000 | 223,239 | 623,288 | 623.29 | 4,501,964 | 4,380,971.3 | 4,165,244 | +| Modexp (0.6M, Mod 1360 Gas Balanced) | 600,000 | 223,239 | 160,068 | 160.07 | 5,872,168 | 5,871,707.1 | 5,866,312 | +| Modexp (0.6M, Mod 400 Gas Exp Heavy) | 600,000 | 223,239 | 198,915 | 198.91 | 5,089,504 | 5,086,966.4 | 5,085,600 | +| Modexp (0.6M, Mod 408 Gas Balanced) | 600,000 | 223,239 | 141,138 | 141.14 | 5,787,060 | 5,787,060 | 5,787,060 | +| Modexp (0.6M, Mod 408 Gas Base Heavy) | 600,000 | 223,239 | 556,508 | 556.51 | 5,456,428 | 5,456,248.7 | 5,453,500 | +| Modexp (0.6M, Mod 600 As Balanced) | 600,000 | 223,239 | 147,547 | 147.55 | 2,056,140 | 1,973,731.7 | 1,831,660 | +| Modexp (0.6M, Mod 600 Gas Exp Heavy) | 600,000 | 223,239 | 215,085 | 215.09 | 3,970,048 | 3,833,077.9 | 3,687,984 | +| Modexp (0.6M, Mod 616 Gas Base Heavy) | 600,000 | N/A | N/A | N/A | N/A | N/A | N/A | +| Modexp (0.6M, Mod 677 Gas Base Heavy) | 600,000 | 223,239 | 151,301 | 151.30 | 5,557,916 | 5,557,672 | 5,556,940 | +| Modexp (0.6M, Mod 765 Gas Exp Heavy) | 600,000 | 223,239 | 172,230 | 172.23 | 720,980 | 674,605.4 | 589,220 | +| Modexp (0.6M, Mod 767 Gas Balanced) | 600,000 | 223,239 | 139,845 | 139.84 | 1,712,588 | 1,633,006.5 | 1,488,108 | +| Modexp (0.6M, Mod 800 Gas Base Heavy) | 600,000 | 223,239 | 616,679 | 616.68 | 5,811,488 | 5,792,485.1 | 5,810,512 | +| Modexp (0.6M, Mod 800 Gas Exp Heavy) | 600,000 | 223,239 | 219,278 | 219.28 | 5,803,900 | 5,803,900 | 5,802,924 | +| Modexp (0.6M, Mod 852 Gas Exp Heavy) | 600,000 | 223,239 | 224,940 | 224.94 | 5,000,688 | 4,990,708.4 | 4,958,720 | +| Modexp (0.6M, Mod 867 Gas Base Heavy) | 600,000 | 223,239 | 619,471 | 619.47 | 6,362,000 | 6,312,627.9 | 6,225,360 | +| Modexp (0.6M, Mod 996 Gas Balanced) | 600,000 | 223,239 | 139,578 | 139.58 | 5,317,876 | 5,316,020 | 5,314,948 | +| Modexp (0.6M, Mod Even 1024B Exp 1024) | 600,000 | 223,239 | 4,761 | 4.76 | 4,642,496 | 4,641,845.3 | 4,637,616 | +| Modexp (0.6M, Mod Even 128B Exp 1024) | 600,000 | 223,239 | 125,737 | 125.74 | 5,844,852 | 5,844,852 | 5,844,852 | +| Modexp (0.6M, Mod Even 16B Exp 320) | 600,000 | 223,239 | 207,182 | 207.18 | 5,800,972 | 5,800,889.3 | 5,793,164 | +| Modexp (0.6M, Mod Even 24B Exp 168) | 600,000 | 223,239 | 172,484 | 172.48 | 5,905,348 | 5,898,382.0 | 5,892,660 | +| Modexp (0.6M, Mod Even 256B Exp 1024) | 600,000 | 223,239 | 77,936 | 77.94 | 6,023,376 | 6,020,101.7 | 6,014,592 | +| Modexp (0.6M, Mod Even 32B Exp 256) | 600,000 | 223,239 | 164,892 | 164.89 | 5,371,536 | 5,371,536 | 5,371,536 | +| Modexp (0.6M, Mod Even 32B Exp 40) | 600,000 | 223,239 | 138,928 | 138.93 | 5,152,936 | 5,148,417.5 | 5,142,200 | +| Modexp (0.6M, Mod Even 32B Exp 96) | 600,000 | 223,239 | 157,276 | 157.28 | 3,183,408 | 3,062,144.3 | 2,927,696 | +| Modexp (0.6M, Mod Even 512B Exp 1024) | 600,000 | 223,239 | 4,403 | 4.40 | 3,621,616 | 3,620,640 | 3,615,760 | +| Modexp (0.6M, Mod Even 64B Exp 512) | 600,000 | 223,239 | 140,781 | 140.78 | 5,834,144 | 5,832,249.4 | 5,831,216 | +| Modexp (0.6M, Mod Even 8B Exp 896) | 600,000 | 223,239 | 346,091 | 346.09 | 5,571,416 | 5,570,946.5 | 5,570,440 | +| Modexp (0.6M, Mod Exp 208 Gas Balanced) | 600,000 | 223,239 | 124,258 | 124.26 | 5,804,876 | 5,804,876 | 5,804,876 | +| Modexp (0.6M, Mod Exp 215 Gas Exp Heavy) | 600,000 | 223,239 | 312,280 | 312.28 | 6,473,256 | 6,473,050.5 | 6,471,304 | +| Modexp (0.6M, Mod Exp 298 Gas Exp Heavy) | 600,000 | 223,239 | 338,625 | 338.62 | 5,644,604 | 5,641,973.0 | 5,639,724 | +| Modexp (0.6M, Mod Min As Balanced) | 600,000 | 223,239 | 134,931 | 134.93 | 5,515,960 | 5,508,113.0 | 5,496,440 | +| Modexp (0.6M, Mod Min As Base Heavy) | 600,000 | 223,239 | 450,153 | 450.15 | 5,720,704 | 5,717,294.8 | 5,710,944 | +| Modexp (0.6M, Mod Min As Exp Heavy) | 600,000 | N/A | N/A | N/A | N/A | N/A | N/A | +| Modexp (0.6M, Mod Odd 1024B Exp 1024) | 600,000 | 223,239 | 4,911 | 4.91 | 6,139,492 | 6,139,492 | 6,138,516 | +| Modexp (0.6M, Mod Odd 128B Exp 1024) | 600,000 | 223,239 | 120,693 | 120.69 | 5,888,760 | 5,888,450.5 | 5,886,808 | +| Modexp (0.6M, Mod Odd 256B Exp 1024) | 600,000 | 223,239 | 78,385 | 78.39 | 5,809,756 | 5,809,463.2 | 5,805,852 | +| Modexp (0.6M, Mod Odd 32B Exp 256) | 600,000 | 223,239 | 159,794 | 159.79 | 5,562,632 | 5,562,102.2 | 5,559,704 | +| Modexp (0.6M, Mod Odd 32B Exp 96) | 600,000 | 223,239 | 146,772 | 146.77 | 5,754,856 | 5,752,149.8 | 5,746,072 | +| Modexp (0.6M, Mod Odd 32B Exp Cover Windows) | 600,000 | 223,239 | 119,986 | 119.99 | 5,554,016 | 5,547,301.1 | 5,539,376 | +| Modexp (0.6M, Mod Odd 512B Exp 1024) | 600,000 | 223,239 | 4,588 | 4.59 | 5,810,732 | 5,810,732 | 5,810,732 | +| Modexp (0.6M, Mod Odd 64B Exp 512) | 600,000 | 223,239 | 141,739 | 141.74 | 5,811,488 | 5,810,056.5 | 5,809,536 | +| Modexp (0.6M, Mod Pawel 2) | 600,000 | 223,239 | 209,358 | 209.36 | 5,841,928 | 5,841,928 | 5,841,928 | +| Modexp (0.6M, Mod Pawel 3) | 600,000 | 223,239 | 170,239 | 170.24 | 5,043,632 | 5,036,224.4 | 5,031,920 | +| Modexp (0.6M, Mod Pawel 4) | 600,000 | 223,239 | 146,722 | 146.72 | 5,891,684 | 5,889,157.9 | 5,888,756 | +| Modexp (0.6M, Mod Vul Common 1152N1) | 600,000 | 223,239 | 90,505 | 90.50 | 5,560,840 | 5,560,840 | 5,560,840 | +| Modexp (0.6M, Mod Vul Common 1349N1) | 600,000 | 223,239 | 128,445 | 128.44 | 5,981,428 | 5,965,730.7 | 5,949,220 | +| Modexp (0.6M, Mod Vul Common 1360N1) | 600,000 | 223,239 | 141,044 | 141.04 | 5,369,588 | 5,366,130.2 | 5,361,780 | +| Modexp (0.6M, Mod Vul Common 1360N2) | 600,000 | 223,239 | 130,780 | 130.78 | 5,758,760 | 5,755,780.6 | 5,754,856 | +| Modexp (0.6M, Mod Vul Common 200N1) | 600,000 | 223,239 | 72,278 | 72.28 | 5,411,548 | 5,411,548 | 5,410,572 | +| Modexp (0.6M, Mod Vul Common 200N2) | 600,000 | 223,239 | 92,224 | 92.22 | 5,839,020 | 5,839,020 | 5,838,044 | +| Modexp (0.6M, Mod Vul Common 200N3) | 600,000 | 223,239 | 92,859 | 92.86 | 5,408,620 | 5,407,053.3 | 5,405,692 | +| Modexp (0.6M, Mod Vul Example 1) | 600,000 | 223,239 | 164,347 | 164.35 | 5,808,524 | 5,807,570.2 | 5,807,548 | +| Modexp (0.6M, Mod Vul Example 2) | 600,000 | 223,239 | 152,046 | 152.05 | 5,876,072 | 5,873,376.4 | 5,872,168 | +| Modexp (0.6M, Mod Vul Guido 1 Even) | 600,000 | 223,239 | 112,099 | 112.10 | 6,470,328 | 6,470,328 | 6,469,352 | +| Modexp (0.6M, Mod Vul Guido 2 Even) | 600,000 | 223,239 | 187,672 | 187.67 | 5,619,228 | 5,614,728.9 | 5,607,516 | +| Modexp (0.6M, Mod Vul Guido 3 Even) | 600,000 | N/A | N/A | N/A | N/A | N/A | N/A | +| Modexp (0.6M, Mod Vul Marius 1 Even) | 600,000 | 223,239 | 172,660 | 172.66 | 5,842,920 | 5,840,756.5 | 5,839,992 | +| Modexp (0.6M, Mod Vul Nagydani 1 Pow 0X10001) | 600,000 | 223,239 | 116,321 | 116.32 | 6,128,760 | 6,119,759.1 | 6,102,408 | +| Modexp (0.6M, Mod Vul Nagydani 1 Qube) | 600,000 | 223,239 | 88,580 | 88.58 | 6,469,352 | 6,469,352 | 6,469,352 | +| Modexp (0.6M, Mod Vul Nagydani 1 Square) | 600,000 | 223,239 | 82,042 | 82.04 | 5,910,220 | 5,909,677.8 | 5,908,268 | +| Modexp (0.6M, Mod Vul Nagydani 2 Pow 0X10001) | 600,000 | 223,239 | 119,861 | 119.86 | 5,913,148 | 5,913,148 | 5,912,172 | +| Modexp (0.6M, Mod Vul Nagydani 2 Qube) | 600,000 | 223,239 | 257,951 | 257.95 | 566,776 | 541,789.0 | 179,304 | +| Modexp (0.6M, Mod Vul Nagydani 2 Square) | 600,000 | 223,239 | 236,159 | 236.16 | 5,418,380 | 5,414,108.2 | 5,411,548 | +| Modexp (0.6M, Mod Vul Nagydani 3 Pow 0X10001) | 600,000 | 223,239 | 112,443 | 112.44 | 5,666,072 | 5,665,258.7 | 5,662,168 | +| Modexp (0.6M, Mod Vul Nagydani 3 Qube) | 600,000 | 223,239 | 612,520 | 612.52 | 5,819,256 | 5,803,304.8 | 5,818,280 | +| Modexp (0.6M, Mod Vul Nagydani 3 Square) | 600,000 | 223,239 | 575,462 | 575.46 | 6,470,328 | 6,453,036.9 | 6,419,576 | +| Modexp (0.6M, Mod Vul Nagydani 4 Pow 0X10001) | 600,000 | 223,239 | 104,787 | 104.79 | 5,578,408 | 5,576,120 | 5,574,504 | +| Modexp (0.6M, Mod Vul Nagydani 4 Qube) | 600,000 | 223,239 | 686,656 | 686.66 | 5,819,260 | 5,817,294.1 | 5,814,380 | +| Modexp (0.6M, Mod Vul Nagydani 4 Square) | 600,000 | 223,239 | 633,751 | 633.75 | 5,822,432 | 5,822,432 | 5,821,456 | +| Modexp (0.6M, Mod Vul Nagydani 5 Pow 0X10001) | 600,000 | 223,239 | 101,249 | 101.25 | 4,114,496 | 4,063,612.1 | 4,017,872 | +| Modexp (0.6M, Mod Vul Nagydani 5 Qube) | 600,000 | 223,239 | 691,174 | 691.17 | 5,787,060 | 5,784,877.8 | 5,776,324 | +| Modexp (0.6M, Mod Vul Nagydani 5 Square) | 600,000 | 223,239 | 636,753 | 636.75 | 4,925,536 | 4,842,282.8 | 4,642,496 | +| Modexp (0.6M, Mod Vul Pawel 1 Exp Heavy) | 600,000 | 223,239 | 332,994 | 332.99 | 5,792,192 | 5,792,192 | 5,791,216 | +| Modexp (0.6M, Mod Vul Pawel 2 Exp Heavy) | 600,000 | 223,239 | 192,183 | 192.18 | 5,801,728 | 5,801,105.8 | 5,800,752 | +| Modexp (0.6M, Mod Vul Pawel 3 Exp Heavy) | 600,000 | 223,239 | 156,528 | 156.53 | 6,002,896 | 6,000,504.8 | 5,990,208 | +| Modexp (0.6M, Mod Vul Pawel 4 Exp Heavy) | 600,000 | 223,239 | 140,892 | 140.89 | 5,559,868 | 5,559,603.7 | 5,557,916 | +| Msize (0.6M, Mem Size 0) | 600,000 | 223,239 | 13,067 | 13.07 | 5,836,096 | 5,836,096 | 5,834,144 | +| Msize (0.6M, Mem Size 1000000) | 600,000 | 223,239 | 14,014 | 14.01 | 5,452,524 | 5,452,524 | 5,451,548 | +| Msize (0.6M, Mem Size 100000) | 600,000 | 223,239 | 12,208 | 12.21 | 5,636,796 | 5,635,928.4 | 5,632,892 | +| Msize (0.6M, Mem Size 1000) | 600,000 | 223,239 | 14,279 | 14.28 | 5,888,756 | 5,888,756 | 5,887,780 | +| Msize (0.6M, Mem Size 1) | 600,000 | 223,239 | 14,730 | 14.73 | 5,865,336 | 5,865,336 | 5,859,480 | +| Precompile Fixed Cost (0.6M, Blake2F) | 600,000 | 223,239 | 132,442 | 132.44 | 5,676,804 | 5,676,782.8 | 5,672,900 | +| Precompile Fixed Cost (0.6M, Bls12 Fp To G1) | 600,000 | 223,239 | 22,349 | 22.35 | 5,842,900 | 5,842,900 | 5,842,900 | +| Precompile Fixed Cost (0.6M, Bls12 Fp To G2) | 600,000 | 223,239 | 16,846 | 16.85 | 5,623,132 | 5,623,132 | 5,623,132 | +| Precompile Fixed Cost (0.6M, Bls12 G1Add) | 600,000 | 223,239 | 17,628 | 17.63 | 6,417,624 | 6,416,973.3 | 6,409,816 | +| Precompile Fixed Cost (0.6M, Bls12 G1Msm) | 600,000 | 223,239 | 4,878 | 4.88 | 1,827,756 | 1,826,292 | 1,817,996 | +| Precompile Fixed Cost (0.6M, Bls12 G2Add) | 600,000 | 223,239 | 18,788 | 18.79 | 6,378,588 | 6,378,588 | 6,366,876 | +| Precompile Fixed Cost (0.6M, Bls12 G2Msm) | 600,000 | 223,239 | 5,530 | 5.53 | 2,693,464 | 2,690,864 | 2,684,684 | +| Precompile Fixed Cost (0.6M, Bls12 Pairing Check) | 600,000 | 223,239 | 28,324 | 28.32 | 1,792,620 | 1,772,172.8 | 1,750,652 | +| Precompile Fixed Cost (0.6M, Bn128 Add) | 600,000 | 223,239 | 20,521 | 20.52 | 4,944,080 | 4,943,673.3 | 4,936,272 | +| Precompile Fixed Cost (0.6M, Bn128 Add 1 2) | 600,000 | 223,239 | 19,822 | 19.82 | 5,313,972 | 5,311,336.8 | 5,309,092 | +| Precompile Fixed Cost (0.6M, Bn128 Add Infinities) | 600,000 | 223,239 | 13,976 | 13.98 | 5,839,016 | 5,839,016 | 5,838,040 | +| Precompile Fixed Cost (0.6M, Bn128 Mul) | 600,000 | 223,239 | 52,579 | 52.58 | 5,448,620 | 5,444,818.7 | 5,443,740 | +| Precompile Fixed Cost (0.6M, Bn128 Mul 1 2 2 Scalar) | 600,000 | 223,239 | 6,282 | 6.28 | 3,430,332 | 3,430,332 | 3,422,524 | +| Precompile Fixed Cost (0.6M, Bn128 Mul 1 2 32 Byte Scalar) | 600,000 | 223,239 | 51,689 | 51.69 | 4,633,712 | 4,602,817.8 | 4,577,104 | +| Precompile Fixed Cost (0.6M, Bn128 Mul 32 Byte Coord And 2 Scalar) | 600,000 | 223,239 | 7,714 | 7.71 | 5,769,492 | 5,769,492 | 5,769,492 | +| Precompile Fixed Cost (0.6M, Bn128 Mul 32 Byte Coord And Scalar) | 600,000 | 223,239 | 51,058 | 51.06 | 5,811,488 | 5,811,488 | 5,811,488 | +| Precompile Fixed Cost (0.6M, Bn128 Mul Infinities 2 Scalar) | 600,000 | 223,239 | 5,670 | 5.67 | 5,991,188 | 5,990,456 | 5,990,212 | +| Precompile Fixed Cost (0.6M, Bn128 Mul Infinities 32 Byte Scalar) | 600,000 | 223,239 | 35,048 | 35.05 | 3,243,920 | 3,217,568 | 3,184,384 | +| Precompile Fixed Cost (0.6M, Bn128 One Pairing) | 600,000 | 223,239 | 49,111 | 49.11 | 5,908,272 | 5,907,975.0 | 5,907,296 | +| Precompile Fixed Cost (0.6M, Bn128 Two Pairings) | 600,000 | 223,239 | 51,055 | 51.05 | 3,420,572 | 3,381,610.1 | 3,337,612 | +| Precompile Fixed Cost (0.6M, Bn128 Two Pairings Empty) | 600,000 | 223,239 | 4,057 | 4.06 | 6,469,352 | 6,469,352 | 6,469,352 | +| Precompile Fixed Cost (0.6M, Ecrecover) | 600,000 | 223,239 | 50,784 | 50.78 | 5,793,164 | 5,793,164 | 5,793,164 | +| Precompile Fixed Cost (0.6M, Point Evaluation) | 600,000 | 223,239 | 53,414 | 53.41 | 5,811,708 | 5,811,708 | 5,809,756 | +| Precompile Only Data Input (0.6M, Identity) | 600,000 | 223,239 | 11,334 | 11.33 | 4,127,184 | 4,124,147.6 | 4,115,472 | +| Precompile Only Data Input (0.6M, Ripemd, 160) | 600,000 | 223,239 | 10,554 | 10.55 | 4,934,320 | 4,931,175.1 | 4,925,536 | +| Precompile Only Data Input (0.6M, Sha2, 256) | 600,000 | 223,239 | 7,692 | 7.69 | 3,978,832 | 3,977,856 | 3,971,024 | +| Push (0.6M, Push0) | 600,000 | 223,239 | 13,375 | 13.38 | 5,794,144 | 5,794,144 | 5,793,168 | +| Push (0.6M, Push10) | 600,000 | 223,239 | 12,841 | 12.84 | 5,804,876 | 5,804,876 | 5,804,876 | +| Push (0.6M, Push11) | 600,000 | 223,239 | 13,122 | 13.12 | 3,565,992 | 3,561,112 | 3,546,472 | +| Push (0.6M, Push12) | 600,000 | 223,239 | 12,178 | 12.18 | 5,359,836 | 5,359,470 | 5,355,932 | +| Push (0.6M, Push13) | 600,000 | 223,239 | 12,624 | 12.62 | 6,160,960 | 6,160,960 | 6,160,960 | +| Push (0.6M, Push14) | 600,000 | 223,239 | 13,721 | 13.72 | 831,264 | 821,035.5 | 805,888 | +| Push (0.6M, Push15) | 600,000 | 223,239 | 14,538 | 14.54 | 6,209,748 | 6,208,934.7 | 6,208,772 | +| Push (0.6M, Push16) | 600,000 | 223,239 | 13,809 | 13.81 | 5,931,676 | 5,931,676 | 5,931,676 | +| Push (0.6M, Push17) | 600,000 | 223,239 | 12,331 | 12.33 | 5,811,708 | 5,811,708 | 5,810,732 | +| Push (0.6M, Push18) | 600,000 | 223,239 | 14,466 | 14.47 | 5,209,544 | 5,209,153.2 | 5,205,640 | +| Push (0.6M, Push19) | 600,000 | 223,239 | 14,416 | 14.42 | 5,533,524 | 5,533,524 | 5,532,548 | +| Push (0.6M, Push1) | 600,000 | 223,239 | 10,739 | 10.74 | 5,362,760 | 5,362,760 | 5,360,808 | +| Push (0.6M, Push20) | 600,000 | 223,239 | 14,955 | 14.96 | 3,586,484 | 3,578,397.1 | 3,565,988 | +| Push (0.6M, Push21) | 600,000 | 223,239 | 14,040 | 14.04 | 5,439,840 | 5,439,840 | 5,439,840 | +| Push (0.6M, Push22) | 600,000 | 223,239 | 15,530 | 15.53 | 6,071,192 | 6,071,192 | 6,071,192 | +| Push (0.6M, Push23) | 600,000 | 223,239 | 14,658 | 14.66 | 5,804,876 | 5,804,876 | 5,804,876 | +| Push (0.6M, Push24) | 600,000 | 223,239 | 14,777 | 14.78 | 5,640,700 | 5,639,724 | 5,637,772 | +| Push (0.6M, Push25) | 600,000 | 223,239 | 15,475 | 15.47 | 5,570,440 | 5,569,952 | 5,562,632 | +| Push (0.6M, Push26) | 600,000 | 223,239 | 15,804 | 15.80 | 5,401,788 | 5,399,138.9 | 5,393,980 | +| Push (0.6M, Push27) | 600,000 | 223,239 | 16,923 | 16.92 | 5,913,148 | 5,912,311.4 | 5,911,196 | +| Push (0.6M, Push28) | 600,000 | 223,239 | 17,094 | 17.09 | 6,186,328 | 6,184,376 | 6,182,424 | +| Push (0.6M, Push29) | 600,000 | 223,239 | 17,426 | 17.43 | 5,860,456 | 5,860,065.6 | 5,859,480 | +| Push (0.6M, Push2) | 600,000 | 223,239 | 11,458 | 11.46 | 5,133,420 | 5,133,420 | 5,124,636 | +| Push (0.6M, Push30) | 600,000 | 223,239 | 17,237 | 17.24 | 5,839,016 | 5,839,016 | 5,838,040 | +| Push (0.6M, Push31) | 600,000 | 223,239 | 17,481 | 17.48 | 5,825,360 | 5,824,492.4 | 5,823,408 | +| Push (0.6M, Push32) | 600,000 | 223,239 | 16,967 | 16.97 | 5,597,760 | 5,597,760 | 5,597,760 | +| Push (0.6M, Push3) | 600,000 | 223,239 | 10,526 | 10.53 | 5,461,308 | 5,460,494.7 | 5,460,332 | +| Push (0.6M, Push4) | 600,000 | 223,239 | 10,769 | 10.77 | 5,351,052 | 5,351,052 | 5,351,052 | +| Push (0.6M, Push5) | 600,000 | 223,239 | 12,016 | 12.02 | 5,948,244 | 5,945,682 | 5,943,364 | +| Push (0.6M, Push6) | 600,000 | 223,239 | 11,374 | 11.37 | 5,451,548 | 5,451,548 | 5,451,548 | +| Push (0.6M, Push7) | 600,000 | 223,239 | 12,233 | 12.23 | 5,572,392 | 5,572,392 | 5,571,416 | +| Push (0.6M, Push8) | 600,000 | 223,239 | 12,251 | 12.25 | 5,182,216 | 5,181,240 | 5,177,336 | +| Push (0.6M, Push9) | 600,000 | 223,239 | 12,388 | 12.39 | 1,183,596 | 1,166,028 | 1,142,604 | +| Return Revert (0.6M, 1Kib Of Non, Zero Data, Return) | 600,000 | 223,239 | 13,604 | 13.60 | 5,776,324 | 5,776,324 | 5,775,348 | +| Return Revert (0.6M, 1Kib Of Non, Zero Data, Revert) | 600,000 | 223,239 | 14,520 | 14.52 | 5,767,540 | 5,767,540 | 5,765,588 | +| Return Revert (0.6M, 1Kib Of Zero Data, Return) | 600,000 | 223,239 | 15,913 | 15.91 | 915,200 | 892,301.5 | 862,496 | +| Return Revert (0.6M, 1Kib Of Zero Data, Revert) | 600,000 | 223,239 | 16,727 | 16.73 | 5,596,780 | 5,596,780 | 5,596,780 | +| Return Revert (0.6M, 1Mib Of Non, Zero Data, Return) | 600,000 | 223,239 | 4,689 | 4.69 | 5,789,008 | 5,789,008 | 5,789,008 | +| Return Revert (0.6M, 1Mib Of Non, Zero Data, Revert) | 600,000 | 223,239 | 5,723 | 5.72 | 1,141,628 | 1,136,992 | 1,124,060 | +| Return Revert (0.6M, 1Mib Of Zero Data, Return) | 600,000 | 223,239 | 4,364 | 4.36 | 1,800,428 | 1,797,825.3 | 1,794,572 | +| Return Revert (0.6M, 1Mib Of Zero Data, Revert) | 600,000 | 223,239 | 4,062 | 4.06 | 5,892,660 | 5,892,660 | 5,891,684 | +| Return Revert (0.6M, Empty, Return) | 600,000 | 223,239 | 18,947 | 18.95 | 6,022,392 | 6,022,392 | 6,022,392 | +| Return Revert (0.6M, Empty, Revert) | 600,000 | 223,239 | 22,121 | 22.12 | 5,818,528 | 5,818,528 | 5,818,528 | +| Returndatasize Nonzero (0.6M, Returned Size 0, Return Data Style Returndatastyle.Identity) | 600,000 | 223,239 | 12,109 | 12.11 | 5,801,948 | 5,801,948 | 5,801,948 | +| Returndatasize Nonzero (0.6M, Returned Size 0, Return Data Style Returndatastyle.Return) | 600,000 | 223,239 | 11,892 | 11.89 | 5,101,212 | 5,098,869.6 | 5,093,404 | +| Returndatasize Nonzero (0.6M, Returned Size 0, Return Data Style Returndatastyle.Revert) | 600,000 | 223,239 | 11,572 | 11.57 | 2,559,756 | 2,540,040.8 | 2,528,524 | +| Returndatasize Nonzero (0.6M, Returned Size 1, Return Data Style Returndatastyle.Identity) | 600,000 | 223,239 | 10,564 | 10.56 | 5,839,020 | 5,839,020 | 5,837,068 | +| Returndatasize Nonzero (0.6M, Returned Size 1, Return Data Style Returndatastyle.Return) | 600,000 | 223,239 | 12,116 | 12.12 | 6,097,532 | 6,097,532 | 6,096,556 | +| Returndatasize Nonzero (0.6M, Returned Size 1, Return Data Style Returndatastyle.Revert) | 600,000 | 223,239 | 11,684 | 11.68 | 1,268,508 | 1,244,596 | 1,212,876 | +| Returndatasize Zero (0.6M) | 600,000 | 223,239 | 11,684 | 11.68 | 5,739,240 | 5,738,874 | 5,735,336 | +| Shifts (0.6M, Shift Right Sar) | 600,000 | 223,239 | 17,325 | 17.32 | 5,816,576 | 5,816,576 | 5,816,576 | +| Shifts (0.6M, Shift Right Shr) | 600,000 | 223,239 | 17,324 | 17.32 | 5,802,924 | 5,802,924 | 5,802,924 | +| Swap (0.6M, Swap10) | 600,000 | 223,239 | 16,804 | 16.80 | 2,183,020 | 2,168,449.7 | 2,150,812 | +| Swap (0.6M, Swap11) | 600,000 | 223,239 | 16,419 | 16.42 | 5,460,332 | 5,460,332 | 5,459,356 | +| Swap (0.6M, Swap12) | 600,000 | 223,239 | 16,970 | 16.97 | 6,217,552 | 6,217,476.9 | 6,217,552 | +| Swap (0.6M, Swap13) | 600,000 | 223,239 | 18,172 | 18.17 | 6,071,192 | 6,070,606.4 | 6,069,240 | +| Swap (0.6M, Swap14) | 600,000 | 223,239 | 16,383 | 16.38 | 5,651,436 | 5,651,296.6 | 5,649,484 | +| Swap (0.6M, Swap15) | 600,000 | 223,239 | 16,430 | 16.43 | 6,003,872 | 6,003,506 | 6,002,896 | +| Swap (0.6M, Swap16) | 600,000 | 223,239 | 16,476 | 16.48 | 1,729,180 | 1,723,463.4 | 1,712,588 | +| Swap (0.6M, Swap1) | 600,000 | 223,239 | 18,423 | 18.42 | 5,841,924 | 5,841,924 | 5,840,948 | +| Swap (0.6M, Swap2) | 600,000 | 223,239 | 17,513 | 17.51 | 5,204,664 | 5,203,688 | 5,193,928 | +| Swap (0.6M, Swap3) | 600,000 | 223,239 | 16,362 | 16.36 | 5,841,928 | 5,841,928 | 5,841,928 | +| Swap (0.6M, Swap4) | 600,000 | 223,239 | 15,315 | 15.31 | 5,573,528 | 5,569,502 | 5,564,744 | +| Swap (0.6M, Swap5) | 600,000 | 223,239 | 16,689 | 16.69 | 5,793,884 | 5,793,884 | 5,793,884 | +| Swap (0.6M, Swap6) | 600,000 | 223,239 | 16,577 | 16.58 | 6,005,820 | 6,005,820 | 6,003,868 | +| Swap (0.6M, Swap7) | 600,000 | 223,239 | 16,888 | 16.89 | 2,599,772 | 2,591,638.7 | 2,571,468 | +| Swap (0.6M, Swap8) | 600,000 | 223,239 | 16,640 | 16.64 | 5,271,028 | 5,270,296 | 5,265,172 | +| Swap (0.6M, Swap9) | 600,000 | 223,239 | 17,156 | 17.16 | 6,138,516 | 6,137,679.4 | 6,134,612 | +| Tload (0.6M, Val Mut False, Key Mut False) | 600,000 | 223,239 | 5,160 | 5.16 | 5,933,624 | 5,933,624 | 5,933,624 | +| Tload (0.6M, Val Mut False, Key Mut True) | 600,000 | 223,239 | 5,091 | 5.09 | 5,579,224 | 5,579,224 | 5,577,272 | +| Tload (0.6M, Val Mut True, Key Mut False) | 600,000 | 223,239 | 5,027 | 5.03 | 5,837,068 | 5,837,068 | 5,835,116 | +| Tload (0.6M, Val Mut True, Key Mut True) | 600,000 | 223,239 | 6,282 | 6.28 | 2,709,080 | 2,707,860 | 2,699,320 | +| Tstore (0.6M, Dense Val Mut False, Key Mut False) | 600,000 | 223,239 | 10,784 | 10.78 | 3,993,472 | 3,987,755.4 | 3,978,832 | +| Tstore (0.6M, Dense Val Mut False, Key Mut True) | 600,000 | 223,239 | 10,842 | 10.84 | 5,918,012 | 5,918,012 | 5,916,060 | +| Tstore (0.6M, Dense Val Mut True, Key Mut False) | 600,000 | 223,239 | 13,717 | 13.72 | 5,800,716 | 5,799,089.3 | 5,795,836 | +| Tstore (0.6M, Dense Val Mut True, Key Mut True) | 600,000 | 223,239 | 14,185 | 14.19 | 5,950,196 | 5,948,829.6 | 5,948,244 | +| Unop (0.6M, Iszero) | 600,000 | 223,239 | 17,612 | 17.61 | 5,906,324 | 5,906,324 | 5,905,348 | +| Unop (0.6M, Not) | 600,000 | 223,239 | 10,819 | 10.82 | 5,440,820 | 5,439,600 | 5,434,964 | +| Zero Param (0.6M, Address) | 600,000 | 223,239 | 20,134 | 20.13 | 5,913,148 | 5,913,148 | 5,913,148 | +| Zero Param (0.6M, Basefee) | 600,000 | 223,239 | 13,950 | 13.95 | 1,486,156 | 1,463,870.7 | 1,430,524 | +| Zero Param (0.6M, Blobbasefee) | 600,000 | 223,239 | 16,586 | 16.59 | 5,536,448 | 5,536,122.7 | 5,532,544 | +| Zero Param (0.6M, Caller) | 600,000 | 223,239 | 20,586 | 20.59 | 5,625,084 | 5,625,084 | 5,625,084 | +| Zero Param (0.6M, Chainid) | 600,000 | 223,239 | 13,941 | 13.94 | 5,804,656 | 5,804,168 | 5,800,752 | +| Zero Param (0.6M, Codesize) | 600,000 | 223,239 | 14,159 | 14.16 | 5,002,640 | 5,002,640 | 5,001,664 | +| Zero Param (0.6M, Coinbase) | 600,000 | N/A | N/A | N/A | N/A | N/A | N/A | +| Zero Param (0.6M, Gaslimit) | 600,000 | 223,239 | 14,175 | 14.18 | 3,638,208 | 3,634,304 | 3,622,592 | +| Zero Param (0.6M, Gasprice) | 600,000 | 223,239 | 15,790 | 15.79 | 4,016,896 | 4,006,404 | 3,996,400 | +| Zero Param (0.6M, Gas) | 600,000 | 223,239 | 13,776 | 13.78 | 5,677,772 | 5,677,772 | 5,676,796 | +| Zero Param (0.6M, Number) | 600,000 | 223,239 | 13,719 | 13.72 | 5,670,952 | 5,669,976 | 5,666,072 | +| Zero Param (0.6M, Origin) | 600,000 | 223,239 | 20,642 | 20.64 | 2,765,688 | 2,738,182.5 | 2,713,960 | +| Zero Param (0.6M, Prevrandao) | 600,000 | 223,239 | 24,559 | 24.56 | 5,795,836 | 5,795,836 | 5,795,836 | +| Zero Param (0.6M, Timestamp) | 600,000 | 223,239 | 14,638 | 14.64 | 5,624,108 | 5,624,108 | 5,623,132 | +| Calldatacopy (0.6M, Zero Data, Dynamic Src Dst, 0Bytes, Call) | 600,000 | 223,239 | 14,783 | 14.78 | 5,597,760 | 5,596,872.7 | 5,589,952 | +| Calldatacopy (0.6M, Zero Data, Dynamic Src Dst, 0Bytes, Transaction) | 600,000 | 223,239 | 14,554 | 14.55 | 5,803,900 | 5,803,791.6 | 5,802,924 | +| Calldatacopy (0.6M, Zero Data, Dynamic Src Dst, 100Bytes, Call) | 600,000 | 223,239 | 13,439 | 13.44 | 6,003,868 | 6,003,868 | 6,003,868 | +| Calldatacopy (0.6M, Zero Data, Dynamic Src Dst, 100Bytes, Transaction) | 600,000 | 223,239 | 12,427 | 12.43 | 5,388,128 | 5,387,273.5 | 5,383,248 | +| Calldatacopy (0.6M, Zero Data, Dynamic Src Dst, 10Kib, Call) | 600,000 | 223,239 | 11,495 | 11.49 | 6,400,056 | 6,400,056 | 6,400,056 | +| Calldatacopy (0.6M, Zero Data, Dynamic Src Dst, 10Kib, Transaction) | 600,000 | 223,239 | 7,164 | 7.16 | 5,589,956 | 5,589,119.4 | 5,584,100 | +| Calldatacopy (0.6M, Zero Data, Dynamic Src Dst, 1Mib, Call) | 600,000 | 223,239 | 4,100 | 4.10 | 5,213,444 | 5,213,444 | 5,209,540 | +| Calldatacopy (0.6M, Zero Data, Dynamic Src Dst, 1Mib, Transaction) | 600,000 | 223,239 | 4,433 | 4.43 | 2,526,572 | 2,526,572 | 2,522,668 | +| Calldatacopy (0.6M, Zero Data, Fixed Src Dst, 0Bytes, Call) | 600,000 | 223,239 | 11,383 | 11.38 | 5,794,144 | 5,793,817.3 | 5,794,144 | +| Calldatacopy (0.6M, Zero Data, Fixed Src Dst, 0Bytes, Transaction) | 600,000 | 223,239 | 11,698 | 11.70 | 6,393,224 | 6,393,224 | 6,388,344 | +| Calldatacopy (0.6M, Zero Data, Fixed Src Dst, 100Bytes, Call) | 600,000 | 223,239 | 11,597 | 11.60 | 2,080,540 | 2,076,636 | 2,065,900 | +| Calldatacopy (0.6M, Zero Data, Fixed Src Dst, 100Bytes, Transaction) | 600,000 | 223,239 | 10,770 | 10.77 | 5,296,404 | 5,296,404 | 5,290,548 | +| Calldatacopy (0.6M, Zero Data, Fixed Src Dst, 10Kib, Call) | 600,000 | 223,239 | 7,291 | 7.29 | 6,010,692 | 6,010,692 | 6,010,692 | +| Calldatacopy (0.6M, Zero Data, Fixed Src Dst, 10Kib, Transaction) | 600,000 | 223,239 | 6,940 | 6.94 | 578,488 | 577,475.7 | 566,776 | +| Calldatacopy (0.6M, Zero Data, Fixed Src Dst, 1Mib, Call) | 600,000 | 223,239 | 4,250 | 4.25 | 5,859,480 | 5,859,480 | 5,858,504 | +| Calldatacopy (0.6M, Zero Data, Fixed Src Dst, 1Mib, Transaction) | 600,000 | 223,239 | 4,253 | 4.25 | 5,422,276 | 5,422,276 | 5,418,372 | +| Calldatacopy (0.6M, Non Zero, Dynamic Src Dst, 100Bytes, Call) | 600,000 | 223,239 | 13,241 | 13.24 | 5,483,756 | 5,481,966.7 | 5,477,900 | +| Calldatacopy (0.6M, Non Zero, Dynamic Src Dst, 100Bytes, Transaction) | 600,000 | 223,239 | 13,651 | 13.65 | 6,024,352 | 6,023,918.2 | 6,023,376 | +| Calldatacopy (0.6M, Non Zero, Dynamic Src Dst, 10Kib, Call) | 600,000 | 223,239 | 9,644 | 9.64 | 5,909,248 | 5,909,248 | 5,908,272 | +| Calldatacopy (0.6M, Non Zero, Dynamic Src Dst, 10Kib, Transaction) | 600,000 | 223,239 | 10,465 | 10.46 | 5,552,872 | 5,551,115.2 | 5,547,992 | +| Calldatacopy (0.6M, Non Zero, Fixed Src Dst, 100Bytes, Call) | 600,000 | 223,239 | 10,531 | 10.53 | 4,575,152 | 4,575,152 | 4,572,224 | +| Calldatacopy (0.6M, Non Zero, Fixed Src Dst, 100Bytes, Transaction) | 600,000 | 223,239 | 10,865 | 10.87 | 5,684,604 | 5,679,138.4 | 5,677,772 | +| Calldatacopy (0.6M, Non Zero, Fixed Src Dst, 10Kib, Call) | 600,000 | 223,239 | 8,688 | 8.69 | 5,572,392 | 5,572,392 | 5,571,416 | +| Calldatacopy (0.6M, Non Zero, Fixed Src Dst, 10Kib, Transaction) | 600,000 | 223,239 | 9,796 | 9.80 | 5,854,604 | 5,854,604 | 5,853,628 | +| Codecopy (0.6M, Dynamic Src Dst, 0Bytes) | 600,000 | 223,239 | 13,744 | 13.74 | 5,932,652 | 5,932,233.7 | 5,931,676 | +| Codecopy (0.6M, Dynamic Src Dst, 0.25X Max Code) | 600,000 | 223,239 | 10,845 | 10.85 | 5,639,724 | 5,638,887.4 | 5,638,748 | +| Codecopy (0.6M, Dynamic Src Dst, 0.50X Max Code Size) | 600,000 | 223,239 | 9,177 | 9.18 | 1,122,112 | 1,117,409.5 | 1,104,544 | +| Codecopy (0.6M, Dynamic Src Dst, 0.75X Max Code Size) | 600,000 | 223,239 | 9,437 | 9.44 | 2,519,740 | 2,515,104 | 2,509,004 | +| Codecopy (0.6M, Dynamic Src Dst, Max Code) | 600,000 | 223,239 | 9,804 | 9.80 | 5,852,652 | 5,852,652 | 5,851,676 | +| Codecopy (0.6M, Fixed Src Dst, 0Bytes) | 600,000 | 223,239 | 10,792 | 10.79 | 5,466,188 | 5,466,188 | 5,461,308 | +| Codecopy (0.6M, Fixed Src Dst, 0.25X Max Code) | 600,000 | 223,239 | 9,039 | 9.04 | 5,707,044 | 5,706,556 | 5,704,116 | +| Codecopy (0.6M, Fixed Src Dst, 0.50X Max Code Size) | 600,000 | 223,239 | 6,982 | 6.98 | 5,342,272 | 5,341,491.2 | 5,337,392 | +| Codecopy (0.6M, Fixed Src Dst, 0.75X Max Code Size) | 600,000 | 223,239 | 8,041 | 8.04 | 5,852,652 | 5,852,652 | 5,851,676 | +| Codecopy (0.6M, Fixed Src Dst, Max Code) | 600,000 | 223,239 | 7,012 | 7.01 | 5,838,044 | 5,838,044 | 5,838,044 | +| Mcopy (0.6M, Dynamic Src Dst, 0Bytes) | 600,000 | 223,239 | 13,762 | 13.76 | 5,451,548 | 5,451,548 | 5,449,596 | +| Mcopy (0.6M, Dynamic Src Dst, 100Bytes) | 600,000 | 223,239 | 14,087 | 14.09 | 6,403,960 | 6,403,179.2 | 6,402,984 | +| Mcopy (0.6M, Dynamic Src Dst, 10Kib) | 600,000 | 223,239 | 12,355 | 12.36 | 3,613,808 | 3,597,494.9 | 3,586,480 | +| Mcopy (0.6M, Dynamic Src Dst, 1Mib) | 600,000 | 223,239 | 6,111 | 6.11 | 5,940,456 | 5,939,724 | 5,939,480 | +| Mcopy (0.6M, Fixed Src Dst, 0Bytes) | 600,000 | 223,239 | 11,430 | 11.43 | 862,496 | 849,515.2 | 831,264 | +| Mcopy (0.6M, Fixed Src Dst, 100Bytes) | 600,000 | 223,239 | 11,032 | 11.03 | 5,932,652 | 5,931,954.9 | 5,931,676 | +| Mcopy (0.6M, Fixed Src Dst, 10Kib) | 600,000 | 223,239 | 10,152 | 10.15 | 5,460,332 | 5,460,332 | 5,456,428 | +| Mcopy (0.6M, Fixed Src Dst, 1Mib) | 600,000 | 223,239 | 4,949 | 4.95 | 5,191,976 | 5,191,976 | 5,189,048 | +| Returndatacopy (0.6M, Fixed Dst False, 0Bytes) | 600,000 | 223,239 | 14,494 | 14.49 | 5,793,888 | 5,792,180 | 5,791,936 | +| Returndatacopy (0.6M, Fixed Dst False, 100Bytes) | 600,000 | 223,239 | 13,223 | 13.22 | 5,686,556 | 5,686,556 | 5,685,580 | +| Returndatacopy (0.6M, Fixed Dst False, 10Kib) | 600,000 | 223,239 | 11,098 | 11.10 | 5,800,752 | 5,800,752 | 5,800,752 | +| Returndatacopy (0.6M, Fixed Dst False, 1Mib) | 600,000 | 223,239 | 4,874 | 4.87 | 5,807,584 | 5,807,584 | 5,805,632 | +| Returndatacopy (0.6M, Fixed Dst True, 0Bytes) | 600,000 | 223,239 | 13,015 | 13.02 | 5,239,796 | 5,237,234 | 5,230,036 | +| Returndatacopy (0.6M, Fixed Dst True, 100Bytes) | 600,000 | 223,239 | 11,450 | 11.45 | 6,172,668 | 6,172,668 | 6,170,716 | +| Returndatacopy (0.6M, Fixed Dst True, 10Kib) | 600,000 | 223,239 | 8,887 | 8.89 | 5,496,440 | 5,495,464 | 5,492,536 | +| Returndatacopy (0.6M, Fixed Dst True, 1Mib) | 600,000 | 223,239 | 4,645 | 4.64 | 2,465,084 | 2,464,840 | 2,457,276 | +| Log Opcodes (0.6M, Dynamic, Non Zero Topic, 0 Bytes Data, Log0) | 600,000 | 223,239 | 5,361 | 5.36 | 1,816,044 | 1,807,455.2 | 1,802,380 | +| Log Opcodes (0.6M, Dynamic, Non Zero Topic, 0 Bytes Data, Log1) | 600,000 | 223,239 | 5,313 | 5.31 | 4,542,952 | 4,542,301.3 | 4,536,120 | +| Log Opcodes (0.6M, Dynamic, Non Zero Topic, 0 Bytes Data, Log2) | 600,000 | 223,239 | 4,590 | 4.59 | 5,813,404 | 5,811,842.4 | 5,809,500 | +| Log Opcodes (0.6M, Dynamic, Non Zero Topic, 0 Bytes Data, Log3) | 600,000 | 223,239 | 4,877 | 4.88 | 6,398,104 | 6,398,104 | 6,393,224 | +| Log Opcodes (0.6M, Dynamic, Non Zero Topic, 0 Bytes Data, Log4) | 600,000 | 223,239 | 4,511 | 4.51 | 5,816,588 | 5,816,588 | 5,816,588 | +| Log Opcodes (0.6M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log0) | 600,000 | 223,239 | 4,493 | 4.49 | 5,336,416 | 5,335,684 | 5,334,464 | +| Log Opcodes (0.6M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log1) | 600,000 | 223,239 | 5,334 | 5.33 | 2,927,696 | 2,912,080 | 2,899,392 | +| Log Opcodes (0.6M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log2) | 600,000 | 223,239 | 4,469 | 4.47 | 6,083,880 | 6,083,880 | 6,074,120 | +| Log Opcodes (0.6M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log3) | 600,000 | 223,239 | 4,444 | 4.44 | 5,557,752 | 5,556,776 | 5,552,872 | +| Log Opcodes (0.6M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log4) | 600,000 | 223,239 | 4,897 | 4.90 | 3,520,124 | 3,520,124 | 3,518,172 | +| Log Opcodes (0.6M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log0) | 600,000 | 223,239 | 4,324 | 4.32 | 5,624,108 | 5,623,132 | 5,620,204 | +| Log Opcodes (0.6M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log1) | 600,000 | 223,239 | 4,549 | 4.55 | 6,216,576 | 6,216,576 | 6,216,576 | +| Log Opcodes (0.6M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log2) | 600,000 | 223,239 | 4,394 | 4.39 | 5,791,936 | 5,791,936 | 5,791,936 | +| Log Opcodes (0.6M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log3) | 600,000 | 223,239 | 4,237 | 4.24 | 5,091,456 | 5,091,456 | 5,089,504 | +| Log Opcodes (0.6M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log4) | 600,000 | 223,239 | 4,148 | 4.15 | 5,736,316 | 5,735,095 | 5,729,484 | +| Log Opcodes (0.6M, Dynamic, Zero Topic, 0 Bytes Data, Log0) | 600,000 | 223,239 | 5,782 | 5.78 | 5,795,836 | 5,795,836 | 5,794,860 | +| Log Opcodes (0.6M, Dynamic, Zero Topic, 0 Bytes Data, Log1) | 600,000 | 223,239 | 4,964 | 4.96 | 6,142,416 | 6,142,416 | 6,140,464 | +| Log Opcodes (0.6M, Dynamic, Zero Topic, 0 Bytes Data, Log2) | 600,000 | 223,239 | 4,968 | 4.97 | 5,793,172 | 5,792,845.3 | 5,792,196 | +| Log Opcodes (0.6M, Dynamic, Zero Topic, 0 Bytes Data, Log3) | 600,000 | 223,239 | 4,956 | 4.96 | 2,568,540 | 2,567,759.2 | 2,561,708 | +| Log Opcodes (0.6M, Dynamic, Zero Topic, 0 Bytes Data, Log4) | 600,000 | 223,239 | 5,944 | 5.94 | 5,792,192 | 5,792,192 | 5,792,192 | +| Log Opcodes (0.6M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log0) | 600,000 | 223,239 | 4,549 | 4.55 | 5,877,048 | 5,877,048 | 5,876,072 | +| Log Opcodes (0.6M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log1) | 600,000 | 223,239 | 5,236 | 5.24 | 2,867,184 | 2,865,476 | 2,859,376 | +| Log Opcodes (0.6M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log2) | 600,000 | 223,239 | 4,064 | 4.06 | 5,915,100 | 5,915,100 | 5,913,148 | +| Log Opcodes (0.6M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log3) | 600,000 | 223,239 | 4,893 | 4.89 | 5,913,132 | 5,913,132 | 5,913,132 | +| Log Opcodes (0.6M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log4) | 600,000 | 223,239 | 4,817 | 4.82 | 5,806,572 | 5,805,108 | 5,802,668 | +| Log Opcodes (0.6M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log0) | 600,000 | 223,239 | 3,944 | 3.94 | 5,881,928 | 5,879,000 | 5,877,048 | +| Log Opcodes (0.6M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log1) | 600,000 | 223,239 | 4,536 | 4.54 | 5,584,100 | 5,584,100 | 5,580,196 | +| Log Opcodes (0.6M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log2) | 600,000 | 223,239 | 4,290 | 4.29 | 5,877,048 | 5,877,048 | 5,877,048 | +| Log Opcodes (0.6M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log3) | 600,000 | 223,239 | 3,975 | 3.98 | 5,931,676 | 5,931,676 | 5,931,676 | +| Log Opcodes (0.6M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log4) | 600,000 | 223,239 | 4,945 | 4.95 | 5,123,660 | 5,122,684 | 5,118,780 | +| Log Opcodes (0.6M, Fixed, Non Zero Topic, 0 Bytes Data, Log0) | 600,000 | 223,239 | 4,749 | 4.75 | 5,135,368 | 5,135,368 | 5,133,416 | +| Log Opcodes (0.6M, Fixed, Non Zero Topic, 0 Bytes Data, Log1) | 600,000 | 223,239 | 4,479 | 4.48 | 5,555,968 | 5,555,968 | 5,554,016 | +| Log Opcodes (0.6M, Fixed, Non Zero Topic, 0 Bytes Data, Log2) | 600,000 | 223,239 | 4,997 | 5.00 | 5,810,476 | 5,810,232 | 5,810,476 | +| Log Opcodes (0.6M, Fixed, Non Zero Topic, 0 Bytes Data, Log3) | 600,000 | 223,239 | 5,179 | 5.18 | 4,165,248 | 4,165,248 | 4,162,320 | +| Log Opcodes (0.6M, Fixed, Non Zero Topic, 0 Bytes Data, Log4) | 600,000 | 223,239 | 5,156 | 5.16 | 4,566,372 | 4,564,224 | 4,559,540 | +| Log Opcodes (0.6M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log0) | 600,000 | 223,239 | 4,560 | 4.56 | 5,439,840 | 5,439,840 | 5,439,840 | +| Log Opcodes (0.6M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log1) | 600,000 | 223,239 | 4,782 | 4.78 | 4,571,248 | 4,569,540 | 4,566,368 | +| Log Opcodes (0.6M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log2) | 600,000 | 223,239 | 4,429 | 4.43 | 2,089,324 | 2,087,176.8 | 2,082,492 | +| Log Opcodes (0.6M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log3) | 600,000 | 223,239 | 4,228 | 4.23 | 5,907,300 | 5,907,300 | 5,907,300 | +| Log Opcodes (0.6M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log4) | 600,000 | 223,239 | 4,725 | 4.72 | 6,383,468 | 6,383,468 | 6,378,588 | +| Log Opcodes (0.6M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log0) | 600,000 | 223,239 | 4,710 | 4.71 | 2,325,516 | 2,324,540 | 2,321,612 | +| Log Opcodes (0.6M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log1) | 600,000 | 223,239 | 3,986 | 3.99 | 931,792 | 927,051.4 | 914,224 | +| Log Opcodes (0.6M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log2) | 600,000 | 223,239 | 5,958 | 5.96 | 5,855,576 | 5,855,576 | 5,853,624 | +| Log Opcodes (0.6M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log3) | 600,000 | 223,239 | 4,831 | 4.83 | 1,298,764 | 1,287,888.6 | 1,269,484 | +| Log Opcodes (0.6M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log4) | 600,000 | 223,239 | 4,574 | 4.57 | 5,884,856 | 5,884,660.8 | 5,884,856 | +| Log Opcodes (0.6M, Fixed, Zero Topic, 0 Bytes Data, Log0) | 600,000 | 223,239 | 4,972 | 4.97 | 5,854,604 | 5,854,604 | 5,854,604 | +| Log Opcodes (0.6M, Fixed, Zero Topic, 0 Bytes Data, Log1) | 600,000 | 223,239 | 4,557 | 4.56 | 5,559,868 | 5,559,868 | 5,559,868 | +| Log Opcodes (0.6M, Fixed, Zero Topic, 0 Bytes Data, Log2) | 600,000 | 223,239 | 5,878 | 5.88 | 4,948,960 | 4,948,960 | 4,943,104 | +| Log Opcodes (0.6M, Fixed, Zero Topic, 0 Bytes Data, Log3) | 600,000 | 223,239 | 5,085 | 5.08 | 5,905,348 | 5,905,348 | 5,905,348 | +| Log Opcodes (0.6M, Fixed, Zero Topic, 0 Bytes Data, Log4) | 600,000 | 223,239 | 5,225 | 5.22 | 5,580,200 | 5,580,200 | 5,580,200 | +| Log Opcodes (0.6M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log0) | 600,000 | 223,239 | 4,789 | 4.79 | 5,807,584 | 5,807,584 | 5,807,584 | +| Log Opcodes (0.6M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log1) | 600,000 | 223,239 | 5,090 | 5.09 | 3,246,848 | 3,246,848 | 3,243,920 | +| Log Opcodes (0.6M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log2) | 600,000 | 223,239 | 3,906 | 3.91 | 5,361,788 | 5,361,462.7 | 5,360,812 | +| Log Opcodes (0.6M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log3) | 600,000 | 223,239 | 3,877 | 3.88 | 5,531,572 | 5,529,232.8 | 5,528,648 | +| Log Opcodes (0.6M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log4) | 600,000 | 223,239 | 4,629 | 4.63 | 5,685,580 | 5,685,580 | 5,684,604 | +| Log Opcodes (0.6M, Fixed, Zero Topic, 1 Mib Zeros Data, Log0) | 600,000 | 223,239 | 4,578 | 4.58 | 5,932,648 | 5,932,000 | 5,931,676 | +| Log Opcodes (0.6M, Fixed, Zero Topic, 1 Mib Zeros Data, Log1) | 600,000 | 223,239 | 4,886 | 4.89 | 5,791,936 | 5,791,936 | 5,790,960 | +| Log Opcodes (0.6M, Fixed, Zero Topic, 1 Mib Zeros Data, Log2) | 600,000 | 223,239 | 4,101 | 4.10 | 6,128,760 | 6,128,760 | 6,128,760 | +| Log Opcodes (0.6M, Fixed, Zero Topic, 1 Mib Zeros Data, Log3) | 600,000 | 223,239 | 3,833 | 3.83 | 5,817,552 | 5,817,552 | 5,817,552 | +| Log Opcodes (0.6M, Fixed, Zero Topic, 1 Mib Zeros Data, Log4) | 600,000 | 223,239 | 4,043 | 4.04 | 5,451,548 | 5,451,548 | 5,451,548 | +| Address State Cold (0.6M, Absent Accounts False, Balance) | 600,000 | 223,239 | 8,158 | 8.16 | 6,208,776 | 6,208,776 | 6,204,872 | +| Address State Cold (0.6M, Absent Accounts True, Balance) | 600,000 | 223,239 | 5,008 | 5.01 | 5,817,552 | 5,817,552 | 5,815,600 | +| Address State Warm (0.6M, Present Target, Balance) | 600,000 | 223,239 | 8,828 | 8.83 | 5,576,296 | 5,575,808 | 5,573,368 | +| Address State Warm (0.6M, Present Target, Callcode) | 600,000 | 223,239 | 18,740 | 18.74 | 1,749,676 | 1,741,022.1 | 1,731,132 | +| Address State Warm (0.6M, Present Target, Call) | 600,000 | 223,239 | 19,369 | 19.37 | 5,390,076 | 5,389,366.2 | 5,387,148 | +| Address State Warm (0.6M, Present Target, Delegatecall) | 600,000 | 223,239 | 18,157 | 18.16 | 5,839,992 | 5,839,992 | 5,839,992 | +| Address State Warm (0.6M, Present Target, Extcodehash) | 600,000 | 223,239 | 10,569 | 10.57 | 5,383,248 | 5,381,418 | 5,377,392 | +| Address State Warm (0.6M, Present Target, Extcodesize) | 600,000 | 223,239 | 9,488 | 9.49 | 6,478,136 | 6,477,485.3 | 6,473,256 | +| Address State Warm (0.6M, Present Target, Staticcall) | 600,000 | 223,239 | 18,881 | 18.88 | 5,990,212 | 5,985,917.6 | 5,980,452 | +| Address State Warm (0.6M, Absent Target, Balance) | 600,000 | 223,239 | 10,483 | 10.48 | 5,790,960 | 5,790,960 | 5,789,984 | +| Address State Warm (0.6M, Absent Target, Callcode) | 600,000 | 223,239 | 19,326 | 19.33 | 6,204,872 | 6,202,920 | 6,198,040 | +| Address State Warm (0.6M, Absent Target, Call) | 600,000 | 223,239 | 18,173 | 18.17 | 2,150,812 | 2,128,782.3 | 2,108,844 | +| Address State Warm (0.6M, Absent Target, Delegatecall) | 600,000 | 223,239 | 15,960 | 15.96 | 5,639,724 | 5,639,724 | 5,639,724 | +| Address State Warm (0.6M, Absent Target, Extcodehash) | 600,000 | 223,239 | 11,826 | 11.83 | 6,011,668 | 6,011,668 | 6,010,692 | +| Address State Warm (0.6M, Absent Target, Extcodesize) | 600,000 | 223,239 | 11,050 | 11.05 | 4,532,216 | 4,528,095.1 | 4,519,528 | +| Address State Warm (0.6M, Absent Target, Staticcall) | 600,000 | 223,239 | 16,905 | 16.91 | 5,636,796 | 5,636,796 | 5,636,796 | +| Blockhash (0.6M) | 600,000 | 223,239 | 13,322 | 13.32 | 6,480,084 | 6,478,457.3 | 6,477,156 | +| Extcodecopy Warm (0.6M, 1Kib) | 600,000 | 223,239 | 9,215 | 9.21 | 5,841,928 | 5,841,928 | 5,841,928 | +| Extcodecopy Warm (0.6M, 512) | 600,000 | 223,239 | 8,774 | 8.77 | 5,804,876 | 5,804,876 | 5,803,900 | +| Extcodecopy Warm (0.6M, 5Kib) | 600,000 | 223,239 | 7,876 | 7.88 | 5,156,840 | 5,156,840 | 5,153,912 | +| Selfbalance (0.6M) | 600,000 | 223,239 | 53,148 | 53.15 | 5,493,516 | 5,491,645.3 | 5,490,588 | +| Selfdestruct Created (0.6M, No Value) | 589,840 | 223,239 | 4,077 | 4.08 | 2,713,960 | 2,713,960 | 2,709,080 | +| Selfdestruct Created (0.6M, With Value) | 589,840 | 223,239 | 3,873 | 3.87 | 5,693,384 | 5,693,384 | 5,691,432 | +| Selfdestruct Existing (0.6M, No Value) | 597,331 | 223,239 | 8,717 | 8.72 | 5,351,052 | 5,350,076 | 5,347,148 | +| Selfdestruct Existing (0.6M, With Value) | 597,331 | 223,239 | 7,787 | 7.79 | 2,887,680 | 2,881,580 | 2,870,112 | +| Selfdestruct Initcode (0.6M, No Value) | 581,680 | 223,239 | 3,776 | 3.78 | 5,344,224 | 5,344,224 | 5,344,224 | +| Selfdestruct Initcode (0.6M, With Value) | 581,680 | 223,239 | 3,864 | 3.86 | 5,597,756 | 5,597,756 | 5,596,780 | +| Storage Access Cold (0.6M, Absent Slots False, Ssload) | 597,993 | 223,239 | 11,379 | 11.38 | 5,852,656 | 5,852,656 | 5,850,704 | +| Storage Access Cold (0.6M, Absent Slots False, Sstore New Value, Out Of Gas) | 600,000 | 223,239 | 8,872 | 8.87 | 2,822,296 | 2,814,244 | 2,806,680 | +| Storage Access Cold (0.6M, Absent Slots False, Sstore New Value, Revert) | 595,683 | 223,239 | 7,693 | 7.69 | 5,676,800 | 5,676,800 | 5,675,824 | +| Storage Access Cold (0.6M, Absent Slots False, Sstore New Value) | 595,677 | 223,239 | 8,714 | 8.71 | 5,631,916 | 5,629,476 | 5,625,084 | +| Storage Access Cold (0.6M, Absent Slots False, Sstore Same Value, Out Of Gas) | 600,000 | 223,239 | 8,913 | 8.91 | 6,168,768 | 6,167,987.2 | 6,167,792 | +| Storage Access Cold (0.6M, Absent Slots False, Sstore Same Value, Revert) | 598,413 | 223,239 | 10,392 | 10.39 | 5,279,812 | 5,275,420 | 5,271,028 | +| Storage Access Cold (0.6M, Absent Slots False, Sstore Same Value) | 598,407 | 223,239 | 10,965 | 10.96 | 5,818,528 | 5,818,528 | 5,817,552 | +| Storage Access Cold (0.6M, Absent Slots True, Ssload) | 597,993 | 223,239 | 8,035 | 8.04 | 4,510,748 | 4,510,382 | 4,502,940 | +| Storage Access Cold (0.6M, Absent Slots True, Sstore New Value, Out Of Gas) | 600,000 | 223,239 | 3,913 | 3.91 | 5,907,300 | 5,907,300 | 5,907,300 | +| Storage Access Cold (0.6M, Absent Slots True, Sstore New Value, Revert) | 596,675 | 223,239 | 3,845 | 3.85 | 5,943,380 | 5,943,049.3 | 5,943,380 | +| Storage Access Cold (0.6M, Absent Slots True, Sstore New Value) | 596,669 | 223,239 | 3,869 | 3.87 | 5,709,968 | 5,709,968 | 5,706,064 | +| Storage Access Cold (0.6M, Absent Slots True, Sstore Same Value, Out Of Gas) | 600,000 | 223,239 | 4,242 | 4.24 | 4,544,900 | 4,544,900 | 4,541,972 | +| Storage Access Cold (0.6M, Absent Slots True, Sstore Same Value, Revert) | 596,597 | 223,239 | 3,979 | 3.98 | 588,244 | 586,780 | 577,508 | +| Storage Access Cold (0.6M, Absent Slots True, Sstore Same Value) | 596,591 | 223,239 | 4,179 | 4.18 | 2,065,900 | 2,064,143.2 | 2,057,116 | +| Storage Access Warm (0.6M, Sload) | 600,000 | 223,239 | 10,511 | 10.51 | 6,166,816 | 6,166,382.2 | 6,162,912 | +| Storage Access Warm (0.6M, Sstore New Value) | 600,000 | 223,239 | 17,117 | 17.12 | 5,183,192 | 5,183,192 | 5,182,216 | +| Storage Access Warm (0.6M, Sstore Same Value) | 600,000 | 223,239 | 12,914 | 12.91 | 5,915,084 | 5,914,433.3 | 5,912,156 | + +## Summary Statistics + +- **Total Tests:** 508 +- **Successful Tests:** 504 +- **Failed Tests:** 4 + +### Proving Time (ms) +- **Average:** 43,757.6 +- **Minimum:** 3,776 +- **Maximum:** 691,174 + +### Peak Memory Usage (MB) +- **Average:** 5,131,227.4 +- **Minimum:** 566,776 +- **Maximum:** 6,481,060 + +### Proof Size (bytes) +- **Average:** 223,239 +- **Minimum:** 223,239 +- **Maximum:** 223,239 diff --git a/www/docs/pages/benchmark-results/gas-categorized/0.6m/sp1-0.6M-4.md b/www/docs/pages/benchmark-results/gas-categorized/0.6m/sp1-0.6M-4.md new file mode 100644 index 00000000..2d561a1c --- /dev/null +++ b/www/docs/pages/benchmark-results/gas-categorized/0.6m/sp1-0.6M-4.md @@ -0,0 +1,543 @@ +# zkEVM Benchmark Results + +Generated on: 2026-01-01 15:22:14 + +## Folder: zkevm-metrics-sp1-0.6M-4 + +**zkVM:** sp1-cluster-v5.2.3 (4 GPUs) + +**Hardware Configuration:** CPU: AMD EPYC 7B13 64-Core Processor | RAM: 396 GiB | GPU: NVIDIA GeForce RTX 4090, NVIDIA GeForce RTX 4090, NVIDIA GeForce RTX 4090, NVIDIA GeForce RTX 4090 + +## Proving Metrics + +| Benchmark | Gas Used | Proof Size (bytes) | Proving Time (ms) | Proving Time (s) | Peak Memory (MB) | Avg Memory (MB) | Initial Memory (MB) | +|---|---|---|---|---|---|---|---| +| Block Full Access List And Data (0.6M) | 599,990 | 1,477,226 | 6,577 | 6.58 | 4,916,620 | 4,916,620 | 4,904,908 | +| Block Full Data (0.6M, Non Zero Byte) | 600,000 | 1,477,226 | 6,563 | 6.56 | 11,539,396 | 11,537,688 | 11,534,516 | +| Block Full Data (0.6M, Zero Byte) | 600,000 | 1,477,226 | 6,066 | 6.07 | 2,755,796 | 2,747,500 | 2,739,204 | +| Block Full Of Ether Transfers (0.6M, A To A) | 588,000 | 1,477,226 | 8,081 | 8.08 | 6,935,936 | 6,935,936 | 6,933,008 | +| Block Full Of Ether Transfers (0.6M, A To B) | 588,000 | 1,477,226 | 7,563 | 7.56 | 3,093,492 | 3,092,906.4 | 3,085,684 | +| Block Full Of Ether Transfers (0.6M, A To Diff Acc) | 588,000 | 1,477,226 | 7,570 | 7.57 | 5,016,168 | 5,011,706.3 | 5,007,384 | +| Block Full Of Ether Transfers (0.6M, Diff Acc To B) | 588,000 | 1,477,226 | 7,583 | 7.58 | 3,658,576 | 3,658,088 | 3,652,720 | +| Block Full Of Ether Transfers (0.6M, Diff Acc To Diff Acc) | 588,000 | 1,477,226 | 7,595 | 7.59 | 2,033,580 | 2,023,332 | 2,012,108 | +| Bytecode Single Opcode (0.6M, Callcode) | 600,000 | 1,477,226 | 20,696 | 20.70 | 1,996,492 | 1,982,068.9 | 1,957,452 | +| Bytecode Single Opcode (0.6M, Call) | 600,000 | 1,477,226 | 21,700 | 21.70 | 5,835,024 | 5,827,508.8 | 5,813,552 | +| Bytecode Single Opcode (0.6M, Delegatecall) | 600,000 | 1,477,226 | 21,208 | 21.21 | 14,299,632 | 14,297,192 | 14,269,376 | +| Bytecode Single Opcode (0.6M, Extcodecopy) | 600,000 | 1,477,226 | 21,205 | 21.20 | 4,508,656 | 4,500,220.6 | 4,488,160 | +| Bytecode Single Opcode (0.6M, Extcodehash) | 600,000 | 1,477,226 | 21,726 | 21.73 | 8,758,272 | 8,749,976 | 8,738,752 | +| Bytecode Single Opcode (0.6M, Extcodesize) | 600,000 | 1,477,226 | 21,724 | 21.72 | 4,748,752 | 4,736,172.4 | 4,712,640 | +| Bytecode Single Opcode (0.6M, Staticcall) | 600,000 | 1,477,226 | 21,202 | 21.20 | 4,229,532 | 4,211,513.5 | 4,195,372 | +| Create (0.6M, 0Bytes, Create2) | 600,000 | 1,477,226 | 6,071 | 6.07 | 12,386,504 | 12,383,901.3 | 12,381,624 | +| Create (0.6M, 0Bytes, Create) | 600,000 | 1,477,226 | 6,063 | 6.06 | 4,185,612 | 4,185,449.3 | 4,176,828 | +| Create (0.6M, 0Bytes, Create2) | 600,000 | 1,477,226 | 6,559 | 6.56 | 2,764,580 | 2,759,839.4 | 2,755,796 | +| Create (0.6M, 0Bytes, Create) | 600,000 | 1,477,226 | 6,570 | 6.57 | 12,022,012 | 12,022,012 | 12,011,732 | +| Create (0.6M, 0.25X Max Code, Zero Data, Create2) | 600,000 | 1,477,226 | 6,579 | 6.58 | 10,340,600 | 10,339,624 | 10,335,720 | +| Create (0.6M, 0.25X Max Code, Zero Data, Create) | 600,000 | 1,477,226 | 6,571 | 6.57 | 5,370,452 | 5,357,276 | 5,350,932 | +| Create (0.6M, 0.25X Max Code, Create2) | 600,000 | 1,477,226 | 6,055 | 6.05 | 3,966,988 | 3,964,710.7 | 3,958,204 | +| Create (0.6M, 0.25X Max Code, Create) | 600,000 | 1,477,226 | 6,065 | 6.07 | 12,190,636 | 12,190,636 | 12,143,968 | +| Create (0.6M, 0.50X Max Code Size With Non, Zero Data, Create2) | 600,000 | 1,477,226 | 6,066 | 6.07 | 1,163,004 | 1,152,686.3 | 1,139,580 | +| Create (0.6M, 0.50X Max Code Size With Non, Zero Data, Create) | 600,000 | 1,477,226 | 6,053 | 6.05 | 10,014,424 | 10,011,642.4 | 10,011,496 | +| Create (0.6M, 0.50X Max Code Size With Zero Data, Create2) | 600,000 | 1,477,226 | 6,054 | 6.05 | 12,809,348 | 12,803,101.6 | 12,791,780 | +| Create (0.6M, 0.50X Max Code Size With Zero Data, Create) | 600,000 | 1,477,226 | 6,048 | 6.05 | 9,853,468 | 9,848,002.4 | 9,845,660 | +| Create (0.6M, 0.75X Max Code Size With Non, Zero Data, Create2) | 600,000 | 1,477,226 | 6,062 | 6.06 | 4,420,816 | 4,419,254.4 | 4,415,936 | +| Create (0.6M, 0.75X Max Code Size With Non, Zero Data, Create) | 600,000 | 1,477,226 | 6,066 | 6.07 | 10,358,168 | 10,358,168 | 10,343,528 | +| Create (0.6M, 0.75X Max Code Size With Zero Data, Create2) | 600,000 | 1,477,226 | 6,560 | 6.56 | 5,165,496 | 5,161,592 | 5,156,712 | +| Create (0.6M, 0.75X Max Code Size With Zero Data, Create) | 600,000 | 1,477,226 | 6,054 | 6.05 | 5,045,448 | 5,041,934.4 | 5,034,712 | +| Create (0.6M, Max Code, Zero Data, Create2) | 600,000 | 1,477,226 | 6,064 | 6.06 | 7,669,868 | 7,669,868 | 7,654,252 | +| Create (0.6M, Max Code, Zero Data, Create) | 600,000 | 1,477,226 | 6,565 | 6.57 | 14,127,776 | 14,125,498.7 | 14,121,920 | +| Create (0.6M, Max Code, Create2) | 600,000 | 1,477,226 | 6,074 | 6.07 | 2,576,212 | 2,569,542.7 | 2,557,668 | +| Create (0.6M, Max Code, Create) | 600,000 | 1,477,226 | 6,053 | 6.05 | 8,543,412 | 8,540,484 | 8,529,748 | +| Creates Collisions (0.6M, Create2) | 600,000 | 1,477,226 | 6,057 | 6.06 | 10,001,784 | 10,001,784 | 9,998,856 | +| Creates Collisions (0.6M, Create) | 600,000 | 1,477,226 | 6,566 | 6.57 | 11,698,948 | 11,698,948 | 11,691,140 | +| Initcode Jumpdest Analysis (0.6M, 00) | 600,000 | 1,477,226 | 7,078 | 7.08 | 8,452,864 | 8,451,562.7 | 8,447,008 | +| Initcode Jumpdest Analysis (0.6M, 5B) | 600,000 | 1,477,226 | 8,076 | 8.08 | 5,441,700 | 5,438,214.3 | 5,430,964 | +| Initcode Jumpdest Analysis (0.6M, 605B5B) | 600,000 | 1,477,226 | 6,558 | 6.56 | 10,702,844 | 10,698,548 | 10,702,844 | +| Initcode Jumpdest Analysis (0.6M, 605B) | 600,000 | 1,477,226 | 7,559 | 7.56 | 4,676,528 | 4,671,322.7 | 4,665,792 | +| Initcode Jumpdest Analysis (0.6M, 615B5B5B) | 600,000 | 1,477,226 | 6,588 | 6.59 | 11,538,668 | 11,533,199.2 | 11,537,692 | +| Initcode Jumpdest Analysis (0.6M, 615B5B) | 600,000 | 1,477,226 | 7,059 | 7.06 | 7,342,920 | 7,342,269.3 | 7,339,992 | +| Amortized Bn128 Pairings (0.6M) | 600,000 | 1,477,226 | 18,207 | 18.21 | 6,860,788 | 6,842,786.2 | 6,828,580 | +| Empty Block (0.6M) | 0 | 1,477,226 | 5,559 | 5.56 | 2,882,676 | 2,878,576.8 | 2,866,084 | +| Binop Simple (0.6M, Add) | 600,000 | 1,477,226 | 8,105 | 8.11 | 13,306,108 | 13,298,666 | 13,286,588 | +| Binop Simple (0.6M, And) | 600,000 | 1,477,226 | 7,568 | 7.57 | 9,505,260 | 9,505,260 | 9,503,308 | +| Binop Simple (0.6M, Byte) | 600,000 | 1,477,226 | 8,084 | 8.08 | 8,161,768 | 8,156,237.3 | 8,136,392 | +| Binop Simple (0.6M, Div, 0) | 600,000 | 1,477,226 | 18,656 | 18.66 | 7,372,200 | 7,367,905.6 | 7,349,752 | +| Binop Simple (0.6M, Div, 1) | 600,000 | 1,477,226 | 17,149 | 17.15 | 14,224,480 | 14,221,251.7 | 14,207,888 | +| Binop Simple (0.6M, Eq) | 600,000 | 1,477,226 | 11,120 | 11.12 | 13,744,360 | 13,737,040 | 13,718,008 | +| Binop Simple (0.6M, Exp) | 600,000 | 1,477,226 | 13,648 | 13.65 | 7,474,676 | 7,474,676 | 7,466,868 | +| Binop Simple (0.6M, Gt) | 600,000 | 1,477,226 | 8,089 | 8.09 | 7,548,848 | 7,545,724.8 | 7,536,160 | +| Binop Simple (0.6M, Lt) | 600,000 | 1,477,226 | 8,099 | 8.10 | 6,217,612 | 6,212,487 | 6,204,924 | +| Binop Simple (0.6M, Mod) | 600,000 | 1,477,226 | 10,591 | 10.59 | 7,074,520 | 7,066,386.7 | 7,059,880 | +| Binop Simple (0.6M, Mul) | 600,000 | 1,477,226 | 10,098 | 10.10 | 5,032,760 | 5,032,760 | 5,016,168 | +| Binop Simple (0.6M, Or) | 600,000 | 1,477,226 | 8,073 | 8.07 | 10,006,660 | 10,004,220 | 10,000,804 | +| Binop Simple (0.6M, Sar) | 600,000 | 1,477,226 | 10,621 | 10.62 | 11,691,140 | 11,689,010.5 | 11,677,476 | +| Binop Simple (0.6M, Sdiv, 0) | 600,000 | 1,477,226 | 20,223 | 20.22 | 5,750,112 | 5,733,715.2 | 5,726,688 | +| Binop Simple (0.6M, Sdiv, 1) | 600,000 | 1,477,226 | 20,726 | 20.73 | 2,287,332 | 2,268,300 | 2,252,196 | +| Binop Simple (0.6M, Sgt) | 600,000 | 1,477,226 | 11,604 | 11.60 | 9,846,676 | 9,842,279 | 9,833,988 | +| Binop Simple (0.6M, Shl) | 600,000 | 1,477,226 | 9,117 | 9.12 | 11,624,836 | 11,617,904 | 11,610,972 | +| Binop Simple (0.6M, Shr) | 600,000 | 1,477,226 | 9,580 | 9.58 | 13,616,508 | 13,615,532 | 13,610,652 | +| Binop Simple (0.6M, Signextend) | 600,000 | 1,477,226 | 9,601 | 9.60 | 9,889,588 | 9,888,937.3 | 9,886,660 | +| Binop Simple (0.6M, Slt) | 600,000 | 1,477,226 | 8,577 | 8.58 | 4,536,960 | 4,536,960 | 4,526,224 | +| Binop Simple (0.6M, Smod) | 600,000 | 1,477,226 | 10,596 | 10.60 | 10,329,808 | 10,329,157.3 | 10,325,904 | +| Binop Simple (0.6M, Sub) | 600,000 | 1,477,226 | 7,569 | 7.57 | 7,639,612 | 7,639,612 | 7,619,116 | +| Binop Simple (0.6M, Xor) | 600,000 | 1,477,226 | 8,087 | 8.09 | 2,489,364 | 2,485,297.3 | 2,477,652 | +| Blobhash (0.6M, No Blobs) | 600,000 | 1,477,226 | 7,565 | 7.57 | 11,996,188 | 11,990,088 | 11,971,732 | +| Blobhash (0.6M, One Blob And Accessed) | 600,000 | 1,477,226 | 9,083 | 9.08 | 12,289,480 | 12,289,480 | 12,284,600 | +| Blobhash (0.6M, One Blob But Access Non, Existent Index) | 600,000 | 1,477,226 | 7,569 | 7.57 | 5,982,400 | 5,981,424 | 5,974,592 | +| Blobhash (0.6M, Six Blobs, Access Latest) | 600,000 | 1,477,226 | 9,112 | 9.11 | 11,671,620 | 11,667,122 | 11,661,648 | +| Calldataload (0.6M, Empty) | 600,000 | 1,477,226 | 10,125 | 10.12 | 11,739,348 | 11,735,415 | 11,727,072 | +| Calldataload (0.6M, One, Loop) | 600,000 | 1,477,226 | 10,611 | 10.61 | 12,488,248 | 12,477,674.7 | 12,464,824 | +| Calldataload (0.6M, Zero, Loop) | 600,000 | 1,477,226 | 11,111 | 11.11 | 5,864,304 | 5,863,328 | 5,853,568 | +| Calldatasize (0.6M, Calldata Length 0) | 600,000 | 1,477,226 | 8,590 | 8.59 | 6,699,748 | 6,698,967.2 | 6,690,964 | +| Calldatasize (0.6M, Calldata Length 10000) | 600,000 | 1,477,226 | 8,087 | 8.09 | 12,899,848 | 12,895,944 | 12,878,376 | +| Calldatasize (0.6M, Calldata Length 1000) | 600,000 | 1,477,226 | 8,586 | 8.59 | 14,252,784 | 14,252,296 | 14,243,024 | +| Callvalue (0.6M, From Origin False, Non Zero Value False) | 600,000 | 1,477,226 | 8,587 | 8.59 | 12,303,096 | 12,299,918.4 | 12,302,120 | +| Callvalue (0.6M, From Origin False, Non Zero Value True) | 600,000 | 1,477,226 | 8,071 | 8.07 | 12,921,380 | 12,914,762 | 12,902,776 | +| Callvalue (0.6M, From Origin True, Non Zero Value False) | 600,000 | 1,477,226 | 8,074 | 8.07 | 2,942,212 | 2,942,212 | 2,922,692 | +| Callvalue (0.6M, From Origin True, Non Zero Value True) | 600,000 | 1,477,226 | 8,091 | 8.09 | 7,876,780 | 7,875,478.7 | 7,869,948 | +| Dup (0.6M, Dup10) | 600,000 | 1,477,226 | 7,567 | 7.57 | 12,969,428 | 12,952,177 | 12,938,944 | +| Dup (0.6M, Dup11) | 600,000 | 1,477,226 | 7,579 | 7.58 | 5,297,252 | 5,292,372 | 5,284,564 | +| Dup (0.6M, Dup12) | 600,000 | 1,477,226 | 7,582 | 7.58 | 975,612 | 965,754.4 | 948,284 | +| Dup (0.6M, Dup13) | 600,000 | 1,477,226 | 7,573 | 7.57 | 10,013,492 | 10,013,492 | 10,007,636 | +| Dup (0.6M, Dup14) | 600,000 | 1,477,226 | 7,085 | 7.08 | 12,698,904 | 12,693,633.6 | 12,686,216 | +| Dup (0.6M, Dup15) | 600,000 | 1,477,226 | 7,582 | 7.58 | 4,637,488 | 4,636,651.4 | 4,628,704 | +| Dup (0.6M, Dup16) | 600,000 | 1,477,226 | 7,066 | 7.07 | 795,056 | 787,573.3 | 765,776 | +| Dup (0.6M, Dup1) | 600,000 | 1,477,226 | 7,566 | 7.57 | 8,164,692 | 8,163,325.6 | 8,162,740 | +| Dup (0.6M, Dup2) | 600,000 | 1,477,226 | 6,564 | 6.56 | 1,926,220 | 1,913,288 | 1,903,772 | +| Dup (0.6M, Dup3) | 600,000 | 1,477,226 | 7,060 | 7.06 | 6,724,148 | 6,711,134.7 | 6,703,652 | +| Dup (0.6M, Dup4) | 600,000 | 1,477,226 | 7,074 | 7.07 | 9,408,876 | 9,408,373 | 9,403,000 | +| Dup (0.6M, Dup5) | 600,000 | 1,477,226 | 7,069 | 7.07 | 4,374,952 | 4,371,780 | 4,368,120 | +| Dup (0.6M, Dup6) | 600,000 | 1,477,226 | 7,080 | 7.08 | 11,047,356 | 11,037,877.6 | 11,025,260 | +| Dup (0.6M, Dup7) | 600,000 | 1,477,226 | 7,575 | 7.58 | 13,336,364 | 13,335,876 | 13,309,036 | +| Dup (0.6M, Dup8) | 600,000 | 1,477,226 | 7,566 | 7.57 | 9,920,352 | 9,919,376 | 9,916,448 | +| Dup (0.6M, Dup9) | 600,000 | 1,477,226 | 8,093 | 8.09 | 10,693,084 | 10,688,122 | 10,674,376 | +| Jumpdests (0.6M) | 600,000 | 1,477,226 | 8,064 | 8.06 | 12,110,780 | 12,108,891.2 | 12,110,780 | +| Jumpi Fallthrough (0.6M) | 600,000 | 1,477,226 | 9,582 | 9.58 | 6,367,908 | 6,360,588 | 6,340,580 | +| Jumpis (0.6M) | 600,000 | 1,477,226 | 7,074 | 7.07 | 14,242,048 | 14,237,656 | 14,227,408 | +| Jumps (0.6M) | 600,000 | 1,477,226 | 7,067 | 7.07 | 12,375,868 | 12,372,036 | 12,360,468 | +| Keccak (0.6M) | 600,000 | 1,477,226 | 11,114 | 11.11 | 1,036,124 | 1,011,198.5 | 975,612 | +| Memory Access (0.6M, Small Mem, Uninit Offset, Off 0, Mload) | 600,000 | 1,477,226 | 8,101 | 8.10 | 7,378,056 | 7,376,429.3 | 7,372,200 | +| Memory Access (0.6M, Small Mem, Uninit Offset, Off 0, Mstore8) | 600,000 | 1,477,226 | 8,082 | 8.08 | 2,975,396 | 2,970,028 | 2,957,828 | +| Memory Access (0.6M, Small Mem, Uninit Offset, Off 0, Mstore) | 600,000 | 1,477,226 | 8,598 | 8.60 | 3,124,724 | 3,113,256 | 3,094,468 | +| Memory Access (0.6M, Small Mem, Uninit Offset, Off 1, Mload) | 600,000 | 1,477,226 | 8,584 | 8.58 | 12,513,456 | 12,504,672 | 12,487,600 | +| Memory Access (0.6M, Small Mem, Uninit Offset, Off 1, Mstore8) | 600,000 | 1,477,226 | 7,558 | 7.56 | 2,523,520 | 2,520,396.8 | 2,514,736 | +| Memory Access (0.6M, Small Mem, Uninit Offset, Off 1, Mstore) | 600,000 | 1,477,226 | 9,583 | 9.58 | 12,221,712 | 12,215,856 | 12,207,072 | +| Memory Access (0.6M, Small Mem, Uninit Offset, Off 31, Mload) | 600,000 | 1,477,226 | 8,577 | 8.58 | 5,841,856 | 5,840,554.7 | 5,836,000 | +| Memory Access (0.6M, Small Mem, Uninit Offset, Off 31, Mstore8) | 600,000 | 1,477,226 | 8,082 | 8.08 | 4,334,940 | 4,330,060 | 4,320,300 | +| Memory Access (0.6M, Small Mem, Uninit Offset, Off 31, Mstore) | 600,000 | 1,477,226 | 9,116 | 9.12 | 5,378,260 | 5,377,040 | 5,374,356 | +| Memory Access (0.6M, Small Mem, Init Offset, Off 0, Mload) | 600,000 | 1,477,226 | 8,617 | 8.62 | 7,455,160 | 7,453,858.7 | 7,448,328 | +| Memory Access (0.6M, Small Mem, Init Offset, Off 0, Mstore8) | 600,000 | 1,477,226 | 8,566 | 8.57 | 7,960,712 | 7,956,686 | 7,949,976 | +| Memory Access (0.6M, Small Mem, Init Offset, Off 0, Mstore) | 600,000 | 1,477,226 | 9,097 | 9.10 | 947,308 | 932,098.7 | 902,412 | +| Memory Access (0.6M, Small Mem, Init Offset, Off 1, Mload) | 600,000 | 1,477,226 | 8,088 | 8.09 | 7,600,576 | 7,597,485.3 | 7,590,816 | +| Memory Access (0.6M, Small Mem, Init Offset, Off 1, Mstore8) | 600,000 | 1,477,226 | 8,081 | 8.08 | 1,283,048 | 1,266,944 | 1,244,008 | +| Memory Access (0.6M, Small Mem, Init Offset, Off 1, Mstore) | 600,000 | 1,477,226 | 9,112 | 9.11 | 12,651,260 | 12,651,260 | 12,639,804 | +| Memory Access (0.6M, Small Mem, Init Offset, Off 31, Mload) | 600,000 | 1,477,226 | 8,615 | 8.62 | 4,798,524 | 4,796,181.6 | 4,792,668 | +| Memory Access (0.6M, Small Mem, Init Offset, Off 31, Mstore8) | 600,000 | 1,477,226 | 8,590 | 8.59 | 12,103,948 | 12,101,996 | 12,087,356 | +| Memory Access (0.6M, Small Mem, Init Offset, Off 31, Mstore) | 600,000 | 1,477,226 | 8,584 | 8.58 | 6,085,852 | 6,085,852 | 6,074,140 | +| Memory Access (0.6M, Big Mem, Uninit Offset, Off 0, Mload) | 600,000 | 1,477,226 | 8,588 | 8.59 | 4,662,864 | 4,658,146.7 | 4,637,488 | +| Memory Access (0.6M, Big Mem, Uninit Offset, Off 0, Mstore8) | 600,000 | 1,477,226 | 7,579 | 7.58 | 10,050,276 | 10,048,141.1 | 10,042,468 | +| Memory Access (0.6M, Big Mem, Uninit Offset, Off 0, Mstore) | 600,000 | 1,477,226 | 8,585 | 8.59 | 9,137,980 | 9,135,442.4 | 9,127,244 | +| Memory Access (0.6M, Big Mem, Uninit Offset, Off 1, Mload) | 600,000 | 1,477,226 | 8,588 | 8.59 | 4,445,216 | 4,445,216 | 4,443,264 | +| Memory Access (0.6M, Big Mem, Uninit Offset, Off 1, Mstore8) | 600,000 | 1,477,226 | 7,584 | 7.58 | 2,504,980 | 2,499,449.3 | 2,491,316 | +| Memory Access (0.6M, Big Mem, Uninit Offset, Off 1, Mstore) | 600,000 | 1,477,226 | 8,576 | 8.58 | 10,889,256 | 10,884,864 | 10,874,616 | +| Memory Access (0.6M, Big Mem, Uninit Offset, Off 31, Mload) | 600,000 | 1,477,226 | 8,080 | 8.08 | 717,952 | 711,890.5 | 697,456 | +| Memory Access (0.6M, Big Mem, Uninit Offset, Off 31, Mstore8) | 600,000 | 1,477,226 | 8,110 | 8.11 | 13,658,472 | 13,657,821.3 | 13,647,736 | +| Memory Access (0.6M, Big Mem, Uninit Offset, Off 31, Mstore) | 600,000 | 1,477,226 | 9,064 | 9.06 | 3,402,880 | 3,397,512 | 3,391,168 | +| Memory Access (0.6M, Big Mem, Init Offset, Off 0, Mload) | 600,000 | 1,477,226 | 8,582 | 8.58 | 3,418,496 | 3,410,827.4 | 3,403,856 | +| Memory Access (0.6M, Big Mem, Init Offset, Off 0, Mstore8) | 600,000 | 1,477,226 | 8,587 | 8.59 | 7,892,396 | 7,889,468 | 7,877,756 | +| Memory Access (0.6M, Big Mem, Init Offset, Off 0, Mstore) | 600,000 | 1,477,226 | 8,601 | 8.60 | 11,541,340 | 11,541,340 | 11,540,364 | +| Memory Access (0.6M, Big Mem, Init Offset, Off 1, Mload) | 600,000 | 1,477,226 | 8,579 | 8.58 | 13,765,832 | 13,758,024 | 13,744,360 | +| Memory Access (0.6M, Big Mem, Init Offset, Off 1, Mstore8) | 600,000 | 1,477,226 | 8,073 | 8.07 | 11,274,924 | 11,274,924 | 11,270,044 | +| Memory Access (0.6M, Big Mem, Init Offset, Off 1, Mstore) | 600,000 | 1,477,226 | 9,070 | 9.07 | 4,043,116 | 4,041,408 | 4,035,308 | +| Memory Access (0.6M, Big Mem, Init Offset, Off 31, Mload) | 600,000 | 1,477,226 | 8,569 | 8.57 | 8,501,444 | 8,496,293.6 | 8,492,472 | +| Memory Access (0.6M, Big Mem, Init Offset, Off 31, Mstore8) | 600,000 | 1,477,226 | 7,581 | 7.58 | 7,653,276 | 7,648,396 | 7,644,492 | +| Memory Access (0.6M, Big Mem, Init Offset, Off 31, Mstore) | 600,000 | 1,477,226 | 9,099 | 9.10 | 3,387,264 | 3,383,778.3 | 3,377,504 | +| Mod (0.6M, Op Mod, Mod Bits 127) | 600,000 | 1,477,226 | 17,674 | 17.67 | 12,282,648 | 12,280,954.7 | 12,279,140 | +| Mod (0.6M, Op Mod, Mod Bits 191) | 600,000 | 1,477,226 | 20,733 | 20.73 | 8,133,464 | 8,122,662.9 | 8,106,136 | +| Mod (0.6M, Op Mod, Mod Bits 255) | 600,000 | 1,477,226 | 17,187 | 17.19 | 12,463,604 | 12,440,119 | 12,416,756 | +| Mod (0.6M, Op Mod, Mod Bits 63) | 600,000 | 1,477,226 | 14,168 | 14.17 | 1,346,488 | 1,320,624 | 1,286,952 | +| Mod (0.6M, Op Smod, Mod Bits 127) | 600,000 | 1,477,226 | 18,164 | 18.16 | 10,042,472 | 10,041,170.7 | 10,029,784 | +| Mod (0.6M, Op Smod, Mod Bits 191) | 600,000 | 1,477,226 | 21,717 | 21.72 | 765,776 | 750,263.8 | 718,928 | +| Mod (0.6M, Op Smod, Mod Bits 255) | 600,000 | 1,477,226 | 17,679 | 17.68 | 12,272,672 | 12,260,201.5 | 12,233,020 | +| Mod (0.6M, Op Smod, Mod Bits 63) | 600,000 | 1,477,226 | 14,651 | 14.65 | 12,789,828 | 12,781,434.4 | 12,756,924 | +| Modarith (0.6M, Op Addmod, Mod Bits 127) | 600,000 | 1,477,226 | 14,643 | 14.64 | 8,576,592 | 8,569,760 | 8,553,168 | +| Modarith (0.6M, Op Addmod, Mod Bits 191) | 600,000 | 1,477,226 | 17,178 | 17.18 | 12,053,400 | 12,043,922.4 | 12,026,508 | +| Modarith (0.6M, Op Addmod, Mod Bits 255) | 600,000 | 1,477,226 | 14,633 | 14.63 | 2,917,812 | 2,902,521.3 | 2,883,652 | +| Modarith (0.6M, Op Addmod, Mod Bits 63) | 600,000 | 1,477,226 | 12,646 | 12.65 | 2,143,860 | 2,127,622.9 | 2,103,844 | +| Modarith (0.6M, Op Mulmod, Mod Bits 127) | 600,000 | 1,477,226 | 23,226 | 23.23 | 2,766,532 | 2,766,532 | 2,765,556 | +| Modarith (0.6M, Op Mulmod, Mod Bits 191) | 600,000 | 1,477,226 | 28,321 | 28.32 | 10,651,428 | 10,631,577.3 | 10,603,752 | +| Modarith (0.6M, Op Mulmod, Mod Bits 255) | 600,000 | 1,477,226 | 27,769 | 27.77 | 2,087,256 | 2,051,794.7 | 2,033,576 | +| Modarith (0.6M, Op Mulmod, Mod Bits 63) | 600,000 | 1,477,226 | 18,206 | 18.21 | 8,105,160 | 8,105,160 | 8,095,400 | +| Modexp (0.6M, Mod 1045 Gas Base Heavy) | 600,000 | 1,477,226 | 247,158 | 247.16 | 3,472,160 | 3,456,218.7 | 3,430,192 | +| Modexp (0.6M, Mod 1360 Gas Balanced) | 600,000 | 1,477,226 | 61,116 | 61.12 | 10,534,048 | 10,505,098.1 | 10,469,556 | +| Modexp (0.6M, Mod 400 Gas Exp Heavy) | 600,000 | 1,477,226 | 75,269 | 75.27 | 4,162,188 | 4,140,383.3 | 4,109,484 | +| Modexp (0.6M, Mod 408 Gas Balanced) | 600,000 | 1,477,226 | 53,523 | 53.52 | 8,488,568 | 8,474,718.9 | 8,452,864 | +| Modexp (0.6M, Mod 408 Gas Base Heavy) | 600,000 | 1,477,226 | 215,734 | 215.73 | 5,711,072 | 5,616,273.7 | 5,524,656 | +| Modexp (0.6M, Mod 600 As Balanced) | 600,000 | 1,477,226 | 56,087 | 56.09 | 1,859,856 | 1,812,149.1 | 1,768,112 | +| Modexp (0.6M, Mod 600 Gas Exp Heavy) | 600,000 | 1,477,226 | 79,796 | 79.80 | 3,235,012 | 3,187,110.9 | 3,124,724 | +| Modexp (0.6M, Mod 616 Gas Base Heavy) | 600,000 | 1,477,226 | 230,880 | 230.88 | 9,350,112 | 9,340,541 | 9,269,024 | +| Modexp (0.6M, Mod 677 Gas Base Heavy) | 600,000 | 1,477,226 | 57,550 | 57.55 | 6,156,124 | 6,121,183.2 | 6,087,804 | +| Modexp (0.6M, Mod 765 Gas Exp Heavy) | 600,000 | 1,477,226 | 62,599 | 62.60 | 695,508 | 652,216.3 | 592,052 | +| Modexp (0.6M, Mod 767 Gas Balanced) | 600,000 | 1,477,226 | 54,086 | 54.09 | 1,494,840 | 1,454,824 | 1,382,600 | +| Modexp (0.6M, Mod 800 Gas Base Heavy) | 600,000 | 1,477,226 | 239,403 | 239.40 | 9,272,452 | 9,234,367.2 | 9,185,740 | +| Modexp (0.6M, Mod 800 Gas Exp Heavy) | 600,000 | 1,477,226 | 80,333 | 80.33 | 9,584,216 | 9,547,049.4 | 9,513,068 | +| Modexp (0.6M, Mod 852 Gas Exp Heavy) | 600,000 | 1,477,226 | 82,836 | 82.84 | 4,025,548 | 4,000,014.6 | 3,967,964 | +| Modexp (0.6M, Mod 867 Gas Base Heavy) | 600,000 | 1,477,226 | 238,834 | 238.83 | 13,538,552 | 13,458,667.3 | 13,354,908 | +| Modexp (0.6M, Mod 996 Gas Balanced) | 600,000 | 1,477,226 | 55,150 | 55.15 | 4,628,704 | 4,600,400 | 4,566,240 | +| Modexp (0.6M, Mod Even 1024B Exp 1024) | 600,000 | 1,477,226 | 6,074 | 6.07 | 3,771,788 | 3,770,486.7 | 3,765,932 | +| Modexp (0.6M, Mod Even 128B Exp 1024) | 600,000 | 1,477,226 | 49,976 | 49.98 | 10,330,892 | 10,321,498.4 | 10,297,932 | +| Modexp (0.6M, Mod Even 16B Exp 320) | 600,000 | 1,477,226 | 76,337 | 76.34 | 9,492,572 | 9,477,866.7 | 9,452,536 | +| Modexp (0.6M, Mod Even 24B Exp 168) | 600,000 | 1,477,226 | 64,661 | 64.66 | 10,985,240 | 10,972,759.3 | 10,890,232 | +| Modexp (0.6M, Mod Even 256B Exp 1024) | 600,000 | 1,477,226 | 33,860 | 33.86 | 12,133,452 | 12,122,554.2 | 12,110,512 | +| Modexp (0.6M, Mod Even 32B Exp 256) | 600,000 | 1,477,226 | 61,092 | 61.09 | 5,007,384 | 4,979,752.4 | 4,926,376 | +| Modexp (0.6M, Mod Even 32B Exp 40) | 600,000 | 1,477,226 | 51,019 | 51.02 | 4,312,492 | 4,294,412.8 | 4,269,548 | +| Modexp (0.6M, Mod Even 32B Exp 96) | 600,000 | 1,477,226 | 59,092 | 59.09 | 2,660,148 | 2,631,173 | 2,589,876 | +| Modexp (0.6M, Mod Even 512B Exp 1024) | 600,000 | 1,477,226 | 6,562 | 6.56 | 3,057,380 | 3,050,157.6 | 3,032,980 | +| Modexp (0.6M, Mod Even 64B Exp 512) | 600,000 | 1,477,226 | 58,591 | 58.59 | 10,019,344 | 10,017,217.7 | 10,013,488 | +| Modexp (0.6M, Mod Even 8B Exp 896) | 600,000 | 1,477,226 | 129,740 | 129.74 | 6,593,364 | 6,546,414.0 | 6,484,052 | +| Modexp (0.6M, Mod Exp 208 Gas Balanced) | 600,000 | 1,477,226 | 49,046 | 49.05 | 9,652,240 | 9,640,739.1 | 9,622,960 | +| Modexp (0.6M, Mod Exp 215 Gas Exp Heavy) | 600,000 | 1,477,226 | 115,044 | 115.04 | 14,232,552 | 14,192,324 | 14,134,604 | +| Modexp (0.6M, Mod Exp 298 Gas Exp Heavy) | 600,000 | 1,477,226 | 124,734 | 124.73 | 7,339,992 | 7,274,977.8 | 7,185,784 | +| Modexp (0.6M, Mod Min As Balanced) | 600,000 | 1,477,226 | 50,464 | 50.46 | 5,937,504 | 5,908,169.8 | 5,890,656 | +| Modexp (0.6M, Mod Min As Base Heavy) | 600,000 | 1,477,226 | 175,211 | 175.21 | 7,869,948 | 7,800,341.5 | 7,708,908 | +| Modexp (0.6M, Mod Min As Exp Heavy) | 600,000 | 1,477,226 | 112,703 | 112.70 | 11,535,948 | 11,513,675.2 | 11,476,924 | +| Modexp (0.6M, Mod Odd 1024B Exp 1024) | 600,000 | 1,477,226 | 6,578 | 6.58 | 12,711,020 | 12,700,284 | 12,688,572 | +| Modexp (0.6M, Mod Odd 128B Exp 1024) | 600,000 | 1,477,226 | 48,958 | 48.96 | 10,757,116 | 10,731,195.1 | 10,700,500 | +| Modexp (0.6M, Mod Odd 256B Exp 1024) | 600,000 | 1,477,226 | 34,312 | 34.31 | 9,742,252 | 9,723,964.8 | 9,703,344 | +| Modexp (0.6M, Mod Odd 32B Exp 256) | 600,000 | 1,477,226 | 61,596 | 61.60 | 6,463,556 | 6,421,433.9 | 6,367,908 | +| Modexp (0.6M, Mod Odd 32B Exp 96) | 600,000 | 1,477,226 | 56,079 | 56.08 | 8,026,104 | 8,026,104 | 7,959,736 | +| Modexp (0.6M, Mod Odd 32B Exp Cover Windows) | 600,000 | 1,477,226 | 45,945 | 45.95 | 6,064,384 | 6,027,574.9 | 5,992,160 | +| Modexp (0.6M, Mod Odd 512B Exp 1024) | 600,000 | 1,477,226 | 5,557 | 5.56 | 9,829,848 | 9,828,628 | 9,826,920 | +| Modexp (0.6M, Mod Odd 64B Exp 512) | 600,000 | 1,477,226 | 58,551 | 58.55 | 9,180,272 | 9,163,324.6 | 9,144,812 | +| Modexp (0.6M, Mod Pawel 2) | 600,000 | 1,477,226 | 74,765 | 74.77 | 10,183,372 | 10,183,372 | 10,183,372 | +| Modexp (0.6M, Mod Pawel 3) | 600,000 | 1,477,226 | 62,118 | 62.12 | 4,105,580 | 4,074,295.2 | 4,044,092 | +| Modexp (0.6M, Mod Pawel 4) | 600,000 | 1,477,226 | 56,576 | 56.58 | 10,869,740 | 10,833,519.0 | 10,797,792 | +| Modexp (0.6M, Mod Vul Common 1152N1) | 600,000 | 1,477,226 | 36,881 | 36.88 | 6,241,032 | 6,233,634.9 | 6,219,560 | +| Modexp (0.6M, Mod Vul Common 1349N1) | 600,000 | 1,477,226 | 49,458 | 49.46 | 11,831,128 | 11,792,929.8 | 11,768,896 | +| Modexp (0.6M, Mod Vul Common 1360N1) | 600,000 | 1,477,226 | 53,551 | 53.55 | 4,902,956 | 4,878,091.2 | 4,859,036 | +| Modexp (0.6M, Mod Vul Common 1360N2) | 600,000 | 1,477,226 | 49,474 | 49.47 | 8,094,424 | 8,060,091.8 | 8,027,080 | +| Modexp (0.6M, Mod Vul Common 200N1) | 600,000 | 1,477,226 | 30,781 | 30.78 | 5,202,584 | 5,188,319.4 | 5,170,376 | +| Modexp (0.6M, Mod Vul Common 200N2) | 600,000 | 1,477,226 | 36,931 | 36.93 | 10,072,276 | 10,064,196 | 10,057,292 | +| Modexp (0.6M, Mod Vul Common 200N3) | 600,000 | 1,477,226 | 36,908 | 36.91 | 5,155,736 | 5,155,736 | 5,102,056 | +| Modexp (0.6M, Mod Vul Example 1) | 600,000 | 1,477,226 | 60,159 | 60.16 | 8,738,752 | 8,681,633.1 | 8,653,696 | +| Modexp (0.6M, Mod Vul Example 2) | 600,000 | 1,477,226 | 57,114 | 57.11 | 10,603,752 | 10,568,410 | 10,533,068 | +| Modexp (0.6M, Mod Vul Guido 1 Even) | 600,000 | 1,477,226 | 45,464 | 45.46 | 14,119,968 | 14,094,808.9 | 14,078,976 | +| Modexp (0.6M, Mod Vul Guido 2 Even) | 600,000 | 1,477,226 | 71,756 | 71.76 | 6,933,012 | 6,907,026 | 6,861,764 | +| Modexp (0.6M, Mod Vul Guido 3 Even) | 600,000 | 1,477,226 | 123,762 | 123.76 | 11,475,812 | 11,415,576.3 | 11,316,072 | +| Modexp (0.6M, Mod Vul Marius 1 Even) | 600,000 | 1,477,226 | 64,588 | 64.59 | 10,177,720 | 10,141,109.5 | 10,107,596 | +| Modexp (0.6M, Mod Vul Nagydani 1 Pow 0X10001) | 600,000 | 1,477,226 | 45,008 | 45.01 | 12,606,620 | 12,570,911.4 | 12,517,360 | +| Modexp (0.6M, Mod Vul Nagydani 1 Qube) | 600,000 | 1,477,226 | 35,363 | 35.36 | 14,079,952 | 14,061,245.3 | 14,049,696 | +| Modexp (0.6M, Mod Vul Nagydani 1 Square) | 600,000 | 1,477,226 | 32,823 | 32.82 | 11,149,040 | 11,115,031.5 | 11,079,268 | +| Modexp (0.6M, Mod Vul Nagydani 2 Pow 0X10001) | 600,000 | 1,477,226 | 46,487 | 46.49 | 11,221,264 | 11,212,480 | 11,190,032 | +| Modexp (0.6M, Mod Vul Nagydani 2 Qube) | 600,000 | 1,477,226 | 88,377 | 88.38 | 564,724 | 511,074.2 | 178,228 | +| Modexp (0.6M, Mod Vul Nagydani 2 Square) | 600,000 | 1,477,226 | 89,437 | 89.44 | 5,282,612 | 5,246,421.9 | 5,207,460 | +| Modexp (0.6M, Mod Vul Nagydani 3 Pow 0X10001) | 600,000 | 1,477,226 | 45,978 | 45.98 | 7,429,784 | 7,413,517.3 | 7,380,008 | +| Modexp (0.6M, Mod Vul Nagydani 3 Qube) | 600,000 | 1,477,226 | 230,861 | 230.86 | 9,066,220 | 8,976,139.1 | 8,956,864 | +| Modexp (0.6M, Mod Vul Nagydani 3 Square) | 600,000 | 1,477,226 | 208,038 | 208.04 | 14,035,060 | 13,944,076.2 | 13,845,672 | +| Modexp (0.6M, Mod Vul Nagydani 4 Pow 0X10001) | 600,000 | 1,477,226 | 44,991 | 44.99 | 6,320,084 | 6,293,056.3 | 6,264,452 | +| Modexp (0.6M, Mod Vul Nagydani 4 Qube) | 600,000 | 1,477,226 | 274,795 | 274.80 | 8,956,932 | 8,893,515.1 | 8,784,624 | +| Modexp (0.6M, Mod Vul Nagydani 4 Square) | 600,000 | 1,477,226 | 249,953 | 249.95 | 10,014,988 | 9,978,632.8 | 9,922,304 | +| Modexp (0.6M, Mod Vul Nagydani 5 Pow 0X10001) | 600,000 | 1,477,226 | 43,462 | 43.46 | 3,359,936 | 3,331,379.0 | 3,292,592 | +| Modexp (0.6M, Mod Vul Nagydani 5 Qube) | 600,000 | 1,477,226 | 274,786 | 274.79 | 8,446,032 | 8,340,270.9 | 8,207,636 | +| Modexp (0.6M, Mod Vul Nagydani 5 Square) | 600,000 | 1,477,226 | 257,273 | 257.27 | 3,899,644 | 3,849,043.6 | 3,774,716 | +| Modexp (0.6M, Mod Vul Pawel 1 Exp Heavy) | 600,000 | 1,477,226 | 119,284 | 119.28 | 9,403,000 | 9,390,683.2 | 9,376,944 | +| Modexp (0.6M, Mod Vul Pawel 2 Exp Heavy) | 600,000 | 1,477,226 | 71,709 | 71.71 | 9,112,604 | 9,097,504.7 | 9,073,564 | +| Modexp (0.6M, Mod Vul Pawel 3 Exp Heavy) | 600,000 | 1,477,226 | 58,614 | 58.61 | 11,928,676 | 11,899,589.3 | 11,871,620 | +| Modexp (0.6M, Mod Vul Pawel 4 Exp Heavy) | 600,000 | 1,477,226 | 54,035 | 54.03 | 6,195,164 | 6,180,979.5 | 6,156,124 | +| Msize (0.6M, Mem Size 0) | 600,000 | 1,477,226 | 9,100 | 9.10 | 10,023,592 | 10,023,592 | 10,020,320 | +| Msize (0.6M, Mem Size 1000000) | 600,000 | 1,477,226 | 8,597 | 8.60 | 5,524,656 | 5,515,593.1 | 5,501,232 | +| Msize (0.6M, Mem Size 100000) | 600,000 | 1,477,226 | 8,582 | 8.58 | 7,098,920 | 7,096,724 | 7,093,064 | +| Msize (0.6M, Mem Size 1000) | 600,000 | 1,477,226 | 8,582 | 8.58 | 10,799,000 | 10,784,236.7 | 10,757,268 | +| Msize (0.6M, Mem Size 1) | 600,000 | 1,477,226 | 8,605 | 8.61 | 10,465,652 | 10,458,680.6 | 10,440,276 | +| Precompile Fixed Cost (0.6M, Blake2F) | 600,000 | 1,477,226 | 46,479 | 46.48 | 7,528,356 | 7,504,502.6 | 7,474,676 | +| Precompile Fixed Cost (0.6M, Bls12 Fp To G1) | 600,000 | 1,477,226 | 91,433 | 91.43 | 10,295,980 | 10,275,937.3 | 10,256,536 | +| Precompile Fixed Cost (0.6M, Bls12 Fp To G2) | 600,000 | 1,477,226 | 67,592 | 67.59 | 7,012,060 | 6,985,607.9 | 6,948,620 | +| Precompile Fixed Cost (0.6M, Bls12 G1Add) | 600,000 | 1,477,226 | 52,512 | 52.51 | 13,845,672 | 13,845,672 | 13,765,832 | +| Precompile Fixed Cost (0.6M, Bls12 G1Msm) | 600,000 | 1,477,226 | 6,071 | 6.07 | 1,762,260 | 1,753,801.3 | 1,744,692 | +| Precompile Fixed Cost (0.6M, Bls12 G2Add) | 600,000 | 1,477,226 | 56,011 | 56.01 | 13,600,632 | 13,581,478.8 | 13,554,688 | +| Precompile Fixed Cost (0.6M, Bls12 G2Msm) | 600,000 | 1,477,226 | 6,566 | 6.57 | 2,303,924 | 2,296,506.4 | 2,291,236 | +| Precompile Fixed Cost (0.6M, Bls12 Pairing Check) | 600,000 | 1,477,226 | 89,446 | 89.45 | 1,714,436 | 1,655,859.5 | 1,554,372 | +| Precompile Fixed Cost (0.6M, Bn128 Add) | 600,000 | 1,477,226 | 18,680 | 18.68 | 3,941,612 | 3,930,225.3 | 3,918,188 | +| Precompile Fixed Cost (0.6M, Bn128 Add 1 2) | 600,000 | 1,477,226 | 11,128 | 11.13 | 4,562,336 | 4,561,848 | 4,543,792 | +| Precompile Fixed Cost (0.6M, Bn128 Add Infinities) | 600,000 | 1,477,226 | 9,118 | 9.12 | 10,086,916 | 10,082,036 | 10,074,228 | +| Precompile Fixed Cost (0.6M, Bn128 Mul) | 600,000 | 1,477,226 | 25,746 | 25.75 | 5,400,708 | 5,391,558 | 5,380,212 | +| Precompile Fixed Cost (0.6M, Bn128 Mul 1 2 2 Scalar) | 600,000 | 1,477,226 | 7,078 | 7.08 | 2,865,108 | 2,862,180 | 2,853,396 | +| Precompile Fixed Cost (0.6M, Bn128 Mul 1 2 32 Byte Scalar) | 600,000 | 1,477,226 | 26,283 | 26.28 | 3,764,956 | 3,757,748.6 | 3,746,412 | +| Precompile Fixed Cost (0.6M, Bn128 Mul 32 Byte Coord And 2 Scalar) | 600,000 | 1,477,226 | 7,064 | 7.06 | 8,192,020 | 8,190,556 | 8,187,140 | +| Precompile Fixed Cost (0.6M, Bn128 Mul 32 Byte Coord And Scalar) | 600,000 | 1,477,226 | 25,744 | 25.74 | 9,185,740 | 9,180,484.6 | 9,175,004 | +| Precompile Fixed Cost (0.6M, Bn128 Mul Infinities 2 Scalar) | 600,000 | 1,477,226 | 7,579 | 7.58 | 11,845,176 | 11,845,176 | 11,840,668 | +| Precompile Fixed Cost (0.6M, Bn128 Mul Infinities 32 Byte Scalar) | 600,000 | 1,477,226 | 18,188 | 18.19 | 2,682,596 | 2,682,596 | 2,661,124 | +| Precompile Fixed Cost (0.6M, Bn128 One Pairing) | 600,000 | 1,477,226 | 17,692 | 17.69 | 11,061,996 | 11,053,700 | 11,047,356 | +| Precompile Fixed Cost (0.6M, Bn128 Two Pairings) | 600,000 | 1,477,226 | 19,211 | 19.21 | 2,846,564 | 2,827,741.1 | 2,810,452 | +| Precompile Fixed Cost (0.6M, Bn128 Two Pairings Empty) | 600,000 | 1,477,226 | 6,065 | 6.07 | 14,049,700 | 14,043,356 | 14,035,060 | +| Precompile Fixed Cost (0.6M, Ecrecover) | 600,000 | 1,477,226 | 12,628 | 12.63 | 9,448,632 | 9,445,460 | 9,443,752 | +| Precompile Fixed Cost (0.6M, Point Evaluation) | 600,000 | 1,477,226 | 219,183 | 219.18 | 9,827,332 | 9,809,704.6 | 9,744,204 | +| Precompile Only Data Input (0.6M, Identity) | 600,000 | 1,477,226 | 7,576 | 7.58 | 3,374,576 | 3,369,940 | 3,366,768 | +| Precompile Only Data Input (0.6M, Ripemd, 160) | 600,000 | 1,477,226 | 6,567 | 6.57 | 3,917,212 | 3,915,016 | 3,910,380 | +| Precompile Only Data Input (0.6M, Sha2, 256) | 600,000 | 1,477,226 | 11,603 | 11.60 | 3,272,100 | 3,248,920 | 3,239,892 | +| Push (0.6M, Push0) | 600,000 | 1,477,226 | 8,586 | 8.59 | 9,420,568 | 9,419,204.8 | 9,408,872 | +| Push (0.6M, Push10) | 600,000 | 1,477,226 | 8,080 | 8.08 | 9,696,516 | 9,693,832 | 9,690,660 | +| Push (0.6M, Push11) | 600,000 | 1,477,226 | 9,096 | 9.10 | 2,991,012 | 2,985,481.3 | 2,975,396 | +| Push (0.6M, Push12) | 600,000 | 1,477,226 | 8,562 | 8.56 | 4,808,284 | 4,808,284 | 4,800,476 | +| Push (0.6M, Push13) | 600,000 | 1,477,226 | 9,108 | 9.11 | 12,833,192 | 12,821,824.7 | 12,810,324 | +| Push (0.6M, Push14) | 600,000 | 1,477,226 | 8,601 | 8.60 | 832,144 | 815,207.5 | 796,032 | +| Push (0.6M, Push15) | 600,000 | 1,477,226 | 9,094 | 9.09 | 13,287,568 | 13,287,568 | 13,267,072 | +| Push (0.6M, Push16) | 600,000 | 1,477,226 | 8,575 | 8.57 | 11,540,724 | 11,540,548 | 11,539,396 | +| Push (0.6M, Push17) | 600,000 | 1,477,226 | 9,107 | 9.11 | 9,837,656 | 9,834,751.6 | 9,829,848 | +| Push (0.6M, Push18) | 600,000 | 1,477,226 | 8,587 | 8.59 | 4,408,132 | 4,404,785.7 | 4,397,396 | +| Push (0.6M, Push19) | 600,000 | 1,477,226 | 9,095 | 9.10 | 5,955,072 | 5,953,120 | 5,946,288 | +| Push (0.6M, Push1) | 600,000 | 1,477,226 | 7,062 | 7.06 | 4,858,060 | 4,854,156 | 4,843,420 | +| Push (0.6M, Push20) | 600,000 | 1,477,226 | 8,591 | 8.59 | 3,010,532 | 3,008,580 | 2,991,988 | +| Push (0.6M, Push21) | 600,000 | 1,477,226 | 9,095 | 9.10 | 5,350,932 | 5,340,684 | 5,328,484 | +| Push (0.6M, Push22) | 600,000 | 1,477,226 | 9,599 | 9.60 | 12,359,492 | 12,357,181.3 | 12,348,656 | +| Push (0.6M, Push23) | 600,000 | 1,477,226 | 10,099 | 10.10 | 9,702,368 | 9,700,276.6 | 9,695,536 | +| Push (0.6M, Push24) | 600,000 | 1,477,226 | 10,104 | 10.10 | 7,150,648 | 7,126,085.3 | 7,114,536 | +| Push (0.6M, Push25) | 600,000 | 1,477,226 | 10,095 | 10.10 | 6,484,052 | 6,474,292 | 6,464,532 | +| Push (0.6M, Push26) | 600,000 | 1,477,226 | 9,599 | 9.60 | 5,101,080 | 5,092,435.4 | 5,080,584 | +| Push (0.6M, Push27) | 600,000 | 1,477,226 | 10,603 | 10.60 | 11,165,632 | 11,162,899.2 | 11,154,896 | +| Push (0.6M, Push28) | 600,000 | 1,477,226 | 10,099 | 10.10 | 12,935,040 | 12,931,136 | 12,924,304 | +| Push (0.6M, Push29) | 600,000 | 1,477,226 | 10,102 | 10.10 | 10,440,276 | 10,434,582.7 | 10,424,660 | +| Push (0.6M, Push2) | 600,000 | 1,477,226 | 7,579 | 7.58 | 4,245,148 | 4,243,684 | 4,236,364 | +| Push (0.6M, Push30) | 600,000 | 1,477,226 | 9,594 | 9.59 | 10,091,808 | 10,089,042.7 | 10,084,000 | +| Push (0.6M, Push31) | 600,000 | 1,477,226 | 10,592 | 10.59 | 10,011,740 | 9,998,856 | 10,011,740 | +| Push (0.6M, Push32) | 600,000 | 1,477,226 | 10,094 | 10.09 | 6,752,452 | 6,745,341.1 | 6,737,812 | +| Push (0.6M, Push3) | 600,000 | 1,477,226 | 7,066 | 7.07 | 5,804,768 | 5,804,768 | 5,772,560 | +| Push (0.6M, Push4) | 600,000 | 1,477,226 | 8,609 | 8.61 | 4,792,672 | 4,788,962.4 | 4,773,152 | +| Push (0.6M, Push5) | 600,000 | 1,477,226 | 7,569 | 7.57 | 11,759,404 | 11,755,012 | 11,749,644 | +| Push (0.6M, Push6) | 600,000 | 1,477,226 | 8,594 | 8.59 | 5,480,740 | 5,473,094.7 | 5,468,052 | +| Push (0.6M, Push7) | 600,000 | 1,477,226 | 8,601 | 8.60 | 6,604,100 | 6,602,733.6 | 6,596,292 | +| Push (0.6M, Push8) | 600,000 | 1,477,226 | 8,076 | 8.08 | 4,340,796 | 4,339,820 | 4,335,916 | +| Push (0.6M, Push9) | 600,000 | 1,477,226 | 7,595 | 7.59 | 1,139,580 | 1,126,194.9 | 1,103,468 | +| Return Revert (0.6M, 1Kib Of Non, Zero Data, Return) | 600,000 | 1,477,226 | 9,099 | 9.10 | 8,204,708 | 8,199,068.9 | 8,192,020 | +| Return Revert (0.6M, 1Kib Of Non, Zero Data, Revert) | 600,000 | 1,477,226 | 9,572 | 9.57 | 8,186,164 | 8,175,232.8 | 8,164,692 | +| Return Revert (0.6M, 1Kib Of Zero Data, Return) | 600,000 | 1,477,226 | 9,596 | 9.60 | 878,992 | 871,184 | 850,688 | +| Return Revert (0.6M, 1Kib Of Zero Data, Revert) | 600,000 | 1,477,226 | 10,113 | 10.11 | 6,769,044 | 6,758,865.7 | 6,755,380 | +| Return Revert (0.6M, 1Mib Of Non, Zero Data, Return) | 600,000 | 1,477,226 | 6,075 | 6.08 | 8,517,060 | 8,514,864 | 8,507,300 | +| Return Revert (0.6M, 1Mib Of Non, Zero Data, Revert) | 600,000 | 1,477,226 | 6,053 | 6.05 | 1,100,540 | 1,090,919.4 | 1,074,188 | +| Return Revert (0.6M, 1Mib Of Zero Data, Return) | 600,000 | 1,477,226 | 6,569 | 6.57 | 1,729,076 | 1,729,076 | 1,713,460 | +| Return Revert (0.6M, 1Mib Of Zero Data, Revert) | 600,000 | 1,477,226 | 6,076 | 6.08 | 10,875,596 | 10,874,132 | 10,871,692 | +| Return Revert (0.6M, Empty, Return) | 600,000 | 1,477,226 | 10,643 | 10.64 | 12,201,216 | 12,197,091.3 | 12,190,636 | +| Return Revert (0.6M, Empty, Revert) | 600,000 | 1,477,226 | 12,113 | 12.11 | 9,914,500 | 9,912,796 | 9,908,652 | +| Returndatasize Nonzero (0.6M, Returned Size 0, Return Data Style Returndatastyle.Identity) | 600,000 | 1,477,226 | 8,084 | 8.08 | 9,503,308 | 9,501,356 | 9,496,476 | +| Returndatasize Nonzero (0.6M, Returned Size 0, Return Data Style Returndatastyle.Return) | 600,000 | 1,477,226 | 8,595 | 8.60 | 4,195,372 | 4,193,141.1 | 4,187,564 | +| Returndatasize Nonzero (0.6M, Returned Size 0, Return Data Style Returndatastyle.Revert) | 600,000 | 1,477,226 | 8,572 | 8.57 | 2,218,036 | 2,209,496 | 2,194,612 | +| Returndatasize Nonzero (0.6M, Returned Size 1, Return Data Style Returndatastyle.Identity) | 600,000 | 1,477,226 | 8,573 | 8.57 | 10,029,784 | 10,027,664 | 10,023,592 | +| Returndatasize Nonzero (0.6M, Returned Size 1, Return Data Style Returndatastyle.Return) | 600,000 | 1,477,226 | 8,074 | 8.07 | 12,466,356 | 12,460,988 | 12,461,176 | +| Returndatasize Nonzero (0.6M, Returned Size 1, Return Data Style Returndatastyle.Revert) | 600,000 | 1,477,226 | 8,069 | 8.07 | 1,203,020 | 1,185,312.6 | 1,163,004 | +| Returndatasize Zero (0.6M) | 600,000 | 1,477,226 | 8,067 | 8.07 | 7,949,980 | 7,935,177.3 | 7,917,772 | +| Shifts (0.6M, Shift Right Sar) | 600,000 | 1,477,226 | 10,098 | 10.10 | 9,881,780 | 9,879,925.6 | 9,869,092 | +| Shifts (0.6M, Shift Right Shr) | 600,000 | 1,477,226 | 10,128 | 10.13 | 9,621,984 | 9,616,290.7 | 9,607,344 | +| Swap (0.6M, Swap10) | 600,000 | 1,477,226 | 10,620 | 10.62 | 1,955,500 | 1,948,528.6 | 1,939,884 | +| Swap (0.6M, Swap11) | 600,000 | 1,477,226 | 10,597 | 10.60 | 5,771,584 | 5,765,972 | 5,758,896 | +| Swap (0.6M, Swap12) | 600,000 | 1,477,226 | 10,633 | 10.63 | 13,350,028 | 13,344,782 | 13,337,340 | +| Swap (0.6M, Swap13) | 600,000 | 1,477,226 | 11,118 | 11.12 | 12,309,616 | 12,309,616 | 12,299,856 | +| Swap (0.6M, Swap14) | 600,000 | 1,477,226 | 11,102 | 11.10 | 7,344,872 | 7,344,872 | 7,342,920 | +| Swap (0.6M, Swap15) | 600,000 | 1,477,226 | 11,090 | 11.09 | 11,947,220 | 11,942,828 | 11,928,676 | +| Swap (0.6M, Swap16) | 600,000 | 1,477,226 | 10,613 | 10.61 | 1,523,144 | 1,518,508 | 1,494,840 | +| Swap (0.6M, Swap1) | 600,000 | 1,477,226 | 10,614 | 10.61 | 10,256,536 | 10,253,486 | 10,246,776 | +| Swap (0.6M, Swap2) | 600,000 | 1,477,226 | 10,628 | 10.63 | 4,397,400 | 4,396,563.4 | 4,391,544 | +| Swap (0.6M, Swap3) | 600,000 | 1,477,226 | 10,619 | 10.62 | 10,182,600 | 10,179,475.3 | 10,177,720 | +| Swap (0.6M, Swap4) | 600,000 | 1,477,226 | 10,586 | 10.59 | 6,264,452 | 6,261,914.4 | 6,252,740 | +| Swap (0.6M, Swap5) | 600,000 | 1,477,226 | 10,605 | 10.61 | 8,595,136 | 8,591,720 | 8,584,400 | +| Swap (0.6M, Swap6) | 600,000 | 1,477,226 | 10,614 | 10.61 | 12,013,092 | 12,009,056.8 | 11,999,588 | +| Swap (0.6M, Swap7) | 600,000 | 1,477,226 | 10,614 | 10.61 | 2,246,340 | 2,242,110.7 | 2,236,580 | +| Swap (0.6M, Swap8) | 600,000 | 1,477,226 | 10,597 | 10.60 | 4,464,736 | 4,462,052 | 4,453,024 | +| Swap (0.6M, Swap9) | 600,000 | 1,477,226 | 11,124 | 11.12 | 12,676,456 | 12,667,997.3 | 12,649,128 | +| Tload (0.6M, Val Mut False, Key Mut False) | 600,000 | 1,477,226 | 6,066 | 6.07 | 11,636,548 | 11,629,520.8 | 11,623,860 | +| Tload (0.6M, Val Mut False, Key Mut True) | 600,000 | 1,477,226 | 6,566 | 6.57 | 6,637,284 | 6,631,985.7 | 6,630,452 | +| Tload (0.6M, Val Mut True, Key Mut False) | 600,000 | 1,477,226 | 6,571 | 6.57 | 10,023,592 | 10,023,592 | 10,023,592 | +| Tload (0.6M, Val Mut True, Key Mut True) | 600,000 | 1,477,226 | 6,567 | 6.57 | 2,327,348 | 2,322,956 | 2,306,852 | +| Tstore (0.6M, Dense Val Mut False, Key Mut False) | 600,000 | 1,477,226 | 7,587 | 7.59 | 3,278,932 | 3,278,932 | 3,273,076 | +| Tstore (0.6M, Dense Val Mut False, Key Mut True) | 600,000 | 1,477,226 | 7,091 | 7.09 | 11,313,144 | 11,310,773.7 | 11,306,312 | +| Tstore (0.6M, Dense Val Mut True, Key Mut False) | 600,000 | 1,477,226 | 8,093 | 8.09 | 8,641,984 | 8,638,324 | 8,630,272 | +| Tstore (0.6M, Dense Val Mut True, Key Mut True) | 600,000 | 1,477,226 | 8,577 | 8.58 | 11,774,044 | 11,772,417.3 | 11,762,332 | +| Unop (0.6M, Iszero) | 600,000 | 1,477,226 | 12,116 | 12.12 | 11,005,716 | 11,003,564.9 | 11,003,764 | +| Unop (0.6M, Not) | 600,000 | 1,477,226 | 7,076 | 7.08 | 5,320,676 | 5,309,208 | 5,302,132 | +| Zero Param (0.6M, Address) | 600,000 | 1,477,226 | 10,617 | 10.62 | 11,186,128 | 11,178,862.2 | 11,166,608 | +| Zero Param (0.6M, Basefee) | 600,000 | 1,477,226 | 9,087 | 9.09 | 1,378,696 | 1,363,690 | 1,348,440 | +| Zero Param (0.6M, Blobbasefee) | 600,000 | 1,477,226 | 10,654 | 10.65 | 5,974,592 | 5,970,688 | 5,956,048 | +| Zero Param (0.6M, Caller) | 600,000 | 1,477,226 | 10,608 | 10.61 | 7,055,000 | 7,055,000 | 7,019,864 | +| Zero Param (0.6M, Chainid) | 600,000 | 1,477,226 | 8,582 | 8.58 | 9,115,532 | 9,115,532 | 9,112,604 | +| Zero Param (0.6M, Codesize) | 600,000 | 1,477,226 | 8,594 | 8.59 | 4,035,308 | 4,031,013.6 | 4,024,572 | +| Zero Param (0.6M, Coinbase) | 600,000 | 1,477,226 | 10,119 | 10.12 | 11,663,876 | 11,658,624.7 | 11,636,548 | +| Zero Param (0.6M, Gaslimit) | 600,000 | 1,477,226 | 8,570 | 8.57 | 3,076,900 | 3,071,044 | 3,059,332 | +| Zero Param (0.6M, Gasprice) | 600,000 | 1,477,226 | 9,592 | 9.59 | 3,290,644 | 3,287,716 | 3,279,908 | +| Zero Param (0.6M, Gas) | 600,000 | 1,477,226 | 9,088 | 9.09 | 7,567,392 | 7,560,072 | 7,550,800 | +| Zero Param (0.6M, Number) | 600,000 | 1,477,226 | 10,127 | 10.13 | 7,447,352 | 7,436,616 | 7,429,784 | +| Zero Param (0.6M, Origin) | 600,000 | 1,477,226 | 10,081 | 10.08 | 2,473,748 | 2,467,892 | 2,458,132 | +| Zero Param (0.6M, Prevrandao) | 600,000 | 1,477,226 | 13,122 | 13.12 | 8,629,296 | 8,623,049.6 | 8,612,704 | +| Zero Param (0.6M, Timestamp) | 600,000 | 1,477,226 | 9,589 | 9.59 | 7,017,916 | 7,016,614.7 | 7,012,060 | +| Calldatacopy (0.6M, Zero Data, Dynamic Src Dst, 0Bytes, Call) | 600,000 | 1,477,226 | 10,116 | 10.12 | 6,736,836 | 6,729,516 | 6,725,124 | +| Calldatacopy (0.6M, Zero Data, Dynamic Src Dst, 0Bytes, Transaction) | 600,000 | 1,477,226 | 10,123 | 10.12 | 9,607,344 | 9,603,277.3 | 9,599,536 | +| Calldatacopy (0.6M, Zero Data, Dynamic Src Dst, 100Bytes, Call) | 600,000 | 1,477,226 | 9,098 | 9.10 | 12,001,068 | 11,999,722 | 11,996,188 | +| Calldatacopy (0.6M, Zero Data, Dynamic Src Dst, 100Bytes, Transaction) | 600,000 | 1,477,226 | 8,078 | 8.08 | 5,063,016 | 5,061,649.6 | 5,059,112 | +| Calldatacopy (0.6M, Zero Data, Dynamic Src Dst, 10Kib, Call) | 600,000 | 1,477,226 | 6,584 | 6.58 | 13,695,560 | 13,685,102.9 | 13,667,256 | +| Calldatacopy (0.6M, Zero Data, Dynamic Src Dst, 10Kib, Transaction) | 600,000 | 1,477,226 | 6,574 | 6.57 | 6,689,988 | 6,689,012 | 6,687,060 | +| Calldatacopy (0.6M, Zero Data, Dynamic Src Dst, 1Mib, Call) | 600,000 | 1,477,226 | 6,074 | 6.07 | 4,413,008 | 4,412,227.2 | 4,407,152 | +| Calldatacopy (0.6M, Zero Data, Dynamic Src Dst, 1Mib, Transaction) | 600,000 | 1,477,226 | 6,061 | 6.06 | 2,192,660 | 2,182,621.1 | 2,169,236 | +| Calldatacopy (0.6M, Zero Data, Fixed Src Dst, 0Bytes, Call) | 600,000 | 1,477,226 | 8,107 | 8.11 | 9,441,064 | 9,432,670.4 | 9,422,520 | +| Calldatacopy (0.6M, Zero Data, Fixed Src Dst, 0Bytes, Transaction) | 600,000 | 1,477,226 | 8,076 | 8.08 | 13,625,292 | 13,625,292 | 13,617,484 | +| Calldatacopy (0.6M, Zero Data, Fixed Src Dst, 100Bytes, Call) | 600,000 | 1,477,226 | 7,078 | 7.08 | 1,892,064 | 1,880,352 | 1,871,568 | +| Calldatacopy (0.6M, Zero Data, Fixed Src Dst, 100Bytes, Transaction) | 600,000 | 1,477,226 | 7,587 | 7.59 | 4,523,296 | 4,523,296 | 4,512,560 | +| Calldatacopy (0.6M, Zero Data, Fixed Src Dst, 10Kib, Call) | 600,000 | 1,477,226 | 7,061 | 7.06 | 12,082,248 | 12,079,808 | 12,070,536 | +| Calldatacopy (0.6M, Zero Data, Fixed Src Dst, 10Kib, Transaction) | 600,000 | 1,477,226 | 6,073 | 6.07 | 581,316 | 577,751.5 | 565,700 | +| Calldatacopy (0.6M, Zero Data, Fixed Src Dst, 1Mib, Call) | 600,000 | 1,477,226 | 5,543 | 5.54 | 10,426,832 | 10,423,180 | 10,414,144 | +| Calldatacopy (0.6M, Zero Data, Fixed Src Dst, 1Mib, Transaction) | 600,000 | 1,477,226 | 6,556 | 6.56 | 5,303,108 | 5,302,620 | 5,297,252 | +| Calldatacopy (0.6M, Non Zero, Dynamic Src Dst, 100Bytes, Call) | 600,000 | 1,477,226 | 8,574 | 8.57 | 5,852,592 | 5,847,516.8 | 5,841,856 | +| Calldatacopy (0.6M, Non Zero, Dynamic Src Dst, 100Bytes, Transaction) | 600,000 | 1,477,226 | 9,093 | 9.09 | 12,144,948 | 12,144,948 | 12,135,404 | +| Calldatacopy (0.6M, Non Zero, Dynamic Src Dst, 10Kib, Call) | 600,000 | 1,477,226 | 7,573 | 7.57 | 11,076,340 | 11,073,900 | 11,061,996 | +| Calldatacopy (0.6M, Non Zero, Dynamic Src Dst, 10Kib, Transaction) | 600,000 | 1,477,226 | 7,094 | 7.09 | 6,324,964 | 6,324,964 | 6,322,036 | +| Calldatacopy (0.6M, Non Zero, Fixed Src Dst, 100Bytes, Call) | 600,000 | 1,477,226 | 7,060 | 7.06 | 3,742,508 | 3,742,508 | 3,719,084 | +| Calldatacopy (0.6M, Non Zero, Fixed Src Dst, 100Bytes, Transaction) | 600,000 | 1,477,226 | 7,561 | 7.56 | 7,576,176 | 7,573,443.2 | 7,567,392 | +| Calldatacopy (0.6M, Non Zero, Fixed Src Dst, 10Kib, Call) | 600,000 | 1,477,226 | 7,565 | 7.57 | 6,612,884 | 6,612,884 | 6,604,100 | +| Calldatacopy (0.6M, Non Zero, Fixed Src Dst, 10Kib, Transaction) | 600,000 | 1,477,226 | 7,056 | 7.06 | 10,384,112 | 10,378,970 | 10,369,936 | +| Codecopy (0.6M, Dynamic Src Dst, 0Bytes) | 600,000 | 1,477,226 | 9,602 | 9.60 | 11,581,716 | 11,565,015.6 | 11,554,388 | +| Codecopy (0.6M, Dynamic Src Dst, 0.25X Max Code) | 600,000 | 1,477,226 | 7,063 | 7.06 | 7,185,784 | 7,179,147.2 | 7,169,192 | +| Codecopy (0.6M, Dynamic Src Dst, 0.50X Max Code Size) | 600,000 | 1,477,226 | 7,584 | 7.58 | 1,073,212 | 1,061,825.3 | 1,038,076 | +| Codecopy (0.6M, Dynamic Src Dst, 0.75X Max Code Size) | 600,000 | 1,477,226 | 7,072 | 7.07 | 2,168,260 | 2,159,964 | 2,144,836 | +| Codecopy (0.6M, Dynamic Src Dst, Max Code) | 600,000 | 1,477,226 | 7,090 | 7.09 | 10,359,144 | 10,359,144 | 10,358,168 | +| Codecopy (0.6M, Fixed Src Dst, 0Bytes) | 600,000 | 1,477,226 | 8,081 | 8.08 | 5,810,624 | 5,809,160 | 5,807,696 | +| Codecopy (0.6M, Fixed Src Dst, 0.25X Max Code) | 600,000 | 1,477,226 | 7,061 | 7.06 | 7,697,196 | 7,686,599.4 | 7,670,844 | +| Codecopy (0.6M, Fixed Src Dst, 0.50X Max Code Size) | 600,000 | 1,477,226 | 7,567 | 7.57 | 4,710,688 | 4,704,832 | 4,688,240 | +| Codecopy (0.6M, Fixed Src Dst, 0.75X Max Code Size) | 600,000 | 1,477,226 | 7,574 | 7.57 | 10,331,816 | 10,331,490.7 | 10,328,888 | +| Codecopy (0.6M, Fixed Src Dst, Max Code) | 600,000 | 1,477,226 | 7,575 | 7.58 | 10,058,008 | 10,057,097 | 10,050,200 | +| Mcopy (0.6M, Dynamic Src Dst, 0Bytes) | 600,000 | 1,477,226 | 10,109 | 10.11 | 5,463,172 | 5,460,976 | 5,441,700 | +| Mcopy (0.6M, Dynamic Src Dst, 100Bytes) | 600,000 | 1,477,226 | 8,618 | 8.62 | 13,707,272 | 13,702,825.8 | 13,696,536 | +| Mcopy (0.6M, Dynamic Src Dst, 10Kib) | 600,000 | 1,477,226 | 8,079 | 8.08 | 3,032,004 | 3,024,196 | 3,011,508 | +| Mcopy (0.6M, Dynamic Src Dst, 1Mib) | 600,000 | 1,477,226 | 6,558 | 6.56 | 11,728,064 | 11,721,554.7 | 11,708,544 | +| Mcopy (0.6M, Fixed Src Dst, 0Bytes) | 600,000 | 1,477,226 | 8,086 | 8.09 | 850,688 | 844,832 | 833,120 | +| Mcopy (0.6M, Fixed Src Dst, 100Bytes) | 600,000 | 1,477,226 | 8,070 | 8.07 | 11,581,716 | 11,577,268 | 11,581,716 | +| Mcopy (0.6M, Fixed Src Dst, 10Kib) | 600,000 | 1,477,226 | 7,089 | 7.09 | 5,757,920 | 5,755,968 | 5,751,088 | +| Mcopy (0.6M, Fixed Src Dst, 1Mib) | 600,000 | 1,477,226 | 6,059 | 6.06 | 4,390,568 | 4,390,568 | 4,379,832 | +| Returndatacopy (0.6M, Fixed Dst False, 0Bytes) | 600,000 | 1,477,226 | 9,582 | 9.58 | 8,584,400 | 8,581,146.7 | 8,576,592 | +| Returndatacopy (0.6M, Fixed Dst False, 100Bytes) | 600,000 | 1,477,226 | 8,595 | 8.60 | 7,589,840 | 7,588,864 | 7,582,032 | +| Returndatacopy (0.6M, Fixed Dst False, 10Kib) | 600,000 | 1,477,226 | 7,079 | 7.08 | 9,072,588 | 9,069,520 | 9,066,220 | +| Returndatacopy (0.6M, Fixed Dst False, 1Mib) | 600,000 | 1,477,226 | 6,566 | 6.57 | 9,125,292 | 9,122,224.6 | 9,116,508 | +| Returndatacopy (0.6M, Fixed Dst True, 0Bytes) | 600,000 | 1,477,226 | 8,580 | 8.58 | 4,442,288 | 4,435,781.3 | 4,420,816 | +| Returndatacopy (0.6M, Fixed Dst True, 100Bytes) | 600,000 | 1,477,226 | 7,083 | 7.08 | 12,872,520 | 12,872,520 | 12,869,592 | +| Returndatacopy (0.6M, Fixed Dst True, 10Kib) | 600,000 | 1,477,226 | 7,066 | 7.07 | 5,884,800 | 5,884,800 | 5,879,920 | +| Returndatacopy (0.6M, Fixed Dst True, 1Mib) | 600,000 | 1,477,226 | 5,555 | 5.55 | 2,097,988 | 2,092,620 | 2,086,276 | +| Log Opcodes (0.6M, Dynamic, Non Zero Topic, 0 Bytes Data, Log0) | 600,000 | 1,477,226 | 7,062 | 7.06 | 1,740,788 | 1,736,396 | 1,730,052 | +| Log Opcodes (0.6M, Dynamic, Non Zero Topic, 0 Bytes Data, Log1) | 600,000 | 1,477,226 | 6,063 | 6.06 | 3,677,120 | 3,677,120 | 3,672,240 | +| Log Opcodes (0.6M, Dynamic, Non Zero Topic, 0 Bytes Data, Log2) | 600,000 | 1,477,226 | 7,068 | 7.07 | 8,783,648 | 8,782,509.3 | 8,780,720 | +| Log Opcodes (0.6M, Dynamic, Non Zero Topic, 0 Bytes Data, Log3) | 600,000 | 1,477,226 | 6,055 | 6.05 | 13,647,740 | 13,647,544 | 13,647,740 | +| Log Opcodes (0.6M, Dynamic, Non Zero Topic, 0 Bytes Data, Log4) | 600,000 | 1,477,226 | 6,053 | 6.05 | 9,860,300 | 9,859,568 | 9,857,372 | +| Log Opcodes (0.6M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log0) | 600,000 | 1,477,226 | 6,066 | 6.07 | 4,687,264 | 4,684,824 | 4,679,456 | +| Log Opcodes (0.6M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log1) | 600,000 | 1,477,226 | 6,049 | 6.05 | 2,585,972 | 2,579,384 | 2,576,212 | +| Log Opcodes (0.6M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log2) | 600,000 | 1,477,226 | 5,566 | 5.57 | 12,416,756 | 12,408,950.7 | 12,397,240 | +| Log Opcodes (0.6M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log3) | 600,000 | 1,477,226 | 6,056 | 6.06 | 6,332,772 | 6,332,772 | 6,326,916 | +| Log Opcodes (0.6M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log4) | 600,000 | 1,477,226 | 5,546 | 5.55 | 2,957,828 | 2,949,857.3 | 2,944,164 | +| Log Opcodes (0.6M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log0) | 600,000 | 1,477,226 | 6,055 | 6.05 | 6,946,668 | 6,942,767.2 | 6,936,912 | +| Log Opcodes (0.6M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log1) | 600,000 | 1,477,226 | 6,067 | 6.07 | 13,351,980 | 13,351,980 | 13,350,028 | +| Log Opcodes (0.6M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log2) | 600,000 | 1,477,226 | 6,053 | 6.05 | 8,553,172 | 8,549,756 | 8,544,388 | +| Log Opcodes (0.6M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log3) | 600,000 | 1,477,226 | 6,560 | 6.56 | 4,175,852 | 4,171,216 | 4,164,140 | +| Log Opcodes (0.6M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log4) | 600,000 | 1,477,226 | 6,064 | 6.06 | 7,898,252 | 7,898,252 | 7,893,372 | +| Log Opcodes (0.6M, Dynamic, Zero Topic, 0 Bytes Data, Log0) | 600,000 | 1,477,226 | 6,052 | 6.05 | 8,612,704 | 8,604,245.3 | 8,597,088 | +| Log Opcodes (0.6M, Dynamic, Zero Topic, 0 Bytes Data, Log1) | 600,000 | 1,477,226 | 7,063 | 7.06 | 12,746,188 | 12,740,006.7 | 12,730,572 | +| Log Opcodes (0.6M, Dynamic, Zero Topic, 0 Bytes Data, Log2) | 600,000 | 1,477,226 | 7,071 | 7.07 | 9,374,512 | 9,369,873.3 | 9,363,776 | +| Log Opcodes (0.6M, Dynamic, Zero Topic, 0 Bytes Data, Log3) | 600,000 | 1,477,226 | 6,058 | 6.06 | 2,229,748 | 2,225,844 | 2,219,012 | +| Log Opcodes (0.6M, Dynamic, Zero Topic, 0 Bytes Data, Log4) | 600,000 | 1,477,226 | 5,558 | 5.56 | 9,375,968 | 9,370,925.3 | 9,367,428 | +| Log Opcodes (0.6M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log0) | 600,000 | 1,477,226 | 6,065 | 6.07 | 10,658,760 | 10,657,296 | 10,651,928 | +| Log Opcodes (0.6M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log1) | 600,000 | 1,477,226 | 6,055 | 6.05 | 2,544,012 | 2,537,180 | 2,526,444 | +| Log Opcodes (0.6M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log2) | 600,000 | 1,477,226 | 6,062 | 6.06 | 11,264,188 | 11,264,188 | 11,260,284 | +| Log Opcodes (0.6M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log3) | 600,000 | 1,477,226 | 7,058 | 7.06 | 11,289,560 | 11,283,899.2 | 11,274,920 | +| Log Opcodes (0.6M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log4) | 600,000 | 1,477,226 | 6,055 | 6.05 | 8,653,696 | 8,649,548 | 8,641,984 | +| Log Opcodes (0.6M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log0) | 600,000 | 1,477,226 | 6,548 | 6.55 | 10,668,520 | 10,665,592 | 10,661,688 | +| Log Opcodes (0.6M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log1) | 600,000 | 1,477,226 | 6,064 | 6.06 | 6,683,156 | 6,683,156 | 6,674,372 | +| Log Opcodes (0.6M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log2) | 600,000 | 1,477,226 | 6,563 | 6.56 | 10,649,976 | 10,647,633.6 | 10,646,072 | +| Log Opcodes (0.6M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log3) | 600,000 | 1,477,226 | 5,558 | 5.56 | 11,552,436 | 11,552,436 | 11,541,700 | +| Log Opcodes (0.6M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log4) | 600,000 | 1,477,226 | 6,067 | 6.07 | 4,235,388 | 4,235,388 | 4,230,508 | +| Log Opcodes (0.6M, Fixed, Non Zero Topic, 0 Bytes Data, Log0) | 600,000 | 1,477,226 | 6,564 | 6.56 | 4,266,620 | 4,261,414.7 | 4,256,860 | +| Log Opcodes (0.6M, Fixed, Non Zero Topic, 0 Bytes Data, Log1) | 600,000 | 1,477,226 | 6,566 | 6.57 | 6,073,164 | 6,071,212 | 6,068,284 | +| Log Opcodes (0.6M, Fixed, Non Zero Topic, 0 Bytes Data, Log2) | 600,000 | 1,477,226 | 6,561 | 6.56 | 8,779,744 | 8,774,376 | 8,766,080 | +| Log Opcodes (0.6M, Fixed, Non Zero Topic, 0 Bytes Data, Log3) | 600,000 | 1,477,226 | 6,051 | 6.05 | 3,428,240 | 3,427,589.3 | 3,418,480 | +| Log Opcodes (0.6M, Fixed, Non Zero Topic, 0 Bytes Data, Log4) | 600,000 | 1,477,226 | 6,578 | 6.58 | 3,702,496 | 3,696,965.3 | 3,689,808 | +| Log Opcodes (0.6M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log0) | 600,000 | 1,477,226 | 6,051 | 6.05 | 5,325,556 | 5,325,556 | 5,321,652 | +| Log Opcodes (0.6M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log1) | 600,000 | 1,477,226 | 6,060 | 6.06 | 3,717,136 | 3,711,280 | 3,701,520 | +| Log Opcodes (0.6M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log2) | 600,000 | 1,477,226 | 6,067 | 6.07 | 1,903,772 | 1,899,477.6 | 1,891,084 | +| Log Opcodes (0.6M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log3) | 600,000 | 1,477,226 | 5,557 | 5.56 | 11,024,284 | 11,023,633.3 | 11,016,476 | +| Log Opcodes (0.6M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log4) | 600,000 | 1,477,226 | 6,053 | 6.05 | 13,610,652 | 13,608,296.8 | 13,602,584 | +| Log Opcodes (0.6M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log0) | 600,000 | 1,477,226 | 6,592 | 6.59 | 2,011,132 | 2,003,742.3 | 1,996,492 | +| Log Opcodes (0.6M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log1) | 600,000 | 1,477,226 | 6,069 | 6.07 | 903,392 | 895,779.2 | 879,968 | +| Log Opcodes (0.6M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log2) | 600,000 | 1,477,226 | 5,540 | 5.54 | 10,409,488 | 10,408,186.7 | 10,401,680 | +| Log Opcodes (0.6M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log3) | 600,000 | 1,477,226 | 6,056 | 6.06 | 1,241,084 | 1,228,721.3 | 1,207,900 | +| Log Opcodes (0.6M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log4) | 600,000 | 1,477,226 | 6,072 | 6.07 | 10,702,844 | 10,702,063.2 | 10,695,036 | +| Log Opcodes (0.6M, Fixed, Zero Topic, 0 Bytes Data, Log0) | 600,000 | 1,477,226 | 6,058 | 6.06 | 10,397,776 | 10,394,848 | 10,384,112 | +| Log Opcodes (0.6M, Fixed, Zero Topic, 0 Bytes Data, Log1) | 600,000 | 1,477,226 | 6,054 | 6.05 | 6,203,948 | 6,201,996 | 6,196,140 | +| Log Opcodes (0.6M, Fixed, Zero Topic, 0 Bytes Data, Log2) | 600,000 | 1,477,226 | 6,056 | 6.06 | 3,956,252 | 3,956,252 | 3,954,300 | +| Log Opcodes (0.6M, Fixed, Zero Topic, 0 Bytes Data, Log3) | 600,000 | 1,477,226 | 6,074 | 6.07 | 11,002,788 | 11,000,348 | 10,985,240 | +| Log Opcodes (0.6M, Fixed, Zero Topic, 0 Bytes Data, Log4) | 600,000 | 1,477,226 | 6,042 | 6.04 | 6,674,372 | 6,671,444 | 6,667,540 | +| Log Opcodes (0.6M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log0) | 600,000 | 1,477,226 | 6,066 | 6.07 | 9,143,836 | 9,140,908 | 9,137,980 | +| Log Opcodes (0.6M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log1) | 600,000 | 1,477,226 | 6,060 | 6.06 | 2,736,276 | 2,727,073.7 | 2,716,756 | +| Log Opcodes (0.6M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log2) | 600,000 | 1,477,226 | 6,068 | 6.07 | 4,819,996 | 4,816,580 | 4,808,284 | +| Log Opcodes (0.6M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log3) | 600,000 | 1,477,226 | 6,053 | 6.05 | 5,946,288 | 5,945,474.7 | 5,939,456 | +| Log Opcodes (0.6M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log4) | 600,000 | 1,477,226 | 6,550 | 6.55 | 7,579,104 | 7,578,778.7 | 7,577,152 | +| Log Opcodes (0.6M, Fixed, Zero Topic, 1 Mib Zeros Data, Log0) | 600,000 | 1,477,226 | 6,058 | 6.06 | 11,607,072 | 11,605,364 | 11,594,488 | +| Log Opcodes (0.6M, Fixed, Zero Topic, 1 Mib Zeros Data, Log1) | 600,000 | 1,477,226 | 6,061 | 6.06 | 8,526,820 | 8,526,820 | 8,524,868 | +| Log Opcodes (0.6M, Fixed, Zero Topic, 1 Mib Zeros Data, Log2) | 600,000 | 1,477,226 | 6,077 | 6.08 | 12,632,972 | 12,625,749.6 | 12,617,356 | +| Log Opcodes (0.6M, Fixed, Zero Topic, 1 Mib Zeros Data, Log3) | 600,000 | 1,477,226 | 6,049 | 6.05 | 9,901,908 | 9,899,926.7 | 9,891,172 | +| Log Opcodes (0.6M, Fixed, Zero Topic, 1 Mib Zeros Data, Log4) | 600,000 | 1,477,226 | 5,558 | 5.56 | 5,497,332 | 5,490,662.7 | 5,483,668 | +| Address State Cold (0.6M, Absent Accounts False, Balance) | 600,000 | 1,477,226 | 7,081 | 7.08 | 13,267,072 | 13,266,584 | 13,258,288 | +| Address State Cold (0.6M, Absent Accounts True, Balance) | 600,000 | 1,477,226 | 6,567 | 6.57 | 9,870,060 | 9,866,645.3 | 9,861,276 | +| Address State Warm (0.6M, Present Target, Balance) | 600,000 | 1,477,226 | 7,073 | 7.07 | 6,630,452 | 6,626,792 | 6,621,668 | +| Address State Warm (0.6M, Present Target, Callcode) | 600,000 | 1,477,226 | 10,645 | 10.64 | 1,551,444 | 1,542,443.1 | 1,525,092 | +| Address State Warm (0.6M, Present Target, Call) | 600,000 | 1,477,226 | 10,618 | 10.62 | 5,079,608 | 5,073,166.4 | 5,064,968 | +| Address State Warm (0.6M, Present Target, Delegatecall) | 600,000 | 1,477,226 | 10,109 | 10.11 | 10,107,596 | 10,104,599.2 | 10,093,760 | +| Address State Warm (0.6M, Present Target, Extcodehash) | 600,000 | 1,477,226 | 7,583 | 7.58 | 5,057,160 | 5,054,598 | 5,047,400 | +| Address State Warm (0.6M, Present Target, Extcodesize) | 600,000 | 1,477,226 | 7,052 | 7.05 | 14,209,856 | 14,208,380 | 14,206,928 | +| Address State Warm (0.6M, Present Target, Staticcall) | 600,000 | 1,477,226 | 10,622 | 10.62 | 11,852,980 | 11,841,853.6 | 11,833,080 | +| Address State Warm (0.6M, Absent Target, Balance) | 600,000 | 1,477,226 | 7,070 | 7.07 | 8,523,892 | 8,519,825.3 | 8,519,012 | +| Address State Warm (0.6M, Absent Target, Callcode) | 600,000 | 1,477,226 | 9,602 | 9.60 | 13,260,000 | 13,260,000 | 12,975,284 | +| Address State Warm (0.6M, Absent Target, Call) | 600,000 | 1,477,226 | 9,592 | 9.59 | 1,935,980 | 1,931,239.4 | 1,926,220 | +| Address State Warm (0.6M, Absent Target, Delegatecall) | 600,000 | 1,477,226 | 9,590 | 9.59 | 7,169,192 | 7,163,986.7 | 7,150,648 | +| Address State Warm (0.6M, Absent Target, Extcodehash) | 600,000 | 1,477,226 | 7,576 | 7.58 | 12,068,584 | 12,064,753.3 | 12,055,352 | +| Address State Warm (0.6M, Absent Target, Extcodesize) | 600,000 | 1,477,226 | 7,081 | 7.08 | 3,672,240 | 3,667,945.6 | 3,660,528 | +| Address State Warm (0.6M, Absent Target, Staticcall) | 600,000 | 1,477,226 | 10,092 | 10.09 | 7,110,632 | 7,109,656 | 7,099,896 | +| Blockhash (0.6M) | 600,000 | 1,477,226 | 8,065 | 8.06 | 14,268,400 | 14,264,077.7 | 14,254,736 | +| Extcodecopy Warm (0.6M, 1Kib) | 600,000 | 1,477,226 | 7,076 | 7.08 | 10,183,372 | 10,182,070.7 | 10,179,468 | +| Extcodecopy Warm (0.6M, 512) | 600,000 | 1,477,226 | 6,570 | 6.57 | 9,689,684 | 9,689,684 | 9,650,072 | +| Extcodecopy Warm (0.6M, 5Kib) | 600,000 | 1,477,226 | 7,073 | 7.07 | 4,314,444 | 4,314,444 | 4,313,468 | +| Selfbalance (0.6M) | 600,000 | 1,477,226 | 23,227 | 23.23 | 5,876,992 | 5,873,163.1 | 5,864,304 | +| Selfdestruct Created (0.6M, No Value) | 589,840 | 1,477,226 | 6,579 | 6.58 | 2,458,132 | 2,458,132 | 2,331,252 | +| Selfdestruct Created (0.6M, With Value) | 589,840 | 1,477,226 | 6,554 | 6.55 | 7,608,384 | 7,608,384 | 7,601,552 | +| Selfdestruct Existing (0.6M, No Value) | 597,331 | 1,477,226 | 6,069 | 6.07 | 4,773,152 | 4,764,693.3 | 4,751,680 | +| Selfdestruct Existing (0.6M, With Value) | 597,331 | 1,477,226 | 6,053 | 6.05 | 2,558,648 | 2,553,280 | 2,543,032 | +| Selfdestruct Initcode (0.6M, No Value) | 581,680 | 1,477,226 | 5,559 | 5.56 | 4,712,640 | 4,712,640 | 4,710,688 | +| Selfdestruct Initcode (0.6M, With Value) | 581,680 | 1,477,226 | 6,564 | 6.56 | 6,827,604 | 6,827,604 | 6,770,020 | +| Storage Access Cold (0.6M, Absent Slots False, Ssload) | 597,993 | 1,477,226 | 7,570 | 7.57 | 10,333,712 | 10,331,128 | 10,329,808 | +| Storage Access Cold (0.6M, Absent Slots False, Sstore New Value, Out Of Gas) | 600,000 | 1,477,226 | 6,572 | 6.57 | 2,514,736 | 2,514,736 | 2,504,976 | +| Storage Access Cold (0.6M, Absent Slots False, Sstore New Value, Revert) | 595,683 | 1,477,226 | 6,573 | 6.57 | 7,536,160 | 7,533,882.7 | 7,530,304 | +| Storage Access Cold (0.6M, Absent Slots False, Sstore New Value) | 595,677 | 1,477,226 | 7,058 | 7.06 | 7,093,064 | 7,087,858.7 | 7,076,472 | +| Storage Access Cold (0.6M, Absent Slots False, Sstore Same Value, Out Of Gas) | 600,000 | 1,477,226 | 7,074 | 7.07 | 12,862,472 | 12,859,544 | 12,853,688 | +| Storage Access Cold (0.6M, Absent Slots False, Sstore Same Value, Revert) | 598,413 | 1,477,226 | 7,077 | 7.08 | 4,488,160 | 4,488,160 | 4,468,640 | +| Storage Access Cold (0.6M, Absent Slots False, Sstore Same Value) | 598,407 | 1,477,226 | 7,581 | 7.58 | 9,907,676 | 9,906,049.3 | 9,900,844 | +| Storage Access Cold (0.6M, Absent Slots True, Ssload) | 597,993 | 1,477,226 | 6,057 | 6.06 | 3,652,720 | 3,652,720 | 3,648,816 | +| Storage Access Cold (0.6M, Absent Slots True, Sstore New Value, Out Of Gas) | 600,000 | 1,477,226 | 6,076 | 6.08 | 11,015,024 | 11,014,405 | 11,008,420 | +| Storage Access Cold (0.6M, Absent Slots True, Sstore New Value, Revert) | 596,675 | 1,477,226 | 5,575 | 5.58 | 11,749,644 | 11,749,644 | 11,738,908 | +| Storage Access Cold (0.6M, Absent Slots True, Sstore New Value) | 596,669 | 1,477,226 | 6,055 | 6.05 | 7,707,932 | 7,705,784.8 | 7,697,196 | +| Storage Access Cold (0.6M, Absent Slots True, Sstore Same Value, Out Of Gas) | 600,000 | 1,477,226 | 6,064 | 6.06 | 3,688,832 | 3,687,856 | 3,682,000 | +| Storage Access Cold (0.6M, Absent Slots True, Sstore Same Value, Revert) | 596,597 | 1,477,226 | 5,557 | 5.56 | 592,052 | 590,208.4 | 582,292 | +| Storage Access Cold (0.6M, Absent Slots True, Sstore Same Value) | 596,591 | 1,477,226 | 6,076 | 6.08 | 1,869,616 | 1,866,200 | 1,860,832 | +| Storage Access Warm (0.6M, Sload) | 600,000 | 1,477,226 | 7,567 | 7.57 | 12,853,688 | 12,846,530.7 | 12,834,168 | +| Storage Access Warm (0.6M, Sstore New Value) | 600,000 | 1,477,226 | 10,088 | 10.09 | 4,359,340 | 4,359,340 | 4,357,388 | +| Storage Access Warm (0.6M, Sstore Same Value) | 600,000 | 1,477,226 | 8,578 | 8.58 | 11,306,312 | 11,296,429 | 11,291,508 | + +## Summary Statistics + +- **Total Tests:** 508 +- **Successful Tests:** 508 +- **Failed Tests:** 0 + +### Proving Time (ms) +- **Average:** 21,700.6 +- **Minimum:** 5,540 +- **Maximum:** 274,795 + +### Peak Memory Usage (MB) +- **Average:** 7,562,683.4 +- **Minimum:** 564,724 +- **Maximum:** 14,299,632 + +### Proof Size (bytes) +- **Average:** 1,477,226 +- **Minimum:** 1,477,226 +- **Maximum:** 1,477,226 diff --git a/www/docs/pages/benchmark-results/gas-categorized/0.8m/0.8M-4.md b/www/docs/pages/benchmark-results/gas-categorized/0.8m/0.8M-4.md new file mode 100644 index 00000000..99034de3 --- /dev/null +++ b/www/docs/pages/benchmark-results/gas-categorized/0.8m/0.8M-4.md @@ -0,0 +1,515 @@ +# zkVM Proving Time (in secs) Comparison + +**Gas Category:** 0.8M + +**Number of GPUs:** 4 + + +| Benchmark | risc0 | sp1 | +|---|---|---| +| Address State Cold (0.8M, Absent Accounts False, Balance) | 8.89 | 7.58 | +| Address State Cold (0.8M, Absent Accounts True, Balance) | 6.90 | 6.57 | +| Address State Warm (0.8M, Absent Target, Balance) | 11.48 | 7.59 | +| Address State Warm (0.8M, Absent Target, Call) | 21.44 | 12.12 | +| Address State Warm (0.8M, Absent Target, Callcode) | 20.18 | 11.60 | +| Address State Warm (0.8M, Absent Target, Delegatecall) | 20.32 | 10.59 | +| Address State Warm (0.8M, Absent Target, Extcodehash) | 12.78 | 8.57 | +| Address State Warm (0.8M, Absent Target, Extcodesize) | 11.22 | 8.08 | +| Address State Warm (0.8M, Absent Target, Staticcall) | 20.85 | 11.62 | +| Address State Warm (0.8M, Present Target, Balance) | 10.38 | 7.58 | +| Address State Warm (0.8M, Present Target, Call) | 23.17 | 13.15 | +| Address State Warm (0.8M, Present Target, Callcode) | 22.75 | 12.63 | +| Address State Warm (0.8M, Present Target, Delegatecall) | 21.58 | 12.14 | +| Address State Warm (0.8M, Present Target, Extcodehash) | 11.70 | 8.09 | +| Address State Warm (0.8M, Present Target, Extcodesize) | 10.27 | 7.08 | +| Address State Warm (0.8M, Present Target, Staticcall) | 22.17 | 13.19 | +| Amortized Bn128 Pairings (0.8M) | 65.98 | 22.74 | +| Binop Simple (0.8M, Add) | 13.82 | 8.60 | +| Binop Simple (0.8M, And) | 12.64 | 8.58 | +| Binop Simple (0.8M, Byte) | 12.57 | 9.09 | +| Binop Simple (0.8M, Div, 0) | 51.35 | 22.20 | +| Binop Simple (0.8M, Div, 1) | 47.62 | 21.19 | +| Binop Simple (0.8M, Eq) | 20.66 | 14.65 | +| Binop Simple (0.8M, Exp) | 32.48 | 16.14 | +| Binop Simple (0.8M, Gt) | 13.01 | 8.59 | +| Binop Simple (0.8M, Lt) | 12.96 | 8.58 | +| Binop Simple (0.8M, Mod) | 18.66 | 12.11 | +| Binop Simple (0.8M, Mul) | 19.26 | 10.59 | +| Binop Simple (0.8M, Or) | 11.55 | 9.08 | +| Binop Simple (0.8M, Sar) | 23.26 | 12.61 | +| Binop Simple (0.8M, Sdiv, 0) | 56.84 | 23.74 | +| Binop Simple (0.8M, Sdiv, 1) | 57.59 | 24.27 | +| Binop Simple (0.8M, Sgt) | 22.72 | 14.65 | +| Binop Simple (0.8M, Shl) | 19.71 | 10.60 | +| Binop Simple (0.8M, Shr) | 19.58 | 11.11 | +| Binop Simple (0.8M, Signextend) | 18.52 | 10.62 | +| Binop Simple (0.8M, Slt) | 14.16 | 10.10 | +| Binop Simple (0.8M, Smod) | 20.22 | 13.12 | +| Binop Simple (0.8M, Sub) | 15.33 | 9.60 | +| Binop Simple (0.8M, Xor) | 12.64 | 8.59 | +| Blobhash (0.8M, No Blobs) | 12.89 | 8.09 | +| Blobhash (0.8M, One Blob And Accessed) | 17.56 | 10.11 | +| Blobhash (0.8M, One Blob But Access Non, Existent Index) | 13.05 | 8.59 | +| Blobhash (0.8M, Six Blobs, Access Latest) | 17.23 | 9.59 | +| Block Full Access List And Data (0.8M) | 5.37 | 6.04 | +| Block Full Data (0.8M, Non Zero Byte) | 4.59 | 6.07 | +| Block Full Data (0.8M, Zero Byte) | 6.88 | 6.57 | +| Block Full Of Ether Transfers (0.8M, A To A) | 12.25 | 8.09 | +| Block Full Of Ether Transfers (0.8M, A To B) | 10.99 | 8.07 | +| Block Full Of Ether Transfers (0.8M, A To Diff Acc) | 12.82 | 8.10 | +| Block Full Of Ether Transfers (0.8M, Diff Acc To B) | 12.55 | 7.58 | +| Block Full Of Ether Transfers (0.8M, Diff Acc To Diff Acc) | 11.73 | 8.07 | +| Blockhash (0.8M) | 14.42 | 9.10 | +| Bytecode Single Opcode (0.8M, Call) | 81.14 | 27.26 | +| Bytecode Single Opcode (0.8M, Callcode) | 79.87 | 27.78 | +| Bytecode Single Opcode (0.8M, Delegatecall) | 80.31 | 26.77 | +| Bytecode Single Opcode (0.8M, Extcodecopy) | 76.97 | 26.25 | +| Bytecode Single Opcode (0.8M, Extcodehash) | 79.53 | 28.25 | +| Bytecode Single Opcode (0.8M, Extcodesize) | 79.90 | 27.78 | +| Bytecode Single Opcode (0.8M, Staticcall) | 80.28 | 27.76 | +| Calldatacopy (0.8M, Non Zero, Dynamic Src Dst, 100Bytes, Call) | 16.09 | 10.10 | +| Calldatacopy (0.8M, Non Zero, Dynamic Src Dst, 100Bytes, Transaction) | 15.20 | 10.12 | +| Calldatacopy (0.8M, Non Zero, Dynamic Src Dst, 10Kib, Call) | 9.52 | 7.57 | +| Calldatacopy (0.8M, Non Zero, Dynamic Src Dst, 10Kib, Transaction) | 9.61 | 7.07 | +| Calldatacopy (0.8M, Non Zero, Fixed Src Dst, 100Bytes, Call) | 12.54 | 8.08 | +| Calldatacopy (0.8M, Non Zero, Fixed Src Dst, 100Bytes, Transaction) | 11.41 | 8.08 | +| Calldatacopy (0.8M, Non Zero, Fixed Src Dst, 10Kib, Call) | 9.65 | 7.58 | +| Calldatacopy (0.8M, Non Zero, Fixed Src Dst, 10Kib, Transaction) | 9.06 | 6.57 | +| Calldatacopy (0.8M, Zero Data, Dynamic Src Dst, 0Bytes, Call) | 17.31 | 10.60 | +| Calldatacopy (0.8M, Zero Data, Dynamic Src Dst, 0Bytes, Transaction) | 17.17 | 10.60 | +| Calldatacopy (0.8M, Zero Data, Dynamic Src Dst, 100Bytes, Call) | 14.33 | 10.12 | +| Calldatacopy (0.8M, Zero Data, Dynamic Src Dst, 100Bytes, Transaction) | 14.53 | 9.60 | +| Calldatacopy (0.8M, Zero Data, Dynamic Src Dst, 10Kib, Call) | 10.30 | 6.56 | +| Calldatacopy (0.8M, Zero Data, Dynamic Src Dst, 10Kib, Transaction) | 8.54 | 6.56 | +| Calldatacopy (0.8M, Zero Data, Dynamic Src Dst, 1Mib, Call) | 3.99 | 6.05 | +| Calldatacopy (0.8M, Zero Data, Dynamic Src Dst, 1Mib, Transaction) | 4.00 | 5.54 | +| Calldatacopy (0.8M, Zero Data, Fixed Src Dst, 0Bytes, Call) | 13.45 | 9.08 | +| Calldatacopy (0.8M, Zero Data, Fixed Src Dst, 0Bytes, Transaction) | 14.72 | 8.57 | +| Calldatacopy (0.8M, Zero Data, Fixed Src Dst, 100Bytes, Call) | 10.53 | 8.08 | +| Calldatacopy (0.8M, Zero Data, Fixed Src Dst, 100Bytes, Transaction) | 11.43 | 8.07 | +| Calldatacopy (0.8M, Zero Data, Fixed Src Dst, 10Kib, Call) | 8.09 | 7.08 | +| Calldatacopy (0.8M, Zero Data, Fixed Src Dst, 10Kib, Transaction) | 6.52 | 7.06 | +| Calldatacopy (0.8M, Zero Data, Fixed Src Dst, 1Mib, Call) | 3.91 | 6.07 | +| Calldatacopy (0.8M, Zero Data, Fixed Src Dst, 1Mib, Transaction) | 3.94 | 6.55 | +| Calldataload (0.8M, Empty) | 21.78 | 11.63 | +| Calldataload (0.8M, One, Loop) | 24.88 | 13.63 | +| Calldataload (0.8M, Zero, Loop) | 25.40 | 13.62 | +| Calldatasize (0.8M, Calldata Length 0) | 13.00 | 9.10 | +| Calldatasize (0.8M, Calldata Length 1000) | 12.56 | 8.59 | +| Calldatasize (0.8M, Calldata Length 10000) | 12.21 | 8.60 | +| Callvalue (0.8M, From Origin False, Non Zero Value False) | 13.90 | 10.10 | +| Callvalue (0.8M, From Origin False, Non Zero Value True) | 14.23 | 10.09 | +| Callvalue (0.8M, From Origin True, Non Zero Value False) | 14.24 | 10.10 | +| Callvalue (0.8M, From Origin True, Non Zero Value True) | 15.16 | 9.59 | +| Codecopy (0.8M, Dynamic Src Dst, 0.25X Max Code) | 10.16 | 7.61 | +| Codecopy (0.8M, Dynamic Src Dst, 0.50X Max Code Size) | 10.52 | 7.59 | +| Codecopy (0.8M, Dynamic Src Dst, 0.75X Max Code Size) | 10.97 | 7.57 | +| Codecopy (0.8M, Dynamic Src Dst, 0Bytes) | 16.91 | 10.11 | +| Codecopy (0.8M, Dynamic Src Dst, Max Code) | 10.38 | 7.10 | +| Codecopy (0.8M, Fixed Src Dst, 0.25X Max Code) | 10.24 | 7.56 | +| Codecopy (0.8M, Fixed Src Dst, 0.50X Max Code Size) | 8.45 | 7.08 | +| Codecopy (0.8M, Fixed Src Dst, 0.75X Max Code Size) | 7.83 | 8.09 | +| Codecopy (0.8M, Fixed Src Dst, 0Bytes) | 12.76 | 8.58 | +| Codecopy (0.8M, Fixed Src Dst, Max Code) | 9.18 | 7.06 | +| Create (0.8M, 0.25X Max Code, Create) | 4.94 | 6.05 | +| Create (0.8M, 0.25X Max Code, Create2) | 4.62 | 6.06 | +| Create (0.8M, 0.25X Max Code, Zero Data, Create) | 4.73 | 6.06 | +| Create (0.8M, 0.25X Max Code, Zero Data, Create2) | 4.46 | 6.06 | +| Create (0.8M, 0.50X Max Code Size With Non, Zero Data, Create) | 5.00 | 6.58 | +| Create (0.8M, 0.50X Max Code Size With Non, Zero Data, Create2) | 4.79 | 6.08 | +| Create (0.8M, 0.50X Max Code Size With Zero Data, Create) | 4.83 | 7.06 | +| Create (0.8M, 0.50X Max Code Size With Zero Data, Create2) | 4.49 | 6.07 | +| Create (0.8M, 0.75X Max Code Size With Non, Zero Data, Create) | 5.21 | 6.56 | +| Create (0.8M, 0.75X Max Code Size With Non, Zero Data, Create2) | 5.86 | 6.57 | +| Create (0.8M, 0.75X Max Code Size With Zero Data, Create) | 4.93 | 6.07 | +| Create (0.8M, 0.75X Max Code Size With Zero Data, Create2) | 4.49 | 6.07 | +| Create (0.8M, 0Bytes, Create) | 4.56 | 6.55 | +| Create (0.8M, 0Bytes, Create2) | 4.98 | 6.59 | +| Create (0.8M, Max Code, Create) | 5.25 | 6.06 | +| Create (0.8M, Max Code, Create2) | 4.84 | 6.07 | +| Create (0.8M, Max Code, Zero Data, Create) | 6.04 | 6.57 | +| Create (0.8M, Max Code, Zero Data, Create2) | 6.14 | 7.07 | +| Creates Collisions (0.8M, Create) | 5.05 | 6.06 | +| Creates Collisions (0.8M, Create2) | 4.46 | 6.05 | +| Dup (0.8M, Dup1) | 12.34 | 8.08 | +| Dup (0.8M, Dup10) | 12.28 | 8.09 | +| Dup (0.8M, Dup11) | 12.13 | 8.08 | +| Dup (0.8M, Dup12) | 12.12 | 8.10 | +| Dup (0.8M, Dup13) | 12.37 | 8.57 | +| Dup (0.8M, Dup14) | 12.76 | 8.09 | +| Dup (0.8M, Dup15) | 13.07 | 8.06 | +| Dup (0.8M, Dup16) | 12.97 | 8.08 | +| Dup (0.8M, Dup2) | 12.74 | 8.08 | +| Dup (0.8M, Dup3) | 10.30 | 8.09 | +| Dup (0.8M, Dup4) | 12.33 | 8.08 | +| Dup (0.8M, Dup5) | 12.21 | 8.06 | +| Dup (0.8M, Dup6) | 11.86 | 8.09 | +| Dup (0.8M, Dup7) | 11.91 | 8.10 | +| Dup (0.8M, Dup8) | 11.99 | 8.07 | +| Dup (0.8M, Dup9) | 11.92 | 8.09 | +| Empty Block (0.8M) | 3.79 | 5.56 | +| Extcodecopy Warm (0.8M, 1Kib) | 10.07 | 7.09 | +| Extcodecopy Warm (0.8M, 512) | 9.78 | 7.57 | +| Extcodecopy Warm (0.8M, 5Kib) | 8.50 | 7.07 | +| Initcode Jumpdest Analysis (0.8M, 00) | 10.33 | 8.58 | +| Initcode Jumpdest Analysis (0.8M, 5B) | 13.50 | 8.61 | +| Initcode Jumpdest Analysis (0.8M, 605B) | 9.11 | 7.06 | +| Initcode Jumpdest Analysis (0.8M, 605B5B) | 11.57 | 7.09 | +| Initcode Jumpdest Analysis (0.8M, 615B5B) | 10.28 | 7.57 | +| Initcode Jumpdest Analysis (0.8M, 615B5B5B) | 10.34 | 7.09 | +| Jumpdests (0.8M) | 13.40 | 9.11 | +| Jumpi Fallthrough (0.8M) | 14.88 | 10.11 | +| Jumpis (0.8M) | 12.20 | 8.56 | +| Jumps (0.8M) | 11.50 | 7.06 | +| Keccak (0.8M) | 37.70 | 12.63 | +| Log Opcodes (0.8M, Dynamic, Non Zero Topic, 0 Bytes Data, Log0) | 5.59 | 7.04 | +| Log Opcodes (0.8M, Dynamic, Non Zero Topic, 0 Bytes Data, Log1) | 5.39 | 6.56 | +| Log Opcodes (0.8M, Dynamic, Non Zero Topic, 0 Bytes Data, Log2) | 4.50 | 6.57 | +| Log Opcodes (0.8M, Dynamic, Non Zero Topic, 0 Bytes Data, Log3) | 5.65 | 7.06 | +| Log Opcodes (0.8M, Dynamic, Non Zero Topic, 0 Bytes Data, Log4) | 4.43 | 6.06 | +| Log Opcodes (0.8M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log0) | 4.22 | 5.56 | +| Log Opcodes (0.8M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log1) | 4.47 | 6.05 | +| Log Opcodes (0.8M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log2) | 4.08 | 6.05 | +| Log Opcodes (0.8M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log3) | 4.82 | 6.06 | +| Log Opcodes (0.8M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log4) | 4.38 | 6.04 | +| Log Opcodes (0.8M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log0) | 3.94 | 6.06 | +| Log Opcodes (0.8M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log1) | 4.54 | 5.56 | +| Log Opcodes (0.8M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log2) | 4.71 | 6.54 | +| Log Opcodes (0.8M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log3) | 4.77 | 6.06 | +| Log Opcodes (0.8M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log4) | 3.85 | 6.05 | +| Log Opcodes (0.8M, Dynamic, Zero Topic, 0 Bytes Data, Log0) | 6.25 | 6.06 | +| Log Opcodes (0.8M, Dynamic, Zero Topic, 0 Bytes Data, Log1) | 5.17 | 6.56 | +| Log Opcodes (0.8M, Dynamic, Zero Topic, 0 Bytes Data, Log2) | 4.52 | 6.08 | +| Log Opcodes (0.8M, Dynamic, Zero Topic, 0 Bytes Data, Log3) | 4.33 | 5.54 | +| Log Opcodes (0.8M, Dynamic, Zero Topic, 0 Bytes Data, Log4) | 4.91 | 6.05 | +| Log Opcodes (0.8M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log0) | 4.76 | 5.56 | +| Log Opcodes (0.8M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log1) | 4.12 | 6.56 | +| Log Opcodes (0.8M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log2) | 4.38 | 6.05 | +| Log Opcodes (0.8M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log3) | 4.14 | 6.05 | +| Log Opcodes (0.8M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log4) | 4.47 | 6.57 | +| Log Opcodes (0.8M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log0) | 3.95 | 6.55 | +| Log Opcodes (0.8M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log1) | 4.03 | 6.07 | +| Log Opcodes (0.8M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log2) | 4.31 | 6.08 | +| Log Opcodes (0.8M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log3) | 4.95 | 6.06 | +| Log Opcodes (0.8M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log4) | 4.70 | 6.05 | +| Log Opcodes (0.8M, Fixed, Non Zero Topic, 0 Bytes Data, Log0) | 4.65 | 6.57 | +| Log Opcodes (0.8M, Fixed, Non Zero Topic, 0 Bytes Data, Log1) | 4.52 | 6.55 | +| Log Opcodes (0.8M, Fixed, Non Zero Topic, 0 Bytes Data, Log2) | 5.16 | 6.57 | +| Log Opcodes (0.8M, Fixed, Non Zero Topic, 0 Bytes Data, Log3) | 4.46 | 6.04 | +| Log Opcodes (0.8M, Fixed, Non Zero Topic, 0 Bytes Data, Log4) | 4.76 | 6.58 | +| Log Opcodes (0.8M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log0) | 4.77 | 5.56 | +| Log Opcodes (0.8M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log1) | 4.38 | 6.05 | +| Log Opcodes (0.8M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log2) | 4.17 | 6.06 | +| Log Opcodes (0.8M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log3) | 4.31 | 6.56 | +| Log Opcodes (0.8M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log4) | 4.57 | 6.07 | +| Log Opcodes (0.8M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log0) | 3.93 | 6.04 | +| Log Opcodes (0.8M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log1) | 4.88 | 7.08 | +| Log Opcodes (0.8M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log2) | 4.35 | 6.06 | +| Log Opcodes (0.8M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log3) | 4.53 | 6.05 | +| Log Opcodes (0.8M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log4) | 4.36 | 6.06 | +| Log Opcodes (0.8M, Fixed, Zero Topic, 0 Bytes Data, Log0) | 5.46 | 6.06 | +| Log Opcodes (0.8M, Fixed, Zero Topic, 0 Bytes Data, Log1) | 4.58 | 6.57 | +| Log Opcodes (0.8M, Fixed, Zero Topic, 0 Bytes Data, Log2) | 5.21 | 6.56 | +| Log Opcodes (0.8M, Fixed, Zero Topic, 0 Bytes Data, Log3) | 4.83 | 6.56 | +| Log Opcodes (0.8M, Fixed, Zero Topic, 0 Bytes Data, Log4) | 4.68 | 6.07 | +| Log Opcodes (0.8M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log0) | 5.09 | 6.07 | +| Log Opcodes (0.8M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log1) | 4.18 | 5.55 | +| Log Opcodes (0.8M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log2) | 4.53 | 6.06 | +| Log Opcodes (0.8M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log3) | 5.36 | 6.07 | +| Log Opcodes (0.8M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log4) | 4.65 | 6.05 | +| Log Opcodes (0.8M, Fixed, Zero Topic, 1 Mib Zeros Data, Log0) | 3.91 | 6.07 | +| Log Opcodes (0.8M, Fixed, Zero Topic, 1 Mib Zeros Data, Log1) | 4.81 | 6.05 | +| Log Opcodes (0.8M, Fixed, Zero Topic, 1 Mib Zeros Data, Log2) | 3.88 | 6.05 | +| Log Opcodes (0.8M, Fixed, Zero Topic, 1 Mib Zeros Data, Log3) | 4.10 | 6.06 | +| Log Opcodes (0.8M, Fixed, Zero Topic, 1 Mib Zeros Data, Log4) | 3.97 | 6.05 | +| Mcopy (0.8M, Dynamic Src Dst, 0Bytes) | 15.69 | 9.61 | +| Mcopy (0.8M, Dynamic Src Dst, 100Bytes) | 16.04 | 9.60 | +| Mcopy (0.8M, Dynamic Src Dst, 10Kib) | 12.29 | 8.59 | +| Mcopy (0.8M, Dynamic Src Dst, 1Mib) | 4.94 | 6.06 | +| Mcopy (0.8M, Fixed Src Dst, 0Bytes) | 12.09 | 8.07 | +| Mcopy (0.8M, Fixed Src Dst, 100Bytes) | 11.87 | 9.08 | +| Mcopy (0.8M, Fixed Src Dst, 10Kib) | 12.13 | 8.07 | +| Mcopy (0.8M, Fixed Src Dst, 1Mib) | 5.14 | 6.57 | +| Memory Access (0.8M, Big Mem, Init Offset, Off 0, Mload) | 15.61 | 9.57 | +| Memory Access (0.8M, Big Mem, Init Offset, Off 0, Mstore) | 15.57 | 11.10 | +| Memory Access (0.8M, Big Mem, Init Offset, Off 0, Mstore8) | 12.58 | 8.07 | +| Memory Access (0.8M, Big Mem, Init Offset, Off 1, Mload) | 15.87 | 10.10 | +| Memory Access (0.8M, Big Mem, Init Offset, Off 1, Mstore) | 16.73 | 9.60 | +| Memory Access (0.8M, Big Mem, Init Offset, Off 1, Mstore8) | 12.12 | 8.10 | +| Memory Access (0.8M, Big Mem, Init Offset, Off 31, Mload) | 14.45 | 9.59 | +| Memory Access (0.8M, Big Mem, Init Offset, Off 31, Mstore) | 15.16 | 10.12 | +| Memory Access (0.8M, Big Mem, Init Offset, Off 31, Mstore8) | 12.71 | 8.09 | +| Memory Access (0.8M, Big Mem, Uninit Offset, Off 0, Mload) | 16.22 | 9.59 | +| Memory Access (0.8M, Big Mem, Uninit Offset, Off 0, Mstore) | 15.08 | 9.61 | +| Memory Access (0.8M, Big Mem, Uninit Offset, Off 0, Mstore8) | 12.66 | 8.07 | +| Memory Access (0.8M, Big Mem, Uninit Offset, Off 1, Mload) | 15.73 | 9.08 | +| Memory Access (0.8M, Big Mem, Uninit Offset, Off 1, Mstore) | 15.66 | 11.12 | +| Memory Access (0.8M, Big Mem, Uninit Offset, Off 1, Mstore8) | 12.38 | 8.07 | +| Memory Access (0.8M, Big Mem, Uninit Offset, Off 31, Mload) | 15.68 | 10.09 | +| Memory Access (0.8M, Big Mem, Uninit Offset, Off 31, Mstore) | 15.70 | 10.11 | +| Memory Access (0.8M, Big Mem, Uninit Offset, Off 31, Mstore8) | 12.30 | 7.59 | +| Memory Access (0.8M, Small Mem, Init Offset, Off 0, Mload) | 16.90 | 10.60 | +| Memory Access (0.8M, Small Mem, Init Offset, Off 0, Mstore) | 16.41 | 10.10 | +| Memory Access (0.8M, Small Mem, Init Offset, Off 0, Mstore8) | 13.04 | 8.07 | +| Memory Access (0.8M, Small Mem, Init Offset, Off 1, Mload) | 15.27 | 9.57 | +| Memory Access (0.8M, Small Mem, Init Offset, Off 1, Mstore) | 16.18 | 10.11 | +| Memory Access (0.8M, Small Mem, Init Offset, Off 1, Mstore8) | 12.50 | 9.09 | +| Memory Access (0.8M, Small Mem, Init Offset, Off 31, Mload) | 16.11 | 9.61 | +| Memory Access (0.8M, Small Mem, Init Offset, Off 31, Mstore) | 15.79 | 10.10 | +| Memory Access (0.8M, Small Mem, Init Offset, Off 31, Mstore8) | 12.61 | 8.08 | +| Memory Access (0.8M, Small Mem, Uninit Offset, Off 0, Mload) | 15.94 | 10.07 | +| Memory Access (0.8M, Small Mem, Uninit Offset, Off 0, Mstore) | 16.15 | 10.62 | +| Memory Access (0.8M, Small Mem, Uninit Offset, Off 0, Mstore8) | 12.31 | 8.07 | +| Memory Access (0.8M, Small Mem, Uninit Offset, Off 1, Mload) | 16.60 | 9.09 | +| Memory Access (0.8M, Small Mem, Uninit Offset, Off 1, Mstore) | 15.16 | 10.11 | +| Memory Access (0.8M, Small Mem, Uninit Offset, Off 1, Mstore8) | 13.09 | 8.10 | +| Memory Access (0.8M, Small Mem, Uninit Offset, Off 31, Mload) | 15.22 | 9.58 | +| Memory Access (0.8M, Small Mem, Uninit Offset, Off 31, Mstore) | 15.77 | 9.59 | +| Memory Access (0.8M, Small Mem, Uninit Offset, Off 31, Mstore8) | 11.89 | 8.58 | +| Mod (0.8M, Op Mod, Mod Bits 127) | 48.38 | 21.22 | +| Mod (0.8M, Op Mod, Mod Bits 191) | 59.54 | 25.24 | +| Mod (0.8M, Op Mod, Mod Bits 255) | 46.60 | 21.70 | +| Mod (0.8M, Op Mod, Mod Bits 63) | 34.18 | 15.68 | +| Mod (0.8M, Op Smod, Mod Bits 127) | 51.33 | 23.21 | +| Mod (0.8M, Op Smod, Mod Bits 191) | 61.81 | 26.75 | +| Mod (0.8M, Op Smod, Mod Bits 255) | 47.77 | 21.72 | +| Mod (0.8M, Op Smod, Mod Bits 63) | 37.08 | 17.17 | +| Modarith (0.8M, Op Addmod, Mod Bits 127) | 38.41 | 17.67 | +| Modarith (0.8M, Op Addmod, Mod Bits 191) | 45.04 | 20.73 | +| Modarith (0.8M, Op Addmod, Mod Bits 255) | 38.45 | 18.68 | +| Modarith (0.8M, Op Addmod, Mod Bits 63) | 28.74 | 15.64 | +| Modarith (0.8M, Op Mulmod, Mod Bits 127) | 62.63 | 26.24 | +| Modarith (0.8M, Op Mulmod, Mod Bits 191) | 86.14 | 35.41 | +| Modarith (0.8M, Op Mulmod, Mod Bits 255) | 86.25 | 35.33 | +| Modarith (0.8M, Op Mulmod, Mod Bits 63) | 51.45 | 23.25 | +| Modexp (0.8M, Mod 1045 Gas Base Heavy) | 835.4 | 329.5 | +| Modexp (0.8M, Mod 1360 Gas Balanced) | 208.8 | 80.88 | +| Modexp (0.8M, Mod 400 Gas Exp Heavy) | 266.3 | 96.41 | +| Modexp (0.8M, Mod 408 Gas Balanced) | 187.8 | 70.72 | +| Modexp (0.8M, Mod 408 Gas Base Heavy) | 754.7 | 290.4 | +| Modexp (0.8M, Mod 600 As Balanced) | 182.9 | 72.20 | +| Modexp (0.8M, Mod 600 Gas Exp Heavy) | 280.7 | 103.6 | +| Modexp (0.8M, Mod 616 Gas Base Heavy) | 792.0 | 311.4 | +| Modexp (0.8M, Mod 677 Gas Base Heavy) | 209.7 | 76.23 | +| Modexp (0.8M, Mod 765 Gas Exp Heavy) | 233.4 | 85.40 | +| Modexp (0.8M, Mod 767 Gas Balanced) | 180.4 | 69.17 | +| Modexp (0.8M, Mod 800 Gas Base Heavy) | 840.2 | 325.7 | +| Modexp (0.8M, Mod 800 Gas Exp Heavy) | 295.7 | 110.1 | +| Modexp (0.8M, Mod 852 Gas Exp Heavy) | 297.4 | 108.6 | +| Modexp (0.8M, Mod 867 Gas Base Heavy) | 824.3 | 323.2 | +| Modexp (0.8M, Mod 996 Gas Balanced) | 186.5 | 70.73 | +| Modexp (0.8M, Mod Even 1024B Exp 1024) | 4.61 | 6.07 | +| Modexp (0.8M, Mod Even 128B Exp 1024) | 157.2 | 64.58 | +| Modexp (0.8M, Mod Even 16B Exp 320) | 276.7 | 101.6 | +| Modexp (0.8M, Mod Even 24B Exp 168) | 226.0 | 83.84 | +| Modexp (0.8M, Mod Even 256B Exp 1024) | 149.6 | 62.59 | +| Modexp (0.8M, Mod Even 32B Exp 256) | 219.7 | 83.36 | +| Modexp (0.8M, Mod Even 32B Exp 40) | 178.7 | 66.72 | +| Modexp (0.8M, Mod Even 32B Exp 96) | 207.6 | 77.80 | +| Modexp (0.8M, Mod Even 512B Exp 1024) | 4.79 | 6.07 | +| Modexp (0.8M, Mod Even 64B Exp 512) | 189.0 | 76.79 | +| Modexp (0.8M, Mod Even 8B Exp 896) | 464.2 | 171.2 | +| Modexp (0.8M, Mod Exp 208 Gas Balanced) | 167.0 | 63.19 | +| Modexp (0.8M, Mod Exp 215 Gas Exp Heavy) | 412.8 | 153.7 | +| Modexp (0.8M, Mod Exp 298 Gas Exp Heavy) | 457.4 | 168.8 | +| Modexp (0.8M, Mod Min As Balanced) | 178.3 | 67.11 | +| Modexp (0.8M, Mod Min As Base Heavy) | N/A | 232.8 | +| Modexp (0.8M, Mod Min As Exp Heavy) | N/A | 151.5 | +| Modexp (0.8M, Mod Odd 1024B Exp 1024) | 4.91 | 6.06 | +| Modexp (0.8M, Mod Odd 128B Exp 1024) | 157.5 | 65.63 | +| Modexp (0.8M, Mod Odd 256B Exp 1024) | 152.3 | 62.02 | +| Modexp (0.8M, Mod Odd 32B Exp 256) | 217.6 | 81.87 | +| Modexp (0.8M, Mod Odd 32B Exp 96) | 196.6 | 75.85 | +| Modexp (0.8M, Mod Odd 32B Exp Cover Windows) | 157.0 | 59.60 | +| Modexp (0.8M, Mod Odd 512B Exp 1024) | 4.04 | 6.07 | +| Modexp (0.8M, Mod Odd 64B Exp 512) | 187.7 | 76.80 | +| Modexp (0.8M, Mod Pawel 2) | 267.3 | 98.51 | +| Modexp (0.8M, Mod Pawel 3) | 219.3 | 80.85 | +| Modexp (0.8M, Mod Pawel 4) | 194.6 | 74.31 | +| Modexp (0.8M, Mod Vul Common 1152N1) | 120.0 | 46.52 | +| Modexp (0.8M, Mod Vul Common 1349N1) | 171.9 | 63.60 | +| Modexp (0.8M, Mod Vul Common 1360N1) | 186.9 | 70.22 | +| Modexp (0.8M, Mod Vul Common 1360N2) | 175.2 | 65.61 | +| Modexp (0.8M, Mod Vul Common 200N1) | 95.05 | 38.89 | +| Modexp (0.8M, Mod Vul Common 200N2) | 125.7 | 45.45 | +| Modexp (0.8M, Mod Vul Common 200N3) | 123.4 | 47.98 | +| Modexp (0.8M, Mod Vul Example 1) | 218.7 | 81.31 | +| Modexp (0.8M, Mod Vul Example 2) | 201.5 | 76.26 | +| Modexp (0.8M, Mod Vul Guido 1 Even) | 145.3 | 59.04 | +| Modexp (0.8M, Mod Vul Guido 2 Even) | 258.8 | 94.94 | +| Modexp (0.8M, Mod Vul Guido 3 Even) | 395.7 | 166.6 | +| Modexp (0.8M, Mod Vul Marius 1 Even) | 233.3 | 85.87 | +| Modexp (0.8M, Mod Vul Nagydani 1 Pow 0X10001) | 152.5 | 58.06 | +| Modexp (0.8M, Mod Vul Nagydani 1 Qube) | 113.7 | 44.43 | +| Modexp (0.8M, Mod Vul Nagydani 1 Square) | 107.5 | 42.42 | +| Modexp (0.8M, Mod Vul Nagydani 2 Pow 0X10001) | 158.0 | 60.65 | +| Modexp (0.8M, Mod Vul Nagydani 2 Qube) | 345.0 | 127.7 | +| Modexp (0.8M, Mod Vul Nagydani 2 Square) | 313.5 | 119.7 | +| Modexp (0.8M, Mod Vul Nagydani 3 Pow 0X10001) | 152.1 | 61.10 | +| Modexp (0.8M, Mod Vul Nagydani 3 Qube) | N/A | 309.1 | +| Modexp (0.8M, Mod Vul Nagydani 3 Square) | 759.7 | 282.8 | +| Modexp (0.8M, Mod Vul Nagydani 4 Pow 0X10001) | 139.6 | 58.55 | +| Modexp (0.8M, Mod Vul Nagydani 4 Qube) | 886.6 | 368.2 | +| Modexp (0.8M, Mod Vul Nagydani 4 Square) | N/A | 341.1 | +| Modexp (0.8M, Mod Vul Nagydani 5 Pow 0X10001) | 130.4 | 55.07 | +| Modexp (0.8M, Mod Vul Nagydani 5 Qube) | N/A | 376.4 | +| Modexp (0.8M, Mod Vul Nagydani 5 Square) | 839.5 | 342.9 | +| Modexp (0.8M, Mod Vul Pawel 1 Exp Heavy) | 434.0 | 162.7 | +| Modexp (0.8M, Mod Vul Pawel 2 Exp Heavy) | 255.8 | 93.94 | +| Modexp (0.8M, Mod Vul Pawel 3 Exp Heavy) | 199.7 | 78.26 | +| Modexp (0.8M, Mod Vul Pawel 4 Exp Heavy) | 185.7 | 69.63 | +| Msize (0.8M, Mem Size 0) | 15.73 | 10.09 | +| Msize (0.8M, Mem Size 1) | 14.68 | 10.11 | +| Msize (0.8M, Mem Size 1000) | 16.44 | 10.12 | +| Msize (0.8M, Mem Size 100000) | 17.08 | 11.15 | +| Msize (0.8M, Mem Size 1000000) | 15.49 | 9.59 | +| Precompile Fixed Cost (0.8M, Blake2F) | 181.8 | 61.60 | +| Precompile Fixed Cost (0.8M, Bls12 Fp To G1) | 24.32 | 120.2 | +| Precompile Fixed Cost (0.8M, Bls12 Fp To G2) | 20.92 | 89.97 | +| Precompile Fixed Cost (0.8M, Bls12 G1Add) | 19.38 | 71.28 | +| Precompile Fixed Cost (0.8M, Bls12 G1Msm) | 4.66 | 6.06 | +| Precompile Fixed Cost (0.8M, Bls12 G2Add) | 21.78 | 73.73 | +| Precompile Fixed Cost (0.8M, Bls12 G2Msm) | 5.03 | 6.05 | +| Precompile Fixed Cost (0.8M, Bls12 Pairing Check) | 34.74 | 117.2 | +| Precompile Fixed Cost (0.8M, Bn128 Add 1 2) | 24.48 | 13.12 | +| Precompile Fixed Cost (0.8M, Bn128 Add Infinities) | 15.93 | 9.59 | +| Precompile Fixed Cost (0.8M, Bn128 Add) | 24.62 | 23.23 | +| Precompile Fixed Cost (0.8M, Bn128 Mul 1 2 2 Scalar) | 7.68 | 8.07 | +| Precompile Fixed Cost (0.8M, Bn128 Mul 1 2 32 Byte Scalar) | 65.83 | 32.84 | +| Precompile Fixed Cost (0.8M, Bn128 Mul 32 Byte Coord And 2 Scalar) | 6.12 | 7.57 | +| Precompile Fixed Cost (0.8M, Bn128 Mul 32 Byte Coord And Scalar) | 63.41 | 32.29 | +| Precompile Fixed Cost (0.8M, Bn128 Mul Infinities 2 Scalar) | 6.05 | 7.56 | +| Precompile Fixed Cost (0.8M, Bn128 Mul Infinities 32 Byte Scalar) | 43.69 | 22.75 | +| Precompile Fixed Cost (0.8M, Bn128 Mul) | 67.89 | 33.81 | +| Precompile Fixed Cost (0.8M, Bn128 One Pairing) | 59.38 | 20.20 | +| Precompile Fixed Cost (0.8M, Bn128 Two Pairings Empty) | 4.81 | 6.05 | +| Precompile Fixed Cost (0.8M, Bn128 Two Pairings) | 57.94 | 20.20 | +| Precompile Fixed Cost (0.8M, Ecrecover) | 66.49 | 15.16 | +| Precompile Fixed Cost (0.8M, Point Evaluation) | 70.41 | 299.0 | +| Precompile Only Data Input (0.8M, Identity) | 11.86 | 7.59 | +| Precompile Only Data Input (0.8M, Ripemd, 160) | 9.03 | 7.56 | +| Precompile Only Data Input (0.8M, Sha2, 256) | 6.62 | 16.67 | +| Push (0.8M, Push0) | 15.20 | 10.11 | +| Push (0.8M, Push1) | 11.80 | 8.08 | +| Push (0.8M, Push10) | 14.52 | 8.57 | +| Push (0.8M, Push11) | 15.28 | 10.08 | +| Push (0.8M, Push12) | 14.38 | 9.58 | +| Push (0.8M, Push13) | 15.10 | 9.62 | +| Push (0.8M, Push14) | 15.70 | 9.59 | +| Push (0.8M, Push15) | 16.21 | 10.61 | +| Push (0.8M, Push16) | 15.66 | 10.10 | +| Push (0.8M, Push17) | 15.85 | 10.11 | +| Push (0.8M, Push18) | 16.63 | 9.62 | +| Push (0.8M, Push19) | 17.52 | 10.12 | +| Push (0.8M, Push2) | 12.12 | 8.07 | +| Push (0.8M, Push20) | 16.14 | 10.61 | +| Push (0.8M, Push21) | 16.74 | 10.62 | +| Push (0.8M, Push22) | 17.50 | 10.09 | +| Push (0.8M, Push23) | 16.57 | 11.11 | +| Push (0.8M, Push24) | 19.89 | 10.62 | +| Push (0.8M, Push25) | 18.79 | 10.60 | +| Push (0.8M, Push26) | 19.50 | 10.60 | +| Push (0.8M, Push27) | 19.41 | 10.13 | +| Push (0.8M, Push28) | 19.64 | 10.60 | +| Push (0.8M, Push29) | 19.24 | 10.59 | +| Push (0.8M, Push3) | 12.35 | 8.10 | +| Push (0.8M, Push30) | 20.30 | 11.13 | +| Push (0.8M, Push31) | 21.20 | 11.12 | +| Push (0.8M, Push32) | 19.95 | 11.14 | +| Push (0.8M, Push4) | 12.64 | 8.07 | +| Push (0.8M, Push5) | 12.92 | 7.58 | +| Push (0.8M, Push6) | 13.48 | 8.60 | +| Push (0.8M, Push7) | 13.56 | 8.08 | +| Push (0.8M, Push8) | 13.73 | 8.58 | +| Push (0.8M, Push9) | 13.57 | 8.58 | +| Return Revert (0.8M, 1Kib Of Non, Zero Data, Return) | 15.98 | 10.65 | +| Return Revert (0.8M, 1Kib Of Non, Zero Data, Revert) | 16.89 | 10.59 | +| Return Revert (0.8M, 1Kib Of Zero Data, Return) | 19.61 | 10.08 | +| Return Revert (0.8M, 1Kib Of Zero Data, Revert) | 19.49 | 10.61 | +| Return Revert (0.8M, 1Mib Of Non, Zero Data, Return) | 5.05 | 6.07 | +| Return Revert (0.8M, 1Mib Of Non, Zero Data, Revert) | 4.84 | 6.05 | +| Return Revert (0.8M, 1Mib Of Zero Data, Return) | 4.61 | 6.07 | +| Return Revert (0.8M, 1Mib Of Zero Data, Revert) | 4.26 | 6.08 | +| Return Revert (0.8M, Empty, Return) | 23.27 | 12.10 | +| Return Revert (0.8M, Empty, Revert) | 25.05 | 13.15 | +| Returndatacopy (0.8M, Fixed Dst False, 0Bytes) | 16.63 | 10.59 | +| Returndatacopy (0.8M, Fixed Dst False, 100Bytes) | 14.89 | 10.12 | +| Returndatacopy (0.8M, Fixed Dst False, 10Kib) | 11.78 | 7.59 | +| Returndatacopy (0.8M, Fixed Dst False, 1Mib) | 5.86 | 6.06 | +| Returndatacopy (0.8M, Fixed Dst True, 0Bytes) | 15.06 | 9.58 | +| Returndatacopy (0.8M, Fixed Dst True, 100Bytes) | 11.83 | 8.07 | +| Returndatacopy (0.8M, Fixed Dst True, 10Kib) | 8.21 | 7.07 | +| Returndatacopy (0.8M, Fixed Dst True, 1Mib) | 4.99 | 6.08 | +| Returndatasize Nonzero (0.8M, Returned Size 0, Return Data Style Returndatastyle.Identity) | 13.16 | 9.09 | +| Returndatasize Nonzero (0.8M, Returned Size 0, Return Data Style Returndatastyle.Return) | 13.36 | 9.08 | +| Returndatasize Nonzero (0.8M, Returned Size 0, Return Data Style Returndatastyle.Revert) | 13.38 | 8.59 | +| Returndatasize Nonzero (0.8M, Returned Size 1, Return Data Style Returndatastyle.Identity) | 13.21 | 8.59 | +| Returndatasize Nonzero (0.8M, Returned Size 1, Return Data Style Returndatastyle.Return) | 13.08 | 9.15 | +| Returndatasize Nonzero (0.8M, Returned Size 1, Return Data Style Returndatastyle.Revert) | 12.87 | 8.61 | +| Returndatasize Zero (0.8M) | 13.35 | 8.59 | +| Selfbalance (0.8M) | 70.02 | 29.80 | +| Selfdestruct Created (0.8M, No Value) | 4.46 | 6.06 | +| Selfdestruct Created (0.8M, With Value) | 4.27 | 6.56 | +| Selfdestruct Existing (0.8M, No Value) | 7.12 | 7.07 | +| Selfdestruct Existing (0.8M, With Value) | 7.55 | 7.07 | +| Selfdestruct Initcode (0.8M, No Value) | 3.79 | 6.06 | +| Selfdestruct Initcode (0.8M, With Value) | 3.94 | 6.05 | +| Shifts (0.8M, Shift Right Sar) | 21.20 | 11.11 | +| Shifts (0.8M, Shift Right Shr) | 20.34 | 11.11 | +| Storage Access Cold (0.8M, Absent Slots False, Ssload) | 10.91 | 7.58 | +| Storage Access Cold (0.8M, Absent Slots False, Sstore New Value) | 7.28 | 7.07 | +| Storage Access Cold (0.8M, Absent Slots False, Sstore New Value, Out Of Gas) | 7.57 | 6.57 | +| Storage Access Cold (0.8M, Absent Slots False, Sstore New Value, Revert) | 7.28 | 6.07 | +| Storage Access Cold (0.8M, Absent Slots False, Sstore Same Value) | 9.53 | 8.08 | +| Storage Access Cold (0.8M, Absent Slots False, Sstore Same Value, Out Of Gas) | 10.33 | 7.57 | +| Storage Access Cold (0.8M, Absent Slots False, Sstore Same Value, Revert) | 10.74 | 7.07 | +| Storage Access Cold (0.8M, Absent Slots True, Ssload) | 9.59 | 7.07 | +| Storage Access Cold (0.8M, Absent Slots True, Sstore New Value) | 5.02 | 6.08 | +| Storage Access Cold (0.8M, Absent Slots True, Sstore New Value, Out Of Gas) | 4.33 | 5.57 | +| Storage Access Cold (0.8M, Absent Slots True, Sstore New Value, Revert) | 4.64 | 6.07 | +| Storage Access Cold (0.8M, Absent Slots True, Sstore Same Value) | 4.64 | 6.06 | +| Storage Access Cold (0.8M, Absent Slots True, Sstore Same Value, Out Of Gas) | 4.15 | 6.06 | +| Storage Access Cold (0.8M, Absent Slots True, Sstore Same Value, Revert) | 4.07 | 6.06 | +| Storage Access Warm (0.8M, Sload) | 10.97 | 8.09 | +| Storage Access Warm (0.8M, Sstore New Value) | 19.34 | 10.60 | +| Storage Access Warm (0.8M, Sstore Same Value) | 15.90 | 9.58 | +| Swap (0.8M, Swap1) | 20.05 | 12.62 | +| Swap (0.8M, Swap10) | 19.86 | 12.13 | +| Swap (0.8M, Swap11) | 18.92 | 13.13 | +| Swap (0.8M, Swap12) | 19.52 | 12.12 | +| Swap (0.8M, Swap13) | 19.21 | 13.12 | +| Swap (0.8M, Swap14) | 20.35 | 12.64 | +| Swap (0.8M, Swap15) | 20.09 | 12.13 | +| Swap (0.8M, Swap16) | 19.09 | 12.12 | +| Swap (0.8M, Swap2) | 20.07 | 12.09 | +| Swap (0.8M, Swap3) | 19.79 | 12.64 | +| Swap (0.8M, Swap4) | 19.26 | 12.12 | +| Swap (0.8M, Swap5) | 20.07 | 12.14 | +| Swap (0.8M, Swap6) | 20.56 | 12.61 | +| Swap (0.8M, Swap7) | 19.25 | 12.65 | +| Swap (0.8M, Swap8) | 18.99 | 12.64 | +| Swap (0.8M, Swap9) | 19.56 | 12.62 | +| Tload (0.8M, Val Mut False, Key Mut False) | 5.04 | 6.56 | +| Tload (0.8M, Val Mut False, Key Mut True) | 4.97 | 6.57 | +| Tload (0.8M, Val Mut True, Key Mut False) | 5.03 | 6.55 | +| Tload (0.8M, Val Mut True, Key Mut True) | 5.53 | 7.08 | +| Tstore (0.8M, Dense Val Mut False, Key Mut False) | 11.55 | 8.09 | +| Tstore (0.8M, Dense Val Mut False, Key Mut True) | 11.18 | 8.09 | +| Tstore (0.8M, Dense Val Mut True, Key Mut False) | 16.27 | 10.10 | +| Tstore (0.8M, Dense Val Mut True, Key Mut True) | 17.18 | 10.11 | +| Unop (0.8M, Iszero) | 21.26 | 14.64 | +| Unop (0.8M, Not) | 12.09 | 8.07 | +| Zero Param (0.8M, Address) | 23.89 | 12.62 | +| Zero Param (0.8M, Basefee) | 16.09 | 9.11 | +| Zero Param (0.8M, Blobbasefee) | 18.57 | 10.62 | +| Zero Param (0.8M, Caller) | 23.70 | 12.61 | +| Zero Param (0.8M, Chainid) | 15.53 | 10.09 | +| Zero Param (0.8M, Codesize) | 16.61 | 10.10 | +| Zero Param (0.8M, Coinbase) | 23.71 | 12.62 | +| Zero Param (0.8M, Gas) | 16.25 | 9.59 | +| Zero Param (0.8M, Gaslimit) | 16.44 | 9.59 | +| Zero Param (0.8M, Gasprice) | 18.75 | 10.63 | +| Zero Param (0.8M, Number) | 16.35 | 9.61 | +| Zero Param (0.8M, Origin) | 24.48 | 13.14 | +| Zero Param (0.8M, Prevrandao) | 26.89 | 15.68 | +| Zero Param (0.8M, Timestamp) | 15.51 | 10.62 | \ No newline at end of file diff --git a/www/docs/pages/benchmark-results/gas-categorized/0.8m/risc0-0.8M-4.md b/www/docs/pages/benchmark-results/gas-categorized/0.8m/risc0-0.8M-4.md new file mode 100644 index 00000000..a6d008e9 --- /dev/null +++ b/www/docs/pages/benchmark-results/gas-categorized/0.8m/risc0-0.8M-4.md @@ -0,0 +1,543 @@ +# zkEVM Benchmark Results + +Generated on: 2026-01-01 15:22:14 + +## Folder: zkevm-metrics-risc0-0.8M-4 + +**zkVM:** risc0-v3.0.3 (4 GPUs) + +**Hardware Configuration:** CPU: AMD EPYC 7B13 64-Core Processor | RAM: 371 GiB | GPU: NVIDIA GeForce RTX 4090, NVIDIA GeForce RTX 4090, NVIDIA GeForce RTX 4090, NVIDIA GeForce RTX 4090 + +## Proving Metrics + +| Benchmark | Gas Used | Proof Size (bytes) | Proving Time (ms) | Proving Time (s) | Peak Memory (MB) | Avg Memory (MB) | Initial Memory (MB) | +|---|---|---|---|---|---|---|---| +| Block Full Access List And Data (0.8M) | 799,990 | 223,239 | 5,374 | 5.37 | 4,552,008 | 4,552,008 | 4,552,008 | +| Block Full Data (0.8M, Non Zero Byte) | 800,000 | 223,239 | 4,591 | 4.59 | 6,441,404 | 6,441,404 | 6,437,500 | +| Block Full Data (0.8M, Zero Byte) | 800,000 | 223,239 | 6,883 | 6.88 | 1,944,248 | 1,943,076.8 | 1,938,392 | +| Block Full Of Ether Transfers (0.8M, A To A) | 798,000 | 223,239 | 12,254 | 12.25 | 5,826,576 | 5,822,950.9 | 5,818,768 | +| Block Full Of Ether Transfers (0.8M, A To B) | 798,000 | 223,239 | 10,991 | 10.99 | 4,666,164 | 4,666,164 | 4,664,212 | +| Block Full Of Ether Transfers (0.8M, A To Diff Acc) | 798,000 | 223,239 | 12,824 | 12.82 | 4,674,932 | 4,674,932 | 4,674,932 | +| Block Full Of Ether Transfers (0.8M, Diff Acc To B) | 798,000 | 223,239 | 12,549 | 12.55 | 6,589,704 | 6,589,006.9 | 6,584,824 | +| Block Full Of Ether Transfers (0.8M, Diff Acc To Diff Acc) | 798,000 | 223,239 | 11,734 | 11.73 | 5,085,800 | 5,085,678 | 5,084,824 | +| Bytecode Single Opcode (0.8M, Callcode) | 800,000 | 223,239 | 79,869 | 79.87 | 6,647,268 | 6,645,541.1 | 6,639,460 | +| Bytecode Single Opcode (0.8M, Call) | 800,000 | 223,239 | 81,145 | 81.14 | 1,464,060 | 1,394,478.3 | 1,270,812 | +| Bytecode Single Opcode (0.8M, Delegatecall) | 800,000 | 223,239 | 80,305 | 80.31 | 4,658,368 | 4,658,368 | 4,651,536 | +| Bytecode Single Opcode (0.8M, Extcodecopy) | 800,000 | 223,239 | 76,975 | 76.97 | 5,813,888 | 5,809,233.2 | 5,806,080 | +| Bytecode Single Opcode (0.8M, Extcodehash) | 800,000 | 223,239 | 79,532 | 79.53 | 4,585,184 | 4,585,184 | 4,584,208 | +| Bytecode Single Opcode (0.8M, Extcodesize) | 800,000 | 223,239 | 79,900 | 79.90 | 6,611,164 | 6,611,013.8 | 6,606,284 | +| Bytecode Single Opcode (0.8M, Staticcall) | 800,000 | 223,239 | 80,276 | 80.28 | 4,725,668 | 4,721,066.9 | 4,718,836 | +| Create (0.8M, 0Bytes, Create2) | 800,000 | 223,239 | 4,980 | 4.98 | 6,779,940 | 6,779,940 | 6,779,940 | +| Create (0.8M, 0Bytes, Create) | 800,000 | 223,239 | 4,474 | 4.47 | 4,551,036 | 4,551,036 | 4,550,060 | +| Create (0.8M, 0Bytes, Create2) | 800,000 | 223,239 | 4,510 | 4.51 | 6,764,332 | 6,764,332 | 6,764,332 | +| Create (0.8M, 0Bytes, Create) | 800,000 | 223,239 | 4,564 | 4.56 | 6,419,932 | 6,419,932 | 6,417,980 | +| Create (0.8M, 0.25X Max Code, Zero Data, Create2) | 800,000 | 223,239 | 4,462 | 4.46 | 6,031,532 | 6,031,532 | 6,027,628 | +| Create (0.8M, 0.25X Max Code, Zero Data, Create) | 800,000 | 223,239 | 4,729 | 4.73 | 4,201,676 | 4,201,025.3 | 4,198,748 | +| Create (0.8M, 0.25X Max Code, Create2) | 800,000 | 223,239 | 4,623 | 4.62 | 4,674,936 | 4,674,448 | 4,672,984 | +| Create (0.8M, 0.25X Max Code, Create) | 800,000 | 223,239 | 4,937 | 4.94 | 3,829,840 | 3,829,596 | 3,826,912 | +| Create (0.8M, 0.50X Max Code Size With Non, Zero Data, Create2) | 800,000 | 223,239 | 4,788 | 4.79 | 3,580,008 | 3,579,276 | 3,575,128 | +| Create (0.8M, 0.50X Max Code Size With Non, Zero Data, Create) | 800,000 | 223,239 | 4,996 | 5.00 | 6,549,696 | 6,549,696 | 6,547,744 | +| Create (0.8M, 0.50X Max Code Size With Zero Data, Create2) | 800,000 | 223,239 | 4,485 | 4.49 | 6,658,000 | 6,656,536 | 6,654,096 | +| Create (0.8M, 0.50X Max Code Size With Zero Data, Create) | 800,000 | 223,239 | 4,832 | 4.83 | 4,288,536 | 4,288,210.7 | 4,287,560 | +| Create (0.8M, 0.75X Max Code Size With Non, Zero Data, Create2) | 800,000 | 223,239 | 5,860 | 5.86 | 4,455,412 | 4,455,412 | 4,448,580 | +| Create (0.8M, 0.75X Max Code Size With Non, Zero Data, Create) | 800,000 | 223,239 | 5,213 | 5.21 | 5,633,336 | 5,632,848 | 5,630,408 | +| Create (0.8M, 0.75X Max Code Size With Zero Data, Create2) | 800,000 | 223,239 | 4,485 | 4.49 | 4,590,064 | 4,589,332 | 4,589,088 | +| Create (0.8M, 0.75X Max Code Size With Zero Data, Create) | 800,000 | 223,239 | 4,930 | 4.93 | 4,672,008 | 4,670,544 | 4,668,104 | +| Create (0.8M, Max Code, Zero Data, Create2) | 800,000 | 223,239 | 6,143 | 6.14 | 4,287,560 | 4,287,560 | 4,285,608 | +| Create (0.8M, Max Code, Zero Data, Create) | 800,000 | 223,239 | 6,042 | 6.04 | 6,773,108 | 6,773,108 | 6,773,108 | +| Create (0.8M, Max Code, Create2) | 800,000 | 223,239 | 4,842 | 4.84 | 6,529,212 | 6,529,212 | 6,529,212 | +| Create (0.8M, Max Code, Create) | 800,000 | 223,239 | 5,245 | 5.25 | 2,427,368 | 2,426,229.3 | 2,424,440 | +| Creates Collisions (0.8M, Create2) | 800,000 | 223,239 | 4,462 | 4.46 | 6,530,184 | 6,530,184 | 6,529,208 | +| Creates Collisions (0.8M, Create) | 800,000 | 223,239 | 5,053 | 5.05 | 6,781,892 | 6,781,892 | 6,781,892 | +| Initcode Jumpdest Analysis (0.8M, 00) | 800,000 | 223,239 | 10,331 | 10.33 | 6,042,260 | 6,042,260 | 6,036,404 | +| Initcode Jumpdest Analysis (0.8M, 5B) | 800,000 | 223,239 | 13,504 | 13.50 | 6,759,452 | 6,759,452 | 6,753,596 | +| Initcode Jumpdest Analysis (0.8M, 605B5B) | 800,000 | 223,239 | 11,575 | 11.57 | 3,904,984 | 3,904,274.2 | 3,900,104 | +| Initcode Jumpdest Analysis (0.8M, 605B) | 800,000 | 223,239 | 9,106 | 9.11 | 6,762,376 | 6,762,376 | 6,762,376 | +| Initcode Jumpdest Analysis (0.8M, 615B5B5B) | 800,000 | 223,239 | 10,337 | 10.34 | 3,357,484 | 3,356,020 | 3,352,604 | +| Initcode Jumpdest Analysis (0.8M, 615B5B) | 800,000 | 223,239 | 10,282 | 10.28 | 4,748,112 | 4,747,868 | 4,745,184 | +| Amortized Bn128 Pairings (0.8M) | 800,000 | 223,239 | 65,981 | 65.98 | 6,730,196 | 6,730,196 | 6,730,196 | +| Empty Block (0.8M) | 0 | 223,239 | 3,793 | 3.79 | 6,740,912 | 6,740,912 | 6,740,912 | +| Binop Simple (0.8M, Add) | 800,000 | 223,239 | 13,825 | 13.82 | 4,665,188 | 4,665,188 | 4,664,212 | +| Binop Simple (0.8M, And) | 800,000 | 223,239 | 12,645 | 12.64 | 6,764,332 | 6,764,332 | 6,763,356 | +| Binop Simple (0.8M, Byte) | 800,000 | 223,239 | 12,575 | 12.57 | 4,693,472 | 4,693,472 | 4,689,572 | +| Binop Simple (0.8M, Div, 0) | 800,000 | 223,239 | 51,353 | 51.35 | 4,647,632 | 4,647,632 | 4,646,656 | +| Binop Simple (0.8M, Div, 1) | 800,000 | 223,239 | 47,620 | 47.62 | 6,763,352 | 6,763,352 | 6,763,352 | +| Binop Simple (0.8M, Eq) | 800,000 | 223,239 | 20,663 | 20.66 | 6,660,928 | 6,657,512 | 6,657,024 | +| Binop Simple (0.8M, Exp) | 800,000 | 223,239 | 32,484 | 32.48 | 6,011,036 | 6,008,758.7 | 6,003,228 | +| Binop Simple (0.8M, Gt) | 800,000 | 223,239 | 13,013 | 13.01 | 4,833,020 | 4,833,020 | 4,830,092 | +| Binop Simple (0.8M, Lt) | 800,000 | 223,239 | 12,964 | 12.96 | 4,408,564 | 4,407,100 | 4,403,684 | +| Binop Simple (0.8M, Mod) | 800,000 | 223,239 | 18,657 | 18.66 | 3,956,708 | 3,953,292 | 3,948,900 | +| Binop Simple (0.8M, Mul) | 800,000 | 223,239 | 19,257 | 19.26 | 4,594,940 | 4,594,614.7 | 4,590,060 | +| Binop Simple (0.8M, Or) | 800,000 | 223,239 | 11,551 | 11.55 | 6,536,036 | 6,536,036 | 6,536,036 | +| Binop Simple (0.8M, Sar) | 800,000 | 223,239 | 23,263 | 23.26 | 4,469,068 | 4,469,068 | 4,465,164 | +| Binop Simple (0.8M, Sdiv, 0) | 800,000 | 223,239 | 56,844 | 56.84 | 4,823,264 | 4,800,610.5 | 4,775,440 | +| Binop Simple (0.8M, Sdiv, 1) | 800,000 | 223,239 | 57,593 | 57.59 | 4,857,420 | 4,843,501.4 | 4,833,996 | +| Binop Simple (0.8M, Sgt) | 800,000 | 223,239 | 22,723 | 22.72 | 4,694,448 | 4,694,285.3 | 4,693,472 | +| Binop Simple (0.8M, Shl) | 800,000 | 223,239 | 19,710 | 19.71 | 3,482,408 | 3,479,805.3 | 3,474,600 | +| Binop Simple (0.8M, Shr) | 800,000 | 223,239 | 19,576 | 19.58 | 4,648,608 | 4,648,608 | 4,648,608 | +| Binop Simple (0.8M, Signextend) | 800,000 | 223,239 | 18,517 | 18.52 | 6,293,076 | 6,293,076 | 6,290,148 | +| Binop Simple (0.8M, Slt) | 800,000 | 223,239 | 14,160 | 14.16 | 6,406,272 | 6,406,272 | 6,406,272 | +| Binop Simple (0.8M, Smod) | 800,000 | 223,239 | 20,223 | 20.22 | 6,593,604 | 6,593,604 | 6,593,604 | +| Binop Simple (0.8M, Sub) | 800,000 | 223,239 | 15,328 | 15.33 | 3,838,624 | 3,838,038.4 | 3,836,672 | +| Binop Simple (0.8M, Xor) | 800,000 | 223,239 | 12,636 | 12.64 | 4,703,220 | 4,703,220 | 4,701,268 | +| Blobhash (0.8M, No Blobs) | 800,000 | 223,239 | 12,890 | 12.89 | 6,675,560 | 6,675,560 | 6,671,656 | +| Blobhash (0.8M, One Blob And Accessed) | 800,000 | 223,239 | 17,564 | 17.56 | 6,406,272 | 6,406,272 | 6,404,320 | +| Blobhash (0.8M, One Blob But Access Non, Existent Index) | 800,000 | 223,239 | 13,050 | 13.05 | 6,732,148 | 6,732,148 | 6,731,172 | +| Blobhash (0.8M, Six Blobs, Access Latest) | 800,000 | 223,239 | 17,227 | 17.23 | 756,468 | 750,944.7 | 729,140 | +| Calldataload (0.8M, Empty) | 800,000 | 223,239 | 21,781 | 21.78 | 6,584,824 | 6,584,824 | 6,584,824 | +| Calldataload (0.8M, One, Loop) | 800,000 | 223,239 | 24,876 | 24.88 | 1,049,268 | 1,029,370.2 | 1,000,468 | +| Calldataload (0.8M, Zero, Loop) | 800,000 | 223,239 | 25,399 | 25.40 | 4,894,508 | 4,886,212 | 4,882,796 | +| Calldatasize (0.8M, Calldata Length 0) | 800,000 | 223,239 | 13,004 | 13.00 | 6,769,208 | 6,767,906.7 | 6,764,328 | +| Calldatasize (0.8M, Calldata Length 10000) | 800,000 | 223,239 | 12,211 | 12.21 | 4,871,084 | 4,867,458.9 | 4,862,300 | +| Calldatasize (0.8M, Calldata Length 1000) | 800,000 | 223,239 | 12,560 | 12.56 | 6,744,816 | 6,744,816 | 6,743,840 | +| Callvalue (0.8M, From Origin False, Non Zero Value False) | 800,000 | 223,239 | 13,900 | 13.90 | 4,545,180 | 4,545,180 | 4,541,276 | +| Callvalue (0.8M, From Origin False, Non Zero Value True) | 800,000 | 223,239 | 14,231 | 14.23 | 6,582,872 | 6,582,286.4 | 6,580,920 | +| Callvalue (0.8M, From Origin True, Non Zero Value False) | 800,000 | 223,239 | 14,245 | 14.24 | 4,488,584 | 4,488,584 | 4,487,608 | +| Callvalue (0.8M, From Origin True, Non Zero Value True) | 800,000 | 223,239 | 15,156 | 15.16 | 3,679,556 | 3,678,580 | 3,673,700 | +| Dup (0.8M, Dup10) | 800,000 | 223,239 | 12,282 | 12.28 | 4,674,932 | 4,674,932 | 4,673,956 | +| Dup (0.8M, Dup11) | 800,000 | 223,239 | 12,128 | 12.13 | 4,279,752 | 4,278,288 | 4,274,872 | +| Dup (0.8M, Dup12) | 800,000 | 223,239 | 12,115 | 12.12 | 1,000,468 | 981,972.8 | 956,548 | +| Dup (0.8M, Dup13) | 800,000 | 223,239 | 12,368 | 12.37 | 6,579,944 | 6,579,944 | 6,579,944 | +| Dup (0.8M, Dup14) | 800,000 | 223,239 | 12,761 | 12.76 | 6,621,896 | 6,621,245.3 | 6,620,920 | +| Dup (0.8M, Dup15) | 800,000 | 223,239 | 13,072 | 13.07 | 3,539,016 | 3,538,318.9 | 3,532,184 | +| Dup (0.8M, Dup16) | 800,000 | 223,239 | 12,971 | 12.97 | 4,404,660 | 4,403,928 | 4,402,708 | +| Dup (0.8M, Dup1) | 800,000 | 223,239 | 12,339 | 12.34 | 5,612,840 | 5,609,668 | 5,606,984 | +| Dup (0.8M, Dup2) | 800,000 | 223,239 | 12,739 | 12.74 | 1,256,176 | 1,238,120 | 1,214,208 | +| Dup (0.8M, Dup3) | 800,000 | 223,239 | 10,300 | 10.30 | 6,600,432 | 6,600,432 | 6,600,432 | +| Dup (0.8M, Dup4) | 800,000 | 223,239 | 12,331 | 12.33 | 4,325,624 | 4,325,526 | 4,325,624 | +| Dup (0.8M, Dup5) | 800,000 | 223,239 | 12,209 | 12.21 | 4,699,320 | 4,699,320 | 4,698,344 | +| Dup (0.8M, Dup6) | 800,000 | 223,239 | 11,863 | 11.86 | 6,739,936 | 6,739,936 | 6,738,960 | +| Dup (0.8M, Dup7) | 800,000 | 223,239 | 11,913 | 11.91 | 6,763,356 | 6,762,054.7 | 6,759,452 | +| Dup (0.8M, Dup8) | 800,000 | 223,239 | 11,987 | 11.99 | 5,649,924 | 5,647,972 | 5,642,116 | +| Dup (0.8M, Dup9) | 800,000 | 223,239 | 11,918 | 11.92 | 4,574,448 | 4,574,122.7 | 4,574,448 | +| Jumpdests (0.8M) | 800,000 | 223,239 | 13,402 | 13.40 | 4,771,536 | 4,769,258.7 | 4,763,728 | +| Jumpi Fallthrough (0.8M) | 800,000 | 223,239 | 14,881 | 14.88 | 4,762,752 | 4,761,450.7 | 4,760,800 | +| Jumpis (0.8M) | 800,000 | 223,239 | 12,196 | 12.20 | 6,698,004 | 6,698,004 | 6,698,004 | +| Jumps (0.8M) | 800,000 | 223,239 | 11,501 | 11.50 | 4,254,376 | 4,254,376 | 4,251,448 | +| Keccak (0.8M) | 800,000 | 223,239 | 37,701 | 37.70 | 6,741,888 | 6,741,888 | 6,741,888 | +| Memory Access (0.8M, Small Mem, Uninit Offset, Off 0, Mload) | 800,000 | 223,239 | 15,935 | 15.94 | 1,698,300 | 1,694,287.6 | 1,682,684 | +| Memory Access (0.8M, Small Mem, Uninit Offset, Off 0, Mstore8) | 800,000 | 223,239 | 12,314 | 12.31 | 6,594,576 | 6,594,250.7 | 6,592,624 | +| Memory Access (0.8M, Small Mem, Uninit Offset, Off 0, Mstore) | 800,000 | 223,239 | 16,149 | 16.15 | 4,541,276 | 4,539,649.3 | 4,535,420 | +| Memory Access (0.8M, Small Mem, Uninit Offset, Off 1, Mload) | 800,000 | 223,239 | 16,601 | 16.60 | 3,985,008 | 3,983,854.5 | 3,981,104 | +| Memory Access (0.8M, Small Mem, Uninit Offset, Off 1, Mstore8) | 800,000 | 223,239 | 13,094 | 13.09 | 5,888,064 | 5,882,858.7 | 5,877,328 | +| Memory Access (0.8M, Small Mem, Uninit Offset, Off 1, Mstore) | 800,000 | 223,239 | 15,158 | 15.16 | 4,688,596 | 4,688,596 | 4,687,620 | +| Memory Access (0.8M, Small Mem, Uninit Offset, Off 31, Mload) | 800,000 | 223,239 | 15,223 | 15.22 | 4,296,344 | 4,296,344 | 4,296,344 | +| Memory Access (0.8M, Small Mem, Uninit Offset, Off 31, Mstore8) | 800,000 | 223,239 | 11,893 | 11.89 | 5,636,264 | 5,634,116.8 | 5,632,360 | +| Memory Access (0.8M, Small Mem, Uninit Offset, Off 31, Mstore) | 800,000 | 223,239 | 15,768 | 15.77 | 6,709,708 | 6,709,342 | 6,704,828 | +| Memory Access (0.8M, Small Mem, Init Offset, Off 0, Mload) | 800,000 | 223,239 | 16,898 | 16.90 | 3,554,632 | 3,553,330.7 | 3,548,776 | +| Memory Access (0.8M, Small Mem, Init Offset, Off 0, Mstore8) | 800,000 | 223,239 | 13,042 | 13.04 | 6,034,460 | 6,032,291.1 | 6,030,556 | +| Memory Access (0.8M, Small Mem, Init Offset, Off 0, Mstore) | 800,000 | 223,239 | 16,410 | 16.41 | 3,599,524 | 3,596,862.2 | 3,592,692 | +| Memory Access (0.8M, Small Mem, Init Offset, Off 1, Mload) | 800,000 | 223,239 | 15,267 | 15.27 | 4,344,148 | 4,339,918.7 | 4,336,340 | +| Memory Access (0.8M, Small Mem, Init Offset, Off 1, Mstore8) | 800,000 | 223,239 | 12,496 | 12.50 | 6,733,116 | 6,733,116 | 6,732,140 | +| Memory Access (0.8M, Small Mem, Init Offset, Off 1, Mstore) | 800,000 | 223,239 | 16,181 | 16.18 | 1,087,332 | 1,073,623.6 | 1,050,244 | +| Memory Access (0.8M, Small Mem, Init Offset, Off 31, Mload) | 800,000 | 223,239 | 16,114 | 16.11 | 3,997,692 | 3,990,862.7 | 3,986,960 | +| Memory Access (0.8M, Small Mem, Init Offset, Off 31, Mstore8) | 800,000 | 223,239 | 12,606 | 12.61 | 5,627,480 | 5,621,902.9 | 5,617,720 | +| Memory Access (0.8M, Small Mem, Init Offset, Off 31, Mstore) | 800,000 | 223,239 | 15,790 | 15.79 | 4,649,584 | 4,649,584 | 4,647,632 | +| Memory Access (0.8M, Big Mem, Uninit Offset, Off 0, Mload) | 800,000 | 223,239 | 16,221 | 16.22 | 6,552,620 | 6,552,620 | 6,549,692 | +| Memory Access (0.8M, Big Mem, Uninit Offset, Off 0, Mstore8) | 800,000 | 223,239 | 12,662 | 12.66 | 4,169,468 | 4,169,468 | 4,167,516 | +| Memory Access (0.8M, Big Mem, Uninit Offset, Off 0, Mstore) | 800,000 | 223,239 | 15,083 | 15.08 | 3,935,240 | 3,934,155.6 | 3,929,384 | +| Memory Access (0.8M, Big Mem, Uninit Offset, Off 1, Mload) | 800,000 | 223,239 | 15,727 | 15.73 | 4,578,352 | 4,577,021.1 | 4,575,424 | +| Memory Access (0.8M, Big Mem, Uninit Offset, Off 1, Mstore8) | 800,000 | 223,239 | 12,385 | 12.38 | 4,900,364 | 4,899,778.4 | 4,895,484 | +| Memory Access (0.8M, Big Mem, Uninit Offset, Off 1, Mstore) | 800,000 | 223,239 | 15,663 | 15.66 | 4,465,164 | 4,462,724 | 4,457,356 | +| Memory Access (0.8M, Big Mem, Uninit Offset, Off 31, Mload) | 800,000 | 223,239 | 15,683 | 15.68 | 840,404 | 829,820.5 | 803,316 | +| Memory Access (0.8M, Big Mem, Uninit Offset, Off 31, Mstore8) | 800,000 | 223,239 | 12,297 | 12.30 | 4,419,300 | 4,418,446 | 4,418,324 | +| Memory Access (0.8M, Big Mem, Uninit Offset, Off 31, Mstore) | 800,000 | 223,239 | 15,702 | 15.70 | 5,084,824 | 5,084,824 | 5,077,992 | +| Memory Access (0.8M, Big Mem, Init Offset, Off 0, Mload) | 800,000 | 223,239 | 15,613 | 15.61 | 4,600,796 | 4,600,795.5 | 4,599,820 | +| Memory Access (0.8M, Big Mem, Init Offset, Off 0, Mstore8) | 800,000 | 223,239 | 12,584 | 12.58 | 6,738,964 | 6,738,964 | 6,738,964 | +| Memory Access (0.8M, Big Mem, Init Offset, Off 0, Mstore) | 800,000 | 223,239 | 15,567 | 15.57 | 4,633,000 | 4,631,589.8 | 4,627,144 | +| Memory Access (0.8M, Big Mem, Init Offset, Off 1, Mload) | 800,000 | 223,239 | 15,870 | 15.87 | 6,672,632 | 6,672,632 | 6,670,680 | +| Memory Access (0.8M, Big Mem, Init Offset, Off 1, Mstore8) | 800,000 | 223,239 | 12,116 | 12.12 | 4,604,696 | 4,604,696 | 4,603,720 | +| Memory Access (0.8M, Big Mem, Init Offset, Off 1, Mstore) | 800,000 | 223,239 | 16,728 | 16.73 | 2,509,348 | 2,500,564 | 2,489,828 | +| Memory Access (0.8M, Big Mem, Init Offset, Off 31, Mload) | 800,000 | 223,239 | 14,445 | 14.45 | 6,628,728 | 6,628,728 | 6,628,728 | +| Memory Access (0.8M, Big Mem, Init Offset, Off 31, Mstore8) | 800,000 | 223,239 | 12,712 | 12.71 | 4,672,984 | 4,672,984 | 4,672,984 | +| Memory Access (0.8M, Big Mem, Init Offset, Off 31, Mstore) | 800,000 | 223,239 | 15,162 | 15.16 | 6,681,416 | 6,681,294 | 6,680,440 | +| Mod (0.8M, Op Mod, Mod Bits 127) | 800,000 | 223,239 | 48,376 | 48.38 | 3,698,100 | 3,697,232.4 | 3,692,244 | +| Mod (0.8M, Op Mod, Mod Bits 191) | 800,000 | 223,239 | 59,542 | 59.54 | 5,693,844 | 5,687,060.8 | 5,669,444 | +| Mod (0.8M, Op Mod, Mod Bits 255) | 800,000 | 223,239 | 46,602 | 46.60 | 4,228,028 | 4,227,336.7 | 4,222,172 | +| Mod (0.8M, Op Mod, Mod Bits 63) | 800,000 | 223,239 | 34,176 | 34.18 | 6,719,468 | 6,719,413.8 | 6,716,540 | +| Mod (0.8M, Op Smod, Mod Bits 127) | 800,000 | 223,239 | 51,325 | 51.33 | 1,733,432 | 1,718,500.8 | 1,699,276 | +| Mod (0.8M, Op Smod, Mod Bits 191) | 800,000 | 223,239 | 61,810 | 61.81 | 6,027,628 | 6,023,761.5 | 6,012,012 | +| Mod (0.8M, Op Smod, Mod Bits 255) | 800,000 | 223,239 | 47,774 | 47.77 | 6,635,556 | 6,635,556 | 6,630,676 | +| Mod (0.8M, Op Smod, Mod Bits 63) | 800,000 | 223,239 | 37,076 | 37.08 | 3,845,456 | 3,845,456 | 3,840,576 | +| Modarith (0.8M, Op Addmod, Mod Bits 127) | 800,000 | 223,239 | 38,415 | 38.41 | 4,580,304 | 4,580,304 | 4,580,304 | +| Modarith (0.8M, Op Addmod, Mod Bits 191) | 800,000 | 223,239 | 45,038 | 45.04 | 6,274,548 | 6,273,988 | 6,272,596 | +| Modarith (0.8M, Op Addmod, Mod Bits 255) | 800,000 | 223,239 | 38,454 | 38.45 | 4,731,520 | 4,729,134.2 | 4,728,592 | +| Modarith (0.8M, Op Addmod, Mod Bits 63) | 800,000 | 223,239 | 28,741 | 28.74 | 6,538,964 | 6,538,964 | 6,538,964 | +| Modarith (0.8M, Op Mulmod, Mod Bits 127) | 800,000 | 223,239 | 62,632 | 62.63 | 6,780,916 | 6,780,916 | 6,780,916 | +| Modarith (0.8M, Op Mulmod, Mod Bits 191) | 800,000 | 223,239 | 86,141 | 86.14 | 4,393,924 | 4,387,667.6 | 4,384,164 | +| Modarith (0.8M, Op Mulmod, Mod Bits 255) | 800,000 | 223,239 | 86,245 | 86.25 | 4,252,428 | 4,249,500 | 4,238,764 | +| Modarith (0.8M, Op Mulmod, Mod Bits 63) | 800,000 | 223,239 | 51,454 | 51.45 | 6,605,308 | 6,603,844 | 6,600,428 | +| Modexp (0.8M, Mod 1045 Gas Base Heavy) | 800,000 | 223,239 | 835,417 | 835.42 | 4,166,540 | 4,114,439.3 | 4,031,852 | +| Modexp (0.8M, Mod 1360 Gas Balanced) | 800,000 | 223,239 | 208,798 | 208.80 | 4,553,956 | 4,553,956 | 4,553,956 | +| Modexp (0.8M, Mod 400 Gas Exp Heavy) | 800,000 | 223,239 | 266,348 | 266.35 | 4,686,644 | 4,683,317.6 | 4,676,884 | +| Modexp (0.8M, Mod 408 Gas Balanced) | 800,000 | 223,239 | 187,829 | 187.83 | 4,663,248 | 4,662,302.5 | 4,662,272 | +| Modexp (0.8M, Mod 408 Gas Base Heavy) | 800,000 | 223,239 | 754,708 | 754.71 | 6,716,540 | 6,715,328.6 | 6,712,636 | +| Modexp (0.8M, Mod 600 As Balanced) | 800,000 | 223,239 | 182,927 | 182.93 | 6,666,784 | 6,666,486.4 | 6,660,928 | +| Modexp (0.8M, Mod 600 Gas Exp Heavy) | 800,000 | 223,239 | 280,723 | 280.72 | 6,389,696 | 6,385,399.4 | 6,373,104 | +| Modexp (0.8M, Mod 616 Gas Base Heavy) | 800,000 | 223,239 | 792,019 | 792.02 | 5,605,032 | 5,501,548.1 | 5,213,656 | +| Modexp (0.8M, Mod 677 Gas Base Heavy) | 800,000 | 223,239 | 209,732 | 209.73 | 2,106,264 | 2,039,230.2 | 1,950,104 | +| Modexp (0.8M, Mod 765 Gas Exp Heavy) | 800,000 | 223,239 | 233,366 | 233.37 | 4,530,544 | 4,523,110.5 | 4,517,856 | +| Modexp (0.8M, Mod 767 Gas Balanced) | 800,000 | 223,239 | 180,401 | 180.40 | 6,526,284 | 6,526,284 | 6,526,284 | +| Modexp (0.8M, Mod 800 Gas Base Heavy) | 800,000 | 223,239 | 840,186 | 840.19 | 3,063,712 | 2,885,828.0 | 2,516,176 | +| Modexp (0.8M, Mod 800 Gas Exp Heavy) | 800,000 | 223,239 | 295,708 | 295.71 | 3,336,988 | 3,305,988.4 | 3,219,868 | +| Modexp (0.8M, Mod 852 Gas Exp Heavy) | 800,000 | 223,239 | 297,398 | 297.40 | 4,486,636 | 4,484,389.4 | 4,477,852 | +| Modexp (0.8M, Mod 867 Gas Base Heavy) | 800,000 | 223,239 | 824,336 | 824.34 | 6,526,284 | 6,514,686.1 | 6,477,484 | +| Modexp (0.8M, Mod 996 Gas Balanced) | 800,000 | 223,239 | 186,465 | 186.47 | 4,554,936 | 4,554,936 | 4,554,936 | +| Modexp (0.8M, Mod Even 1024B Exp 1024) | 800,000 | 223,239 | 4,609 | 4.61 | 3,447,272 | 3,447,272 | 3,446,296 | +| Modexp (0.8M, Mod Even 128B Exp 1024) | 800,000 | 223,239 | 157,185 | 157.19 | 6,724,344 | 6,724,344 | 6,723,368 | +| Modexp (0.8M, Mod Even 16B Exp 320) | 800,000 | 223,239 | 276,670 | 276.67 | 4,535,420 | 4,533,155.1 | 4,530,544 | +| Modexp (0.8M, Mod Even 24B Exp 168) | 800,000 | 223,239 | 226,017 | 226.02 | 4,664,212 | 4,664,168.9 | 4,663,236 | +| Modexp (0.8M, Mod Even 256B Exp 1024) | 800,000 | 223,239 | 149,639 | 149.64 | 6,624,824 | 6,624,824 | 6,624,824 | +| Modexp (0.8M, Mod Even 32B Exp 256) | 800,000 | 223,239 | 219,694 | 219.69 | 4,199,724 | 4,194,253.6 | 4,185,084 | +| Modexp (0.8M, Mod Even 32B Exp 40) | 800,000 | 223,239 | 178,651 | 178.65 | 5,205,848 | 5,156,602.8 | 5,085,800 | +| Modexp (0.8M, Mod Even 32B Exp 96) | 800,000 | 223,239 | 207,579 | 207.58 | 2,412,728 | 2,358,390.5 | 2,268,280 | +| Modexp (0.8M, Mod Even 512B Exp 1024) | 800,000 | 223,239 | 4,791 | 4.79 | 4,506,144 | 4,505,656 | 4,504,192 | +| Modexp (0.8M, Mod Even 64B Exp 512) | 800,000 | 223,239 | 188,987 | 188.99 | 3,752,756 | 3,748,566.3 | 3,729,332 | +| Modexp (0.8M, Mod Even 8B Exp 896) | 800,000 | 223,239 | 464,181 | 464.18 | 6,600,432 | 6,600,432 | 6,599,456 | +| Modexp (0.8M, Mod Exp 208 Gas Balanced) | 800,000 | 223,239 | 167,017 | 167.02 | 4,448,580 | 4,439,434.5 | 4,419,300 | +| Modexp (0.8M, Mod Exp 215 Gas Exp Heavy) | 800,000 | 223,239 | 412,764 | 412.76 | 4,574,448 | 4,571,874.9 | 4,566,640 | +| Modexp (0.8M, Mod Exp 298 Gas Exp Heavy) | 800,000 | 223,239 | 457,370 | 457.37 | 3,667,844 | 3,650,429.4 | 3,626,852 | +| Modexp (0.8M, Mod Min As Balanced) | 800,000 | 223,239 | 178,265 | 178.26 | 6,600,428 | 6,599,539.4 | 6,599,452 | +| Modexp (0.8M, Mod Min As Base Heavy) | 800,000 | N/A | N/A | N/A | N/A | N/A | N/A | +| Modexp (0.8M, Mod Min As Exp Heavy) | 800,000 | N/A | N/A | N/A | N/A | N/A | N/A | +| Modexp (0.8M, Mod Odd 1024B Exp 1024) | 800,000 | 223,239 | 4,907 | 4.91 | 4,662,268 | 4,662,268 | 4,662,268 | +| Modexp (0.8M, Mod Odd 128B Exp 1024) | 800,000 | 223,239 | 157,507 | 157.51 | 5,989,564 | 5,967,947.4 | 5,938,812 | +| Modexp (0.8M, Mod Odd 256B Exp 1024) | 800,000 | 223,239 | 152,274 | 152.27 | 6,553,592 | 6,552,658.4 | 6,552,616 | +| Modexp (0.8M, Mod Odd 32B Exp 256) | 800,000 | 223,239 | 217,602 | 217.60 | 3,447,272 | 3,435,412.7 | 3,418,968 | +| Modexp (0.8M, Mod Odd 32B Exp 96) | 800,000 | 223,239 | 196,619 | 196.62 | 6,578,968 | 6,578,340.6 | 6,577,016 | +| Modexp (0.8M, Mod Odd 32B Exp Cover Windows) | 800,000 | 223,239 | 157,009 | 157.01 | 5,795,348 | 5,763,558.3 | 5,727,028 | +| Modexp (0.8M, Mod Odd 512B Exp 1024) | 800,000 | 223,239 | 4,039 | 4.04 | 6,699,952 | 6,699,952 | 6,699,952 | +| Modexp (0.8M, Mod Odd 64B Exp 512) | 800,000 | 223,239 | 187,732 | 187.73 | 6,599,452 | 6,599,452 | 6,599,452 | +| Modexp (0.8M, Mod Pawel 2) | 800,000 | 223,239 | 267,322 | 267.32 | 3,418,972 | 3,393,431.2 | 3,359,436 | +| Modexp (0.8M, Mod Pawel 3) | 800,000 | 223,239 | 219,284 | 219.28 | 4,634,948 | 4,634,783.4 | 4,632,020 | +| Modexp (0.8M, Mod Pawel 4) | 800,000 | 223,239 | 194,647 | 194.65 | 4,554,936 | 4,554,463.7 | 4,552,008 | +| Modexp (0.8M, Mod Vul Common 1152N1) | 800,000 | 223,239 | 120,017 | 120.02 | 5,017,484 | 4,974,499.3 | 4,900,364 | +| Modexp (0.8M, Mod Vul Common 1349N1) | 800,000 | 223,239 | 171,887 | 171.89 | 6,693,124 | 6,693,124 | 6,685,316 | +| Modexp (0.8M, Mod Vul Common 1360N1) | 800,000 | 223,239 | 186,893 | 186.89 | 6,721,420 | 6,721,420 | 6,721,420 | +| Modexp (0.8M, Mod Vul Common 1360N2) | 800,000 | 223,239 | 175,233 | 175.23 | 1,926,680 | 1,874,284.2 | 1,787,112 | +| Modexp (0.8M, Mod Vul Common 200N1) | 800,000 | 223,239 | 95,053 | 95.05 | 6,679,464 | 6,678,097.6 | 6,676,536 | +| Modexp (0.8M, Mod Vul Common 200N2) | 800,000 | 223,239 | 125,730 | 125.73 | 700,840 | 665,527.5 | 574,936 | +| Modexp (0.8M, Mod Vul Common 200N3) | 800,000 | 223,239 | 123,388 | 123.39 | 4,274,872 | 4,271,840.2 | 4,266,088 | +| Modexp (0.8M, Mod Vul Example 1) | 800,000 | 223,239 | 218,730 | 218.73 | 1,680,732 | 1,608,349.9 | 1,477,724 | +| Modexp (0.8M, Mod Vul Example 2) | 800,000 | 223,239 | 201,532 | 201.53 | 4,220,220 | 4,216,044.9 | 4,207,532 | +| Modexp (0.8M, Mod Vul Guido 1 Even) | 800,000 | 223,239 | 145,279 | 145.28 | 5,875,376 | 5,850,657.7 | 5,833,408 | +| Modexp (0.8M, Mod Vul Guido 2 Even) | 800,000 | 223,239 | 258,838 | 258.84 | 3,895,228 | 3,873,027.9 | 3,864,000 | +| Modexp (0.8M, Mod Vul Guido 3 Even) | 800,000 | 223,239 | 395,691 | 395.69 | 4,504,192 | 4,502,754.6 | 4,499,312 | +| Modexp (0.8M, Mod Vul Marius 1 Even) | 800,000 | 223,239 | 233,307 | 233.31 | 3,824,000 | 3,822,101.6 | 3,807,408 | +| Modexp (0.8M, Mod Vul Nagydani 1 Pow 0X10001) | 800,000 | 223,239 | 152,523 | 152.52 | 6,550,672 | 6,550,672 | 6,549,696 | +| Modexp (0.8M, Mod Vul Nagydani 1 Qube) | 800,000 | 223,239 | 113,682 | 113.68 | 6,538,964 | 6,538,964 | 6,537,988 | +| Modexp (0.8M, Mod Vul Nagydani 1 Square) | 800,000 | 223,239 | 107,506 | 107.51 | 6,753,596 | 6,753,596 | 6,751,644 | +| Modexp (0.8M, Mod Vul Nagydani 2 Pow 0X10001) | 800,000 | 223,239 | 157,959 | 157.96 | 6,563,352 | 6,563,020.2 | 6,557,496 | +| Modexp (0.8M, Mod Vul Nagydani 2 Qube) | 800,000 | 223,239 | 345,046 | 345.05 | 6,373,104 | 6,333,394.7 | 6,305,760 | +| Modexp (0.8M, Mod Vul Nagydani 2 Square) | 800,000 | 223,239 | 313,539 | 313.54 | 3,527,304 | 3,520,172.4 | 3,506,808 | +| Modexp (0.8M, Mod Vul Nagydani 3 Pow 0X10001) | 800,000 | 223,239 | 152,127 | 152.13 | 2,249,736 | 2,204,259.0 | 2,144,328 | +| Modexp (0.8M, Mod Vul Nagydani 3 Qube) | 800,000 | N/A | N/A | N/A | N/A | N/A | N/A | +| Modexp (0.8M, Mod Vul Nagydani 3 Square) | 800,000 | 223,239 | 759,672 | 759.67 | 6,266,740 | 6,228,188 | 6,168,164 | +| Modexp (0.8M, Mod Vul Nagydani 4 Pow 0X10001) | 800,000 | 223,239 | 139,639 | 139.64 | 6,452,124 | 6,450,345.5 | 6,446,268 | +| Modexp (0.8M, Mod Vul Nagydani 4 Qube) | 800,000 | 223,239 | 886,607 | 886.61 | 6,747,740 | 6,745,763.8 | 6,744,812 | +| Modexp (0.8M, Mod Vul Nagydani 4 Square) | 800,000 | N/A | N/A | N/A | N/A | N/A | N/A | +| Modexp (0.8M, Mod Vul Nagydani 5 Pow 0X10001) | 800,000 | 223,239 | 130,387 | 130.39 | 4,552,012 | 4,551,082.3 | 4,551,036 | +| Modexp (0.8M, Mod Vul Nagydani 5 Qube) | 800,000 | N/A | N/A | N/A | N/A | N/A | N/A | +| Modexp (0.8M, Mod Vul Nagydani 5 Square) | 800,000 | 223,239 | 839,472 | 839.47 | 4,626,168 | 4,623,453.4 | 4,614,456 | +| Modexp (0.8M, Mod Vul Pawel 1 Exp Heavy) | 800,000 | 223,239 | 434,011 | 434.01 | 6,781,892 | 6,781,276.4 | 6,774,084 | +| Modexp (0.8M, Mod Vul Pawel 2 Exp Heavy) | 800,000 | 223,239 | 255,850 | 255.85 | 4,372,452 | 4,362,603.3 | 4,344,148 | +| Modexp (0.8M, Mod Vul Pawel 3 Exp Heavy) | 800,000 | 223,239 | 199,708 | 199.71 | 4,488,588 | 4,487,786.3 | 4,486,636 | +| Modexp (0.8M, Mod Vul Pawel 4 Exp Heavy) | 800,000 | 223,239 | 185,669 | 185.67 | 6,765,308 | 6,765,064 | 6,764,332 | +| Msize (0.8M, Mem Size 0) | 800,000 | 223,239 | 15,731 | 15.73 | 3,784,964 | 3,784,964 | 3,769,348 | +| Msize (0.8M, Mem Size 1000000) | 800,000 | 223,239 | 15,489 | 15.49 | 574,936 | 514,572.9 | 380,712 | +| Msize (0.8M, Mem Size 100000) | 800,000 | 223,239 | 17,084 | 17.08 | 3,944,024 | 3,941,177.3 | 3,935,240 | +| Msize (0.8M, Mem Size 1000) | 800,000 | 223,239 | 16,441 | 16.44 | 6,472,604 | 6,470,094.3 | 6,461,868 | +| Msize (0.8M, Mem Size 1) | 800,000 | 223,239 | 14,681 | 14.68 | 5,641,140 | 5,640,164 | 5,635,284 | +| Precompile Fixed Cost (0.8M, Blake2F) | 800,000 | 223,239 | 181,796 | 181.80 | 6,168,164 | 6,113,362.9 | 6,051,044 | +| Precompile Fixed Cost (0.8M, Bls12 Fp To G1) | 800,000 | 223,239 | 24,321 | 24.32 | 6,737,984 | 6,737,984 | 6,737,984 | +| Precompile Fixed Cost (0.8M, Bls12 Fp To G2) | 800,000 | 223,239 | 20,916 | 20.92 | 1,155,652 | 1,126,296.8 | 1,091,236 | +| Precompile Fixed Cost (0.8M, Bls12 G1Add) | 800,000 | 223,239 | 19,376 | 19.38 | 6,722,396 | 6,721,517.6 | 6,721,420 | +| Precompile Fixed Cost (0.8M, Bls12 G1Msm) | 800,000 | 223,239 | 4,662 | 4.66 | 6,733,120 | 6,733,120 | 6,732,144 | +| Precompile Fixed Cost (0.8M, Bls12 G2Add) | 800,000 | 223,239 | 21,783 | 21.78 | 4,465,164 | 4,465,164 | 4,465,164 | +| Precompile Fixed Cost (0.8M, Bls12 G2Msm) | 800,000 | 223,239 | 5,027 | 5.03 | 6,442,380 | 6,442,380 | 6,442,380 | +| Precompile Fixed Cost (0.8M, Bls12 Pairing Check) | 800,000 | 223,239 | 34,743 | 34.74 | 6,769,204 | 6,768,488.3 | 6,768,228 | +| Precompile Fixed Cost (0.8M, Bn128 Add) | 800,000 | 223,239 | 24,620 | 24.62 | 3,765,444 | 3,757,813.5 | 3,754,708 | +| Precompile Fixed Cost (0.8M, Bn128 Add 1 2) | 800,000 | 223,239 | 24,479 | 24.48 | 3,587,816 | 3,587,084 | 3,580,984 | +| Precompile Fixed Cost (0.8M, Bn128 Add Infinities) | 800,000 | 223,239 | 15,931 | 15.93 | 4,023,068 | 4,019,582.3 | 4,016,236 | +| Precompile Fixed Cost (0.8M, Bn128 Mul) | 800,000 | 223,239 | 67,885 | 67.89 | 6,533,112 | 6,533,112 | 6,532,136 | +| Precompile Fixed Cost (0.8M, Bn128 Mul 1 2 2 Scalar) | 800,000 | 223,239 | 7,680 | 7.68 | 4,296,344 | 4,296,344 | 4,295,368 | +| Precompile Fixed Cost (0.8M, Bn128 Mul 1 2 32 Byte Scalar) | 800,000 | 223,239 | 65,827 | 65.83 | 6,729,224 | 6,728,309 | 6,728,248 | +| Precompile Fixed Cost (0.8M, Bn128 Mul 32 Byte Coord And 2 Scalar) | 800,000 | 223,239 | 6,116 | 6.12 | 5,027,244 | 5,025,536 | 5,018,460 | +| Precompile Fixed Cost (0.8M, Bn128 Mul 32 Byte Coord And Scalar) | 800,000 | 223,239 | 63,413 | 63.41 | 6,557,496 | 6,557,496 | 6,556,520 | +| Precompile Fixed Cost (0.8M, Bn128 Mul Infinities 2 Scalar) | 800,000 | 223,239 | 6,052 | 6.05 | 6,417,980 | 6,417,980 | 6,417,004 | +| Precompile Fixed Cost (0.8M, Bn128 Mul Infinities 32 Byte Scalar) | 800,000 | 223,239 | 43,690 | 43.69 | 3,351,628 | 3,347,019.1 | 3,340,892 | +| Precompile Fixed Cost (0.8M, Bn128 One Pairing) | 800,000 | 223,239 | 59,384 | 59.38 | 6,532,136 | 6,532,075 | 6,532,136 | +| Precompile Fixed Cost (0.8M, Bn128 Two Pairings) | 800,000 | 223,239 | 57,940 | 57.94 | 4,649,584 | 4,649,130.9 | 4,648,608 | +| Precompile Fixed Cost (0.8M, Bn128 Two Pairings Empty) | 800,000 | 223,239 | 4,807 | 4.81 | 4,701,268 | 4,700,780 | 4,698,340 | +| Precompile Fixed Cost (0.8M, Ecrecover) | 800,000 | 223,239 | 66,492 | 66.49 | 6,723,372 | 6,723,372 | 6,723,372 | +| Precompile Fixed Cost (0.8M, Point Evaluation) | 800,000 | 223,239 | 70,407 | 70.41 | 4,660,320 | 4,660,320 | 4,659,344 | +| Precompile Only Data Input (0.8M, Identity) | 800,000 | 223,239 | 11,856 | 11.86 | 3,800,576 | 3,796,129.8 | 3,791,792 | +| Precompile Only Data Input (0.8M, Ripemd, 160) | 800,000 | 223,239 | 9,026 | 9.03 | 4,265,112 | 4,263,810.7 | 4,259,256 | +| Precompile Only Data Input (0.8M, Sha2, 256) | 800,000 | 223,239 | 6,616 | 6.62 | 3,083,232 | 3,080,792 | 3,075,424 | +| Push (0.8M, Push0) | 800,000 | 223,239 | 15,204 | 15.20 | 6,744,812 | 6,744,812 | 6,743,836 | +| Push (0.8M, Push10) | 800,000 | 223,239 | 14,515 | 14.52 | 6,566,280 | 6,565,629.3 | 6,562,376 | +| Push (0.8M, Push11) | 800,000 | 223,239 | 15,276 | 15.28 | 2,435,176 | 2,432,573.3 | 2,427,368 | +| Push (0.8M, Push12) | 800,000 | 223,239 | 14,382 | 14.38 | 6,547,744 | 6,547,744 | 6,542,864 | +| Push (0.8M, Push13) | 800,000 | 223,239 | 15,102 | 15.10 | 6,444,320 | 6,444,320 | 6,443,344 | +| Push (0.8M, Push14) | 800,000 | 223,239 | 15,701 | 15.70 | 6,668,732 | 6,668,732 | 6,668,732 | +| Push (0.8M, Push15) | 800,000 | 223,239 | 16,215 | 16.21 | 6,535,064 | 6,535,064 | 6,534,088 | +| Push (0.8M, Push16) | 800,000 | 223,239 | 15,656 | 15.66 | 4,297,320 | 4,296,777.8 | 4,296,344 | +| Push (0.8M, Push17) | 800,000 | 223,239 | 15,854 | 15.85 | 6,540,916 | 6,540,916 | 6,539,940 | +| Push (0.8M, Push18) | 800,000 | 223,239 | 16,632 | 16.63 | 3,587,812 | 3,587,812 | 3,587,812 | +| Push (0.8M, Push19) | 800,000 | 223,239 | 17,521 | 17.52 | 3,791,792 | 3,791,304 | 3,786,912 | +| Push (0.8M, Push1) | 800,000 | 223,239 | 11,796 | 11.80 | 4,565,664 | 4,565,664 | 4,561,760 | +| Push (0.8M, Push20) | 800,000 | 223,239 | 16,143 | 16.14 | 6,711,660 | 6,711,660 | 6,708,732 | +| Push (0.8M, Push21) | 800,000 | 223,239 | 16,737 | 16.74 | 5,656,756 | 5,656,024 | 5,654,804 | +| Push (0.8M, Push22) | 800,000 | 223,239 | 17,497 | 17.50 | 5,712,388 | 5,705,800 | 5,696,772 | +| Push (0.8M, Push23) | 800,000 | 223,239 | 16,571 | 16.57 | 4,693,468 | 4,693,468 | 4,693,468 | +| Push (0.8M, Push24) | 800,000 | 223,239 | 19,885 | 19.89 | 3,824,972 | 3,824,646.7 | 3,823,996 | +| Push (0.8M, Push25) | 800,000 | 223,239 | 18,792 | 18.79 | 4,589,088 | 4,588,697.6 | 4,587,136 | +| Push (0.8M, Push26) | 800,000 | 223,239 | 19,502 | 19.50 | 4,641,776 | 4,641,776 | 4,633,968 | +| Push (0.8M, Push27) | 800,000 | 223,239 | 19,407 | 19.41 | 4,775,440 | 4,775,440 | 4,774,464 | +| Push (0.8M, Push28) | 800,000 | 223,239 | 19,643 | 19.64 | 4,496,392 | 4,495,660 | 4,487,608 | +| Push (0.8M, Push29) | 800,000 | 223,239 | 19,242 | 19.24 | 4,651,536 | 4,651,010.5 | 4,649,584 | +| Push (0.8M, Push2) | 800,000 | 223,239 | 12,124 | 12.12 | 3,474,600 | 3,474,014.4 | 3,469,720 | +| Push (0.8M, Push30) | 800,000 | 223,239 | 20,305 | 20.30 | 3,787,892 | 3,787,892 | 3,787,892 | +| Push (0.8M, Push31) | 800,000 | 223,239 | 21,200 | 21.20 | 2,128,712 | 2,120,764.6 | 2,108,216 | +| Push (0.8M, Push32) | 800,000 | 223,239 | 19,952 | 19.95 | 6,417,008 | 6,416,297.8 | 6,416,032 | +| Push (0.8M, Push3) | 800,000 | 223,239 | 12,352 | 12.35 | 4,560,784 | 4,558,832 | 4,556,880 | +| Push (0.8M, Push4) | 800,000 | 223,239 | 12,639 | 12.64 | 3,489,240 | 3,489,240 | 3,484,360 | +| Push (0.8M, Push5) | 800,000 | 223,239 | 12,917 | 12.92 | 4,582,256 | 4,582,256 | 4,581,280 | +| Push (0.8M, Push6) | 800,000 | 223,239 | 13,478 | 13.48 | 4,322,696 | 4,320,744 | 4,316,840 | +| Push (0.8M, Push7) | 800,000 | 223,239 | 13,559 | 13.56 | 5,669,444 | 5,666,841.3 | 5,662,612 | +| Push (0.8M, Push8) | 800,000 | 223,239 | 13,729 | 13.73 | 5,063,356 | 5,061,892 | 5,060,428 | +| Push (0.8M, Push9) | 800,000 | 223,239 | 13,574 | 13.57 | 4,332,452 | 4,330,376 | 4,325,620 | +| Return Revert (0.8M, 1Kib Of Non, Zero Data, Return) | 800,000 | 223,239 | 15,977 | 15.98 | 4,661,288 | 4,661,288 | 4,661,288 | +| Return Revert (0.8M, 1Kib Of Non, Zero Data, Revert) | 800,000 | 223,239 | 16,892 | 16.89 | 4,603,720 | 4,603,720 | 4,600,792 | +| Return Revert (0.8M, 1Kib Of Zero Data, Return) | 800,000 | 223,239 | 19,613 | 19.61 | 2,466,404 | 2,460,269.1 | 2,446,884 | +| Return Revert (0.8M, 1Kib Of Zero Data, Revert) | 800,000 | 223,239 | 19,488 | 19.49 | 6,540,916 | 6,540,916 | 6,540,916 | +| Return Revert (0.8M, 1Mib Of Non, Zero Data, Return) | 800,000 | 223,239 | 5,047 | 5.05 | 6,566,280 | 6,566,280 | 6,565,304 | +| Return Revert (0.8M, 1Mib Of Non, Zero Data, Revert) | 800,000 | 223,239 | 4,837 | 4.84 | 4,500,292 | 4,500,292 | 4,498,340 | +| Return Revert (0.8M, 1Mib Of Zero Data, Return) | 800,000 | 223,239 | 4,610 | 4.61 | 2,268,280 | 2,267,792 | 2,263,400 | +| Return Revert (0.8M, 1Mib Of Zero Data, Revert) | 800,000 | 223,239 | 4,260 | 4.26 | 1,931,560 | 1,930,193.6 | 1,926,680 | +| Return Revert (0.8M, Empty, Return) | 800,000 | 223,239 | 23,275 | 23.27 | 6,404,320 | 6,404,320 | 6,402,368 | +| Return Revert (0.8M, Empty, Revert) | 800,000 | 223,239 | 25,054 | 25.05 | 4,301,224 | 4,299,360.7 | 4,297,320 | +| Returndatasize Nonzero (0.8M, Returned Size 0, Return Data Style Returndatastyle.Identity) | 800,000 | 223,239 | 13,160 | 13.16 | 1,760,760 | 1,748,672.6 | 1,733,432 | +| Returndatasize Nonzero (0.8M, Returned Size 0, Return Data Style Returndatastyle.Return) | 800,000 | 223,239 | 13,360 | 13.36 | 3,573,176 | 3,573,176 | 3,571,224 | +| Returndatasize Nonzero (0.8M, Returned Size 0, Return Data Style Returndatastyle.Revert) | 800,000 | 223,239 | 13,383 | 13.38 | 937,028 | 921,646.2 | 900,916 | +| Returndatasize Nonzero (0.8M, Returned Size 1, Return Data Style Returndatastyle.Identity) | 800,000 | 223,239 | 13,213 | 13.21 | 6,291,124 | 6,289,822.7 | 6,282,340 | +| Returndatasize Nonzero (0.8M, Returned Size 1, Return Data Style Returndatastyle.Return) | 800,000 | 223,239 | 13,077 | 13.08 | 5,938,812 | 5,934,298 | 5,930,028 | +| Returndatasize Nonzero (0.8M, Returned Size 1, Return Data Style Returndatastyle.Revert) | 800,000 | 223,239 | 12,870 | 12.87 | 4,668,104 | 4,668,104 | 4,668,104 | +| Returndatasize Zero (0.8M) | 800,000 | 223,239 | 13,345 | 13.35 | 3,545,848 | 3,542,310 | 3,539,016 | +| Shifts (0.8M, Shift Right Sar) | 800,000 | 223,239 | 21,200 | 21.20 | 6,742,864 | 6,742,864 | 6,741,888 | +| Shifts (0.8M, Shift Right Shr) | 800,000 | 223,239 | 20,343 | 20.34 | 4,738,352 | 4,737,278.4 | 4,731,520 | +| Swap (0.8M, Swap10) | 800,000 | 223,239 | 19,857 | 19.86 | 6,693,124 | 6,692,857.8 | 6,692,148 | +| Swap (0.8M, Swap11) | 800,000 | 223,239 | 18,918 | 18.92 | 6,529,212 | 6,529,212 | 6,529,212 | +| Swap (0.8M, Swap12) | 800,000 | 223,239 | 19,517 | 19.52 | 2,142,376 | 2,137,008 | 2,128,712 | +| Swap (0.8M, Swap13) | 800,000 | 223,239 | 19,213 | 19.21 | 5,053,596 | 5,041,884 | 5,033,100 | +| Swap (0.8M, Swap14) | 800,000 | 223,239 | 20,352 | 20.35 | 2,261,448 | 2,257,632.7 | 2,249,736 | +| Swap (0.8M, Swap15) | 800,000 | 223,239 | 20,092 | 20.09 | 900,916 | 873,767.8 | 841,380 | +| Swap (0.8M, Swap16) | 800,000 | 223,239 | 19,087 | 19.09 | 4,516,880 | 4,516,880 | 4,506,144 | +| Swap (0.8M, Swap1) | 800,000 | 223,239 | 20,048 | 20.05 | 6,592,628 | 6,592,058.7 | 6,588,724 | +| Swap (0.8M, Swap2) | 800,000 | 223,239 | 20,069 | 20.07 | 5,803,156 | 5,800,130 | 5,797,300 | +| Swap (0.8M, Swap3) | 800,000 | 223,239 | 19,791 | 19.79 | 4,015,260 | 4,015,260 | 3,998,668 | +| Swap (0.8M, Swap4) | 800,000 | 223,239 | 19,262 | 19.26 | 4,830,092 | 4,828,042.4 | 4,823,260 | +| Swap (0.8M, Swap5) | 800,000 | 223,239 | 20,067 | 20.07 | 729,144 | 722,865.1 | 700,840 | +| Swap (0.8M, Swap6) | 800,000 | 223,239 | 20,558 | 20.56 | 3,927,432 | 3,924,910.7 | 3,914,744 | +| Swap (0.8M, Swap7) | 800,000 | 223,239 | 19,248 | 19.25 | 6,589,704 | 6,589,704 | 6,589,704 | +| Swap (0.8M, Swap8) | 800,000 | 223,239 | 18,988 | 18.99 | 4,176,300 | 4,174,905.7 | 4,171,420 | +| Swap (0.8M, Swap9) | 800,000 | 223,239 | 19,560 | 19.56 | 6,671,656 | 6,671,656 | 6,671,656 | +| Tload (0.8M, Val Mut False, Key Mut False) | 800,000 | 223,239 | 5,043 | 5.04 | 6,668,728 | 6,668,728 | 6,668,728 | +| Tload (0.8M, Val Mut False, Key Mut True) | 800,000 | 223,239 | 4,970 | 4.97 | 6,567,256 | 6,567,256 | 6,566,280 | +| Tload (0.8M, Val Mut True, Key Mut False) | 800,000 | 223,239 | 5,033 | 5.03 | 4,662,264 | 4,662,264 | 4,662,264 | +| Tload (0.8M, Val Mut True, Key Mut True) | 800,000 | 223,239 | 5,526 | 5.53 | 4,312,936 | 4,312,936 | 4,311,960 | +| Tstore (0.8M, Dense Val Mut False, Key Mut False) | 800,000 | 223,239 | 11,546 | 11.55 | 6,721,420 | 6,721,420 | 6,721,420 | +| Tstore (0.8M, Dense Val Mut False, Key Mut True) | 800,000 | 223,239 | 11,180 | 11.18 | 4,646,656 | 4,646,168 | 4,645,680 | +| Tstore (0.8M, Dense Val Mut True, Key Mut False) | 800,000 | 223,239 | 16,268 | 16.27 | 6,297,956 | 6,297,334.9 | 6,296,980 | +| Tstore (0.8M, Dense Val Mut True, Key Mut True) | 800,000 | 223,239 | 17,184 | 17.18 | 1,787,112 | 1,773,643.2 | 1,760,760 | +| Unop (0.8M, Iszero) | 800,000 | 223,239 | 21,258 | 21.26 | 6,614,092 | 6,613,765.3 | 6,612,140 | +| Unop (0.8M, Not) | 800,000 | 223,239 | 12,090 | 12.09 | 6,392,608 | 6,392,608 | 6,390,656 | +| Zero Param (0.8M, Address) | 800,000 | 223,239 | 23,885 | 23.89 | 4,612,504 | 4,610,942.4 | 4,607,624 | +| Zero Param (0.8M, Basefee) | 800,000 | 223,239 | 16,088 | 16.09 | 6,763,352 | 6,762,457.3 | 6,762,376 | +| Zero Param (0.8M, Blobbasefee) | 800,000 | 223,239 | 18,575 | 18.57 | 6,579,944 | 6,579,944 | 6,579,944 | +| Zero Param (0.8M, Caller) | 800,000 | 223,239 | 23,695 | 23.70 | 5,659,684 | 5,659,358.7 | 5,657,732 | +| Zero Param (0.8M, Chainid) | 800,000 | 223,239 | 15,530 | 15.53 | 6,684,340 | 6,684,340 | 6,684,340 | +| Zero Param (0.8M, Codesize) | 800,000 | 223,239 | 16,615 | 16.61 | 6,445,292 | 6,444,594.9 | 6,444,316 | +| Zero Param (0.8M, Coinbase) | 800,000 | 223,239 | 23,707 | 23.71 | 6,415,056 | 6,412,941.3 | 6,409,200 | +| Zero Param (0.8M, Gaslimit) | 800,000 | 223,239 | 16,437 | 16.44 | 4,476,876 | 4,476,485.6 | 4,468,092 | +| Zero Param (0.8M, Gasprice) | 800,000 | 223,239 | 18,753 | 18.75 | 4,549,084 | 4,548,303.2 | 4,545,180 | +| Zero Param (0.8M, Gas) | 800,000 | 223,239 | 16,250 | 16.25 | 4,419,300 | 4,418,057.8 | 4,415,396 | +| Zero Param (0.8M, Number) | 800,000 | 223,239 | 16,350 | 16.35 | 6,741,888 | 6,741,888 | 6,740,912 | +| Zero Param (0.8M, Origin) | 800,000 | 223,239 | 24,485 | 24.48 | 3,966,468 | 3,965,935.6 | 3,956,708 | +| Zero Param (0.8M, Prevrandao) | 800,000 | 223,239 | 26,889 | 26.89 | 6,410,176 | 6,408,756.4 | 6,406,272 | +| Zero Param (0.8M, Timestamp) | 800,000 | 223,239 | 15,510 | 15.51 | 6,281,364 | 6,281,364 | 6,273,556 | +| Calldatacopy (0.8M, Zero Data, Dynamic Src Dst, 0Bytes, Call) | 800,000 | 223,239 | 17,311 | 17.31 | 6,668,732 | 6,668,732 | 6,668,732 | +| Calldatacopy (0.8M, Zero Data, Dynamic Src Dst, 0Bytes, Transaction) | 800,000 | 223,239 | 17,171 | 17.17 | 1,214,208 | 1,186,613.8 | 1,155,648 | +| Calldatacopy (0.8M, Zero Data, Dynamic Src Dst, 100Bytes, Call) | 800,000 | 223,239 | 14,326 | 14.33 | 6,457,004 | 6,455,296 | 6,454,076 | +| Calldatacopy (0.8M, Zero Data, Dynamic Src Dst, 100Bytes, Transaction) | 800,000 | 223,239 | 14,527 | 14.53 | 6,738,964 | 6,738,855.1 | 6,738,964 | +| Calldatacopy (0.8M, Zero Data, Dynamic Src Dst, 10Kib, Call) | 800,000 | 223,239 | 10,296 | 10.30 | 6,271,620 | 6,271,620 | 6,269,668 | +| Calldatacopy (0.8M, Zero Data, Dynamic Src Dst, 10Kib, Transaction) | 800,000 | 223,239 | 8,542 | 8.54 | 6,669,712 | 6,669,712 | 6,667,760 | +| Calldatacopy (0.8M, Zero Data, Dynamic Src Dst, 1Mib, Call) | 800,000 | 223,239 | 3,987 | 3.99 | 6,036,404 | 6,036,404 | 6,035,428 | +| Calldatacopy (0.8M, Zero Data, Dynamic Src Dst, 1Mib, Transaction) | 800,000 | 223,239 | 3,998 | 4.00 | 6,764,328 | 6,764,328 | 6,763,352 | +| Calldatacopy (0.8M, Zero Data, Fixed Src Dst, 0Bytes, Call) | 800,000 | 223,239 | 13,450 | 13.45 | 6,050,068 | 6,048,604 | 6,043,236 | +| Calldatacopy (0.8M, Zero Data, Fixed Src Dst, 0Bytes, Transaction) | 800,000 | 223,239 | 14,716 | 14.72 | 3,911,816 | 3,908,748.6 | 3,904,984 | +| Calldatacopy (0.8M, Zero Data, Fixed Src Dst, 100Bytes, Call) | 800,000 | 223,239 | 10,529 | 10.53 | 6,402,368 | 6,402,368 | 6,400,416 | +| Calldatacopy (0.8M, Zero Data, Fixed Src Dst, 100Bytes, Transaction) | 800,000 | 223,239 | 11,426 | 11.43 | 5,075,068 | 5,072,628 | 5,067,260 | +| Calldatacopy (0.8M, Zero Data, Fixed Src Dst, 10Kib, Call) | 800,000 | 223,239 | 8,091 | 8.09 | 4,761,776 | 4,761,532 | 4,760,800 | +| Calldatacopy (0.8M, Zero Data, Fixed Src Dst, 10Kib, Transaction) | 800,000 | 223,239 | 6,516 | 6.52 | 4,325,624 | 4,325,624 | 4,323,672 | +| Calldatacopy (0.8M, Zero Data, Fixed Src Dst, 1Mib, Call) | 800,000 | 223,239 | 3,910 | 3.91 | 3,591,716 | 3,590,740 | 3,588,788 | +| Calldatacopy (0.8M, Zero Data, Fixed Src Dst, 1Mib, Transaction) | 800,000 | 223,239 | 3,943 | 3.94 | 6,535,060 | 6,535,060 | 6,535,060 | +| Calldatacopy (0.8M, Non Zero, Dynamic Src Dst, 100Bytes, Call) | 800,000 | 223,239 | 16,091 | 16.09 | 6,579,944 | 6,579,944 | 6,579,944 | +| Calldatacopy (0.8M, Non Zero, Dynamic Src Dst, 100Bytes, Transaction) | 800,000 | 223,239 | 15,198 | 15.20 | 4,203,628 | 4,203,411.1 | 4,201,676 | +| Calldatacopy (0.8M, Non Zero, Dynamic Src Dst, 10Kib, Call) | 800,000 | 223,239 | 9,519 | 9.52 | 4,180,204 | 4,179,925.1 | 4,175,324 | +| Calldatacopy (0.8M, Non Zero, Dynamic Src Dst, 10Kib, Transaction) | 800,000 | 223,239 | 9,613 | 9.61 | 3,825,936 | 3,825,936 | 3,823,984 | +| Calldatacopy (0.8M, Non Zero, Fixed Src Dst, 100Bytes, Call) | 800,000 | 223,239 | 12,545 | 12.54 | 6,774,084 | 6,774,084 | 6,773,108 | +| Calldatacopy (0.8M, Non Zero, Fixed Src Dst, 100Bytes, Transaction) | 800,000 | 223,239 | 11,410 | 11.41 | 5,077,992 | 5,077,341.3 | 5,076,040 | +| Calldatacopy (0.8M, Non Zero, Fixed Src Dst, 10Kib, Call) | 800,000 | 223,239 | 9,649 | 9.65 | 5,905,632 | 5,896,414.2 | 5,889,040 | +| Calldatacopy (0.8M, Non Zero, Fixed Src Dst, 10Kib, Transaction) | 800,000 | 223,239 | 9,056 | 9.06 | 6,529,212 | 6,529,212 | 6,527,260 | +| Codecopy (0.8M, Dynamic Src Dst, 0Bytes) | 800,000 | 223,239 | 16,910 | 16.91 | 6,542,868 | 6,542,868 | 6,540,916 | +| Codecopy (0.8M, Dynamic Src Dst, 0.25X Max Code) | 800,000 | 223,239 | 10,161 | 10.16 | 4,556,884 | 4,556,744 | 4,552,980 | +| Codecopy (0.8M, Dynamic Src Dst, 0.50X Max Code Size) | 800,000 | 223,239 | 10,516 | 10.52 | 4,697,372 | 4,696,721.3 | 4,694,444 | +| Codecopy (0.8M, Dynamic Src Dst, 0.75X Max Code Size) | 800,000 | 223,239 | 10,966 | 10.97 | 5,913,440 | 5,912,708 | 5,907,584 | +| Codecopy (0.8M, Dynamic Src Dst, Max Code) | 800,000 | 223,239 | 10,384 | 10.38 | 3,095,920 | 3,092,748 | 3,086,160 | +| Codecopy (0.8M, Fixed Src Dst, 0Bytes) | 800,000 | 223,239 | 12,760 | 12.76 | 4,585,184 | 4,585,184 | 4,585,184 | +| Codecopy (0.8M, Fixed Src Dst, 0.25X Max Code) | 800,000 | 223,239 | 10,243 | 10.24 | 4,599,820 | 4,599,820 | 4,594,940 | +| Codecopy (0.8M, Fixed Src Dst, 0.50X Max Code Size) | 800,000 | 223,239 | 8,447 | 8.45 | 3,075,424 | 3,074,610.7 | 3,068,592 | +| Codecopy (0.8M, Fixed Src Dst, 0.75X Max Code Size) | 800,000 | 223,239 | 7,831 | 7.83 | 4,235,836 | 4,235,592 | 4,229,004 | +| Codecopy (0.8M, Fixed Src Dst, Max Code) | 800,000 | 223,239 | 9,181 | 9.18 | 6,596,528 | 6,595,796 | 6,595,552 | +| Mcopy (0.8M, Dynamic Src Dst, 0Bytes) | 800,000 | 223,239 | 15,690 | 15.69 | 6,739,944 | 6,739,944 | 6,735,064 | +| Mcopy (0.8M, Dynamic Src Dst, 100Bytes) | 800,000 | 223,239 | 16,039 | 16.04 | 5,832,432 | 5,828,723.2 | 5,826,576 | +| Mcopy (0.8M, Dynamic Src Dst, 10Kib) | 800,000 | 223,239 | 12,291 | 12.29 | 5,725,076 | 5,721,729.7 | 5,712,388 | +| Mcopy (0.8M, Dynamic Src Dst, 1Mib) | 800,000 | 223,239 | 4,942 | 4.94 | 4,862,300 | 4,861,519.2 | 4,860,348 | +| Mcopy (0.8M, Fixed Src Dst, 0Bytes) | 800,000 | 223,239 | 12,093 | 12.09 | 6,667,752 | 6,667,752 | 6,667,752 | +| Mcopy (0.8M, Fixed Src Dst, 100Bytes) | 800,000 | 223,239 | 11,874 | 11.87 | 6,297,956 | 6,297,956 | 6,294,052 | +| Mcopy (0.8M, Fixed Src Dst, 10Kib) | 800,000 | 223,239 | 12,133 | 12.13 | 3,622,948 | 3,619,898 | 3,614,164 | +| Mcopy (0.8M, Fixed Src Dst, 1Mib) | 800,000 | 223,239 | 5,141 | 5.14 | 6,739,936 | 6,739,936 | 6,739,936 | +| Returndatacopy (0.8M, Fixed Dst False, 0Bytes) | 800,000 | 223,239 | 16,634 | 16.63 | 6,652,144 | 6,652,144 | 6,646,288 | +| Returndatacopy (0.8M, Fixed Dst False, 100Bytes) | 800,000 | 223,239 | 14,892 | 14.89 | 4,756,896 | 4,753,642.7 | 4,752,016 | +| Returndatacopy (0.8M, Fixed Dst False, 10Kib) | 800,000 | 223,239 | 11,779 | 11.78 | 6,400,416 | 6,400,416 | 6,400,416 | +| Returndatacopy (0.8M, Fixed Dst False, 1Mib) | 800,000 | 223,239 | 5,857 | 5.86 | 6,686,292 | 6,686,292 | 6,684,340 | +| Returndatacopy (0.8M, Fixed Dst True, 0Bytes) | 800,000 | 223,239 | 15,056 | 15.06 | 6,437,500 | 6,430,180 | 6,419,932 | +| Returndatacopy (0.8M, Fixed Dst True, 100Bytes) | 800,000 | 223,239 | 11,826 | 11.83 | 6,713,612 | 6,713,472.6 | 6,711,660 | +| Returndatacopy (0.8M, Fixed Dst True, 10Kib) | 800,000 | 223,239 | 8,212 | 8.21 | 4,669,088 | 4,668,843 | 4,669,088 | +| Returndatacopy (0.8M, Fixed Dst True, 1Mib) | 800,000 | 223,239 | 4,994 | 4.99 | 6,529,208 | 6,528,557.3 | 6,528,232 | +| Log Opcodes (0.8M, Dynamic, Non Zero Topic, 0 Bytes Data, Log0) | 800,000 | 223,239 | 5,593 | 5.59 | 6,569,208 | 6,569,208 | 6,567,256 | +| Log Opcodes (0.8M, Dynamic, Non Zero Topic, 0 Bytes Data, Log1) | 800,000 | 223,239 | 5,393 | 5.39 | 5,819,744 | 5,819,744 | 5,815,840 | +| Log Opcodes (0.8M, Dynamic, Non Zero Topic, 0 Bytes Data, Log2) | 800,000 | 223,239 | 4,505 | 4.50 | 6,639,460 | 6,639,460 | 6,635,556 | +| Log Opcodes (0.8M, Dynamic, Non Zero Topic, 0 Bytes Data, Log3) | 800,000 | 223,239 | 5,650 | 5.65 | 4,666,164 | 4,666,164 | 4,666,164 | +| Log Opcodes (0.8M, Dynamic, Non Zero Topic, 0 Bytes Data, Log4) | 800,000 | 223,239 | 4,435 | 4.43 | 6,698,004 | 6,698,004 | 6,694,100 | +| Log Opcodes (0.8M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log0) | 800,000 | 223,239 | 4,218 | 4.22 | 955,572 | 950,814 | 938,004 | +| Log Opcodes (0.8M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log1) | 800,000 | 223,239 | 4,474 | 4.47 | 6,570,184 | 6,570,184 | 6,569,208 | +| Log Opcodes (0.8M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log2) | 800,000 | 223,239 | 4,083 | 4.08 | 4,586,160 | 4,586,160 | 4,585,184 | +| Log Opcodes (0.8M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log3) | 800,000 | 223,239 | 4,817 | 4.82 | 6,572,136 | 6,572,136 | 6,572,136 | +| Log Opcodes (0.8M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log4) | 800,000 | 223,239 | 4,379 | 4.38 | 5,066,284 | 5,065,552 | 5,064,332 | +| Log Opcodes (0.8M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log0) | 800,000 | 223,239 | 3,944 | 3.94 | 6,630,676 | 6,630,676 | 6,628,724 | +| Log Opcodes (0.8M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log1) | 800,000 | 223,239 | 4,542 | 4.54 | 3,728,356 | 3,728,356 | 3,724,452 | +| Log Opcodes (0.8M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log2) | 800,000 | 223,239 | 4,705 | 4.71 | 2,442,984 | 2,441,032 | 2,436,152 | +| Log Opcodes (0.8M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log3) | 800,000 | 223,239 | 4,774 | 4.77 | 3,610,260 | 3,610,260 | 3,599,524 | +| Log Opcodes (0.8M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log4) | 800,000 | 223,239 | 3,852 | 3.85 | 6,299,904 | 6,299,578.7 | 6,296,976 | +| Log Opcodes (0.8M, Dynamic, Zero Topic, 0 Bytes Data, Log0) | 800,000 | 223,239 | 6,253 | 6.25 | 3,768,372 | 3,767,591.2 | 3,765,444 | +| Log Opcodes (0.8M, Dynamic, Zero Topic, 0 Bytes Data, Log1) | 800,000 | 223,239 | 5,165 | 5.17 | 4,288,536 | 4,288,536 | 4,287,560 | +| Log Opcodes (0.8M, Dynamic, Zero Topic, 0 Bytes Data, Log2) | 800,000 | 223,239 | 4,517 | 4.52 | 5,662,612 | 5,662,612 | 5,660,660 | +| Log Opcodes (0.8M, Dynamic, Zero Topic, 0 Bytes Data, Log3) | 800,000 | 223,239 | 4,329 | 4.33 | 5,696,772 | 5,696,772 | 5,694,820 | +| Log Opcodes (0.8M, Dynamic, Zero Topic, 0 Bytes Data, Log4) | 800,000 | 223,239 | 4,906 | 4.91 | 6,457,004 | 6,456,756 | 6,457,004 | +| Log Opcodes (0.8M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log0) | 800,000 | 223,239 | 4,760 | 4.76 | 3,720,548 | 3,720,548 | 3,717,620 | +| Log Opcodes (0.8M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log1) | 800,000 | 223,239 | 4,123 | 4.12 | 4,881,820 | 4,881,820 | 4,874,988 | +| Log Opcodes (0.8M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log2) | 800,000 | 223,239 | 4,379 | 4.38 | 6,735,068 | 6,735,068 | 6,733,116 | +| Log Opcodes (0.8M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log3) | 800,000 | 223,239 | 4,138 | 4.14 | 4,184,108 | 4,183,620 | 4,181,180 | +| Log Opcodes (0.8M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log4) | 800,000 | 223,239 | 4,468 | 4.47 | 5,630,408 | 5,628,944 | 5,627,480 | +| Log Opcodes (0.8M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log0) | 800,000 | 223,239 | 3,946 | 3.95 | 373,880 | 313,801.8 | 213,816 | +| Log Opcodes (0.8M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log1) | 800,000 | 223,239 | 4,026 | 4.03 | 3,469,720 | 3,469,069.3 | 3,466,792 | +| Log Opcodes (0.8M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log2) | 800,000 | 223,239 | 4,314 | 4.31 | 4,334,388 | 4,334,388 | 4,332,436 | +| Log Opcodes (0.8M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log3) | 800,000 | 223,239 | 4,948 | 4.95 | 2,423,464 | 2,423,464 | 2,416,632 | +| Log Opcodes (0.8M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log4) | 800,000 | 223,239 | 4,696 | 4.70 | 3,217,916 | 3,215,964 | 3,210,108 | +| Log Opcodes (0.8M, Fixed, Non Zero Topic, 0 Bytes Data, Log0) | 800,000 | 223,239 | 4,652 | 4.65 | 4,900,364 | 4,899,876 | 4,899,388 | +| Log Opcodes (0.8M, Fixed, Non Zero Topic, 0 Bytes Data, Log1) | 800,000 | 223,239 | 4,519 | 4.52 | 6,722,396 | 6,722,396 | 6,722,396 | +| Log Opcodes (0.8M, Fixed, Non Zero Topic, 0 Bytes Data, Log2) | 800,000 | 223,239 | 5,159 | 5.16 | 6,305,760 | 6,305,760 | 6,299,904 | +| Log Opcodes (0.8M, Fixed, Non Zero Topic, 0 Bytes Data, Log3) | 800,000 | 223,239 | 4,459 | 4.46 | 4,689,572 | 4,689,572 | 4,688,596 | +| Log Opcodes (0.8M, Fixed, Non Zero Topic, 0 Bytes Data, Log4) | 800,000 | 223,239 | 4,761 | 4.76 | 764,276 | 763,927.4 | 756,468 | +| Log Opcodes (0.8M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log0) | 800,000 | 223,239 | 4,773 | 4.77 | 5,921,248 | 5,921,248 | 5,920,272 | +| Log Opcodes (0.8M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log1) | 800,000 | 223,239 | 4,383 | 4.38 | 4,860,348 | 4,859,046.7 | 4,857,420 | +| Log Opcodes (0.8M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log2) | 800,000 | 223,239 | 4,170 | 4.17 | 1,268,864 | 1,267,562 | 1,258,128 | +| Log Opcodes (0.8M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log3) | 800,000 | 223,239 | 4,307 | 4.31 | 1,934,488 | 1,934,488 | 1,930,584 | +| Log Opcodes (0.8M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log4) | 800,000 | 223,239 | 4,571 | 4.57 | 2,476,164 | 2,475,432 | 2,468,356 | +| Log Opcodes (0.8M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log0) | 800,000 | 223,239 | 3,929 | 3.93 | 4,824,240 | 4,824,240 | 4,824,240 | +| Log Opcodes (0.8M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log1) | 800,000 | 223,239 | 4,883 | 4.88 | 2,514,224 | 2,512,272 | 2,508,368 | +| Log Opcodes (0.8M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log2) | 800,000 | 223,239 | 4,346 | 4.35 | 5,031,148 | 5,030,172 | 5,027,244 | +| Log Opcodes (0.8M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log3) | 800,000 | 223,239 | 4,528 | 4.53 | 4,647,632 | 4,647,632 | 4,647,632 | +| Log Opcodes (0.8M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log4) | 800,000 | 223,239 | 4,362 | 4.36 | 4,030,876 | 4,026,776.8 | 4,023,068 | +| Log Opcodes (0.8M, Fixed, Zero Topic, 0 Bytes Data, Log0) | 800,000 | 223,239 | 5,462 | 5.46 | 4,824,240 | 4,824,240 | 4,824,240 | +| Log Opcodes (0.8M, Fixed, Zero Topic, 0 Bytes Data, Log1) | 800,000 | 223,239 | 4,582 | 4.58 | 6,698,972 | 6,698,972 | 6,698,972 | +| Log Opcodes (0.8M, Fixed, Zero Topic, 0 Bytes Data, Log2) | 800,000 | 223,239 | 5,212 | 5.21 | 3,614,164 | 3,614,164 | 3,612,212 | +| Log Opcodes (0.8M, Fixed, Zero Topic, 0 Bytes Data, Log3) | 800,000 | 223,239 | 4,829 | 4.83 | 3,982,084 | 3,982,084 | 3,978,180 | +| Log Opcodes (0.8M, Fixed, Zero Topic, 0 Bytes Data, Log4) | 800,000 | 223,239 | 4,685 | 4.68 | 6,658,000 | 6,658,000 | 6,658,000 | +| Log Opcodes (0.8M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log0) | 800,000 | 223,239 | 5,090 | 5.09 | 3,946,952 | 3,946,952 | 3,945,976 | +| Log Opcodes (0.8M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log1) | 800,000 | 223,239 | 4,176 | 4.18 | 5,920,272 | 5,918,645.3 | 5,915,392 | +| Log Opcodes (0.8M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log2) | 800,000 | 223,239 | 4,533 | 4.53 | 3,458,984 | 3,457,617.6 | 3,453,128 | +| Log Opcodes (0.8M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log3) | 800,000 | 223,239 | 5,355 | 5.36 | 2,447,864 | 2,447,864 | 2,444,936 | +| Log Opcodes (0.8M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log4) | 800,000 | 223,239 | 4,647 | 4.65 | 4,286,584 | 4,286,584 | 4,280,728 | +| Log Opcodes (0.8M, Fixed, Zero Topic, 1 Mib Zeros Data, Log0) | 800,000 | 223,239 | 3,911 | 3.91 | 4,745,184 | 4,745,184 | 4,742,256 | +| Log Opcodes (0.8M, Fixed, Zero Topic, 1 Mib Zeros Data, Log1) | 800,000 | 223,239 | 4,810 | 4.81 | 3,449,224 | 3,449,224 | 3,446,296 | +| Log Opcodes (0.8M, Fixed, Zero Topic, 1 Mib Zeros Data, Log2) | 800,000 | 223,239 | 3,885 | 3.88 | 4,497,364 | 4,497,364 | 4,497,364 | +| Log Opcodes (0.8M, Fixed, Zero Topic, 1 Mib Zeros Data, Log3) | 800,000 | 223,239 | 4,102 | 4.10 | 4,645,680 | 4,645,680 | 4,641,776 | +| Log Opcodes (0.8M, Fixed, Zero Topic, 1 Mib Zeros Data, Log4) | 800,000 | 223,239 | 3,971 | 3.97 | 4,668,112 | 4,668,112 | 4,668,112 | +| Address State Cold (0.8M, Absent Accounts False, Balance) | 800,000 | 223,239 | 8,890 | 8.89 | 4,659,344 | 4,659,344 | 4,659,344 | +| Address State Cold (0.8M, Absent Accounts True, Balance) | 800,000 | 223,239 | 6,899 | 6.90 | 4,668,108 | 4,668,108 | 4,668,108 | +| Address State Warm (0.8M, Present Target, Balance) | 800,000 | 223,239 | 10,378 | 10.38 | 4,308,056 | 4,305,616 | 4,302,200 | +| Address State Warm (0.8M, Present Target, Callcode) | 800,000 | 223,239 | 22,752 | 22.75 | 6,300,880 | 6,300,880 | 6,299,904 | +| Address State Warm (0.8M, Present Target, Call) | 800,000 | 223,239 | 23,170 | 23.17 | 6,727,272 | 6,726,596.3 | 6,723,368 | +| Address State Warm (0.8M, Present Target, Delegatecall) | 800,000 | 223,239 | 21,584 | 21.58 | 5,931,008 | 5,927,661.7 | 5,921,248 | +| Address State Warm (0.8M, Present Target, Extcodehash) | 800,000 | 223,239 | 11,697 | 11.70 | 3,465,816 | 3,464,547.2 | 3,458,984 | +| Address State Warm (0.8M, Present Target, Extcodesize) | 800,000 | 223,239 | 10,265 | 10.27 | 3,863,024 | 3,850,475.4 | 3,846,432 | +| Address State Warm (0.8M, Present Target, Staticcall) | 800,000 | 223,239 | 22,170 | 22.17 | 4,717,860 | 4,712,898.7 | 4,704,196 | +| Address State Warm (0.8M, Absent Target, Balance) | 800,000 | 223,239 | 11,481 | 11.48 | 4,675,908 | 4,675,908 | 4,674,932 | +| Address State Warm (0.8M, Absent Target, Callcode) | 800,000 | 223,239 | 20,179 | 20.18 | 6,459,916 | 6,459,916 | 6,456,988 | +| Address State Warm (0.8M, Absent Target, Call) | 800,000 | 223,239 | 21,438 | 21.44 | 802,340 | 788,372.4 | 765,252 | +| Address State Warm (0.8M, Absent Target, Delegatecall) | 800,000 | 223,239 | 20,321 | 20.32 | 3,806,432 | 3,804,340.6 | 3,801,552 | +| Address State Warm (0.8M, Absent Target, Extcodehash) | 800,000 | 223,239 | 12,775 | 12.78 | 4,497,368 | 4,497,368 | 4,496,392 | +| Address State Warm (0.8M, Absent Target, Extcodesize) | 800,000 | 223,239 | 11,223 | 11.22 | 5,018,460 | 5,017,728 | 5,017,484 | +| Address State Warm (0.8M, Absent Target, Staticcall) | 800,000 | 223,239 | 20,850 | 20.85 | 4,312,936 | 4,312,936 | 4,307,080 | +| Blockhash (0.8M) | 800,000 | 223,239 | 14,424 | 14.42 | 4,728,592 | 4,726,347.2 | 4,725,664 | +| Extcodecopy Warm (0.8M, 1Kib) | 800,000 | 223,239 | 10,067 | 10.07 | 3,901,084 | 3,899,620 | 3,895,228 | +| Extcodecopy Warm (0.8M, 512) | 800,000 | 223,239 | 9,779 | 9.78 | 3,717,620 | 3,717,341.1 | 3,711,764 | +| Extcodecopy Warm (0.8M, 5Kib) | 800,000 | 223,239 | 8,498 | 8.50 | 5,213,656 | 5,212,354.7 | 5,211,704 | +| Selfbalance (0.8M) | 800,000 | 223,239 | 70,016 | 70.02 | 4,401,732 | 4,398,503.7 | 4,393,924 | +| Selfdestruct Created (0.8M, No Value) | 777,780 | 223,239 | 4,458 | 4.46 | 2,488,852 | 2,485,924 | 2,476,164 | +| Selfdestruct Created (0.8M, With Value) | 777,780 | 223,239 | 4,269 | 4.27 | 4,229,980 | 4,229,980 | 4,227,052 | +| Selfdestruct Existing (0.8M, No Value) | 798,051 | 223,239 | 7,121 | 7.12 | 4,758,848 | 4,758,848 | 4,758,848 | +| Selfdestruct Existing (0.8M, With Value) | 798,051 | 223,239 | 7,551 | 7.55 | 1,478,700 | 1,475,772 | 1,464,060 | +| Selfdestruct Initcode (0.8M, No Value) | 766,900 | 223,239 | 3,787 | 3.79 | 4,583,232 | 4,583,232 | 4,583,232 | +| Selfdestruct Initcode (0.8M, With Value) | 766,900 | 223,239 | 3,937 | 3.94 | 6,454,076 | 6,454,076 | 6,453,100 | +| Storage Access Cold (0.8M, Absent Slots False, Ssload) | 798,871 | 223,239 | 10,906 | 10.91 | 6,700,932 | 6,700,768.7 | 6,698,004 | +| Storage Access Cold (0.8M, Absent Slots False, Sstore New Value, Out Of Gas) | 800,000 | 223,239 | 7,574 | 7.57 | 4,180,204 | 4,180,204 | 4,180,204 | +| Storage Access Cold (0.8M, Absent Slots False, Sstore New Value, Revert) | 797,323 | 223,239 | 7,275 | 7.28 | 4,659,344 | 4,659,344 | 4,658,368 | +| Storage Access Cold (0.8M, Absent Slots False, Sstore New Value) | 797,317 | 223,239 | 7,284 | 7.28 | 6,683,368 | 6,683,368 | 6,681,416 | +| Storage Access Cold (0.8M, Absent Slots False, Sstore Same Value, Out Of Gas) | 800,000 | 223,239 | 10,331 | 10.33 | 6,540,916 | 6,540,916 | 6,540,916 | +| Storage Access Cold (0.8M, Absent Slots False, Sstore Same Value, Revert) | 799,833 | 223,239 | 10,737 | 10.74 | 4,457,360 | 4,456,523.4 | 4,456,384 | +| Storage Access Cold (0.8M, Absent Slots False, Sstore Same Value) | 799,827 | 223,239 | 9,530 | 9.53 | 3,069,568 | 3,068,592 | 3,063,712 | +| Storage Access Cold (0.8M, Absent Slots True, Ssload) | 798,871 | 223,239 | 9,592 | 9.59 | 4,739,328 | 4,739,328 | 4,738,352 | +| Storage Access Cold (0.8M, Absent Slots True, Sstore New Value, Out Of Gas) | 800,000 | 223,239 | 4,329 | 4.33 | 4,668,116 | 4,668,116 | 4,668,116 | +| Storage Access Cold (0.8M, Absent Slots True, Sstore New Value, Revert) | 795,944 | 223,239 | 4,642 | 4.64 | 3,672,724 | 3,672,724 | 3,668,820 | +| Storage Access Cold (0.8M, Absent Slots True, Sstore New Value) | 795,938 | 223,239 | 5,017 | 5.02 | 6,705,804 | 6,705,804 | 6,705,804 | +| Storage Access Cold (0.8M, Absent Slots True, Sstore Same Value, Out Of Gas) | 800,000 | 223,239 | 4,153 | 4.15 | 6,042,260 | 6,042,260 | 6,042,260 | +| Storage Access Cold (0.8M, Absent Slots True, Sstore Same Value, Revert) | 795,839 | 223,239 | 4,071 | 4.07 | 5,617,720 | 5,615,524 | 5,612,840 | +| Storage Access Cold (0.8M, Absent Slots True, Sstore Same Value) | 795,833 | 223,239 | 4,640 | 4.64 | 5,058,476 | 5,057,174.7 | 5,053,596 | +| Storage Access Warm (0.8M, Sload) | 800,000 | 223,239 | 10,969 | 10.97 | 3,530,232 | 3,528,930.7 | 3,527,304 | +| Storage Access Warm (0.8M, Sstore New Value) | 800,000 | 223,239 | 19,345 | 19.34 | 3,505,832 | 3,502,726.5 | 3,495,096 | +| Storage Access Warm (0.8M, Sstore Same Value) | 800,000 | 223,239 | 15,902 | 15.90 | 6,034,456 | 6,034,456 | 6,034,456 | + +## Summary Statistics + +- **Total Tests:** 508 +- **Successful Tests:** 503 +- **Failed Tests:** 5 + +### Proving Time (ms) +- **Average:** 52,520.6 +- **Minimum:** 3,787 +- **Maximum:** 886,607 + +### Peak Memory Usage (MB) +- **Average:** 4,959,536.2 +- **Minimum:** 373,880 +- **Maximum:** 6,781,892 + +### Proof Size (bytes) +- **Average:** 223,239 +- **Minimum:** 223,239 +- **Maximum:** 223,239 diff --git a/www/docs/pages/benchmark-results/gas-categorized/0.8m/sp1-0.8M-4.md b/www/docs/pages/benchmark-results/gas-categorized/0.8m/sp1-0.8M-4.md new file mode 100644 index 00000000..5f08eb40 --- /dev/null +++ b/www/docs/pages/benchmark-results/gas-categorized/0.8m/sp1-0.8M-4.md @@ -0,0 +1,543 @@ +# zkEVM Benchmark Results + +Generated on: 2026-01-01 15:22:14 + +## Folder: zkevm-metrics-sp1-0.8M-4 + +**zkVM:** sp1-cluster-v5.2.3 (4 GPUs) + +**Hardware Configuration:** CPU: AMD EPYC 7B13 64-Core Processor | RAM: 396 GiB | GPU: NVIDIA GeForce RTX 4090, NVIDIA GeForce RTX 4090, NVIDIA GeForce RTX 4090, NVIDIA GeForce RTX 4090 + +## Proving Metrics + +| Benchmark | Gas Used | Proof Size (bytes) | Proving Time (ms) | Proving Time (s) | Peak Memory (MB) | Avg Memory (MB) | Initial Memory (MB) | +|---|---|---|---|---|---|---|---| +| Block Full Access List And Data (0.8M) | 799,990 | 1,477,226 | 6,043 | 6.04 | 5,916,120 | 5,914,168 | 5,902,456 | +| Block Full Data (0.8M, Non Zero Byte) | 800,000 | 1,477,226 | 6,073 | 6.07 | 10,407,308 | 10,405,356 | 10,401,472 | +| Block Full Data (0.8M, Zero Byte) | 800,000 | 1,477,226 | 6,571 | 6.57 | 1,769,168 | 1,763,474.7 | 1,760,384 | +| Block Full Of Ether Transfers (0.8M, A To A) | 798,000 | 1,477,226 | 8,087 | 8.09 | 9,226,348 | 9,219,760 | 9,209,756 | +| Block Full Of Ether Transfers (0.8M, A To B) | 798,000 | 1,477,226 | 8,069 | 8.07 | 7,057,048 | 7,051,842.7 | 7,044,360 | +| Block Full Of Ether Transfers (0.8M, A To Diff Acc) | 798,000 | 1,477,226 | 8,102 | 8.10 | 7,172,208 | 7,172,208 | 7,170,256 | +| Block Full Of Ether Transfers (0.8M, Diff Acc To B) | 798,000 | 1,477,226 | 7,576 | 7.58 | 11,804,180 | 11,802,956 | 11,798,804 | +| Block Full Of Ether Transfers (0.8M, Diff Acc To Diff Acc) | 798,000 | 1,477,226 | 8,073 | 8.07 | 8,355,564 | 8,355,564 | 8,339,948 | +| Bytecode Single Opcode (0.8M, Callcode) | 800,000 | 1,477,226 | 27,780 | 27.78 | 12,544,064 | 12,532,073.1 | 12,513,808 | +| Bytecode Single Opcode (0.8M, Call) | 800,000 | 1,477,226 | 27,263 | 27.26 | 1,371,948 | 1,347,896.6 | 1,302,652 | +| Bytecode Single Opcode (0.8M, Delegatecall) | 800,000 | 1,477,226 | 26,768 | 26.77 | 6,781,824 | 6,775,968 | 6,760,352 | +| Bytecode Single Opcode (0.8M, Extcodecopy) | 800,000 | 1,477,226 | 26,247 | 26.25 | 9,198,044 | 9,181,560.4 | 9,161,932 | +| Bytecode Single Opcode (0.8M, Extcodehash) | 800,000 | 1,477,226 | 28,253 | 28.25 | 6,225,508 | 6,221,217.3 | 6,198,184 | +| Bytecode Single Opcode (0.8M, Extcodesize) | 800,000 | 1,477,226 | 27,782 | 27.78 | 12,271,388 | 12,265,552 | 12,236,252 | +| Bytecode Single Opcode (0.8M, Staticcall) | 800,000 | 1,477,226 | 27,763 | 27.76 | 7,548,944 | 7,548,293.3 | 7,505,024 | +| Create (0.8M, 0Bytes, Create2) | 800,000 | 1,477,226 | 6,586 | 6.59 | 14,729,316 | 14,727,364 | 14,725,412 | +| Create (0.8M, 0Bytes, Create) | 800,000 | 1,477,226 | 6,052 | 6.05 | 5,836,088 | 5,835,600 | 5,830,232 | +| Create (0.8M, 0Bytes, Create2) | 800,000 | 1,477,226 | 6,553 | 6.55 | 14,422,052 | 14,422,052 | 14,421,944 | +| Create (0.8M, 0Bytes, Create) | 800,000 | 1,477,226 | 6,554 | 6.55 | 10,392,612 | 10,384,153.3 | 10,378,948 | +| Create (0.8M, 0.25X Max Code, Zero Data, Create2) | 800,000 | 1,477,226 | 6,057 | 6.06 | 9,648,356 | 9,643,754.9 | 9,632,740 | +| Create (0.8M, 0.25X Max Code, Zero Data, Create) | 800,000 | 1,477,226 | 6,060 | 6.06 | 4,636,616 | 4,632,712 | 4,623,928 | +| Create (0.8M, 0.25X Max Code, Create2) | 800,000 | 1,477,226 | 6,056 | 6.06 | 7,164,400 | 7,164,400 | 7,154,640 | +| Create (0.8M, 0.25X Max Code, Create) | 800,000 | 1,477,226 | 6,054 | 6.05 | 4,017,840 | 4,016,864 | 4,008,080 | +| Create (0.8M, 0.50X Max Code Size With Non, Zero Data, Create2) | 800,000 | 1,477,226 | 6,078 | 6.08 | 3,133,600 | 3,132,624 | 3,127,744 | +| Create (0.8M, 0.50X Max Code Size With Non, Zero Data, Create) | 800,000 | 1,477,226 | 6,581 | 6.58 | 11,293,036 | 11,292,656 | 11,291,084 | +| Create (0.8M, 0.50X Max Code Size With Zero Data, Create2) | 800,000 | 1,477,226 | 6,067 | 6.07 | 12,564,560 | 12,564,316 | 12,560,656 | +| Create (0.8M, 0.50X Max Code Size With Zero Data, Create) | 800,000 | 1,477,226 | 7,059 | 7.06 | 4,792,760 | 4,791,946.7 | 4,787,880 | +| Create (0.8M, 0.75X Max Code Size With Non, Zero Data, Create2) | 800,000 | 1,477,226 | 6,568 | 6.57 | 5,289,536 | 5,288,072 | 5,283,680 | +| Create (0.8M, 0.75X Max Code Size With Non, Zero Data, Create) | 800,000 | 1,477,226 | 6,561 | 6.56 | 8,874,772 | 8,867,940 | 8,860,132 | +| Create (0.8M, 0.75X Max Code Size With Zero Data, Create2) | 800,000 | 1,477,226 | 6,072 | 6.07 | 6,275,280 | 6,269,912 | 6,263,568 | +| Create (0.8M, 0.75X Max Code Size With Zero Data, Create) | 800,000 | 1,477,226 | 6,067 | 6.07 | 7,140,976 | 7,134,794.7 | 7,128,288 | +| Create (0.8M, Max Code, Zero Data, Create2) | 800,000 | 1,477,226 | 7,065 | 7.07 | 4,787,884 | 4,787,103.2 | 4,783,980 | +| Create (0.8M, Max Code, Zero Data, Create) | 800,000 | 1,477,226 | 6,571 | 6.57 | 14,619,036 | 14,619,036 | 14,617,084 | +| Create (0.8M, Max Code, Create2) | 800,000 | 1,477,226 | 6,069 | 6.07 | 11,028,448 | 11,027,081.6 | 11,024,544 | +| Create (0.8M, Max Code, Create) | 800,000 | 1,477,226 | 6,064 | 6.06 | 2,105,888 | 2,103,692 | 2,098,080 | +| Creates Collisions (0.8M, Create2) | 800,000 | 1,477,226 | 6,055 | 6.05 | 11,063,680 | 11,058,149.3 | 11,050,992 | +| Creates Collisions (0.8M, Create) | 800,000 | 1,477,226 | 6,061 | 6.06 | 14,861,352 | 14,859,985.6 | 14,855,496 | +| Initcode Jumpdest Analysis (0.8M, 00) | 800,000 | 1,477,226 | 8,584 | 8.58 | 9,714,488 | 9,709,933.3 | 9,707,656 | +| Initcode Jumpdest Analysis (0.8M, 5B) | 800,000 | 1,477,226 | 8,607 | 8.61 | 14,359,252 | 14,359,252 | 14,358,276 | +| Initcode Jumpdest Analysis (0.8M, 605B5B) | 800,000 | 1,477,226 | 7,094 | 7.09 | 4,161,312 | 4,156,822.4 | 4,151,552 | +| Initcode Jumpdest Analysis (0.8M, 605B) | 800,000 | 1,477,226 | 7,057 | 7.06 | 14,463,484 | 14,463,484 | 14,433,616 | +| Initcode Jumpdest Analysis (0.8M, 615B5B5B) | 800,000 | 1,477,226 | 7,095 | 7.09 | 2,773,468 | 2,772,166.7 | 2,767,612 | +| Initcode Jumpdest Analysis (0.8M, 615B5B) | 800,000 | 1,477,226 | 7,572 | 7.57 | 7,634,832 | 7,631,904 | 7,620,192 | +| Amortized Bn128 Pairings (0.8M) | 800,000 | 1,477,226 | 22,736 | 22.74 | 13,631,580 | 13,612,060 | 13,595,468 | +| Empty Block (0.8M) | 0 | 1,477,226 | 5,559 | 5.56 | 13,935,812 | 13,935,812 | 13,931,912 | +| Binop Simple (0.8M, Add) | 800,000 | 1,477,226 | 8,597 | 8.60 | 7,043,384 | 7,043,018 | 7,041,432 | +| Binop Simple (0.8M, And) | 800,000 | 1,477,226 | 8,583 | 8.58 | 14,384,628 | 14,383,164 | 14,379,748 | +| Binop Simple (0.8M, Byte) | 800,000 | 1,477,226 | 9,092 | 9.09 | 7,379,120 | 7,374,728 | 7,363,504 | +| Binop Simple (0.8M, Div, 0) | 800,000 | 1,477,226 | 22,204 | 22.20 | 6,663,728 | 6,657,699.8 | 6,652,016 | +| Binop Simple (0.8M, Div, 1) | 800,000 | 1,477,226 | 21,188 | 21.19 | 14,432,640 | 14,429,937.2 | 14,422,880 | +| Binop Simple (0.8M, Eq) | 800,000 | 1,477,226 | 14,651 | 14.65 | 12,588,508 | 12,588,508 | 12,576,348 | +| Binop Simple (0.8M, Exp) | 800,000 | 1,477,226 | 16,139 | 16.14 | 9,607,688 | 9,597,537.6 | 9,577,432 | +| Binop Simple (0.8M, Gt) | 800,000 | 1,477,226 | 8,594 | 8.59 | 7,840,768 | 7,835,074.7 | 7,824,176 | +| Binop Simple (0.8M, Lt) | 800,000 | 1,477,226 | 8,577 | 8.58 | 5,165,584 | 5,162,237.7 | 5,156,800 | +| Binop Simple (0.8M, Mod) | 800,000 | 1,477,226 | 12,110 | 12.11 | 4,239,392 | 4,236,138.7 | 4,226,704 | +| Binop Simple (0.8M, Mul) | 800,000 | 1,477,226 | 10,585 | 10.59 | 6,283,088 | 6,278,829.1 | 6,276,256 | +| Binop Simple (0.8M, Or) | 800,000 | 1,477,226 | 9,076 | 9.08 | 11,151,800 | 11,145,212 | 11,137,160 | +| Binop Simple (0.8M, Sar) | 800,000 | 1,477,226 | 12,609 | 12.61 | 5,381,276 | 5,381,276 | 5,366,636 | +| Binop Simple (0.8M, Sdiv, 0) | 800,000 | 1,477,226 | 23,741 | 23.74 | 7,768,544 | 7,733,603.2 | 7,711,936 | +| Binop Simple (0.8M, Sdiv, 1) | 800,000 | 1,477,226 | 24,269 | 24.27 | 7,893,472 | 7,865,102.9 | 7,841,744 | +| Binop Simple (0.8M, Sgt) | 800,000 | 1,477,226 | 14,647 | 14.65 | 7,388,880 | 7,388,229.3 | 7,380,096 | +| Binop Simple (0.8M, Shl) | 800,000 | 1,477,226 | 10,602 | 10.60 | 2,946,212 | 2,946,212 | 2,928,644 | +| Binop Simple (0.8M, Shr) | 800,000 | 1,477,226 | 11,112 | 11.11 | 6,715,456 | 6,711,796 | 6,708,624 | +| Binop Simple (0.8M, Signextend) | 800,000 | 1,477,226 | 10,623 | 10.62 | 10,021,784 | 10,021,003.2 | 10,016,904 | +| Binop Simple (0.8M, Slt) | 800,000 | 1,477,226 | 10,100 | 10.10 | 10,309,468 | 10,306,134.7 | 10,297,660 | +| Binop Simple (0.8M, Smod) | 800,000 | 1,477,226 | 13,120 | 13.12 | 11,856,884 | 11,845,562.4 | 11,827,600 | +| Binop Simple (0.8M, Sub) | 800,000 | 1,477,226 | 9,599 | 9.60 | 4,027,600 | 4,023,533.3 | 4,018,816 | +| Binop Simple (0.8M, Xor) | 800,000 | 1,477,226 | 8,588 | 8.59 | 7,462,080 | 7,454,550.9 | 7,449,392 | +| Blobhash (0.8M, No Blobs) | 800,000 | 1,477,226 | 8,088 | 8.09 | 12,794,832 | 12,789,756.8 | 12,784,096 | +| Blobhash (0.8M, One Blob And Accessed) | 800,000 | 1,477,226 | 10,109 | 10.11 | 10,301,572 | 10,299,620 | 10,292,788 | +| Blobhash (0.8M, One Blob But Access Non, Existent Index) | 800,000 | 1,477,226 | 8,587 | 8.59 | 13,650,124 | 13,645,894.7 | 13,632,556 | +| Blobhash (0.8M, Six Blobs, Access Latest) | 800,000 | 1,477,226 | 9,591 | 9.59 | 699,488 | 695,072.8 | 680,944 | +| Calldataload (0.8M, Empty) | 800,000 | 1,477,226 | 11,626 | 11.63 | 11,798,804 | 11,794,900 | 11,791,972 | +| Calldataload (0.8M, One, Loop) | 800,000 | 1,477,226 | 13,631 | 13.63 | 1,044,012 | 1,003,020 | 958,124 | +| Calldataload (0.8M, Zero, Loop) | 800,000 | 1,477,226 | 13,618 | 13.62 | 8,018,396 | 8,008,798.7 | 7,998,876 | +| Calldatasize (0.8M, Calldata Length 0) | 800,000 | 1,477,226 | 9,100 | 9.10 | 14,514,236 | 14,511,308 | 14,496,668 | +| Calldatasize (0.8M, Calldata Length 10000) | 800,000 | 1,477,226 | 8,599 | 8.60 | 7,943,248 | 7,943,248 | 7,926,656 | +| Calldatasize (0.8M, Calldata Length 1000) | 800,000 | 1,477,226 | 8,591 | 8.59 | 13,998,484 | 13,984,820 | 13,974,084 | +| Callvalue (0.8M, From Origin False, Non Zero Value False) | 800,000 | 1,477,226 | 10,104 | 10.10 | 5,820,472 | 5,818,520 | 5,814,616 | +| Callvalue (0.8M, From Origin False, Non Zero Value True) | 800,000 | 1,477,226 | 10,093 | 10.09 | 11,808,764 | 11,794,366 | 11,780,460 | +| Callvalue (0.8M, From Origin True, Non Zero Value False) | 800,000 | 1,477,226 | 10,104 | 10.10 | 5,517,916 | 5,513,252.9 | 5,506,204 | +| Callvalue (0.8M, From Origin True, Non Zero Value True) | 800,000 | 1,477,226 | 9,586 | 9.59 | 3,477,140 | 3,475,188 | 3,470,308 | +| Dup (0.8M, Dup10) | 800,000 | 1,477,226 | 8,090 | 8.09 | 7,168,304 | 7,168,304 | 7,166,352 | +| Dup (0.8M, Dup11) | 800,000 | 1,477,226 | 8,079 | 8.08 | 4,774,224 | 4,771,946.7 | 4,762,512 | +| Dup (0.8M, Dup12) | 800,000 | 1,477,226 | 8,095 | 8.10 | 957,148 | 945,347.3 | 924,940 | +| Dup (0.8M, Dup13) | 800,000 | 1,477,226 | 8,568 | 8.57 | 11,781,436 | 11,781,436 | 11,736,524 | +| Dup (0.8M, Dup14) | 800,000 | 1,477,226 | 8,093 | 8.09 | 12,452,148 | 12,452,148 | 12,445,316 | +| Dup (0.8M, Dup15) | 800,000 | 1,477,226 | 8,064 | 8.06 | 3,094,560 | 3,089,875.2 | 3,080,896 | +| Dup (0.8M, Dup16) | 800,000 | 1,477,226 | 8,076 | 8.08 | 5,157,776 | 5,155,433.6 | 5,151,920 | +| Dup (0.8M, Dup1) | 800,000 | 1,477,226 | 8,077 | 8.08 | 8,843,544 | 8,839,884 | 8,834,760 | +| Dup (0.8M, Dup2) | 800,000 | 1,477,226 | 8,083 | 8.08 | 1,290,940 | 1,288,988 | 1,283,132 | +| Dup (0.8M, Dup3) | 800,000 | 1,477,226 | 8,085 | 8.09 | 12,109,200 | 12,103,181.3 | 12,088,704 | +| Dup (0.8M, Dup4) | 800,000 | 1,477,226 | 8,079 | 8.08 | 4,952,820 | 4,948,184 | 4,939,156 | +| Dup (0.8M, Dup5) | 800,000 | 1,477,226 | 8,065 | 8.06 | 7,424,992 | 7,422,064 | 7,417,184 | +| Dup (0.8M, Dup6) | 800,000 | 1,477,226 | 8,089 | 8.09 | 13,921,176 | 13,918,443.2 | 13,915,320 | +| Dup (0.8M, Dup7) | 800,000 | 1,477,226 | 8,102 | 8.10 | 14,379,748 | 14,372,916 | 14,360,228 | +| Dup (0.8M, Dup8) | 800,000 | 1,477,226 | 8,071 | 8.07 | 8,918,276 | 8,917,160.6 | 8,914,372 | +| Dup (0.8M, Dup9) | 800,000 | 1,477,226 | 8,088 | 8.09 | 6,157,192 | 6,154,996 | 6,148,408 | +| Jumpdests (0.8M) | 800,000 | 1,477,226 | 9,106 | 9.11 | 7,702,176 | 7,699,833.6 | 7,693,392 | +| Jumpi Fallthrough (0.8M) | 800,000 | 1,477,226 | 10,106 | 10.11 | 7,692,416 | 7,686,397.3 | 7,673,872 | +| Jumpis (0.8M) | 800,000 | 1,477,226 | 8,560 | 8.56 | 13,001,532 | 13,000,881.3 | 12,992,748 | +| Jumps (0.8M) | 800,000 | 1,477,226 | 7,061 | 7.06 | 4,726,400 | 4,723,797.3 | 4,721,520 | +| Keccak (0.8M) | 800,000 | 1,477,226 | 12,627 | 12.63 | 13,935,044 | 13,929,480.8 | 13,921,380 | +| Memory Access (0.8M, Small Mem, Uninit Offset, Off 0, Mload) | 800,000 | 1,477,226 | 10,075 | 10.07 | 1,537,864 | 1,536,996.4 | 1,533,960 | +| Memory Access (0.8M, Small Mem, Uninit Offset, Off 0, Mstore8) | 800,000 | 1,477,226 | 8,074 | 8.07 | 11,901,024 | 11,878,018.3 | 11,854,176 | +| Memory Access (0.8M, Small Mem, Uninit Offset, Off 0, Mstore) | 800,000 | 1,477,226 | 10,621 | 10.62 | 5,812,668 | 5,810,994.9 | 5,803,884 | +| Memory Access (0.8M, Small Mem, Uninit Offset, Off 1, Mload) | 800,000 | 1,477,226 | 9,092 | 9.09 | 4,275,504 | 4,272,901.3 | 4,267,696 | +| Memory Access (0.8M, Small Mem, Uninit Offset, Off 1, Mstore8) | 800,000 | 1,477,226 | 8,100 | 8.10 | 9,338,512 | 9,335,909.3 | 9,327,776 | +| Memory Access (0.8M, Small Mem, Uninit Offset, Off 1, Mstore) | 800,000 | 1,477,226 | 10,106 | 10.11 | 7,350,816 | 7,350,816 | 7,339,104 | +| Memory Access (0.8M, Small Mem, Uninit Offset, Off 31, Mload) | 800,000 | 1,477,226 | 9,582 | 9.58 | 4,845,460 | 4,832,186.4 | 4,818,132 | +| Memory Access (0.8M, Small Mem, Uninit Offset, Off 31, Mstore8) | 800,000 | 1,477,226 | 8,577 | 8.58 | 8,889,972 | 8,885,230.7 | 8,875,748 | +| Memory Access (0.8M, Small Mem, Uninit Offset, Off 31, Mstore) | 800,000 | 1,477,226 | 9,585 | 9.59 | 13,092,672 | 13,087,540.5 | 13,070,164 | +| Memory Access (0.8M, Small Mem, Init Offset, Off 0, Mload) | 800,000 | 1,477,226 | 10,595 | 10.60 | 3,115,056 | 3,109,444 | 3,103,344 | +| Memory Access (0.8M, Small Mem, Init Offset, Off 0, Mstore8) | 800,000 | 1,477,226 | 8,069 | 8.07 | 9,665,924 | 9,660,800 | 9,649,332 | +| Memory Access (0.8M, Small Mem, Init Offset, Off 0, Mstore) | 800,000 | 1,477,226 | 10,104 | 10.10 | 3,198,984 | 3,195,324 | 3,187,272 | +| Memory Access (0.8M, Small Mem, Init Offset, Off 1, Mload) | 800,000 | 1,477,226 | 9,573 | 9.57 | 4,981,124 | 4,975,024 | 4,967,460 | +| Memory Access (0.8M, Small Mem, Init Offset, Off 1, Mstore8) | 800,000 | 1,477,226 | 9,089 | 9.09 | 13,684,284 | 13,680,054.7 | 13,666,716 | +| Memory Access (0.8M, Small Mem, Init Offset, Off 1, Mstore) | 800,000 | 1,477,226 | 10,107 | 10.11 | 1,079,148 | 1,062,556 | 1,044,012 | +| Memory Access (0.8M, Small Mem, Init Offset, Off 31, Mload) | 800,000 | 1,477,226 | 9,608 | 9.61 | 4,284,284 | 4,282,820 | 4,279,404 | +| Memory Access (0.8M, Small Mem, Init Offset, Off 31, Mstore8) | 800,000 | 1,477,226 | 8,080 | 8.08 | 8,851,352 | 8,851,352 | 8,845,496 | +| Memory Access (0.8M, Small Mem, Init Offset, Off 31, Mstore) | 800,000 | 1,477,226 | 10,104 | 10.10 | 6,733,024 | 6,733,024 | 6,730,096 | +| Memory Access (0.8M, Big Mem, Uninit Offset, Off 0, Mload) | 800,000 | 1,477,226 | 9,594 | 9.59 | 11,355,484 | 11,353,910.7 | 11,349,708 | +| Memory Access (0.8M, Big Mem, Uninit Offset, Off 0, Mstore8) | 800,000 | 1,477,226 | 8,073 | 8.07 | 4,555,612 | 4,555,333.1 | 4,552,684 | +| Memory Access (0.8M, Big Mem, Uninit Offset, Off 0, Mstore) | 800,000 | 1,477,226 | 9,609 | 9.61 | 4,198,400 | 4,197,098.7 | 4,194,496 | +| Memory Access (0.8M, Big Mem, Uninit Offset, Off 1, Mload) | 800,000 | 1,477,226 | 9,082 | 9.08 | 6,171,832 | 6,165,976 | 6,157,192 | +| Memory Access (0.8M, Big Mem, Uninit Offset, Off 1, Mstore8) | 800,000 | 1,477,226 | 8,073 | 8.07 | 8,031,080 | 8,031,080 | 8,019,368 | +| Memory Access (0.8M, Big Mem, Uninit Offset, Off 1, Mstore) | 800,000 | 1,477,226 | 11,123 | 11.12 | 5,311,004 | 5,306,821.1 | 5,300,268 | +| Memory Access (0.8M, Big Mem, Uninit Offset, Off 31, Mload) | 800,000 | 1,477,226 | 10,088 | 10.09 | 801,964 | 784,884 | 767,804 | +| Memory Access (0.8M, Big Mem, Uninit Offset, Off 31, Mstore8) | 800,000 | 1,477,226 | 7,586 | 7.59 | 5,208,528 | 5,206,966.4 | 5,201,696 | +| Memory Access (0.8M, Big Mem, Uninit Offset, Off 31, Mstore) | 800,000 | 1,477,226 | 10,108 | 10.11 | 8,339,948 | 8,324,192.6 | 8,313,596 | +| Memory Access (0.8M, Big Mem, Init Offset, Off 0, Mload) | 800,000 | 1,477,226 | 9,572 | 9.57 | 6,330,912 | 6,312,172.8 | 6,296,752 | +| Memory Access (0.8M, Big Mem, Init Offset, Off 0, Mstore8) | 800,000 | 1,477,226 | 8,068 | 8.07 | 13,711,612 | 13,711,612 | 13,702,828 | +| Memory Access (0.8M, Big Mem, Init Offset, Off 0, Mstore) | 800,000 | 1,477,226 | 11,097 | 11.10 | 6,597,360 | 6,596,221.3 | 6,594,432 | +| Memory Access (0.8M, Big Mem, Init Offset, Off 1, Mload) | 800,000 | 1,477,226 | 10,096 | 10.10 | 12,763,600 | 12,761,648 | 12,757,744 | +| Memory Access (0.8M, Big Mem, Init Offset, Off 1, Mstore8) | 800,000 | 1,477,226 | 8,100 | 8.10 | 6,363,120 | 6,356,288 | 6,349,456 | +| Memory Access (0.8M, Big Mem, Init Offset, Off 1, Mstore) | 800,000 | 1,477,226 | 9,597 | 9.60 | 2,214,224 | 2,208,205.3 | 2,194,704 | +| Memory Access (0.8M, Big Mem, Init Offset, Off 31, Mload) | 800,000 | 1,477,226 | 9,593 | 9.59 | 12,492,920 | 12,492,920 | 12,483,160 | +| Memory Access (0.8M, Big Mem, Init Offset, Off 31, Mstore8) | 800,000 | 1,477,226 | 8,085 | 8.09 | 7,143,904 | 7,143,904 | 7,140,976 | +| Memory Access (0.8M, Big Mem, Init Offset, Off 31, Mstore) | 800,000 | 1,477,226 | 10,115 | 10.12 | 12,841,816 | 12,835,374.4 | 12,827,636 | +| Mod (0.8M, Op Mod, Mod Bits 127) | 800,000 | 1,477,226 | 21,221 | 21.22 | 3,718,212 | 3,713,610.9 | 3,706,500 | +| Mod (0.8M, Op Mod, Mod Bits 191) | 800,000 | 1,477,226 | 25,236 | 25.24 | 9,004,448 | 8,995,440.9 | 8,980,740 | +| Mod (0.8M, Op Mod, Mod Bits 255) | 800,000 | 1,477,226 | 21,699 | 21.70 | 4,693,220 | 4,686,693 | 4,674,676 | +| Mod (0.8M, Op Mod, Mod Bits 63) | 800,000 | 1,477,226 | 15,681 | 15.68 | 13,374,892 | 13,374,064 | 13,369,036 | +| Mod (0.8M, Op Smod, Mod Bits 127) | 800,000 | 1,477,226 | 23,211 | 23.21 | 1,589,592 | 1,573,244 | 1,538,840 | +| Mod (0.8M, Op Smod, Mod Bits 191) | 800,000 | 1,477,226 | 26,748 | 26.75 | 9,632,740 | 9,623,094.8 | 9,603,460 | +| Mod (0.8M, Op Smod, Mod Bits 255) | 800,000 | 1,477,226 | 21,720 | 21.72 | 12,514,388 | 12,509,438.3 | 12,495,844 | +| Mod (0.8M, Op Smod, Mod Bits 63) | 800,000 | 1,477,226 | 17,167 | 17.17 | 4,042,240 | 4,035,570.7 | 4,027,600 | +| Modarith (0.8M, Op Addmod, Mod Bits 127) | 800,000 | 1,477,226 | 17,672 | 17.67 | 6,183,544 | 6,179,518 | 6,175,736 | +| Modarith (0.8M, Op Addmod, Mod Bits 191) | 800,000 | 1,477,226 | 20,726 | 20.73 | 9,991,080 | 9,985,004 | 9,970,584 | +| Modarith (0.8M, Op Addmod, Mod Bits 255) | 800,000 | 1,477,226 | 18,679 | 18.68 | 7,570,416 | 7,564,966.7 | 7,563,584 | +| Modarith (0.8M, Op Addmod, Mod Bits 63) | 800,000 | 1,477,226 | 15,639 | 15.64 | 11,200,512 | 11,195,089.8 | 11,180,016 | +| Modarith (0.8M, Op Mulmod, Mod Bits 127) | 800,000 | 1,477,226 | 26,241 | 26.24 | 14,724,436 | 14,719,467.3 | 14,705,892 | +| Modarith (0.8M, Op Mulmod, Mod Bits 191) | 800,000 | 1,477,226 | 35,415 | 35.41 | 5,105,076 | 5,085,326.4 | 5,066,036 | +| Modarith (0.8M, Op Mulmod, Mod Bits 255) | 800,000 | 1,477,226 | 35,328 | 35.33 | 4,722,500 | 4,710,788 | 4,701,028 | +| Modarith (0.8M, Op Mulmod, Mod Bits 63) | 800,000 | 1,477,226 | 23,251 | 23.25 | 12,233,944 | 12,227,712.6 | 12,223,208 | +| Modexp (0.8M, Mod 1045 Gas Base Heavy) | 800,000 | 1,477,226 | 329,469 | 329.47 | 4,552,684 | 4,485,660.4 | 4,331,132 | +| Modexp (0.8M, Mod 1360 Gas Balanced) | 800,000 | 1,477,226 | 80,877 | 80.88 | 6,036,168 | 6,009,816 | 6,002,008 | +| Modexp (0.8M, Mod 400 Gas Exp Heavy) | 800,000 | 1,477,226 | 96,411 | 96.41 | 7,321,536 | 7,249,362.1 | 7,215,152 | +| Modexp (0.8M, Mod 408 Gas Balanced) | 800,000 | 1,477,226 | 70,722 | 70.72 | 6,945,784 | 6,929,964.7 | 6,910,648 | +| Modexp (0.8M, Mod 408 Gas Base Heavy) | 800,000 | 1,477,226 | 290,422 | 290.42 | 13,369,036 | 13,271,410.8 | 13,146,348 | +| Modexp (0.8M, Mod 600 As Balanced) | 800,000 | 1,477,226 | 72,200 | 72.20 | 12,676,948 | 12,627,541.3 | 12,588,508 | +| Modexp (0.8M, Mod 600 Gas Exp Heavy) | 800,000 | 1,477,226 | 103,566 | 103.57 | 10,252,864 | 10,203,718.2 | 10,169,204 | +| Modexp (0.8M, Mod 616 Gas Base Heavy) | 800,000 | 1,477,226 | 311,414 | 311.41 | 8,831,832 | 8,678,901.4 | 8,461,944 | +| Modexp (0.8M, Mod 677 Gas Base Heavy) | 800,000 | 1,477,226 | 76,235 | 76.23 | 1,873,600 | 1,806,256 | 1,769,168 | +| Modexp (0.8M, Mod 765 Gas Exp Heavy) | 800,000 | 1,477,226 | 85,397 | 85.40 | 5,763,868 | 5,741,108.5 | 5,722,876 | +| Modexp (0.8M, Mod 767 Gas Balanced) | 800,000 | 1,477,226 | 69,173 | 69.17 | 10,985,068 | 10,964,548.8 | 10,935,592 | +| Modexp (0.8M, Mod 800 Gas Base Heavy) | 800,000 | 1,477,226 | 325,692 | 325.69 | 2,516,784 | 2,375,103.7 | 2,242,528 | +| Modexp (0.8M, Mod 800 Gas Exp Heavy) | 800,000 | 1,477,226 | 110,127 | 110.13 | 2,751,996 | 2,726,755.6 | 2,705,148 | +| Modexp (0.8M, Mod 852 Gas Exp Heavy) | 800,000 | 1,477,226 | 108,616 | 108.62 | 5,440,812 | 5,432,028 | 5,392,012 | +| Modexp (0.8M, Mod 867 Gas Base Heavy) | 800,000 | 1,477,226 | 323,247 | 323.25 | 10,935,600 | 10,816,006.8 | 10,680,540 | +| Modexp (0.8M, Mod 996 Gas Balanced) | 800,000 | 1,477,226 | 70,733 | 70.73 | 5,998,104 | 5,982,739.0 | 5,968,824 | +| Modexp (0.8M, Mod Even 1024B Exp 1024) | 800,000 | 1,477,226 | 6,068 | 6.07 | 2,870,092 | 2,868,302.7 | 2,862,284 | +| Modexp (0.8M, Mod Even 128B Exp 1024) | 800,000 | 1,477,226 | 64,575 | 64.58 | 13,581,764 | 13,570,052 | 13,550,532 | +| Modexp (0.8M, Mod Even 16B Exp 320) | 800,000 | 1,477,226 | 101,574 | 101.57 | 5,802,908 | 5,786,214.3 | 5,763,868 | +| Modexp (0.8M, Mod Even 24B Exp 168) | 800,000 | 1,477,226 | 83,840 | 83.84 | 7,040,456 | 7,040,456 | 6,980,920 | +| Modexp (0.8M, Mod Even 256B Exp 1024) | 800,000 | 1,477,226 | 62,593 | 62.59 | 12,482,184 | 12,470,610.8 | 12,453,124 | +| Modexp (0.8M, Mod Even 32B Exp 256) | 800,000 | 1,477,226 | 83,360 | 83.36 | 4,623,928 | 4,609,863.1 | 4,583,912 | +| Modexp (0.8M, Mod Even 32B Exp 40) | 800,000 | 1,477,226 | 66,723 | 66.72 | 8,441,452 | 8,418,241.5 | 8,357,516 | +| Modexp (0.8M, Mod Even 32B Exp 96) | 800,000 | 1,477,226 | 77,798 | 77.80 | 2,091,248 | 2,053,895.7 | 2,007,312 | +| Modexp (0.8M, Mod Even 512B Exp 1024) | 800,000 | 1,477,226 | 6,066 | 6.07 | 5,696,524 | 5,696,524 | 5,687,740 | +| Modexp (0.8M, Mod Even 64B Exp 512) | 800,000 | 1,477,226 | 76,792 | 76.79 | 3,903,652 | 3,880,390.7 | 3,860,708 | +| Modexp (0.8M, Mod Even 8B Exp 896) | 800,000 | 1,477,226 | 171,237 | 171.24 | 12,086,752 | 12,000,375.4 | 11,919,568 | +| Modexp (0.8M, Mod Exp 208 Gas Balanced) | 800,000 | 1,477,226 | 63,185 | 63.19 | 5,283,680 | 5,259,865.6 | 5,209,504 | +| Modexp (0.8M, Mod Exp 215 Gas Exp Heavy) | 800,000 | 1,477,226 | 153,656 | 153.66 | 6,148,408 | 6,125,940.5 | 6,075,208 | +| Modexp (0.8M, Mod Exp 298 Gas Exp Heavy) | 800,000 | 1,477,226 | 168,798 | 168.80 | 3,461,528 | 3,385,744.5 | 3,252,664 | +| Modexp (0.8M, Mod Min As Balanced) | 800,000 | 1,477,226 | 67,109 | 67.11 | 12,180,888 | 12,152,756.7 | 12,109,200 | +| Modexp (0.8M, Mod Min As Base Heavy) | 800,000 | 1,477,226 | 232,789 | 232.79 | 14,854,520 | 14,854,520 | 14,729,316 | +| Modexp (0.8M, Mod Min As Exp Heavy) | 800,000 | 1,477,226 | 151,497 | 151.50 | 2,693,436 | 2,642,642.5 | 2,578,268 | +| Modexp (0.8M, Mod Odd 1024B Exp 1024) | 800,000 | 1,477,226 | 6,063 | 6.06 | 6,946,760 | 6,946,760 | 6,945,784 | +| Modexp (0.8M, Mod Odd 128B Exp 1024) | 800,000 | 1,477,226 | 65,631 | 65.63 | 9,574,504 | 9,490,830.4 | 9,462,104 | +| Modexp (0.8M, Mod Odd 256B Exp 1024) | 800,000 | 1,477,226 | 62,020 | 62.02 | 11,434,364 | 11,402,831.5 | 11,356,460 | +| Modexp (0.8M, Mod Odd 32B Exp 256) | 800,000 | 1,477,226 | 81,873 | 81.87 | 2,861,308 | 2,845,301.6 | 2,827,148 | +| Modexp (0.8M, Mod Odd 32B Exp 96) | 800,000 | 1,477,226 | 75,848 | 75.85 | 11,707,632 | 11,671,573.3 | 11,623,672 | +| Modexp (0.8M, Mod Odd 32B Exp Cover Windows) | 800,000 | 1,477,226 | 59,599 | 59.60 | 9,133,256 | 9,076,946.9 | 9,068,588 | +| Modexp (0.8M, Mod Odd 512B Exp 1024) | 800,000 | 1,477,226 | 6,070 | 6.07 | 13,048,380 | 13,032,764 | 13,023,004 | +| Modexp (0.8M, Mod Odd 64B Exp 512) | 800,000 | 1,477,226 | 76,799 | 76.80 | 12,224,352 | 12,207,905.4 | 12,180,888 | +| Modexp (0.8M, Mod Pawel 2) | 800,000 | 1,477,226 | 98,510 | 98.51 | 2,827,148 | 2,801,806.9 | 2,778,348 | +| Modexp (0.8M, Mod Pawel 3) | 800,000 | 1,477,226 | 80,847 | 80.85 | 6,625,664 | 6,615,097.7 | 6,598,336 | +| Modexp (0.8M, Mod Pawel 4) | 800,000 | 1,477,226 | 74,307 | 74.31 | 5,968,824 | 5,947,263.3 | 5,917,096 | +| Modexp (0.8M, Mod Vul Common 1152N1) | 800,000 | 1,477,226 | 46,520 | 46.52 | 8,126,616 | 8,098,507.2 | 8,052,440 | +| Modexp (0.8M, Mod Vul Common 1349N1) | 800,000 | 1,477,226 | 63,597 | 63.60 | 12,941,880 | 12,880,260 | 12,871,136 | +| Modexp (0.8M, Mod Vul Common 1360N1) | 800,000 | 1,477,226 | 70,223 | 70.22 | 13,446,776 | 13,416,495.8 | 13,379,240 | +| Modexp (0.8M, Mod Vul Common 1360N2) | 800,000 | 1,477,226 | 65,615 | 65.61 | 1,742,820 | 1,692,353.7 | 1,625,700 | +| Modexp (0.8M, Mod Vul Common 200N1) | 800,000 | 1,477,226 | 38,894 | 38.89 | 12,825,688 | 12,808,925.7 | 12,795,808 | +| Modexp (0.8M, Mod Vul Common 200N2) | 800,000 | 1,477,226 | 45,452 | 45.45 | 664,352 | 635,079.4 | 534,544 | +| Modexp (0.8M, Mod Vul Common 200N3) | 800,000 | 1,477,226 | 47,981 | 47.98 | 4,762,512 | 4,749,303.5 | 4,736,160 | +| Modexp (0.8M, Mod Vul Example 1) | 800,000 | 1,477,226 | 81,308 | 81.31 | 1,533,960 | 1,475,400 | 1,395,368 | +| Modexp (0.8M, Mod Vul Example 2) | 800,000 | 1,477,226 | 76,259 | 76.26 | 4,672,728 | 4,660,876.6 | 4,643,448 | +| Modexp (0.8M, Mod Vul Guido 1 Even) | 800,000 | 1,477,226 | 59,042 | 59.04 | 9,327,776 | 9,283,663.7 | 9,255,628 | +| Modexp (0.8M, Mod Vul Guido 2 Even) | 800,000 | 1,477,226 | 94,943 | 94.94 | 4,131,056 | 4,093,180.9 | 4,059,808 | +| Modexp (0.8M, Mod Vul Guido 3 Even) | 800,000 | 1,477,226 | 166,580 | 166.58 | 5,686,764 | 5,642,713.9 | 5,560,860 | +| Modexp (0.8M, Mod Vul Marius 1 Even) | 800,000 | 1,477,226 | 85,867 | 85.87 | 3,992,464 | 3,977,273.0 | 3,963,184 | +| Modexp (0.8M, Mod Vul Nagydani 1 Pow 0X10001) | 800,000 | 1,477,226 | 58,057 | 58.06 | 11,348,732 | 11,330,546.8 | 11,292,272 | +| Modexp (0.8M, Mod Vul Nagydani 1 Qube) | 800,000 | 1,477,226 | 44,433 | 44.43 | 11,180,016 | 11,172,509.2 | 11,152,772 | +| Modexp (0.8M, Mod Vul Nagydani 1 Square) | 800,000 | 1,477,226 | 42,416 | 42.42 | 14,358,276 | 14,352,962.2 | 14,335,972 | +| Modexp (0.8M, Mod Vul Nagydani 2 Pow 0X10001) | 800,000 | 1,477,226 | 60,654 | 60.65 | 11,530,160 | 11,493,796.8 | 11,459,212 | +| Modexp (0.8M, Mod Vul Nagydani 2 Qube) | 800,000 | 1,477,226 | 127,738 | 127.74 | 10,161,276 | 10,124,388.2 | 10,060,992 | +| Modexp (0.8M, Mod Vul Nagydani 2 Square) | 800,000 | 1,477,226 | 119,721 | 119.72 | 3,021,364 | 2,998,846.3 | 2,976,468 | +| Modexp (0.8M, Mod Vul Nagydani 3 Pow 0X10001) | 800,000 | 1,477,226 | 61,097 | 61.10 | 1,970,224 | 1,945,917.0 | 1,907,760 | +| Modexp (0.8M, Mod Vul Nagydani 3 Qube) | 800,000 | 1,477,226 | 309,129 | 309.13 | 12,444,340 | 12,382,031.9 | 12,294,176 | +| Modexp (0.8M, Mod Vul Nagydani 3 Square) | 800,000 | 1,477,226 | 282,792 | 282.79 | 9,967,352 | 9,898,445.5 | 9,831,300 | +| Modexp (0.8M, Mod Vul Nagydani 4 Pow 0X10001) | 800,000 | 1,477,226 | 58,549 | 58.55 | 10,576,700 | 10,518,975.4 | 10,487,328 | +| Modexp (0.8M, Mod Vul Nagydani 4 Qube) | 800,000 | 1,477,226 | 368,207 | 368.21 | 14,334,996 | 14,167,983.2 | 14,029,716 | +| Modexp (0.8M, Mod Vul Nagydani 4 Square) | 800,000 | 1,477,226 | 341,071 | 341.07 | 3,705,524 | 3,619,176.2 | 3,478,116 | +| Modexp (0.8M, Mod Vul Nagydani 5 Pow 0X10001) | 800,000 | 1,477,226 | 55,070 | 55.07 | 5,901,480 | 5,883,856.2 | 5,839,992 | +| Modexp (0.8M, Mod Vul Nagydani 5 Qube) | 800,000 | 1,477,226 | 376,406 | 376.41 | 3,840,212 | 3,787,170.9 | 3,718,212 | +| Modexp (0.8M, Mod Vul Nagydani 5 Square) | 800,000 | 1,477,226 | 342,910 | 342.91 | 6,588,576 | 6,514,660.3 | 6,374,832 | +| Modexp (0.8M, Mod Vul Pawel 1 Exp Heavy) | 800,000 | 1,477,226 | 162,660 | 162.66 | 14,705,896 | 14,668,970.7 | 14,622,936 | +| Modexp (0.8M, Mod Vul Pawel 2 Exp Heavy) | 800,000 | 1,477,226 | 93,939 | 93.94 | 5,066,036 | 5,018,212 | 5,001,620 | +| Modexp (0.8M, Mod Vul Pawel 3 Exp Heavy) | 800,000 | 1,477,226 | 78,256 | 78.26 | 5,502,300 | 5,474,314.7 | 5,441,788 | +| Modexp (0.8M, Mod Vul Pawel 4 Exp Heavy) | 800,000 | 1,477,226 | 69,634 | 69.63 | 14,421,944 | 14,410,110.7 | 14,385,604 | +| Msize (0.8M, Mem Size 0) | 800,000 | 1,477,226 | 10,085 | 10.09 | 3,930,004 | 3,926,100 | 3,922,196 | +| Msize (0.8M, Mem Size 1000000) | 800,000 | 1,477,226 | 9,591 | 9.59 | 529,664 | 487,193.2 | 404,736 | +| Msize (0.8M, Mem Size 100000) | 800,000 | 1,477,226 | 11,152 | 11.15 | 4,210,112 | 4,207,281.6 | 4,197,424 | +| Msize (0.8M, Mem Size 1000) | 800,000 | 1,477,226 | 10,122 | 10.12 | 10,680,760 | 10,643,659.2 | 10,624,624 | +| Msize (0.8M, Mem Size 1) | 800,000 | 1,477,226 | 10,107 | 10.11 | 8,914,372 | 8,914,372 | 8,894,852 | +| Precompile Fixed Cost (0.8M, Blake2F) | 800,000 | 1,477,226 | 61,605 | 61.60 | 9,835,864 | 9,760,753.2 | 9,736,020 | +| Precompile Fixed Cost (0.8M, Bls12 Fp To G1) | 800,000 | 1,477,226 | 120,187 | 120.19 | 13,906,536 | 13,836,086.4 | 13,749,676 | +| Precompile Fixed Cost (0.8M, Bls12 Fp To G2) | 800,000 | 1,477,226 | 89,965 | 89.97 | 1,263,612 | 1,185,563.8 | 1,080,124 | +| Precompile Fixed Cost (0.8M, Bls12 G1Add) | 800,000 | 1,477,226 | 71,276 | 71.28 | 13,514,420 | 13,480,862.8 | 13,462,692 | +| Precompile Fixed Cost (0.8M, Bls12 G1Msm) | 800,000 | 1,477,226 | 6,062 | 6.06 | 13,666,716 | 13,658,257.3 | 13,651,100 | +| Precompile Fixed Cost (0.8M, Bls12 G2Add) | 800,000 | 1,477,226 | 73,727 | 73.73 | 5,366,636 | 5,341,331.4 | 5,311,980 | +| Precompile Fixed Cost (0.8M, Bls12 G2Msm) | 800,000 | 1,477,226 | 6,052 | 6.05 | 10,421,172 | 10,417,656 | 10,407,308 | +| Precompile Fixed Cost (0.8M, Bls12 Pairing Check) | 800,000 | 1,477,226 | 117,185 | 117.19 | 14,620,944 | 14,578,915.5 | 14,521,068 | +| Precompile Fixed Cost (0.8M, Bn128 Add) | 800,000 | 1,477,226 | 23,232 | 23.23 | 3,912,436 | 3,908,601.7 | 3,903,652 | +| Precompile Fixed Cost (0.8M, Bn128 Add 1 2) | 800,000 | 1,477,226 | 13,124 | 13.12 | 3,156,048 | 3,154,204.4 | 3,139,456 | +| Precompile Fixed Cost (0.8M, Bn128 Add Infinities) | 800,000 | 1,477,226 | 9,592 | 9.59 | 4,318,444 | 4,310,831.2 | 4,297,948 | +| Precompile Fixed Cost (0.8M, Bn128 Mul) | 800,000 | 1,477,226 | 33,809 | 33.81 | 11,125,164 | 11,107,596 | 11,102,716 | +| Precompile Fixed Cost (0.8M, Bn128 Mul 1 2 2 Scalar) | 800,000 | 1,477,226 | 8,069 | 8.07 | 4,817,156 | 4,814,390.7 | 4,808,372 | +| Precompile Fixed Cost (0.8M, Bn128 Mul 1 2 32 Byte Scalar) | 800,000 | 1,477,226 | 32,835 | 32.84 | 13,598,668 | 13,591,456.4 | 13,591,524 | +| Precompile Fixed Cost (0.8M, Bn128 Mul 32 Byte Coord And 2 Scalar) | 800,000 | 1,477,226 | 7,571 | 7.57 | 8,165,380 | 8,155,065.7 | 8,144,888 | +| Precompile Fixed Cost (0.8M, Bn128 Mul 32 Byte Coord And Scalar) | 800,000 | 1,477,226 | 32,287 | 32.29 | 11,458,236 | 11,445,565 | 11,432,784 | +| Precompile Fixed Cost (0.8M, Bn128 Mul Infinities 2 Scalar) | 800,000 | 1,477,226 | 7,559 | 7.56 | 10,376,996 | 10,376,707 | 10,375,840 | +| Precompile Fixed Cost (0.8M, Bn128 Mul Infinities 32 Byte Scalar) | 800,000 | 1,477,226 | 22,752 | 22.75 | 2,767,612 | 2,760,048 | 2,752,972 | +| Precompile Fixed Cost (0.8M, Bn128 One Pairing) | 800,000 | 1,477,226 | 20,198 | 20.20 | 11,103,692 | 11,087,797.1 | 11,065,628 | +| Precompile Fixed Cost (0.8M, Bn128 Two Pairings) | 800,000 | 1,477,226 | 20,201 | 20.20 | 6,707,648 | 6,691,195.4 | 6,666,656 | +| Precompile Fixed Cost (0.8M, Bn128 Two Pairings Empty) | 800,000 | 1,477,226 | 6,047 | 6.05 | 7,446,464 | 7,436,866.7 | 7,425,968 | +| Precompile Fixed Cost (0.8M, Ecrecover) | 800,000 | 1,477,226 | 15,159 | 15.16 | 13,547,604 | 13,541,608.6 | 13,524,180 | +| Precompile Fixed Cost (0.8M, Point Evaluation) | 800,000 | 1,477,226 | 298,969 | 298.97 | 6,906,748 | 6,864,587.2 | 6,790,604 | +| Precompile Only Data Input (0.8M, Identity) | 800,000 | 1,477,226 | 7,586 | 7.59 | 3,955,380 | 3,949,524 | 3,945,620 | +| Precompile Only Data Input (0.8M, Ripemd, 160) | 800,000 | 1,477,226 | 7,560 | 7.56 | 4,736,160 | 4,732,581.3 | 4,728,352 | +| Precompile Only Data Input (0.8M, Sha2, 256) | 800,000 | 1,477,226 | 16,671 | 16.67 | 2,566,560 | 2,562,525.9 | 2,551,920 | +| Push (0.8M, Push0) | 800,000 | 1,477,226 | 10,111 | 10.11 | 14,024,836 | 14,013,666.2 | 13,998,484 | +| Push (0.8M, Push10) | 800,000 | 1,477,226 | 8,573 | 8.57 | 11,536,620 | 11,530,032 | 11,535,460 | +| Push (0.8M, Push11) | 800,000 | 1,477,226 | 10,078 | 10.08 | 2,118,576 | 2,113,533.3 | 2,105,888 | +| Push (0.8M, Push12) | 800,000 | 1,477,226 | 9,578 | 9.58 | 11,274,324 | 11,274,324 | 11,272,372 | +| Push (0.8M, Push13) | 800,000 | 1,477,226 | 9,624 | 9.62 | 10,451,540 | 10,435,934.5 | 10,423,124 | +| Push (0.8M, Push14) | 800,000 | 1,477,226 | 9,586 | 9.59 | 12,715,656 | 12,715,656 | 12,709,800 | +| Push (0.8M, Push15) | 800,000 | 1,477,226 | 10,605 | 10.61 | 11,131,996 | 11,124,890.7 | 11,131,996 | +| Push (0.8M, Push16) | 800,000 | 1,477,226 | 10,097 | 10.10 | 4,859,124 | 4,854,366 | 4,845,460 | +| Push (0.8M, Push17) | 800,000 | 1,477,226 | 10,109 | 10.11 | 11,217,668 | 11,217,668 | 11,200,508 | +| Push (0.8M, Push18) | 800,000 | 1,477,226 | 9,618 | 9.62 | 3,172,636 | 3,167,756 | 3,156,044 | +| Push (0.8M, Push19) | 800,000 | 1,477,226 | 10,116 | 10.12 | 3,944,644 | 3,941,960 | 3,938,788 | +| Push (0.8M, Push1) | 800,000 | 1,477,226 | 8,081 | 8.08 | 6,057,640 | 6,057,640 | 6,054,712 | +| Push (0.8M, Push20) | 800,000 | 1,477,226 | 10,606 | 10.61 | 13,110,240 | 13,110,240 | 13,092,672 | +| Push (0.8M, Push21) | 800,000 | 1,477,226 | 10,625 | 10.62 | 8,929,988 | 8,924,620 | 8,918,276 | +| Push (0.8M, Push22) | 800,000 | 1,477,226 | 10,091 | 10.09 | 9,047,116 | 9,035,160 | 9,020,764 | +| Push (0.8M, Push23) | 800,000 | 1,477,226 | 11,108 | 11.11 | 7,402,544 | 7,398,802.7 | 7,387,904 | +| Push (0.8M, Push24) | 800,000 | 1,477,226 | 10,615 | 10.62 | 3,997,344 | 3,995,880 | 3,992,464 | +| Push (0.8M, Push25) | 800,000 | 1,477,226 | 10,598 | 10.60 | 6,262,596 | 6,262,596 | 6,253,812 | +| Push (0.8M, Push26) | 800,000 | 1,477,226 | 10,598 | 10.60 | 6,631,520 | 6,631,520 | 6,627,616 | +| Push (0.8M, Push27) | 800,000 | 1,477,226 | 10,127 | 10.13 | 7,711,936 | 7,706,730.7 | 7,702,176 | +| Push (0.8M, Push28) | 800,000 | 1,477,226 | 10,600 | 10.60 | 5,531,580 | 5,527,310 | 5,517,916 | +| Push (0.8M, Push29) | 800,000 | 1,477,226 | 10,585 | 10.59 | 6,739,856 | 6,739,856 | 6,733,024 | +| Push (0.8M, Push2) | 800,000 | 1,477,226 | 8,075 | 8.07 | 2,925,716 | 2,918,558.7 | 2,912,052 | +| Push (0.8M, Push30) | 800,000 | 1,477,226 | 11,131 | 11.13 | 3,935,860 | 3,933,908 | 3,930,004 | +| Push (0.8M, Push31) | 800,000 | 1,477,226 | 11,124 | 11.12 | 1,884,336 | 1,880,041.6 | 1,873,600 | +| Push (0.8M, Push32) | 800,000 | 1,477,226 | 11,139 | 11.14 | 10,374,864 | 10,372,695.1 | 10,369,984 | +| Push (0.8M, Push3) | 800,000 | 1,477,226 | 8,104 | 8.10 | 6,054,712 | 6,048,124 | 6,043,000 | +| Push (0.8M, Push4) | 800,000 | 1,477,226 | 8,070 | 8.07 | 2,957,924 | 2,954,996 | 2,950,116 | +| Push (0.8M, Push5) | 800,000 | 1,477,226 | 7,580 | 7.58 | 6,188,424 | 6,185,691.2 | 6,183,544 | +| Push (0.8M, Push6) | 800,000 | 1,477,226 | 8,599 | 8.60 | 4,931,348 | 4,925,614 | 4,915,732 | +| Push (0.8M, Push7) | 800,000 | 1,477,226 | 8,084 | 8.08 | 8,979,764 | 8,978,137.3 | 8,972,932 | +| Push (0.8M, Push8) | 800,000 | 1,477,226 | 8,577 | 8.58 | 8,231,612 | 8,231,612 | 8,231,612 | +| Push (0.8M, Push9) | 800,000 | 1,477,226 | 8,576 | 8.58 | 4,956,724 | 4,956,236 | 4,952,820 | +| Return Revert (0.8M, 1Kib Of Non, Zero Data, Return) | 800,000 | 1,477,226 | 10,646 | 10.65 | 6,967,256 | 6,957,886.4 | 6,946,760 | +| Return Revert (0.8M, 1Kib Of Non, Zero Data, Revert) | 800,000 | 1,477,226 | 10,590 | 10.59 | 6,348,480 | 6,348,480 | 6,330,912 | +| Return Revert (0.8M, 1Kib Of Zero Data, Return) | 800,000 | 1,477,226 | 10,084 | 10.08 | 2,150,784 | 2,150,784 | 2,142,976 | +| Return Revert (0.8M, 1Kib Of Zero Data, Revert) | 800,000 | 1,477,226 | 10,608 | 10.61 | 11,246,296 | 11,239,268.8 | 11,229,704 | +| Return Revert (0.8M, 1Mib Of Non, Zero Data, Return) | 800,000 | 1,477,226 | 6,070 | 6.07 | 11,549,308 | 11,548,332 | 11,540,524 | +| Return Revert (0.8M, 1Mib Of Non, Zero Data, Revert) | 800,000 | 1,477,226 | 6,055 | 6.05 | 5,561,836 | 5,561,348 | 5,556,956 | +| Return Revert (0.8M, 1Mib Of Zero Data, Return) | 800,000 | 1,477,226 | 6,070 | 6.07 | 2,004,384 | 1,994,949.3 | 1,987,792 | +| Return Revert (0.8M, 1Mib Of Zero Data, Revert) | 800,000 | 1,477,226 | 6,081 | 6.08 | 1,747,696 | 1,745,939.2 | 1,741,840 | +| Return Revert (0.8M, Empty, Return) | 800,000 | 1,477,226 | 12,101 | 12.10 | 10,290,448 | 10,286,194 | 10,280,060 | +| Return Revert (0.8M, Empty, Revert) | 800,000 | 1,477,226 | 13,155 | 13.15 | 4,877,668 | 4,877,668 | 4,858,148 | +| Returndatasize Nonzero (0.8M, Returned Size 0, Return Data Style Returndatastyle.Identity) | 800,000 | 1,477,226 | 9,086 | 9.09 | 1,602,276 | 1,596,698.9 | 1,588,612 | +| Returndatasize Nonzero (0.8M, Returned Size 0, Return Data Style Returndatastyle.Return) | 800,000 | 1,477,226 | 9,082 | 9.08 | 3,127,744 | 3,122,668.8 | 3,117,008 | +| Returndatasize Nonzero (0.8M, Returned Size 0, Return Data Style Returndatastyle.Revert) | 800,000 | 1,477,226 | 8,586 | 8.59 | 896,636 | 886,050.2 | 860,524 | +| Returndatasize Nonzero (0.8M, Returned Size 1, Return Data Style Returndatastyle.Identity) | 800,000 | 1,477,226 | 8,591 | 8.59 | 10,015,928 | 10,008,956.6 | 10,002,264 | +| Returndatasize Nonzero (0.8M, Returned Size 1, Return Data Style Returndatastyle.Return) | 800,000 | 1,477,226 | 9,151 | 9.15 | 9,460,152 | 9,449,411.4 | 9,431,352 | +| Returndatasize Nonzero (0.8M, Returned Size 1, Return Data Style Returndatastyle.Revert) | 800,000 | 1,477,226 | 8,608 | 8.61 | 7,126,336 | 7,123,733.3 | 7,119,504 | +| Returndatasize Zero (0.8M) | 800,000 | 1,477,226 | 8,589 | 8.59 | 3,102,368 | 3,100,660 | 3,095,536 | +| Shifts (0.8M, Shift Right Sar) | 800,000 | 1,477,226 | 11,106 | 11.11 | 13,968,228 | 13,968,228 | 13,951,636 | +| Shifts (0.8M, Shift Right Shr) | 800,000 | 1,477,226 | 11,108 | 11.11 | 7,592,864 | 7,581,640 | 7,572,368 | +| Swap (0.8M, Swap10) | 800,000 | 1,477,226 | 12,129 | 12.13 | 12,965,304 | 12,963,108 | 12,948,712 | +| Swap (0.8M, Swap11) | 800,000 | 1,477,226 | 13,130 | 13.13 | 11,023,568 | 11,006,185.6 | 10,998,912 | +| Swap (0.8M, Swap12) | 800,000 | 1,477,226 | 12,117 | 12.12 | 1,907,760 | 1,896,926.4 | 1,886,288 | +| Swap (0.8M, Swap13) | 800,000 | 1,477,226 | 13,116 | 13.12 | 8,217,948 | 8,210,140 | 8,194,524 | +| Swap (0.8M, Swap14) | 800,000 | 1,477,226 | 12,641 | 12.64 | 1,987,792 | 1,980,871.3 | 1,972,176 | +| Swap (0.8M, Swap15) | 800,000 | 1,477,226 | 12,128 | 12.13 | 860,524 | 834,685.7 | 803,916 | +| Swap (0.8M, Swap16) | 800,000 | 1,477,226 | 12,120 | 12.12 | 5,721,900 | 5,712,302.7 | 5,696,524 | +| Swap (0.8M, Swap1) | 800,000 | 1,477,226 | 12,616 | 12.62 | 11,827,604 | 11,823,421.1 | 11,818,820 | +| Swap (0.8M, Swap2) | 800,000 | 1,477,226 | 12,093 | 12.09 | 9,157,052 | 9,156,494.3 | 9,144,364 | +| Swap (0.8M, Swap3) | 800,000 | 1,477,226 | 12,644 | 12.64 | 4,296,972 | 4,296,484 | 4,285,260 | +| Swap (0.8M, Swap4) | 800,000 | 1,477,226 | 12,117 | 12.12 | 7,823,200 | 7,811,162.7 | 7,793,920 | +| Swap (0.8M, Swap5) | 800,000 | 1,477,226 | 12,140 | 12.14 | 679,968 | 671,561.8 | 664,352 | +| Swap (0.8M, Swap6) | 800,000 | 1,477,226 | 12,606 | 12.61 | 4,193,520 | 4,190,592 | 4,180,832 | +| Swap (0.8M, Swap7) | 800,000 | 1,477,226 | 12,646 | 12.65 | 11,811,988 | 11,810,524 | 11,809,060 | +| Swap (0.8M, Swap8) | 800,000 | 1,477,226 | 12,641 | 12.64 | 4,563,420 | 4,560,898.7 | 4,557,564 | +| Swap (0.8M, Swap9) | 800,000 | 1,477,226 | 12,620 | 12.62 | 12,782,144 | 12,775,637.3 | 12,768,480 | +| Tload (0.8M, Val Mut False, Key Mut False) | 800,000 | 1,477,226 | 6,557 | 6.56 | 12,756,768 | 12,756,036 | 12,737,580 | +| Tload (0.8M, Val Mut False, Key Mut True) | 800,000 | 1,477,226 | 6,572 | 6.57 | 11,556,044 | 11,553,441.3 | 11,552,140 | +| Tload (0.8M, Val Mut True, Key Mut False) | 800,000 | 1,477,226 | 6,553 | 6.55 | 6,979,944 | 6,976,040 | 6,968,232 | +| Tload (0.8M, Val Mut True, Key Mut True) | 800,000 | 1,477,226 | 7,076 | 7.08 | 4,913,780 | 4,912,478.7 | 4,904,996 | +| Tstore (0.8M, Dense Val Mut False, Key Mut False) | 800,000 | 1,477,226 | 8,093 | 8.09 | 13,462,692 | 13,455,954 | 13,446,776 | +| Tstore (0.8M, Dense Val Mut False, Key Mut True) | 800,000 | 1,477,226 | 8,087 | 8.09 | 6,651,040 | 6,650,389.3 | 6,647,136 | +| Tstore (0.8M, Dense Val Mut True, Key Mut False) | 800,000 | 1,477,226 | 10,100 | 10.10 | 10,028,028 | 10,026,721 | 10,028,028 | +| Tstore (0.8M, Dense Val Mut True, Key Mut True) | 800,000 | 1,477,226 | 10,106 | 10.11 | 1,617,892 | 1,614,866.4 | 1,602,276 | +| Unop (0.8M, Iszero) | 800,000 | 1,477,226 | 14,642 | 14.64 | 12,293,200 | 12,293,200 | 12,272,132 | +| Unop (0.8M, Not) | 800,000 | 1,477,226 | 8,075 | 8.07 | 10,251,556 | 10,251,556 | 10,244,724 | +| Zero Param (0.8M, Address) | 800,000 | 1,477,226 | 12,618 | 12.62 | 6,373,856 | 6,370,440 | 6,364,096 | +| Zero Param (0.8M, Basefee) | 800,000 | 1,477,226 | 9,105 | 9.11 | 14,484,956 | 14,477,538.4 | 14,462,508 | +| Zero Param (0.8M, Blobbasefee) | 800,000 | 1,477,226 | 10,618 | 10.62 | 11,723,836 | 11,721,233.3 | 11,702,364 | +| Zero Param (0.8M, Caller) | 800,000 | 1,477,226 | 12,608 | 12.61 | 8,951,460 | 8,949,312.8 | 8,935,844 | +| Zero Param (0.8M, Chainid) | 800,000 | 1,477,226 | 10,091 | 10.09 | 12,856,456 | 12,854,922.3 | 12,852,552 | +| Zero Param (0.8M, Codesize) | 800,000 | 1,477,226 | 10,100 | 10.10 | 10,464,080 | 10,464,080 | 10,460,176 | +| Zero Param (0.8M, Coinbase) | 800,000 | 1,477,226 | 12,623 | 12.62 | 10,367,056 | 10,359,159.3 | 10,352,416 | +| Zero Param (0.8M, Gaslimit) | 800,000 | 1,477,226 | 9,591 | 9.59 | 5,388,108 | 5,387,348.9 | 5,382,252 | +| Zero Param (0.8M, Gasprice) | 800,000 | 1,477,226 | 10,626 | 10.63 | 5,828,280 | 5,828,280 | 5,826,328 | +| Zero Param (0.8M, Gas) | 800,000 | 1,477,226 | 9,594 | 9.59 | 5,180,224 | 5,176,598.9 | 5,168,512 | +| Zero Param (0.8M, Number) | 800,000 | 1,477,226 | 9,609 | 9.61 | 13,948,708 | 13,942,294.3 | 13,935,044 | +| Zero Param (0.8M, Origin) | 800,000 | 1,477,226 | 13,141 | 13.14 | 4,255,008 | 4,250,019.6 | 4,242,320 | +| Zero Param (0.8M, Prevrandao) | 800,000 | 1,477,226 | 15,681 | 15.68 | 10,347,432 | 10,319,208 | 10,308,488 | +| Zero Param (0.8M, Timestamp) | 800,000 | 1,477,226 | 10,616 | 10.62 | 9,999,616 | 9,997,125.7 | 9,989,856 | +| Calldatacopy (0.8M, Zero Data, Dynamic Src Dst, 0Bytes, Call) | 800,000 | 1,477,226 | 10,600 | 10.60 | 12,708,824 | 12,697,108 | 12,688,416 | +| Calldatacopy (0.8M, Zero Data, Dynamic Src Dst, 0Bytes, Transaction) | 800,000 | 1,477,226 | 10,596 | 10.60 | 1,283,132 | 1,275,774.5 | 1,264,588 | +| Calldatacopy (0.8M, Zero Data, Dynamic Src Dst, 100Bytes, Call) | 800,000 | 1,477,226 | 10,117 | 10.12 | 10,602,488 | 10,597,359 | 10,578,068 | +| Calldatacopy (0.8M, Zero Data, Dynamic Src Dst, 100Bytes, Transaction) | 800,000 | 1,477,226 | 9,603 | 9.60 | 13,749,676 | 13,737,964 | 13,714,540 | +| Calldatacopy (0.8M, Zero Data, Dynamic Src Dst, 10Kib, Call) | 800,000 | 1,477,226 | 6,563 | 6.56 | 9,970,584 | 9,969,282.7 | 9,965,704 | +| Calldatacopy (0.8M, Zero Data, Dynamic Src Dst, 10Kib, Transaction) | 800,000 | 1,477,226 | 6,564 | 6.56 | 12,684,512 | 12,682,560 | 12,677,924 | +| Calldatacopy (0.8M, Zero Data, Dynamic Src Dst, 1Mib, Call) | 800,000 | 1,477,226 | 6,048 | 6.05 | 9,707,656 | 9,707,656 | 9,689,444 | +| Calldatacopy (0.8M, Zero Data, Dynamic Src Dst, 1Mib, Transaction) | 800,000 | 1,477,226 | 5,543 | 5.54 | 14,496,668 | 14,496,017.3 | 14,491,788 | +| Calldatacopy (0.8M, Zero Data, Fixed Src Dst, 0Bytes, Call) | 800,000 | 1,477,226 | 9,081 | 9.08 | 9,729,192 | 9,726,752 | 9,724,312 | +| Calldatacopy (0.8M, Zero Data, Fixed Src Dst, 0Bytes, Transaction) | 800,000 | 1,477,226 | 8,572 | 8.57 | 4,180,832 | 4,172,210.7 | 4,162,288 | +| Calldatacopy (0.8M, Zero Data, Fixed Src Dst, 100Bytes, Call) | 800,000 | 1,477,226 | 8,081 | 8.08 | 10,286,692 | 10,281,161.3 | 10,271,076 | +| Calldatacopy (0.8M, Zero Data, Fixed Src Dst, 100Bytes, Transaction) | 800,000 | 1,477,226 | 8,074 | 8.07 | 8,294,076 | 8,288,805.6 | 8,283,340 | +| Calldatacopy (0.8M, Zero Data, Fixed Src Dst, 10Kib, Call) | 800,000 | 1,477,226 | 7,080 | 7.08 | 7,673,872 | 7,669,968 | 7,665,088 | +| Calldatacopy (0.8M, Zero Data, Fixed Src Dst, 10Kib, Transaction) | 800,000 | 1,477,226 | 7,064 | 7.06 | 4,937,204 | 4,935,984 | 4,931,348 | +| Calldatacopy (0.8M, Zero Data, Fixed Src Dst, 1Mib, Call) | 800,000 | 1,477,226 | 6,070 | 6.07 | 3,186,296 | 3,184,103 | 3,174,588 | +| Calldatacopy (0.8M, Zero Data, Fixed Src Dst, 1Mib, Transaction) | 800,000 | 1,477,226 | 6,554 | 6.55 | 11,136,184 | 11,135,208 | 11,130,328 | +| Calldatacopy (0.8M, Non Zero, Dynamic Src Dst, 100Bytes, Call) | 800,000 | 1,477,226 | 10,097 | 10.10 | 11,735,548 | 11,731,448.8 | 11,727,740 | +| Calldatacopy (0.8M, Non Zero, Dynamic Src Dst, 100Bytes, Transaction) | 800,000 | 1,477,226 | 10,118 | 10.12 | 4,642,472 | 4,640,910.4 | 4,636,616 | +| Calldatacopy (0.8M, Non Zero, Dynamic Src Dst, 10Kib, Call) | 800,000 | 1,477,226 | 7,571 | 7.57 | 4,569,272 | 4,568,494.4 | 4,563,420 | +| Calldatacopy (0.8M, Non Zero, Dynamic Src Dst, 10Kib, Transaction) | 800,000 | 1,477,226 | 7,074 | 7.07 | 4,007,104 | 4,004,176 | 4,001,248 | +| Calldatacopy (0.8M, Non Zero, Fixed Src Dst, 100Bytes, Call) | 800,000 | 1,477,226 | 8,076 | 8.08 | 14,623,916 | 14,623,916 | 14,620,988 | +| Calldatacopy (0.8M, Non Zero, Fixed Src Dst, 100Bytes, Transaction) | 800,000 | 1,477,226 | 8,082 | 8.08 | 8,308,716 | 8,303,348 | 8,294,076 | +| Calldatacopy (0.8M, Non Zero, Fixed Src Dst, 10Kib, Call) | 800,000 | 1,477,226 | 7,581 | 7.58 | 9,360,960 | 9,356,860.8 | 9,339,488 | +| Calldatacopy (0.8M, Non Zero, Fixed Src Dst, 10Kib, Transaction) | 800,000 | 1,477,226 | 6,571 | 6.57 | 11,003,600 | 11,002,428 | 11,000,672 | +| Codecopy (0.8M, Dynamic Src Dst, 0Bytes) | 800,000 | 1,477,226 | 10,114 | 10.11 | 11,273,136 | 11,259,146.7 | 11,245,320 | +| Codecopy (0.8M, Dynamic Src Dst, 0.25X Max Code) | 800,000 | 1,477,226 | 7,605 | 7.61 | 6,043,000 | 6,042,024 | 6,036,168 | +| Codecopy (0.8M, Dynamic Src Dst, 0.50X Max Code Size) | 800,000 | 1,477,226 | 7,590 | 7.59 | 7,416,208 | 7,414,256 | 7,404,496 | +| Codecopy (0.8M, Dynamic Src Dst, 0.75X Max Code Size) | 800,000 | 1,477,226 | 7,566 | 7.57 | 9,378,528 | 9,374,624 | 9,362,912 | +| Codecopy (0.8M, Dynamic Src Dst, Max Code) | 800,000 | 1,477,226 | 7,097 | 7.10 | 2,578,268 | 2,577,617.3 | 2,565,580 | +| Codecopy (0.8M, Fixed Src Dst, 0Bytes) | 800,000 | 1,477,226 | 8,579 | 8.58 | 6,240,148 | 6,240,148 | 6,228,436 | +| Codecopy (0.8M, Fixed Src Dst, 0.25X Max Code) | 800,000 | 1,477,226 | 7,562 | 7.56 | 6,294,800 | 6,291,872 | 6,284,064 | +| Codecopy (0.8M, Fixed Src Dst, 0.50X Max Code Size) | 800,000 | 1,477,226 | 7,084 | 7.08 | 2,548,992 | 2,544,762.7 | 2,533,376 | +| Codecopy (0.8M, Fixed Src Dst, 0.75X Max Code Size) | 800,000 | 1,477,226 | 8,085 | 8.09 | 4,701,028 | 4,700,052 | 4,698,100 | +| Codecopy (0.8M, Fixed Src Dst, Max Code) | 800,000 | 1,477,226 | 7,056 | 7.06 | 11,918,592 | 11,913,433.1 | 11,901,024 | +| Mcopy (0.8M, Dynamic Src Dst, 0Bytes) | 800,000 | 1,477,226 | 9,612 | 9.61 | 13,700,876 | 13,700,876 | 13,695,020 | +| Mcopy (0.8M, Dynamic Src Dst, 100Bytes) | 800,000 | 1,477,226 | 9,599 | 9.60 | 9,253,676 | 9,243,428 | 9,234,156 | +| Mcopy (0.8M, Dynamic Src Dst, 10Kib) | 800,000 | 1,477,226 | 8,594 | 8.59 | 9,066,636 | 9,065,009.3 | 9,053,948 | +| Mcopy (0.8M, Dynamic Src Dst, 1Mib) | 800,000 | 1,477,226 | 6,060 | 6.06 | 7,922,752 | 7,915,269.3 | 7,908,112 | +| Mcopy (0.8M, Fixed Src Dst, 0Bytes) | 800,000 | 1,477,226 | 8,072 | 8.07 | 12,735,628 | 12,731,073.3 | 12,716,628 | +| Mcopy (0.8M, Fixed Src Dst, 100Bytes) | 800,000 | 1,477,226 | 9,079 | 9.08 | 10,028,032 | 10,022,733.7 | 10,018,272 | +| Mcopy (0.8M, Fixed Src Dst, 10Kib) | 800,000 | 1,477,226 | 8,067 | 8.07 | 3,251,688 | 3,239,488 | 3,234,120 | +| Mcopy (0.8M, Fixed Src Dst, 1Mib) | 800,000 | 1,477,226 | 6,568 | 6.57 | 13,927,032 | 13,926,251.2 | 13,923,128 | +| Returndatacopy (0.8M, Fixed Dst False, 0Bytes) | 800,000 | 1,477,226 | 10,585 | 10.59 | 12,556,752 | 12,552,360 | 12,545,040 | +| Returndatacopy (0.8M, Fixed Dst False, 100Bytes) | 800,000 | 1,477,226 | 10,125 | 10.12 | 7,642,640 | 7,642,152 | 7,633,856 | +| Returndatacopy (0.8M, Fixed Dst False, 10Kib) | 800,000 | 1,477,226 | 7,592 | 7.59 | 10,271,076 | 10,263,756 | 10,254,484 | +| Returndatacopy (0.8M, Fixed Dst False, 1Mib) | 800,000 | 1,477,226 | 6,056 | 6.06 | 12,871,136 | 12,871,136 | 12,858,408 | +| Returndatacopy (0.8M, Fixed Dst True, 0Bytes) | 800,000 | 1,477,226 | 9,583 | 9.58 | 10,406,744 | 10,402,514.7 | 10,395,540 | +| Returndatacopy (0.8M, Fixed Dst True, 100Bytes) | 800,000 | 1,477,226 | 8,075 | 8.07 | 13,128,780 | 13,126,828 | 13,121,948 | +| Returndatacopy (0.8M, Fixed Dst True, 10Kib) | 800,000 | 1,477,226 | 7,074 | 7.07 | 7,099,008 | 7,099,008 | 7,093,152 | +| Returndatacopy (0.8M, Fixed Dst True, 1Mib) | 800,000 | 1,477,226 | 6,079 | 6.08 | 11,045,136 | 11,036,662.4 | 11,028,444 | +| Log Opcodes (0.8M, Dynamic, Non Zero Topic, 0 Bytes Data, Log0) | 800,000 | 1,477,226 | 7,043 | 7.04 | 11,587,756 | 11,570,518.7 | 11,557,996 | +| Log Opcodes (0.8M, Dynamic, Non Zero Topic, 0 Bytes Data, Log1) | 800,000 | 1,477,226 | 6,559 | 6.56 | 9,203,900 | 9,202,436 | 9,199,020 | +| Log Opcodes (0.8M, Dynamic, Non Zero Topic, 0 Bytes Data, Log2) | 800,000 | 1,477,226 | 6,565 | 6.57 | 12,512,596 | 12,511,945.3 | 12,508,692 | +| Log Opcodes (0.8M, Dynamic, Non Zero Topic, 0 Bytes Data, Log3) | 800,000 | 1,477,226 | 7,057 | 7.06 | 7,065,828 | 7,064,852 | 7,056,068 | +| Log Opcodes (0.8M, Dynamic, Non Zero Topic, 0 Bytes Data, Log4) | 800,000 | 1,477,226 | 6,059 | 6.06 | 12,995,904 | 12,986,216 | 12,969,208 | +| Log Opcodes (0.8M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log0) | 800,000 | 1,477,226 | 5,557 | 5.56 | 922,012 | 914,570 | 900,540 | +| Log Opcodes (0.8M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log1) | 800,000 | 1,477,226 | 6,050 | 6.05 | 11,593,612 | 11,592,148 | 11,588,732 | +| Log Opcodes (0.8M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log2) | 800,000 | 1,477,226 | 6,051 | 6.05 | 6,252,836 | 6,252,836 | 6,240,148 | +| Log Opcodes (0.8M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log3) | 800,000 | 1,477,226 | 6,057 | 6.06 | 11,621,720 | 11,621,720 | 11,613,664 | +| Log Opcodes (0.8M, Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log4) | 800,000 | 1,477,226 | 6,045 | 6.04 | 8,258,940 | 8,257,964 | 8,251,132 | +| Log Opcodes (0.8M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log0) | 800,000 | 1,477,226 | 6,056 | 6.06 | 12,492,916 | 12,492,916 | 12,492,916 | +| Log Opcodes (0.8M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log1) | 800,000 | 1,477,226 | 5,557 | 5.56 | 3,859,732 | 3,858,365.6 | 3,853,876 | +| Log Opcodes (0.8M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log2) | 800,000 | 1,477,226 | 6,541 | 6.54 | 2,131,264 | 2,126,969.6 | 2,120,528 | +| Log Opcodes (0.8M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log3) | 800,000 | 1,477,226 | 6,061 | 6.06 | 3,218,504 | 3,213,038.4 | 3,204,840 | +| Log Opcodes (0.8M, Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log4) | 800,000 | 1,477,226 | 6,053 | 6.05 | 10,033,256 | 10,031,304 | 10,029,352 | +| Log Opcodes (0.8M, Dynamic, Zero Topic, 0 Bytes Data, Log0) | 800,000 | 1,477,226 | 6,063 | 6.06 | 3,922,196 | 3,917,804 | 3,912,436 | +| Log Opcodes (0.8M, Dynamic, Zero Topic, 0 Bytes Data, Log1) | 800,000 | 1,477,226 | 6,563 | 6.56 | 4,807,400 | 4,802,682.7 | 4,793,736 | +| Log Opcodes (0.8M, Dynamic, Zero Topic, 0 Bytes Data, Log2) | 800,000 | 1,477,226 | 6,075 | 6.08 | 8,972,932 | 8,972,932 | 8,951,460 | +| Log Opcodes (0.8M, Dynamic, Zero Topic, 0 Bytes Data, Log3) | 800,000 | 1,477,226 | 5,544 | 5.54 | 9,019,792 | 9,019,792 | 9,005,424 | +| Log Opcodes (0.8M, Dynamic, Zero Topic, 0 Bytes Data, Log4) | 800,000 | 1,477,226 | 6,052 | 6.05 | 10,607,368 | 10,605,806.4 | 10,603,464 | +| Log Opcodes (0.8M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log0) | 800,000 | 1,477,226 | 5,558 | 5.56 | 3,853,876 | 3,851,924 | 3,848,020 | +| Log Opcodes (0.8M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log1) | 800,000 | 1,477,226 | 6,556 | 6.56 | 7,997,900 | 7,973,502 | 7,948,128 | +| Log Opcodes (0.8M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log2) | 800,000 | 1,477,226 | 6,051 | 6.05 | 13,695,020 | 13,690,628 | 13,685,260 | +| Log Opcodes (0.8M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log3) | 800,000 | 1,477,226 | 6,050 | 6.05 | 4,583,912 | 4,583,912 | 4,574,152 | +| Log Opcodes (0.8M, Dynamic, Zero Topic, 1 Mib Non Zero Data, Log4) | 800,000 | 1,477,226 | 6,572 | 6.57 | 8,853,300 | 8,853,300 | 8,851,348 | +| Log Opcodes (0.8M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log0) | 800,000 | 1,477,226 | 6,547 | 6.55 | 394,976 | 322,939.7 | 214,416 | +| Log Opcodes (0.8M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log1) | 800,000 | 1,477,226 | 6,074 | 6.07 | 2,911,080 | 2,908,152 | 2,898,392 | +| Log Opcodes (0.8M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log2) | 800,000 | 1,477,226 | 6,085 | 6.08 | 4,966,484 | 4,965,508 | 4,957,700 | +| Log Opcodes (0.8M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log3) | 800,000 | 1,477,226 | 6,058 | 6.06 | 2,094,176 | 2,094,176 | 2,091,248 | +| Log Opcodes (0.8M, Dynamic, Zero Topic, 1 Mib Zeros Data, Log4) | 800,000 | 1,477,226 | 6,052 | 6.05 | 2,702,220 | 2,701,406.7 | 2,695,388 | +| Log Opcodes (0.8M, Fixed, Non Zero Topic, 0 Bytes Data, Log0) | 800,000 | 1,477,226 | 6,571 | 6.57 | 8,043,768 | 8,040,840 | 8,034,008 | +| Log Opcodes (0.8M, Fixed, Non Zero Topic, 0 Bytes Data, Log1) | 800,000 | 1,477,226 | 6,553 | 6.55 | 13,523,204 | 13,519,690.4 | 13,514,420 | +| Log Opcodes (0.8M, Fixed, Non Zero Topic, 0 Bytes Data, Log2) | 800,000 | 1,477,226 | 6,572 | 6.57 | 10,060,016 | 10,059,528 | 10,054,160 | +| Log Opcodes (0.8M, Fixed, Non Zero Topic, 0 Bytes Data, Log3) | 800,000 | 1,477,226 | 6,043 | 6.04 | 7,362,528 | 7,361,161.6 | 7,354,720 | +| Log Opcodes (0.8M, Fixed, Non Zero Topic, 0 Bytes Data, Log4) | 800,000 | 1,477,226 | 6,575 | 6.58 | 717,056 | 711,130.3 | 699,488 | +| Log Opcodes (0.8M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log0) | 800,000 | 1,477,226 | 5,561 | 5.56 | 9,402,868 | 9,399,780.8 | 9,392,132 | +| Log Opcodes (0.8M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log1) | 800,000 | 1,477,226 | 6,050 | 6.05 | 7,907,136 | 7,903,232 | 7,895,424 | +| Log Opcodes (0.8M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log2) | 800,000 | 1,477,226 | 6,062 | 6.06 | 1,302,652 | 1,297,214.3 | 1,290,940 | +| Log Opcodes (0.8M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log3) | 800,000 | 1,477,226 | 6,563 | 6.56 | 1,755,504 | 1,753,552 | 1,749,648 | +| Log Opcodes (0.8M, Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log4) | 800,000 | 1,477,226 | 6,068 | 6.07 | 2,161,520 | 2,158,982.4 | 2,154,688 | +| Log Opcodes (0.8M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log0) | 800,000 | 1,477,226 | 6,042 | 6.04 | 7,790,016 | 7,783,834.7 | 7,778,304 | +| Log Opcodes (0.8M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log1) | 800,000 | 1,477,226 | 7,080 | 7.08 | 2,241,552 | 2,234,329.6 | 2,218,128 | +| Log Opcodes (0.8M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log2) | 800,000 | 1,477,226 | 6,058 | 6.06 | 8,194,660 | 8,194,104 | 8,169,284 | +| Log Opcodes (0.8M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log3) | 800,000 | 1,477,226 | 6,047 | 6.05 | 6,730,096 | 6,727,656 | 6,718,384 | +| Log Opcodes (0.8M, Fixed, Non Zero Topic, 1 Mib Zeros Data, Log4) | 800,000 | 1,477,226 | 6,064 | 6.06 | 4,331,132 | 4,324,788 | 4,319,420 | +| Log Opcodes (0.8M, Fixed, Zero Topic, 0 Bytes Data, Log0) | 800,000 | 1,477,226 | 6,062 | 6.06 | 7,778,304 | 7,775,864 | 7,769,520 | +| Log Opcodes (0.8M, Fixed, Zero Topic, 0 Bytes Data, Log1) | 800,000 | 1,477,226 | 6,566 | 6.57 | 13,068,212 | 13,059,461.7 | 13,054,236 | +| Log Opcodes (0.8M, Fixed, Zero Topic, 0 Bytes Data, Log2) | 800,000 | 1,477,226 | 6,558 | 6.56 | 3,231,192 | 3,229,728 | 3,219,480 | +| Log Opcodes (0.8M, Fixed, Zero Topic, 0 Bytes Data, Log3) | 800,000 | 1,477,226 | 6,564 | 6.56 | 4,264,768 | 4,263,792 | 4,257,936 | +| Log Opcodes (0.8M, Fixed, Zero Topic, 0 Bytes Data, Log4) | 800,000 | 1,477,226 | 6,071 | 6.07 | 12,576,040 | 12,576,040 | 12,564,560 | +| Log Opcodes (0.8M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log0) | 800,000 | 1,477,226 | 6,074 | 6.07 | 4,224,752 | 4,224,752 | 4,213,040 | +| Log Opcodes (0.8M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log1) | 800,000 | 1,477,226 | 5,551 | 5.55 | 9,392,132 | 9,383,957.6 | 9,379,504 | +| Log Opcodes (0.8M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log2) | 800,000 | 1,477,226 | 6,057 | 6.06 | 2,890,584 | 2,889,608 | 2,884,728 | +| Log Opcodes (0.8M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log3) | 800,000 | 1,477,226 | 6,065 | 6.07 | 2,134,192 | 2,134,192 | 2,132,240 | +| Log Opcodes (0.8M, Fixed, Zero Topic, 1 Mib Non Zero Data, Log4) | 800,000 | 1,477,226 | 6,053 | 6.05 | 4,784,960 | 4,784,960 | 4,774,224 | +| Log Opcodes (0.8M, Fixed, Zero Topic, 1 Mib Zeros Data, Log0) | 800,000 | 1,477,226 | 6,065 | 6.07 | 7,611,408 | 7,611,408 | 7,607,504 | +| Log Opcodes (0.8M, Fixed, Zero Topic, 1 Mib Zeros Data, Log1) | 800,000 | 1,477,226 | 6,050 | 6.05 | 2,877,896 | 2,876,432 | 2,871,064 | +| Log Opcodes (0.8M, Fixed, Zero Topic, 1 Mib Zeros Data, Log2) | 800,000 | 1,477,226 | 6,051 | 6.05 | 5,555,980 | 5,553,637.6 | 5,549,148 | +| Log Opcodes (0.8M, Fixed, Zero Topic, 1 Mib Zeros Data, Log3) | 800,000 | 1,477,226 | 6,063 | 6.06 | 6,645,184 | 6,641,930.7 | 6,634,448 | +| Log Opcodes (0.8M, Fixed, Zero Topic, 1 Mib Zeros Data, Log4) | 800,000 | 1,477,226 | 6,054 | 6.05 | 7,073,636 | 7,072,660 | 7,067,780 | +| Address State Cold (0.8M, Absent Accounts False, Balance) | 800,000 | 1,477,226 | 7,580 | 7.58 | 6,909,676 | 6,908,504.8 | 6,906,748 | +| Address State Cold (0.8M, Absent Accounts True, Balance) | 800,000 | 1,477,226 | 6,565 | 6.57 | 7,115,600 | 7,109,744 | 7,101,936 | +| Address State Warm (0.8M, Present Target, Balance) | 800,000 | 1,477,226 | 7,578 | 7.58 | 4,890,356 | 4,890,356 | 4,877,668 | +| Address State Warm (0.8M, Present Target, Callcode) | 800,000 | 1,477,226 | 12,627 | 12.63 | 10,061,348 | 10,049,813.1 | 10,042,040 | +| Address State Warm (0.8M, Present Target, Call) | 800,000 | 1,477,226 | 13,148 | 13.15 | 13,591,524 | 13,591,524 | 13,585,668 | +| Address State Warm (0.8M, Present Target, Delegatecall) | 800,000 | 1,477,226 | 12,139 | 12.14 | 9,430,376 | 9,423,300 | 9,405,000 | +| Address State Warm (0.8M, Present Target, Extcodehash) | 800,000 | 1,477,226 | 8,091 | 8.09 | 2,896,440 | 2,894,878.4 | 2,891,560 | +| Address State Warm (0.8M, Present Target, Extcodesize) | 800,000 | 1,477,226 | 7,076 | 7.08 | 4,057,856 | 4,051,674.7 | 4,046,144 | +| Address State Warm (0.8M, Present Target, Staticcall) | 800,000 | 1,477,226 | 13,186 | 13.19 | 7,464,032 | 7,464,032 | 7,463,056 | +| Address State Warm (0.8M, Absent Target, Balance) | 800,000 | 1,477,226 | 7,592 | 7.59 | 7,209,296 | 7,203,440 | 7,185,872 | +| Address State Warm (0.8M, Absent Target, Callcode) | 800,000 | 1,477,226 | 11,596 | 11.60 | 10,628,840 | 10,622,756.6 | 10,609,320 | +| Address State Warm (0.8M, Absent Target, Call) | 800,000 | 1,477,226 | 12,117 | 12.12 | 765,856 | 745,063.0 | 719,008 | +| Address State Warm (0.8M, Absent Target, Delegatecall) | 800,000 | 1,477,226 | 10,590 | 10.59 | 3,963,184 | 3,959,977.1 | 3,955,376 | +| Address State Warm (0.8M, Absent Target, Extcodehash) | 800,000 | 1,477,226 | 8,574 | 8.57 | 5,547,196 | 5,541,828 | 5,532,556 | +| Address State Warm (0.8M, Absent Target, Extcodesize) | 800,000 | 1,477,226 | 8,082 | 8.08 | 8,144,888 | 8,140,659.4 | 8,127,592 | +| Address State Warm (0.8M, Absent Target, Staticcall) | 800,000 | 1,477,226 | 11,619 | 11.62 | 4,904,020 | 4,901,231.4 | 4,894,260 | +| Blockhash (0.8M) | 800,000 | 1,477,226 | 9,100 | 9.10 | 7,560,656 | 7,553,628.8 | 7,551,872 | +| Extcodecopy Warm (0.8M, 1Kib) | 800,000 | 1,477,226 | 7,086 | 7.09 | 4,150,576 | 4,148,484.6 | 4,142,768 | +| Extcodecopy Warm (0.8M, 512) | 800,000 | 1,477,226 | 7,569 | 7.57 | 3,847,044 | 3,847,044 | 3,841,188 | +| Extcodecopy Warm (0.8M, 5Kib) | 800,000 | 1,477,226 | 7,069 | 7.07 | 8,460,968 | 8,454,136 | 8,441,448 | +| Selfbalance (0.8M) | 800,000 | 1,477,226 | 29,805 | 29.80 | 5,150,948 | 5,137,649.8 | 5,106,052 | +| Selfdestruct Created (0.8M, No Value) | 777,780 | 1,477,226 | 6,058 | 6.06 | 2,180,064 | 2,175,184 | 2,163,472 | +| Selfdestruct Created (0.8M, With Value) | 777,780 | 1,477,226 | 6,564 | 6.56 | 4,697,124 | 4,697,124 | 4,693,220 | +| Selfdestruct Existing (0.8M, No Value) | 798,051 | 1,477,226 | 7,065 | 7.07 | 7,662,160 | 7,653,701.3 | 7,643,616 | +| Selfdestruct Existing (0.8M, With Value) | 798,051 | 1,477,226 | 7,072 | 7.07 | 1,393,420 | 1,390,296.8 | 1,371,948 | +| Selfdestruct Initcode (0.8M, No Value) | 766,900 | 1,477,226 | 6,060 | 6.06 | 6,198,184 | 6,195,256 | 6,189,400 | +| Selfdestruct Initcode (0.8M, With Value) | 766,900 | 1,477,226 | 6,048 | 6.05 | 10,585,484 | 10,581,336 | 10,580,604 | +| Storage Access Cold (0.8M, Absent Slots False, Ssload) | 798,871 | 1,477,226 | 7,582 | 7.58 | 13,018,124 | 13,014,545.3 | 13,002,508 | +| Storage Access Cold (0.8M, Absent Slots False, Sstore New Value, Out Of Gas) | 800,000 | 1,477,226 | 6,569 | 6.57 | 4,574,152 | 4,574,152 | 4,571,224 | +| Storage Access Cold (0.8M, Absent Slots False, Sstore New Value, Revert) | 797,323 | 1,477,226 | 6,066 | 6.07 | 6,790,604 | 6,785,724 | 6,782,796 | +| Storage Access Cold (0.8M, Absent Slots False, Sstore New Value) | 797,317 | 1,477,226 | 7,068 | 7.07 | 12,852,552 | 12,847,428 | 12,842,792 | +| Storage Access Cold (0.8M, Absent Slots False, Sstore Same Value, Out Of Gas) | 800,000 | 1,477,226 | 7,569 | 7.57 | 11,223,848 | 11,220,598 | 11,217,020 | +| Storage Access Cold (0.8M, Absent Slots False, Sstore Same Value, Revert) | 799,833 | 1,477,226 | 7,065 | 7.07 | 5,300,268 | 5,295,778.4 | 5,290,508 | +| Storage Access Cold (0.8M, Absent Slots False, Sstore Same Value) | 799,827 | 1,477,226 | 8,081 | 8.08 | 2,527,520 | 2,527,520 | 2,517,760 | +| Storage Access Cold (0.8M, Absent Slots True, Ssload) | 798,871 | 1,477,226 | 7,072 | 7.07 | 7,606,528 | 7,605,877.3 | 7,593,840 | +| Storage Access Cold (0.8M, Absent Slots True, Sstore New Value, Out Of Gas) | 800,000 | 1,477,226 | 5,574 | 5.57 | 7,066,804 | 7,066,804 | 7,065,828 | +| Storage Access Cold (0.8M, Absent Slots True, Sstore New Value, Revert) | 795,944 | 1,477,226 | 6,070 | 6.07 | 3,468,360 | 3,466,733.3 | 3,462,504 | +| Storage Access Cold (0.8M, Absent Slots True, Sstore New Value) | 795,938 | 1,477,226 | 6,081 | 6.08 | 13,071,140 | 13,070,814.7 | 13,068,212 | +| Storage Access Cold (0.8M, Absent Slots True, Sstore Same Value, Out Of Gas) | 800,000 | 1,477,226 | 6,061 | 6.06 | 9,725,292 | 9,717,288.8 | 9,710,652 | +| Storage Access Cold (0.8M, Absent Slots True, Sstore Same Value, Revert) | 795,839 | 1,477,226 | 6,064 | 6.06 | 8,844,520 | 8,844,520 | 8,844,520 | +| Storage Access Cold (0.8M, Absent Slots True, Sstore Same Value) | 795,833 | 1,477,226 | 6,062 | 6.06 | 8,227,708 | 8,223,804 | 8,220,876 | +| Storage Access Warm (0.8M, Sload) | 800,000 | 1,477,226 | 8,085 | 8.09 | 3,073,092 | 3,073,092 | 3,071,140 | +| Storage Access Warm (0.8M, Sstore New Value) | 800,000 | 1,477,226 | 10,604 | 10.60 | 2,975,492 | 2,967,684 | 2,959,876 | +| Storage Access Warm (0.8M, Sstore Same Value) | 800,000 | 1,477,226 | 9,579 | 9.58 | 9,689,444 | 9,677,169 | 9,668,848 | + +## Summary Statistics + +- **Total Tests:** 508 +- **Successful Tests:** 508 +- **Failed Tests:** 0 + +### Proving Time (ms) +- **Average:** 27,355.7 +- **Minimum:** 5,543 +- **Maximum:** 376,406 + +### Peak Memory Usage (MB) +- **Average:** 7,709,622.8 +- **Minimum:** 394,976 +- **Maximum:** 14,861,352 + +### Proof Size (bytes) +- **Average:** 1,477,226 +- **Minimum:** 1,477,226 +- **Maximum:** 1,477,226 diff --git a/www/docs/pages/benchmark-results/gas-categorized/1m/1M-1.md b/www/docs/pages/benchmark-results/gas-categorized/1m/1M-1.md new file mode 100644 index 00000000..eeba6da5 --- /dev/null +++ b/www/docs/pages/benchmark-results/gas-categorized/1m/1M-1.md @@ -0,0 +1,515 @@ +# zkVM Proving Time (in secs) Comparison + +**Gas Category:** 1M + +**Number of GPUs:** 1 + + +| Benchmark | risc0 | sp1 | +|---|---|---| +| Address State Cold (Absent Accounts False, Balance) | 16.78 | 15.15 | +| Address State Cold (Absent Accounts True, Balance) | 9.91 | 13.96 | +| Address State Warm (Absent Target, Balance) | 29.65 | 20.68 | +| Address State Warm (Absent Target, Call) | 77.42 | 39.76 | +| Address State Warm (Absent Target, Callcode) | 77.73 | 33.48 | +| Address State Warm (Absent Target, Delegatecall) | 56.02 | 32.44 | +| Address State Warm (Absent Target, Extcodehash) | 30.08 | 23.15 | +| Address State Warm (Absent Target, Extcodesize) | 30.04 | 19.60 | +| Address State Warm (Absent Target, Staticcall) | 65.78 | 33.34 | +| Address State Warm (Present Target, Balance) | 24.33 | 24.39 | +| Address State Warm (Present Target, Call) | 73.71 | 37.90 | +| Address State Warm (Present Target, Callcode) | 87.39 | 37.85 | +| Address State Warm (Present Target, Delegatecall) | 77.79 | 33.91 | +| Address State Warm (Present Target, Extcodehash) | 25.89 | 18.93 | +| Address State Warm (Present Target, Extcodesize) | 20.21 | 17.63 | +| Address State Warm (Present Target, Staticcall) | 88.62 | 37.00 | +| Amortized Bn128 Pairings | 291.4 | 101.0 | +| Binop Simple (Add) | 33.29 | 25.84 | +| Binop Simple (And) | 32.65 | 22.65 | +| Binop Simple (Byte) | 35.79 | 23.28 | +| Binop Simple (Div, 0) | 179.7 | 82.30 | +| Binop Simple (Div, 1) | 170.0 | 75.28 | +| Binop Simple (Eq) | 82.92 | 43.27 | +| Binop Simple (Exp) | 127.4 | 52.38 | +| Binop Simple (Gt) | 29.18 | 24.59 | +| Binop Simple (Lt) | 34.14 | 29.60 | +| Binop Simple (Mod) | 51.34 | 37.76 | +| Binop Simple (Mul) | 64.34 | 34.02 | +| Binop Simple (Or) | 32.24 | 23.56 | +| Binop Simple (Sar) | 78.84 | 36.59 | +| Binop Simple (Sdiv, 0) | 215.0 | 87.56 | +| Binop Simple (Sdiv, 1) | 252.0 | 90.61 | +| Binop Simple (Sgt) | 90.83 | 45.20 | +| Binop Simple (Shl) | 66.40 | 37.98 | +| Binop Simple (Shr) | 56.99 | 31.60 | +| Binop Simple (Signextend) | 51.42 | 31.39 | +| Binop Simple (Slt) | 35.94 | 25.38 | +| Binop Simple (Smod) | 75.46 | 39.08 | +| Binop Simple (Sub) | 35.24 | 28.08 | +| Binop Simple (Xor) | 27.83 | 23.04 | +| Blobhash (No Blobs) | 37.31 | 20.29 | +| Blobhash (One Blob And Accessed) | 55.89 | 29.04 | +| Blobhash (One Blob But Access Non, Existent Index) | 36.08 | 26.03 | +| Blobhash (Six Blobs, Access Latest) | 56.16 | 27.93 | +| Block Full Access List And Data | 9.32 | 12.93 | +| Block Full Data (Non Zero Byte) | 6.76 | 16.98 | +| Block Full Data (Zero Byte) | 13.34 | 14.93 | +| Block Full Of Ether Transfers (A To A) | 27.64 | 22.42 | +| Block Full Of Ether Transfers (A To B) | 24.19 | 23.44 | +| Block Full Of Ether Transfers (A To Diff Acc) | 24.34 | 27.28 | +| Block Full Of Ether Transfers (Diff Acc To B) | 29.73 | 23.45 | +| Block Full Of Ether Transfers (Diff Acc To Diff Acc) | 30.68 | 24.47 | +| Blockhash | 41.29 | 27.36 | +| Bytecode Single Opcode (Call) | 389.7 | 93.94 | +| Bytecode Single Opcode (Callcode) | 394.6 | 94.62 | +| Bytecode Single Opcode (Delegatecall) | 327.5 | 96.10 | +| Bytecode Single Opcode (Extcodecopy) | 381.2 | 109.1 | +| Bytecode Single Opcode (Extcodehash) | 391.7 | 96.30 | +| Bytecode Single Opcode (Extcodesize) | 332.4 | 94.49 | +| Bytecode Single Opcode (Staticcall) | 353.4 | 95.46 | +| Calldatacopy (Non Zero, Dynamic Src Dst, 100Bytes, Call) | 48.75 | 25.96 | +| Calldatacopy (Non Zero, Dynamic Src Dst, 100Bytes, Transaction) | 48.43 | 32.42 | +| Calldatacopy (Non Zero, Dynamic Src Dst, 10Kib, Call) | 18.27 | 17.54 | +| Calldatacopy (Non Zero, Dynamic Src Dst, 10Kib, Transaction) | 17.95 | 18.66 | +| Calldatacopy (Non Zero, Fixed Src Dst, 100Bytes, Call) | 30.35 | 21.05 | +| Calldatacopy (Non Zero, Fixed Src Dst, 100Bytes, Transaction) | 30.23 | 20.12 | +| Calldatacopy (Non Zero, Fixed Src Dst, 10Kib, Call) | 13.80 | 16.22 | +| Calldatacopy (Non Zero, Fixed Src Dst, 10Kib, Transaction) | 14.98 | 17.01 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 0Bytes, Call) | 55.68 | 39.06 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 0Bytes, Transaction) | 56.26 | 29.19 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 100Bytes, Call) | 39.97 | 26.70 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 100Bytes, Transaction) | 41.93 | 25.90 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 10Kib, Call) | 20.27 | 18.32 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 10Kib, Transaction) | 12.60 | 15.00 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 1Mib, Call) | 4.12 | 12.06 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 1Mib, Transaction) | 5.07 | 11.81 | +| Calldatacopy (Zero Data, Fixed Src Dst, 0Bytes, Call) | 38.06 | 26.01 | +| Calldatacopy (Zero Data, Fixed Src Dst, 0Bytes, Transaction) | 37.88 | 23.45 | +| Calldatacopy (Zero Data, Fixed Src Dst, 100Bytes, Call) | 23.69 | 20.64 | +| Calldatacopy (Zero Data, Fixed Src Dst, 100Bytes, Transaction) | 23.37 | 19.44 | +| Calldatacopy (Zero Data, Fixed Src Dst, 10Kib, Call) | 17.30 | 15.95 | +| Calldatacopy (Zero Data, Fixed Src Dst, 10Kib, Transaction) | 9.24 | 14.72 | +| Calldatacopy (Zero Data, Fixed Src Dst, 1Mib, Call) | 5.29 | 11.65 | +| Calldatacopy (Zero Data, Fixed Src Dst, 1Mib, Transaction) | 5.85 | 16.43 | +| Calldataload (Empty) | 64.59 | 36.28 | +| Calldataload (One, Loop) | 76.58 | 40.76 | +| Calldataload (Zero, Loop) | 93.89 | 40.77 | +| Calldatasize (Calldata Length 0) | 33.78 | 24.01 | +| Calldatasize (Calldata Length 1000) | 34.98 | 24.55 | +| Calldatasize (Calldata Length 10000) | 34.75 | 23.61 | +| Callvalue (From Origin False, Non Zero Value False) | 35.41 | 26.09 | +| Callvalue (From Origin False, Non Zero Value True) | 39.89 | 26.69 | +| Callvalue (From Origin True, Non Zero Value False) | 41.42 | 31.95 | +| Callvalue (From Origin True, Non Zero Value True) | 41.82 | 30.89 | +| Codecopy (Dynamic Src Dst, 0.25X Max Code) | 27.85 | 27.54 | +| Codecopy (Dynamic Src Dst, 0.50X Max Code Size) | 24.36 | 22.42 | +| Codecopy (Dynamic Src Dst, 0.75X Max Code Size) | 22.84 | 18.26 | +| Codecopy (Dynamic Src Dst, 0Bytes) | 55.01 | 28.72 | +| Codecopy (Dynamic Src Dst, Max Code) | 18.66 | 18.41 | +| Codecopy (Fixed Src Dst, 0.25X Max Code) | 16.37 | 16.48 | +| Codecopy (Fixed Src Dst, 0.50X Max Code Size) | 14.29 | 17.82 | +| Codecopy (Fixed Src Dst, 0.75X Max Code Size) | 16.85 | 21.51 | +| Codecopy (Fixed Src Dst, 0Bytes) | 35.01 | 21.70 | +| Codecopy (Fixed Src Dst, Max Code) | 16.94 | 16.77 | +| Create (0.25X Max Code, Create) | 6.09 | 12.11 | +| Create (0.25X Max Code, Create2) | 6.33 | 13.24 | +| Create (0.25X Max Code, Zero Data, Create) | 5.62 | 13.28 | +| Create (0.25X Max Code, Zero Data, Create2) | 7.20 | 12.39 | +| Create (0.50X Max Code Size With Non, Zero Data, Create) | 5.70 | 15.70 | +| Create (0.50X Max Code Size With Non, Zero Data, Create2) | 5.76 | 13.21 | +| Create (0.50X Max Code Size With Zero Data, Create) | 6.62 | 12.94 | +| Create (0.50X Max Code Size With Zero Data, Create2) | 6.87 | 13.70 | +| Create (0.75X Max Code Size With Non, Zero Data, Create) | 6.00 | 13.40 | +| Create (0.75X Max Code Size With Non, Zero Data, Create2) | 8.30 | 12.47 | +| Create (0.75X Max Code Size With Zero Data, Create) | 6.45 | 12.08 | +| Create (0.75X Max Code Size With Zero Data, Create2) | 6.88 | 13.22 | +| Create (0Bytes, Create) | 5.76 | 14.22 | +| Create (0Bytes, Create2) | 6.93 | 14.35 | +| Create (Max Code, Create) | 5.67 | 13.07 | +| Create (Max Code, Create2) | 5.60 | 13.39 | +| Create (Max Code, Zero Data, Create) | 8.31 | 13.65 | +| Create (Max Code, Zero Data, Create2) | 6.78 | 13.15 | +| Creates Collisions (Create) | 6.70 | 12.74 | +| Creates Collisions (Create2) | 5.75 | 13.10 | +| Dup (Dup1) | 26.89 | 22.24 | +| Dup (Dup10) | 26.17 | 21.90 | +| Dup (Dup11) | 32.24 | 22.28 | +| Dup (Dup12) | 29.06 | 21.32 | +| Dup (Dup13) | 31.73 | 21.66 | +| Dup (Dup14) | 26.89 | 22.30 | +| Dup (Dup15) | 31.84 | 22.67 | +| Dup (Dup16) | 26.81 | 24.21 | +| Dup (Dup2) | 27.67 | 22.02 | +| Dup (Dup3) | 31.75 | 25.90 | +| Dup (Dup4) | 31.51 | 22.36 | +| Dup (Dup5) | 30.59 | 22.96 | +| Dup (Dup6) | 32.48 | 20.96 | +| Dup (Dup7) | 31.51 | 22.17 | +| Dup (Dup8) | 27.50 | 21.85 | +| Dup (Dup9) | 31.30 | 22.00 | +| Empty Block | 4.62 | 9.43 | +| Extcodecopy Warm (1Kib) | 20.97 | 19.06 | +| Extcodecopy Warm (512) | 19.55 | 17.73 | +| Extcodecopy Warm (5Kib) | 15.55 | 17.44 | +| Initcode Jumpdest Analysis (00) | 26.00 | 20.10 | +| Initcode Jumpdest Analysis (5B) | 36.23 | 25.48 | +| Initcode Jumpdest Analysis (605B) | 16.70 | 17.91 | +| Initcode Jumpdest Analysis (605B5B) | 26.43 | 19.95 | +| Initcode Jumpdest Analysis (615B5B) | 14.92 | 17.55 | +| Initcode Jumpdest Analysis (615B5B5B) | 22.32 | 19.38 | +| Jumpdests | 34.15 | 25.50 | +| Jumpi Fallthrough | 46.12 | 28.97 | +| Jumpis | 28.93 | 20.82 | +| Jumps | 22.92 | 18.52 | +| Keccak | 174.4 | 42.23 | +| Log Opcodes (Dynamic, Non Zero Topic, 0 Bytes Data, Log0) | 8.53 | 13.93 | +| Log Opcodes (Dynamic, Non Zero Topic, 0 Bytes Data, Log1) | 7.68 | 13.43 | +| Log Opcodes (Dynamic, Non Zero Topic, 0 Bytes Data, Log2) | 6.40 | 12.31 | +| Log Opcodes (Dynamic, Non Zero Topic, 0 Bytes Data, Log3) | 7.06 | 13.71 | +| Log Opcodes (Dynamic, Non Zero Topic, 0 Bytes Data, Log4) | 5.81 | 13.22 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log0) | 5.18 | 12.81 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log1) | 6.41 | 12.41 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log2) | 6.21 | 15.86 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log3) | 6.27 | 12.19 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log4) | 6.07 | 14.04 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log0) | 5.33 | 12.76 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log1) | 6.05 | 12.85 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log2) | 4.62 | 12.70 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log3) | 5.04 | 11.95 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log4) | 6.19 | 13.33 | +| Log Opcodes (Dynamic, Zero Topic, 0 Bytes Data, Log0) | 8.46 | 17.66 | +| Log Opcodes (Dynamic, Zero Topic, 0 Bytes Data, Log1) | 6.58 | 12.78 | +| Log Opcodes (Dynamic, Zero Topic, 0 Bytes Data, Log2) | 6.42 | 13.72 | +| Log Opcodes (Dynamic, Zero Topic, 0 Bytes Data, Log3) | 7.51 | 18.57 | +| Log Opcodes (Dynamic, Zero Topic, 0 Bytes Data, Log4) | 7.20 | 13.81 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Non Zero Data, Log0) | 5.05 | 13.47 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Non Zero Data, Log1) | 5.23 | 12.68 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Non Zero Data, Log2) | 6.59 | 13.15 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Non Zero Data, Log3) | 5.24 | 13.31 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Non Zero Data, Log4) | 6.21 | 13.24 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Zeros Data, Log0) | 6.21 | 12.38 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Zeros Data, Log1) | 5.68 | 12.64 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Zeros Data, Log2) | 6.42 | 12.12 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Zeros Data, Log3) | 6.06 | 12.20 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Zeros Data, Log4) | 5.53 | 12.42 | +| Log Opcodes (Fixed, Non Zero Topic, 0 Bytes Data, Log0) | 7.55 | 12.60 | +| Log Opcodes (Fixed, Non Zero Topic, 0 Bytes Data, Log1) | 5.63 | 13.90 | +| Log Opcodes (Fixed, Non Zero Topic, 0 Bytes Data, Log2) | 5.91 | 13.26 | +| Log Opcodes (Fixed, Non Zero Topic, 0 Bytes Data, Log3) | 7.00 | 13.99 | +| Log Opcodes (Fixed, Non Zero Topic, 0 Bytes Data, Log4) | 6.96 | 12.85 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log0) | 5.30 | 13.28 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log1) | 5.24 | 12.02 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log2) | 6.17 | 14.76 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log3) | 5.12 | 15.98 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log4) | 5.92 | 12.68 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Zeros Data, Log0) | 6.41 | 13.71 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Zeros Data, Log1) | 5.23 | 12.80 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Zeros Data, Log2) | 6.53 | 12.72 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Zeros Data, Log3) | 6.64 | 13.31 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Zeros Data, Log4) | 5.98 | 13.21 | +| Log Opcodes (Fixed, Zero Topic, 0 Bytes Data, Log0) | 8.21 | 12.62 | +| Log Opcodes (Fixed, Zero Topic, 0 Bytes Data, Log1) | 5.83 | 13.27 | +| Log Opcodes (Fixed, Zero Topic, 0 Bytes Data, Log2) | 5.67 | 13.82 | +| Log Opcodes (Fixed, Zero Topic, 0 Bytes Data, Log3) | 5.67 | 12.64 | +| Log Opcodes (Fixed, Zero Topic, 0 Bytes Data, Log4) | 5.74 | 12.66 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Non Zero Data, Log0) | 6.51 | 13.08 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Non Zero Data, Log1) | 6.21 | 12.15 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Non Zero Data, Log2) | 5.54 | 12.48 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Non Zero Data, Log3) | 5.19 | 14.09 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Non Zero Data, Log4) | 5.28 | 12.58 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Zeros Data, Log0) | 6.38 | 13.23 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Zeros Data, Log1) | 5.38 | 12.69 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Zeros Data, Log2) | 6.11 | 17.07 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Zeros Data, Log3) | 5.04 | 12.78 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Zeros Data, Log4) | 4.99 | 12.95 | +| Mcopy (Dynamic Src Dst, 0Bytes) | 53.97 | 34.35 | +| Mcopy (Dynamic Src Dst, 100Bytes) | 42.85 | 27.38 | +| Mcopy (Dynamic Src Dst, 10Kib) | 39.80 | 24.55 | +| Mcopy (Dynamic Src Dst, 1Mib) | 5.91 | 14.53 | +| Mcopy (Fixed Src Dst, 0Bytes) | 27.89 | 23.57 | +| Mcopy (Fixed Src Dst, 100Bytes) | 28.00 | 22.71 | +| Mcopy (Fixed Src Dst, 10Kib) | 25.24 | 22.25 | +| Mcopy (Fixed Src Dst, 1Mib) | 6.83 | 12.73 | +| Memory Access (Big Mem, Init Offset, Off 0, Mload) | 47.72 | 24.83 | +| Memory Access (Big Mem, Init Offset, Off 0, Mstore) | 48.16 | 28.52 | +| Memory Access (Big Mem, Init Offset, Off 0, Mstore8) | 27.13 | 22.68 | +| Memory Access (Big Mem, Init Offset, Off 1, Mload) | 38.77 | 25.46 | +| Memory Access (Big Mem, Init Offset, Off 1, Mstore) | 40.42 | 28.19 | +| Memory Access (Big Mem, Init Offset, Off 1, Mstore8) | 32.84 | 22.50 | +| Memory Access (Big Mem, Init Offset, Off 31, Mload) | 46.94 | 25.09 | +| Memory Access (Big Mem, Init Offset, Off 31, Mstore) | 48.67 | 30.75 | +| Memory Access (Big Mem, Init Offset, Off 31, Mstore8) | 31.95 | 23.22 | +| Memory Access (Big Mem, Uninit Offset, Off 0, Mload) | 40.12 | 25.95 | +| Memory Access (Big Mem, Uninit Offset, Off 0, Mstore) | 48.45 | 28.17 | +| Memory Access (Big Mem, Uninit Offset, Off 0, Mstore8) | 33.09 | 22.43 | +| Memory Access (Big Mem, Uninit Offset, Off 1, Mload) | 48.51 | 26.32 | +| Memory Access (Big Mem, Uninit Offset, Off 1, Mstore) | 47.89 | 27.99 | +| Memory Access (Big Mem, Uninit Offset, Off 1, Mstore8) | 27.88 | 21.90 | +| Memory Access (Big Mem, Uninit Offset, Off 31, Mload) | 47.43 | 26.14 | +| Memory Access (Big Mem, Uninit Offset, Off 31, Mstore) | 48.63 | 28.95 | +| Memory Access (Big Mem, Uninit Offset, Off 31, Mstore8) | 33.30 | 23.21 | +| Memory Access (Small Mem, Init Offset, Off 0, Mload) | 47.23 | 25.19 | +| Memory Access (Small Mem, Init Offset, Off 0, Mstore) | 48.10 | 32.50 | +| Memory Access (Small Mem, Init Offset, Off 0, Mstore8) | 27.72 | 22.48 | +| Memory Access (Small Mem, Init Offset, Off 1, Mload) | 40.41 | 24.86 | +| Memory Access (Small Mem, Init Offset, Off 1, Mstore) | 40.05 | 28.84 | +| Memory Access (Small Mem, Init Offset, Off 1, Mstore8) | 32.80 | 23.32 | +| Memory Access (Small Mem, Init Offset, Off 31, Mload) | 46.77 | 32.33 | +| Memory Access (Small Mem, Init Offset, Off 31, Mstore) | 40.40 | 29.68 | +| Memory Access (Small Mem, Init Offset, Off 31, Mstore8) | 31.52 | 23.03 | +| Memory Access (Small Mem, Uninit Offset, Off 0, Mload) | 47.16 | 25.14 | +| Memory Access (Small Mem, Uninit Offset, Off 0, Mstore) | 49.59 | 29.18 | +| Memory Access (Small Mem, Uninit Offset, Off 0, Mstore8) | 32.71 | 22.48 | +| Memory Access (Small Mem, Uninit Offset, Off 1, Mload) | 48.07 | 25.26 | +| Memory Access (Small Mem, Uninit Offset, Off 1, Mstore) | 41.04 | 27.62 | +| Memory Access (Small Mem, Uninit Offset, Off 1, Mstore8) | 32.06 | 27.29 | +| Memory Access (Small Mem, Uninit Offset, Off 31, Mload) | 41.19 | 25.62 | +| Memory Access (Small Mem, Uninit Offset, Off 31, Mstore) | 48.88 | 28.54 | +| Memory Access (Small Mem, Uninit Offset, Off 31, Mstore8) | 31.90 | 23.11 | +| Mod (Op Mod, Mod Bits 127) | 165.6 | 76.56 | +| Mod (Op Mod, Mod Bits 191) | 262.1 | 115.4 | +| Mod (Op Mod, Mod Bits 255) | 165.7 | 75.93 | +| Mod (Op Mod, Mod Bits 63) | 138.4 | 53.49 | +| Mod (Op Smod, Mod Bits 127) | 179.9 | 79.23 | +| Mod (Op Smod, Mod Bits 191) | 273.4 | 99.16 | +| Mod (Op Smod, Mod Bits 255) | 202.5 | 73.67 | +| Mod (Op Smod, Mod Bits 63) | 148.6 | 71.11 | +| Modarith (Op Addmod, Mod Bits 127) | 136.8 | 60.32 | +| Modarith (Op Addmod, Mod Bits 191) | 160.9 | 74.94 | +| Modarith (Op Addmod, Mod Bits 255) | 162.9 | 61.00 | +| Modarith (Op Addmod, Mod Bits 63) | 94.07 | 45.77 | +| Modarith (Op Mulmod, Mod Bits 127) | 283.8 | 100.0 | +| Modarith (Op Mulmod, Mod Bits 191) | 335.9 | 140.1 | +| Modarith (Op Mulmod, Mod Bits 255) | 381.7 | 133.4 | +| Modarith (Op Mulmod, Mod Bits 63) | 219.6 | 80.37 | +| Modexp (Mod 1045 Gas Base Heavy) | 3410.4 | 1564.8 | +| Modexp (Mod 1360 Gas Balanced) | 1026.2 | 335.3 | +| Modexp (Mod 400 Gas Exp Heavy) | 1058.9 | 404.7 | +| Modexp (Mod 408 Gas Balanced) | 761.0 | 287.9 | +| Modexp (Mod 408 Gas Base Heavy) | 3765.3 | 1372.5 | +| Modexp (Mod 600 As Balanced) | 913.4 | 301.5 | +| Modexp (Mod 600 Gas Exp Heavy) | 1368.9 | 425.7 | +| Modexp (Mod 616 Gas Base Heavy) | 4461.3 | 1359.1 | +| Modexp (Mod 677 Gas Base Heavy) | 985.1 | 320.0 | +| Modexp (Mod 765 Gas Exp Heavy) | 1113.9 | 459.2 | +| Modexp (Mod 767 Gas Balanced) | 867.0 | 290.5 | +| Modexp (Mod 800 Gas Base Heavy) | 3462.1 | 1375.2 | +| Modexp (Mod 800 Gas Exp Heavy) | 1455.1 | 517.7 | +| Modexp (Mod 852 Gas Exp Heavy) | 1432.6 | 576.2 | +| Modexp (Mod 867 Gas Base Heavy) | 3496.3 | 1396.7 | +| Modexp (Mod 996 Gas Balanced) | 744.0 | 289.4 | +| Modexp (Mod Even 1024B Exp 1024) | 5.13 | 13.49 | +| Modexp (Mod Even 128B Exp 1024) | 690.5 | 300.7 | +| Modexp (Mod Even 16B Exp 320) | 1357.3 | 425.2 | +| Modexp (Mod Even 24B Exp 168) | 941.8 | 349.6 | +| Modexp (Mod Even 256B Exp 1024) | 495.7 | 214.4 | +| Modexp (Mod Even 32B Exp 256) | 1054.2 | 335.9 | +| Modexp (Mod Even 32B Exp 40) | 854.2 | 275.5 | +| Modexp (Mod Even 32B Exp 96) | 840.0 | 318.9 | +| Modexp (Mod Even 512B Exp 1024) | 6.58 | 12.26 | +| Modexp (Mod Even 64B Exp 512) | 908.7 | 320.2 | +| Modexp (Mod Even 8B Exp 896) | 2281.9 | 710.2 | +| Modexp (Mod Exp 208 Gas Balanced) | 678.2 | 260.0 | +| Modexp (Mod Exp 215 Gas Exp Heavy) | 1694.5 | 641.8 | +| Modexp (Mod Exp 298 Gas Exp Heavy) | 1877.4 | 698.6 | +| Modexp (Mod Min As Balanced) | 855.4 | 336.1 | +| Modexp (Mod Min As Base Heavy) | 3078.7 | 1022.3 | +| Modexp (Mod Min As Exp Heavy) | 1753.2 | 629.2 | +| Modexp (Mod Odd 1024B Exp 1024) | 6.38 | 13.11 | +| Modexp (Mod Odd 128B Exp 1024) | 820.3 | 296.1 | +| Modexp (Mod Odd 256B Exp 1024) | 492.1 | 213.3 | +| Modexp (Mod Odd 32B Exp 256) | 1052.2 | 334.2 | +| Modexp (Mod Odd 32B Exp 96) | 807.0 | 312.7 | +| Modexp (Mod Odd 32B Exp Cover Windows) | 751.2 | 250.4 | +| Modexp (Mod Odd 512B Exp 1024) | 5.22 | 12.43 | +| Modexp (Mod Odd 64B Exp 512) | 897.6 | 321.4 | +| Modexp (Mod Pawel 2) | 1098.6 | 410.2 | +| Modexp (Mod Pawel 3) | 893.0 | 341.9 | +| Modexp (Mod Pawel 4) | 948.6 | 311.8 | +| Modexp (Mod Vul Common 1152N1) | 568.7 | 187.3 | +| Modexp (Mod Vul Common 1349N1) | 807.0 | 271.1 | +| Modexp (Mod Vul Common 1360N1) | 763.0 | 299.7 | +| Modexp (Mod Vul Common 1360N2) | 819.7 | 273.8 | +| Modexp (Mod Vul Common 200N1) | 444.0 | 150.8 | +| Modexp (Mod Vul Common 200N2) | 577.1 | 189.6 | +| Modexp (Mod Vul Common 200N3) | 482.8 | 196.5 | +| Modexp (Mod Vul Example 1) | 1028.9 | 330.6 | +| Modexp (Mod Vul Example 2) | 976.3 | 309.8 | +| Modexp (Mod Vul Guido 1 Even) | 698.4 | 270.2 | +| Modexp (Mod Vul Guido 2 Even) | 1219.5 | 401.7 | +| Modexp (Mod Vul Guido 3 Even) | 1719.6 | 752.2 | +| Modexp (Mod Vul Marius 1 Even) | 1096.3 | 358.8 | +| Modexp (Mod Vul Nagydani 1 Pow 0X10001) | 728.9 | 248.7 | +| Modexp (Mod Vul Nagydani 1 Qube) | 541.3 | 182.0 | +| Modexp (Mod Vul Nagydani 1 Square) | 515.1 | 171.3 | +| Modexp (Mod Vul Nagydani 2 Pow 0X10001) | 654.4 | 251.2 | +| Modexp (Mod Vul Nagydani 2 Qube) | 1710.9 | 542.0 | +| Modexp (Mod Vul Nagydani 2 Square) | 1322.7 | 508.2 | +| Modexp (Mod Vul Nagydani 3 Pow 0X10001) | 634.5 | 247.9 | +| Modexp (Mod Vul Nagydani 3 Qube) | 4092.1 | 1307.1 | +| Modexp (Mod Vul Nagydani 3 Square) | 3201.0 | 1237.0 | +| Modexp (Mod Vul Nagydani 4 Pow 0X10001) | 571.8 | 243.9 | +| Modexp (Mod Vul Nagydani 4 Qube) | 3929.2 | 1587.3 | +| Modexp (Mod Vul Nagydani 4 Square) | 4222.5 | 1438.3 | +| Modexp (Mod Vul Nagydani 5 Pow 0X10001) | 531.8 | 225.9 | +| Modexp (Mod Vul Nagydani 5 Qube) | 4171.8 | 1620.8 | +| Modexp (Mod Vul Nagydani 5 Square) | 4247.7 | 1484.3 | +| Modexp (Mod Vul Pawel 1 Exp Heavy) | 2109.6 | 679.8 | +| Modexp (Mod Vul Pawel 2 Exp Heavy) | 1031.8 | 388.0 | +| Modexp (Mod Vul Pawel 3 Exp Heavy) | 996.6 | 320.3 | +| Modexp (Mod Vul Pawel 4 Exp Heavy) | 757.7 | 336.7 | +| Msize (Mem Size 0) | 40.92 | 27.66 | +| Msize (Mem Size 1) | 48.79 | 27.48 | +| Msize (Mem Size 1000) | 41.30 | 28.22 | +| Msize (Mem Size 100000) | 49.92 | 27.57 | +| Msize (Mem Size 1000000) | 49.06 | 27.17 | +| Precompile Fixed Cost (Blake2F) | 783.2 | 250.3 | +| Precompile Fixed Cost (Bls12 Fp To G1) | 88.76 | 630.3 | +| Precompile Fixed Cost (Bls12 Fp To G2) | 64.90 | 469.8 | +| Precompile Fixed Cost (Bls12 G1Add) | 63.42 | 290.1 | +| Precompile Fixed Cost (Bls12 G1Msm) | 96.59 | 224.8 | +| Precompile Fixed Cost (Bls12 G2Add) | 65.07 | 372.8 | +| Precompile Fixed Cost (Bls12 G2Msm) | 68.95 | 161.8 | +| Precompile Fixed Cost (Bls12 Pairing Check) | 127.2 | 464.1 | +| Precompile Fixed Cost (Bn128 Add 1 2) | 73.10 | 41.50 | +| Precompile Fixed Cost (Bn128 Add Infinities) | 42.47 | 27.55 | +| Precompile Fixed Cost (Bn128 Add) | 71.99 | 47.22 | +| Precompile Fixed Cost (Bn128 Mul 1 2 2 Scalar) | 9.52 | 15.29 | +| Precompile Fixed Cost (Bn128 Mul 1 2 32 Byte Scalar) | 297.3 | 149.3 | +| Precompile Fixed Cost (Bn128 Mul 32 Byte Coord And 2 Scalar) | 11.59 | 16.40 | +| Precompile Fixed Cost (Bn128 Mul 32 Byte Coord And Scalar) | 304.8 | 170.1 | +| Precompile Fixed Cost (Bn128 Mul Infinities 2 Scalar) | 9.34 | 15.40 | +| Precompile Fixed Cost (Bn128 Mul Infinities 32 Byte Scalar) | 158.0 | 86.62 | +| Precompile Fixed Cost (Bn128 Mul) | 312.3 | 145.2 | +| Precompile Fixed Cost (Bn128 One Pairing) | 289.5 | 103.2 | +| Precompile Fixed Cost (Bn128 Two Pairings Empty) | 5.51 | 11.60 | +| Precompile Fixed Cost (Bn128 Two Pairings) | 237.7 | 105.5 | +| Precompile Fixed Cost (Ecrecover) | 294.9 | 61.22 | +| Precompile Fixed Cost (Point Evaluation) | 325.2 | 1281.3 | +| Precompile Only Data Input (Identity) | 26.81 | 22.53 | +| Precompile Only Data Input (Ripemd, 160) | 18.57 | 16.77 | +| Precompile Only Data Input (Sha2, 256) | 11.51 | 57.90 | +| Push (Push0) | 39.78 | 26.18 | +| Push (Push1) | 28.78 | 20.15 | +| Push (Push10) | 33.44 | 23.73 | +| Push (Push11) | 35.73 | 24.37 | +| Push (Push12) | 36.00 | 24.90 | +| Push (Push13) | 43.72 | 25.55 | +| Push (Push14) | 39.65 | 25.93 | +| Push (Push15) | 39.27 | 27.09 | +| Push (Push16) | 39.53 | 29.00 | +| Push (Push17) | 39.68 | 26.03 | +| Push (Push18) | 40.76 | 26.44 | +| Push (Push19) | 42.59 | 28.35 | +| Push (Push2) | 30.61 | 20.64 | +| Push (Push20) | 52.20 | 28.30 | +| Push (Push21) | 53.34 | 28.03 | +| Push (Push22) | 56.60 | 28.90 | +| Push (Push23) | 48.68 | 29.34 | +| Push (Push24) | 60.57 | 29.58 | +| Push (Push25) | 51.40 | 28.79 | +| Push (Push26) | 62.71 | 29.99 | +| Push (Push27) | 64.31 | 31.23 | +| Push (Push28) | 55.18 | 32.02 | +| Push (Push29) | 64.27 | 31.61 | +| Push (Push3) | 33.47 | 21.30 | +| Push (Push30) | 69.11 | 31.54 | +| Push (Push31) | 58.80 | 32.24 | +| Push (Push32) | 63.23 | 32.70 | +| Push (Push4) | 27.64 | 22.77 | +| Push (Push5) | 35.38 | 24.66 | +| Push (Push6) | 31.31 | 22.51 | +| Push (Push7) | 38.68 | 23.84 | +| Push (Push8) | 37.40 | 23.62 | +| Push (Push9) | 37.58 | 27.76 | +| Return Revert (1Kib Of Non, Zero Data, Return) | 48.81 | 28.12 | +| Return Revert (1Kib Of Non, Zero Data, Revert) | 53.40 | 27.38 | +| Return Revert (1Kib Of Zero Data, Return) | 53.45 | 30.92 | +| Return Revert (1Kib Of Zero Data, Revert) | 56.32 | 32.76 | +| Return Revert (1Mib Of Non, Zero Data, Return) | 6.82 | 12.95 | +| Return Revert (1Mib Of Non, Zero Data, Revert) | 7.13 | 12.58 | +| Return Revert (1Mib Of Zero Data, Return) | 5.16 | 16.26 | +| Return Revert (1Mib Of Zero Data, Revert) | 6.02 | 13.68 | +| Return Revert (Empty, Return) | 71.11 | 37.38 | +| Return Revert (Empty, Revert) | 95.96 | 41.72 | +| Returndatacopy (Fixed Dst False, 0Bytes) | 54.89 | 30.04 | +| Returndatacopy (Fixed Dst False, 100Bytes) | 44.48 | 25.37 | +| Returndatacopy (Fixed Dst False, 10Kib) | 21.30 | 19.87 | +| Returndatacopy (Fixed Dst False, 1Mib) | 6.54 | 14.00 | +| Returndatacopy (Fixed Dst True, 0Bytes) | 45.25 | 26.13 | +| Returndatacopy (Fixed Dst True, 100Bytes) | 32.35 | 20.81 | +| Returndatacopy (Fixed Dst True, 10Kib) | 14.56 | 17.41 | +| Returndatacopy (Fixed Dst True, 1Mib) | 7.82 | 13.13 | +| Returndatasize Nonzero (Returned Size 0, Return Data Style Returndatastyle.Identity) | 30.41 | 23.66 | +| Returndatasize Nonzero (Returned Size 0, Return Data Style Returndatastyle.Return) | 36.34 | 29.72 | +| Returndatasize Nonzero (Returned Size 0, Return Data Style Returndatastyle.Revert) | 35.14 | 29.74 | +| Returndatasize Nonzero (Returned Size 1, Return Data Style Returndatastyle.Identity) | 29.83 | 23.84 | +| Returndatasize Nonzero (Returned Size 1, Return Data Style Returndatastyle.Return) | 36.38 | 24.03 | +| Returndatasize Nonzero (Returned Size 1, Return Data Style Returndatastyle.Revert) | 36.40 | 23.75 | +| Returndatasize Zero | 36.88 | 24.73 | +| Selfbalance | 321.6 | 108.0 | +| Selfdestruct Created (No Value) | 6.42 | 13.79 | +| Selfdestruct Created (With Value) | 5.77 | 14.33 | +| Selfdestruct Existing (No Value) | 13.02 | 15.31 | +| Selfdestruct Existing (With Value) | 14.34 | 14.58 | +| Selfdestruct Initcode (No Value) | 6.42 | 14.81 | +| Selfdestruct Initcode (With Value) | 5.29 | 12.30 | +| Shifts (Shift Right Sar) | 73.28 | 34.47 | +| Shifts (Shift Right Shr) | 57.03 | 32.25 | +| Storage Access Cold (Absent Slots False, Ssload) | 22.15 | 17.32 | +| Storage Access Cold (Absent Slots False, Sstore New Value) | 15.49 | 15.38 | +| Storage Access Cold (Absent Slots False, Sstore New Value, Out Of Gas) | 11.73 | 14.55 | +| Storage Access Cold (Absent Slots False, Sstore New Value, Revert) | 11.77 | 15.78 | +| Storage Access Cold (Absent Slots False, Sstore Same Value) | 22.04 | 17.55 | +| Storage Access Cold (Absent Slots False, Sstore Same Value, Out Of Gas) | 21.92 | 21.50 | +| Storage Access Cold (Absent Slots False, Sstore Same Value, Revert) | 22.10 | 17.85 | +| Storage Access Cold (Absent Slots True, Ssload) | 15.49 | 15.55 | +| Storage Access Cold (Absent Slots True, Sstore New Value) | 6.22 | 13.31 | +| Storage Access Cold (Absent Slots True, Sstore New Value, Out Of Gas) | 7.06 | 13.94 | +| Storage Access Cold (Absent Slots True, Sstore New Value, Revert) | 6.83 | 12.79 | +| Storage Access Cold (Absent Slots True, Sstore Same Value) | 6.72 | 12.82 | +| Storage Access Cold (Absent Slots True, Sstore Same Value, Out Of Gas) | 6.29 | 12.68 | +| Storage Access Cold (Absent Slots True, Sstore Same Value, Revert) | 6.60 | 16.40 | +| Storage Access Warm (Sload) | 26.54 | 18.36 | +| Storage Access Warm (Sstore New Value) | 54.82 | 31.07 | +| Storage Access Warm (Sstore Same Value) | 48.41 | 25.82 | +| Swap (Swap1) | 60.23 | 39.56 | +| Swap (Swap10) | 75.97 | 39.60 | +| Swap (Swap11) | 73.64 | 39.17 | +| Swap (Swap12) | 64.21 | 38.67 | +| Swap (Swap13) | 61.31 | 38.89 | +| Swap (Swap14) | 73.78 | 38.17 | +| Swap (Swap15) | 75.05 | 46.62 | +| Swap (Swap16) | 62.68 | 38.75 | +| Swap (Swap2) | 72.90 | 39.70 | +| Swap (Swap3) | 61.45 | 39.42 | +| Swap (Swap4) | 74.05 | 39.28 | +| Swap (Swap5) | 61.75 | 38.82 | +| Swap (Swap6) | 73.87 | 46.47 | +| Swap (Swap7) | 74.22 | 38.91 | +| Swap (Swap8) | 62.77 | 39.05 | +| Swap (Swap9) | 73.99 | 46.17 | +| Tload (Val Mut False, Key Mut False) | 9.76 | 15.69 | +| Tload (Val Mut False, Key Mut True) | 9.10 | 14.71 | +| Tload (Val Mut True, Key Mut False) | 9.57 | 15.03 | +| Tload (Val Mut True, Key Mut True) | 10.87 | 14.05 | +| Tstore (Dense Val Mut False, Key Mut False) | 28.18 | 21.47 | +| Tstore (Dense Val Mut False, Key Mut True) | 23.66 | 19.50 | +| Tstore (Dense Val Mut True, Key Mut False) | 53.48 | 28.29 | +| Tstore (Dense Val Mut True, Key Mut True) | 43.18 | 26.82 | +| Unop (Iszero) | 65.81 | 42.95 | +| Unop (Not) | 29.60 | 23.48 | +| Zero Param (Address) | 72.81 | 38.62 | +| Zero Param (Basefee) | 41.74 | 27.77 | +| Zero Param (Blobbasefee) | 66.00 | 31.93 | +| Zero Param (Caller) | 74.89 | 37.80 | +| Zero Param (Chainid) | 42.56 | 28.89 | +| Zero Param (Codesize) | 48.38 | 32.51 | +| Zero Param (Coinbase) | 73.30 | 39.14 | +| Zero Param (Gas) | 50.73 | 26.57 | +| Zero Param (Gaslimit) | 42.62 | 28.95 | +| Zero Param (Gasprice) | 50.66 | 33.03 | +| Zero Param (Number) | 45.36 | 32.15 | +| Zero Param (Origin) | 89.11 | 45.97 | +| Zero Param (Prevrandao) | 94.00 | 48.63 | +| Zero Param (Timestamp) | 51.62 | 30.61 | \ No newline at end of file diff --git a/www/docs/pages/benchmark-results/gas-categorized/1m/1M-4.md b/www/docs/pages/benchmark-results/gas-categorized/1m/1M-4.md new file mode 100644 index 00000000..dbcad906 --- /dev/null +++ b/www/docs/pages/benchmark-results/gas-categorized/1m/1M-4.md @@ -0,0 +1,515 @@ +# zkVM Proving Time (in secs) Comparison + +**Gas Category:** 1M + +**Number of GPUs:** 4 + + +| Benchmark | airbender | risc0 | sp1 | zisk | +|---|---|---|---|---| +| Address State Cold (Absent Accounts False, Balance) | 96.13 | 9.57 | 7.56 | 3.65 | +| Address State Cold (Absent Accounts True, Balance) | 96.76 | 7.93 | 7.07 | 3.22 | +| Address State Warm (Absent Target, Balance) | 98.06 | 12.24 | 8.60 | 4.34 | +| Address State Warm (Absent Target, Call) | 101.7 | 23.29 | 13.15 | 6.95 | +| Address State Warm (Absent Target, Callcode) | 103.0 | 24.24 | 13.61 | 7.36 | +| Address State Warm (Absent Target, Delegatecall) | 101.2 | 20.79 | 12.63 | 6.66 | +| Address State Warm (Absent Target, Extcodehash) | 97.50 | 13.66 | 9.60 | 4.96 | +| Address State Warm (Absent Target, Extcodesize) | 99.10 | 12.34 | 8.57 | 4.75 | +| Address State Warm (Absent Target, Staticcall) | 103.9 | 22.79 | 14.14 | 7.36 | +| Address State Warm (Present Target, Balance) | 96.60 | 11.57 | 8.07 | 4.57 | +| Address State Warm (Present Target, Call) | 102.6 | 25.52 | 15.70 | 8.14 | +| Address State Warm (Present Target, Callcode) | 102.4 | 25.37 | 15.16 | 8.05 | +| Address State Warm (Present Target, Delegatecall) | 99.11 | 23.02 | 13.64 | 7.44 | +| Address State Warm (Present Target, Extcodehash) | 99.00 | 11.59 | 8.58 | 4.24 | +| Address State Warm (Present Target, Extcodesize) | 99.66 | 11.52 | 8.58 | 4.24 | +| Address State Warm (Present Target, Staticcall) | 103.0 | 25.04 | 15.18 | 8.26 | +| Amortized Bn128 Pairings | 149.4 | 69.37 | 26.29 | 5.24 | +| Binop Simple (Add) | 104.2 | 15.22 | 9.10 | 4.55 | +| Binop Simple (And) | 99.60 | 13.42 | 9.62 | 4.47 | +| Binop Simple (Byte) | 101.4 | 14.25 | 9.60 | 4.03 | +| Binop Simple (Div, 0) | 107.3 | 54.59 | 26.75 | 8.57 | +| Binop Simple (Div, 1) | 106.9 | 51.55 | 24.76 | 8.35 | +| Binop Simple (Eq) | 103.4 | 24.22 | 15.66 | 6.76 | +| Binop Simple (Exp) | 109.1 | 34.06 | 18.73 | 4.84 | +| Binop Simple (Gt) | 99.29 | 13.93 | 10.10 | 4.86 | +| Binop Simple (Lt) | 97.19 | 13.75 | 10.09 | 4.23 | +| Binop Simple (Mod) | 98.56 | 19.76 | 14.18 | 6.07 | +| Binop Simple (Mul) | 106.5 | 20.34 | 12.64 | 4.24 | +| Binop Simple (Or) | 101.8 | 13.77 | 10.10 | 4.45 | +| Binop Simple (Sar) | 102.2 | 24.05 | 14.64 | 5.34 | +| Binop Simple (Sdiv, 0) | 115.2 | 61.65 | 29.84 | 9.27 | +| Binop Simple (Sdiv, 1) | 113.6 | 62.26 | 31.77 | 9.15 | +| Binop Simple (Sgt) | 101.4 | 32.38 | 17.21 | 7.27 | +| Binop Simple (Shl) | 98.32 | 21.59 | 12.11 | 5.25 | +| Binop Simple (Shr) | 102.1 | 21.70 | 12.14 | 4.94 | +| Binop Simple (Signextend) | 104.3 | 19.55 | 11.65 | 4.75 | +| Binop Simple (Slt) | 98.34 | 15.52 | 10.62 | 4.85 | +| Binop Simple (Smod) | 103.4 | 22.70 | 15.66 | 6.45 | +| Binop Simple (Sub) | 100.0 | 16.17 | 9.61 | 4.65 | +| Binop Simple (Xor) | 100.6 | 13.37 | 10.13 | 4.29 | +| Blobhash (No Blobs) | 100.5 | 13.76 | 8.58 | 4.95 | +| Blobhash (One Blob And Accessed) | 102.4 | 18.13 | 11.11 | 6.74 | +| Blobhash (One Blob But Access Non, Existent Index) | 100.2 | 15.03 | 8.59 | 4.64 | +| Blobhash (Six Blobs, Access Latest) | 104.1 | 18.84 | 11.11 | 7.67 | +| Block Full Access List And Data | 97.23 | 6.00 | 7.09 | 3.63 | +| Block Full Data (Non Zero Byte) | 97.10 | 4.55 | 5.57 | 3.33 | +| Block Full Data (Zero Byte) | 97.30 | 8.51 | 7.09 | 3.65 | +| Block Full Of Ether Transfers (A To A) | 109.4 | 12.48 | 8.07 | 3.75 | +| Block Full Of Ether Transfers (A To B) | 108.5 | 13.17 | 8.59 | 3.54 | +| Block Full Of Ether Transfers (A To Diff Acc) | 111.1 | 13.31 | 8.59 | 3.35 | +| Block Full Of Ether Transfers (Diff Acc To B) | 111.0 | 12.96 | 8.57 | 3.43 | +| Block Full Of Ether Transfers (Diff Acc To Diff Acc) | 109.9 | 14.48 | 9.10 | 3.84 | +| Blockhash | 100.9 | 15.07 | 9.59 | 4.95 | +| Bytecode Single Opcode (Call) | 157.7 | 97.26 | 32.31 | 24.56 | +| Bytecode Single Opcode (Callcode) | 155.4 | 97.04 | 32.37 | 25.15 | +| Bytecode Single Opcode (Delegatecall) | 154.1 | 94.90 | 32.35 | 25.26 | +| Bytecode Single Opcode (Extcodecopy) | 152.8 | 93.86 | 31.33 | 24.13 | +| Bytecode Single Opcode (Extcodehash) | 154.7 | 97.27 | 31.34 | 25.04 | +| Bytecode Single Opcode (Extcodesize) | 156.7 | 97.86 | 32.88 | 25.31 | +| Bytecode Single Opcode (Staticcall) | 150.9 | 96.55 | 31.86 | 25.14 | +| Calldatacopy (Non Zero, Dynamic Src Dst, 100Bytes, Call) | 101.1 | 16.75 | 11.13 | 5.37 | +| Calldatacopy (Non Zero, Dynamic Src Dst, 100Bytes, Transaction) | 101.2 | 17.70 | 11.12 | 4.74 | +| Calldatacopy (Non Zero, Dynamic Src Dst, 10Kib, Call) | 95.46 | 11.39 | 7.08 | 4.53 | +| Calldatacopy (Non Zero, Dynamic Src Dst, 10Kib, Transaction) | 97.85 | 10.77 | 7.62 | 4.34 | +| Calldatacopy (Non Zero, Fixed Src Dst, 100Bytes, Call) | 98.88 | 12.95 | 8.58 | 4.54 | +| Calldatacopy (Non Zero, Fixed Src Dst, 100Bytes, Transaction) | 98.10 | 12.78 | 9.07 | 4.13 | +| Calldatacopy (Non Zero, Fixed Src Dst, 10Kib, Call) | 97.85 | 8.69 | 7.57 | 3.63 | +| Calldatacopy (Non Zero, Fixed Src Dst, 10Kib, Transaction) | 96.77 | 9.17 | 7.06 | 3.96 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 0Bytes, Call) | 101.5 | 18.28 | 12.14 | 5.04 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 0Bytes, Transaction) | 103.7 | 18.96 | 12.67 | 5.03 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 100Bytes, Call) | 100.7 | 16.92 | 10.61 | 5.05 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 100Bytes, Transaction) | 99.06 | 16.43 | 10.61 | 4.85 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 10Kib, Call) | 99.33 | 12.52 | 8.09 | 4.85 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 10Kib, Transaction) | 95.12 | 7.12 | 7.09 | 3.75 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 1Mib, Call) | 91.63 | 3.82 | 5.56 | 3.34 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 1Mib, Transaction) | 96.42 | 4.65 | 6.05 | 3.34 | +| Calldatacopy (Zero Data, Fixed Src Dst, 0Bytes, Call) | 102.8 | 14.74 | 11.11 | 4.94 | +| Calldatacopy (Zero Data, Fixed Src Dst, 0Bytes, Transaction) | 101.6 | 13.55 | 10.09 | 4.63 | +| Calldatacopy (Zero Data, Fixed Src Dst, 100Bytes, Call) | 97.04 | 12.23 | 8.58 | 4.24 | +| Calldatacopy (Zero Data, Fixed Src Dst, 100Bytes, Transaction) | 96.22 | 11.87 | 8.08 | 4.66 | +| Calldatacopy (Zero Data, Fixed Src Dst, 10Kib, Call) | 97.21 | 10.36 | 7.07 | 3.85 | +| Calldatacopy (Zero Data, Fixed Src Dst, 10Kib, Transaction) | 96.01 | 7.25 | 7.08 | 3.83 | +| Calldatacopy (Zero Data, Fixed Src Dst, 1Mib, Call) | 95.44 | 5.69 | 5.54 | 3.13 | +| Calldatacopy (Zero Data, Fixed Src Dst, 1Mib, Transaction) | 94.98 | 4.10 | 6.06 | 3.34 | +| Calldataload (Empty) | 105.2 | 24.31 | 13.66 | 7.38 | +| Calldataload (One, Loop) | 104.3 | 25.91 | 16.16 | 7.76 | +| Calldataload (Zero, Loop) | 103.9 | 26.11 | 16.19 | 7.56 | +| Calldatasize (Calldata Length 0) | 96.32 | 13.50 | 9.60 | 4.74 | +| Calldatasize (Calldata Length 1000) | 99.13 | 14.52 | 10.63 | 5.13 | +| Calldatasize (Calldata Length 10000) | 99.46 | 13.68 | 10.10 | 4.83 | +| Callvalue (From Origin False, Non Zero Value False) | 102.2 | 15.38 | 11.11 | 4.55 | +| Callvalue (From Origin False, Non Zero Value True) | 100.8 | 15.68 | 9.60 | 4.63 | +| Callvalue (From Origin True, Non Zero Value False) | 99.03 | 15.44 | 10.62 | 4.75 | +| Callvalue (From Origin True, Non Zero Value True) | 99.84 | 15.44 | 10.60 | 4.53 | +| Codecopy (Dynamic Src Dst, 0.25X Max Code) | 100.0 | 12.18 | 8.60 | 4.54 | +| Codecopy (Dynamic Src Dst, 0.50X Max Code Size) | 97.73 | 10.94 | 8.09 | 4.35 | +| Codecopy (Dynamic Src Dst, 0.75X Max Code Size) | 95.73 | 11.89 | 8.62 | 4.53 | +| Codecopy (Dynamic Src Dst, 0Bytes) | 100.8 | 17.75 | 12.64 | 4.95 | +| Codecopy (Dynamic Src Dst, Max Code) | 98.21 | 10.53 | 8.59 | 4.34 | +| Codecopy (Fixed Src Dst, 0.25X Max Code) | 95.43 | 9.38 | 7.07 | 3.73 | +| Codecopy (Fixed Src Dst, 0.50X Max Code Size) | 96.11 | 10.40 | 7.59 | 4.05 | +| Codecopy (Fixed Src Dst, 0.75X Max Code Size) | 96.71 | 9.60 | 8.07 | 3.75 | +| Codecopy (Fixed Src Dst, 0Bytes) | 104.0 | 17.99 | 10.09 | 4.44 | +| Codecopy (Fixed Src Dst, Max Code) | 100.3 | 8.74 | 7.57 | 3.65 | +| Create (0.25X Max Code, Create) | 95.56 | 4.93 | 6.57 | 3.25 | +| Create (0.25X Max Code, Create2) | 100.7 | 6.53 | 6.05 | 3.46 | +| Create (0.25X Max Code, Zero Data, Create) | 98.01 | 5.03 | 6.05 | 3.73 | +| Create (0.25X Max Code, Zero Data, Create2) | 95.80 | 4.96 | 6.05 | 3.65 | +| Create (0.50X Max Code Size With Non, Zero Data, Create) | 92.81 | 4.68 | 6.07 | 3.74 | +| Create (0.50X Max Code Size With Non, Zero Data, Create2) | 93.98 | 5.03 | 6.55 | 3.72 | +| Create (0.50X Max Code Size With Zero Data, Create) | 95.49 | 5.27 | 5.56 | 3.25 | +| Create (0.50X Max Code Size With Zero Data, Create2) | 96.77 | 5.66 | 6.07 | 3.42 | +| Create (0.75X Max Code Size With Non, Zero Data, Create) | 96.52 | 4.86 | 6.09 | 3.75 | +| Create (0.75X Max Code Size With Non, Zero Data, Create2) | 97.77 | 6.39 | 6.55 | 3.43 | +| Create (0.75X Max Code Size With Zero Data, Create) | 95.73 | 4.87 | 6.57 | 3.42 | +| Create (0.75X Max Code Size With Zero Data, Create2) | 98.02 | 4.75 | 6.05 | 3.44 | +| Create (0Bytes, Create) | 95.28 | 4.99 | 6.56 | 3.33 | +| Create (0Bytes, Create2) | 98.19 | 4.53 | 6.57 | 3.35 | +| Create (Max Code, Create) | 94.06 | 5.10 | 6.10 | 3.43 | +| Create (Max Code, Create2) | 94.89 | 5.15 | 7.06 | 3.43 | +| Create (Max Code, Zero Data, Create) | 97.44 | 5.66 | 6.57 | 3.63 | +| Create (Max Code, Zero Data, Create2) | 95.04 | 5.54 | 6.56 | 3.36 | +| Creates Collisions (Create) | 95.62 | 6.07 | 6.57 | 3.23 | +| Creates Collisions (Create2) | 97.28 | 4.80 | 6.07 | 3.54 | +| Dup (Dup1) | 99.96 | 13.35 | 9.10 | 4.74 | +| Dup (Dup10) | 99.26 | 13.33 | 8.61 | 4.64 | +| Dup (Dup11) | 97.75 | 12.89 | 9.13 | 4.65 | +| Dup (Dup12) | 94.14 | 13.31 | 9.09 | 4.25 | +| Dup (Dup13) | 99.10 | 13.15 | 9.10 | 4.43 | +| Dup (Dup14) | 98.68 | 13.15 | 8.58 | 4.44 | +| Dup (Dup15) | 101.6 | 12.92 | 9.08 | 4.33 | +| Dup (Dup16) | 97.75 | 13.18 | 9.11 | 4.64 | +| Dup (Dup2) | 101.9 | 12.90 | 9.10 | 4.13 | +| Dup (Dup3) | 98.83 | 13.14 | 9.10 | 4.33 | +| Dup (Dup4) | 99.51 | 13.06 | 9.08 | 4.65 | +| Dup (Dup5) | 97.01 | 13.01 | 9.60 | 4.43 | +| Dup (Dup6) | 98.97 | 12.78 | 9.09 | 4.54 | +| Dup (Dup7) | 98.63 | 13.53 | 9.10 | 4.55 | +| Dup (Dup8) | 98.54 | 13.06 | 9.13 | 4.24 | +| Dup (Dup9) | 101.7 | 13.26 | 8.58 | 4.34 | +| Empty Block | 94.00 | 3.97 | 5.06 | 2.92 | +| Extcodecopy Warm (1Kib) | 99.13 | 10.15 | 8.08 | 3.63 | +| Extcodecopy Warm (512) | 96.86 | 10.57 | 8.10 | 4.15 | +| Extcodecopy Warm (5Kib) | 97.72 | 9.42 | 7.08 | 4.24 | +| Initcode Jumpdest Analysis (00) | 97.60 | 12.70 | 8.60 | 4.24 | +| Initcode Jumpdest Analysis (5B) | 97.13 | 13.69 | 10.61 | 5.14 | +| Initcode Jumpdest Analysis (605B) | 98.93 | 10.43 | 7.08 | 4.04 | +| Initcode Jumpdest Analysis (605B5B) | 97.05 | 12.04 | 8.07 | 4.13 | +| Initcode Jumpdest Analysis (615B5B) | 96.62 | 9.79 | 7.59 | 3.83 | +| Initcode Jumpdest Analysis (615B5B5B) | 98.09 | 11.43 | 8.07 | 4.05 | +| Jumpdests | 99.46 | 14.91 | 10.09 | 4.64 | +| Jumpi Fallthrough | 101.7 | 16.62 | 11.60 | 5.13 | +| Jumpis | 97.74 | 12.79 | 9.11 | 4.15 | +| Jumps | 96.05 | 11.90 | 8.11 | 4.14 | +| Keccak | 127.7 | 45.41 | 14.16 | 12.26 | +| Log Opcodes (Dynamic, Non Zero Topic, 0 Bytes Data, Log0) | 97.00 | 6.70 | 7.07 | 3.23 | +| Log Opcodes (Dynamic, Non Zero Topic, 0 Bytes Data, Log1) | 97.01 | 5.82 | 6.06 | 3.43 | +| Log Opcodes (Dynamic, Non Zero Topic, 0 Bytes Data, Log2) | 95.18 | 5.83 | 6.09 | 3.25 | +| Log Opcodes (Dynamic, Non Zero Topic, 0 Bytes Data, Log3) | 100.9 | 6.03 | 6.06 | 3.44 | +| Log Opcodes (Dynamic, Non Zero Topic, 0 Bytes Data, Log4) | 95.15 | 4.79 | 7.10 | 3.43 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log0) | 97.62 | 3.99 | 6.07 | 3.76 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log1) | 95.55 | 3.93 | 6.06 | 3.33 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log2) | 96.52 | 4.93 | 6.56 | 3.34 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log3) | 99.51 | 4.40 | 6.06 | 3.15 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log4) | 96.85 | 4.44 | 6.06 | 3.23 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log0) | 97.60 | 4.19 | 5.55 | 3.33 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log1) | 94.03 | 5.01 | 6.08 | 3.23 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log2) | 97.38 | 4.44 | 6.08 | 3.43 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log3) | 94.54 | 4.54 | 6.06 | 3.45 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log4) | 94.50 | 4.58 | 6.05 | 3.52 | +| Log Opcodes (Dynamic, Zero Topic, 0 Bytes Data, Log0) | 96.28 | 5.66 | 7.06 | 3.43 | +| Log Opcodes (Dynamic, Zero Topic, 0 Bytes Data, Log1) | 94.54 | 5.44 | 6.58 | 3.44 | +| Log Opcodes (Dynamic, Zero Topic, 0 Bytes Data, Log2) | 96.71 | 5.65 | 6.06 | 3.33 | +| Log Opcodes (Dynamic, Zero Topic, 0 Bytes Data, Log3) | 97.00 | 5.81 | 6.58 | 3.44 | +| Log Opcodes (Dynamic, Zero Topic, 0 Bytes Data, Log4) | 95.25 | 4.83 | 6.56 | 3.54 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Non Zero Data, Log0) | 95.11 | 4.54 | 6.57 | 3.52 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Non Zero Data, Log1) | 97.53 | 4.09 | 6.08 | 3.33 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Non Zero Data, Log2) | 98.44 | 4.67 | 6.05 | 3.22 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Non Zero Data, Log3) | 95.36 | 3.92 | 6.08 | 3.35 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Non Zero Data, Log4) | 94.49 | 4.15 | 6.05 | 3.24 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Zeros Data, Log0) | 96.95 | 4.40 | 6.05 | 3.23 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Zeros Data, Log1) | 96.12 | 4.29 | 6.08 | 3.64 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Zeros Data, Log2) | 98.08 | 6.46 | 6.57 | 3.23 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Zeros Data, Log3) | 95.48 | 4.67 | 6.07 | 3.33 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Zeros Data, Log4) | 97.18 | 4.37 | 6.08 | 3.23 | +| Log Opcodes (Fixed, Non Zero Topic, 0 Bytes Data, Log0) | 97.21 | 5.63 | 6.07 | 3.42 | +| Log Opcodes (Fixed, Non Zero Topic, 0 Bytes Data, Log1) | 97.35 | 4.36 | 6.57 | 3.34 | +| Log Opcodes (Fixed, Non Zero Topic, 0 Bytes Data, Log2) | 94.99 | 5.11 | 6.57 | 3.34 | +| Log Opcodes (Fixed, Non Zero Topic, 0 Bytes Data, Log3) | 96.88 | 6.57 | 6.11 | 3.45 | +| Log Opcodes (Fixed, Non Zero Topic, 0 Bytes Data, Log4) | 94.87 | 5.00 | 6.57 | 3.43 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log0) | 94.75 | 4.08 | 6.06 | 3.43 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log1) | 94.38 | 4.26 | 5.55 | 3.73 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log2) | 93.51 | 4.52 | 6.58 | 3.14 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log3) | 94.91 | 3.89 | 6.58 | 3.54 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log4) | 95.64 | 5.05 | 6.08 | 3.13 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Zeros Data, Log0) | 94.79 | 4.50 | 6.07 | 3.13 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Zeros Data, Log1) | 95.72 | 4.93 | 5.54 | 3.15 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Zeros Data, Log2) | 96.65 | 4.08 | 5.55 | 3.23 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Zeros Data, Log3) | 95.95 | 4.70 | 6.05 | 3.34 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Zeros Data, Log4) | 97.36 | 4.06 | 6.06 | 3.13 | +| Log Opcodes (Fixed, Zero Topic, 0 Bytes Data, Log0) | 94.36 | 5.23 | 6.54 | 3.35 | +| Log Opcodes (Fixed, Zero Topic, 0 Bytes Data, Log1) | 97.34 | 4.80 | 6.08 | 3.25 | +| Log Opcodes (Fixed, Zero Topic, 0 Bytes Data, Log2) | 97.06 | 4.74 | 6.58 | 3.53 | +| Log Opcodes (Fixed, Zero Topic, 0 Bytes Data, Log3) | 95.96 | 4.69 | 6.55 | 3.54 | +| Log Opcodes (Fixed, Zero Topic, 0 Bytes Data, Log4) | 97.86 | 4.83 | 6.56 | 3.24 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Non Zero Data, Log0) | 97.09 | 4.87 | 6.08 | 3.44 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Non Zero Data, Log1) | 97.00 | 4.24 | 6.05 | 3.25 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Non Zero Data, Log2) | 96.34 | 4.58 | 6.07 | 3.35 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Non Zero Data, Log3) | 97.19 | 4.76 | 6.06 | 3.22 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Non Zero Data, Log4) | 96.62 | 4.55 | 6.07 | 3.44 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Zeros Data, Log0) | 95.74 | 4.88 | 6.56 | 3.34 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Zeros Data, Log1) | 96.88 | 4.82 | 6.05 | 3.33 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Zeros Data, Log2) | 96.87 | 4.40 | 6.07 | 3.32 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Zeros Data, Log3) | 95.71 | 4.49 | 6.06 | 3.35 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Zeros Data, Log4) | 95.28 | 4.75 | 5.55 | 3.23 | +| Mcopy (Dynamic Src Dst, 0Bytes) | 101.0 | 18.51 | 12.66 | 5.25 | +| Mcopy (Dynamic Src Dst, 100Bytes) | 101.1 | 17.11 | 11.12 | 5.14 | +| Mcopy (Dynamic Src Dst, 10Kib) | 100.5 | 15.31 | 9.58 | 4.33 | +| Mcopy (Dynamic Src Dst, 1Mib) | 97.16 | 4.95 | 6.06 | 3.64 | +| Mcopy (Fixed Src Dst, 0Bytes) | 100.7 | 13.52 | 10.12 | 4.14 | +| Mcopy (Fixed Src Dst, 100Bytes) | 99.09 | 13.61 | 9.66 | 4.35 | +| Mcopy (Fixed Src Dst, 10Kib) | 101.7 | 11.26 | 8.06 | 4.83 | +| Mcopy (Fixed Src Dst, 1Mib) | 96.86 | 4.97 | 6.05 | 3.23 | +| Memory Access (Big Mem, Init Offset, Off 0, Mload) | 102.9 | 16.79 | 10.08 | 6.24 | +| Memory Access (Big Mem, Init Offset, Off 0, Mstore) | 101.9 | 16.73 | 11.12 | 6.15 | +| Memory Access (Big Mem, Init Offset, Off 0, Mstore8) | 98.87 | 13.19 | 9.61 | 4.66 | +| Memory Access (Big Mem, Init Offset, Off 1, Mload) | 99.65 | 16.34 | 10.59 | 6.15 | +| Memory Access (Big Mem, Init Offset, Off 1, Mstore) | 103.9 | 16.86 | 11.62 | 7.04 | +| Memory Access (Big Mem, Init Offset, Off 1, Mstore8) | 104.8 | 17.70 | 10.09 | 4.54 | +| Memory Access (Big Mem, Init Offset, Off 31, Mload) | 99.63 | 16.99 | 9.62 | 6.16 | +| Memory Access (Big Mem, Init Offset, Off 31, Mstore) | 103.5 | 16.36 | 11.10 | 6.24 | +| Memory Access (Big Mem, Init Offset, Off 31, Mstore8) | 98.04 | 12.80 | 9.59 | 4.35 | +| Memory Access (Big Mem, Uninit Offset, Off 0, Mload) | 100.6 | 16.67 | 10.12 | 5.94 | +| Memory Access (Big Mem, Uninit Offset, Off 0, Mstore) | 102.0 | 16.55 | 11.14 | 6.04 | +| Memory Access (Big Mem, Uninit Offset, Off 0, Mstore8) | 100.4 | 13.79 | 10.09 | 4.74 | +| Memory Access (Big Mem, Uninit Offset, Off 1, Mload) | 99.56 | 16.97 | 10.62 | 6.25 | +| Memory Access (Big Mem, Uninit Offset, Off 1, Mstore) | 102.2 | 16.92 | 11.62 | 5.86 | +| Memory Access (Big Mem, Uninit Offset, Off 1, Mstore8) | 98.50 | 13.88 | 9.60 | 4.65 | +| Memory Access (Big Mem, Uninit Offset, Off 31, Mload) | 101.2 | 16.64 | 10.59 | 6.24 | +| Memory Access (Big Mem, Uninit Offset, Off 31, Mstore) | 102.2 | 17.22 | 11.12 | 5.84 | +| Memory Access (Big Mem, Uninit Offset, Off 31, Mstore8) | 97.95 | 13.01 | 10.61 | 5.03 | +| Memory Access (Small Mem, Init Offset, Off 0, Mload) | 103.1 | 15.24 | 10.61 | 6.16 | +| Memory Access (Small Mem, Init Offset, Off 0, Mstore) | 100.7 | 17.26 | 11.63 | 5.86 | +| Memory Access (Small Mem, Init Offset, Off 0, Mstore8) | 99.12 | 13.28 | 10.64 | 4.44 | +| Memory Access (Small Mem, Init Offset, Off 1, Mload) | 98.09 | 16.05 | 9.62 | 6.14 | +| Memory Access (Small Mem, Init Offset, Off 1, Mstore) | 103.5 | 16.72 | 10.65 | 6.05 | +| Memory Access (Small Mem, Init Offset, Off 1, Mstore8) | 101.9 | 13.70 | 9.59 | 4.44 | +| Memory Access (Small Mem, Init Offset, Off 31, Mload) | 101.1 | 16.53 | 10.10 | 6.06 | +| Memory Access (Small Mem, Init Offset, Off 31, Mstore) | 102.9 | 16.68 | 11.60 | 6.06 | +| Memory Access (Small Mem, Init Offset, Off 31, Mstore8) | 98.88 | 13.34 | 9.62 | 4.55 | +| Memory Access (Small Mem, Uninit Offset, Off 0, Mload) | 98.75 | 16.93 | 10.13 | 6.27 | +| Memory Access (Small Mem, Uninit Offset, Off 0, Mstore) | 103.4 | 16.79 | 11.09 | 5.85 | +| Memory Access (Small Mem, Uninit Offset, Off 0, Mstore8) | 101.6 | 13.44 | 10.08 | 4.45 | +| Memory Access (Small Mem, Uninit Offset, Off 1, Mload) | 100.8 | 17.23 | 10.63 | 6.07 | +| Memory Access (Small Mem, Uninit Offset, Off 1, Mstore) | 103.8 | 17.30 | 11.12 | 6.07 | +| Memory Access (Small Mem, Uninit Offset, Off 1, Mstore8) | 101.7 | 12.60 | 10.10 | 4.34 | +| Memory Access (Small Mem, Uninit Offset, Off 31, Mload) | 99.27 | 17.09 | 10.08 | 6.06 | +| Memory Access (Small Mem, Uninit Offset, Off 31, Mstore) | 103.1 | 17.14 | 11.12 | 5.96 | +| Memory Access (Small Mem, Uninit Offset, Off 31, Mstore8) | 100.8 | 12.83 | 9.60 | 4.43 | +| Mod (Op Mod, Mod Bits 127) | 109.0 | 50.18 | 25.27 | 7.76 | +| Mod (Op Mod, Mod Bits 191) | 108.3 | 62.79 | 30.84 | 9.77 | +| Mod (Op Mod, Mod Bits 255) | 107.7 | 50.30 | 25.26 | 8.78 | +| Mod (Op Mod, Mod Bits 63) | 102.6 | 36.40 | 18.71 | 6.75 | +| Mod (Op Smod, Mod Bits 127) | 108.3 | 53.80 | 25.30 | 8.17 | +| Mod (Op Smod, Mod Bits 191) | 112.3 | 65.54 | 34.80 | 10.17 | +| Mod (Op Smod, Mod Bits 255) | 108.8 | 51.07 | 25.76 | 9.16 | +| Mod (Op Smod, Mod Bits 63) | 105.8 | 38.56 | 20.73 | 7.17 | +| Modarith (Op Addmod, Mod Bits 127) | 103.4 | 41.90 | 20.76 | 7.86 | +| Modarith (Op Addmod, Mod Bits 191) | 105.2 | 48.02 | 25.80 | 8.64 | +| Modarith (Op Addmod, Mod Bits 255) | 106.9 | 41.56 | 22.24 | 8.77 | +| Modarith (Op Addmod, Mod Bits 63) | 103.8 | 30.49 | 16.67 | 7.20 | +| Modarith (Op Mulmod, Mod Bits 127) | 111.8 | 69.19 | 33.83 | 10.06 | +| Modarith (Op Mulmod, Mod Bits 191) | 114.0 | 94.09 | 44.00 | 13.21 | +| Modarith (Op Mulmod, Mod Bits 255) | 116.1 | 91.24 | 44.86 | 12.29 | +| Modarith (Op Mulmod, Mod Bits 63) | 110.1 | 55.33 | 27.25 | 9.48 | +| Modexp (Mod 1045 Gas Base Heavy) | 218.9 | 927.3 | 430.2 | 83.69 | +| Modexp (Mod 1360 Gas Balanced) | 131.2 | 236.4 | 105.1 | 27.76 | +| Modexp (Mod 400 Gas Exp Heavy) | 140.9 | 290.5 | 125.4 | 39.93 | +| Modexp (Mod 408 Gas Balanced) | 123.4 | 206.6 | 89.90 | 23.43 | +| Modexp (Mod 408 Gas Base Heavy) | 210.1 | 835.4 | 378.4 | 78.02 | +| Modexp (Mod 600 As Balanced) | 126.4 | 213.1 | 93.57 | 24.08 | +| Modexp (Mod 600 Gas Exp Heavy) | 143.1 | 312.4 | 135.0 | 41.79 | +| Modexp (Mod 616 Gas Base Heavy) | 208.8 | 880.7 | 402.7 | 80.91 | +| Modexp (Mod 677 Gas Base Heavy) | 128.0 | 224.0 | 98.56 | 26.74 | +| Modexp (Mod 765 Gas Exp Heavy) | 135.4 | 251.5 | 110.1 | 31.36 | +| Modexp (Mod 767 Gas Balanced) | 129.9 | 243.0 | 87.97 | 22.64 | +| Modexp (Mod 800 Gas Base Heavy) | 218.5 | 906.1 | 421.6 | 83.72 | +| Modexp (Mod 800 Gas Exp Heavy) | 145.5 | 320.8 | 138.5 | 43.66 | +| Modexp (Mod 852 Gas Exp Heavy) | 143.1 | 320.8 | 139.0 | 43.15 | +| Modexp (Mod 867 Gas Base Heavy) | 218.5 | 911.3 | 425.3 | 84.08 | +| Modexp (Mod 996 Gas Balanced) | 125.8 | 203.6 | 90.97 | 23.02 | +| Modexp (Mod Even 1024B Exp 1024) | 95.92 | 4.94 | 6.04 | 3.63 | +| Modexp (Mod Even 128B Exp 1024) | 124.2 | 188.7 | 89.54 | 20.14 | +| Modexp (Mod Even 16B Exp 320) | 142.3 | 305.7 | 132.5 | 43.75 | +| Modexp (Mod Even 24B Exp 168) | 133.8 | 250.2 | 109.2 | 32.91 | +| Modexp (Mod Even 256B Exp 1024) | 117.3 | 172.8 | 64.14 | 14.81 | +| Modexp (Mod Even 32B Exp 256) | 134.2 | 236.8 | 106.0 | 28.66 | +| Modexp (Mod Even 32B Exp 40) | 124.3 | 196.4 | 86.42 | 26.27 | +| Modexp (Mod Even 32B Exp 96) | 130.4 | 225.0 | 98.56 | 28.89 | +| Modexp (Mod Even 512B Exp 1024) | 97.29 | 5.06 | 6.06 | 3.23 | +| Modexp (Mod Even 64B Exp 512) | 126.3 | 204.8 | 99.44 | 22.63 | +| Modexp (Mod Even 8B Exp 896) | 179.7 | 513.8 | 225.5 | 113.5 | +| Modexp (Mod Exp 208 Gas Balanced) | 124.2 | 186.0 | 80.88 | 23.25 | +| Modexp (Mod Exp 215 Gas Exp Heavy) | 169.6 | 452.5 | 199.1 | 98.05 | +| Modexp (Mod Exp 298 Gas Exp Heavy) | 174.9 | 497.3 | 219.2 | 108.2 | +| Modexp (Mod Min As Balanced) | 126.2 | 196.8 | 85.84 | 23.83 | +| Modexp (Mod Min As Base Heavy) | 186.6 | 682.8 | 303.9 | 62.59 | +| Modexp (Mod Min As Exp Heavy) | 168.5 | 445.8 | 197.7 | 96.95 | +| Modexp (Mod Odd 1024B Exp 1024) | 95.34 | 5.39 | 6.55 | 3.13 | +| Modexp (Mod Odd 128B Exp 1024) | 123.4 | 190.1 | 90.47 | 20.00 | +| Modexp (Mod Odd 256B Exp 1024) | 115.2 | 135.0 | 66.31 | 15.60 | +| Modexp (Mod Odd 32B Exp 256) | 132.3 | 236.6 | 110.0 | 27.86 | +| Modexp (Mod Odd 32B Exp 96) | 127.8 | 215.0 | 95.61 | 26.48 | +| Modexp (Mod Odd 32B Exp Cover Windows) | 122.4 | 174.3 | 77.85 | 21.34 | +| Modexp (Mod Odd 512B Exp 1024) | 97.42 | 4.74 | 6.06 | 3.43 | +| Modexp (Mod Odd 64B Exp 512) | 127.0 | 206.6 | 99.08 | 22.44 | +| Modexp (Mod Pawel 2) | 142.7 | 294.0 | 127.4 | 41.06 | +| Modexp (Mod Pawel 3) | 132.1 | 240.6 | 104.7 | 30.89 | +| Modexp (Mod Pawel 4) | 129.7 | 216.5 | 95.06 | 26.35 | +| Modexp (Mod Vul Common 1152N1) | 113.8 | 131.7 | 58.64 | 17.10 | +| Modexp (Mod Vul Common 1349N1) | 121.5 | 187.5 | 82.37 | 22.34 | +| Modexp (Mod Vul Common 1360N1) | 128.9 | 208.1 | 91.57 | 25.06 | +| Modexp (Mod Vul Common 1360N2) | 121.8 | 240.6 | 83.89 | 23.33 | +| Modexp (Mod Vul Common 200N1) | 114.1 | 105.6 | 48.03 | 14.48 | +| Modexp (Mod Vul Common 200N2) | 116.0 | 134.5 | 60.10 | 17.71 | +| Modexp (Mod Vul Common 200N3) | 117.2 | 134.3 | 60.71 | 17.39 | +| Modexp (Mod Vul Example 1) | 132.6 | 234.6 | 104.0 | 27.34 | +| Modexp (Mod Vul Example 2) | 131.9 | 223.5 | 90.90 | 24.31 | +| Modexp (Mod Vul Guido 1 Even) | 122.1 | 160.3 | 75.31 | 32.00 | +| Modexp (Mod Vul Guido 2 Even) | 136.3 | 275.2 | 124.4 | 37.92 | +| Modexp (Mod Vul Guido 3 Even) | 159.0 | 450.9 | 216.4 | 64.26 | +| Modexp (Mod Vul Marius 1 Even) | 133.3 | 248.2 | 111.7 | 34.07 | +| Modexp (Mod Vul Nagydani 1 Pow 0X10001) | 123.4 | 168.2 | 75.78 | 19.64 | +| Modexp (Mod Vul Nagydani 1 Qube) | 116.1 | 125.2 | 57.12 | 14.38 | +| Modexp (Mod Vul Nagydani 1 Square) | 113.8 | 151.8 | 56.03 | 14.39 | +| Modexp (Mod Vul Nagydani 2 Pow 0X10001) | 119.9 | 174.7 | 77.86 | 18.62 | +| Modexp (Mod Vul Nagydani 2 Qube) | 149.2 | 382.7 | 167.7 | 37.72 | +| Modexp (Mod Vul Nagydani 2 Square) | 143.0 | 351.7 | 154.6 | 35.16 | +| Modexp (Mod Vul Nagydani 3 Pow 0X10001) | 116.5 | 166.6 | 77.84 | 18.30 | +| Modexp (Mod Vul Nagydani 3 Qube) | 217.3 | 913.6 | 410.4 | 89.00 | +| Modexp (Mod Vul Nagydani 3 Square) | 210.6 | 847.0 | 368.5 | 80.98 | +| Modexp (Mod Vul Nagydani 4 Pow 0X10001) | 117.1 | 158.2 | 75.84 | 16.50 | +| Modexp (Mod Vul Nagydani 4 Qube) | 234.8 | 1041.1 | 487.3 | 101.6 | +| Modexp (Mod Vul Nagydani 4 Square) | 225.2 | 1217.1 | 443.7 | 91.71 | +| Modexp (Mod Vul Nagydani 5 Pow 0X10001) | 117.2 | 144.3 | 69.25 | 15.60 | +| Modexp (Mod Vul Nagydani 5 Qube) | 232.3 | 1045.5 | 479.3 | 104.7 | +| Modexp (Mod Vul Nagydani 5 Square) | 224.9 | 960.0 | 466.2 | 97.37 | +| Modexp (Mod Vul Pawel 1 Exp Heavy) | 172.5 | 476.7 | 209.3 | 103.6 | +| Modexp (Mod Vul Pawel 2 Exp Heavy) | 137.4 | 278.0 | 121.3 | 37.68 | +| Modexp (Mod Vul Pawel 3 Exp Heavy) | 129.7 | 231.1 | 99.70 | 27.35 | +| Modexp (Mod Vul Pawel 4 Exp Heavy) | 126.8 | 207.2 | 89.46 | 22.74 | +| Msize (Mem Size 0) | 100.3 | 16.91 | 10.60 | 5.57 | +| Msize (Mem Size 1) | 103.6 | 17.62 | 10.63 | 5.76 | +| Msize (Mem Size 1000) | 100.9 | 17.25 | 10.62 | 5.43 | +| Msize (Mem Size 100000) | 102.3 | 17.46 | 11.10 | 5.66 | +| Msize (Mem Size 1000000) | 98.51 | 16.25 | 10.66 | 5.33 | +| Precompile Fixed Cost (Blake2F) | 122.0 | 193.3 | 83.73 | 26.64 | +| Precompile Fixed Cost (Bls12 Fp To G1) | 148.6 | 26.77 | 157.2 | 28.91 | +| Precompile Fixed Cost (Bls12 Fp To G2) | 134.5 | 20.41 | 113.2 | 21.64 | +| Precompile Fixed Cost (Bls12 G1Add) | 128.8 | 20.86 | 91.47 | 21.74 | +| Precompile Fixed Cost (Bls12 G1Msm) | 118.9 | 28.14 | 68.38 | 13.49 | +| Precompile Fixed Cost (Bls12 G2Add) | 130.6 | 24.54 | 94.09 | 22.91 | +| Precompile Fixed Cost (Bls12 G2Msm) | 113.2 | 22.94 | 51.58 | 11.90 | +| Precompile Fixed Cost (Bls12 Pairing Check) | 140.9 | 35.93 | 143.6 | 28.57 | +| Precompile Fixed Cost (Bn128 Add 1 2) | 131.9 | 25.52 | 14.70 | 9.37 | +| Precompile Fixed Cost (Bn128 Add Infinities) | 98.92 | 17.75 | 11.13 | 7.26 | +| Precompile Fixed Cost (Bn128 Add) | 126.7 | 26.15 | 26.74 | 9.88 | +| Precompile Fixed Cost (Bn128 Mul 1 2 2 Scalar) | 96.84 | 7.94 | 7.08 | 3.96 | +| Precompile Fixed Cost (Bn128 Mul 1 2 32 Byte Scalar) | 150.4 | 73.32 | 39.90 | 3.63 | +| Precompile Fixed Cost (Bn128 Mul 32 Byte Coord And 2 Scalar) | 98.14 | 7.28 | 8.06 | 3.35 | +| Precompile Fixed Cost (Bn128 Mul 32 Byte Coord And Scalar) | 151.1 | 72.78 | 40.94 | 3.53 | +| Precompile Fixed Cost (Bn128 Mul Infinities 2 Scalar) | 96.38 | 6.29 | 7.57 | 3.32 | +| Precompile Fixed Cost (Bn128 Mul Infinities 32 Byte Scalar) | 114.1 | 47.77 | 26.27 | 3.14 | +| Precompile Fixed Cost (Bn128 Mul) | 156.3 | 75.88 | 41.41 | 3.85 | +| Precompile Fixed Cost (Bn128 One Pairing) | 149.4 | 69.17 | 25.27 | 6.69 | +| Precompile Fixed Cost (Bn128 Two Pairings Empty) | 98.68 | 4.59 | 6.07 | 3.15 | +| Precompile Fixed Cost (Bn128 Two Pairings) | 150.9 | 68.33 | 26.27 | 5.55 | +| Precompile Fixed Cost (Ecrecover) | 253.1 | 72.67 | 18.19 | 5.85 | +| Precompile Fixed Cost (Point Evaluation) | 221.3 | 78.41 | 362.6 | 79.17 | +| Precompile Only Data Input (Identity) | 96.31 | 12.75 | 9.60 | 3.93 | +| Precompile Only Data Input (Ripemd, 160) | 96.84 | 10.49 | 7.08 | 3.74 | +| Precompile Only Data Input (Sha2, 256) | 107.3 | 7.58 | 17.19 | 5.53 | +| Push (Push0) | 102.3 | 16.89 | 10.59 | 5.24 | +| Push (Push1) | 99.90 | 12.29 | 8.59 | 4.34 | +| Push (Push10) | 97.99 | 15.16 | 9.62 | 5.64 | +| Push (Push11) | 99.92 | 15.64 | 10.61 | 5.65 | +| Push (Push12) | 96.74 | 15.86 | 10.08 | 5.74 | +| Push (Push13) | 98.45 | 16.09 | 10.12 | 6.06 | +| Push (Push14) | 97.48 | 16.80 | 10.60 | 6.53 | +| Push (Push15) | 98.18 | 16.64 | 10.59 | 6.56 | +| Push (Push16) | 97.22 | 17.21 | 10.09 | 6.66 | +| Push (Push17) | 97.69 | 17.74 | 11.11 | 6.95 | +| Push (Push18) | 98.04 | 17.20 | 11.13 | 6.91 | +| Push (Push19) | 96.50 | 17.58 | 11.61 | 7.25 | +| Push (Push2) | 100.8 | 12.37 | 8.59 | 4.95 | +| Push (Push20) | 100.4 | 22.71 | 11.13 | 6.85 | +| Push (Push21) | 99.95 | 18.52 | 11.10 | 7.35 | +| Push (Push22) | 100.0 | 18.39 | 11.08 | 7.35 | +| Push (Push23) | 101.9 | 18.91 | 11.64 | 7.55 | +| Push (Push24) | 97.97 | 25.84 | 11.14 | 7.74 | +| Push (Push25) | 100.1 | 19.40 | 11.64 | 8.06 | +| Push (Push26) | 98.54 | 20.14 | 12.12 | 7.87 | +| Push (Push27) | 102.2 | 26.80 | 12.17 | 8.28 | +| Push (Push28) | 100.1 | 20.97 | 12.15 | 8.16 | +| Push (Push29) | 101.7 | 20.55 | 12.64 | 8.36 | +| Push (Push3) | 100.2 | 13.42 | 9.10 | 4.84 | +| Push (Push30) | 100.4 | 27.91 | 13.12 | 8.76 | +| Push (Push31) | 102.4 | 22.10 | 12.61 | 9.07 | +| Push (Push32) | 100.2 | 22.59 | 12.64 | 9.38 | +| Push (Push4) | 98.19 | 13.84 | 9.61 | 4.93 | +| Push (Push5) | 98.56 | 14.12 | 10.10 | 5.04 | +| Push (Push6) | 96.99 | 14.33 | 10.10 | 5.28 | +| Push (Push7) | 101.3 | 19.24 | 10.12 | 5.34 | +| Push (Push8) | 97.68 | 18.96 | 10.10 | 5.37 | +| Push (Push9) | 98.94 | 14.91 | 10.11 | 5.47 | +| Return Revert (1Kib Of Non, Zero Data, Return) | 101.7 | 17.56 | 11.08 | 5.65 | +| Return Revert (1Kib Of Non, Zero Data, Revert) | 104.4 | 23.53 | 10.63 | 5.86 | +| Return Revert (1Kib Of Zero Data, Return) | 101.6 | 20.42 | 12.12 | 6.83 | +| Return Revert (1Kib Of Zero Data, Revert) | 99.80 | 20.97 | 12.12 | 6.88 | +| Return Revert (1Mib Of Non, Zero Data, Return) | 94.09 | 5.06 | 6.08 | 3.73 | +| Return Revert (1Mib Of Non, Zero Data, Revert) | 94.47 | 5.33 | 6.57 | 3.14 | +| Return Revert (1Mib Of Zero Data, Return) | 97.76 | 4.07 | 6.06 | 3.13 | +| Return Revert (1Mib Of Zero Data, Revert) | 96.09 | 3.86 | 6.06 | 3.24 | +| Return Revert (Empty, Return) | 102.4 | 24.98 | 15.18 | 7.77 | +| Return Revert (Empty, Revert) | 100.2 | 27.15 | 15.21 | 8.96 | +| Returndatacopy (Fixed Dst False, 0Bytes) | 102.6 | 17.92 | 12.11 | 5.04 | +| Returndatacopy (Fixed Dst False, 100Bytes) | 101.0 | 15.99 | 10.11 | 5.44 | +| Returndatacopy (Fixed Dst False, 10Kib) | 96.66 | 10.90 | 8.61 | 4.53 | +| Returndatacopy (Fixed Dst False, 1Mib) | 98.61 | 6.18 | 6.56 | 3.64 | +| Returndatacopy (Fixed Dst True, 0Bytes) | 102.7 | 15.87 | 11.13 | 4.84 | +| Returndatacopy (Fixed Dst True, 100Bytes) | 100.4 | 12.88 | 9.11 | 4.75 | +| Returndatacopy (Fixed Dst True, 10Kib) | 98.35 | 10.11 | 7.58 | 3.73 | +| Returndatacopy (Fixed Dst True, 1Mib) | 99.39 | 7.00 | 6.55 | 3.24 | +| Returndatasize Nonzero (Returned Size 0, Return Data Style Returndatastyle.Identity) | 96.25 | 14.06 | 10.12 | 4.86 | +| Returndatasize Nonzero (Returned Size 0, Return Data Style Returndatastyle.Return) | 98.32 | 14.04 | 10.62 | 4.96 | +| Returndatasize Nonzero (Returned Size 0, Return Data Style Returndatastyle.Revert) | 97.96 | 13.77 | 10.09 | 4.55 | +| Returndatasize Nonzero (Returned Size 1, Return Data Style Returndatastyle.Identity) | 99.15 | 14.49 | 10.12 | 4.79 | +| Returndatasize Nonzero (Returned Size 1, Return Data Style Returndatastyle.Return) | 100.3 | 14.60 | 10.11 | 4.84 | +| Returndatasize Nonzero (Returned Size 1, Return Data Style Returndatastyle.Revert) | 97.58 | 14.81 | 10.12 | 4.96 | +| Returndatasize Zero | 99.09 | 13.86 | 9.61 | 5.05 | +| Selfbalance | 115.1 | 75.66 | 36.93 | 20.23 | +| Selfdestruct Created (No Value) | 95.50 | 5.59 | 6.57 | 3.14 | +| Selfdestruct Created (With Value) | 95.00 | 4.86 | 6.06 | 3.52 | +| Selfdestruct Existing (No Value) | 97.16 | 7.58 | 7.09 | 3.52 | +| Selfdestruct Existing (With Value) | 98.97 | 10.11 | 7.07 | 3.43 | +| Selfdestruct Initcode (No Value) | 95.30 | 4.18 | 6.05 | 3.15 | +| Selfdestruct Initcode (With Value) | 96.50 | 4.66 | 6.08 | 3.54 | +| Shifts (Shift Right Sar) | 101.7 | 22.66 | 14.14 | 5.14 | +| Shifts (Shift Right Shr) | 101.8 | 21.34 | 13.19 | 4.85 | +| Storage Access Cold (Absent Slots False, Ssload) | 97.39 | 9.83 | 7.07 | 4.14 | +| Storage Access Cold (Absent Slots False, Sstore New Value) | 96.95 | 7.46 | 7.58 | 3.75 | +| Storage Access Cold (Absent Slots False, Sstore New Value, Out Of Gas) | 98.35 | 8.08 | 7.08 | 3.95 | +| Storage Access Cold (Absent Slots False, Sstore New Value, Revert) | 97.14 | 7.33 | 7.08 | 3.94 | +| Storage Access Cold (Absent Slots False, Sstore Same Value) | 101.3 | 11.54 | 8.08 | 4.54 | +| Storage Access Cold (Absent Slots False, Sstore Same Value, Out Of Gas) | 96.92 | 11.20 | 8.08 | 4.63 | +| Storage Access Cold (Absent Slots False, Sstore Same Value, Revert) | 101.6 | 10.83 | 8.07 | 4.05 | +| Storage Access Cold (Absent Slots True, Ssload) | 102.4 | 11.39 | 7.08 | 3.75 | +| Storage Access Cold (Absent Slots True, Sstore New Value) | 97.61 | 4.79 | 6.07 | 3.65 | +| Storage Access Cold (Absent Slots True, Sstore New Value, Out Of Gas) | 96.67 | 4.58 | 6.06 | 3.34 | +| Storage Access Cold (Absent Slots True, Sstore New Value, Revert) | 94.89 | 4.68 | 6.55 | 3.13 | +| Storage Access Cold (Absent Slots True, Sstore Same Value) | 99.21 | 6.52 | 6.08 | 3.55 | +| Storage Access Cold (Absent Slots True, Sstore Same Value, Out Of Gas) | 96.98 | 4.51 | 6.06 | 3.33 | +| Storage Access Cold (Absent Slots True, Sstore Same Value, Revert) | 96.42 | 4.75 | 6.05 | 3.43 | +| Storage Access Warm (Sload) | 97.87 | 11.26 | 8.05 | 4.15 | +| Storage Access Warm (Sstore New Value) | 102.9 | 20.42 | 12.12 | 6.35 | +| Storage Access Warm (Sstore Same Value) | 98.05 | 16.44 | 10.62 | 5.25 | +| Swap (Swap1) | 101.6 | 22.58 | 15.16 | 13.53 | +| Swap (Swap10) | 101.8 | 22.40 | 16.12 | 13.17 | +| Swap (Swap11) | 100.6 | 21.89 | 15.66 | 12.07 | +| Swap (Swap12) | 101.7 | 22.67 | 16.18 | 12.97 | +| Swap (Swap13) | 102.0 | 22.37 | 16.18 | 10.97 | +| Swap (Swap14) | 102.8 | 22.28 | 15.66 | 10.79 | +| Swap (Swap15) | 103.5 | 22.50 | 15.18 | 10.97 | +| Swap (Swap16) | 99.70 | 22.64 | 15.69 | 11.48 | +| Swap (Swap2) | 100.4 | 22.33 | 16.17 | 11.55 | +| Swap (Swap3) | 98.21 | 22.58 | 15.66 | 13.79 | +| Swap (Swap4) | 97.81 | 22.32 | 16.18 | 14.79 | +| Swap (Swap5) | 98.42 | 22.08 | 15.64 | 11.20 | +| Swap (Swap6) | 99.99 | 22.07 | 16.16 | 11.07 | +| Swap (Swap7) | 103.4 | 22.39 | 15.16 | 11.38 | +| Swap (Swap8) | 99.98 | 22.33 | 16.22 | 11.36 | +| Swap (Swap9) | 100.5 | 21.91 | 15.65 | 12.49 | +| Tload (Val Mut False, Key Mut False) | 96.94 | 5.96 | 6.58 | 3.43 | +| Tload (Val Mut False, Key Mut True) | 95.84 | 5.59 | 6.07 | 3.53 | +| Tload (Val Mut True, Key Mut False) | 96.12 | 7.04 | 7.58 | 3.86 | +| Tload (Val Mut True, Key Mut True) | 95.73 | 7.05 | 7.08 | 3.94 | +| Tstore (Dense Val Mut False, Key Mut False) | 98.83 | 12.04 | 8.09 | 4.14 | +| Tstore (Dense Val Mut False, Key Mut True) | 98.59 | 12.23 | 8.07 | 5.04 | +| Tstore (Dense Val Mut True, Key Mut False) | 101.3 | 18.19 | 11.12 | 5.84 | +| Tstore (Dense Val Mut True, Key Mut True) | 101.1 | 18.04 | 10.62 | 5.64 | +| Unop (Iszero) | 101.2 | 23.81 | 15.18 | 7.23 | +| Unop (Not) | 101.4 | 12.21 | 8.58 | 3.95 | +| Zero Param (Address) | 107.2 | 25.58 | 14.64 | 8.56 | +| Zero Param (Basefee) | 99.10 | 16.89 | 11.11 | 5.46 | +| Zero Param (Blobbasefee) | 98.06 | 21.13 | 13.11 | 5.86 | +| Zero Param (Caller) | 105.3 | 25.67 | 15.69 | 8.34 | +| Zero Param (Chainid) | 100.3 | 18.14 | 10.10 | 5.33 | +| Zero Param (Codesize) | 100.3 | 16.51 | 11.12 | 5.55 | +| Zero Param (Coinbase) | 104.8 | 25.54 | 15.16 | 8.68 | +| Zero Param (Gas) | 98.45 | 17.65 | 11.11 | 5.15 | +| Zero Param (Gaslimit) | 100.7 | 17.38 | 10.62 | 5.44 | +| Zero Param (Gasprice) | 99.84 | 20.09 | 12.12 | 5.95 | +| Zero Param (Number) | 102.4 | 17.87 | 11.12 | 5.33 | +| Zero Param (Origin) | 104.3 | 26.25 | 15.16 | 8.87 | +| Zero Param (Prevrandao) | 106.5 | 30.78 | 17.70 | 12.78 | +| Zero Param (Timestamp) | 101.5 | 17.57 | 11.61 | 5.43 | \ No newline at end of file diff --git a/www/docs/pages/benchmark-results/gas-categorized/1m/airbender-1M-4.md b/www/docs/pages/benchmark-results/gas-categorized/1m/airbender-1M-4.md new file mode 100644 index 00000000..a4a4746e --- /dev/null +++ b/www/docs/pages/benchmark-results/gas-categorized/1m/airbender-1M-4.md @@ -0,0 +1,543 @@ +# zkEVM Benchmark Results + +Generated on: 2025-12-13 19:54:08 + +## Folder: zkevm-metrics-airbender-1M-4 + +**zkVM:** airbender-v0.1.0 (4 GPUs) + +**Hardware Configuration:** CPU: AMD EPYC 7B13 64-Core Processor | RAM: 396 GiB | GPU: NVIDIA GeForce RTX 4090, NVIDIA GeForce RTX 4090, NVIDIA GeForce RTX 4090, NVIDIA GeForce RTX 4090 + +## Proving Metrics + +| Benchmark | Gas Used | Proof Size (bytes) | Proving Time (ms) | Proving Time (s) | Peak Memory (MB) | Avg Memory (MB) | Initial Memory (MB) | +|---|---|---|---|---|---|---|---| +| Block Full Access List And Data | 999,980 | 1,108,950 | 97,231 | 97.23 | 2,962,692 | 2,962,500.3 | 2,955,860 | +| Block Full Data (Non Zero Byte) | 1,000,000 | 1,108,950 | 97,099 | 97.10 | 3,757,880 | 3,757,880 | 3,757,880 | +| Block Full Data (Zero Byte) | 1,000,000 | 1,108,950 | 97,296 | 97.30 | 3,241,784 | 3,241,194.7 | 3,240,808 | +| Block Full Of Ether Transfers (A To A) | 987,000 | 1,108,950 | 109,363 | 109.36 | 3,138,344 | 3,138,344 | 3,132,488 | +| Block Full Of Ether Transfers (A To B) | 987,000 | 1,108,950 | 108,499 | 108.50 | 3,595,972 | 3,595,460 | 3,593,044 | +| Block Full Of Ether Transfers (A To Diff Acc) | 987,000 | 1,108,950 | 111,056 | 111.06 | 3,747,160 | 3,747,160 | 3,746,184 | +| Block Full Of Ether Transfers (Diff Acc To B) | 987,000 | 1,108,950 | 110,978 | 110.98 | 3,183,240 | 3,181,114.8 | 3,175,432 | +| Block Full Of Ether Transfers (Diff Acc To Diff Acc) | 987,000 | 1,108,950 | 109,912 | 109.91 | 3,386,204 | 3,383,441.4 | 3,382,300 | +| Bytecode Single Opcode (Callcode) | 1,000,000 | 1,108,950 | 155,416 | 155.42 | 3,065,152 | 3,063,507.7 | 3,061,248 | +| Bytecode Single Opcode (Call) | 1,000,000 | 1,108,950 | 157,676 | 157.68 | 2,544,020 | 2,537,395.4 | 2,507,908 | +| Bytecode Single Opcode (Delegatecall) | 1,000,000 | 1,108,950 | 154,072 | 154.07 | 3,544,264 | 3,544,264 | 3,544,264 | +| Bytecode Single Opcode (Extcodecopy) | 1,000,000 | 1,108,950 | 152,786 | 152.79 | 3,757,876 | 3,757,876 | 3,757,876 | +| Bytecode Single Opcode (Extcodehash) | 1,000,000 | 1,108,950 | 154,721 | 154.72 | 2,935,364 | 2,934,177.3 | 2,927,556 | +| Bytecode Single Opcode (Extcodesize) | 1,000,000 | 1,108,950 | 156,739 | 156.74 | 3,683,744 | 3,683,080.3 | 3,680,816 | +| Bytecode Single Opcode (Staticcall) | 1,000,000 | 1,108,950 | 150,865 | 150.87 | 730,124 | 720,745.1 | 679,372 | +| Create (0Bytes, Create2) | 1,000,000 | 1,108,950 | 98,187 | 98.19 | 2,584,036 | 2,581,876.3 | 2,573,300 | +| Create (0Bytes, Create) | 1,000,000 | 1,108,950 | 96,428 | 96.43 | 618,404 | 607,815.0 | 588,148 | +| Create (0Bytes, Create2) | 1,000,000 | 1,108,950 | 96,219 | 96.22 | 3,766,652 | 3,765,188 | 3,763,724 | +| Create (0Bytes, Create) | 1,000,000 | 1,108,950 | 95,278 | 95.28 | 3,495,480 | 3,493,903.4 | 3,488,648 | +| Create (0.25X Max Code, Zero Data, Create2) | 1,000,000 | 1,108,950 | 95,797 | 95.80 | 977,560 | 958,236.6 | 925,832 | +| Create (0.25X Max Code, Zero Data, Create) | 1,000,000 | 1,108,950 | 98,008 | 98.01 | 3,646,696 | 3,646,696 | 3,646,696 | +| Create (0.25X Max Code, Create2) | 1,000,000 | 1,108,950 | 100,662 | 100.66 | 1,264,132 | 1,238,737.4 | 1,214,356 | +| Create (0.25X Max Code, Create) | 1,000,000 | 1,108,950 | 95,556 | 95.56 | 2,985,132 | 2,984,031.7 | 2,977,324 | +| Create (0.50X Max Code Size With Non, Zero Data, Create2) | 1,000,000 | 1,108,950 | 93,983 | 93.98 | 3,677,892 | 3,677,892 | 3,677,892 | +| Create (0.50X Max Code Size With Non, Zero Data, Create) | 1,000,000 | 1,108,950 | 92,812 | 92.81 | 3,751,056 | 3,749,989.6 | 3,747,152 | +| Create (0.50X Max Code Size With Zero Data, Create2) | 1,000,000 | 1,108,950 | 96,770 | 96.77 | 3,190,068 | 3,190,068 | 3,190,068 | +| Create (0.50X Max Code Size With Zero Data, Create) | 1,000,000 | 1,108,950 | 95,488 | 95.49 | 2,827,056 | 2,823,059.9 | 2,821,200 | +| Create (0.75X Max Code Size With Non, Zero Data, Create2) | 1,000,000 | 1,108,950 | 97,773 | 97.77 | 2,004,300 | 1,979,671.6 | 1,951,596 | +| Create (0.75X Max Code Size With Non, Zero Data, Create) | 1,000,000 | 1,108,950 | 96,519 | 96.52 | 3,486,696 | 3,485,171 | 3,484,744 | +| Create (0.75X Max Code Size With Zero Data, Create2) | 1,000,000 | 1,108,950 | 98,018 | 98.02 | 2,757,760 | 2,754,550.0 | 2,748,000 | +| Create (0.75X Max Code Size With Zero Data, Create) | 1,000,000 | 1,108,950 | 95,734 | 95.73 | 2,972,448 | 2,971,525.2 | 2,970,496 | +| Create (Max Code, Zero Data, Create2) | 1,000,000 | 1,108,950 | 95,036 | 95.04 | 3,736,424 | 3,736,424 | 3,736,424 | +| Create (Max Code, Zero Data, Create) | 1,000,000 | 1,108,950 | 97,444 | 97.44 | 2,774,352 | 2,772,121.1 | 2,768,496 | +| Create (Max Code, Create2) | 1,000,000 | 1,108,950 | 94,890 | 94.89 | 3,651,576 | 3,651,576 | 3,651,576 | +| Create (Max Code, Create) | 1,000,000 | 1,108,950 | 94,063 | 94.06 | 3,584,264 | 3,584,264 | 3,583,288 | +| Creates Collisions (Create2) | 1,000,000 | 1,108,950 | 97,284 | 97.28 | 3,640,844 | 3,640,844 | 3,640,844 | +| Creates Collisions (Create) | 1,000,000 | 1,108,950 | 95,624 | 95.62 | 3,673,988 | 3,673,788.4 | 3,672,036 | +| Initcode Jumpdest Analysis (00) | 1,000,000 | 1,108,950 | 97,597 | 97.60 | 3,352,052 | 3,352,052 | 3,352,052 | +| Initcode Jumpdest Analysis (5B) | 1,000,000 | 1,108,950 | 97,132 | 97.13 | 3,766,644 | 3,766,644 | 3,766,644 | +| Initcode Jumpdest Analysis (605B5B) | 1,000,000 | 1,108,950 | 97,050 | 97.05 | 1,125,908 | 1,105,714.3 | 1,078,084 | +| Initcode Jumpdest Analysis (605B) | 1,000,000 | 1,108,950 | 98,929 | 98.93 | 3,547,192 | 3,546,516.3 | 3,544,264 | +| Initcode Jumpdest Analysis (615B5B5B) | 1,000,000 | 1,108,950 | 98,091 | 98.09 | 1,078,084 | 1,055,305.3 | 1,026,356 | +| Initcode Jumpdest Analysis (615B5B) | 1,000,000 | 1,108,950 | 96,621 | 96.62 | 3,723,736 | 3,723,515.0 | 3,722,760 | +| Amortized Bn128 Pairings | 1,000,000 | 1,108,950 | 149,369 | 149.37 | 3,155,912 | 3,155,351.1 | 3,153,960 | +| Empty Block | 0 | 1,108,950 | 93,997 | 94.00 | 2,688,464 | 2,680,070.4 | 2,669,920 | +| Binop Simple (Add) | 1,000,000 | 1,108,950 | 104,224 | 104.22 | 3,629,140 | 3,629,140 | 3,629,140 | +| Binop Simple (And) | 1,000,000 | 1,108,950 | 99,596 | 99.60 | 3,367,660 | 3,366,701.1 | 3,365,708 | +| Binop Simple (Byte) | 1,000,000 | 1,108,950 | 101,363 | 101.36 | 3,799,812 | 3,799,010.3 | 3,796,884 | +| Binop Simple (Div, 0) | 1,000,000 | 1,108,950 | 107,334 | 107.33 | 3,685,696 | 3,685,696 | 3,685,696 | +| Binop Simple (Div, 1) | 1,000,000 | 1,108,950 | 106,877 | 106.88 | 3,496,448 | 3,496,448 | 3,496,448 | +| Binop Simple (Eq) | 1,000,000 | 1,108,950 | 103,376 | 103.38 | 2,465,944 | 2,455,880.4 | 2,436,664 | +| Binop Simple (Exp) | 1,000,000 | 1,108,950 | 109,100 | 109.10 | 2,990,984 | 2,990,757.4 | 2,985,128 | +| Binop Simple (Gt) | 1,000,000 | 1,108,950 | 99,293 | 99.29 | 3,567,688 | 3,566,583.1 | 3,563,784 | +| Binop Simple (Lt) | 1,000,000 | 1,108,950 | 97,189 | 97.19 | 3,785,184 | 3,785,184 | 3,784,208 | +| Binop Simple (Mod) | 1,000,000 | 1,108,950 | 98,559 | 98.56 | 3,572,556 | 3,572,556 | 3,572,556 | +| Binop Simple (Mul) | 1,000,000 | 1,108,950 | 106,491 | 106.49 | 3,425,228 | 3,424,543.1 | 3,424,252 | +| Binop Simple (Or) | 1,000,000 | 1,108,950 | 101,776 | 101.78 | 3,798,836 | 3,798,551.3 | 3,797,860 | +| Binop Simple (Sar) | 1,000,000 | 1,108,950 | 102,196 | 102.20 | 3,285,700 | 3,285,670.9 | 3,284,724 | +| Binop Simple (Sdiv, 0) | 1,000,000 | 1,108,950 | 115,241 | 115.24 | 3,693,504 | 3,693,504 | 3,693,504 | +| Binop Simple (Sdiv, 1) | 1,000,000 | 1,108,950 | 113,577 | 113.58 | 1,802,272 | 1,779,405.7 | 1,755,424 | +| Binop Simple (Sgt) | 1,000,000 | 1,108,950 | 101,411 | 101.41 | 758,576 | 738,728 | 705,872 | +| Binop Simple (Shl) | 1,000,000 | 1,108,950 | 98,316 | 98.32 | 3,774,452 | 3,774,248.7 | 3,772,500 | +| Binop Simple (Shr) | 1,000,000 | 1,108,950 | 102,087 | 102.09 | 3,739,352 | 3,737,712.3 | 3,737,400 | +| Binop Simple (Signextend) | 1,000,000 | 1,108,950 | 104,265 | 104.27 | 3,692,528 | 3,692,528 | 3,692,528 | +| Binop Simple (Slt) | 1,000,000 | 1,108,950 | 98,344 | 98.34 | 3,465,240 | 3,464,328 | 3,463,288 | +| Binop Simple (Smod) | 1,000,000 | 1,108,950 | 103,403 | 103.40 | 3,811,516 | 3,811,152.4 | 3,809,564 | +| Binop Simple (Sub) | 1,000,000 | 1,108,950 | 100,020 | 100.02 | 3,751,056 | 3,751,056 | 3,751,056 | +| Binop Simple (Xor) | 1,000,000 | 1,108,950 | 100,571 | 100.57 | 3,513,032 | 3,511,829.4 | 3,511,080 | +| Blobhash (No Blobs) | 1,000,000 | 1,108,950 | 100,459 | 100.46 | 2,944,148 | 2,941,984.5 | 2,935,364 | +| Blobhash (One Blob And Accessed) | 1,000,000 | 1,108,950 | 102,400 | 102.40 | 1,346,480 | 1,326,003.7 | 1,291,824 | +| Blobhash (One Blob But Access Non, Existent Index) | 1,000,000 | 1,108,950 | 100,151 | 100.15 | 3,774,448 | 3,774,448 | 3,773,472 | +| Blobhash (Six Blobs, Access Latest) | 1,000,000 | 1,108,950 | 104,115 | 104.11 | 2,561,588 | 2,555,095.5 | 2,544,996 | +| Calldataload (Empty) | 1,000,000 | 1,108,950 | 105,170 | 105.17 | 3,514,984 | 3,514,984 | 3,514,008 | +| Calldataload (One, Loop) | 1,000,000 | 1,108,950 | 104,253 | 104.25 | 3,661,308 | 3,661,308 | 3,660,332 | +| Calldataload (Zero, Loop) | 1,000,000 | 1,108,950 | 103,935 | 103.94 | 3,068,076 | 3,066,444 | 3,064,172 | +| Calldatasize (Calldata Length 0) | 1,000,000 | 1,108,950 | 96,321 | 96.32 | 3,811,516 | 3,811,516 | 3,811,516 | +| Calldatasize (Calldata Length 10000) | 1,000,000 | 1,108,950 | 99,458 | 99.46 | 3,809,564 | 3,809,564 | 3,809,564 | +| Calldatasize (Calldata Length 1000) | 1,000,000 | 1,108,950 | 99,127 | 99.13 | 3,141,272 | 3,140,196.7 | 3,138,344 | +| Callvalue (From Origin False, Non Zero Value False) | 1,000,000 | 1,108,950 | 102,166 | 102.17 | 3,635,968 | 3,635,968 | 3,635,968 | +| Callvalue (From Origin False, Non Zero Value True) | 1,000,000 | 1,108,950 | 100,829 | 100.83 | 3,810,540 | 3,809,763.2 | 3,807,612 | +| Callvalue (From Origin True, Non Zero Value False) | 1,000,000 | 1,108,950 | 99,025 | 99.03 | 3,757,868 | 3,757,779.3 | 3,756,892 | +| Callvalue (From Origin True, Non Zero Value True) | 1,000,000 | 1,108,950 | 99,844 | 99.84 | 3,754,956 | 3,754,090.2 | 3,753,004 | +| Dup (Dup10) | 1,000,000 | 1,108,950 | 99,260 | 99.26 | 3,576,456 | 3,576,349.5 | 3,575,480 | +| Dup (Dup11) | 1,000,000 | 1,108,950 | 97,749 | 97.75 | 3,207,632 | 3,207,595.9 | 3,202,752 | +| Dup (Dup12) | 1,000,000 | 1,108,950 | 94,138 | 94.14 | 679,372 | 674,154.7 | 656,924 | +| Dup (Dup13) | 1,000,000 | 1,108,950 | 99,102 | 99.10 | 3,184,216 | 3,184,109.2 | 3,183,240 | +| Dup (Dup14) | 1,000,000 | 1,108,950 | 98,683 | 98.68 | 3,646,696 | 3,646,457.4 | 3,641,816 | +| Dup (Dup15) | 1,000,000 | 1,108,950 | 101,625 | 101.62 | 2,505,956 | 2,499,263.4 | 2,491,316 | +| Dup (Dup16) | 1,000,000 | 1,108,950 | 97,754 | 97.75 | 3,745,208 | 3,745,208 | 3,745,208 | +| Dup (Dup1) | 1,000,000 | 1,108,950 | 99,958 | 99.96 | 3,583,288 | 3,580,287.7 | 3,578,408 | +| Dup (Dup2) | 1,000,000 | 1,108,950 | 101,861 | 101.86 | 3,664,232 | 3,664,232 | 3,663,256 | +| Dup (Dup3) | 1,000,000 | 1,108,950 | 98,834 | 98.83 | 3,767,628 | 3,767,628 | 3,767,628 | +| Dup (Dup4) | 1,000,000 | 1,108,950 | 99,509 | 99.51 | 3,150,056 | 3,149,061.6 | 3,144,200 | +| Dup (Dup5) | 1,000,000 | 1,108,950 | 97,012 | 97.01 | 3,429,132 | 3,428,673.9 | 3,426,204 | +| Dup (Dup6) | 1,000,000 | 1,108,950 | 98,972 | 98.97 | 2,700,176 | 2,699,200 | 2,689,440 | +| Dup (Dup7) | 1,000,000 | 1,108,950 | 98,627 | 98.63 | 2,935,364 | 2,935,364 | 2,935,364 | +| Dup (Dup8) | 1,000,000 | 1,108,950 | 98,540 | 98.54 | 3,573,536 | 3,572,639.7 | 3,571,584 | +| Dup (Dup9) | 1,000,000 | 1,108,950 | 101,744 | 101.74 | 2,600,624 | 2,596,813.8 | 2,583,056 | +| Jumpdests | 1,000,000 | 1,108,950 | 99,458 | 99.46 | 3,656,440 | 3,656,416.8 | 3,655,464 | +| Jumpi Fallthrough | 1,000,000 | 1,108,950 | 101,650 | 101.65 | 1,857,904 | 1,837,928.5 | 1,802,272 | +| Jumpis | 1,000,000 | 1,108,950 | 97,742 | 97.74 | 3,350,100 | 3,350,100 | 3,350,100 | +| Jumps | 1,000,000 | 1,108,950 | 96,052 | 96.05 | 3,799,812 | 3,799,812 | 3,798,836 | +| Keccak | 1,000,000 | 1,108,950 | 127,737 | 127.74 | 3,784,204 | 3,784,204 | 3,784,204 | +| Memory Access (Small Mem, Uninit Offset, Off 0, Mload) | 1,000,000 | 1,108,950 | 98,750 | 98.75 | 2,900,228 | 2,898,327.4 | 2,893,396 | +| Memory Access (Small Mem, Uninit Offset, Off 0, Mstore8) | 1,000,000 | 1,108,950 | 101,575 | 101.58 | 2,064,812 | 2,036,210.2 | 2,004,300 | +| Memory Access (Small Mem, Uninit Offset, Off 0, Mstore) | 1,000,000 | 1,108,950 | 103,383 | 103.38 | 1,172,756 | 1,153,906.5 | 1,126,884 | +| Memory Access (Small Mem, Uninit Offset, Off 1, Mload) | 1,000,000 | 1,108,950 | 100,818 | 100.82 | 3,350,100 | 3,349,124 | 3,346,196 | +| Memory Access (Small Mem, Uninit Offset, Off 1, Mstore8) | 1,000,000 | 1,108,950 | 101,743 | 101.74 | 3,792,984 | 3,792,984 | 3,792,984 | +| Memory Access (Small Mem, Uninit Offset, Off 1, Mstore) | 1,000,000 | 1,108,950 | 103,776 | 103.78 | 3,629,140 | 3,629,140 | 3,629,140 | +| Memory Access (Small Mem, Uninit Offset, Off 31, Mload) | 1,000,000 | 1,108,950 | 99,266 | 99.27 | 3,560,856 | 3,560,387.5 | 3,559,880 | +| Memory Access (Small Mem, Uninit Offset, Off 31, Mstore8) | 1,000,000 | 1,108,950 | 100,752 | 100.75 | 2,326,376 | 2,312,450.1 | 2,292,216 | +| Memory Access (Small Mem, Uninit Offset, Off 31, Mstore) | 1,000,000 | 1,108,950 | 103,095 | 103.09 | 3,027,092 | 3,027,044 | 3,019,284 | +| Memory Access (Small Mem, Init Offset, Off 0, Mload) | 1,000,000 | 1,108,950 | 103,058 | 103.06 | 2,660,160 | 2,658,815.7 | 2,651,376 | +| Memory Access (Small Mem, Init Offset, Off 0, Mstore8) | 1,000,000 | 1,108,950 | 99,125 | 99.12 | 3,535,480 | 3,535,059.0 | 3,534,504 | +| Memory Access (Small Mem, Init Offset, Off 0, Mstore) | 1,000,000 | 1,108,950 | 100,714 | 100.71 | 3,757,876 | 3,757,876 | 3,757,876 | +| Memory Access (Small Mem, Init Offset, Off 1, Mload) | 1,000,000 | 1,108,950 | 98,086 | 98.09 | 3,700,328 | 3,700,310.8 | 3,699,352 | +| Memory Access (Small Mem, Init Offset, Off 1, Mstore8) | 1,000,000 | 1,108,950 | 101,865 | 101.86 | 3,303,268 | 3,299,396.5 | 3,292,532 | +| Memory Access (Small Mem, Init Offset, Off 1, Mstore) | 1,000,000 | 1,108,950 | 103,514 | 103.51 | 3,453,528 | 3,453,528 | 3,453,528 | +| Memory Access (Small Mem, Init Offset, Off 31, Mload) | 1,000,000 | 1,108,950 | 101,125 | 101.12 | 3,783,228 | 3,783,228 | 3,783,228 | +| Memory Access (Small Mem, Init Offset, Off 31, Mstore8) | 1,000,000 | 1,108,950 | 98,876 | 98.88 | 3,799,812 | 3,799,812 | 3,799,812 | +| Memory Access (Small Mem, Init Offset, Off 31, Mstore) | 1,000,000 | 1,108,950 | 102,873 | 102.87 | 3,634,992 | 3,634,992 | 3,634,992 | +| Memory Access (Big Mem, Uninit Offset, Off 0, Mload) | 1,000,000 | 1,108,950 | 100,552 | 100.55 | 3,723,736 | 3,723,049.2 | 3,722,760 | +| Memory Access (Big Mem, Uninit Offset, Off 0, Mstore8) | 1,000,000 | 1,108,950 | 100,371 | 100.37 | 2,230,728 | 2,215,152.7 | 2,192,664 | +| Memory Access (Big Mem, Uninit Offset, Off 0, Mstore) | 1,000,000 | 1,108,950 | 101,981 | 101.98 | 2,880,708 | 2,879,406.7 | 2,872,900 | +| Memory Access (Big Mem, Uninit Offset, Off 1, Mload) | 1,000,000 | 1,108,950 | 99,562 | 99.56 | 3,359,856 | 3,359,660.8 | 3,357,904 | +| Memory Access (Big Mem, Uninit Offset, Off 1, Mstore8) | 1,000,000 | 1,108,950 | 98,496 | 98.50 | 3,649,624 | 3,649,579.6 | 3,648,648 | +| Memory Access (Big Mem, Uninit Offset, Off 1, Mstore) | 1,000,000 | 1,108,950 | 102,195 | 102.19 | 2,970,500 | 2,969,648.2 | 2,966,596 | +| Memory Access (Big Mem, Uninit Offset, Off 31, Mload) | 1,000,000 | 1,108,950 | 101,220 | 101.22 | 2,747,024 | 2,747,024 | 2,746,048 | +| Memory Access (Big Mem, Uninit Offset, Off 31, Mstore8) | 1,000,000 | 1,108,950 | 97,948 | 97.95 | 3,811,516 | 3,811,495.9 | 3,811,516 | +| Memory Access (Big Mem, Uninit Offset, Off 31, Mstore) | 1,000,000 | 1,108,950 | 102,212 | 102.21 | 3,328,632 | 3,328,144 | 3,323,752 | +| Memory Access (Big Mem, Init Offset, Off 0, Mload) | 1,000,000 | 1,108,950 | 102,877 | 102.88 | 879,964 | 863,969.7 | 831,164 | +| Memory Access (Big Mem, Init Offset, Off 0, Mstore8) | 1,000,000 | 1,108,950 | 98,868 | 98.87 | 3,576,456 | 3,576,456 | 3,576,456 | +| Memory Access (Big Mem, Init Offset, Off 0, Mstore) | 1,000,000 | 1,108,950 | 101,939 | 101.94 | 3,812,484 | 3,812,407.8 | 3,811,508 | +| Memory Access (Big Mem, Init Offset, Off 1, Mload) | 1,000,000 | 1,108,950 | 99,652 | 99.65 | 3,474,996 | 3,474,996 | 3,466,212 | +| Memory Access (Big Mem, Init Offset, Off 1, Mstore8) | 1,000,000 | 1,108,950 | 104,774 | 104.77 | 912,780 | 902,114.1 | 870,812 | +| Memory Access (Big Mem, Init Offset, Off 1, Mstore) | 1,000,000 | 1,108,950 | 103,884 | 103.88 | 3,612,556 | 3,612,556 | 3,612,556 | +| Memory Access (Big Mem, Init Offset, Off 31, Mload) | 1,000,000 | 1,108,950 | 99,630 | 99.63 | 3,269,112 | 3,268,972.6 | 3,266,184 | +| Memory Access (Big Mem, Init Offset, Off 31, Mstore8) | 1,000,000 | 1,108,950 | 98,036 | 98.04 | 3,314,000 | 3,313,717.5 | 3,313,024 | +| Memory Access (Big Mem, Init Offset, Off 31, Mstore) | 1,000,000 | 1,108,950 | 103,543 | 103.54 | 2,873,884 | 2,872,332.9 | 2,865,100 | +| Mod (Op Mod, Mod Bits 127) | 1,000,000 | 1,108,950 | 108,978 | 108.98 | 3,719,832 | 3,719,832 | 3,719,832 | +| Mod (Op Mod, Mod Bits 191) | 1,000,000 | 1,108,950 | 108,325 | 108.33 | 3,764,700 | 3,764,700 | 3,764,700 | +| Mod (Op Mod, Mod Bits 255) | 1,000,000 | 1,108,950 | 107,679 | 107.68 | 3,704,228 | 3,704,228 | 3,704,228 | +| Mod (Op Mod, Mod Bits 63) | 1,000,000 | 1,108,950 | 102,643 | 102.64 | 2,887,540 | 2,885,451.0 | 2,880,708 | +| Mod (Op Smod, Mod Bits 127) | 1,000,000 | 1,108,950 | 108,255 | 108.25 | 3,658,380 | 3,658,380 | 3,657,404 | +| Mod (Op Smod, Mod Bits 191) | 1,000,000 | 1,108,950 | 112,293 | 112.29 | 1,399,184 | 1,376,570.1 | 1,346,480 | +| Mod (Op Smod, Mod Bits 255) | 1,000,000 | 1,108,950 | 108,777 | 108.78 | 2,903,156 | 2,901,811.3 | 2,901,204 | +| Mod (Op Smod, Mod Bits 63) | 1,000,000 | 1,108,950 | 105,822 | 105.82 | 3,786,152 | 3,784,380.7 | 3,784,200 | +| Modarith (Op Addmod, Mod Bits 127) | 1,000,000 | 1,108,950 | 103,439 | 103.44 | 3,448,652 | 3,448,489.3 | 3,443,772 | +| Modarith (Op Addmod, Mod Bits 191) | 1,000,000 | 1,108,950 | 105,184 | 105.18 | 3,476,944 | 3,476,224 | 3,474,992 | +| Modarith (Op Addmod, Mod Bits 255) | 1,000,000 | 1,108,950 | 106,941 | 106.94 | 2,809,488 | 2,808,146 | 2,800,704 | +| Modarith (Op Addmod, Mod Bits 63) | 1,000,000 | 1,108,950 | 103,764 | 103.76 | 3,478,896 | 3,476,875.5 | 3,475,968 | +| Modarith (Op Mulmod, Mod Bits 127) | 1,000,000 | 1,108,950 | 111,760 | 111.76 | 2,626,000 | 2,623,204.3 | 2,614,288 | +| Modarith (Op Mulmod, Mod Bits 191) | 1,000,000 | 1,108,950 | 114,018 | 114.02 | 3,497,428 | 3,497,248.7 | 3,495,476 | +| Modarith (Op Mulmod, Mod Bits 255) | 1,000,000 | 1,108,950 | 116,108 | 116.11 | 1,455,792 | 1,430,050 | 1,400,160 | +| Modarith (Op Mulmod, Mod Bits 63) | 1,000,000 | 1,108,950 | 110,142 | 110.14 | 2,799,728 | 2,796,782.6 | 2,789,968 | +| Modexp (Mod 1045 Gas Base Heavy) | 1,000,000 | 1,108,950 | 218,862 | 218.86 | 3,744,232 | 3,744,232 | 3,744,232 | +| Modexp (Mod 1360 Gas Balanced) | 1,000,000 | 1,108,950 | 131,237 | 131.24 | 3,273,988 | 3,273,988 | 3,273,988 | +| Modexp (Mod 400 Gas Exp Heavy) | 1,000,000 | 1,108,950 | 140,942 | 140.94 | 3,697,408 | 3,697,053.0 | 3,696,432 | +| Modexp (Mod 408 Gas Balanced) | 1,000,000 | 1,108,950 | 123,435 | 123.44 | 3,569,632 | 3,568,688 | 3,567,680 | +| Modexp (Mod 408 Gas Base Heavy) | 1,000,000 | 1,108,950 | 210,095 | 210.09 | 3,795,912 | 3,794,291.8 | 3,792,984 | +| Modexp (Mod 600 As Balanced) | 1,000,000 | 1,108,950 | 126,394 | 126.39 | 3,239,836 | 3,238,002.3 | 3,233,980 | +| Modexp (Mod 600 Gas Exp Heavy) | 1,000,000 | 1,108,950 | 143,124 | 143.12 | 2,908,036 | 2,907,245.3 | 2,904,132 | +| Modexp (Mod 616 Gas Base Heavy) | 1,000,000 | 1,108,950 | 208,782 | 208.78 | 655,948 | 634,692.9 | 604,220 | +| Modexp (Mod 677 Gas Base Heavy) | 1,000,000 | 1,108,950 | 127,993 | 127.99 | 3,324,732 | 3,320,166.3 | 3,313,996 | +| Modexp (Mod 765 Gas Exp Heavy) | 1,000,000 | 1,108,950 | 135,393 | 135.39 | 3,784,204 | 3,784,204 | 3,782,252 | +| Modexp (Mod 767 Gas Balanced) | 1,000,000 | 1,108,950 | 129,891 | 129.89 | 1,074,792 | 1,050,102.0 | 1,014,280 | +| Modexp (Mod 800 Gas Base Heavy) | 1,000,000 | 1,108,950 | 218,500 | 218.50 | 3,630,116 | 3,630,116 | 3,629,140 | +| Modexp (Mod 800 Gas Exp Heavy) | 1,000,000 | 1,108,950 | 145,535 | 145.53 | 3,756,900 | 3,756,900 | 3,756,900 | +| Modexp (Mod 852 Gas Exp Heavy) | 1,000,000 | 1,108,950 | 143,119 | 143.12 | 3,783,228 | 3,783,228 | 3,783,228 | +| Modexp (Mod 867 Gas Base Heavy) | 1,000,000 | 1,108,950 | 218,486 | 218.49 | 3,604,752 | 3,604,059.6 | 3,600,848 | +| Modexp (Mod 996 Gas Balanced) | 1,000,000 | 1,108,950 | 125,849 | 125.85 | 3,608,656 | 3,608,504.6 | 3,605,728 | +| Modexp (Mod Even 1024B Exp 1024) | 1,000,000 | 1,108,950 | 95,916 | 95.92 | 3,729,592 | 3,729,041.9 | 3,724,712 | +| Modexp (Mod Even 128B Exp 1024) | 1,000,000 | 1,108,950 | 124,211 | 124.21 | 3,534,504 | 3,529,730.8 | 3,523,768 | +| Modexp (Mod Even 16B Exp 320) | 1,000,000 | 1,108,950 | 142,340 | 142.34 | 3,412,548 | 3,412,548 | 3,411,572 | +| Modexp (Mod Even 24B Exp 168) | 1,000,000 | 1,108,950 | 133,806 | 133.81 | 3,635,968 | 3,634,954.9 | 3,630,112 | +| Modexp (Mod Even 256B Exp 1024) | 1,000,000 | 1,108,950 | 117,254 | 117.25 | 3,717,880 | 3,717,880 | 3,716,904 | +| Modexp (Mod Even 32B Exp 256) | 1,000,000 | 1,108,950 | 134,214 | 134.21 | 2,651,376 | 2,644,443.5 | 2,626,000 | +| Modexp (Mod Even 32B Exp 40) | 1,000,000 | 1,108,950 | 124,268 | 124.27 | 3,811,516 | 3,811,516 | 3,811,516 | +| Modexp (Mod Even 32B Exp 96) | 1,000,000 | 1,108,950 | 130,351 | 130.35 | 3,716,904 | 3,715,887.3 | 3,714,952 | +| Modexp (Mod Even 512B Exp 1024) | 1,000,000 | 1,108,950 | 97,289 | 97.29 | 2,613,312 | 2,610,923.9 | 2,600,624 | +| Modexp (Mod Even 64B Exp 512) | 1,000,000 | 1,108,950 | 126,254 | 126.25 | 2,788,992 | 2,785,280 | 2,776,304 | +| Modexp (Mod Even 8B Exp 896) | 1,000,000 | 1,108,950 | 179,706 | 179.71 | 2,927,556 | 2,923,764.6 | 2,915,844 | +| Modexp (Mod Exp 208 Gas Balanced) | 1,000,000 | 1,108,950 | 124,213 | 124.21 | 3,588,164 | 3,587,903.7 | 3,586,212 | +| Modexp (Mod Exp 215 Gas Exp Heavy) | 1,000,000 | 1,108,950 | 169,601 | 169.60 | 3,677,892 | 3,677,577.2 | 3,676,916 | +| Modexp (Mod Exp 298 Gas Exp Heavy) | 1,000,000 | 1,108,950 | 174,889 | 174.89 | 3,563,784 | 3,563,784 | 3,561,832 | +| Modexp (Mod Min As Balanced) | 1,000,000 | 1,108,950 | 126,228 | 126.23 | 3,772,500 | 3,772,500 | 3,770,548 | +| Modexp (Mod Min As Base Heavy) | 1,000,000 | 1,108,950 | 186,584 | 186.58 | 3,411,576 | 3,408,109.5 | 3,394,984 | +| Modexp (Mod Min As Exp Heavy) | 1,000,000 | 1,108,950 | 168,544 | 168.54 | 3,622,308 | 3,622,308 | 3,622,308 | +| Modexp (Mod Odd 1024B Exp 1024) | 1,000,000 | 1,108,950 | 95,340 | 95.34 | 926,808 | 907,300.9 | 878,984 | +| Modexp (Mod Odd 128B Exp 1024) | 1,000,000 | 1,108,950 | 123,438 | 123.44 | 3,035,876 | 3,034,579.5 | 3,028,068 | +| Modexp (Mod Odd 256B Exp 1024) | 1,000,000 | 1,108,950 | 115,167 | 115.17 | 3,483,772 | 3,483,772 | 3,482,796 | +| Modexp (Mod Odd 32B Exp 256) | 1,000,000 | 1,108,950 | 132,271 | 132.27 | 1,569,008 | 1,542,081.9 | 1,504,592 | +| Modexp (Mod Odd 32B Exp 96) | 1,000,000 | 1,108,950 | 127,790 | 127.79 | 3,680,816 | 3,680,816 | 3,680,816 | +| Modexp (Mod Odd 32B Exp Cover Windows) | 1,000,000 | 1,108,950 | 122,439 | 122.44 | 3,420,352 | 3,420,352 | 3,420,352 | +| Modexp (Mod Odd 512B Exp 1024) | 1,000,000 | 1,108,950 | 97,417 | 97.42 | 3,523,768 | 3,520,994.1 | 3,518,888 | +| Modexp (Mod Odd 64B Exp 512) | 1,000,000 | 1,108,950 | 127,022 | 127.02 | 2,977,324 | 2,976,431.3 | 2,974,396 | +| Modexp (Mod Pawel 2) | 1,000,000 | 1,108,950 | 142,662 | 142.66 | 3,487,672 | 3,486,858.7 | 3,485,720 | +| Modexp (Mod Pawel 3) | 1,000,000 | 1,108,950 | 132,135 | 132.13 | 3,597,920 | 3,597,920 | 3,597,920 | +| Modexp (Mod Pawel 4) | 1,000,000 | 1,108,950 | 129,710 | 129.71 | 3,365,708 | 3,365,708 | 3,364,732 | +| Modexp (Mod Vul Common 1152N1) | 1,000,000 | 1,108,950 | 113,796 | 113.80 | 3,419,372 | 3,419,356.5 | 3,419,372 | +| Modexp (Mod Vul Common 1349N1) | 1,000,000 | 1,108,950 | 121,492 | 121.49 | 3,795,912 | 3,795,912 | 3,795,912 | +| Modexp (Mod Vul Common 1360N1) | 1,000,000 | 1,108,950 | 128,856 | 128.86 | 3,541,336 | 3,539,254.8 | 3,536,456 | +| Modexp (Mod Vul Common 1360N2) | 1,000,000 | 1,108,950 | 121,834 | 121.83 | 3,266,184 | 3,262,493.9 | 3,260,328 | +| Modexp (Mod Vul Common 200N1) | 1,000,000 | 1,108,950 | 114,084 | 114.08 | 3,289,604 | 3,288,872 | 3,285,700 | +| Modexp (Mod Vul Common 200N2) | 1,000,000 | 1,108,950 | 116,043 | 116.04 | 3,074,908 | 3,074,664 | 3,069,052 | +| Modexp (Mod Vul Common 200N3) | 1,000,000 | 1,108,950 | 117,198 | 117.20 | 3,617,432 | 3,617,432 | 3,617,432 | +| Modexp (Mod Vul Example 1) | 1,000,000 | 1,108,950 | 132,648 | 132.65 | 2,435,688 | 2,426,691.1 | 2,408,360 | +| Modexp (Mod Vul Example 2) | 1,000,000 | 1,108,950 | 131,874 | 131.87 | 2,847,548 | 2,844,019.4 | 2,838,764 | +| Modexp (Mod Vul Guido 1 Even) | 1,000,000 | 1,108,950 | 122,114 | 122.11 | 3,774,448 | 3,774,448 | 3,774,448 | +| Modexp (Mod Vul Guido 2 Even) | 1,000,000 | 1,108,950 | 136,306 | 136.31 | 3,273,992 | 3,273,764.7 | 3,273,016 | +| Modexp (Mod Vul Guido 3 Even) | 1,000,000 | 1,108,950 | 159,011 | 159.01 | 3,563,784 | 3,563,179.8 | 3,561,832 | +| Modexp (Mod Vul Marius 1 Even) | 1,000,000 | 1,108,950 | 133,332 | 133.33 | 3,364,736 | 3,364,069.1 | 3,358,880 | +| Modexp (Mod Vul Nagydani 1 Pow 0X10001) | 1,000,000 | 1,108,950 | 123,353 | 123.35 | 3,380,348 | 3,379,985.9 | 3,375,468 | +| Modexp (Mod Vul Nagydani 1 Qube) | 1,000,000 | 1,108,950 | 116,055 | 116.06 | 3,810,540 | 3,810,522.6 | 3,810,540 | +| Modexp (Mod Vul Nagydani 1 Square) | 1,000,000 | 1,108,950 | 113,823 | 113.82 | 1,232,292 | 1,208,110.8 | 1,172,756 | +| Modexp (Mod Vul Nagydani 2 Pow 0X10001) | 1,000,000 | 1,108,950 | 119,900 | 119.90 | 3,740,328 | 3,740,328 | 3,739,352 | +| Modexp (Mod Vul Nagydani 2 Qube) | 1,000,000 | 1,108,950 | 149,152 | 149.15 | 3,096,380 | 3,096,165.5 | 3,085,644 | +| Modexp (Mod Vul Nagydani 2 Square) | 1,000,000 | 1,108,950 | 143,048 | 143.05 | 3,712,024 | 3,711,915.6 | 3,711,048 | +| Modexp (Mod Vul Nagydani 3 Pow 0X10001) | 1,000,000 | 1,108,950 | 116,544 | 116.54 | 515,404 | 497,243.5 | 463,676 | +| Modexp (Mod Vul Nagydani 3 Qube) | 1,000,000 | 1,108,950 | 217,339 | 217.34 | 3,130,536 | 3,129,072 | 3,123,704 | +| Modexp (Mod Vul Nagydani 3 Square) | 1,000,000 | 1,108,950 | 210,609 | 210.61 | 3,593,044 | 3,592,230.7 | 3,590,116 | +| Modexp (Mod Vul Nagydani 4 Pow 0X10001) | 1,000,000 | 1,108,950 | 117,060 | 117.06 | 3,667,160 | 3,666,991.7 | 3,666,184 | +| Modexp (Mod Vul Nagydani 4 Qube) | 1,000,000 | 1,108,950 | 234,760 | 234.76 | 604,220 | 566,847.5 | 515,404 | +| Modexp (Mod Vul Nagydani 4 Square) | 1,000,000 | 1,108,950 | 225,157 | 225.16 | 3,054,420 | 3,054,076.6 | 3,050,516 | +| Modexp (Mod Vul Nagydani 5 Pow 0X10001) | 1,000,000 | 1,108,950 | 117,203 | 117.20 | 3,652,552 | 3,652,552 | 3,650,600 | +| Modexp (Mod Vul Nagydani 5 Qube) | 1,000,000 | 1,108,950 | 232,350 | 232.35 | 461,724 | 454,451.0 | 420,732 | +| Modexp (Mod Vul Nagydani 5 Square) | 1,000,000 | 1,108,950 | 224,922 | 224.92 | 2,722,624 | 2,714,768.4 | 2,701,152 | +| Modexp (Mod Vul Pawel 1 Exp Heavy) | 1,000,000 | 1,108,950 | 172,469 | 172.47 | 3,412,548 | 3,412,548 | 3,411,572 | +| Modexp (Mod Vul Pawel 2 Exp Heavy) | 1,000,000 | 1,108,950 | 137,450 | 137.45 | 3,614,508 | 3,614,238.8 | 3,612,556 | +| Modexp (Mod Vul Pawel 3 Exp Heavy) | 1,000,000 | 1,108,950 | 129,683 | 129.68 | 3,233,980 | 3,233,400.1 | 3,229,100 | +| Modexp (Mod Vul Pawel 4 Exp Heavy) | 1,000,000 | 1,108,950 | 126,770 | 126.77 | 3,741,304 | 3,741,304 | 3,740,328 | +| Msize (Mem Size 0) | 1,000,000 | 1,108,950 | 100,327 | 100.33 | 3,654,492 | 3,654,492 | 3,651,564 | +| Msize (Mem Size 1000000) | 1,000,000 | 1,108,950 | 98,507 | 98.51 | 3,799,808 | 3,799,808 | 3,799,808 | +| Msize (Mem Size 100000) | 1,000,000 | 1,108,950 | 102,263 | 102.26 | 3,247,640 | 3,245,937.7 | 3,241,784 | +| Msize (Mem Size 1000) | 1,000,000 | 1,108,950 | 100,931 | 100.93 | 3,661,304 | 3,661,304 | 3,661,304 | +| Msize (Mem Size 1) | 1,000,000 | 1,108,950 | 103,563 | 103.56 | 2,732,384 | 2,731,618.5 | 2,722,624 | +| Precompile Fixed Cost (Blake2F) | 1,000,000 | 1,108,950 | 121,994 | 121.99 | 420,732 | 372,765.4 | 56,684 | +| Precompile Fixed Cost (Bls12 Fp To G1) | 1,000,000 | 1,108,950 | 148,603 | 148.60 | 3,757,876 | 3,757,851.0 | 3,756,900 | +| Precompile Fixed Cost (Bls12 Fp To G2) | 1,000,000 | 1,108,950 | 134,461 | 134.46 | 3,758,844 | 3,758,844 | 3,758,844 | +| Precompile Fixed Cost (Bls12 G1Add) | 1,000,000 | 1,108,950 | 128,818 | 128.82 | 3,283,748 | 3,281,074.0 | 3,274,964 | +| Precompile Fixed Cost (Bls12 G1Msm) | 1,000,000 | 1,108,950 | 118,943 | 118.94 | 3,420,348 | 3,419,860 | 3,418,396 | +| Precompile Fixed Cost (Bls12 G2Add) | 1,000,000 | 1,108,950 | 130,580 | 130.58 | 3,743,256 | 3,742,953.1 | 3,740,328 | +| Precompile Fixed Cost (Bls12 G2Msm) | 1,000,000 | 1,108,950 | 113,223 | 113.22 | 3,138,344 | 3,138,344 | 3,138,344 | +| Precompile Fixed Cost (Bls12 Pairing Check) | 1,000,000 | 1,108,950 | 140,886 | 140.89 | 3,084,668 | 3,081,426.7 | 3,075,884 | +| Precompile Fixed Cost (Bn128 Add) | 1,000,000 | 1,108,950 | 126,688 | 126.69 | 3,551,096 | 3,550,396.8 | 3,549,144 | +| Precompile Fixed Cost (Bn128 Add 1 2) | 1,000,000 | 1,108,950 | 131,907 | 131.91 | 3,609,632 | 3,609,632 | 3,609,632 | +| Precompile Fixed Cost (Bn128 Add Infinities) | 1,000,000 | 1,108,950 | 98,924 | 98.92 | 3,685,696 | 3,685,696 | 3,685,696 | +| Precompile Fixed Cost (Bn128 Mul) | 1,000,000 | 1,108,950 | 156,262 | 156.26 | 3,331,556 | 3,331,556 | 3,331,556 | +| Precompile Fixed Cost (Bn128 Mul 1 2 2 Scalar) | 1,000,000 | 1,108,950 | 96,836 | 96.84 | 3,610,608 | 3,610,570.5 | 3,608,656 | +| Precompile Fixed Cost (Bn128 Mul 1 2 32 Byte Scalar) | 1,000,000 | 1,108,950 | 150,443 | 150.44 | 3,753,008 | 3,752,599.1 | 3,751,056 | +| Precompile Fixed Cost (Bn128 Mul 32 Byte Coord And 2 Scalar) | 1,000,000 | 1,108,950 | 98,145 | 98.14 | 3,008,548 | 3,006,500.3 | 2,999,764 | +| Precompile Fixed Cost (Bn128 Mul 32 Byte Coord And Scalar) | 1,000,000 | 1,108,950 | 151,072 | 151.07 | 3,788,104 | 3,788,104 | 3,788,104 | +| Precompile Fixed Cost (Bn128 Mul Infinities 2 Scalar) | 1,000,000 | 1,108,950 | 96,382 | 96.38 | 3,639,868 | 3,639,391.9 | 3,638,892 | +| Precompile Fixed Cost (Bn128 Mul Infinities 32 Byte Scalar) | 1,000,000 | 1,108,950 | 114,139 | 114.14 | 3,453,528 | 3,453,048.3 | 3,451,576 | +| Precompile Fixed Cost (Bn128 One Pairing) | 1,000,000 | 1,108,950 | 149,409 | 149.41 | 2,953,908 | 2,953,908 | 2,949,028 | +| Precompile Fixed Cost (Bn128 Two Pairings) | 1,000,000 | 1,108,950 | 150,907 | 150.91 | 3,720,808 | 3,720,808 | 3,720,808 | +| Precompile Fixed Cost (Bn128 Two Pairings Empty) | 1,000,000 | 1,108,950 | 98,679 | 98.68 | 3,666,184 | 3,666,184 | 3,665,208 | +| Precompile Fixed Cost (Ecrecover) | 1,000,000 | 1,108,950 | 253,065 | 253.06 | 3,382,300 | 3,381,331.2 | 3,380,348 | +| Precompile Fixed Cost (Point Evaluation) | 1,000,000 | 1,108,950 | 221,298 | 221.30 | 2,837,788 | 2,835,451.3 | 2,826,076 | +| Precompile Only Data Input (Identity) | 1,000,000 | 1,108,950 | 96,313 | 96.31 | 3,331,560 | 3,330,601.1 | 3,328,632 | +| Precompile Only Data Input (Ripemd, 160) | 1,000,000 | 1,108,950 | 96,845 | 96.84 | 2,407,384 | 2,399,576 | 2,382,984 | +| Precompile Only Data Input (Sha2, 256) | 1,000,000 | 1,108,950 | 107,345 | 107.34 | 2,292,216 | 2,269,851.1 | 2,232,680 | +| Push (Push0) | 1,000,000 | 1,108,950 | 102,304 | 102.30 | 3,474,996 | 3,474,996 | 3,474,996 | +| Push (Push10) | 1,000,000 | 1,108,950 | 97,989 | 97.99 | 3,681,796 | 3,681,736.2 | 3,678,868 | +| Push (Push11) | 1,000,000 | 1,108,950 | 99,918 | 99.92 | 3,604,752 | 3,604,752 | 3,604,752 | +| Push (Push12) | 1,000,000 | 1,108,950 | 96,742 | 96.74 | 3,736,424 | 3,736,424 | 3,734,472 | +| Push (Push13) | 1,000,000 | 1,108,950 | 98,452 | 98.45 | 2,947,076 | 2,946,689.0 | 2,945,124 | +| Push (Push14) | 1,000,000 | 1,108,950 | 97,478 | 97.48 | 3,440,844 | 3,440,007.4 | 3,435,964 | +| Push (Push15) | 1,000,000 | 1,108,950 | 98,183 | 98.18 | 3,450,600 | 3,450,547.7 | 3,449,624 | +| Push (Push16) | 1,000,000 | 1,108,950 | 97,217 | 97.22 | 3,744,232 | 3,744,232 | 3,744,232 | +| Push (Push17) | 1,000,000 | 1,108,950 | 97,691 | 97.69 | 3,587,192 | 3,587,192 | 3,586,216 | +| Push (Push18) | 1,000,000 | 1,108,950 | 98,043 | 98.04 | 3,622,308 | 3,621,673.6 | 3,621,332 | +| Push (Push19) | 1,000,000 | 1,108,950 | 96,503 | 96.50 | 3,622,308 | 3,622,308 | 3,622,308 | +| Push (Push1) | 1,000,000 | 1,108,950 | 99,900 | 99.90 | 3,201,780 | 3,200,173.4 | 3,191,044 | +| Push (Push20) | 1,000,000 | 1,108,950 | 100,372 | 100.37 | 705,876 | 686,093.4 | 652,196 | +| Push (Push21) | 1,000,000 | 1,108,950 | 99,949 | 99.95 | 2,191,688 | 2,175,892.7 | 2,146,792 | +| Push (Push22) | 1,000,000 | 1,108,950 | 100,035 | 100.03 | 2,768,496 | 2,766,134.1 | 2,757,760 | +| Push (Push23) | 1,000,000 | 1,108,950 | 101,910 | 101.91 | 3,435,964 | 3,435,964 | 3,434,988 | +| Push (Push24) | 1,000,000 | 1,108,950 | 97,966 | 97.97 | 3,812,484 | 3,812,484 | 3,811,508 | +| Push (Push25) | 1,000,000 | 1,108,950 | 100,067 | 100.07 | 3,631,092 | 3,630,900.2 | 3,630,116 | +| Push (Push26) | 1,000,000 | 1,108,950 | 98,539 | 98.54 | 3,799,808 | 3,799,808 | 3,799,808 | +| Push (Push27) | 1,000,000 | 1,108,950 | 102,208 | 102.21 | 815,184 | 797,849.9 | 758,576 | +| Push (Push28) | 1,000,000 | 1,108,950 | 100,119 | 100.12 | 3,719,832 | 3,719,832 | 3,719,832 | +| Push (Push29) | 1,000,000 | 1,108,950 | 101,678 | 101.68 | 2,863,148 | 2,862,626.3 | 2,857,292 | +| Push (Push2) | 1,000,000 | 1,108,950 | 100,830 | 100.83 | 3,095,400 | 3,095,400 | 3,095,400 | +| Push (Push30) | 1,000,000 | 1,108,950 | 100,352 | 100.35 | 610,228 | 569,500.6 | 261,796 | +| Push (Push31) | 1,000,000 | 1,108,950 | 102,442 | 102.44 | 3,677,892 | 3,676,832.3 | 3,674,964 | +| Push (Push32) | 1,000,000 | 1,108,950 | 100,152 | 100.15 | 3,739,352 | 3,739,352 | 3,739,352 | +| Push (Push3) | 1,000,000 | 1,108,950 | 100,225 | 100.22 | 3,334,484 | 3,333,625.1 | 3,330,580 | +| Push (Push4) | 1,000,000 | 1,108,950 | 98,191 | 98.19 | 3,568,660 | 3,568,660 | 3,567,684 | +| Push (Push5) | 1,000,000 | 1,108,950 | 98,558 | 98.56 | 3,757,880 | 3,757,880 | 3,757,880 | +| Push (Push6) | 1,000,000 | 1,108,950 | 96,993 | 96.99 | 3,739,352 | 3,739,352 | 3,739,352 | +| Push (Push7) | 1,000,000 | 1,108,950 | 101,306 | 101.31 | 1,151,892 | 1,133,561.2 | 1,110,900 | +| Push (Push8) | 1,000,000 | 1,108,950 | 97,680 | 97.68 | 3,812,484 | 3,812,484 | 3,812,484 | +| Push (Push9) | 1,000,000 | 1,108,950 | 98,936 | 98.94 | 3,770,548 | 3,770,548 | 3,769,572 | +| Return Revert (1Kib Of Non, Zero Data, Return) | 1,000,000 | 1,108,950 | 101,686 | 101.69 | 2,106,780 | 2,088,168.7 | 2,065,788 | +| Return Revert (1Kib Of Non, Zero Data, Revert) | 1,000,000 | 1,108,950 | 104,389 | 104.39 | 869,840 | 852,633.1 | 818,112 | +| Return Revert (1Kib Of Zero Data, Return) | 1,000,000 | 1,108,950 | 101,623 | 101.62 | 3,662,284 | 3,662,088.8 | 3,661,308 | +| Return Revert (1Kib Of Zero Data, Revert) | 1,000,000 | 1,108,950 | 99,795 | 99.80 | 3,678,868 | 3,678,868 | 3,678,868 | +| Return Revert (1Mib Of Non, Zero Data, Return) | 1,000,000 | 1,108,950 | 94,093 | 94.09 | 3,420,352 | 3,419,701.3 | 3,411,568 | +| Return Revert (1Mib Of Non, Zero Data, Revert) | 1,000,000 | 1,108,950 | 94,471 | 94.47 | 3,800,788 | 3,800,788 | 3,800,788 | +| Return Revert (1Mib Of Zero Data, Return) | 1,000,000 | 1,108,950 | 97,760 | 97.76 | 3,753,004 | 3,753,004 | 3,753,004 | +| Return Revert (1Mib Of Zero Data, Revert) | 1,000,000 | 1,108,950 | 96,086 | 96.09 | 3,291,556 | 3,291,556 | 3,291,556 | +| Return Revert (Empty, Return) | 1,000,000 | 1,108,950 | 102,384 | 102.38 | 3,650,600 | 3,650,600 | 3,649,624 | +| Return Revert (Empty, Revert) | 1,000,000 | 1,108,950 | 100,225 | 100.22 | 3,365,712 | 3,365,643.5 | 3,364,736 | +| Returndatasize Nonzero (Returned Size 0, Return Data Style Returndatastyle.Identity) | 1,000,000 | 1,108,950 | 96,247 | 96.25 | 3,598,900 | 3,598,881.5 | 3,597,924 | +| Returndatasize Nonzero (Returned Size 0, Return Data Style Returndatastyle.Return) | 1,000,000 | 1,108,950 | 98,321 | 98.32 | 3,768,596 | 3,768,514.7 | 3,767,620 | +| Returndatasize Nonzero (Returned Size 0, Return Data Style Returndatastyle.Revert) | 1,000,000 | 1,108,950 | 97,964 | 97.96 | 3,778,352 | 3,778,352 | 3,777,376 | +| Returndatasize Nonzero (Returned Size 1, Return Data Style Returndatastyle.Identity) | 1,000,000 | 1,108,950 | 99,154 | 99.15 | 3,711,048 | 3,710,032.2 | 3,708,120 | +| Returndatasize Nonzero (Returned Size 1, Return Data Style Returndatastyle.Return) | 1,000,000 | 1,108,950 | 100,295 | 100.30 | 3,061,252 | 3,058,629 | 3,055,396 | +| Returndatasize Nonzero (Returned Size 1, Return Data Style Returndatastyle.Revert) | 1,000,000 | 1,108,950 | 97,576 | 97.58 | 3,101,256 | 3,099,405.0 | 3,096,376 | +| Returndatasize Zero | 1,000,000 | 1,108,950 | 99,088 | 99.09 | 3,798,836 | 3,798,836 | 3,798,836 | +| Shifts (Shift Right Sar) | 1,000,000 | 1,108,950 | 101,657 | 101.66 | 2,995,860 | 2,994,521.9 | 2,989,028 | +| Shifts (Shift Right Shr) | 1,000,000 | 1,108,950 | 101,822 | 101.82 | 3,739,352 | 3,739,334.3 | 3,739,352 | +| Swap (Swap10) | 1,000,000 | 1,108,950 | 101,841 | 101.84 | 1,903,776 | 1,877,734.5 | 1,858,880 | +| Swap (Swap11) | 1,000,000 | 1,108,950 | 100,573 | 100.57 | 3,169,576 | 3,169,288 | 3,165,672 | +| Swap (Swap12) | 1,000,000 | 1,108,950 | 101,665 | 101.67 | 3,734,472 | 3,733,461.8 | 3,728,616 | +| Swap (Swap13) | 1,000,000 | 1,108,950 | 101,950 | 101.95 | 3,449,624 | 3,449,535.3 | 3,448,648 | +| Swap (Swap14) | 1,000,000 | 1,108,950 | 102,829 | 102.83 | 3,797,860 | 3,797,860 | 3,797,860 | +| Swap (Swap15) | 1,000,000 | 1,108,950 | 103,508 | 103.51 | 3,762,748 | 3,762,007.6 | 3,759,820 | +| Swap (Swap16) | 1,000,000 | 1,108,950 | 99,698 | 99.70 | 3,739,352 | 3,739,221.9 | 3,737,400 | +| Swap (Swap1) | 1,000,000 | 1,108,950 | 101,584 | 101.58 | 3,496,448 | 3,496,448 | 3,496,448 | +| Swap (Swap2) | 1,000,000 | 1,108,950 | 100,382 | 100.38 | 3,351,076 | 3,351,076 | 3,351,076 | +| Swap (Swap3) | 1,000,000 | 1,108,950 | 98,211 | 98.21 | 3,671,060 | 3,669,358.3 | 3,666,180 | +| Swap (Swap4) | 1,000,000 | 1,108,950 | 97,812 | 97.81 | 3,221,296 | 3,220,601.5 | 3,215,440 | +| Swap (Swap5) | 1,000,000 | 1,108,950 | 98,424 | 98.42 | 3,545,240 | 3,545,240 | 3,544,264 | +| Swap (Swap6) | 1,000,000 | 1,108,950 | 99,986 | 99.99 | 3,753,980 | 3,753,980 | 3,753,980 | +| Swap (Swap7) | 1,000,000 | 1,108,950 | 103,412 | 103.41 | 2,915,844 | 2,913,117.9 | 2,908,036 | +| Swap (Swap8) | 1,000,000 | 1,108,950 | 99,984 | 99.98 | 3,589,140 | 3,589,140 | 3,588,164 | +| Swap (Swap9) | 1,000,000 | 1,108,950 | 100,497 | 100.50 | 3,767,628 | 3,767,613.3 | 3,767,628 | +| Tload (Val Mut False, Key Mut False) | 1,000,000 | 1,108,950 | 96,939 | 96.94 | 3,757,872 | 3,757,872 | 3,757,872 | +| Tload (Val Mut False, Key Mut True) | 1,000,000 | 1,108,950 | 95,839 | 95.84 | 2,746,048 | 2,744,027.9 | 2,740,192 | +| Tload (Val Mut True, Key Mut False) | 1,000,000 | 1,108,950 | 96,121 | 96.12 | 3,620,356 | 3,620,234 | 3,616,452 | +| Tload (Val Mut True, Key Mut True) | 1,000,000 | 1,108,950 | 95,733 | 95.73 | 3,215,440 | 3,214,942.8 | 3,207,632 | +| Tstore (Dense Val Mut False, Key Mut False) | 1,000,000 | 1,108,950 | 98,831 | 98.83 | 3,797,864 | 3,797,864 | 3,796,888 | +| Tstore (Dense Val Mut False, Key Mut True) | 1,000,000 | 1,108,950 | 98,594 | 98.59 | 3,661,304 | 3,661,304 | 3,661,304 | +| Tstore (Dense Val Mut True, Key Mut False) | 1,000,000 | 1,108,950 | 101,346 | 101.35 | 2,893,396 | 2,891,845.9 | 2,888,516 | +| Tstore (Dense Val Mut True, Key Mut True) | 1,000,000 | 1,108,950 | 101,053 | 101.05 | 3,658,388 | 3,658,388 | 3,657,412 | +| Unop (Iszero) | 1,000,000 | 1,108,950 | 101,164 | 101.16 | 3,681,796 | 3,681,796 | 3,681,796 | +| Unop (Not) | 1,000,000 | 1,108,950 | 101,422 | 101.42 | 3,798,840 | 3,798,840 | 3,797,864 | +| Zero Param (Address) | 1,000,000 | 1,108,950 | 107,221 | 107.22 | 3,724,712 | 3,724,712 | 3,724,712 | +| Zero Param (Basefee) | 1,000,000 | 1,108,950 | 99,101 | 99.10 | 3,453,528 | 3,453,528 | 3,453,528 | +| Zero Param (Blobbasefee) | 1,000,000 | 1,108,950 | 98,057 | 98.06 | 1,702,720 | 1,684,969.8 | 1,654,896 | +| Zero Param (Caller) | 1,000,000 | 1,108,950 | 105,265 | 105.27 | 3,723,736 | 3,723,665.0 | 3,720,808 | +| Zero Param (Chainid) | 1,000,000 | 1,108,950 | 100,267 | 100.27 | 3,723,736 | 3,723,736 | 3,723,736 | +| Zero Param (Codesize) | 1,000,000 | 1,108,950 | 100,295 | 100.30 | 3,758,852 | 3,758,833.9 | 3,758,852 | +| Zero Param (Coinbase) | 1,000,000 | 1,108,950 | 104,840 | 104.84 | 3,696,432 | 3,695,849.5 | 3,693,504 | +| Zero Param (Gaslimit) | 1,000,000 | 1,108,950 | 100,734 | 100.73 | 3,693,504 | 3,692,971.6 | 3,685,696 | +| Zero Param (Gasprice) | 1,000,000 | 1,108,950 | 99,839 | 99.84 | 3,656,444 | 3,655,982.6 | 3,654,492 | +| Zero Param (Gas) | 1,000,000 | 1,108,950 | 98,450 | 98.45 | 3,260,328 | 3,259,269.3 | 3,257,400 | +| Zero Param (Number) | 1,000,000 | 1,108,950 | 102,405 | 102.41 | 3,640,844 | 3,640,844 | 3,640,844 | +| Zero Param (Origin) | 1,000,000 | 1,108,950 | 104,270 | 104.27 | 3,756,904 | 3,756,222.3 | 3,753,976 | +| Zero Param (Prevrandao) | 1,000,000 | 1,108,950 | 106,503 | 106.50 | 3,610,608 | 3,610,608 | 3,609,632 | +| Zero Param (Timestamp) | 1,000,000 | 1,108,950 | 101,530 | 101.53 | 3,254,472 | 3,254,081.6 | 3,248,616 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 0Bytes, Call) | 1,000,000 | 1,108,950 | 101,501 | 101.50 | 3,758,844 | 3,758,844 | 3,757,868 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 0Bytes, Transaction) | 1,000,000 | 1,108,950 | 103,703 | 103.70 | 3,346,196 | 3,346,196 | 3,346,196 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 100Bytes, Call) | 1,000,000 | 1,108,950 | 100,666 | 100.67 | 3,511,080 | 3,510,853.0 | 3,510,104 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 100Bytes, Transaction) | 1,000,000 | 1,108,950 | 99,058 | 99.06 | 3,143,224 | 3,142,435.7 | 3,141,272 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 10Kib, Call) | 1,000,000 | 1,108,950 | 99,329 | 99.33 | 3,657,412 | 3,657,258.9 | 3,656,436 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 10Kib, Transaction) | 1,000,000 | 1,108,950 | 95,120 | 95.12 | 2,949,028 | 2,948,068.8 | 2,947,076 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 1Mib, Call) | 1,000,000 | 1,108,950 | 91,627 | 91.63 | 3,625,236 | 3,623,984.2 | 3,622,308 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 1Mib, Transaction) | 1,000,000 | 1,108,950 | 96,425 | 96.42 | 3,612,556 | 3,611,301.1 | 3,610,604 | +| Calldatacopy (Zero Data, Fixed Src Dst, 0Bytes, Call) | 1,000,000 | 1,108,950 | 102,800 | 102.80 | 2,490,340 | 2,483,397.1 | 2,464,964 | +| Calldatacopy (Zero Data, Fixed Src Dst, 0Bytes, Transaction) | 1,000,000 | 1,108,950 | 101,639 | 101.64 | 1,622,688 | 1,597,451.4 | 1,571,936 | +| Calldatacopy (Zero Data, Fixed Src Dst, 100Bytes, Call) | 1,000,000 | 1,108,950 | 97,043 | 97.04 | 3,553,048 | 3,553,048 | 3,552,072 | +| Calldatacopy (Zero Data, Fixed Src Dst, 100Bytes, Transaction) | 1,000,000 | 1,108,950 | 96,223 | 96.22 | 3,697,404 | 3,697,404 | 3,697,404 | +| Calldatacopy (Zero Data, Fixed Src Dst, 10Kib, Call) | 1,000,000 | 1,108,950 | 97,206 | 97.21 | 3,394,988 | 3,394,656.9 | 3,389,132 | +| Calldatacopy (Zero Data, Fixed Src Dst, 10Kib, Transaction) | 1,000,000 | 1,108,950 | 96,012 | 96.01 | 3,655,468 | 3,655,468 | 3,655,468 | +| Calldatacopy (Zero Data, Fixed Src Dst, 1Mib, Call) | 1,000,000 | 1,108,950 | 95,437 | 95.44 | 650,244 | 641,842.9 | 612,180 | +| Calldatacopy (Zero Data, Fixed Src Dst, 1Mib, Transaction) | 1,000,000 | 1,108,950 | 94,982 | 94.98 | 3,785,184 | 3,785,184 | 3,785,184 | +| Calldatacopy (Non Zero, Dynamic Src Dst, 100Bytes, Call) | 1,000,000 | 1,108,950 | 101,087 | 101.09 | 3,389,132 | 3,388,175.9 | 3,386,204 | +| Calldatacopy (Non Zero, Dynamic Src Dst, 100Bytes, Transaction) | 1,000,000 | 1,108,950 | 101,205 | 101.20 | 3,763,724 | 3,763,724 | 3,762,748 | +| Calldatacopy (Non Zero, Dynamic Src Dst, 10Kib, Call) | 1,000,000 | 1,108,950 | 95,462 | 95.46 | 3,549,144 | 3,549,144 | 3,547,192 | +| Calldatacopy (Non Zero, Dynamic Src Dst, 10Kib, Transaction) | 1,000,000 | 1,108,950 | 97,846 | 97.85 | 3,704,220 | 3,704,220 | 3,704,220 | +| Calldatacopy (Non Zero, Fixed Src Dst, 100Bytes, Call) | 1,000,000 | 1,108,950 | 98,880 | 98.88 | 3,307,172 | 3,305,591.8 | 3,305,220 | +| Calldatacopy (Non Zero, Fixed Src Dst, 100Bytes, Transaction) | 1,000,000 | 1,108,950 | 98,101 | 98.10 | 788,224 | 768,199.3 | 734,544 | +| Calldatacopy (Non Zero, Fixed Src Dst, 10Kib, Call) | 1,000,000 | 1,108,950 | 97,853 | 97.85 | 3,562,808 | 3,562,808 | 3,562,808 | +| Calldatacopy (Non Zero, Fixed Src Dst, 10Kib, Transaction) | 1,000,000 | 1,108,950 | 96,768 | 96.77 | 3,802,736 | 3,801,999.7 | 3,799,808 | +| Codecopy (Dynamic Src Dst, 0Bytes) | 1,000,000 | 1,108,950 | 100,779 | 100.78 | 2,974,396 | 2,972,722.9 | 2,971,468 | +| Codecopy (Dynamic Src Dst, 0.25X Max Code) | 1,000,000 | 1,108,950 | 100,048 | 100.05 | 3,775,424 | 3,775,152.9 | 3,774,448 | +| Codecopy (Dynamic Src Dst, 0.50X Max Code Size) | 1,000,000 | 1,108,950 | 97,728 | 97.73 | 3,753,004 | 3,753,004 | 3,753,004 | +| Codecopy (Dynamic Src Dst, 0.75X Max Code Size) | 1,000,000 | 1,108,950 | 95,734 | 95.73 | 3,798,840 | 3,798,840 | 3,798,840 | +| Codecopy (Dynamic Src Dst, Max Code) | 1,000,000 | 1,108,950 | 98,206 | 98.21 | 3,463,288 | 3,461,194.0 | 3,453,528 | +| Codecopy (Fixed Src Dst, 0Bytes) | 1,000,000 | 1,108,950 | 103,993 | 103.99 | 1,012,328 | 991,289.1 | 954,744 | +| Codecopy (Fixed Src Dst, 0.25X Max Code) | 1,000,000 | 1,108,950 | 95,427 | 95.43 | 1,291,824 | 1,263,896.2 | 1,231,312 | +| Codecopy (Fixed Src Dst, 0.50X Max Code Size) | 1,000,000 | 1,108,950 | 96,105 | 96.11 | 3,559,880 | 3,558,885.6 | 3,554,024 | +| Codecopy (Fixed Src Dst, 0.75X Max Code Size) | 1,000,000 | 1,108,950 | 96,714 | 96.71 | 3,779,328 | 3,779,328 | 3,779,328 | +| Codecopy (Fixed Src Dst, Max Code) | 1,000,000 | 1,108,950 | 100,305 | 100.31 | 3,019,284 | 3,015,868 | 3,007,572 | +| Mcopy (Dynamic Src Dst, 0Bytes) | 1,000,000 | 1,108,950 | 101,004 | 101.00 | 3,791,032 | 3,788,779.7 | 3,787,128 | +| Mcopy (Dynamic Src Dst, 100Bytes) | 1,000,000 | 1,108,950 | 101,124 | 101.12 | 3,518,888 | 3,517,070.0 | 3,515,960 | +| Mcopy (Dynamic Src Dst, 10Kib) | 1,000,000 | 1,108,950 | 100,452 | 100.45 | 3,331,556 | 3,331,537.2 | 3,331,556 | +| Mcopy (Dynamic Src Dst, 1Mib) | 1,000,000 | 1,108,950 | 97,156 | 97.16 | 3,616,456 | 3,616,373.3 | 3,614,504 | +| Mcopy (Fixed Src Dst, 0Bytes) | 1,000,000 | 1,108,950 | 100,681 | 100.68 | 3,610,604 | 3,610,586.6 | 3,608,652 | +| Mcopy (Fixed Src Dst, 100Bytes) | 1,000,000 | 1,108,950 | 99,087 | 99.09 | 3,729,592 | 3,729,592 | 3,729,592 | +| Mcopy (Fixed Src Dst, 10Kib) | 1,000,000 | 1,108,950 | 101,736 | 101.74 | 587,172 | 541,925.1 | 233,860 | +| Mcopy (Fixed Src Dst, 1Mib) | 1,000,000 | 1,108,950 | 96,863 | 96.86 | 1,754,448 | 1,735,154.3 | 1,704,672 | +| Returndatacopy (Fixed Dst False, 0Bytes) | 1,000,000 | 1,108,950 | 102,603 | 102.60 | 1,654,896 | 1,639,026.5 | 1,621,712 | +| Returndatacopy (Fixed Dst False, 100Bytes) | 1,000,000 | 1,108,950 | 100,977 | 100.98 | 3,345,220 | 3,343,521.0 | 3,343,268 | +| Returndatacopy (Fixed Dst False, 10Kib) | 1,000,000 | 1,108,950 | 96,656 | 96.66 | 3,705,200 | 3,705,132.6 | 3,703,248 | +| Returndatacopy (Fixed Dst False, 1Mib) | 1,000,000 | 1,108,950 | 98,614 | 98.61 | 3,485,724 | 3,485,630.1 | 3,483,772 | +| Returndatacopy (Fixed Dst True, 0Bytes) | 1,000,000 | 1,108,950 | 102,673 | 102.67 | 3,308,144 | 3,308,144 | 3,307,168 | +| Returndatacopy (Fixed Dst True, 100Bytes) | 1,000,000 | 1,108,950 | 100,413 | 100.41 | 3,344,244 | 3,343,099.7 | 3,336,436 | +| Returndatacopy (Fixed Dst True, 10Kib) | 1,000,000 | 1,108,950 | 98,352 | 98.35 | 3,511,080 | 3,510,733.7 | 3,508,152 | +| Returndatacopy (Fixed Dst True, 1Mib) | 1,000,000 | 1,108,950 | 99,385 | 99.39 | 3,355,952 | 3,355,132.2 | 3,351,072 | +| Log Opcodes (Dynamic, Non Zero Topic, 0 Bytes Data, Log0) | 1,000,000 | 1,108,950 | 97,000 | 97 | 3,809,564 | 3,809,564 | 3,809,564 | +| Log Opcodes (Dynamic, Non Zero Topic, 0 Bytes Data, Log1) | 1,000,000 | 1,108,950 | 97,007 | 97.01 | 3,285,700 | 3,285,700 | 3,285,700 | +| Log Opcodes (Dynamic, Non Zero Topic, 0 Bytes Data, Log2) | 1,000,000 | 1,108,950 | 95,180 | 95.18 | 3,613,532 | 3,613,532 | 3,612,556 | +| Log Opcodes (Dynamic, Non Zero Topic, 0 Bytes Data, Log3) | 1,000,000 | 1,108,950 | 100,858 | 100.86 | 1,109,924 | 1,097,028.5 | 1,074,788 | +| Log Opcodes (Dynamic, Non Zero Topic, 0 Bytes Data, Log4) | 1,000,000 | 1,108,950 | 95,151 | 95.15 | 3,628,164 | 3,627,560.7 | 3,626,212 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log0) | 1,000,000 | 1,108,950 | 97,624 | 97.62 | 3,717,880 | 3,717,880 | 3,716,904 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log1) | 1,000,000 | 1,108,950 | 95,546 | 95.55 | 3,376,444 | 3,374,543.4 | 3,368,636 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log2) | 1,000,000 | 1,108,950 | 96,517 | 96.52 | 3,752,028 | 3,752,028 | 3,752,028 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log3) | 1,000,000 | 1,108,950 | 99,507 | 99.51 | 2,572,324 | 2,569,200.8 | 2,560,612 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log4) | 1,000,000 | 1,108,950 | 96,847 | 96.85 | 3,190,068 | 3,188,498.7 | 3,183,236 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log0) | 1,000,000 | 1,108,950 | 97,602 | 97.60 | 3,036,852 | 3,036,852 | 3,036,852 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log1) | 1,000,000 | 1,108,950 | 94,028 | 94.03 | 3,272,040 | 3,270,140.3 | 3,270,088 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log2) | 1,000,000 | 1,108,950 | 97,384 | 97.38 | 3,640,844 | 3,640,844 | 3,640,844 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log3) | 1,000,000 | 1,108,950 | 94,538 | 94.54 | 3,443,772 | 3,443,058.8 | 3,442,796 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log4) | 1,000,000 | 1,108,950 | 94,502 | 94.50 | 3,382,300 | 3,382,300 | 3,382,300 | +| Log Opcodes (Dynamic, Zero Topic, 0 Bytes Data, Log0) | 1,000,000 | 1,108,950 | 96,285 | 96.28 | 3,788,104 | 3,788,104 | 3,786,152 | +| Log Opcodes (Dynamic, Zero Topic, 0 Bytes Data, Log1) | 1,000,000 | 1,108,950 | 94,539 | 94.54 | 3,610,608 | 3,610,463.4 | 3,609,632 | +| Log Opcodes (Dynamic, Zero Topic, 0 Bytes Data, Log2) | 1,000,000 | 1,108,950 | 96,711 | 96.71 | 3,433,036 | 3,433,017.6 | 3,430,108 | +| Log Opcodes (Dynamic, Zero Topic, 0 Bytes Data, Log3) | 1,000,000 | 1,108,950 | 97,005 | 97.00 | 3,769,572 | 3,769,572 | 3,768,596 | +| Log Opcodes (Dynamic, Zero Topic, 0 Bytes Data, Log4) | 1,000,000 | 1,108,950 | 95,246 | 95.25 | 3,131,512 | 3,130,570.9 | 3,130,536 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Non Zero Data, Log0) | 1,000,000 | 1,108,950 | 95,113 | 95.11 | 3,503,280 | 3,501,346.1 | 3,497,424 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Non Zero Data, Log1) | 1,000,000 | 1,108,950 | 97,530 | 97.53 | 3,576,456 | 3,575,108.2 | 3,574,504 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Non Zero Data, Log2) | 1,000,000 | 1,108,950 | 98,435 | 98.44 | 3,248,616 | 3,248,118.4 | 3,247,640 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Non Zero Data, Log3) | 1,000,000 | 1,108,950 | 95,358 | 95.36 | 3,586,216 | 3,585,903.7 | 3,584,264 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Non Zero Data, Log4) | 1,000,000 | 1,108,950 | 94,487 | 94.49 | 3,284,724 | 3,284,724 | 3,283,748 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Zeros Data, Log0) | 1,000,000 | 1,108,950 | 96,950 | 96.95 | 3,312,048 | 3,309,895.8 | 3,309,120 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Zeros Data, Log1) | 1,000,000 | 1,108,950 | 96,125 | 96.12 | 3,331,556 | 3,331,556 | 3,331,556 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Zeros Data, Log2) | 1,000,000 | 1,108,950 | 98,085 | 98.08 | 1,371,488 | 1,349,677.0 | 1,317,808 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Zeros Data, Log3) | 1,000,000 | 1,108,950 | 95,483 | 95.48 | 3,106,136 | 3,105,600.2 | 3,102,232 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Zeros Data, Log4) | 1,000,000 | 1,108,950 | 97,177 | 97.18 | 3,389,132 | 3,389,132 | 3,389,132 | +| Log Opcodes (Fixed, Non Zero Topic, 0 Bytes Data, Log0) | 1,000,000 | 1,108,950 | 97,213 | 97.21 | 3,798,836 | 3,798,836 | 3,797,860 | +| Log Opcodes (Fixed, Non Zero Topic, 0 Bytes Data, Log1) | 1,000,000 | 1,108,950 | 97,347 | 97.35 | 3,637,920 | 3,636,980.1 | 3,634,992 | +| Log Opcodes (Fixed, Non Zero Topic, 0 Bytes Data, Log2) | 1,000,000 | 1,108,950 | 94,986 | 94.99 | 3,706,172 | 3,706,172 | 3,706,172 | +| Log Opcodes (Fixed, Non Zero Topic, 0 Bytes Data, Log3) | 1,000,000 | 1,108,950 | 96,882 | 96.88 | 1,213,380 | 1,190,521.5 | 1,151,892 | +| Log Opcodes (Fixed, Non Zero Topic, 0 Bytes Data, Log4) | 1,000,000 | 1,108,950 | 94,866 | 94.87 | 3,050,516 | 3,048,865.7 | 3,037,828 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log0) | 1,000,000 | 1,108,950 | 94,745 | 94.75 | 3,509,132 | 3,508,037.0 | 3,502,300 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log1) | 1,000,000 | 1,108,950 | 94,382 | 94.38 | 3,705,196 | 3,705,196 | 3,704,220 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log2) | 1,000,000 | 1,108,950 | 93,510 | 93.51 | 3,767,620 | 3,767,620 | 3,766,644 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log3) | 1,000,000 | 1,108,950 | 94,913 | 94.91 | 3,749,112 | 3,749,112 | 3,747,160 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log4) | 1,000,000 | 1,108,950 | 95,639 | 95.64 | 2,382,984 | 2,376,941.1 | 2,357,608 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Zeros Data, Log0) | 1,000,000 | 1,108,950 | 94,793 | 94.79 | 3,258,376 | 3,257,697.8 | 3,254,472 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Zeros Data, Log1) | 1,000,000 | 1,108,950 | 95,718 | 95.72 | 3,729,592 | 3,729,592 | 3,729,592 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Zeros Data, Log2) | 1,000,000 | 1,108,950 | 96,650 | 96.65 | 3,228,124 | 3,226,479.3 | 3,222,268 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Zeros Data, Log3) | 1,000,000 | 1,108,950 | 95,953 | 95.95 | 1,504,592 | 1,487,963.4 | 1,455,792 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Zeros Data, Log4) | 1,000,000 | 1,108,950 | 97,360 | 97.36 | 2,812,416 | 2,811,856 | 2,809,488 | +| Log Opcodes (Fixed, Zero Topic, 0 Bytes Data, Log0) | 1,000,000 | 1,108,950 | 94,364 | 94.36 | 2,145,816 | 2,127,969.1 | 2,106,776 | +| Log Opcodes (Fixed, Zero Topic, 0 Bytes Data, Log1) | 1,000,000 | 1,108,950 | 97,339 | 97.34 | 3,475,972 | 3,475,826.6 | 3,474,996 | +| Log Opcodes (Fixed, Zero Topic, 0 Bytes Data, Log2) | 1,000,000 | 1,108,950 | 97,064 | 97.06 | 3,544,264 | 3,544,264 | 3,542,312 | +| Log Opcodes (Fixed, Zero Topic, 0 Bytes Data, Log3) | 1,000,000 | 1,108,950 | 95,961 | 95.96 | 3,550,120 | 3,550,120 | 3,549,144 | +| Log Opcodes (Fixed, Zero Topic, 0 Bytes Data, Log4) | 1,000,000 | 1,108,950 | 97,856 | 97.86 | 3,641,816 | 3,641,816 | 3,641,816 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Non Zero Data, Log0) | 1,000,000 | 1,108,950 | 97,094 | 97.09 | 3,175,432 | 3,174,805.9 | 3,171,528 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Non Zero Data, Log1) | 1,000,000 | 1,108,950 | 97,005 | 97.00 | 3,115,896 | 3,115,576.6 | 3,107,112 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Non Zero Data, Log2) | 1,000,000 | 1,108,950 | 96,341 | 96.34 | 3,474,996 | 3,474,996 | 3,474,020 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Non Zero Data, Log3) | 1,000,000 | 1,108,950 | 97,191 | 97.19 | 3,697,400 | 3,697,400 | 3,696,424 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Non Zero Data, Log4) | 1,000,000 | 1,108,950 | 96,621 | 96.62 | 3,586,216 | 3,586,216 | 3,585,240 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Zeros Data, Log0) | 1,000,000 | 1,108,950 | 95,740 | 95.74 | 2,356,632 | 2,346,410.6 | 2,329,304 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Zeros Data, Log1) | 1,000,000 | 1,108,950 | 96,875 | 96.88 | 3,466,216 | 3,466,216 | 3,465,240 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Zeros Data, Log2) | 1,000,000 | 1,108,950 | 96,866 | 96.87 | 3,784,208 | 3,784,208 | 3,784,208 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Zeros Data, Log3) | 1,000,000 | 1,108,950 | 95,709 | 95.71 | 3,510,104 | 3,510,104 | 3,510,104 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Zeros Data, Log4) | 1,000,000 | 1,108,950 | 95,275 | 95.28 | 3,475,972 | 3,475,972 | 3,475,972 | +| Address State Cold (Absent Accounts False, Balance) | 1,000,000 | 1,108,950 | 96,130 | 96.13 | 3,737,400 | 3,737,400 | 3,737,400 | +| Address State Cold (Absent Accounts True, Balance) | 1,000,000 | 1,108,950 | 96,760 | 96.76 | 3,709,100 | 3,708,675.7 | 3,705,196 | +| Address State Warm (Present Target, Balance) | 1,000,000 | 1,108,950 | 96,603 | 96.60 | 3,782,256 | 3,782,102.9 | 3,781,280 | +| Address State Warm (Present Target, Callcode) | 1,000,000 | 1,108,950 | 102,415 | 102.42 | 3,799,812 | 3,799,812 | 3,799,812 | +| Address State Warm (Present Target, Call) | 1,000,000 | 1,108,950 | 102,616 | 102.62 | 3,713,976 | 3,713,976 | 3,713,000 | +| Address State Warm (Present Target, Delegatecall) | 1,000,000 | 1,108,950 | 99,106 | 99.11 | 3,424,252 | 3,422,625.3 | 3,420,348 | +| Address State Warm (Present Target, Extcodehash) | 1,000,000 | 1,108,950 | 99,004 | 99.00 | 2,821,200 | 2,819,954.8 | 2,811,440 | +| Address State Warm (Present Target, Extcodesize) | 1,000,000 | 1,108,950 | 99,660 | 99.66 | 3,641,816 | 3,641,230.4 | 3,639,864 | +| Address State Warm (Present Target, Staticcall) | 1,000,000 | 1,108,950 | 102,961 | 102.96 | 3,799,812 | 3,799,812 | 3,799,812 | +| Address State Warm (Absent Target, Balance) | 1,000,000 | 1,108,950 | 98,058 | 98.06 | 2,965,620 | 2,964,764.1 | 2,963,668 | +| Address State Warm (Absent Target, Callcode) | 1,000,000 | 1,108,950 | 103,016 | 103.02 | 1,951,600 | 1,933,701.2 | 1,904,752 | +| Address State Warm (Absent Target, Call) | 1,000,000 | 1,108,950 | 101,693 | 101.69 | 3,767,620 | 3,767,620 | 3,766,644 | +| Address State Warm (Absent Target, Delegatecall) | 1,000,000 | 1,108,950 | 101,242 | 101.24 | 3,483,772 | 3,482,251.7 | 3,477,916 | +| Address State Warm (Absent Target, Extcodehash) | 1,000,000 | 1,108,950 | 97,505 | 97.50 | 3,699,352 | 3,698,723.4 | 3,697,400 | +| Address State Warm (Absent Target, Extcodesize) | 1,000,000 | 1,108,950 | 99,104 | 99.10 | 2,668,944 | 2,665,123.1 | 2,660,160 | +| Address State Warm (Absent Target, Staticcall) | 1,000,000 | 1,108,950 | 103,918 | 103.92 | 3,658,384 | 3,658,384 | 3,657,408 | +| Blockhash | 1,000,000 | 1,108,950 | 100,921 | 100.92 | 3,773,476 | 3,773,476 | 3,772,500 | +| Extcodecopy Warm (1Kib) | 1,000,000 | 1,108,950 | 99,134 | 99.13 | 733,568 | 712,260.0 | 675,008 | +| Extcodecopy Warm (512) | 1,000,000 | 1,108,950 | 96,862 | 96.86 | 3,702,276 | 3,701,758.1 | 3,699,348 | +| Extcodecopy Warm (5Kib) | 1,000,000 | 1,108,950 | 97,716 | 97.72 | 3,630,116 | 3,630,116 | 3,629,140 | +| Selfbalance | 1,000,000 | 1,108,950 | 115,076 | 115.08 | 3,202,756 | 3,201,929.1 | 3,201,780 | +| Selfdestruct Created (No Value) | 965,720 | 1,108,950 | 95,501 | 95.50 | 3,163,720 | 3,162,247.4 | 3,155,912 | +| Selfdestruct Created (With Value) | 965,720 | 1,108,950 | 94,998 | 95.00 | 3,554,024 | 3,554,024 | 3,554,024 | +| Selfdestruct Existing (No Value) | 998,771 | 1,108,950 | 97,163 | 97.16 | 3,291,556 | 3,290,888.2 | 3,289,604 | +| Selfdestruct Existing (With Value) | 998,771 | 1,108,950 | 98,968 | 98.97 | 2,998,788 | 2,996,604.4 | 2,995,860 | +| Selfdestruct Initcode (No Value) | 989,164 | 1,108,950 | 95,299 | 95.30 | 3,792,008 | 3,791,961.5 | 3,791,032 | +| Selfdestruct Initcode (With Value) | 989,164 | 1,108,950 | 96,502 | 96.50 | 3,658,380 | 3,657,636.4 | 3,657,404 | +| Storage Access Cold (Absent Slots False, Ssload) | 999,749 | 1,108,950 | 97,385 | 97.39 | 3,152,008 | 3,151,731.8 | 3,151,032 | +| Storage Access Cold (Absent Slots False, Sstore New Value, Out Of Gas) | 1,000,000 | 1,108,950 | 98,351 | 98.35 | 3,598,896 | 3,598,896 | 3,598,896 | +| Storage Access Cold (Absent Slots False, Sstore New Value, Revert) | 998,963 | 1,108,950 | 97,145 | 97.14 | 3,611,580 | 3,611,580 | 3,611,580 | +| Storage Access Cold (Absent Slots False, Sstore New Value) | 998,957 | 1,108,950 | 96,947 | 96.95 | 3,122,728 | 3,120,631.4 | 3,114,920 | +| Storage Access Cold (Absent Slots False, Sstore Same Value, Out Of Gas) | 1,000,000 | 1,108,950 | 96,923 | 96.92 | 3,783,228 | 3,783,228 | 3,783,228 | +| Storage Access Cold (Absent Slots False, Sstore Same Value, Revert) | 999,015 | 1,108,950 | 101,628 | 101.63 | 3,807,612 | 3,807,333.1 | 3,801,756 | +| Storage Access Cold (Absent Slots False, Sstore Same Value) | 999,009 | 1,108,950 | 101,287 | 101.29 | 1,025,384 | 1,011,596.2 | 978,536 | +| Storage Access Cold (Absent Slots True, Ssload) | 999,749 | 1,108,950 | 102,378 | 102.38 | 953,768 | 938,453.2 | 911,800 | +| Storage Access Cold (Absent Slots True, Sstore New Value, Out Of Gas) | 1,000,000 | 1,108,950 | 96,675 | 96.67 | 2,858,284 | 2,856,810.0 | 2,847,548 | +| Storage Access Cold (Absent Slots True, Sstore New Value, Revert) | 995,213 | 1,108,950 | 94,891 | 94.89 | 832,144 | 818,659.9 | 789,200 | +| Storage Access Cold (Absent Slots True, Sstore New Value) | 995,207 | 1,108,950 | 97,605 | 97.61 | 2,740,192 | 2,738,463.7 | 2,732,384 | +| Storage Access Cold (Absent Slots True, Sstore Same Value, Out Of Gas) | 1,000,000 | 1,108,950 | 96,983 | 96.98 | 3,799,808 | 3,799,808 | 3,799,808 | +| Storage Access Cold (Absent Slots True, Sstore Same Value, Revert) | 995,081 | 1,108,950 | 96,425 | 96.42 | 3,756,900 | 3,756,900 | 3,756,900 | +| Storage Access Cold (Absent Slots True, Sstore Same Value) | 995,075 | 1,108,950 | 99,207 | 99.21 | 1,317,812 | 1,297,847.4 | 1,264,132 | +| Storage Access Warm (Sload) | 1,000,000 | 1,108,950 | 97,872 | 97.87 | 675,012 | 652,721.3 | 619,380 | +| Storage Access Warm (Sstore New Value) | 1,000,000 | 1,108,950 | 102,885 | 102.89 | 3,596,948 | 3,596,948 | 3,595,972 | +| Storage Access Warm (Sstore Same Value) | 1,000,000 | 1,108,950 | 98,045 | 98.05 | 3,351,076 | 3,350,588 | 3,350,100 | + +## Summary Statistics + +- **Total Tests:** 508 +- **Successful Tests:** 508 +- **Failed Tests:** 0 + +### Proving Time (ms) +- **Average:** 108,803.3 +- **Minimum:** 91,627 +- **Maximum:** 253,065 + +### Peak Memory Usage (MB) +- **Average:** 3,191,865.5 +- **Minimum:** 420,732 +- **Maximum:** 3,812,484 + +### Proof Size (bytes) +- **Average:** 1,108,950 +- **Minimum:** 1,108,950 +- **Maximum:** 1,108,950 diff --git a/www/docs/pages/benchmark-results/gas-categorized/1m/risc0-1M-1.md b/www/docs/pages/benchmark-results/gas-categorized/1m/risc0-1M-1.md new file mode 100644 index 00000000..4df5d4b3 --- /dev/null +++ b/www/docs/pages/benchmark-results/gas-categorized/1m/risc0-1M-1.md @@ -0,0 +1,543 @@ +# zkEVM Benchmark Results + +Generated on: 2025-12-13 19:54:08 + +## Folder: zkevm-metrics-risc0-1M-1 + +**zkVM:** risc0-v3.0.3 (1 GPUs) + +**Hardware Configuration:** CPU: AMD EPYC 7B13 64-Core Processor | RAM: 396 GiB | GPU: NVIDIA GeForce RTX 4090, NVIDIA GeForce RTX 4090, NVIDIA GeForce RTX 4090, NVIDIA GeForce RTX 4090 + +## Proving Metrics + +| Benchmark | Gas Used | Proof Size (bytes) | Proving Time (ms) | Proving Time (s) | Peak Memory (MB) | Avg Memory (MB) | Initial Memory (MB) | +|---|---|---|---|---|---|---|---| +| Block Full Access List And Data | 999,980 | 223,239 | 9,319 | 9.32 | 2,594,728 | 2,594,498.4 | 2,589,848 | +| Block Full Data (Non Zero Byte) | 1,000,000 | 223,239 | 6,758 | 6.76 | 823,092 | 820,451.1 | 815,284 | +| Block Full Data (Zero Byte) | 1,000,000 | 223,239 | 13,337 | 13.34 | 2,850,388 | 2,850,062.7 | 2,847,460 | +| Block Full Of Ether Transfers (A To A) | 987,000 | 223,239 | 27,636 | 27.64 | 2,739,144 | 2,739,144 | 2,739,144 | +| Block Full Of Ether Transfers (A To B) | 987,000 | 223,239 | 24,194 | 24.19 | 3,287,488 | 3,287,488 | 3,286,512 | +| Block Full Of Ether Transfers (A To Diff Acc) | 987,000 | 223,239 | 24,341 | 24.34 | 3,561,652 | 3,561,047.8 | 3,549,940 | +| Block Full Of Ether Transfers (Diff Acc To B) | 987,000 | 223,239 | 29,730 | 29.73 | 2,787,936 | 2,787,913.2 | 2,786,960 | +| Block Full Of Ether Transfers (Diff Acc To Diff Acc) | 987,000 | 223,239 | 30,677 | 30.68 | 3,071,908 | 3,071,908 | 3,069,956 | +| Bytecode Single Opcode (Callcode) | 1,000,000 | 223,239 | 394,593 | 394.59 | 2,691,332 | 2,690,032.0 | 2,679,620 | +| Bytecode Single Opcode (Call) | 1,000,000 | 223,239 | 389,736 | 389.74 | 2,216,080 | 2,211,706.2 | 2,184,848 | +| Bytecode Single Opcode (Delegatecall) | 1,000,000 | 223,239 | 327,463 | 327.46 | 3,251,436 | 3,251,436 | 3,248,508 | +| Bytecode Single Opcode (Extcodecopy) | 1,000,000 | 223,239 | 381,219 | 381.22 | 1,243,736 | 1,217,643.7 | 1,162,728 | +| Bytecode Single Opcode (Extcodehash) | 1,000,000 | 223,239 | 391,661 | 391.66 | 2,560,568 | 2,560,449.0 | 2,550,808 | +| Bytecode Single Opcode (Extcodesize) | 1,000,000 | 223,239 | 332,380 | 332.38 | 3,489,464 | 3,489,464 | 3,489,464 | +| Bytecode Single Opcode (Staticcall) | 1,000,000 | 223,239 | 353,437 | 353.44 | 676,440 | 666,850.2 | 637,400 | +| Create (0Bytes, Create2) | 1,000,000 | 223,239 | 6,927 | 6.93 | 2,233,648 | 2,232,672 | 2,224,864 | +| Create (0Bytes, Create) | 1,000,000 | 223,239 | 6,483 | 6.48 | 707,204 | 705,876.6 | 695,492 | +| Create (0Bytes, Create2) | 1,000,000 | 223,239 | 6,990 | 6.99 | 1,589,240 | 1,588,068.8 | 1,583,384 | +| Create (0Bytes, Create) | 1,000,000 | 223,239 | 5,763 | 5.76 | 3,176,292 | 3,176,048 | 3,174,340 | +| Create (0.25X Max Code, Zero Data, Create2) | 1,000,000 | 223,239 | 7,203 | 7.20 | 877,996 | 871,094.3 | 853,596 | +| Create (0.25X Max Code, Zero Data, Create) | 1,000,000 | 223,239 | 5,623 | 5.62 | 3,350,892 | 3,350,892 | 3,348,940 | +| Create (0.25X Max Code, Create2) | 1,000,000 | 223,239 | 6,332 | 6.33 | 2,721,336 | 2,721,336 | 2,721,336 | +| Create (0.25X Max Code, Create) | 1,000,000 | 223,239 | 6,093 | 6.09 | 2,612,284 | 2,612,067.1 | 2,608,380 | +| Create (0.50X Max Code Size With Non, Zero Data, Create2) | 1,000,000 | 223,239 | 5,762 | 5.76 | 3,410,412 | 3,410,412 | 3,410,412 | +| Create (0.50X Max Code Size With Non, Zero Data, Create) | 1,000,000 | 223,239 | 5,704 | 5.70 | 3,559,692 | 3,559,692 | 3,559,692 | +| Create (0.50X Max Code Size With Zero Data, Create2) | 1,000,000 | 223,239 | 6,865 | 6.87 | 2,804,520 | 2,802,177.6 | 2,800,616 | +| Create (0.50X Max Code Size With Zero Data, Create) | 1,000,000 | 223,239 | 6,622 | 6.62 | 2,439,556 | 2,438,934.5 | 2,433,700 | +| Create (0.75X Max Code Size With Non, Zero Data, Create2) | 1,000,000 | 223,239 | 8,304 | 8.30 | 1,842,280 | 1,840,653.3 | 1,837,400 | +| Create (0.75X Max Code Size With Non, Zero Data, Create) | 1,000,000 | 223,239 | 6,004 | 6.00 | 3,141,160 | 3,141,160 | 3,138,232 | +| Create (0.75X Max Code Size With Zero Data, Create2) | 1,000,000 | 223,239 | 6,875 | 6.88 | 2,390,764 | 2,390,764 | 2,390,764 | +| Create (0.75X Max Code Size With Zero Data, Create) | 1,000,000 | 223,239 | 6,447 | 6.45 | 2,603,508 | 2,603,418.9 | 2,603,508 | +| Create (Max Code, Zero Data, Create2) | 1,000,000 | 223,239 | 6,779 | 6.78 | 3,531,408 | 3,531,408 | 3,529,456 | +| Create (Max Code, Zero Data, Create) | 1,000,000 | 223,239 | 8,312 | 8.31 | 2,397,592 | 2,397,592 | 2,397,592 | +| Create (Max Code, Create2) | 1,000,000 | 223,239 | 5,602 | 5.60 | 3,352,844 | 3,352,844 | 3,352,844 | +| Create (Max Code, Create) | 1,000,000 | 223,239 | 5,675 | 5.67 | 3,275,788 | 3,275,788 | 3,274,812 | +| Creates Collisions (Create2) | 1,000,000 | 223,239 | 5,753 | 5.75 | 3,346,996 | 3,346,996 | 3,346,996 | +| Creates Collisions (Create) | 1,000,000 | 223,239 | 6,699 | 6.70 | 3,400,660 | 3,400,464.8 | 3,400,660 | +| Initcode Jumpdest Analysis (00) | 1,000,000 | 223,239 | 26,002 | 26.00 | 3,004,568 | 3,004,513.8 | 3,002,616 | +| Initcode Jumpdest Analysis (5B) | 1,000,000 | 223,239 | 36,229 | 36.23 | 1,673,172 | 1,667,578.8 | 1,647,796 | +| Initcode Jumpdest Analysis (605B5B) | 1,000,000 | 223,239 | 26,430 | 26.43 | 1,032,204 | 1,009,487.6 | 968,764 | +| Initcode Jumpdest Analysis (605B) | 1,000,000 | 223,239 | 16,698 | 16.70 | 3,259,240 | 3,259,240 | 3,259,240 | +| Initcode Jumpdest Analysis (615B5B5B) | 1,000,000 | 223,239 | 22,315 | 22.32 | 968,764 | 954,899.1 | 921,916 | +| Initcode Jumpdest Analysis (615B5B) | 1,000,000 | 223,239 | 14,917 | 14.92 | 3,509,940 | 3,509,940 | 3,508,964 | +| Amortized Bn128 Pairings | 1,000,000 | 223,239 | 291,410 | 291.41 | 2,767,440 | 2,766,846.4 | 2,760,608 | +| Empty Block | 0 | 223,239 | 4,617 | 4.62 | 2,331,240 | 2,331,240 | 2,331,240 | +| Binop Simple (Add) | 1,000,000 | 223,239 | 33,292 | 33.29 | 3,342,128 | 3,342,116.9 | 3,341,152 | +| Binop Simple (And) | 1,000,000 | 223,239 | 32,652 | 32.65 | 3,059,224 | 3,057,058.5 | 3,052,392 | +| Binop Simple (Byte) | 1,000,000 | 223,239 | 35,789 | 35.79 | 2,391,480 | 2,390,975.2 | 2,383,672 | +| Binop Simple (Div, 0) | 1,000,000 | 223,239 | 179,741 | 179.74 | 3,490,440 | 3,490,440 | 3,488,488 | +| Binop Simple (Div, 1) | 1,000,000 | 223,239 | 170,049 | 170.05 | 3,186,052 | 3,185,869.7 | 3,183,124 | +| Binop Simple (Eq) | 1,000,000 | 223,239 | 82,915 | 82.92 | 2,167,284 | 2,167,105.1 | 2,159,476 | +| Binop Simple (Exp) | 1,000,000 | 223,239 | 127,391 | 127.39 | 2,616,188 | 2,616,188 | 2,612,284 | +| Binop Simple (Gt) | 1,000,000 | 223,239 | 29,183 | 29.18 | 3,266,040 | 3,266,040 | 3,265,064 | +| Binop Simple (Lt) | 1,000,000 | 223,239 | 34,144 | 34.14 | 2,084,060 | 2,079,433.0 | 2,068,444 | +| Binop Simple (Mod) | 1,000,000 | 223,239 | 51,342 | 51.34 | 3,268,956 | 3,268,956 | 3,268,956 | +| Binop Simple (Mul) | 1,000,000 | 223,239 | 64,340 | 64.34 | 3,103,128 | 3,103,057.3 | 3,097,272 | +| Binop Simple (Or) | 1,000,000 | 223,239 | 32,236 | 32.24 | 2,373,916 | 2,372,761.1 | 2,367,084 | +| Binop Simple (Sar) | 1,000,000 | 223,239 | 78,839 | 78.84 | 2,910,888 | 2,910,471.2 | 2,901,128 | +| Binop Simple (Sdiv, 0) | 1,000,000 | 223,239 | 214,968 | 214.97 | 3,492,392 | 3,491,798.9 | 3,491,416 | +| Binop Simple (Sdiv, 1) | 1,000,000 | 223,239 | 251,953 | 251.95 | 1,774,936 | 1,761,792.2 | 1,723,208 | +| Binop Simple (Sgt) | 1,000,000 | 223,239 | 90,830 | 90.83 | 2,550,552 | 2,548,687.1 | 2,543,720 | +| Binop Simple (Shl) | 1,000,000 | 223,239 | 66,396 | 66.40 | 1,994,276 | 1,993,984.8 | 1,987,444 | +| Binop Simple (Shr) | 1,000,000 | 223,239 | 56,986 | 56.99 | 3,538,236 | 3,537,467.7 | 3,535,308 | +| Binop Simple (Signextend) | 1,000,000 | 223,239 | 51,420 | 51.42 | 3,491,416 | 3,491,400.3 | 3,491,416 | +| Binop Simple (Slt) | 1,000,000 | 223,239 | 35,935 | 35.94 | 3,117,748 | 3,117,748 | 3,117,748 | +| Binop Simple (Smod) | 1,000,000 | 223,239 | 75,461 | 75.46 | 2,486,148 | 2,484,961.8 | 2,478,340 | +| Binop Simple (Sub) | 1,000,000 | 223,239 | 35,238 | 35.24 | 3,560,668 | 3,560,668 | 3,559,692 | +| Binop Simple (Xor) | 1,000,000 | 223,239 | 27,832 | 27.83 | 3,197,756 | 3,197,365.6 | 3,196,780 | +| Blobhash (No Blobs) | 1,000,000 | 223,239 | 37,313 | 37.31 | 2,576,184 | 2,576,066.9 | 2,573,256 | +| Blobhash (One Blob And Accessed) | 1,000,000 | 223,239 | 55,889 | 55.89 | 1,328,908 | 1,317,125.3 | 1,295,724 | +| Blobhash (One Blob But Access Non, Existent Index) | 1,000,000 | 223,239 | 36,079 | 36.08 | 2,005,008 | 2,003,027.3 | 1,994,272 | +| Blobhash (Six Blobs, Access Latest) | 1,000,000 | 223,239 | 56,158 | 56.16 | 2,219,984 | 2,219,633.6 | 2,216,080 | +| Calldataload (Empty) | 1,000,000 | 223,239 | 64,591 | 64.59 | 3,203,612 | 3,201,538 | 3,197,756 | +| Calldataload (One, Loop) | 1,000,000 | 223,239 | 76,577 | 76.58 | 3,370,408 | 3,370,408 | 3,370,408 | +| Calldataload (Zero, Loop) | 1,000,000 | 223,239 | 93,894 | 93.89 | 2,692,304 | 2,692,304 | 2,692,304 | +| Calldatasize (Calldata Length 0) | 1,000,000 | 223,239 | 33,778 | 33.78 | 2,491,028 | 2,489,145.7 | 2,486,148 | +| Calldatasize (Calldata Length 10000) | 1,000,000 | 223,239 | 34,749 | 34.75 | 2,479,316 | 2,477,269.5 | 2,472,484 | +| Calldatasize (Calldata Length 1000) | 1,000,000 | 223,239 | 34,984 | 34.98 | 2,743,044 | 2,743,044 | 2,742,068 | +| Callvalue (From Origin False, Non Zero Value False) | 1,000,000 | 223,239 | 35,408 | 35.41 | 3,345,044 | 3,345,044 | 3,345,044 | +| Callvalue (From Origin False, Non Zero Value True) | 1,000,000 | 223,239 | 39,887 | 39.89 | 2,460,772 | 2,459,991.2 | 2,449,060 | +| Callvalue (From Origin True, Non Zero Value False) | 1,000,000 | 223,239 | 41,417 | 41.42 | 1,290,584 | 1,283,556.8 | 1,265,208 | +| Callvalue (From Origin True, Non Zero Value True) | 1,000,000 | 223,239 | 41,821 | 41.82 | 746,972 | 739,652 | 724,524 | +| Dup (Dup10) | 1,000,000 | 223,239 | 26,174 | 26.17 | 3,271,884 | 3,271,884 | 3,271,884 | +| Dup (Dup11) | 1,000,000 | 223,239 | 32,244 | 32.24 | 2,820,136 | 2,820,136 | 2,817,208 | +| Dup (Dup12) | 1,000,000 | 223,239 | 29,063 | 29.06 | 637,400 | 637,224.3 | 628,616 | +| Dup (Dup13) | 1,000,000 | 223,239 | 31,732 | 31.73 | 2,796,716 | 2,796,576.6 | 2,786,956 | +| Dup (Dup14) | 1,000,000 | 223,239 | 26,891 | 26.89 | 3,348,948 | 3,348,948 | 3,348,948 | +| Dup (Dup15) | 1,000,000 | 223,239 | 31,836 | 31.84 | 2,184,848 | 2,184,418.6 | 2,176,064 | +| Dup (Dup16) | 1,000,000 | 223,239 | 26,813 | 26.81 | 3,550,916 | 3,550,916 | 3,550,916 | +| Dup (Dup1) | 1,000,000 | 223,239 | 26,886 | 26.89 | 3,275,788 | 3,275,788 | 3,275,788 | +| Dup (Dup2) | 1,000,000 | 223,239 | 27,668 | 27.67 | 3,374,312 | 3,374,312 | 3,373,336 | +| Dup (Dup3) | 1,000,000 | 223,239 | 31,746 | 31.75 | 1,610,712 | 1,602,836.7 | 1,592,168 | +| Dup (Dup4) | 1,000,000 | 223,239 | 31,506 | 31.51 | 2,748,896 | 2,748,733.3 | 2,742,064 | +| Dup (Dup5) | 1,000,000 | 223,239 | 30,593 | 30.59 | 3,107,032 | 3,107,032 | 3,102,152 | +| Dup (Dup6) | 1,000,000 | 223,239 | 32,476 | 32.48 | 2,334,164 | 2,333,263.1 | 2,330,260 | +| Dup (Dup7) | 1,000,000 | 223,239 | 31,509 | 31.51 | 2,573,256 | 2,570,982.1 | 2,560,568 | +| Dup (Dup8) | 1,000,000 | 223,239 | 27,502 | 27.50 | 3,268,960 | 3,268,960 | 3,268,960 | +| Dup (Dup9) | 1,000,000 | 223,239 | 31,295 | 31.30 | 2,237,548 | 2,236,454.9 | 2,233,644 | +| Jumpdests | 1,000,000 | 223,239 | 34,147 | 34.15 | 3,369,436 | 3,369,436 | 3,368,460 | +| Jumpi Fallthrough | 1,000,000 | 223,239 | 46,124 | 46.12 | 1,793,480 | 1,789,942 | 1,775,912 | +| Jumpis | 1,000,000 | 223,239 | 28,931 | 28.93 | 3,001,640 | 3,001,640 | 3,001,640 | +| Jumps | 1,000,000 | 223,239 | 22,916 | 22.92 | 2,424,660 | 2,421,328.1 | 2,413,924 | +| Keccak | 1,000,000 | 223,239 | 174,428 | 174.43 | 2,227,532 | 2,225,294.5 | 2,217,772 | +| Memory Access (Small Mem, Uninit Offset, Off 0, Mload) | 1,000,000 | 223,239 | 47,163 | 47.16 | 2,509,820 | 2,509,754.9 | 2,503,964 | +| Memory Access (Small Mem, Uninit Offset, Off 0, Mstore8) | 1,000,000 | 223,239 | 32,706 | 32.71 | 1,857,896 | 1,853,899.0 | 1,843,256 | +| Memory Access (Small Mem, Uninit Offset, Off 0, Mstore) | 1,000,000 | 223,239 | 49,592 | 49.59 | 1,084,908 | 1,062,888.8 | 1,032,204 | +| Memory Access (Small Mem, Uninit Offset, Off 1, Mload) | 1,000,000 | 223,239 | 48,072 | 48.07 | 3,002,616 | 3,002,616 | 3,002,616 | +| Memory Access (Small Mem, Uninit Offset, Off 1, Mstore8) | 1,000,000 | 223,239 | 32,061 | 32.06 | 2,311,464 | 2,309,414.4 | 2,303,656 | +| Memory Access (Small Mem, Uninit Offset, Off 1, Mstore) | 1,000,000 | 223,239 | 41,036 | 41.04 | 3,341,152 | 3,341,152 | 3,341,152 | +| Memory Access (Small Mem, Uninit Offset, Off 31, Mload) | 1,000,000 | 223,239 | 41,188 | 41.19 | 3,263,132 | 3,263,132 | 3,262,156 | +| Memory Access (Small Mem, Uninit Offset, Off 31, Mstore8) | 1,000,000 | 223,239 | 31,903 | 31.90 | 1,982,824 | 1,967,068.6 | 1,952,568 | +| Memory Access (Small Mem, Uninit Offset, Off 31, Mstore) | 1,000,000 | 223,239 | 48,883 | 48.88 | 2,640,584 | 2,640,106.4 | 2,638,632 | +| Memory Access (Small Mem, Init Offset, Off 0, Mload) | 1,000,000 | 223,239 | 47,227 | 47.23 | 2,327,336 | 2,327,140.8 | 2,319,528 | +| Memory Access (Small Mem, Init Offset, Off 0, Mstore8) | 1,000,000 | 223,239 | 27,717 | 27.72 | 3,242,652 | 3,242,652 | 3,242,652 | +| Memory Access (Small Mem, Init Offset, Off 0, Mstore) | 1,000,000 | 223,239 | 48,098 | 48.10 | 1,162,728 | 1,157,286.1 | 1,147,112 | +| Memory Access (Small Mem, Init Offset, Off 1, Mload) | 1,000,000 | 223,239 | 40,407 | 40.41 | 3,494,336 | 3,494,336 | 3,493,360 | +| Memory Access (Small Mem, Init Offset, Off 1, Mstore8) | 1,000,000 | 223,239 | 32,803 | 32.80 | 2,933,332 | 2,931,629.2 | 2,931,380 | +| Memory Access (Small Mem, Init Offset, Off 1, Mstore) | 1,000,000 | 223,239 | 40,053 | 40.05 | 3,117,748 | 3,117,748 | 3,115,796 | +| Memory Access (Small Mem, Init Offset, Off 31, Mload) | 1,000,000 | 223,239 | 46,772 | 46.77 | 2,252,908 | 2,252,893.6 | 2,250,956 | +| Memory Access (Small Mem, Init Offset, Off 31, Mstore8) | 1,000,000 | 223,239 | 31,523 | 31.52 | 2,403,188 | 2,403,165.8 | 2,403,188 | +| Memory Access (Small Mem, Init Offset, Off 31, Mstore) | 1,000,000 | 223,239 | 40,398 | 40.40 | 3,345,044 | 3,345,044 | 3,345,044 | +| Memory Access (Big Mem, Uninit Offset, Off 0, Mload) | 1,000,000 | 223,239 | 40,124 | 40.12 | 3,509,944 | 3,509,860.9 | 3,504,088 | +| Memory Access (Big Mem, Uninit Offset, Off 0, Mstore8) | 1,000,000 | 223,239 | 33,090 | 33.09 | 1,939,880 | 1,931,974.4 | 1,916,456 | +| Memory Access (Big Mem, Uninit Offset, Off 0, Mstore) | 1,000,000 | 223,239 | 48,450 | 48.45 | 2,491,276 | 2,491,276 | 2,490,300 | +| Memory Access (Big Mem, Uninit Offset, Off 1, Mload) | 1,000,000 | 223,239 | 48,505 | 48.51 | 3,014,328 | 3,011,949 | 3,008,472 | +| Memory Access (Big Mem, Uninit Offset, Off 1, Mstore8) | 1,000,000 | 223,239 | 27,884 | 27.88 | 3,352,844 | 3,352,844 | 3,352,844 | +| Memory Access (Big Mem, Uninit Offset, Off 1, Mstore) | 1,000,000 | 223,239 | 47,890 | 47.89 | 2,603,508 | 2,601,666.0 | 2,594,724 | +| Memory Access (Big Mem, Uninit Offset, Off 31, Mload) | 1,000,000 | 223,239 | 47,434 | 47.43 | 2,390,764 | 2,390,431.3 | 2,385,884 | +| Memory Access (Big Mem, Uninit Offset, Off 31, Mstore8) | 1,000,000 | 223,239 | 33,296 | 33.30 | 2,518,356 | 2,517,028.6 | 2,512,500 | +| Memory Access (Big Mem, Uninit Offset, Off 31, Mstore) | 1,000,000 | 223,239 | 48,627 | 48.63 | 2,976,268 | 2,976,185.3 | 2,970,412 | +| Memory Access (Big Mem, Init Offset, Off 0, Mload) | 1,000,000 | 223,239 | 47,724 | 47.72 | 842,864 | 820,281.0 | 794,064 | +| Memory Access (Big Mem, Init Offset, Off 0, Mstore8) | 1,000,000 | 223,239 | 27,131 | 27.13 | 3,274,812 | 3,274,742.3 | 3,271,884 | +| Memory Access (Big Mem, Init Offset, Off 0, Mstore) | 1,000,000 | 223,239 | 48,155 | 48.16 | 2,528,116 | 2,527,465.2 | 2,518,356 | +| Memory Access (Big Mem, Init Offset, Off 1, Mload) | 1,000,000 | 223,239 | 38,766 | 38.77 | 3,125,556 | 3,125,464.5 | 3,119,700 | +| Memory Access (Big Mem, Init Offset, Off 1, Mstore8) | 1,000,000 | 223,239 | 32,840 | 32.84 | 2,575,912 | 2,575,141.5 | 2,574,936 | +| Memory Access (Big Mem, Init Offset, Off 1, Mstore) | 1,000,000 | 223,239 | 40,421 | 40.42 | 3,310,912 | 3,310,912 | 3,310,912 | +| Memory Access (Big Mem, Init Offset, Off 31, Mload) | 1,000,000 | 223,239 | 46,940 | 46.94 | 2,883,568 | 2,883,196.2 | 2,879,664 | +| Memory Access (Big Mem, Init Offset, Off 31, Mstore8) | 1,000,000 | 223,239 | 31,947 | 31.95 | 2,952,848 | 2,952,437.1 | 2,946,992 | +| Memory Access (Big Mem, Init Offset, Off 31, Mstore) | 1,000,000 | 223,239 | 48,674 | 48.67 | 2,488,348 | 2,487,786.3 | 2,482,492 | +| Mod (Op Mod, Mod Bits 127) | 1,000,000 | 223,239 | 165,618 | 165.62 | 3,505,064 | 3,505,064 | 3,505,064 | +| Mod (Op Mod, Mod Bits 191) | 1,000,000 | 223,239 | 262,104 | 262.10 | 1,583,384 | 1,526,636.0 | 1,436,984 | +| Mod (Op Mod, Mod Bits 255) | 1,000,000 | 223,239 | 165,717 | 165.72 | 3,495,312 | 3,495,312 | 3,495,312 | +| Mod (Op Mod, Mod Bits 63) | 1,000,000 | 223,239 | 138,392 | 138.39 | 2,496,156 | 2,495,950.7 | 2,491,276 | +| Mod (Op Smod, Mod Bits 127) | 1,000,000 | 223,239 | 179,918 | 179.92 | 3,370,408 | 3,370,408 | 3,370,408 | +| Mod (Op Smod, Mod Bits 191) | 1,000,000 | 223,239 | 273,410 | 273.41 | 1,430,408 | 1,384,181.4 | 1,329,880 | +| Mod (Op Smod, Mod Bits 255) | 1,000,000 | 223,239 | 202,537 | 202.54 | 2,523,484 | 2,522,313.9 | 2,510,796 | +| Mod (Op Smod, Mod Bits 63) | 1,000,000 | 223,239 | 148,593 | 148.59 | 2,264,620 | 2,263,073.9 | 2,252,908 | +| Modarith (Op Addmod, Mod Bits 127) | 1,000,000 | 223,239 | 136,849 | 136.85 | 3,113,856 | 3,113,832.5 | 3,109,952 | +| Modarith (Op Addmod, Mod Bits 191) | 1,000,000 | 223,239 | 160,906 | 160.91 | 3,128,476 | 3,128,076.3 | 3,127,500 | +| Modarith (Op Addmod, Mod Bits 255) | 1,000,000 | 223,239 | 162,894 | 162.89 | 2,427,848 | 2,427,822.7 | 2,421,016 | +| Modarith (Op Addmod, Mod Bits 63) | 1,000,000 | 223,239 | 94,067 | 94.07 | 3,128,476 | 3,128,476 | 3,128,476 | +| Modarith (Op Mulmod, Mod Bits 127) | 1,000,000 | 223,239 | 283,789 | 283.79 | 2,275,608 | 2,264,692.7 | 2,243,400 | +| Modarith (Op Mulmod, Mod Bits 191) | 1,000,000 | 223,239 | 335,931 | 335.93 | 3,183,124 | 3,178,909.0 | 3,175,316 | +| Modarith (Op Mulmod, Mod Bits 255) | 1,000,000 | 223,239 | 381,740 | 381.74 | 1,506,536 | 1,476,687.1 | 1,430,408 | +| Modarith (Op Mulmod, Mod Bits 63) | 1,000,000 | 223,239 | 219,634 | 219.63 | 2,421,016 | 2,420,839.5 | 2,414,184 | +| Modexp (Mod 1045 Gas Base Heavy) | 1,000,000 | 223,239 | 3,410,394 | 3,410.39 | 3,549,940 | 3,549,075.1 | 3,545,060 | +| Modexp (Mod 1360 Gas Balanced) | 1,000,000 | 223,239 | 1,026,234 | 1,026.23 | 2,890,396 | 2,890,396 | 2,890,396 | +| Modexp (Mod 400 Gas Exp Heavy) | 1,000,000 | 223,239 | 1,058,921 | 1,058.92 | 3,494,340 | 3,494,017.2 | 3,493,364 | +| Modexp (Mod 408 Gas Balanced) | 1,000,000 | 223,239 | 761,007 | 761.01 | 3,267,984 | 3,267,088.6 | 3,266,032 | +| Modexp (Mod 408 Gas Base Heavy) | 1,000,000 | 223,239 | 3,765,293 | 3,765.29 | 2,327,080 | 2,324,399.6 | 2,312,440 | +| Modexp (Mod 600 As Balanced) | 1,000,000 | 223,239 | 913,363 | 913.36 | 2,847,460 | 2,843,817.2 | 2,840,628 | +| Modexp (Mod 600 Gas Exp Heavy) | 1,000,000 | 223,239 | 1,368,908 | 1,368.91 | 2,526,408 | 2,525,638.8 | 2,522,504 | +| Modexp (Mod 616 Gas Base Heavy) | 1,000,000 | 223,239 | 4,461,313 | 4,461.31 | 443,180 | 437,273.8 | 58,636 | +| Modexp (Mod 677 Gas Base Heavy) | 1,000,000 | 223,239 | 985,138 | 985.14 | 2,969,436 | 2,965,906.4 | 2,951,868 | +| Modexp (Mod 765 Gas Exp Heavy) | 1,000,000 | 223,239 | 1,113,896 | 1,113.90 | 2,216,796 | 2,189,883.6 | 2,107,484 | +| Modexp (Mod 767 Gas Balanced) | 1,000,000 | 223,239 | 866,972 | 866.97 | 2,712,552 | 2,664,540.5 | 2,583,720 | +| Modexp (Mod 800 Gas Base Heavy) | 1,000,000 | 223,239 | 3,462,131 | 3,462.13 | 3,340,180 | 3,337,722.2 | 3,334,324 | +| Modexp (Mod 800 Gas Exp Heavy) | 1,000,000 | 223,239 | 1,455,081 | 1,455.08 | 1,135,408 | 1,083,047.0 | 857,248 | +| Modexp (Mod 852 Gas Exp Heavy) | 1,000,000 | 223,239 | 1,432,624 | 1,432.62 | 2,249,980 | 2,248,568.7 | 2,229,484 | +| Modexp (Mod 867 Gas Base Heavy) | 1,000,000 | 223,239 | 3,496,251 | 3,496.25 | 3,307,008 | 3,306,385.9 | 3,302,128 | +| Modexp (Mod 996 Gas Balanced) | 1,000,000 | 223,239 | 744,028 | 744.03 | 3,307,008 | 3,307,007.6 | 3,307,008 | +| Modexp (Mod Even 1024B Exp 1024) | 1,000,000 | 223,239 | 5,130 | 5.13 | 3,523,604 | 3,523,604 | 3,522,628 | +| Modexp (Mod Even 128B Exp 1024) | 1,000,000 | 223,239 | 690,538 | 690.54 | 3,243,628 | 3,239,389.2 | 3,218,252 | +| Modexp (Mod Even 16B Exp 320) | 1,000,000 | 223,239 | 1,357,282 | 1,357.28 | 3,094,352 | 3,094,085.8 | 3,085,568 | +| Modexp (Mod Even 24B Exp 168) | 1,000,000 | 223,239 | 941,758 | 941.76 | 3,346,024 | 3,345,353.7 | 3,343,096 | +| Modexp (Mod Even 256B Exp 1024) | 1,000,000 | 223,239 | 495,722 | 495.72 | 3,503,116 | 3,503,116 | 3,503,116 | +| Modexp (Mod Even 32B Exp 256) | 1,000,000 | 223,239 | 1,054,206 | 1,054.21 | 2,317,576 | 2,307,138.9 | 2,275,608 | +| Modexp (Mod Even 32B Exp 40) | 1,000,000 | 223,239 | 854,192 | 854.19 | 2,513,476 | 2,503,752.9 | 2,491,028 | +| Modexp (Mod Even 32B Exp 96) | 1,000,000 | 223,239 | 840,013 | 840.01 | 3,503,116 | 3,502,735.9 | 3,502,140 | +| Modexp (Mod Even 512B Exp 1024) | 1,000,000 | 223,239 | 6,585 | 6.58 | 2,243,404 | 2,242,567.4 | 2,237,548 | +| Modexp (Mod Even 64B Exp 512) | 1,000,000 | 223,239 | 908,737 | 908.74 | 2,413,208 | 2,412,157.1 | 2,398,568 | +| Modexp (Mod Even 8B Exp 896) | 1,000,000 | 223,239 | 2,281,888 | 2,281.89 | 2,550,808 | 2,549,779.6 | 2,534,216 | +| Modexp (Mod Exp 208 Gas Balanced) | 1,000,000 | 223,239 | 678,173 | 678.17 | 3,279,684 | 3,278,605.9 | 3,276,756 | +| Modexp (Mod Exp 215 Gas Exp Heavy) | 1,000,000 | 223,239 | 1,694,451 | 1,694.45 | 3,476,780 | 3,457,568.2 | 3,410,412 | +| Modexp (Mod Exp 298 Gas Exp Heavy) | 1,000,000 | 223,239 | 1,877,381 | 1,877.38 | 3,267,036 | 3,265,675.0 | 3,264,108 | +| Modexp (Mod Min As Balanced) | 1,000,000 | 223,239 | 855,426 | 855.43 | 1,975,732 | 1,941,013.2 | 1,816,644 | +| Modexp (Mod Min As Base Heavy) | 1,000,000 | 223,239 | 3,078,726 | 3,078.73 | 3,078,736 | 3,077,919.4 | 3,075,808 | +| Modexp (Mod Min As Exp Heavy) | 1,000,000 | 223,239 | 1,753,229 | 1,753.23 | 3,328,468 | 3,328,270.2 | 3,323,588 | +| Modexp (Mod Odd 1024B Exp 1024) | 1,000,000 | 223,239 | 6,379 | 6.38 | 853,596 | 851,418.8 | 843,836 | +| Modexp (Mod Odd 128B Exp 1024) | 1,000,000 | 223,239 | 820,295 | 820.29 | 2,651,316 | 2,649,580.3 | 2,639,604 | +| Modexp (Mod Odd 256B Exp 1024) | 1,000,000 | 223,239 | 492,093 | 492.09 | 3,137,256 | 3,130,686.4 | 3,127,496 | +| Modexp (Mod Odd 32B Exp 256) | 1,000,000 | 223,239 | 1,052,249 | 1,052.25 | 1,666,600 | 1,612,631.4 | 1,512,392 | +| Modexp (Mod Odd 32B Exp 96) | 1,000,000 | 223,239 | 806,990 | 806.99 | 3,489,464 | 3,488,567.7 | 3,481,656 | +| Modexp (Mod Odd 32B Exp Cover Windows) | 1,000,000 | 223,239 | 751,167 | 751.17 | 3,098,256 | 3,097,621.9 | 3,095,328 | +| Modexp (Mod Odd 512B Exp 1024) | 1,000,000 | 223,239 | 5,225 | 5.22 | 3,216,300 | 3,215,128.8 | 3,214,348 | +| Modexp (Mod Odd 64B Exp 512) | 1,000,000 | 223,239 | 897,579 | 897.58 | 2,609,360 | 2,609,005.5 | 2,603,504 | +| Modexp (Mod Pawel 2) | 1,000,000 | 223,239 | 1,098,648 | 1,098.65 | 3,172,388 | 3,160,062.7 | 3,140,180 | +| Modexp (Mod Pawel 3) | 1,000,000 | 223,239 | 892,982 | 892.98 | 3,300,176 | 3,299,822.0 | 3,289,440 | +| Modexp (Mod Pawel 4) | 1,000,000 | 223,239 | 948,608 | 948.61 | 3,052,392 | 3,050,860.7 | 3,045,560 | +| Modexp (Mod Vul Common 1152N1) | 1,000,000 | 223,239 | 568,672 | 568.67 | 3,097,276 | 3,097,276 | 3,097,276 | +| Modexp (Mod Vul Common 1349N1) | 1,000,000 | 223,239 | 806,982 | 806.98 | 2,334,888 | 2,334,544.3 | 2,326,104 | +| Modexp (Mod Vul Common 1360N1) | 1,000,000 | 223,239 | 763,049 | 763.05 | 3,249,484 | 3,249,484 | 3,247,532 | +| Modexp (Mod Vul Common 1360N2) | 1,000,000 | 223,239 | 819,730 | 819.73 | 2,878,688 | 2,876,530.9 | 2,860,144 | +| Modexp (Mod Vul Common 200N1) | 1,000,000 | 223,239 | 443,964 | 443.96 | 2,929,428 | 2,924,697.3 | 2,916,740 | +| Modexp (Mod Vul Common 200N2) | 1,000,000 | 223,239 | 577,112 | 577.11 | 2,692,304 | 2,692,304 | 2,692,304 | +| Modexp (Mod Vul Common 200N3) | 1,000,000 | 223,239 | 482,800 | 482.80 | 3,313,840 | 3,313,792.5 | 3,310,912 | +| Modexp (Mod Vul Example 1) | 1,000,000 | 223,239 | 1,028,921 | 1,028.92 | 2,160,452 | 2,139,080.1 | 2,027,716 | +| Modexp (Mod Vul Example 2) | 1,000,000 | 223,239 | 976,261 | 976.26 | 2,452,236 | 2,452,086.9 | 2,450,284 | +| Modexp (Mod Vul Guido 1 Even) | 1,000,000 | 223,239 | 698,372 | 698.37 | 2,039,168 | 2,023,544.7 | 2,005,008 | +| Modexp (Mod Vul Guido 2 Even) | 1,000,000 | 223,239 | 1,219,499 | 1,219.50 | 2,889,420 | 2,888,313.9 | 2,885,516 | +| Modexp (Mod Vul Guido 3 Even) | 1,000,000 | 223,239 | 1,719,570 | 1,719.57 | 3,264,108 | 3,263,216.5 | 3,263,132 | +| Modexp (Mod Vul Marius 1 Even) | 1,000,000 | 223,239 | 1,096,325 | 1,096.33 | 3,037,752 | 3,028,202.0 | 3,015,304 | +| Modexp (Mod Vul Nagydani 1 Pow 0X10001) | 1,000,000 | 223,239 | 728,858 | 728.86 | 3,070,936 | 3,068,472.1 | 3,061,176 | +| Modexp (Mod Vul Nagydani 1 Qube) | 1,000,000 | 223,239 | 541,252 | 541.25 | 2,471,508 | 2,470,513.7 | 2,460,772 | +| Modexp (Mod Vul Nagydani 1 Square) | 1,000,000 | 223,239 | 515,055 | 515.05 | 1,287,916 | 1,224,186.4 | 1,085,884 | +| Modexp (Mod Vul Nagydani 2 Pow 0X10001) | 1,000,000 | 223,239 | 654,380 | 654.38 | 3,541,160 | 3,540,441.1 | 3,539,208 | +| Modexp (Mod Vul Nagydani 2 Qube) | 1,000,000 | 223,239 | 1,710,897 | 1,710.90 | 2,703,040 | 2,702,670.9 | 2,700,112 | +| Modexp (Mod Vul Nagydani 2 Square) | 1,000,000 | 223,239 | 1,322,744 | 1,322.74 | 3,499,212 | 3,499,211.2 | 3,499,212 | +| Modexp (Mod Vul Nagydani 3 Pow 0X10001) | 1,000,000 | 223,239 | 634,550 | 634.55 | 567,128 | 565,797.6 | 552,488 | +| Modexp (Mod Vul Nagydani 3 Qube) | 1,000,000 | 223,239 | 4,092,095 | 4,092.09 | 2,740,124 | 2,737,371.6 | 2,722,556 | +| Modexp (Mod Vul Nagydani 3 Square) | 1,000,000 | 223,239 | 3,200,980 | 3,200.98 | 3,286,512 | 3,285,556.0 | 3,280,656 | +| Modexp (Mod Vul Nagydani 4 Pow 0X10001) | 1,000,000 | 223,239 | 571,845 | 571.85 | 3,398,708 | 3,388,700.9 | 3,383,092 | +| Modexp (Mod Vul Nagydani 4 Qube) | 1,000,000 | 223,239 | 3,929,172 | 3,929.17 | 616,904 | 601,557.3 | 569,080 | +| Modexp (Mod Vul Nagydani 4 Square) | 1,000,000 | 223,239 | 4,222,531 | 4,222.53 | 2,677,668 | 2,674,612.2 | 2,659,124 | +| Modexp (Mod Vul Nagydani 5 Pow 0X10001) | 1,000,000 | 223,239 | 531,775 | 531.77 | 3,355,772 | 3,354,707.1 | 3,352,844 | +| Modexp (Mod Vul Nagydani 5 Qube) | 1,000,000 | 223,239 | 4,171,793 | 4,171.79 | 553,468 | 526,616.3 | 437,324 | +| Modexp (Mod Vul Nagydani 5 Square) | 1,000,000 | 223,239 | 4,247,664 | 4,247.66 | 2,363,444 | 2,358,833.9 | 2,334,164 | +| Modexp (Mod Vul Pawel 1 Exp Heavy) | 1,000,000 | 223,239 | 2,109,591 | 2,109.59 | 3,085,568 | 3,085,412.6 | 3,077,760 | +| Modexp (Mod Vul Pawel 2 Exp Heavy) | 1,000,000 | 223,239 | 1,031,809 | 1,031.81 | 3,310,912 | 3,310,912 | 3,310,912 | +| Modexp (Mod Vul Pawel 3 Exp Heavy) | 1,000,000 | 223,239 | 996,610 | 996.61 | 2,839,656 | 2,837,120.4 | 2,828,920 | +| Modexp (Mod Vul Pawel 4 Exp Heavy) | 1,000,000 | 223,239 | 757,689 | 757.69 | 3,545,064 | 3,544,899.5 | 3,541,160 | +| Msize (Mem Size 0) | 1,000,000 | 223,239 | 40,919 | 40.92 | 3,357,724 | 3,357,699.6 | 3,355,772 | +| Msize (Mem Size 1000000) | 1,000,000 | 223,239 | 49,060 | 49.06 | 2,436,372 | 2,434,850.1 | 2,432,468 | +| Msize (Mem Size 100000) | 1,000,000 | 223,239 | 49,922 | 49.92 | 2,849,412 | 2,849,412 | 2,849,412 | +| Msize (Mem Size 1000) | 1,000,000 | 223,239 | 41,302 | 41.30 | 3,373,336 | 3,373,257.9 | 3,372,360 | +| Msize (Mem Size 1) | 1,000,000 | 223,239 | 48,787 | 48.79 | 2,373,200 | 2,372,307.1 | 2,362,464 | +| Precompile Fixed Cost (Blake2F) | 1,000,000 | 223,239 | 783,245 | 783.25 | 437,324 | 418,592.7 | 55,708 | +| Precompile Fixed Cost (Bls12 Fp To G1) | 1,000,000 | 223,239 | 88,758 | 88.76 | 1,148,092 | 1,145,409.9 | 1,134,428 | +| Precompile Fixed Cost (Bls12 Fp To G2) | 1,000,000 | 223,239 | 64,902 | 64.90 | 1,368,664 | 1,346,871.3 | 1,316,936 | +| Precompile Fixed Cost (Bls12 G1Add) | 1,000,000 | 223,239 | 63,417 | 63.42 | 2,898,204 | 2,896,870.1 | 2,891,372 | +| Precompile Fixed Cost (Bls12 G1Msm) | 1,000,000 | 223,239 | 96,590 | 96.59 | 3,098,252 | 3,098,252 | 3,097,276 | +| Precompile Fixed Cost (Bls12 G2Add) | 1,000,000 | 223,239 | 65,070 | 65.07 | 3,546,040 | 3,546,040 | 3,545,064 | +| Precompile Fixed Cost (Bls12 G2Msm) | 1,000,000 | 223,239 | 68,955 | 68.95 | 2,742,068 | 2,741,915.8 | 2,738,164 | +| Precompile Fixed Cost (Bls12 Pairing Check) | 1,000,000 | 223,239 | 127,227 | 127.23 | 2,701,088 | 2,701,021.6 | 2,692,304 | +| Precompile Fixed Cost (Bn128 Add) | 1,000,000 | 223,239 | 71,986 | 71.99 | 3,261,184 | 3,261,184 | 3,261,184 | +| Precompile Fixed Cost (Bn128 Add 1 2) | 1,000,000 | 223,239 | 73,102 | 73.10 | 3,311,888 | 3,311,888 | 3,310,912 | +| Precompile Fixed Cost (Bn128 Add Infinities) | 1,000,000 | 223,239 | 42,468 | 42.47 | 3,488,488 | 3,488,488 | 3,488,488 | +| Precompile Fixed Cost (Bn128 Mul) | 1,000,000 | 223,239 | 312,262 | 312.26 | 2,977,244 | 2,975,494.7 | 2,975,292 | +| Precompile Fixed Cost (Bn128 Mul 1 2 2 Scalar) | 1,000,000 | 223,239 | 9,522 | 9.52 | 3,309,936 | 3,309,875 | 3,307,008 | +| Precompile Fixed Cost (Bn128 Mul 1 2 32 Byte Scalar) | 1,000,000 | 223,239 | 297,308 | 297.31 | 625,956 | 603,336.4 | 250,196 | +| Precompile Fixed Cost (Bn128 Mul 32 Byte Coord And 2 Scalar) | 1,000,000 | 223,239 | 11,592 | 11.59 | 2,627,900 | 2,627,900 | 2,623,020 | +| Precompile Fixed Cost (Bn128 Mul 32 Byte Coord And Scalar) | 1,000,000 | 223,239 | 304,777 | 304.78 | 2,283,164 | 2,282,916.2 | 2,273,404 | +| Precompile Fixed Cost (Bn128 Mul Infinities 2 Scalar) | 1,000,000 | 223,239 | 9,338 | 9.34 | 3,345,044 | 3,344,986.6 | 3,345,044 | +| Precompile Fixed Cost (Bn128 Mul Infinities 32 Byte Scalar) | 1,000,000 | 223,239 | 157,970 | 157.97 | 3,116,776 | 3,116,776 | 3,116,776 | +| Precompile Fixed Cost (Bn128 One Pairing) | 1,000,000 | 223,239 | 289,463 | 289.46 | 2,589,848 | 2,588,510.4 | 2,585,944 | +| Precompile Fixed Cost (Bn128 Two Pairings) | 1,000,000 | 223,239 | 237,705 | 237.71 | 3,505,064 | 3,505,064 | 3,505,064 | +| Precompile Fixed Cost (Bn128 Two Pairings Empty) | 1,000,000 | 223,239 | 5,513 | 5.51 | 3,384,072 | 3,383,876.8 | 3,375,288 | +| Precompile Fixed Cost (Ecrecover) | 1,000,000 | 223,239 | 294,874 | 294.87 | 3,069,956 | 3,069,956 | 3,069,956 | +| Precompile Fixed Cost (Point Evaluation) | 1,000,000 | 223,239 | 325,230 | 325.23 | 2,451,264 | 2,450,144.5 | 2,438,576 | +| Precompile Only Data Input (Identity) | 1,000,000 | 223,239 | 26,810 | 26.81 | 2,976,268 | 2,976,268 | 2,976,268 | +| Precompile Only Data Input (Ripemd, 160) | 1,000,000 | 223,239 | 18,575 | 18.57 | 2,024,792 | 2,020,888 | 2,001,368 | +| Precompile Only Data Input (Sha2, 256) | 1,000,000 | 223,239 | 11,507 | 11.51 | 1,952,568 | 1,945,178.3 | 1,939,880 | +| Push (Push0) | 1,000,000 | 223,239 | 39,776 | 39.78 | 3,127,504 | 3,127,504 | 3,126,528 | +| Push (Push10) | 1,000,000 | 223,239 | 33,443 | 33.44 | 3,480,684 | 3,480,684 | 3,479,708 | +| Push (Push11) | 1,000,000 | 223,239 | 35,730 | 35.73 | 3,307,984 | 3,307,984 | 3,307,984 | +| Push (Push12) | 1,000,000 | 223,239 | 36,002 | 36.00 | 3,530,432 | 3,530,404.1 | 3,530,432 | +| Push (Push13) | 1,000,000 | 223,239 | 43,723 | 43.72 | 2,581,064 | 2,581,044.3 | 2,576,184 | +| Push (Push14) | 1,000,000 | 223,239 | 39,653 | 39.65 | 3,110,936 | 3,110,918.5 | 3,110,936 | +| Push (Push15) | 1,000,000 | 223,239 | 39,275 | 39.27 | 3,117,756 | 3,117,756 | 3,116,780 | +| Push (Push16) | 1,000,000 | 223,239 | 39,527 | 39.53 | 3,551,892 | 3,551,466.4 | 3,550,916 | +| Push (Push17) | 1,000,000 | 223,239 | 39,680 | 39.68 | 3,277,732 | 3,277,732 | 3,275,780 | +| Push (Push18) | 1,000,000 | 223,239 | 40,762 | 40.76 | 3,325,544 | 3,325,534.1 | 3,324,568 | +| Push (Push19) | 1,000,000 | 223,239 | 42,590 | 42.59 | 3,324,568 | 3,324,557.3 | 3,324,568 | +| Push (Push1) | 1,000,000 | 223,239 | 28,779 | 28.78 | 2,814,280 | 2,812,626.2 | 2,804,520 | +| Push (Push20) | 1,000,000 | 223,239 | 52,204 | 52.20 | 2,542,744 | 2,541,494.7 | 2,538,840 | +| Push (Push21) | 1,000,000 | 223,239 | 53,335 | 53.34 | 1,916,456 | 1,908,753.5 | 1,894,984 | +| Push (Push22) | 1,000,000 | 223,239 | 56,596 | 56.60 | 2,398,572 | 2,397,847.6 | 2,391,740 | +| Push (Push23) | 1,000,000 | 223,239 | 48,682 | 48.68 | 3,110,936 | 3,110,936 | 3,110,936 | +| Push (Push24) | 1,000,000 | 223,239 | 60,569 | 60.57 | 2,533,964 | 2,532,866 | 2,532,012 | +| Push (Push25) | 1,000,000 | 223,239 | 51,395 | 51.40 | 3,344,076 | 3,344,076 | 3,342,124 | +| Push (Push26) | 1,000,000 | 223,239 | 62,706 | 62.71 | 2,438,324 | 2,438,324 | 2,436,372 | +| Push (Push27) | 1,000,000 | 223,239 | 64,312 | 64.31 | 2,563,224 | 2,561,969.1 | 2,549,560 | +| Push (Push28) | 1,000,000 | 223,239 | 55,182 | 55.18 | 3,506,044 | 3,506,044 | 3,505,068 | +| Push (Push29) | 1,000,000 | 223,239 | 64,266 | 64.27 | 2,467,852 | 2,467,775.8 | 2,466,876 | +| Push (Push2) | 1,000,000 | 223,239 | 30,611 | 30.61 | 2,702,064 | 2,702,064 | 2,702,064 | +| Push (Push30) | 1,000,000 | 223,239 | 69,107 | 69.11 | 2,537,868 | 2,536,732.7 | 2,534,940 | +| Push (Push31) | 1,000,000 | 223,239 | 58,805 | 58.80 | 3,410,420 | 3,404,320 | 3,400,660 | +| Push (Push32) | 1,000,000 | 223,239 | 63,232 | 63.23 | 3,541,160 | 3,541,160 | 3,541,160 | +| Push (Push3) | 1,000,000 | 223,239 | 33,469 | 33.47 | 2,996,760 | 2,996,760 | 2,987,976 | +| Push (Push4) | 1,000,000 | 223,239 | 27,642 | 27.64 | 3,266,036 | 3,266,036 | 3,265,060 | +| Push (Push5) | 1,000,000 | 223,239 | 35,384 | 35.38 | 849,440 | 840,009.9 | 822,112 | +| Push (Push6) | 1,000,000 | 223,239 | 31,307 | 31.31 | 3,540,188 | 3,540,188 | 3,540,188 | +| Push (Push7) | 1,000,000 | 223,239 | 38,677 | 38.68 | 2,720,360 | 2,718,880.3 | 2,715,480 | +| Push (Push8) | 1,000,000 | 223,239 | 37,400 | 37.40 | 2,532,992 | 2,531,235 | 2,528,112 | +| Push (Push9) | 1,000,000 | 223,239 | 37,577 | 37.58 | 1,815,668 | 1,803,956 | 1,781,508 | +| Return Revert (1Kib Of Non, Zero Data, Return) | 1,000,000 | 223,239 | 48,806 | 48.81 | 1,891,080 | 1,875,240.9 | 1,858,872 | +| Return Revert (1Kib Of Non, Zero Data, Revert) | 1,000,000 | 223,239 | 53,399 | 53.40 | 2,574,936 | 2,571,926.7 | 2,563,224 | +| Return Revert (1Kib Of Zero Data, Return) | 1,000,000 | 223,239 | 53,451 | 53.45 | 3,370,408 | 3,370,408 | 3,370,408 | +| Return Revert (1Kib Of Zero Data, Revert) | 1,000,000 | 223,239 | 56,316 | 56.32 | 3,479,708 | 3,479,708 | 3,477,756 | +| Return Revert (1Mib Of Non, Zero Data, Return) | 1,000,000 | 223,239 | 6,818 | 6.82 | 3,094,352 | 3,094,352 | 3,094,352 | +| Return Revert (1Mib Of Non, Zero Data, Revert) | 1,000,000 | 223,239 | 7,129 | 7.13 | 2,404,164 | 2,402,781.3 | 2,396,356 | +| Return Revert (1Mib Of Zero Data, Return) | 1,000,000 | 223,239 | 5,159 | 5.16 | 641,568 | 641,324 | 636,688 | +| Return Revert (1Mib Of Zero Data, Revert) | 1,000,000 | 223,239 | 6,016 | 6.02 | 2,932,356 | 2,932,160.8 | 2,928,452 | +| Return Revert (Empty, Return) | 1,000,000 | 223,239 | 71,112 | 71.11 | 3,353,820 | 3,353,820 | 3,352,844 | +| Return Revert (Empty, Revert) | 1,000,000 | 223,239 | 95,963 | 95.96 | 3,044,584 | 3,043,282.7 | 3,037,752 | +| Returndatasize Nonzero (Returned Size 0, Return Data Style Returndatastyle.Identity) | 1,000,000 | 223,239 | 30,411 | 30.41 | 3,289,440 | 3,289,440 | 3,289,440 | +| Returndatasize Nonzero (Returned Size 0, Return Data Style Returndatastyle.Return) | 1,000,000 | 223,239 | 36,344 | 36.34 | 1,774,676 | 1,766,443.7 | 1,753,204 | +| Returndatasize Nonzero (Returned Size 0, Return Data Style Returndatastyle.Revert) | 1,000,000 | 223,239 | 35,137 | 35.14 | 2,053,808 | 2,050,880 | 2,042,096 | +| Returndatasize Nonzero (Returned Size 1, Return Data Style Returndatastyle.Identity) | 1,000,000 | 223,239 | 29,829 | 29.83 | 3,499,216 | 3,499,171.5 | 3,499,216 | +| Returndatasize Nonzero (Returned Size 1, Return Data Style Returndatastyle.Return) | 1,000,000 | 223,239 | 36,381 | 36.38 | 2,678,644 | 2,678,644 | 2,677,668 | +| Returndatasize Nonzero (Returned Size 1, Return Data Style Returndatastyle.Revert) | 1,000,000 | 223,239 | 36,402 | 36.40 | 2,708,896 | 2,706,996.8 | 2,703,040 | +| Returndatasize Zero | 1,000,000 | 223,239 | 36,876 | 36.88 | 2,361,228 | 2,359,197.5 | 2,347,564 | +| Shifts (Shift Right Sar) | 1,000,000 | 223,239 | 73,283 | 73.28 | 2,622,044 | 2,622,044 | 2,617,164 | +| Shifts (Shift Right Shr) | 1,000,000 | 223,239 | 57,032 | 57.03 | 3,536,284 | 3,536,204.3 | 3,532,380 | +| Swap (Swap10) | 1,000,000 | 223,239 | 75,972 | 75.97 | 1,815,928 | 1,807,597.1 | 1,793,480 | +| Swap (Swap11) | 1,000,000 | 223,239 | 73,645 | 73.64 | 2,783,056 | 2,782,964.2 | 2,772,320 | +| Swap (Swap12) | 1,000,000 | 223,239 | 64,209 | 64.21 | 3,530,432 | 3,530,183.9 | 3,528,480 | +| Swap (Swap13) | 1,000,000 | 223,239 | 61,311 | 61.31 | 3,116,784 | 3,116,784 | 3,115,808 | +| Swap (Swap14) | 1,000,000 | 223,239 | 73,777 | 73.78 | 2,383,676 | 2,383,629.9 | 2,374,892 | +| Swap (Swap15) | 1,000,000 | 223,239 | 75,045 | 75.05 | 1,408,680 | 1,389,357.8 | 1,367,688 | +| Swap (Swap16) | 1,000,000 | 223,239 | 62,677 | 62.68 | 3,530,428 | 3,530,428 | 3,530,428 | +| Swap (Swap1) | 1,000,000 | 223,239 | 60,225 | 60.23 | 3,191,908 | 3,189,124.6 | 3,187,028 | +| Swap (Swap2) | 1,000,000 | 223,239 | 72,902 | 72.90 | 3,007,496 | 3,006,461.4 | 3,004,568 | +| Swap (Swap3) | 1,000,000 | 223,239 | 61,452 | 61.45 | 3,400,660 | 3,400,017.9 | 3,399,684 | +| Swap (Swap4) | 1,000,000 | 223,239 | 74,049 | 74.05 | 2,827,944 | 2,826,888.9 | 2,825,992 | +| Swap (Swap5) | 1,000,000 | 223,239 | 61,749 | 61.75 | 3,258,268 | 3,258,230.2 | 3,251,436 | +| Swap (Swap6) | 1,000,000 | 223,239 | 73,870 | 73.87 | 724,524 | 705,244.5 | 666,940 | +| Swap (Swap7) | 1,000,000 | 223,239 | 74,224 | 74.22 | 2,534,216 | 2,534,159.4 | 2,526,408 | +| Swap (Swap8) | 1,000,000 | 223,239 | 62,775 | 62.77 | 3,281,636 | 3,281,636 | 3,280,660 | +| Swap (Swap9) | 1,000,000 | 223,239 | 73,989 | 73.99 | 1,646,824 | 1,634,754.1 | 1,609,736 | +| Tload (Val Mut False, Key Mut False) | 1,000,000 | 223,239 | 9,757 | 9.76 | 1,265,208 | 1,264,320.7 | 1,262,280 | +| Tload (Val Mut False, Key Mut True) | 1,000,000 | 223,239 | 9,103 | 9.10 | 2,385,888 | 2,385,278 | 2,380,032 | +| Tload (Val Mut True, Key Mut False) | 1,000,000 | 223,239 | 9,574 | 9.57 | 3,317,740 | 3,317,170.7 | 3,313,836 | +| Tload (Val Mut True, Key Mut True) | 1,000,000 | 223,239 | 10,871 | 10.87 | 2,825,016 | 2,824,483.6 | 2,820,136 | +| Tstore (Dense Val Mut False, Key Mut False) | 1,000,000 | 223,239 | 28,185 | 28.18 | 2,341,720 | 2,341,273.8 | 2,334,888 | +| Tstore (Dense Val Mut False, Key Mut True) | 1,000,000 | 223,239 | 23,656 | 23.66 | 3,370,408 | 3,370,408 | 3,370,408 | +| Tstore (Dense Val Mut True, Key Mut False) | 1,000,000 | 223,239 | 53,475 | 53.48 | 2,503,964 | 2,503,229.8 | 2,497,132 | +| Tstore (Dense Val Mut True, Key Mut True) | 1,000,000 | 223,239 | 43,181 | 43.18 | 3,371,388 | 3,371,388 | 3,371,388 | +| Unop (Iszero) | 1,000,000 | 223,239 | 65,813 | 65.81 | 3,482,636 | 3,481,679.1 | 3,480,684 | +| Unop (Not) | 1,000,000 | 223,239 | 29,597 | 29.60 | 2,341,720 | 2,341,720 | 2,341,720 | +| Zero Param (Address) | 1,000,000 | 223,239 | 72,814 | 72.81 | 3,521,652 | 3,520,690.1 | 3,520,676 | +| Zero Param (Basefee) | 1,000,000 | 223,239 | 41,740 | 41.74 | 3,118,724 | 3,117,770.7 | 3,117,748 | +| Zero Param (Blobbasefee) | 1,000,000 | 223,239 | 65,999 | 66.00 | 1,714,424 | 1,705,659.5 | 1,693,928 | +| Zero Param (Caller) | 1,000,000 | 223,239 | 74,891 | 74.89 | 3,504,088 | 3,504,088 | 3,504,088 | +| Zero Param (Chainid) | 1,000,000 | 223,239 | 42,561 | 42.56 | 3,518,724 | 3,518,724 | 3,513,844 | +| Zero Param (Codesize) | 1,000,000 | 223,239 | 48,382 | 48.38 | 1,260,328 | 1,253,413.3 | 1,243,736 | +| Zero Param (Coinbase) | 1,000,000 | 223,239 | 73,301 | 73.30 | 3,494,344 | 3,494,344 | 3,492,392 | +| Zero Param (Gaslimit) | 1,000,000 | 223,239 | 42,617 | 42.62 | 3,490,440 | 3,490,440 | 3,490,440 | +| Zero Param (Gasprice) | 1,000,000 | 223,239 | 50,659 | 50.66 | 3,367,484 | 3,366,139.3 | 3,359,676 | +| Zero Param (Gas) | 1,000,000 | 223,239 | 50,732 | 50.73 | 2,861,124 | 2,860,570.1 | 2,855,268 | +| Zero Param (Number) | 1,000,000 | 223,239 | 45,356 | 45.36 | 3,346,996 | 3,346,996 | 3,346,020 | +| Zero Param (Origin) | 1,000,000 | 223,239 | 89,108 | 89.11 | 816,264 | 790,018.4 | 745,992 | +| Zero Param (Prevrandao) | 1,000,000 | 223,239 | 94,005 | 94.00 | 3,309,936 | 3,309,936 | 3,308,960 | +| Zero Param (Timestamp) | 1,000,000 | 223,239 | 51,617 | 51.62 | 2,854,292 | 2,853,966.7 | 2,851,364 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 0Bytes, Call) | 1,000,000 | 223,239 | 55,684 | 55.68 | 1,316,936 | 1,310,019.9 | 1,291,560 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 0Bytes, Transaction) | 1,000,000 | 223,239 | 56,260 | 56.26 | 3,002,616 | 3,002,616 | 3,001,640 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 100Bytes, Call) | 1,000,000 | 223,239 | 39,967 | 39.97 | 3,197,756 | 3,197,058.9 | 3,195,804 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 100Bytes, Transaction) | 1,000,000 | 223,239 | 41,927 | 41.93 | 2,743,044 | 2,743,044 | 2,743,044 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 10Kib, Call) | 1,000,000 | 223,239 | 20,272 | 20.27 | 3,371,388 | 3,371,388 | 3,370,412 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 10Kib, Transaction) | 1,000,000 | 223,239 | 12,598 | 12.60 | 2,586,920 | 2,586,815.4 | 2,582,040 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 1Mib, Call) | 1,000,000 | 223,239 | 4,119 | 4.12 | 3,329,444 | 3,329,444 | 3,327,492 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 1Mib, Transaction) | 1,000,000 | 223,239 | 5,066 | 5.07 | 3,312,864 | 3,312,864 | 3,311,888 | +| Calldatacopy (Zero Data, Fixed Src Dst, 0Bytes, Call) | 1,000,000 | 223,239 | 38,063 | 38.06 | 2,177,044 | 2,175,917.8 | 2,166,308 | +| Calldatacopy (Zero Data, Fixed Src Dst, 0Bytes, Transaction) | 1,000,000 | 223,239 | 37,877 | 37.88 | 1,680,264 | 1,676,116 | 1,667,576 | +| Calldatacopy (Zero Data, Fixed Src Dst, 100Bytes, Call) | 1,000,000 | 223,239 | 23,694 | 23.69 | 3,263,136 | 3,263,136 | 3,261,184 | +| Calldatacopy (Zero Data, Fixed Src Dst, 100Bytes, Transaction) | 1,000,000 | 223,239 | 23,371 | 23.37 | 3,494,340 | 3,494,340 | 3,493,364 | +| Calldatacopy (Zero Data, Fixed Src Dst, 10Kib, Call) | 1,000,000 | 223,239 | 17,299 | 17.30 | 3,074,832 | 3,074,832 | 3,074,832 | +| Calldatacopy (Zero Data, Fixed Src Dst, 10Kib, Transaction) | 1,000,000 | 223,239 | 9,241 | 9.24 | 3,359,676 | 3,359,676 | 3,358,700 | +| Calldatacopy (Zero Data, Fixed Src Dst, 1Mib, Call) | 1,000,000 | 223,239 | 5,289 | 5.29 | 2,537,864 | 2,537,864 | 2,536,888 | +| Calldatacopy (Zero Data, Fixed Src Dst, 1Mib, Transaction) | 1,000,000 | 223,239 | 5,852 | 5.85 | 2,091,868 | 2,091,705.3 | 2,085,036 | +| Calldatacopy (Non Zero, Dynamic Src Dst, 100Bytes, Call) | 1,000,000 | 223,239 | 48,750 | 48.75 | 3,072,884 | 3,072,884 | 3,071,908 | +| Calldatacopy (Non Zero, Dynamic Src Dst, 100Bytes, Transaction) | 1,000,000 | 223,239 | 48,429 | 48.43 | 1,437,960 | 1,426,906.2 | 1,408,680 | +| Calldatacopy (Non Zero, Dynamic Src Dst, 10Kib, Call) | 1,000,000 | 223,239 | 18,273 | 18.27 | 3,261,192 | 3,261,162.3 | 3,260,216 | +| Calldatacopy (Non Zero, Dynamic Src Dst, 10Kib, Transaction) | 1,000,000 | 223,239 | 17,955 | 17.95 | 3,497,264 | 3,497,264 | 3,497,264 | +| Calldatacopy (Non Zero, Fixed Src Dst, 100Bytes, Call) | 1,000,000 | 223,239 | 30,354 | 30.35 | 2,940,164 | 2,938,537.3 | 2,934,308 | +| Calldatacopy (Non Zero, Fixed Src Dst, 100Bytes, Transaction) | 1,000,000 | 223,239 | 30,234 | 30.23 | 775,524 | 768,296.3 | 746,244 | +| Calldatacopy (Non Zero, Fixed Src Dst, 10Kib, Call) | 1,000,000 | 223,239 | 13,798 | 13.80 | 3,264,108 | 3,264,108 | 3,264,108 | +| Calldatacopy (Non Zero, Fixed Src Dst, 10Kib, Transaction) | 1,000,000 | 223,239 | 14,977 | 14.98 | 2,445,156 | 2,445,156 | 2,438,324 | +| Codecopy (Dynamic Src Dst, 0Bytes) | 1,000,000 | 223,239 | 55,008 | 55.01 | 2,604,480 | 2,604,480 | 2,603,504 | +| Codecopy (Dynamic Src Dst, 0.25X Max Code) | 1,000,000 | 223,239 | 27,848 | 27.85 | 2,043,072 | 2,042,514.3 | 2,039,168 | +| Codecopy (Dynamic Src Dst, 0.50X Max Code Size) | 1,000,000 | 223,239 | 24,362 | 24.36 | 666,944 | 658,122.9 | 640,592 | +| Codecopy (Dynamic Src Dst, 0.75X Max Code Size) | 1,000,000 | 223,239 | 22,845 | 22.84 | 2,347,564 | 2,347,224.5 | 2,340,732 | +| Codecopy (Dynamic Src Dst, Max Code) | 1,000,000 | 223,239 | 18,665 | 18.66 | 3,117,748 | 3,117,748 | 3,117,748 | +| Codecopy (Fixed Src Dst, 0Bytes) | 1,000,000 | 223,239 | 35,006 | 35.01 | 2,583,720 | 2,583,557.3 | 2,582,744 | +| Codecopy (Fixed Src Dst, 0.25X Max Code) | 1,000,000 | 223,239 | 16,370 | 16.37 | 1,296,700 | 1,293,040 | 1,287,916 | +| Codecopy (Fixed Src Dst, 0.50X Max Code Size) | 1,000,000 | 223,239 | 14,291 | 14.29 | 3,263,136 | 3,263,136 | 3,263,136 | +| Codecopy (Fixed Src Dst, 0.75X Max Code Size) | 1,000,000 | 223,239 | 16,848 | 16.85 | 2,061,616 | 2,058,896.9 | 2,054,784 | +| Codecopy (Fixed Src Dst, Max Code) | 1,000,000 | 223,239 | 16,940 | 16.94 | 2,639,612 | 2,637,430.1 | 2,627,900 | +| Mcopy (Dynamic Src Dst, 0Bytes) | 1,000,000 | 223,239 | 53,965 | 53.97 | 2,292,924 | 2,291,818.8 | 2,283,164 | +| Mcopy (Dynamic Src Dst, 100Bytes) | 1,000,000 | 223,239 | 42,854 | 42.85 | 3,214,348 | 3,210,915.2 | 3,206,540 | +| Mcopy (Dynamic Src Dst, 10Kib) | 1,000,000 | 223,239 | 39,801 | 39.80 | 2,988,952 | 2,987,844.1 | 2,982,120 | +| Mcopy (Dynamic Src Dst, 1Mib) | 1,000,000 | 223,239 | 5,906 | 5.91 | 3,310,912 | 3,310,912 | 3,310,912 | +| Mcopy (Fixed Src Dst, 0Bytes) | 1,000,000 | 223,239 | 27,895 | 27.89 | 3,311,888 | 3,311,871.2 | 3,311,888 | +| Mcopy (Fixed Src Dst, 100Bytes) | 1,000,000 | 223,239 | 27,998 | 28.00 | 3,529,456 | 3,529,043.1 | 3,527,504 | +| Mcopy (Fixed Src Dst, 10Kib) | 1,000,000 | 223,239 | 25,239 | 25.24 | 554,948 | 467,295.7 | 250,436 | +| Mcopy (Fixed Src Dst, 1Mib) | 1,000,000 | 223,239 | 6,831 | 6.83 | 1,723,208 | 1,719,182 | 1,714,424 | +| Returndatacopy (Fixed Dst False, 0Bytes) | 1,000,000 | 223,239 | 54,889 | 54.89 | 1,693,928 | 1,687,551.5 | 1,681,240 | +| Returndatacopy (Fixed Dst False, 100Bytes) | 1,000,000 | 223,239 | 44,479 | 44.48 | 2,998,712 | 2,998,712 | 2,998,712 | +| Returndatacopy (Fixed Dst False, 10Kib) | 1,000,000 | 223,239 | 21,297 | 21.30 | 3,496,288 | 3,496,288 | 3,495,312 | +| Returndatacopy (Fixed Dst False, 1Mib) | 1,000,000 | 223,239 | 6,545 | 6.54 | 3,139,208 | 3,139,208 | 3,137,256 | +| Returndatacopy (Fixed Dst True, 0Bytes) | 1,000,000 | 223,239 | 45,248 | 45.25 | 2,947,972 | 2,947,383.0 | 2,940,164 | +| Returndatacopy (Fixed Dst True, 100Bytes) | 1,000,000 | 223,239 | 32,349 | 32.35 | 2,997,736 | 2,997,736 | 2,997,736 | +| Returndatacopy (Fixed Dst True, 10Kib) | 1,000,000 | 223,239 | 14,557 | 14.56 | 3,196,784 | 3,194,122.2 | 3,193,856 | +| Returndatacopy (Fixed Dst True, 1Mib) | 1,000,000 | 223,239 | 7,818 | 7.82 | 3,008,472 | 3,008,472 | 3,008,472 | +| Log Opcodes (Dynamic, Non Zero Topic, 0 Bytes Data, Log0) | 1,000,000 | 223,239 | 8,528 | 8.53 | 2,472,484 | 2,472,484 | 2,471,508 | +| Log Opcodes (Dynamic, Non Zero Topic, 0 Bytes Data, Log1) | 1,000,000 | 223,239 | 7,684 | 7.68 | 2,917,720 | 2,915,768 | 2,910,888 | +| Log Opcodes (Dynamic, Non Zero Topic, 0 Bytes Data, Log2) | 1,000,000 | 223,239 | 6,400 | 6.40 | 3,310,912 | 3,310,912 | 3,310,912 | +| Log Opcodes (Dynamic, Non Zero Topic, 0 Bytes Data, Log3) | 1,000,000 | 223,239 | 7,061 | 7.06 | 2,714,504 | 2,714,016 | 2,711,576 | +| Log Opcodes (Dynamic, Non Zero Topic, 0 Bytes Data, Log4) | 1,000,000 | 223,239 | 5,806 | 5.81 | 3,334,324 | 3,334,094.4 | 3,329,444 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log0) | 1,000,000 | 223,239 | 5,183 | 5.18 | 3,505,068 | 3,505,068 | 3,504,092 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log1) | 1,000,000 | 223,239 | 6,411 | 6.41 | 3,062,152 | 3,062,152 | 3,060,200 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log2) | 1,000,000 | 223,239 | 6,207 | 6.21 | 637,668 | 636,184.5 | 625,956 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log3) | 1,000,000 | 223,239 | 6,271 | 6.27 | 2,222,912 | 2,222,912 | 2,219,984 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log4) | 1,000,000 | 223,239 | 6,070 | 6.07 | 2,800,616 | 2,800,182.2 | 2,795,736 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log0) | 1,000,000 | 223,239 | 5,326 | 5.33 | 2,651,316 | 2,651,316 | 2,651,316 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log1) | 1,000,000 | 223,239 | 6,049 | 6.05 | 2,883,568 | 2,883,568 | 2,883,568 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log2) | 1,000,000 | 223,239 | 4,621 | 4.62 | 3,346,996 | 3,346,996 | 3,346,996 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log3) | 1,000,000 | 223,239 | 5,041 | 5.04 | 3,110,932 | 3,110,932 | 3,110,932 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log4) | 1,000,000 | 223,239 | 6,186 | 6.19 | 3,069,956 | 3,069,956 | 3,069,956 | +| Log Opcodes (Dynamic, Zero Topic, 0 Bytes Data, Log0) | 1,000,000 | 223,239 | 8,465 | 8.46 | 2,273,404 | 2,269,569.7 | 2,264,620 | +| Log Opcodes (Dynamic, Zero Topic, 0 Bytes Data, Log1) | 1,000,000 | 223,239 | 6,583 | 6.58 | 3,311,888 | 3,311,888 | 3,311,888 | +| Log Opcodes (Dynamic, Zero Topic, 0 Bytes Data, Log2) | 1,000,000 | 223,239 | 6,420 | 6.42 | 3,111,912 | 3,111,505.3 | 3,106,056 | +| Log Opcodes (Dynamic, Zero Topic, 0 Bytes Data, Log3) | 1,000,000 | 223,239 | 7,507 | 7.51 | 1,781,508 | 1,780,253.1 | 1,775,652 | +| Log Opcodes (Dynamic, Zero Topic, 0 Bytes Data, Log4) | 1,000,000 | 223,239 | 7,204 | 7.20 | 2,740,120 | 2,740,120 | 2,739,144 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Non Zero Data, Log0) | 1,000,000 | 223,239 | 5,055 | 5.05 | 3,191,904 | 3,191,904 | 3,190,928 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Non Zero Data, Log1) | 1,000,000 | 223,239 | 5,228 | 5.23 | 3,271,884 | 3,271,617.8 | 3,267,980 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Non Zero Data, Log2) | 1,000,000 | 223,239 | 6,592 | 6.59 | 2,851,364 | 2,851,364 | 2,851,364 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Non Zero Data, Log3) | 1,000,000 | 223,239 | 5,240 | 5.24 | 3,276,764 | 3,276,764 | 3,276,764 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Non Zero Data, Log4) | 1,000,000 | 223,239 | 6,213 | 6.21 | 2,901,132 | 2,900,481.3 | 2,897,228 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Zeros Data, Log0) | 1,000,000 | 223,239 | 6,206 | 6.21 | 2,946,992 | 2,946,992 | 2,946,992 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Zeros Data, Log1) | 1,000,000 | 223,239 | 5,685 | 5.68 | 2,981,148 | 2,981,148 | 2,978,220 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Zeros Data, Log2) | 1,000,000 | 223,239 | 6,422 | 6.42 | 2,734,996 | 2,733,206.7 | 2,729,140 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Zeros Data, Log3) | 1,000,000 | 223,239 | 6,064 | 6.06 | 2,710,848 | 2,710,848 | 2,708,896 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Zeros Data, Log4) | 1,000,000 | 223,239 | 5,534 | 5.53 | 3,075,812 | 3,075,812 | 3,073,860 | +| Log Opcodes (Fixed, Non Zero Topic, 0 Bytes Data, Log0) | 1,000,000 | 223,239 | 7,550 | 7.55 | 2,348,540 | 2,347,785.8 | 2,346,588 | +| Log Opcodes (Fixed, Non Zero Topic, 0 Bytes Data, Log1) | 1,000,000 | 223,239 | 5,632 | 5.63 | 3,345,044 | 3,344,230.7 | 3,344,068 | +| Log Opcodes (Fixed, Non Zero Topic, 0 Bytes Data, Log2) | 1,000,000 | 223,239 | 5,912 | 5.91 | 3,499,216 | 3,499,216 | 3,498,240 | +| Log Opcodes (Fixed, Non Zero Topic, 0 Bytes Data, Log3) | 1,000,000 | 223,239 | 6,995 | 7.00 | 2,722,312 | 2,722,149.3 | 2,721,336 | +| Log Opcodes (Fixed, Non Zero Topic, 0 Bytes Data, Log4) | 1,000,000 | 223,239 | 6,960 | 6.96 | 2,659,124 | 2,657,904 | 2,651,316 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log0) | 1,000,000 | 223,239 | 5,303 | 5.30 | 3,194,832 | 3,194,636.8 | 3,192,880 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log1) | 1,000,000 | 223,239 | 5,237 | 5.24 | 3,497,264 | 3,497,264 | 3,497,264 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log2) | 1,000,000 | 223,239 | 6,172 | 6.17 | 1,688,788 | 1,684,396 | 1,674,148 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log3) | 1,000,000 | 223,239 | 5,119 | 5.12 | 3,560,672 | 3,560,672 | 3,560,672 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log4) | 1,000,000 | 223,239 | 5,917 | 5.92 | 2,001,368 | 1,997,220 | 1,992,584 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Zeros Data, Log0) | 1,000,000 | 223,239 | 6,413 | 6.41 | 2,855,268 | 2,855,024 | 2,854,292 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Zeros Data, Log1) | 1,000,000 | 223,239 | 5,226 | 5.23 | 3,527,504 | 3,526,853.3 | 3,525,552 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Zeros Data, Log2) | 1,000,000 | 223,239 | 6,529 | 6.53 | 2,828,920 | 2,828,920 | 2,827,944 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Zeros Data, Log3) | 1,000,000 | 223,239 | 6,639 | 6.64 | 1,512,392 | 1,510,928 | 1,507,512 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Zeros Data, Log4) | 1,000,000 | 223,239 | 5,979 | 5.98 | 2,433,700 | 2,433,433.8 | 2,427,844 | +| Log Opcodes (Fixed, Zero Topic, 0 Bytes Data, Log0) | 1,000,000 | 223,239 | 8,207 | 8.21 | 1,894,008 | 1,893,520 | 1,891,080 | +| Log Opcodes (Fixed, Zero Topic, 0 Bytes Data, Log1) | 1,000,000 | 223,239 | 5,833 | 5.83 | 3,127,504 | 3,127,504 | 3,127,504 | +| Log Opcodes (Fixed, Zero Topic, 0 Bytes Data, Log2) | 1,000,000 | 223,239 | 5,667 | 5.67 | 3,248,508 | 3,248,450.6 | 3,248,508 | +| Log Opcodes (Fixed, Zero Topic, 0 Bytes Data, Log3) | 1,000,000 | 223,239 | 5,666 | 5.67 | 3,261,188 | 3,261,188 | 3,260,212 | +| Log Opcodes (Fixed, Zero Topic, 0 Bytes Data, Log4) | 1,000,000 | 223,239 | 5,744 | 5.74 | 3,349,924 | 3,349,802 | 3,347,972 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Non Zero Data, Log0) | 1,000,000 | 223,239 | 6,514 | 6.51 | 2,786,960 | 2,786,693.8 | 2,783,056 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Non Zero Data, Log1) | 1,000,000 | 223,239 | 6,210 | 6.21 | 2,716,700 | 2,716,130.7 | 2,710,844 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Non Zero Data, Log2) | 1,000,000 | 223,239 | 5,540 | 5.54 | 3,127,508 | 3,127,312 | 3,126,532 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Non Zero Data, Log3) | 1,000,000 | 223,239 | 5,190 | 5.19 | 3,494,340 | 3,494,340 | 3,493,364 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Non Zero Data, Log4) | 1,000,000 | 223,239 | 5,280 | 5.28 | 3,276,760 | 3,276,760 | 3,275,784 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Zeros Data, Log0) | 1,000,000 | 223,239 | 6,378 | 6.38 | 1,992,584 | 1,992,584 | 1,982,824 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Zeros Data, Log1) | 1,000,000 | 223,239 | 5,381 | 5.38 | 3,119,700 | 3,119,700 | 3,117,748 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Zeros Data, Log2) | 1,000,000 | 223,239 | 6,106 | 6.11 | 2,102,604 | 2,099,838.7 | 2,093,820 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Zeros Data, Log3) | 1,000,000 | 223,239 | 5,045 | 5.04 | 3,196,784 | 3,196,784 | 3,196,784 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Zeros Data, Log4) | 1,000,000 | 223,239 | 4,991 | 4.99 | 3,127,500 | 3,127,500 | 3,126,524 | +| Address State Cold (Absent Accounts False, Balance) | 1,000,000 | 223,239 | 16,783 | 16.78 | 3,531,408 | 3,531,408 | 3,531,408 | +| Address State Cold (Absent Accounts True, Balance) | 1,000,000 | 223,239 | 9,915 | 9.91 | 3,499,216 | 3,499,216 | 3,499,216 | +| Address State Warm (Present Target, Balance) | 1,000,000 | 223,239 | 24,329 | 24.33 | 2,066,492 | 2,065,570.2 | 2,060,636 | +| Address State Warm (Present Target, Callcode) | 1,000,000 | 223,239 | 87,393 | 87.39 | 2,412,948 | 2,412,464.4 | 2,402,212 | +| Address State Warm (Present Target, Call) | 1,000,000 | 223,239 | 73,708 | 73.71 | 3,500,188 | 3,500,188 | 3,499,212 | +| Address State Warm (Present Target, Delegatecall) | 1,000,000 | 223,239 | 77,789 | 77.79 | 3,097,272 | 3,097,272 | 3,097,272 | +| Address State Warm (Present Target, Extcodehash) | 1,000,000 | 223,239 | 25,894 | 25.89 | 2,433,700 | 2,433,700 | 2,432,724 | +| Address State Warm (Present Target, Extcodesize) | 1,000,000 | 223,239 | 20,209 | 20.21 | 3,347,972 | 3,347,972 | 3,347,972 | +| Address State Warm (Present Target, Staticcall) | 1,000,000 | 223,239 | 88,621 | 88.62 | 2,397,336 | 2,396,769.0 | 2,391,480 | +| Address State Warm (Absent Target, Balance) | 1,000,000 | 223,239 | 29,650 | 29.65 | 2,593,748 | 2,593,748 | 2,593,748 | +| Address State Warm (Absent Target, Callcode) | 1,000,000 | 223,239 | 77,731 | 77.73 | 1,837,400 | 1,826,971.3 | 1,815,928 | +| Address State Warm (Absent Target, Call) | 1,000,000 | 223,239 | 77,416 | 77.42 | 1,752,228 | 1,723,758.8 | 1,689,764 | +| Address State Warm (Absent Target, Delegatecall) | 1,000,000 | 223,239 | 56,023 | 56.02 | 3,127,500 | 3,127,500 | 3,127,500 | +| Address State Warm (Absent Target, Extcodehash) | 1,000,000 | 223,239 | 30,080 | 30.08 | 3,493,360 | 3,493,360 | 3,493,360 | +| Address State Warm (Absent Target, Extcodesize) | 1,000,000 | 223,239 | 30,043 | 30.04 | 2,330,264 | 2,329,468.7 | 2,327,336 | +| Address State Warm (Absent Target, Staticcall) | 1,000,000 | 223,239 | 65,783 | 65.78 | 3,371,388 | 3,371,368 | 3,371,388 | +| Blockhash | 1,000,000 | 223,239 | 41,288 | 41.29 | 1,986,468 | 1,984,190.7 | 1,976,708 | +| Extcodecopy Warm (1Kib) | 1,000,000 | 223,239 | 20,967 | 20.97 | 746,244 | 739,296.2 | 727,700 | +| Extcodecopy Warm (512) | 1,000,000 | 223,239 | 19,549 | 19.55 | 3,495,312 | 3,495,312 | 3,494,336 | +| Extcodecopy Warm (5Kib) | 1,000,000 | 223,239 | 15,549 | 15.55 | 3,342,124 | 3,342,124 | 3,342,124 | +| Selfbalance | 1,000,000 | 223,239 | 321,628 | 321.63 | 2,817,208 | 2,817,014.5 | 2,815,256 | +| Selfdestruct Created (No Value) | 965,720 | 223,239 | 6,423 | 6.42 | 2,771,344 | 2,771,344 | 2,769,392 | +| Selfdestruct Created (With Value) | 965,720 | 223,239 | 5,768 | 5.77 | 3,263,136 | 3,263,136 | 3,263,136 | +| Selfdestruct Existing (No Value) | 998,771 | 223,239 | 13,023 | 13.02 | 2,928,452 | 2,928,452 | 2,928,452 | +| Selfdestruct Existing (With Value) | 998,771 | 223,239 | 14,336 | 14.34 | 2,622,044 | 2,622,044 | 2,622,044 | +| Selfdestruct Initcode (No Value) | 989,164 | 223,239 | 6,420 | 6.42 | 2,301,708 | 2,298,454.7 | 2,292,924 | +| Selfdestruct Initcode (With Value) | 989,164 | 223,239 | 5,285 | 5.29 | 3,371,384 | 3,371,384 | 3,371,384 | +| Storage Access Cold (Absent Slots False, Ssload) | 999,749 | 223,239 | 22,151 | 22.15 | 2,759,632 | 2,758,572.9 | 2,748,896 | +| Storage Access Cold (Absent Slots False, Sstore New Value, Out Of Gas) | 1,000,000 | 223,239 | 11,729 | 11.73 | 3,302,128 | 3,302,128 | 3,300,176 | +| Storage Access Cold (Absent Slots False, Sstore New Value, Revert) | 998,963 | 223,239 | 11,774 | 11.77 | 3,311,888 | 3,311,888 | 3,311,888 | +| Storage Access Cold (Absent Slots False, Sstore New Value) | 998,957 | 223,239 | 15,488 | 15.49 | 2,720,604 | 2,720,378.8 | 2,716,700 | +| Storage Access Cold (Absent Slots False, Sstore Same Value, Out Of Gas) | 1,000,000 | 223,239 | 21,918 | 21.92 | 2,107,484 | 2,105,152.4 | 2,102,604 | +| Storage Access Cold (Absent Slots False, Sstore Same Value, Revert) | 999,015 | 223,239 | 22,096 | 22.10 | 2,449,060 | 2,449,060 | 2,447,108 | +| Storage Access Cold (Absent Slots False, Sstore Same Value) | 999,009 | 223,239 | 22,042 | 22.04 | 919,964 | 901,474.2 | 877,020 | +| Storage Access Cold (Absent Slots True, Ssload) | 999,749 | 223,239 | 15,490 | 15.49 | 2,582,744 | 2,581,702.9 | 2,575,912 | +| Storage Access Cold (Absent Slots True, Sstore New Value, Out Of Gas) | 1,000,000 | 223,239 | 7,061 | 7.06 | 2,465,900 | 2,464,815.6 | 2,452,236 | +| Storage Access Cold (Absent Slots True, Sstore New Value, Revert) | 995,213 | 223,239 | 6,832 | 6.83 | 795,040 | 783,902.1 | 776,496 | +| Storage Access Cold (Absent Slots True, Sstore New Value) | 995,207 | 223,239 | 6,220 | 6.22 | 2,378,080 | 2,377,917.3 | 2,372,224 | +| Storage Access Cold (Absent Slots True, Sstore Same Value, Out Of Gas) | 1,000,000 | 223,239 | 6,286 | 6.29 | 2,432,468 | 2,432,142.7 | 2,425,636 | +| Storage Access Cold (Absent Slots True, Sstore Same Value, Revert) | 995,081 | 223,239 | 6,601 | 6.60 | 858,224 | 856,760 | 849,440 | +| Storage Access Cold (Absent Slots True, Sstore Same Value) | 995,075 | 223,239 | 6,719 | 6.72 | 2,729,144 | 2,729,144 | 2,722,312 | +| Storage Access Warm (Sload) | 1,000,000 | 223,239 | 26,544 | 26.54 | 726,724 | 718,807.6 | 707,204 | +| Storage Access Warm (Sstore New Value) | 1,000,000 | 223,239 | 54,817 | 54.82 | 3,288,464 | 3,288,464 | 3,288,464 | +| Storage Access Warm (Sstore Same Value) | 1,000,000 | 223,239 | 48,408 | 48.41 | 3,002,616 | 3,002,616 | 3,001,640 | + +## Summary Statistics + +- **Total Tests:** 508 +- **Successful Tests:** 508 +- **Failed Tests:** 0 + +### Proving Time (ms) +- **Average:** 251,789.5 +- **Minimum:** 4,119 +- **Maximum:** 4,461,313 + +### Peak Memory Usage (MB) +- **Average:** 2,699,750.9 +- **Minimum:** 437,324 +- **Maximum:** 3,561,652 + +### Proof Size (bytes) +- **Average:** 223,239 +- **Minimum:** 223,239 +- **Maximum:** 223,239 diff --git a/www/docs/pages/benchmark-results/gas-categorized/1m/risc0-1M-4.md b/www/docs/pages/benchmark-results/gas-categorized/1m/risc0-1M-4.md new file mode 100644 index 00000000..f7eee8fc --- /dev/null +++ b/www/docs/pages/benchmark-results/gas-categorized/1m/risc0-1M-4.md @@ -0,0 +1,543 @@ +# zkEVM Benchmark Results + +Generated on: 2025-12-13 19:54:08 + +## Folder: zkevm-metrics-risc0-1M-4 + +**zkVM:** risc0-v3.0.3 (4 GPUs) + +**Hardware Configuration:** CPU: AMD EPYC 7B13 64-Core Processor | RAM: 396 GiB | GPU: NVIDIA GeForce RTX 4090, NVIDIA GeForce RTX 4090, NVIDIA GeForce RTX 4090, NVIDIA GeForce RTX 4090 + +## Proving Metrics + +| Benchmark | Gas Used | Proof Size (bytes) | Proving Time (ms) | Proving Time (s) | Peak Memory (MB) | Avg Memory (MB) | Initial Memory (MB) | +|---|---|---|---|---|---|---|---| +| Block Full Access List And Data | 999,980 | 223,239 | 6,001 | 6.00 | 3,555,652 | 3,554,920 | 3,550,772 | +| Block Full Data (Non Zero Byte) | 1,000,000 | 223,239 | 4,548 | 4.55 | 4,696,320 | 4,696,320 | 4,694,368 | +| Block Full Data (Zero Byte) | 1,000,000 | 223,239 | 8,506 | 8.51 | 3,841,572 | 3,841,572 | 3,839,620 | +| Block Full Of Ether Transfers (A To A) | 987,000 | 223,239 | 12,481 | 12.48 | 3,734,240 | 3,734,118 | 3,733,264 | +| Block Full Of Ether Transfers (A To B) | 987,000 | 223,239 | 13,173 | 13.17 | 4,376,332 | 4,376,332 | 4,375,356 | +| Block Full Of Ether Transfers (A To Diff Acc) | 987,000 | 223,239 | 13,312 | 13.31 | 4,679,744 | 4,678,890 | 4,678,768 | +| Block Full Of Ether Transfers (Diff Acc To B) | 987,000 | 223,239 | 12,961 | 12.96 | 3,772,292 | 3,770,733.6 | 3,768,392 | +| Block Full Of Ether Transfers (Diff Acc To Diff Acc) | 987,000 | 223,239 | 14,477 | 14.48 | 4,102,128 | 4,100,371.2 | 4,094,320 | +| Bytecode Single Opcode (Callcode) | 1,000,000 | 223,239 | 97,037 | 97.04 | 3,661,044 | 3,660,107.8 | 3,653,236 | +| Bytecode Single Opcode (Call) | 1,000,000 | 223,239 | 97,257 | 97.26 | 2,573,820 | 2,528,826.4 | 2,491,836 | +| Bytecode Single Opcode (Delegatecall) | 1,000,000 | 223,239 | 94,896 | 94.90 | 4,292,416 | 4,291,810.2 | 4,290,464 | +| Bytecode Single Opcode (Extcodecopy) | 1,000,000 | 223,239 | 93,863 | 93.86 | 4,705,104 | 4,704,848.4 | 4,704,128 | +| Bytecode Single Opcode (Extcodehash) | 1,000,000 | 223,239 | 97,273 | 97.27 | 3,525,400 | 3,524,357.8 | 3,518,568 | +| Bytecode Single Opcode (Extcodesize) | 1,000,000 | 223,239 | 97,861 | 97.86 | 4,476,780 | 4,474,473.1 | 4,472,876 | +| Bytecode Single Opcode (Staticcall) | 1,000,000 | 223,239 | 96,548 | 96.55 | 4,792,892 | 4,792,824.7 | 4,791,916 | +| Create (0Bytes, Create2) | 1,000,000 | 223,239 | 4,534 | 4.53 | 2,616,764 | 2,615,788 | 2,611,884 | +| Create (0Bytes, Create) | 1,000,000 | 223,239 | 4,521 | 4.52 | 677,480 | 675,388.6 | 669,672 | +| Create (0Bytes, Create2) | 1,000,000 | 223,239 | 4,651 | 4.65 | 4,713,872 | 4,713,872 | 4,712,896 | +| Create (0Bytes, Create) | 1,000,000 | 223,239 | 4,993 | 4.99 | 4,234,844 | 4,234,844 | 4,233,868 | +| Create (0.25X Max Code, Zero Data, Create2) | 1,000,000 | 223,239 | 4,962 | 4.96 | 846,324 | 837,662 | 823,876 | +| Create (0.25X Max Code, Zero Data, Create) | 1,000,000 | 223,239 | 5,033 | 5.03 | 4,433,864 | 4,433,864 | 4,431,912 | +| Create (0.25X Max Code, Create2) | 1,000,000 | 223,239 | 6,530 | 6.53 | 1,446,388 | 1,438,775.2 | 1,432,724 | +| Create (0.25X Max Code, Create) | 1,000,000 | 223,239 | 4,928 | 4.93 | 3,592,732 | 3,590,536 | 3,586,876 | +| Create (0.50X Max Code Size With Non, Zero Data, Create2) | 1,000,000 | 223,239 | 5,031 | 5.03 | 4,467,024 | 4,467,024 | 4,466,048 | +| Create (0.50X Max Code Size With Non, Zero Data, Create) | 1,000,000 | 223,239 | 4,676 | 4.68 | 4,684,624 | 4,684,624 | 4,683,648 | +| Create (0.50X Max Code Size With Zero Data, Create2) | 1,000,000 | 223,239 | 5,655 | 5.66 | 3,779,116 | 3,778,920 | 3,779,116 | +| Create (0.50X Max Code Size With Zero Data, Create) | 1,000,000 | 223,239 | 5,271 | 5.27 | 3,364,376 | 3,363,400 | 3,358,520 | +| Create (0.75X Max Code Size With Non, Zero Data, Create2) | 1,000,000 | 223,239 | 6,393 | 6.39 | 1,841,832 | 1,839,099.2 | 1,833,048 | +| Create (0.75X Max Code Size With Non, Zero Data, Create) | 1,000,000 | 223,239 | 4,860 | 4.86 | 4,233,868 | 4,233,868 | 4,233,868 | +| Create (0.75X Max Code Size With Zero Data, Create2) | 1,000,000 | 223,239 | 4,748 | 4.75 | 3,263,852 | 3,263,201.3 | 3,257,996 | +| Create (0.75X Max Code Size With Zero Data, Create) | 1,000,000 | 223,239 | 4,872 | 4.87 | 3,571,268 | 3,571,268 | 3,568,340 | +| Create (Max Code, Zero Data, Create2) | 1,000,000 | 223,239 | 5,538 | 5.54 | 4,581,176 | 4,581,176 | 4,580,200 | +| Create (Max Code, Zero Data, Create) | 1,000,000 | 223,239 | 5,661 | 5.66 | 3,271,660 | 3,271,660 | 3,269,708 | +| Create (Max Code, Create2) | 1,000,000 | 223,239 | 5,148 | 5.15 | 4,439,716 | 4,439,065.3 | 4,438,740 | +| Create (Max Code, Create) | 1,000,000 | 223,239 | 5,096 | 5.10 | 4,358,768 | 4,356,816 | 4,352,912 | +| Creates Collisions (Create2) | 1,000,000 | 223,239 | 4,797 | 4.80 | 4,428,988 | 4,428,988 | 4,428,012 | +| Creates Collisions (Create) | 1,000,000 | 223,239 | 6,070 | 6.07 | 4,466,052 | 4,465,856 | 4,466,052 | +| Initcode Jumpdest Analysis (00) | 1,000,000 | 223,239 | 12,699 | 12.70 | 3,962,564 | 3,962,320 | 3,958,660 | +| Initcode Jumpdest Analysis (5B) | 1,000,000 | 223,239 | 13,694 | 13.69 | 4,719,728 | 4,718,752 | 4,716,800 | +| Initcode Jumpdest Analysis (605B5B) | 1,000,000 | 223,239 | 12,038 | 12.04 | 982,964 | 967,868.5 | 946,852 | +| Initcode Jumpdest Analysis (605B) | 1,000,000 | 223,239 | 10,434 | 10.43 | 4,293,392 | 4,293,392 | 4,292,416 | +| Initcode Jumpdest Analysis (615B5B5B) | 1,000,000 | 223,239 | 11,434 | 11.43 | 946,852 | 928,633.3 | 904,884 | +| Initcode Jumpdest Analysis (615B5B) | 1,000,000 | 223,239 | 9,786 | 9.79 | 4,564,588 | 4,564,588 | 4,563,612 | +| Amortized Bn128 Pairings | 1,000,000 | 223,239 | 69,374 | 69.37 | 3,765,472 | 3,764,783.1 | 3,759,616 | +| Empty Block | 0 | 223,239 | 3,968 | 3.97 | 2,950,556 | 2,949,824 | 2,944,700 | +| Binop Simple (Add) | 1,000,000 | 223,239 | 15,224 | 15.22 | 4,410,456 | 4,408,113.6 | 4,404,600 | +| Binop Simple (And) | 1,000,000 | 223,239 | 13,419 | 13.42 | 4,074,800 | 4,073,092 | 4,067,968 | +| Binop Simple (Byte) | 1,000,000 | 223,239 | 14,251 | 14.25 | 4,793,868 | 4,793,868 | 4,792,892 | +| Binop Simple (Div, 0) | 1,000,000 | 223,239 | 54,593 | 54.59 | 4,477,756 | 4,476,894.8 | 4,475,804 | +| Binop Simple (Div, 1) | 1,000,000 | 223,239 | 51,548 | 51.55 | 4,247,532 | 4,245,580 | 4,242,652 | +| Binop Simple (Eq) | 1,000,000 | 223,239 | 24,223 | 24.22 | 2,462,560 | 2,454,996 | 2,443,040 | +| Binop Simple (Exp) | 1,000,000 | 223,239 | 34,062 | 34.06 | 3,598,588 | 3,596,148 | 3,592,732 | +| Binop Simple (Gt) | 1,000,000 | 223,239 | 13,932 | 13.93 | 4,350,964 | 4,350,964 | 4,349,012 | +| Binop Simple (Lt) | 1,000,000 | 223,239 | 13,747 | 13.75 | 4,731,424 | 4,731,260.7 | 4,731,424 | +| Binop Simple (Mod) | 1,000,000 | 223,239 | 19,756 | 19.76 | 4,349,008 | 4,349,008 | 4,349,008 | +| Binop Simple (Mul) | 1,000,000 | 223,239 | 20,341 | 20.34 | 4,170,436 | 4,170,436 | 4,161,652 | +| Binop Simple (Or) | 1,000,000 | 223,239 | 13,769 | 13.77 | 4,793,868 | 4,793,868 | 4,792,892 | +| Binop Simple (Sar) | 1,000,000 | 223,239 | 24,051 | 24.05 | 3,880,604 | 3,880,604 | 3,880,604 | +| Binop Simple (Sdiv, 0) | 1,000,000 | 223,239 | 61,651 | 61.65 | 4,480,668 | 4,480,606.8 | 4,479,692 | +| Binop Simple (Sdiv, 1) | 1,000,000 | 223,239 | 62,264 | 62.26 | 1,746,184 | 1,725,604.3 | 1,693,480 | +| Binop Simple (Sgt) | 1,000,000 | 223,239 | 32,381 | 32.38 | 985,724 | 947,683.8 | 903,740 | +| Binop Simple (Shl) | 1,000,000 | 223,239 | 21,589 | 21.59 | 4,726,552 | 4,726,552 | 4,725,576 | +| Binop Simple (Shr) | 1,000,000 | 223,239 | 21,705 | 21.70 | 4,588,004 | 4,587,895.1 | 4,588,004 | +| Binop Simple (Signextend) | 1,000,000 | 223,239 | 19,550 | 19.55 | 4,479,700 | 4,479,700 | 4,477,748 | +| Binop Simple (Slt) | 1,000,000 | 223,239 | 15,516 | 15.52 | 4,207,516 | 4,206,784 | 4,202,636 | +| Binop Simple (Smod) | 1,000,000 | 223,239 | 22,700 | 22.70 | 4,826,076 | 4,826,076 | 4,825,100 | +| Binop Simple (Sub) | 1,000,000 | 223,239 | 16,171 | 16.17 | 4,684,624 | 4,684,624 | 4,684,624 | +| Binop Simple (Xor) | 1,000,000 | 223,239 | 13,371 | 13.37 | 4,263,144 | 4,263,144 | 4,262,168 | +| Blobhash (No Blobs) | 1,000,000 | 223,239 | 13,760 | 13.76 | 3,529,300 | 3,529,300 | 3,528,324 | +| Blobhash (One Blob And Accessed) | 1,000,000 | 223,239 | 18,126 | 18.13 | 1,260,148 | 1,248,741 | 1,225,988 | +| Blobhash (One Blob But Access Non, Existent Index) | 1,000,000 | 223,239 | 15,027 | 15.03 | 4,726,552 | 4,726,552 | 4,726,552 | +| Blobhash (Six Blobs, Access Latest) | 1,000,000 | 223,239 | 18,840 | 18.84 | 2,589,436 | 2,588,134.7 | 2,585,532 | +| Calldataload (Empty) | 1,000,000 | 223,239 | 24,311 | 24.31 | 4,264,120 | 4,264,120 | 4,264,120 | +| Calldataload (One, Loop) | 1,000,000 | 223,239 | 25,914 | 25.91 | 4,449,464 | 4,449,464 | 4,449,464 | +| Calldataload (Zero, Loop) | 1,000,000 | 223,239 | 26,108 | 26.11 | 3,660,068 | 3,660,068 | 3,660,068 | +| Calldatasize (Calldata Length 0) | 1,000,000 | 223,239 | 13,501 | 13.50 | 4,828,028 | 4,828,028 | 4,827,052 | +| Calldatasize (Calldata Length 10000) | 1,000,000 | 223,239 | 13,675 | 13.68 | 4,824,124 | 4,824,124 | 4,823,148 | +| Calldatasize (Calldata Length 1000) | 1,000,000 | 223,239 | 14,515 | 14.52 | 3,738,144 | 3,737,534 | 3,737,168 | +| Callvalue (From Origin False, Non Zero Value False) | 1,000,000 | 223,239 | 15,378 | 15.38 | 4,421,192 | 4,421,192 | 4,419,240 | +| Callvalue (From Origin False, Non Zero Value True) | 1,000,000 | 223,239 | 15,676 | 15.68 | 4,818,268 | 4,818,268 | 4,817,292 | +| Callvalue (From Origin True, Non Zero Value False) | 1,000,000 | 223,239 | 15,438 | 15.44 | 4,706,076 | 4,706,076 | 4,704,124 | +| Callvalue (From Origin True, Non Zero Value True) | 1,000,000 | 223,239 | 15,441 | 15.44 | 4,691,440 | 4,691,440 | 4,691,440 | +| Dup (Dup10) | 1,000,000 | 223,239 | 13,328 | 13.33 | 4,349,008 | 4,349,008 | 4,349,008 | +| Dup (Dup11) | 1,000,000 | 223,239 | 12,889 | 12.89 | 3,787,892 | 3,787,892 | 3,787,892 | +| Dup (Dup12) | 1,000,000 | 223,239 | 13,315 | 13.31 | 4,567,516 | 4,566,540 | 4,564,588 | +| Dup (Dup13) | 1,000,000 | 223,239 | 13,150 | 13.15 | 3,774,244 | 3,774,122 | 3,773,268 | +| Dup (Dup14) | 1,000,000 | 223,239 | 13,146 | 13.15 | 4,431,912 | 4,431,912 | 4,431,912 | +| Dup (Dup15) | 1,000,000 | 223,239 | 12,923 | 12.92 | 2,490,864 | 2,486,262.3 | 2,478,176 | +| Dup (Dup16) | 1,000,000 | 223,239 | 13,176 | 13.18 | 4,679,744 | 4,679,744 | 4,678,768 | +| Dup (Dup1) | 1,000,000 | 223,239 | 13,351 | 13.35 | 4,352,912 | 4,352,830.7 | 4,352,912 | +| Dup (Dup2) | 1,000,000 | 223,239 | 12,897 | 12.90 | 4,460,196 | 4,459,708 | 4,456,292 | +| Dup (Dup3) | 1,000,000 | 223,239 | 13,139 | 13.14 | 4,714,848 | 4,714,848 | 4,714,848 | +| Dup (Dup4) | 1,000,000 | 223,239 | 13,061 | 13.06 | 3,750,832 | 3,749,313.8 | 3,744,000 | +| Dup (Dup5) | 1,000,000 | 223,239 | 13,005 | 13.01 | 4,177,268 | 4,176,194 | 4,170,436 | +| Dup (Dup6) | 1,000,000 | 223,239 | 12,783 | 12.78 | 2,958,364 | 2,954,460 | 2,951,532 | +| Dup (Dup7) | 1,000,000 | 223,239 | 13,525 | 13.53 | 3,527,352 | 3,527,352 | 3,527,352 | +| Dup (Dup8) | 1,000,000 | 223,239 | 13,056 | 13.06 | 4,349,008 | 4,349,008 | 4,349,008 | +| Dup (Dup9) | 1,000,000 | 223,239 | 13,262 | 13.26 | 2,618,716 | 2,618,716 | 2,616,764 | +| Jumpdests | 1,000,000 | 223,239 | 14,907 | 14.91 | 4,446,548 | 4,446,548 | 4,445,572 | +| Jumpi Fallthrough | 1,000,000 | 223,239 | 16,623 | 16.62 | 1,771,560 | 1,759,604 | 1,747,160 | +| Jumpis | 1,000,000 | 223,239 | 12,793 | 12.79 | 3,953,788 | 3,953,678.7 | 3,953,788 | +| Jumps | 1,000,000 | 223,239 | 11,905 | 11.90 | 4,808,508 | 4,806,946.4 | 4,803,628 | +| Keccak | 1,000,000 | 223,239 | 45,410 | 45.41 | 4,755,820 | 4,755,771 | 4,754,844 | +| Memory Access (Small Mem, Uninit Offset, Off 0, Mload) | 1,000,000 | 223,239 | 16,926 | 16.93 | 3,480,508 | 3,477,580 | 3,473,676 | +| Memory Access (Small Mem, Uninit Offset, Off 0, Mstore8) | 1,000,000 | 223,239 | 13,438 | 13.44 | 1,861,352 | 1,856,332.6 | 1,843,784 | +| Memory Access (Small Mem, Uninit Offset, Off 0, Mstore) | 1,000,000 | 223,239 | 16,787 | 16.79 | 1,060,068 | 1,028,564.9 | 982,964 | +| Memory Access (Small Mem, Uninit Offset, Off 1, Mload) | 1,000,000 | 223,239 | 17,230 | 17.23 | 3,953,788 | 3,953,788 | 3,950,860 | +| Memory Access (Small Mem, Uninit Offset, Off 1, Mstore8) | 1,000,000 | 223,239 | 12,602 | 12.60 | 4,772,400 | 4,772,400 | 4,772,400 | +| Memory Access (Small Mem, Uninit Offset, Off 1, Mstore) | 1,000,000 | 223,239 | 17,296 | 17.30 | 4,405,580 | 4,405,580 | 4,404,604 | +| Memory Access (Small Mem, Uninit Offset, Off 31, Mload) | 1,000,000 | 223,239 | 17,093 | 17.09 | 4,313,880 | 4,312,708.8 | 4,310,952 | +| Memory Access (Small Mem, Uninit Offset, Off 31, Mstore8) | 1,000,000 | 223,239 | 12,826 | 12.83 | 2,010,672 | 1,992,738 | 1,975,536 | +| Memory Access (Small Mem, Uninit Offset, Off 31, Mstore) | 1,000,000 | 223,239 | 17,139 | 17.14 | 3,612,244 | 3,612,244 | 3,611,268 | +| Memory Access (Small Mem, Init Offset, Off 0, Mload) | 1,000,000 | 223,239 | 15,240 | 15.24 | 2,930,060 | 2,929,206 | 2,925,180 | +| Memory Access (Small Mem, Init Offset, Off 0, Mstore8) | 1,000,000 | 223,239 | 13,276 | 13.28 | 4,268,024 | 4,268,024 | 4,267,048 | +| Memory Access (Small Mem, Init Offset, Off 0, Mstore) | 1,000,000 | 223,239 | 17,264 | 17.26 | 4,704,128 | 4,704,128 | 4,703,152 | +| Memory Access (Small Mem, Init Offset, Off 1, Mload) | 1,000,000 | 223,239 | 16,049 | 16.05 | 4,494,324 | 4,494,324 | 4,494,324 | +| Memory Access (Small Mem, Init Offset, Off 1, Mstore8) | 1,000,000 | 223,239 | 13,702 | 13.70 | 3,890,360 | 3,890,197.3 | 3,890,360 | +| Memory Access (Small Mem, Init Offset, Off 1, Mstore) | 1,000,000 | 223,239 | 16,721 | 16.72 | 4,202,636 | 4,202,440.8 | 4,196,780 | +| Memory Access (Small Mem, Init Offset, Off 31, Mload) | 1,000,000 | 223,239 | 16,526 | 16.53 | 4,764,600 | 4,764,600 | 4,764,600 | +| Memory Access (Small Mem, Init Offset, Off 31, Mstore8) | 1,000,000 | 223,239 | 13,341 | 13.34 | 4,803,628 | 4,802,652 | 4,800,700 | +| Memory Access (Small Mem, Init Offset, Off 31, Mstore) | 1,000,000 | 223,239 | 16,684 | 16.68 | 4,424,120 | 4,423,794.7 | 4,421,192 | +| Memory Access (Big Mem, Uninit Offset, Off 0, Mload) | 1,000,000 | 223,239 | 16,672 | 16.67 | 4,563,612 | 4,563,612 | 4,563,612 | +| Memory Access (Big Mem, Uninit Offset, Off 0, Mstore8) | 1,000,000 | 223,239 | 13,788 | 13.79 | 1,960,896 | 1,950,282 | 1,937,472 | +| Memory Access (Big Mem, Uninit Offset, Off 0, Mstore) | 1,000,000 | 223,239 | 16,552 | 16.55 | 3,462,944 | 3,460,459.6 | 3,451,232 | +| Memory Access (Big Mem, Uninit Offset, Off 1, Mload) | 1,000,000 | 223,239 | 16,973 | 16.97 | 3,977,204 | 3,974,973.1 | 3,968,420 | +| Memory Access (Big Mem, Uninit Offset, Off 1, Mstore8) | 1,000,000 | 223,239 | 13,875 | 13.88 | 4,435,816 | 4,435,652.7 | 4,434,840 | +| Memory Access (Big Mem, Uninit Offset, Off 1, Mstore) | 1,000,000 | 223,239 | 16,917 | 16.92 | 3,569,316 | 3,568,479.4 | 3,565,412 | +| Memory Access (Big Mem, Uninit Offset, Off 31, Mload) | 1,000,000 | 223,239 | 16,637 | 16.64 | 3,257,996 | 3,254,970.4 | 3,251,164 | +| Memory Access (Big Mem, Uninit Offset, Off 31, Mstore8) | 1,000,000 | 223,239 | 13,008 | 13.01 | 4,830,956 | 4,830,956 | 4,829,980 | +| Memory Access (Big Mem, Uninit Offset, Off 31, Mstore) | 1,000,000 | 223,239 | 17,219 | 17.22 | 3,936,232 | 3,935,622 | 3,932,328 | +| Memory Access (Big Mem, Init Offset, Off 0, Mload) | 1,000,000 | 223,239 | 16,793 | 16.79 | 806,308 | 787,764 | 759,460 | +| Memory Access (Big Mem, Init Offset, Off 0, Mstore8) | 1,000,000 | 223,239 | 13,185 | 13.19 | 4,349,984 | 4,349,984 | 4,349,008 | +| Memory Access (Big Mem, Init Offset, Off 0, Mstore) | 1,000,000 | 223,239 | 16,732 | 16.73 | 4,831,932 | 4,831,932 | 4,830,956 | +| Memory Access (Big Mem, Init Offset, Off 1, Mload) | 1,000,000 | 223,239 | 16,339 | 16.34 | 4,215,324 | 4,214,487.4 | 4,210,444 | +| Memory Access (Big Mem, Init Offset, Off 1, Mstore8) | 1,000,000 | 223,239 | 17,702 | 17.70 | 1,121,384 | 1,110,339.8 | 1,091,128 | +| Memory Access (Big Mem, Init Offset, Off 1, Mstore) | 1,000,000 | 223,239 | 16,865 | 16.86 | 4,383,140 | 4,383,140 | 4,383,140 | +| Memory Access (Big Mem, Init Offset, Off 31, Mload) | 1,000,000 | 223,239 | 16,990 | 16.99 | 3,855,232 | 3,855,232 | 3,855,232 | +| Memory Access (Big Mem, Init Offset, Off 31, Mstore8) | 1,000,000 | 223,239 | 12,803 | 12.80 | 3,908,904 | 3,907,440 | 3,905,000 | +| Memory Access (Big Mem, Init Offset, Off 31, Mstore) | 1,000,000 | 223,239 | 16,357 | 16.36 | 3,451,232 | 3,451,232 | 3,451,232 | +| Mod (Op Mod, Mod Bits 127) | 1,000,000 | 223,239 | 50,182 | 50.18 | 4,554,828 | 4,552,237.8 | 4,548,972 | +| Mod (Op Mod, Mod Bits 191) | 1,000,000 | 223,239 | 62,792 | 62.79 | 4,712,896 | 4,711,432 | 4,708,016 | +| Mod (Op Mod, Mod Bits 255) | 1,000,000 | 223,239 | 50,299 | 50.30 | 4,497,252 | 4,495,625.3 | 4,494,324 | +| Mod (Op Mod, Mod Bits 63) | 1,000,000 | 223,239 | 36,402 | 36.40 | 3,468,800 | 3,468,311.8 | 3,464,896 | +| Mod (Op Smod, Mod Bits 127) | 1,000,000 | 223,239 | 53,799 | 53.80 | 4,451,424 | 4,451,424 | 4,451,424 | +| Mod (Op Smod, Mod Bits 191) | 1,000,000 | 223,239 | 65,536 | 65.54 | 1,368,484 | 1,321,242.2 | 1,261,124 | +| Mod (Op Smod, Mod Bits 255) | 1,000,000 | 223,239 | 51,067 | 51.07 | 3,488,316 | 3,488,218.4 | 3,481,484 | +| Mod (Op Smod, Mod Bits 63) | 1,000,000 | 223,239 | 38,558 | 38.56 | 4,767,528 | 4,766,035.3 | 4,763,624 | +| Modarith (Op Addmod, Mod Bits 127) | 1,000,000 | 223,239 | 41,897 | 41.90 | 4,183,120 | 4,183,120 | 4,182,144 | +| Modarith (Op Addmod, Mod Bits 191) | 1,000,000 | 223,239 | 48,019 | 48.02 | 4,220,204 | 4,220,204 | 4,218,252 | +| Modarith (Op Addmod, Mod Bits 255) | 1,000,000 | 223,239 | 41,561 | 41.56 | 3,346,808 | 3,343,229.3 | 3,339,000 | +| Modarith (Op Addmod, Mod Bits 63) | 1,000,000 | 223,239 | 30,494 | 30.49 | 4,224,108 | 4,222,741.6 | 4,220,204 | +| Modarith (Op Mulmod, Mod Bits 127) | 1,000,000 | 223,239 | 69,186 | 69.19 | 2,677,276 | 2,651,839 | 2,629,452 | +| Modarith (Op Mulmod, Mod Bits 191) | 1,000,000 | 223,239 | 94,095 | 94.09 | 4,240,700 | 4,239,658.9 | 4,236,796 | +| Modarith (Op Mulmod, Mod Bits 255) | 1,000,000 | 223,239 | 91,244 | 91.24 | 1,456,324 | 1,421,528.1 | 1,368,484 | +| Modarith (Op Mulmod, Mod Bits 63) | 1,000,000 | 223,239 | 55,331 | 55.33 | 3,338,028 | 3,336,608.4 | 3,331,196 | +| Modexp (Mod 1045 Gas Base Heavy) | 1,000,000 | 223,239 | 927,323 | 927.32 | 4,677,792 | 4,662,667.5 | 4,631,920 | +| Modexp (Mod 1360 Gas Balanced) | 1,000,000 | 223,239 | 236,440 | 236.44 | 3,874,748 | 3,872,485.5 | 3,867,916 | +| Modexp (Mod 400 Gas Exp Heavy) | 1,000,000 | 223,239 | 290,522 | 290.52 | 4,488,472 | 4,486,389.9 | 4,479,688 | +| Modexp (Mod 408 Gas Balanced) | 1,000,000 | 223,239 | 206,555 | 206.56 | 4,349,988 | 4,349,988 | 4,349,988 | +| Modexp (Mod 408 Gas Base Heavy) | 1,000,000 | 223,239 | 835,401 | 835.40 | 4,789,968 | 4,781,109.2 | 4,772,400 | +| Modexp (Mod 600 As Balanced) | 1,000,000 | 223,239 | 213,113 | 213.11 | 3,839,620 | 3,834,471.6 | 3,824,004 | +| Modexp (Mod 600 Gas Exp Heavy) | 1,000,000 | 223,239 | 312,385 | 312.38 | 3,497,100 | 3,495,468.9 | 3,488,316 | +| Modexp (Mod 616 Gas Base Heavy) | 1,000,000 | 223,239 | 880,656 | 880.66 | 4,392,896 | 4,392,108.6 | 4,390,944 | +| Modexp (Mod 677 Gas Base Heavy) | 1,000,000 | 223,239 | 224,015 | 224.01 | 3,926,472 | 3,921,917.3 | 3,909,880 | +| Modexp (Mod 765 Gas Exp Heavy) | 1,000,000 | 223,239 | 251,464 | 251.46 | 4,754,844 | 4,746,463.4 | 4,739,228 | +| Modexp (Mod 767 Gas Balanced) | 1,000,000 | 223,239 | 243,030 | 243.03 | 624,588 | 600,698.3 | 265,420 | +| Modexp (Mod 800 Gas Base Heavy) | 1,000,000 | 223,239 | 906,051 | 906.05 | 4,404,604 | 4,403,449.3 | 4,402,652 | +| Modexp (Mod 800 Gas Exp Heavy) | 1,000,000 | 223,239 | 320,802 | 320.80 | 4,703,152 | 4,702,657.0 | 4,700,224 | +| Modexp (Mod 852 Gas Exp Heavy) | 1,000,000 | 223,239 | 320,753 | 320.75 | 4,764,600 | 4,760,122.3 | 4,754,840 | +| Modexp (Mod 867 Gas Base Heavy) | 1,000,000 | 223,239 | 911,315 | 911.32 | 4,375,344 | 4,375,344 | 4,375,344 | +| Modexp (Mod 996 Gas Balanced) | 1,000,000 | 223,239 | 203,625 | 203.62 | 4,378,268 | 4,378,229.3 | 4,375,340 | +| Modexp (Mod Even 1024B Exp 1024) | 1,000,000 | 223,239 | 4,937 | 4.94 | 4,568,492 | 4,568,492 | 4,568,492 | +| Modexp (Mod Even 128B Exp 1024) | 1,000,000 | 223,239 | 188,689 | 188.69 | 4,267,048 | 4,266,813.8 | 4,264,120 | +| Modexp (Mod Even 16B Exp 320) | 1,000,000 | 223,239 | 305,705 | 305.70 | 4,146,040 | 4,146,040 | 4,142,136 | +| Modexp (Mod Even 24B Exp 168) | 1,000,000 | 223,239 | 250,194 | 250.19 | 4,418,264 | 4,417,295.1 | 4,415,336 | +| Modexp (Mod Even 256B Exp 1024) | 1,000,000 | 223,239 | 172,797 | 172.80 | 768,076 | 735,948.1 | 687,068 | +| Modexp (Mod Even 32B Exp 256) | 1,000,000 | 223,239 | 236,847 | 236.85 | 2,924,204 | 2,769,389.3 | 2,738,764 | +| Modexp (Mod Even 32B Exp 40) | 1,000,000 | 223,239 | 196,415 | 196.41 | 4,829,980 | 4,829,426.9 | 4,828,028 | +| Modexp (Mod Even 32B Exp 96) | 1,000,000 | 223,239 | 224,979 | 224.98 | 4,545,076 | 4,541,979.7 | 4,541,172 | +| Modexp (Mod Even 512B Exp 1024) | 1,000,000 | 223,239 | 5,061 | 5.06 | 2,627,500 | 2,627,500 | 2,623,596 | +| Modexp (Mod Even 64B Exp 512) | 1,000,000 | 223,239 | 204,846 | 204.85 | 3,326,316 | 3,311,180.7 | 3,287,276 | +| Modexp (Mod Even 8B Exp 896) | 1,000,000 | 223,239 | 513,827 | 513.83 | 3,516,616 | 3,512,726.5 | 3,504,904 | +| Modexp (Mod Exp 208 Gas Balanced) | 1,000,000 | 223,239 | 186,045 | 186.04 | 4,366,572 | 4,366,572 | 4,366,572 | +| Modexp (Mod Exp 215 Gas Exp Heavy) | 1,000,000 | 223,239 | 452,451 | 452.45 | 4,469,952 | 4,468,967.4 | 4,467,024 | +| Modexp (Mod Exp 298 Gas Exp Heavy) | 1,000,000 | 223,239 | 497,315 | 497.31 | 4,348,036 | 4,345,548.6 | 4,341,204 | +| Modexp (Mod Min As Balanced) | 1,000,000 | 223,239 | 196,760 | 196.76 | 4,725,576 | 4,724,754.1 | 4,723,624 | +| Modexp (Mod Min As Base Heavy) | 1,000,000 | 223,239 | 682,767 | 682.77 | 4,125,552 | 4,120,493.5 | 4,110,912 | +| Modexp (Mod Min As Exp Heavy) | 1,000,000 | 223,239 | 445,771 | 445.77 | 4,395,820 | 4,395,820 | 4,395,820 | +| Modexp (Mod Odd 1024B Exp 1024) | 1,000,000 | 223,239 | 5,392 | 5.39 | 823,876 | 819,386.4 | 806,308 | +| Modexp (Mod Odd 128B Exp 1024) | 1,000,000 | 223,239 | 190,141 | 190.14 | 3,618,100 | 3,617,013.5 | 3,614,196 | +| Modexp (Mod Odd 256B Exp 1024) | 1,000,000 | 223,239 | 135,018 | 135.02 | 4,231,916 | 4,230,163.2 | 4,226,060 | +| Modexp (Mod Odd 32B Exp 256) | 1,000,000 | 223,239 | 236,647 | 236.65 | 1,648,592 | 1,584,046.3 | 1,462,176 | +| Modexp (Mod Odd 32B Exp 96) | 1,000,000 | 223,239 | 215,015 | 215.01 | 4,471,900 | 4,471,900 | 4,471,900 | +| Modexp (Mod Odd 32B Exp Cover Windows) | 1,000,000 | 223,239 | 174,335 | 174.34 | 4,155,796 | 4,155,726.3 | 4,150,916 | +| Modexp (Mod Odd 512B Exp 1024) | 1,000,000 | 223,239 | 4,741 | 4.74 | 4,264,120 | 4,264,120 | 4,264,120 | +| Modexp (Mod Odd 64B Exp 512) | 1,000,000 | 223,239 | 206,635 | 206.63 | 3,587,856 | 3,586,975.2 | 3,579,072 | +| Modexp (Mod Pawel 2) | 1,000,000 | 223,239 | 294,020 | 294.02 | 4,234,844 | 4,234,844 | 4,233,868 | +| Modexp (Mod Pawel 3) | 1,000,000 | 223,239 | 240,630 | 240.63 | 4,375,344 | 4,375,344 | 4,375,344 | +| Modexp (Mod Pawel 4) | 1,000,000 | 223,239 | 216,529 | 216.53 | 4,067,968 | 4,062,849.0 | 4,043,568 | +| Modexp (Mod Vul Common 1152N1) | 1,000,000 | 223,239 | 131,680 | 131.68 | 4,155,796 | 4,155,796 | 4,155,796 | +| Modexp (Mod Vul Common 1349N1) | 1,000,000 | 223,239 | 187,522 | 187.52 | 4,789,968 | 4,789,967.9 | 4,789,968 | +| Modexp (Mod Vul Common 1360N1) | 1,000,000 | 223,239 | 208,064 | 208.06 | 4,290,464 | 4,289,842.9 | 4,289,488 | +| Modexp (Mod Vul Common 1360N2) | 1,000,000 | 223,239 | 240,558 | 240.56 | 687,068 | 664,270.5 | 626,556 | +| Modexp (Mod Vul Common 200N1) | 1,000,000 | 223,239 | 105,580 | 105.58 | 3,883,528 | 3,881,753.5 | 3,881,576 | +| Modexp (Mod Vul Common 200N2) | 1,000,000 | 223,239 | 134,508 | 134.51 | 3,665,924 | 3,664,317.7 | 3,660,068 | +| Modexp (Mod Vul Common 200N3) | 1,000,000 | 223,239 | 134,321 | 134.32 | 4,391,920 | 4,391,920 | 4,391,920 | +| Modexp (Mod Vul Example 1) | 1,000,000 | 223,239 | 234,594 | 234.59 | 2,443,040 | 2,303,326.2 | 2,055,568 | +| Modexp (Mod Vul Example 2) | 1,000,000 | 223,239 | 223,470 | 223.47 | 3,426,836 | 3,412,147.8 | 3,393,652 | +| Modexp (Mod Vul Guido 1 Even) | 1,000,000 | 223,239 | 160,273 | 160.27 | 4,734,360 | 4,731,657.2 | 4,728,504 | +| Modexp (Mod Vul Guido 2 Even) | 1,000,000 | 223,239 | 275,165 | 275.17 | 3,868,896 | 3,866,808.4 | 3,861,088 | +| Modexp (Mod Vul Guido 3 Even) | 1,000,000 | 223,239 | 450,858 | 450.86 | 4,340,232 | 4,326,485.2 | 4,313,880 | +| Modexp (Mod Vul Marius 1 Even) | 1,000,000 | 223,239 | 248,234 | 248.23 | 4,025,028 | 4,002,326.5 | 3,981,108 | +| Modexp (Mod Vul Nagydani 1 Pow 0X10001) | 1,000,000 | 223,239 | 168,224 | 168.22 | 4,079,680 | 4,079,680 | 4,078,704 | +| Modexp (Mod Vul Nagydani 1 Qube) | 1,000,000 | 223,239 | 125,235 | 125.23 | 4,822,172 | 4,820,490.0 | 4,817,292 | +| Modexp (Mod Vul Nagydani 1 Square) | 1,000,000 | 223,239 | 151,766 | 151.77 | 617,900 | 588,233.7 | 264,588 | +| Modexp (Mod Vul Nagydani 2 Pow 0X10001) | 1,000,000 | 223,239 | 174,655 | 174.66 | 4,605,568 | 4,599,146.2 | 4,593,856 | +| Modexp (Mod Vul Nagydani 2 Qube) | 1,000,000 | 223,239 | 382,687 | 382.69 | 3,681,540 | 3,680,289.3 | 3,675,684 | +| Modexp (Mod Vul Nagydani 2 Square) | 1,000,000 | 223,239 | 351,660 | 351.66 | 4,539,220 | 4,528,897.6 | 4,516,772 | +| Modexp (Mod Vul Nagydani 3 Pow 0X10001) | 1,000,000 | 223,239 | 166,625 | 166.62 | 4,150,916 | 4,150,177.4 | 4,146,036 | +| Modexp (Mod Vul Nagydani 3 Qube) | 1,000,000 | 223,239 | 913,565 | 913.57 | 3,728,384 | 3,722,290.0 | 3,707,888 | +| Modexp (Mod Vul Nagydani 3 Square) | 1,000,000 | 223,239 | 847,039 | 847.04 | 4,376,332 | 4,375,624.1 | 4,367,548 | +| Modexp (Mod Vul Nagydani 4 Pow 0X10001) | 1,000,000 | 223,239 | 158,192 | 158.19 | 4,464,100 | 4,462,730.7 | 4,462,148 | +| Modexp (Mod Vul Nagydani 4 Qube) | 1,000,000 | 223,239 | 1,041,130 | 1,041.13 | 4,288,516 | 4,278,387.6 | 4,267,044 | +| Modexp (Mod Vul Nagydani 4 Square) | 1,000,000 | 223,239 | 1,217,111 | 1,217.11 | 624,604 | 617,411.7 | 263,484 | +| Modexp (Mod Vul Nagydani 5 Pow 0X10001) | 1,000,000 | 223,239 | 144,272 | 144.27 | 4,440,692 | 4,440,692 | 4,440,692 | +| Modexp (Mod Vul Nagydani 5 Qube) | 1,000,000 | 223,239 | 1,045,543 | 1,045.54 | 3,451,236 | 3,447,667.0 | 3,434,644 | +| Modexp (Mod Vul Nagydani 5 Square) | 1,000,000 | 223,239 | 959,953 | 959.95 | 3,228,716 | 3,133,973.7 | 2,962,268 | +| Modexp (Mod Vul Pawel 1 Exp Heavy) | 1,000,000 | 223,239 | 476,660 | 476.66 | 4,140,188 | 4,137,614.3 | 4,128,476 | +| Modexp (Mod Vul Pawel 2 Exp Heavy) | 1,000,000 | 223,239 | 277,992 | 277.99 | 4,388,992 | 4,388,992 | 4,387,040 | +| Modexp (Mod Vul Pawel 3 Exp Heavy) | 1,000,000 | 223,239 | 231,149 | 231.15 | 3,824,004 | 3,821,505.9 | 3,806,436 | +| Modexp (Mod Vul Pawel 4 Exp Heavy) | 1,000,000 | 223,239 | 207,168 | 207.17 | 4,623,136 | 4,618,338.3 | 4,607,520 | +| Msize (Mem Size 0) | 1,000,000 | 223,239 | 16,908 | 16.91 | 4,441,668 | 4,441,668 | 4,440,692 | +| Msize (Mem Size 1000000) | 1,000,000 | 223,239 | 16,250 | 16.25 | 4,814,364 | 4,814,255.6 | 4,812,412 | +| Msize (Mem Size 100000) | 1,000,000 | 223,239 | 17,457 | 17.46 | 3,844,500 | 3,841,897.3 | 3,840,596 | +| Msize (Mem Size 1000) | 1,000,000 | 223,239 | 17,252 | 17.25 | 4,455,316 | 4,455,316 | 4,455,316 | +| Msize (Mem Size 1) | 1,000,000 | 223,239 | 17,617 | 17.62 | 3,237,500 | 3,235,548 | 3,230,668 | +| Precompile Fixed Cost (Blake2F) | 1,000,000 | 223,239 | 193,313 | 193.31 | 667,720 | 642,141.5 | 487,160 | +| Precompile Fixed Cost (Bls12 Fp To G1) | 1,000,000 | 223,239 | 26,769 | 26.77 | 4,703,152 | 4,703,152 | 4,703,152 | +| Precompile Fixed Cost (Bls12 Fp To G2) | 1,000,000 | 223,239 | 20,407 | 20.41 | 4,706,076 | 4,706,076 | 4,705,100 | +| Precompile Fixed Cost (Bls12 G1Add) | 1,000,000 | 223,239 | 20,862 | 20.86 | 3,875,724 | 3,874,910.7 | 3,873,772 | +| Precompile Fixed Cost (Bls12 G1Msm) | 1,000,000 | 223,239 | 28,144 | 28.14 | 4,157,748 | 4,157,357.6 | 4,154,820 | +| Precompile Fixed Cost (Bls12 G2Add) | 1,000,000 | 223,239 | 24,536 | 24.54 | 4,629,968 | 4,629,263.1 | 4,623,136 | +| Precompile Fixed Cost (Bls12 G2Msm) | 1,000,000 | 223,239 | 22,938 | 22.94 | 3,737,168 | 3,737,168 | 3,734,240 | +| Precompile Fixed Cost (Bls12 Pairing Check) | 1,000,000 | 223,239 | 35,928 | 35.93 | 3,673,732 | 3,673,022.2 | 3,667,876 | +| Precompile Fixed Cost (Bn128 Add) | 1,000,000 | 223,239 | 26,148 | 26.15 | 4,308,028 | 4,308,028 | 4,306,076 | +| Precompile Fixed Cost (Bn128 Add 1 2) | 1,000,000 | 223,239 | 25,524 | 25.52 | 4,381,196 | 4,380,708 | 4,380,220 | +| Precompile Fixed Cost (Bn128 Add Infinities) | 1,000,000 | 223,239 | 17,748 | 17.75 | 4,475,804 | 4,475,804 | 4,475,804 | +| Precompile Fixed Cost (Bn128 Mul) | 1,000,000 | 223,239 | 75,876 | 75.88 | 3,940,136 | 3,940,108.9 | 3,939,160 | +| Precompile Fixed Cost (Bn128 Mul 1 2 2 Scalar) | 1,000,000 | 223,239 | 7,939 | 7.94 | 4,379,244 | 4,379,244 | 4,378,268 | +| Precompile Fixed Cost (Bn128 Mul 1 2 32 Byte Scalar) | 1,000,000 | 223,239 | 73,318 | 73.32 | 4,686,576 | 4,686,576 | 4,685,600 | +| Precompile Fixed Cost (Bn128 Mul 32 Byte Coord And 2 Scalar) | 1,000,000 | 223,239 | 7,277 | 7.28 | 3,608,344 | 3,608,344 | 3,604,440 | +| Precompile Fixed Cost (Bn128 Mul 32 Byte Coord And Scalar) | 1,000,000 | 223,239 | 72,781 | 72.78 | 4,770,452 | 4,770,452 | 4,769,476 | +| Precompile Fixed Cost (Bn128 Mul Infinities 2 Scalar) | 1,000,000 | 223,239 | 6,291 | 6.29 | 4,427,040 | 4,427,040 | 4,426,064 | +| Precompile Fixed Cost (Bn128 Mul Infinities 32 Byte Scalar) | 1,000,000 | 223,239 | 47,767 | 47.77 | 4,193,856 | 4,193,856 | 4,191,904 | +| Precompile Fixed Cost (Bn128 One Pairing) | 1,000,000 | 223,239 | 69,169 | 69.17 | 3,550,772 | 3,549,768.9 | 3,544,916 | +| Precompile Fixed Cost (Bn128 Two Pairings) | 1,000,000 | 223,239 | 68,328 | 68.33 | 4,561,660 | 4,559,115.4 | 4,555,804 | +| Precompile Fixed Cost (Bn128 Two Pairings Empty) | 1,000,000 | 223,239 | 4,589 | 4.59 | 4,462,148 | 4,462,148 | 4,459,220 | +| Precompile Fixed Cost (Ecrecover) | 1,000,000 | 223,239 | 72,669 | 72.67 | 4,091,392 | 4,086,334.5 | 4,079,680 | +| Precompile Fixed Cost (Point Evaluation) | 1,000,000 | 223,239 | 78,410 | 78.41 | 3,394,632 | 3,388,731.6 | 3,367,304 | +| Precompile Only Data Input (Identity) | 1,000,000 | 223,239 | 12,746 | 12.75 | 3,937,208 | 3,937,208 | 3,937,208 | +| Precompile Only Data Input (Ripemd, 160) | 1,000,000 | 223,239 | 10,487 | 10.49 | 2,055,568 | 2,043,978 | 2,029,216 | +| Precompile Only Data Input (Sha2, 256) | 1,000,000 | 223,239 | 7,577 | 7.58 | 1,972,608 | 1,970,981.3 | 1,963,824 | +| Push (Push0) | 1,000,000 | 223,239 | 16,893 | 16.89 | 4,216,300 | 4,216,300 | 4,216,300 | +| Push (Push10) | 1,000,000 | 223,239 | 15,158 | 15.16 | 4,472,880 | 4,472,880 | 4,471,904 | +| Push (Push11) | 1,000,000 | 223,239 | 15,638 | 15.64 | 4,375,340 | 4,374,852 | 4,374,364 | +| Push (Push12) | 1,000,000 | 223,239 | 15,860 | 15.86 | 4,577,272 | 4,577,272 | 4,577,272 | +| Push (Push13) | 1,000,000 | 223,239 | 16,095 | 16.09 | 3,538,084 | 3,536,912.8 | 3,531,252 | +| Push (Push14) | 1,000,000 | 223,239 | 16,796 | 16.80 | 4,181,168 | 4,181,168 | 4,174,336 | +| Push (Push15) | 1,000,000 | 223,239 | 16,639 | 16.64 | 4,190,928 | 4,190,928 | 4,186,048 | +| Push (Push16) | 1,000,000 | 223,239 | 17,208 | 17.21 | 4,677,792 | 4,677,792 | 4,677,792 | +| Push (Push17) | 1,000,000 | 223,239 | 17,740 | 17.74 | 4,367,552 | 4,366,753.1 | 4,361,696 | +| Push (Push18) | 1,000,000 | 223,239 | 17,195 | 17.20 | 4,394,848 | 4,394,766.3 | 4,394,848 | +| Push (Push19) | 1,000,000 | 223,239 | 17,583 | 17.58 | 4,394,844 | 4,394,844 | 4,393,868 | +| Push (Push1) | 1,000,000 | 223,239 | 12,293 | 12.29 | 3,780,088 | 3,780,088 | 3,778,136 | +| Push (Push20) | 1,000,000 | 223,239 | 22,710 | 22.71 | 904,716 | 890,516.8 | 859,820 | +| Push (Push21) | 1,000,000 | 223,239 | 18,523 | 18.52 | 1,933,568 | 1,910,498.9 | 1,892,576 | +| Push (Push22) | 1,000,000 | 223,239 | 18,391 | 18.39 | 3,268,732 | 3,268,146.4 | 3,263,852 | +| Push (Push23) | 1,000,000 | 223,239 | 18,907 | 18.91 | 4,175,312 | 4,175,312 | 4,175,312 | +| Push (Push24) | 1,000,000 | 223,239 | 25,838 | 25.84 | 810,044 | 801,260 | 789,548 | +| Push (Push25) | 1,000,000 | 223,239 | 19,399 | 19.40 | 4,415,336 | 4,415,336 | 4,414,360 | +| Push (Push26) | 1,000,000 | 223,239 | 20,136 | 20.14 | 4,815,340 | 4,814,689.3 | 4,813,388 | +| Push (Push27) | 1,000,000 | 223,239 | 26,803 | 26.80 | 1,048,188 | 1,025,770.5 | 985,724 | +| Push (Push28) | 1,000,000 | 223,239 | 20,974 | 20.97 | 4,549,952 | 4,549,685.8 | 4,546,048 | +| Push (Push29) | 1,000,000 | 223,239 | 20,548 | 20.55 | 3,434,644 | 3,432,016.3 | 3,428,788 | +| Push (Push2) | 1,000,000 | 223,239 | 12,372 | 12.37 | 3,688,368 | 3,686,744.7 | 3,682,516 | +| Push (Push30) | 1,000,000 | 223,239 | 27,906 | 27.91 | 850,060 | 835,144.2 | 810,044 | +| Push (Push31) | 1,000,000 | 223,239 | 22,096 | 22.10 | 4,466,048 | 4,466,048 | 4,465,072 | +| Push (Push32) | 1,000,000 | 223,239 | 22,592 | 22.59 | 4,607,520 | 4,607,520 | 4,605,568 | +| Push (Push3) | 1,000,000 | 223,239 | 13,420 | 13.42 | 3,943,060 | 3,943,060 | 3,939,156 | +| Push (Push4) | 1,000,000 | 223,239 | 13,839 | 13.84 | 4,349,988 | 4,349,988 | 4,349,988 | +| Push (Push5) | 1,000,000 | 223,239 | 14,119 | 14.12 | 4,700,224 | 4,700,224 | 4,697,296 | +| Push (Push6) | 1,000,000 | 223,239 | 14,331 | 14.33 | 4,593,856 | 4,589,812.6 | 4,587,024 | +| Push (Push7) | 1,000,000 | 223,239 | 19,237 | 19.24 | 1,427,844 | 1,418,641.7 | 1,400,516 | +| Push (Push8) | 1,000,000 | 223,239 | 18,958 | 18.96 | 789,548 | 782,878.7 | 769,052 | +| Push (Push9) | 1,000,000 | 223,239 | 14,909 | 14.91 | 4,723,624 | 4,722,736.7 | 4,722,648 | +| Return Revert (1Kib Of Non, Zero Data, Return) | 1,000,000 | 223,239 | 17,559 | 17.56 | 1,880,872 | 1,875,260 | 1,862,328 | +| Return Revert (1Kib Of Non, Zero Data, Revert) | 1,000,000 | 223,239 | 23,532 | 23.53 | 1,091,128 | 1,073,860.3 | 1,048,184 | +| Return Revert (1Kib Of Zero Data, Return) | 1,000,000 | 223,239 | 20,418 | 20.42 | 4,451,416 | 4,451,416 | 4,450,440 | +| Return Revert (1Kib Of Zero Data, Revert) | 1,000,000 | 223,239 | 20,968 | 20.97 | 4,470,928 | 4,470,928 | 4,469,952 | +| Return Revert (1Mib Of Non, Zero Data, Return) | 1,000,000 | 223,239 | 5,060 | 5.06 | 4,146,036 | 4,146,036 | 4,146,036 | +| Return Revert (1Mib Of Non, Zero Data, Revert) | 1,000,000 | 223,239 | 5,334 | 5.33 | 4,799,724 | 4,798,748 | 4,793,868 | +| Return Revert (1Mib Of Zero Data, Return) | 1,000,000 | 223,239 | 4,073 | 4.07 | 4,687,540 | 4,687,540 | 4,686,564 | +| Return Revert (1Mib Of Zero Data, Revert) | 1,000,000 | 223,239 | 3,859 | 3.86 | 3,891,336 | 3,891,336 | 3,891,336 | +| Return Revert (Empty, Return) | 1,000,000 | 223,239 | 24,978 | 24.98 | 4,437,764 | 4,436,997.1 | 4,434,836 | +| Return Revert (Empty, Revert) | 1,000,000 | 223,239 | 27,149 | 27.15 | 4,042,596 | 4,041,131.7 | 4,039,668 | +| Returndatasize Nonzero (Returned Size 0, Return Data Style Returndatastyle.Identity) | 1,000,000 | 223,239 | 14,062 | 14.06 | 4,374,368 | 4,374,368 | 4,374,368 | +| Returndatasize Nonzero (Returned Size 0, Return Data Style Returndatastyle.Return) | 1,000,000 | 223,239 | 14,043 | 14.04 | 4,723,628 | 4,723,628 | 4,722,652 | +| Returndatasize Nonzero (Returned Size 0, Return Data Style Returndatastyle.Revert) | 1,000,000 | 223,239 | 13,770 | 13.77 | 4,733,380 | 4,733,380 | 4,733,380 | +| Returndatasize Nonzero (Returned Size 1, Return Data Style Returndatastyle.Identity) | 1,000,000 | 223,239 | 14,492 | 14.49 | 4,514,820 | 4,511,013.6 | 4,507,988 | +| Returndatasize Nonzero (Returned Size 1, Return Data Style Returndatastyle.Return) | 1,000,000 | 223,239 | 14,595 | 14.60 | 3,653,236 | 3,653,236 | 3,653,236 | +| Returndatasize Nonzero (Returned Size 1, Return Data Style Returndatastyle.Revert) | 1,000,000 | 223,239 | 14,811 | 14.81 | 3,694,224 | 3,694,224 | 3,689,344 | +| Returndatasize Zero | 1,000,000 | 223,239 | 13,863 | 13.86 | 4,791,916 | 4,791,916 | 4,790,940 | +| Shifts (Shift Right Sar) | 1,000,000 | 223,239 | 22,660 | 22.66 | 3,599,564 | 3,599,564 | 3,597,612 | +| Shifts (Shift Right Shr) | 1,000,000 | 223,239 | 21,341 | 21.34 | 4,588,004 | 4,586,540 | 4,585,076 | +| Swap (Swap10) | 1,000,000 | 223,239 | 22,403 | 22.40 | 1,797,912 | 1,785,907.2 | 1,772,536 | +| Swap (Swap11) | 1,000,000 | 223,239 | 21,886 | 21.89 | 3,768,396 | 3,768,396 | 3,768,396 | +| Swap (Swap12) | 1,000,000 | 223,239 | 22,668 | 22.67 | 4,577,276 | 4,575,324 | 4,573,372 | +| Swap (Swap13) | 1,000,000 | 223,239 | 22,372 | 22.37 | 4,186,048 | 4,185,885.3 | 4,183,120 | +| Swap (Swap14) | 1,000,000 | 223,239 | 22,283 | 22.28 | 4,793,868 | 4,793,868 | 4,793,868 | +| Swap (Swap15) | 1,000,000 | 223,239 | 22,505 | 22.50 | 4,707,052 | 4,707,052 | 4,707,052 | +| Swap (Swap16) | 1,000,000 | 223,239 | 22,643 | 22.64 | 4,585,076 | 4,582,287.4 | 4,581,172 | +| Swap (Swap1) | 1,000,000 | 223,239 | 22,578 | 22.58 | 4,251,436 | 4,250,338 | 4,247,532 | +| Swap (Swap2) | 1,000,000 | 223,239 | 22,334 | 22.33 | 3,962,564 | 3,962,564 | 3,962,564 | +| Swap (Swap3) | 1,000,000 | 223,239 | 22,579 | 22.58 | 4,466,052 | 4,466,052 | 4,464,100 | +| Swap (Swap4) | 1,000,000 | 223,239 | 22,317 | 22.32 | 3,800,580 | 3,800,384.8 | 3,794,724 | +| Swap (Swap5) | 1,000,000 | 223,239 | 22,080 | 22.08 | 4,293,392 | 4,293,392 | 4,292,416 | +| Swap (Swap6) | 1,000,000 | 223,239 | 22,075 | 22.07 | 4,690,468 | 4,690,468 | 4,688,516 | +| Swap (Swap7) | 1,000,000 | 223,239 | 22,389 | 22.39 | 3,504,908 | 3,503,037 | 3,499,052 | +| Swap (Swap8) | 1,000,000 | 223,239 | 22,333 | 22.33 | 4,366,572 | 4,366,572 | 4,366,572 | +| Swap (Swap9) | 1,000,000 | 223,239 | 21,910 | 21.91 | 4,716,800 | 4,716,800 | 4,714,848 | +| Tload (Val Mut False, Key Mut False) | 1,000,000 | 223,239 | 5,957 | 5.96 | 4,704,124 | 4,704,124 | 4,704,124 | +| Tload (Val Mut False, Key Mut True) | 1,000,000 | 223,239 | 5,588 | 5.59 | 3,250,188 | 3,250,188 | 3,244,332 | +| Tload (Val Mut True, Key Mut False) | 1,000,000 | 223,239 | 7,043 | 7.04 | 4,390,944 | 4,390,944 | 4,390,944 | +| Tload (Val Mut True, Key Mut True) | 1,000,000 | 223,239 | 7,048 | 7.05 | 3,792,772 | 3,792,528 | 3,789,844 | +| Tstore (Dense Val Mut False, Key Mut False) | 1,000,000 | 223,239 | 12,039 | 12.04 | 4,790,940 | 4,790,940 | 4,790,940 | +| Tstore (Dense Val Mut False, Key Mut True) | 1,000,000 | 223,239 | 12,234 | 12.23 | 4,454,340 | 4,454,340 | 4,452,388 | +| Tstore (Dense Val Mut True, Key Mut False) | 1,000,000 | 223,239 | 18,187 | 18.19 | 3,473,676 | 3,471,457.8 | 3,467,820 | +| Tstore (Dense Val Mut True, Key Mut True) | 1,000,000 | 223,239 | 18,038 | 18.04 | 4,447,520 | 4,447,520 | 4,445,568 | +| Unop (Iszero) | 1,000,000 | 223,239 | 23,813 | 23.81 | 4,472,880 | 4,472,880 | 4,472,880 | +| Unop (Not) | 1,000,000 | 223,239 | 12,207 | 12.21 | 4,791,916 | 4,791,916 | 4,791,916 | +| Zero Param (Address) | 1,000,000 | 223,239 | 25,578 | 25.58 | 4,568,492 | 4,567,666.2 | 4,567,516 | +| Zero Param (Basefee) | 1,000,000 | 223,239 | 16,886 | 16.89 | 4,202,636 | 4,202,636 | 4,202,636 | +| Zero Param (Blobbasefee) | 1,000,000 | 223,239 | 21,134 | 21.13 | 1,683,720 | 1,676,533.1 | 1,665,176 | +| Zero Param (Caller) | 1,000,000 | 223,239 | 25,674 | 25.67 | 4,562,636 | 4,562,636 | 4,561,660 | +| Zero Param (Chainid) | 1,000,000 | 223,239 | 18,138 | 18.14 | 4,567,516 | 4,567,516 | 4,567,516 | +| Zero Param (Codesize) | 1,000,000 | 223,239 | 16,511 | 16.51 | 4,705,100 | 4,705,100 | 4,705,100 | +| Zero Param (Coinbase) | 1,000,000 | 223,239 | 25,536 | 25.54 | 4,479,688 | 4,479,688 | 4,479,688 | +| Zero Param (Gaslimit) | 1,000,000 | 223,239 | 17,376 | 17.38 | 4,478,728 | 4,478,449.1 | 4,476,776 | +| Zero Param (Gasprice) | 1,000,000 | 223,239 | 20,085 | 20.09 | 4,445,572 | 4,445,572 | 4,444,596 | +| Zero Param (Gas) | 1,000,000 | 223,239 | 17,654 | 17.65 | 3,854,256 | 3,853,280 | 3,850,352 | +| Zero Param (Number) | 1,000,000 | 223,239 | 17,868 | 17.87 | 4,429,968 | 4,429,073.3 | 4,428,016 | +| Zero Param (Origin) | 1,000,000 | 223,239 | 26,250 | 26.25 | 4,694,368 | 4,694,368 | 4,694,368 | +| Zero Param (Prevrandao) | 1,000,000 | 223,239 | 30,777 | 30.78 | 4,380,220 | 4,380,220 | 4,379,244 | +| Zero Param (Timestamp) | 1,000,000 | 223,239 | 17,567 | 17.57 | 3,848,404 | 3,848,404 | 3,846,452 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 0Bytes, Call) | 1,000,000 | 223,239 | 18,284 | 18.28 | 4,705,100 | 4,705,100 | 4,705,100 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 0Bytes, Transaction) | 1,000,000 | 223,239 | 18,959 | 18.96 | 3,950,860 | 3,947,118.7 | 3,944,028 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 100Bytes, Call) | 1,000,000 | 223,239 | 16,923 | 16.92 | 4,262,168 | 4,262,168 | 4,262,168 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 100Bytes, Transaction) | 1,000,000 | 223,239 | 16,430 | 16.43 | 3,744,000 | 3,741,490.3 | 3,739,120 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 10Kib, Call) | 1,000,000 | 223,239 | 12,518 | 12.52 | 4,445,568 | 4,445,568 | 4,445,568 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 10Kib, Transaction) | 1,000,000 | 223,239 | 7,119 | 7.12 | 3,543,940 | 3,542,801.3 | 3,538,084 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 1Mib, Call) | 1,000,000 | 223,239 | 3,819 | 3.82 | 4,397,772 | 4,397,772 | 4,396,796 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 1Mib, Transaction) | 1,000,000 | 223,239 | 4,653 | 4.65 | 4,381,192 | 4,381,192 | 4,381,192 | +| Calldatacopy (Zero Data, Fixed Src Dst, 0Bytes, Call) | 1,000,000 | 223,239 | 14,745 | 14.74 | 2,474,272 | 2,469,531.4 | 2,463,536 | +| Calldatacopy (Zero Data, Fixed Src Dst, 0Bytes, Transaction) | 1,000,000 | 223,239 | 13,555 | 13.55 | 1,655,420 | 1,653,379.3 | 1,648,588 | +| Calldatacopy (Zero Data, Fixed Src Dst, 100Bytes, Call) | 1,000,000 | 223,239 | 12,230 | 12.23 | 4,309,000 | 4,309,000 | 4,307,048 | +| Calldatacopy (Zero Data, Fixed Src Dst, 100Bytes, Transaction) | 1,000,000 | 223,239 | 11,874 | 11.87 | 4,492,376 | 4,492,376 | 4,491,400 | +| Calldatacopy (Zero Data, Fixed Src Dst, 10Kib, Call) | 1,000,000 | 223,239 | 10,357 | 10.36 | 4,109,936 | 4,109,936 | 4,109,936 | +| Calldatacopy (Zero Data, Fixed Src Dst, 10Kib, Transaction) | 1,000,000 | 223,239 | 7,251 | 7.25 | 4,443,620 | 4,443,620 | 4,443,620 | +| Calldatacopy (Zero Data, Fixed Src Dst, 1Mib, Call) | 1,000,000 | 223,239 | 5,690 | 5.69 | 860,796 | 858,746.4 | 850,060 | +| Calldatacopy (Zero Data, Fixed Src Dst, 1Mib, Transaction) | 1,000,000 | 223,239 | 4,098 | 4.10 | 4,730,444 | 4,730,444 | 4,730,444 | +| Calldatacopy (Non Zero, Dynamic Src Dst, 100Bytes, Call) | 1,000,000 | 223,239 | 16,754 | 16.75 | 4,104,080 | 4,102,428.3 | 4,102,128 | +| Calldatacopy (Non Zero, Dynamic Src Dst, 100Bytes, Transaction) | 1,000,000 | 223,239 | 17,698 | 17.70 | 4,708,016 | 4,708,016 | 4,707,040 | +| Calldatacopy (Non Zero, Dynamic Src Dst, 10Kib, Call) | 1,000,000 | 223,239 | 11,394 | 11.39 | 4,301,200 | 4,300,956 | 4,299,248 | +| Calldatacopy (Non Zero, Dynamic Src Dst, 10Kib, Transaction) | 1,000,000 | 223,239 | 10,765 | 10.77 | 4,506,036 | 4,504,641.7 | 4,503,108 | +| Calldatacopy (Non Zero, Fixed Src Dst, 100Bytes, Call) | 1,000,000 | 223,239 | 12,954 | 12.95 | 3,899,144 | 3,899,144 | 3,897,192 | +| Calldatacopy (Non Zero, Fixed Src Dst, 100Bytes, Transaction) | 1,000,000 | 223,239 | 12,784 | 12.78 | 748,724 | 739,827.4 | 727,252 | +| Calldatacopy (Non Zero, Fixed Src Dst, 10Kib, Call) | 1,000,000 | 223,239 | 8,688 | 8.69 | 4,341,208 | 4,341,012 | 4,340,232 | +| Calldatacopy (Non Zero, Fixed Src Dst, 10Kib, Transaction) | 1,000,000 | 223,239 | 9,168 | 9.17 | 4,815,340 | 4,815,340 | 4,815,340 | +| Codecopy (Dynamic Src Dst, 0Bytes) | 1,000,000 | 223,239 | 17,747 | 17.75 | 3,577,120 | 3,577,120 | 3,571,264 | +| Codecopy (Dynamic Src Dst, 0.25X Max Code) | 1,000,000 | 223,239 | 12,178 | 12.18 | 4,733,380 | 4,733,380 | 4,733,380 | +| Codecopy (Dynamic Src Dst, 0.50X Max Code Size) | 1,000,000 | 223,239 | 10,936 | 10.94 | 4,688,516 | 4,688,516 | 4,687,540 | +| Codecopy (Dynamic Src Dst, 0.75X Max Code Size) | 1,000,000 | 223,239 | 11,889 | 11.89 | 4,791,916 | 4,791,916 | 4,791,916 | +| Codecopy (Dynamic Src Dst, Max Code) | 1,000,000 | 223,239 | 10,533 | 10.53 | 4,202,636 | 4,202,636 | 4,202,636 | +| Codecopy (Fixed Src Dst, 0Bytes) | 1,000,000 | 223,239 | 17,993 | 17.99 | 1,191,656 | 1,172,021.2 | 1,149,688 | +| Codecopy (Fixed Src Dst, 0.25X Max Code) | 1,000,000 | 223,239 | 9,384 | 9.38 | 1,225,988 | 1,224,621.6 | 1,217,204 | +| Codecopy (Fixed Src Dst, 0.50X Max Code Size) | 1,000,000 | 223,239 | 10,402 | 10.40 | 4,310,952 | 4,310,952 | 4,309,976 | +| Codecopy (Fixed Src Dst, 0.75X Max Code Size) | 1,000,000 | 223,239 | 9,595 | 9.60 | 4,732,400 | 4,732,237.3 | 4,732,400 | +| Codecopy (Fixed Src Dst, Max Code) | 1,000,000 | 223,239 | 8,743 | 8.74 | 3,612,248 | 3,612,085.3 | 3,609,320 | +| Mcopy (Dynamic Src Dst, 0Bytes) | 1,000,000 | 223,239 | 18,513 | 18.51 | 4,772,400 | 4,772,400 | 4,772,400 | +| Mcopy (Dynamic Src Dst, 100Bytes) | 1,000,000 | 223,239 | 17,113 | 17.11 | 4,265,096 | 4,264,998.4 | 4,264,120 | +| Mcopy (Dynamic Src Dst, 10Kib) | 1,000,000 | 223,239 | 15,310 | 15.31 | 3,939,160 | 3,939,160 | 3,939,160 | +| Mcopy (Dynamic Src Dst, 1Mib) | 1,000,000 | 223,239 | 4,950 | 4.95 | 4,390,944 | 4,390,944 | 4,388,992 | +| Mcopy (Fixed Src Dst, 0Bytes) | 1,000,000 | 223,239 | 13,516 | 13.52 | 4,381,196 | 4,381,196 | 4,381,196 | +| Mcopy (Fixed Src Dst, 100Bytes) | 1,000,000 | 223,239 | 13,610 | 13.61 | 4,573,372 | 4,570,304.6 | 4,568,492 | +| Mcopy (Fixed Src Dst, 10Kib) | 1,000,000 | 223,239 | 11,256 | 11.26 | 483,256 | 411,379.0 | 250,968 | +| Mcopy (Fixed Src Dst, 1Mib) | 1,000,000 | 223,239 | 4,971 | 4.97 | 1,688,600 | 1,687,868 | 1,686,648 | +| Returndatacopy (Fixed Dst False, 0Bytes) | 1,000,000 | 223,239 | 17,921 | 17.92 | 1,666,156 | 1,663,002.8 | 1,657,372 | +| Returndatacopy (Fixed Dst False, 100Bytes) | 1,000,000 | 223,239 | 15,992 | 15.99 | 3,943,052 | 3,943,052 | 3,943,052 | +| Returndatacopy (Fixed Dst False, 10Kib) | 1,000,000 | 223,239 | 10,898 | 10.90 | 4,502,132 | 4,502,132 | 4,500,180 | +| Returndatacopy (Fixed Dst False, 1Mib) | 1,000,000 | 223,239 | 6,179 | 6.18 | 4,234,844 | 4,234,844 | 4,231,916 | +| Returndatacopy (Fixed Dst True, 0Bytes) | 1,000,000 | 223,239 | 15,866 | 15.87 | 3,906,952 | 3,904,756 | 3,899,144 | +| Returndatacopy (Fixed Dst True, 100Bytes) | 1,000,000 | 223,239 | 12,879 | 12.88 | 3,943,056 | 3,942,470.4 | 3,942,080 | +| Returndatacopy (Fixed Dst True, 10Kib) | 1,000,000 | 223,239 | 10,113 | 10.11 | 4,256,312 | 4,256,190 | 4,256,312 | +| Returndatacopy (Fixed Dst True, 1Mib) | 1,000,000 | 223,239 | 6,999 | 7.00 | 3,969,396 | 3,968,029.6 | 3,963,540 | +| Log Opcodes (Dynamic, Non Zero Topic, 0 Bytes Data, Log0) | 1,000,000 | 223,239 | 6,702 | 6.70 | 4,823,148 | 4,823,148 | 4,822,172 | +| Log Opcodes (Dynamic, Non Zero Topic, 0 Bytes Data, Log1) | 1,000,000 | 223,239 | 5,818 | 5.82 | 3,881,580 | 3,881,580 | 3,881,580 | +| Log Opcodes (Dynamic, Non Zero Topic, 0 Bytes Data, Log2) | 1,000,000 | 223,239 | 5,829 | 5.83 | 4,385,088 | 4,385,088 | 4,384,112 | +| Log Opcodes (Dynamic, Non Zero Topic, 0 Bytes Data, Log3) | 1,000,000 | 223,239 | 6,026 | 6.03 | 1,399,544 | 1,397,173.7 | 1,390,760 | +| Log Opcodes (Dynamic, Non Zero Topic, 0 Bytes Data, Log4) | 1,000,000 | 223,239 | 4,793 | 4.79 | 4,402,652 | 4,402,456.8 | 4,397,772 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log0) | 1,000,000 | 223,239 | 3,994 | 3.99 | 4,547,028 | 4,547,028 | 4,547,028 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log1) | 1,000,000 | 223,239 | 3,932 | 3.93 | 4,077,728 | 4,077,728 | 4,075,776 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log2) | 1,000,000 | 223,239 | 4,927 | 4.93 | 4,685,588 | 4,685,588 | 4,685,588 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log3) | 1,000,000 | 223,239 | 4,401 | 4.40 | 2,609,932 | 2,608,956 | 2,604,076 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log4) | 1,000,000 | 223,239 | 4,440 | 4.44 | 3,779,116 | 3,779,116 | 3,773,268 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log0) | 1,000,000 | 223,239 | 4,187 | 4.19 | 3,625,908 | 3,625,127.2 | 3,618,100 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log1) | 1,000,000 | 223,239 | 5,007 | 5.01 | 3,862,064 | 3,862,064 | 3,856,208 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log2) | 1,000,000 | 223,239 | 4,444 | 4.44 | 4,428,988 | 4,428,988 | 4,428,988 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log3) | 1,000,000 | 223,239 | 4,539 | 4.54 | 4,181,168 | 4,181,168 | 4,181,168 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log4) | 1,000,000 | 223,239 | 4,584 | 4.58 | 4,093,344 | 4,093,344 | 4,091,392 | +| Log Opcodes (Dynamic, Zero Topic, 0 Bytes Data, Log0) | 1,000,000 | 223,239 | 5,663 | 5.66 | 4,770,456 | 4,770,456 | 4,770,456 | +| Log Opcodes (Dynamic, Zero Topic, 0 Bytes Data, Log1) | 1,000,000 | 223,239 | 5,441 | 5.44 | 4,380,220 | 4,380,220 | 4,379,244 | +| Log Opcodes (Dynamic, Zero Topic, 0 Bytes Data, Log2) | 1,000,000 | 223,239 | 5,649 | 5.65 | 4,176,288 | 4,176,288 | 4,176,288 | +| Log Opcodes (Dynamic, Zero Topic, 0 Bytes Data, Log3) | 1,000,000 | 223,239 | 5,812 | 5.81 | 4,723,628 | 4,723,301.3 | 4,723,628 | +| Log Opcodes (Dynamic, Zero Topic, 0 Bytes Data, Log4) | 1,000,000 | 223,239 | 4,834 | 4.83 | 3,731,312 | 3,731,312 | 3,728,384 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Non Zero Data, Log0) | 1,000,000 | 223,239 | 4,543 | 4.54 | 4,255,336 | 4,255,336 | 4,254,360 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Non Zero Data, Log1) | 1,000,000 | 223,239 | 4,092 | 4.09 | 4,349,984 | 4,349,984 | 4,349,008 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Non Zero Data, Log2) | 1,000,000 | 223,239 | 4,666 | 4.67 | 3,845,476 | 3,845,476 | 3,844,500 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Non Zero Data, Log3) | 1,000,000 | 223,239 | 3,918 | 3.92 | 4,359,744 | 4,359,744 | 4,357,792 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Non Zero Data, Log4) | 1,000,000 | 223,239 | 4,149 | 4.15 | 3,879,628 | 3,879,628 | 3,876,700 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Zeros Data, Log0) | 1,000,000 | 223,239 | 4,398 | 4.40 | 3,905,976 | 3,905,650.7 | 3,905,976 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Zeros Data, Log1) | 1,000,000 | 223,239 | 4,285 | 4.29 | 3,940,136 | 3,940,136 | 3,939,160 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Zeros Data, Log2) | 1,000,000 | 223,239 | 6,456 | 6.46 | 1,490,308 | 1,474,301.6 | 1,456,148 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Zeros Data, Log3) | 1,000,000 | 223,239 | 4,674 | 4.67 | 3,701,056 | 3,700,568 | 3,695,200 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Zeros Data, Log4) | 1,000,000 | 223,239 | 4,369 | 4.37 | 4,109,936 | 4,108,960 | 4,104,080 | +| Log Opcodes (Fixed, Non Zero Topic, 0 Bytes Data, Log0) | 1,000,000 | 223,239 | 5,635 | 5.63 | 4,791,916 | 4,791,916 | 4,790,940 | +| Log Opcodes (Fixed, Non Zero Topic, 0 Bytes Data, Log1) | 1,000,000 | 223,239 | 4,359 | 4.36 | 4,426,064 | 4,424,502.4 | 4,424,112 | +| Log Opcodes (Fixed, Non Zero Topic, 0 Bytes Data, Log2) | 1,000,000 | 223,239 | 5,114 | 5.11 | 4,507,988 | 4,507,988 | 4,507,012 | +| Log Opcodes (Fixed, Non Zero Topic, 0 Bytes Data, Log3) | 1,000,000 | 223,239 | 6,571 | 6.57 | 1,433,700 | 1,432,584.6 | 1,428,820 | +| Log Opcodes (Fixed, Non Zero Topic, 0 Bytes Data, Log4) | 1,000,000 | 223,239 | 5,003 | 5.00 | 3,651,284 | 3,651,284 | 3,625,908 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log0) | 1,000,000 | 223,239 | 4,080 | 4.08 | 4,256,312 | 4,256,312 | 4,255,336 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log1) | 1,000,000 | 223,239 | 4,261 | 4.26 | 4,507,012 | 4,507,012 | 4,507,012 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log2) | 1,000,000 | 223,239 | 4,517 | 4.52 | 4,719,724 | 4,719,724 | 4,718,748 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log3) | 1,000,000 | 223,239 | 3,892 | 3.89 | 4,681,696 | 4,681,696 | 4,680,720 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log4) | 1,000,000 | 223,239 | 5,049 | 5.05 | 2,028,240 | 2,028,240 | 2,024,336 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Zeros Data, Log0) | 1,000,000 | 223,239 | 4,497 | 4.50 | 3,850,356 | 3,850,356 | 3,849,380 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Zeros Data, Log1) | 1,000,000 | 223,239 | 4,926 | 4.93 | 4,568,492 | 4,568,492 | 4,568,492 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Zeros Data, Log2) | 1,000,000 | 223,239 | 4,077 | 4.08 | 3,806,436 | 3,806,436 | 3,799,604 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Zeros Data, Log3) | 1,000,000 | 223,239 | 4,699 | 4.70 | 1,463,156 | 1,461,984.8 | 1,456,324 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Zeros Data, Log4) | 1,000,000 | 223,239 | 4,061 | 4.06 | 3,351,688 | 3,351,688 | 3,346,808 | +| Log Opcodes (Fixed, Zero Topic, 0 Bytes Data, Log0) | 1,000,000 | 223,239 | 5,229 | 5.23 | 1,888,676 | 1,887,700 | 1,883,796 | +| Log Opcodes (Fixed, Zero Topic, 0 Bytes Data, Log1) | 1,000,000 | 223,239 | 4,802 | 4.80 | 4,218,252 | 4,218,056.8 | 4,216,300 | +| Log Opcodes (Fixed, Zero Topic, 0 Bytes Data, Log2) | 1,000,000 | 223,239 | 4,735 | 4.74 | 4,291,440 | 4,291,440 | 4,290,464 | +| Log Opcodes (Fixed, Zero Topic, 0 Bytes Data, Log3) | 1,000,000 | 223,239 | 4,686 | 4.69 | 4,306,080 | 4,306,080 | 4,305,104 | +| Log Opcodes (Fixed, Zero Topic, 0 Bytes Data, Log4) | 1,000,000 | 223,239 | 4,834 | 4.83 | 4,430,936 | 4,430,288 | 4,429,964 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Non Zero Data, Log0) | 1,000,000 | 223,239 | 4,869 | 4.87 | 3,768,396 | 3,768,396 | 3,768,396 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Non Zero Data, Log1) | 1,000,000 | 223,239 | 4,237 | 4.24 | 3,705,936 | 3,705,936 | 3,704,960 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Non Zero Data, Log2) | 1,000,000 | 223,239 | 4,583 | 4.58 | 4,215,324 | 4,215,324 | 4,214,348 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Non Zero Data, Log3) | 1,000,000 | 223,239 | 4,761 | 4.76 | 4,492,372 | 4,492,372 | 4,491,396 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Non Zero Data, Log4) | 1,000,000 | 223,239 | 4,551 | 4.55 | 4,361,696 | 4,361,696 | 4,360,720 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Zeros Data, Log0) | 1,000,000 | 223,239 | 4,881 | 4.88 | 2,024,336 | 2,021,733.3 | 2,011,648 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Zeros Data, Log1) | 1,000,000 | 223,239 | 4,823 | 4.82 | 4,210,444 | 4,210,444 | 4,206,540 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Zeros Data, Log2) | 1,000,000 | 223,239 | 4,402 | 4.40 | 4,730,444 | 4,730,444 | 4,730,444 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Zeros Data, Log3) | 1,000,000 | 223,239 | 4,491 | 4.49 | 4,262,168 | 4,259,728 | 4,257,288 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Zeros Data, Log4) | 1,000,000 | 223,239 | 4,752 | 4.75 | 4,218,252 | 4,218,252 | 4,217,276 | +| Address State Cold (Absent Accounts False, Balance) | 1,000,000 | 223,239 | 9,574 | 9.57 | 4,582,152 | 4,582,152 | 4,581,176 | +| Address State Cold (Absent Accounts True, Balance) | 1,000,000 | 223,239 | 7,928 | 7.93 | 4,507,988 | 4,507,988 | 4,507,988 | +| Address State Warm (Present Target, Balance) | 1,000,000 | 223,239 | 11,574 | 11.57 | 4,731,424 | 4,731,424 | 4,731,424 | +| Address State Warm (Present Target, Callcode) | 1,000,000 | 223,239 | 25,371 | 25.37 | 4,803,628 | 4,803,628 | 4,803,628 | +| Address State Warm (Present Target, Call) | 1,000,000 | 223,239 | 25,521 | 25.52 | 4,540,196 | 4,539,382.7 | 4,539,220 | +| Address State Warm (Present Target, Delegatecall) | 1,000,000 | 223,239 | 23,021 | 23.02 | 4,159,700 | 4,159,374.7 | 4,157,748 | +| Address State Warm (Present Target, Extcodehash) | 1,000,000 | 223,239 | 11,591 | 11.59 | 3,358,520 | 3,357,544 | 3,351,688 | +| Address State Warm (Present Target, Extcodesize) | 1,000,000 | 223,239 | 11,522 | 11.52 | 4,429,964 | 4,429,964 | 4,428,988 | +| Address State Warm (Present Target, Staticcall) | 1,000,000 | 223,239 | 25,035 | 25.04 | 4,793,868 | 4,793,868 | 4,792,892 | +| Address State Warm (Absent Target, Balance) | 1,000,000 | 223,239 | 12,243 | 12.24 | 3,565,412 | 3,561,386 | 3,555,652 | +| Address State Warm (Absent Target, Callcode) | 1,000,000 | 223,239 | 24,241 | 24.24 | 1,834,024 | 1,821,754.3 | 1,799,864 | +| Address State Warm (Absent Target, Call) | 1,000,000 | 223,239 | 23,285 | 23.29 | 4,722,652 | 4,722,652 | 4,719,724 | +| Address State Warm (Absent Target, Delegatecall) | 1,000,000 | 223,239 | 20,794 | 20.79 | 4,226,060 | 4,224,324.9 | 4,224,108 | +| Address State Warm (Absent Target, Extcodehash) | 1,000,000 | 223,239 | 13,660 | 13.66 | 4,494,324 | 4,494,324 | 4,492,372 | +| Address State Warm (Absent Target, Extcodesize) | 1,000,000 | 223,239 | 12,338 | 12.34 | 2,943,724 | 2,938,681.3 | 2,933,964 | +| Address State Warm (Absent Target, Staticcall) | 1,000,000 | 223,239 | 22,786 | 22.79 | 4,451,424 | 4,450,838.4 | 4,447,520 | +| Blockhash | 1,000,000 | 223,239 | 15,067 | 15.07 | 4,725,576 | 4,725,576 | 4,725,576 | +| Extcodecopy Warm (1Kib) | 1,000,000 | 223,239 | 10,152 | 10.15 | 726,276 | 718,305.3 | 701,876 | +| Extcodecopy Warm (512) | 1,000,000 | 223,239 | 10,569 | 10.57 | 4,495,300 | 4,495,300 | 4,494,324 | +| Extcodecopy Warm (5Kib) | 1,000,000 | 223,239 | 9,422 | 9.42 | 4,414,360 | 4,414,360 | 4,409,480 | +| Selfbalance | 1,000,000 | 223,239 | 75,664 | 75.66 | 3,788,872 | 3,782,932.3 | 3,780,088 | +| Selfdestruct Created (No Value) | 965,720 | 223,239 | 5,588 | 5.59 | 3,768,396 | 3,768,396 | 3,765,468 | +| Selfdestruct Created (With Value) | 965,720 | 223,239 | 4,858 | 4.86 | 4,309,976 | 4,309,976 | 4,309,976 | +| Selfdestruct Existing (No Value) | 998,771 | 223,239 | 7,579 | 7.58 | 3,890,360 | 3,889,384 | 3,884,504 | +| Selfdestruct Existing (With Value) | 998,771 | 223,239 | 10,107 | 10.11 | 3,604,440 | 3,602,976 | 3,598,584 | +| Selfdestruct Initcode (No Value) | 989,164 | 223,239 | 4,181 | 4.18 | 4,772,400 | 4,772,400 | 4,772,400 | +| Selfdestruct Initcode (With Value) | 989,164 | 223,239 | 4,658 | 4.66 | 4,450,444 | 4,450,199 | 4,450,444 | +| Storage Access Cold (Absent Slots False, Ssload) | 999,749 | 223,239 | 9,829 | 9.83 | 3,759,616 | 3,759,616 | 3,751,808 | +| Storage Access Cold (Absent Slots False, Sstore New Value, Out Of Gas) | 1,000,000 | 223,239 | 8,081 | 8.08 | 4,375,344 | 4,375,344 | 4,375,344 | +| Storage Access Cold (Absent Slots False, Sstore New Value, Revert) | 998,963 | 223,239 | 7,331 | 7.33 | 4,381,188 | 4,381,188 | 4,381,188 | +| Storage Access Cold (Absent Slots False, Sstore New Value) | 998,957 | 223,239 | 7,462 | 7.46 | 3,707,888 | 3,707,888 | 3,705,936 | +| Storage Access Cold (Absent Slots False, Sstore Same Value, Out Of Gas) | 1,000,000 | 223,239 | 11,195 | 11.20 | 4,737,276 | 4,736,544 | 4,731,420 | +| Storage Access Cold (Absent Slots False, Sstore Same Value, Revert) | 999,015 | 223,239 | 10,831 | 10.83 | 4,817,292 | 4,817,292 | 4,816,316 | +| Storage Access Cold (Absent Slots False, Sstore Same Value) | 999,009 | 223,239 | 11,536 | 11.54 | 904,884 | 881,643 | 847,300 | +| Storage Access Cold (Absent Slots True, Ssload) | 999,749 | 223,239 | 11,386 | 11.39 | 1,149,688 | 1,136,268 | 1,121,384 | +| Storage Access Cold (Absent Slots True, Sstore New Value, Out Of Gas) | 1,000,000 | 223,239 | 4,581 | 4.58 | 3,428,788 | 3,428,788 | 3,426,836 | +| Storage Access Cold (Absent Slots True, Sstore New Value, Revert) | 995,213 | 223,239 | 4,679 | 4.68 | 759,460 | 756,044 | 749,700 | +| Storage Access Cold (Absent Slots True, Sstore New Value) | 995,207 | 223,239 | 4,785 | 4.79 | 3,244,332 | 3,244,006.7 | 3,239,452 | +| Storage Access Cold (Absent Slots True, Sstore Same Value, Out Of Gas) | 1,000,000 | 223,239 | 4,508 | 4.51 | 4,809,484 | 4,809,484 | 4,808,508 | +| Storage Access Cold (Absent Slots True, Sstore Same Value, Revert) | 995,081 | 223,239 | 4,754 | 4.75 | 4,700,224 | 4,700,224 | 4,700,224 | +| Storage Access Cold (Absent Slots True, Sstore Same Value) | 995,075 | 223,239 | 6,518 | 6.52 | 1,455,172 | 1,453,610.4 | 1,447,364 | +| Storage Access Warm (Sload) | 1,000,000 | 223,239 | 11,261 | 11.26 | 701,880 | 695,308.1 | 676,504 | +| Storage Access Warm (Sstore New Value) | 1,000,000 | 223,239 | 20,416 | 20.42 | 4,375,352 | 4,375,352 | 4,375,352 | +| Storage Access Warm (Sstore Same Value) | 1,000,000 | 223,239 | 16,440 | 16.44 | 3,958,660 | 3,956,870.7 | 3,952,804 | + +## Summary Statistics + +- **Total Tests:** 508 +- **Successful Tests:** 508 +- **Failed Tests:** 0 + +### Proving Time (ms) +- **Average:** 66,254.9 +- **Minimum:** 3,819 +- **Maximum:** 1,217,111 + +### Peak Memory Usage (MB) +- **Average:** 3,843,199.7 +- **Minimum:** 483,256 +- **Maximum:** 4,831,932 + +### Proof Size (bytes) +- **Average:** 223,239 +- **Minimum:** 223,239 +- **Maximum:** 223,239 diff --git a/www/docs/pages/benchmark-results/gas-categorized/1m/sp1-1M-1.md b/www/docs/pages/benchmark-results/gas-categorized/1m/sp1-1M-1.md new file mode 100644 index 00000000..f3f4d602 --- /dev/null +++ b/www/docs/pages/benchmark-results/gas-categorized/1m/sp1-1M-1.md @@ -0,0 +1,543 @@ +# zkEVM Benchmark Results + +Generated on: 2025-12-13 19:54:08 + +## Folder: zkevm-metrics-sp1-1M-1 + +**zkVM:** sp1-v5.2.2 (1 GPUs) + +**Hardware Configuration:** CPU: AMD EPYC 7B13 64-Core Processor | RAM: 396 GiB | GPU: NVIDIA GeForce RTX 4090, NVIDIA GeForce RTX 4090, NVIDIA GeForce RTX 4090, NVIDIA GeForce RTX 4090 + +## Proving Metrics + +| Benchmark | Gas Used | Proof Size (bytes) | Proving Time (ms) | Proving Time (s) | Peak Memory (MB) | Avg Memory (MB) | Initial Memory (MB) | +|---|---|---|---|---|---|---|---| +| Block Full Access List And Data | 999,980 | 1,477,226 | 12,931 | 12.93 | 3,162,968 | 3,160,235.2 | 3,157,112 | +| Block Full Data (Non Zero Byte) | 1,000,000 | 1,477,226 | 16,978 | 16.98 | 4,089,920 | 4,089,041.6 | 4,088,944 | +| Block Full Data (Zero Byte) | 1,000,000 | 1,477,226 | 14,928 | 14.93 | 3,444,996 | 3,444,996 | 3,444,996 | +| Block Full Of Ether Transfers (A To A) | 987,000 | 1,477,226 | 22,416 | 22.42 | 3,356,192 | 3,354,337.6 | 3,349,360 | +| Block Full Of Ether Transfers (A To B) | 987,000 | 1,477,226 | 23,443 | 23.44 | 3,868,484 | 3,868,484 | 3,868,484 | +| Block Full Of Ether Transfers (A To Diff Acc) | 987,000 | 1,477,226 | 27,280 | 27.28 | 4,070,420 | 4,069,019.7 | 4,065,540 | +| Block Full Of Ether Transfers (Diff Acc To B) | 987,000 | 1,477,226 | 23,454 | 23.45 | 3,398,156 | 3,395,878.7 | 3,391,324 | +| Block Full Of Ether Transfers (Diff Acc To Diff Acc) | 987,000 | 1,477,226 | 24,473 | 24.47 | 3,672,376 | 3,672,376 | 3,671,400 | +| Bytecode Single Opcode (Callcode) | 1,000,000 | 1,477,226 | 94,625 | 94.62 | 3,282,028 | 3,281,037.9 | 3,278,124 | +| Bytecode Single Opcode (Call) | 1,000,000 | 1,477,226 | 93,943 | 93.94 | 2,277,792 | 2,262,978.5 | 2,225,088 | +| Bytecode Single Opcode (Delegatecall) | 1,000,000 | 1,477,226 | 96,098 | 96.10 | 3,843,120 | 3,843,120 | 3,842,144 | +| Bytecode Single Opcode (Extcodecopy) | 1,000,000 | 1,477,226 | 109,079 | 109.08 | 4,105,532 | 4,105,312.9 | 4,103,580 | +| Bytecode Single Opcode (Extcodehash) | 1,000,000 | 1,477,226 | 96,304 | 96.30 | 3,117,112 | 3,116,255.0 | 3,110,280 | +| Bytecode Single Opcode (Extcodesize) | 1,000,000 | 1,477,226 | 94,488 | 94.49 | 3,959,224 | 3,958,526.9 | 3,955,320 | +| Bytecode Single Opcode (Staticcall) | 1,000,000 | 1,477,226 | 95,458 | 95.46 | 4,165,032 | 4,165,032 | 4,165,032 | +| Create (0Bytes, Create2) | 1,000,000 | 1,477,226 | 14,350 | 14.35 | 2,330,496 | 2,327,492.9 | 2,322,688 | +| Create (0Bytes, Create) | 1,000,000 | 1,477,226 | 11,715 | 11.71 | 658,640 | 656,508.2 | 644,976 | +| Create (0Bytes, Create2) | 1,000,000 | 1,477,226 | 16,348 | 16.35 | 4,112,360 | 4,112,360 | 4,112,360 | +| Create (0Bytes, Create) | 1,000,000 | 1,477,226 | 14,221 | 14.22 | 3,786,540 | 3,786,540 | 3,784,588 | +| Create (0.25X Max Code, Zero Data, Create2) | 1,000,000 | 1,477,226 | 12,393 | 12.39 | 862,612 | 849,831.0 | 836,260 | +| Create (0.25X Max Code, Zero Data, Create) | 1,000,000 | 1,477,226 | 13,277 | 13.28 | 3,916,292 | 3,916,292 | 3,915,316 | +| Create (0.25X Max Code, Create2) | 1,000,000 | 1,477,226 | 13,236 | 13.24 | 4,193,320 | 4,193,320 | 4,193,320 | +| Create (0.25X Max Code, Create) | 1,000,000 | 1,477,226 | 12,114 | 12.11 | 3,215,668 | 3,215,505.3 | 3,212,740 | +| Create (0.50X Max Code Size With Non, Zero Data, Create2) | 1,000,000 | 1,477,226 | 13,210 | 13.21 | 3,943,608 | 3,943,608 | 3,943,608 | +| Create (0.50X Max Code Size With Non, Zero Data, Create) | 1,000,000 | 1,477,226 | 15,702 | 15.70 | 4,075,300 | 4,075,300 | 4,075,300 | +| Create (0.50X Max Code Size With Zero Data, Create2) | 1,000,000 | 1,477,226 | 13,702 | 13.70 | 3,400,108 | 3,400,108 | 3,400,108 | +| Create (0.50X Max Code Size With Zero Data, Create) | 1,000,000 | 1,477,226 | 12,935 | 12.94 | 2,971,700 | 2,966,332 | 2,959,988 | +| Create (0.75X Max Code Size With Non, Zero Data, Create2) | 1,000,000 | 1,477,226 | 12,473 | 12.47 | 1,737,104 | 1,735,835.2 | 1,726,368 | +| Create (0.75X Max Code Size With Non, Zero Data, Create) | 1,000,000 | 1,477,226 | 13,397 | 13.40 | 3,781,660 | 3,781,660 | 3,780,684 | +| Create (0.75X Max Code Size With Zero Data, Create2) | 1,000,000 | 1,477,226 | 13,223 | 13.22 | 2,889,728 | 2,887,776 | 2,879,968 | +| Create (0.75X Max Code Size With Zero Data, Create) | 1,000,000 | 1,477,226 | 12,082 | 12.08 | 3,184,440 | 3,183,545.3 | 3,174,680 | +| Create (Max Code, Zero Data, Create2) | 1,000,000 | 1,477,226 | 13,153 | 13.15 | 4,027,488 | 4,027,488 | 4,027,488 | +| Create (Max Code, Zero Data, Create) | 1,000,000 | 1,477,226 | 13,646 | 13.65 | 2,904,360 | 2,901,106.7 | 2,897,528 | +| Create (Max Code, Create2) | 1,000,000 | 1,477,226 | 13,392 | 13.39 | 3,916,288 | 3,916,288 | 3,916,288 | +| Create (Max Code, Create) | 1,000,000 | 1,477,226 | 13,067 | 13.07 | 3,860,680 | 3,860,680 | 3,860,680 | +| Creates Collisions (Create2) | 1,000,000 | 1,477,226 | 13,097 | 13.10 | 3,907,516 | 3,907,516 | 3,905,564 | +| Creates Collisions (Create) | 1,000,000 | 1,477,226 | 12,736 | 12.74 | 3,941,656 | 3,941,656 | 3,941,656 | +| Initcode Jumpdest Analysis (00) | 1,000,000 | 1,477,226 | 20,101 | 20.10 | 3,610,892 | 3,610,892 | 3,605,036 | +| Initcode Jumpdest Analysis (5B) | 1,000,000 | 1,477,226 | 25,480 | 25.48 | 4,113,336 | 4,113,336 | 4,113,336 | +| Initcode Jumpdest Analysis (605B5B) | 1,000,000 | 1,477,226 | 19,951 | 19.95 | 992,420 | 978,337.7 | 944,596 | +| Initcode Jumpdest Analysis (605B) | 1,000,000 | 1,477,226 | 17,907 | 17.91 | 3,846,044 | 3,846,044 | 3,844,092 | +| Initcode Jumpdest Analysis (615B5B5B) | 1,000,000 | 1,477,226 | 19,376 | 19.38 | 944,596 | 926,085.7 | 896,772 | +| Initcode Jumpdest Analysis (615B5B) | 1,000,000 | 1,477,226 | 17,555 | 17.55 | 4,024,580 | 4,024,580 | 4,023,604 | +| Amortized Bn128 Pairings | 1,000,000 | 1,477,226 | 100,995 | 101.00 | 3,378,636 | 3,377,086.5 | 3,376,684 | +| Empty Block | 0 | 1,477,226 | 9,425 | 9.43 | 2,616,456 | 2,614,992 | 2,609,624 | +| Binop Simple (Add) | 1,000,000 | 1,477,226 | 25,835 | 25.84 | 3,899,708 | 3,899,708 | 3,898,732 | +| Binop Simple (And) | 1,000,000 | 1,477,226 | 22,650 | 22.65 | 3,655,788 | 3,655,788 | 3,655,788 | +| Binop Simple (Byte) | 1,000,000 | 1,477,226 | 23,277 | 23.28 | 4,166,008 | 4,166,008 | 4,166,008 | +| Binop Simple (Div, 0) | 1,000,000 | 1,477,226 | 82,296 | 82.30 | 3,962,136 | 3,961,355.2 | 3,960,184 | +| Binop Simple (Div, 1) | 1,000,000 | 1,477,226 | 75,279 | 75.28 | 3,785,556 | 3,785,556 | 3,785,556 | +| Binop Simple (Eq) | 1,000,000 | 1,477,226 | 43,272 | 43.27 | 2,202,640 | 2,194,644.3 | 2,186,048 | +| Binop Simple (Exp) | 1,000,000 | 1,477,226 | 52,383 | 52.38 | 3,223,476 | 3,221,300.3 | 3,215,668 | +| Binop Simple (Gt) | 1,000,000 | 1,477,226 | 24,591 | 24.59 | 3,855,800 | 3,855,800 | 3,853,848 | +| Binop Simple (Lt) | 1,000,000 | 1,477,226 | 29,604 | 29.60 | 4,138,708 | 4,138,708 | 4,138,708 | +| Binop Simple (Mod) | 1,000,000 | 1,477,226 | 37,757 | 37.76 | 3,859,704 | 3,859,704 | 3,859,704 | +| Binop Simple (Mul) | 1,000,000 | 1,477,226 | 34,015 | 34.02 | 3,735,808 | 3,735,057.2 | 3,734,832 | +| Binop Simple (Or) | 1,000,000 | 1,477,226 | 23,561 | 23.56 | 4,166,008 | 4,166,008 | 4,164,056 | +| Binop Simple (Sar) | 1,000,000 | 1,477,226 | 36,594 | 36.59 | 3,502,576 | 3,500,995.8 | 3,493,792 | +| Binop Simple (Sdiv, 0) | 1,000,000 | 1,477,226 | 87,556 | 87.56 | 3,979,700 | 3,974,433.7 | 3,969,940 | +| Binop Simple (Sdiv, 1) | 1,000,000 | 1,477,226 | 90,605 | 90.61 | 1,647,316 | 1,620,049 | 1,580,948 | +| Binop Simple (Sgt) | 1,000,000 | 1,477,226 | 45,205 | 45.20 | 4,184,544 | 4,184,509 | 4,184,544 | +| Binop Simple (Shl) | 1,000,000 | 1,477,226 | 37,982 | 37.98 | 4,130,900 | 4,128,990.4 | 4,126,020 | +| Binop Simple (Shr) | 1,000,000 | 1,477,226 | 31,601 | 31.60 | 4,035,288 | 4,033,641 | 4,029,432 | +| Binop Simple (Signextend) | 1,000,000 | 1,477,226 | 31,392 | 31.39 | 3,968,964 | 3,966,855.8 | 3,961,156 | +| Binop Simple (Slt) | 1,000,000 | 1,477,226 | 25,375 | 25.38 | 3,761,176 | 3,761,176 | 3,761,176 | +| Binop Simple (Smod) | 1,000,000 | 1,477,226 | 39,084 | 39.08 | 4,173,812 | 4,173,812 | 4,172,836 | +| Binop Simple (Sub) | 1,000,000 | 1,477,226 | 28,077 | 28.08 | 4,075,300 | 4,075,300 | 4,075,300 | +| Binop Simple (Xor) | 1,000,000 | 1,477,226 | 23,036 | 23.04 | 3,794,324 | 3,794,324 | 3,794,324 | +| Blobhash (No Blobs) | 1,000,000 | 1,477,226 | 20,287 | 20.29 | 3,131,748 | 3,131,626 | 3,126,868 | +| Blobhash (One Blob And Accessed) | 1,000,000 | 1,477,226 | 29,041 | 29.04 | 1,255,940 | 1,241,891.5 | 1,226,660 | +| Blobhash (One Blob But Access Non, Existent Index) | 1,000,000 | 1,477,226 | 26,034 | 26.03 | 4,133,828 | 4,133,828 | 4,130,900 | +| Blobhash (Six Blobs, Access Latest) | 1,000,000 | 1,477,226 | 27,935 | 27.93 | 2,306,096 | 2,300,565.3 | 2,279,744 | +| Calldataload (Empty) | 1,000,000 | 1,477,226 | 36,281 | 36.28 | 3,795,300 | 3,795,300 | 3,794,324 | +| Calldataload (One, Loop) | 1,000,000 | 1,477,226 | 40,757 | 40.76 | 3,935,808 | 3,935,222.4 | 3,934,832 | +| Calldataload (Zero, Loop) | 1,000,000 | 1,477,226 | 40,766 | 40.77 | 3,286,904 | 3,285,046.5 | 3,281,048 | +| Calldatasize (Calldata Length 0) | 1,000,000 | 1,477,226 | 24,010 | 24.01 | 4,174,788 | 4,174,788 | 4,173,812 | +| Calldatasize (Calldata Length 10000) | 1,000,000 | 1,477,226 | 23,605 | 23.61 | 4,172,836 | 4,172,836 | 4,172,836 | +| Calldatasize (Calldata Length 1000) | 1,000,000 | 1,477,226 | 24,548 | 24.55 | 3,366,928 | 3,366,277.3 | 3,363,024 | +| Callvalue (From Origin False, Non Zero Value False) | 1,000,000 | 1,477,226 | 26,090 | 26.09 | 3,901,660 | 3,901,660 | 3,901,660 | +| Callvalue (From Origin False, Non Zero Value True) | 1,000,000 | 1,477,226 | 26,693 | 26.69 | 4,170,884 | 4,170,884 | 4,168,932 | +| Callvalue (From Origin True, Non Zero Value False) | 1,000,000 | 1,477,226 | 31,950 | 31.95 | 4,106,508 | 4,106,508 | 4,106,508 | +| Callvalue (From Origin True, Non Zero Value True) | 1,000,000 | 1,477,226 | 30,886 | 30.89 | 4,090,912 | 4,090,912 | 4,089,936 | +| Dup (Dup10) | 1,000,000 | 1,477,226 | 21,896 | 21.90 | 3,859,704 | 3,859,704 | 3,859,704 | +| Dup (Dup11) | 1,000,000 | 1,477,226 | 22,282 | 22.28 | 3,415,716 | 3,413,373.6 | 3,407,908 | +| Dup (Dup12) | 1,000,000 | 1,477,226 | 21,323 | 21.32 | 4,023,600 | 4,023,600 | 4,023,600 | +| Dup (Dup13) | 1,000,000 | 1,477,226 | 21,655 | 21.66 | 3,400,108 | 3,400,108 | 3,398,156 | +| Dup (Dup14) | 1,000,000 | 1,477,226 | 22,303 | 22.30 | 3,916,296 | 3,916,296 | 3,915,320 | +| Dup (Dup15) | 1,000,000 | 1,477,226 | 22,670 | 22.67 | 2,225,088 | 2,219,054.5 | 2,210,448 | +| Dup (Dup16) | 1,000,000 | 1,477,226 | 24,209 | 24.21 | 4,064,564 | 4,063,866.9 | 4,063,588 | +| Dup (Dup1) | 1,000,000 | 1,477,226 | 22,241 | 22.24 | 3,860,680 | 3,860,680 | 3,859,704 | +| Dup (Dup2) | 1,000,000 | 1,477,226 | 22,023 | 22.02 | 3,936,780 | 3,936,780 | 3,936,780 | +| Dup (Dup3) | 1,000,000 | 1,477,226 | 25,903 | 25.90 | 4,112,360 | 4,112,360 | 4,112,360 | +| Dup (Dup4) | 1,000,000 | 1,477,226 | 22,361 | 22.36 | 3,367,900 | 3,367,900 | 3,367,900 | +| Dup (Dup5) | 1,000,000 | 1,477,226 | 22,962 | 22.96 | 3,737,760 | 3,737,760 | 3,736,784 | +| Dup (Dup6) | 1,000,000 | 1,477,226 | 20,958 | 20.96 | 2,628,168 | 2,624,325 | 2,616,456 | +| Dup (Dup7) | 1,000,000 | 1,477,226 | 22,174 | 22.17 | 3,126,868 | 3,124,545.8 | 3,117,108 | +| Dup (Dup8) | 1,000,000 | 1,477,226 | 21,853 | 21.85 | 3,859,704 | 3,859,304.7 | 3,856,776 | +| Dup (Dup9) | 1,000,000 | 1,477,226 | 21,996 | 22.00 | 2,354,888 | 2,341,312.7 | 2,329,512 | +| Jumpdests | 1,000,000 | 1,477,226 | 25,502 | 25.50 | 3,930,928 | 3,930,928 | 3,928,976 | +| Jumpi Fallthrough | 1,000,000 | 1,477,226 | 28,972 | 28.97 | 1,666,836 | 1,658,842.1 | 1,647,316 | +| Jumpis | 1,000,000 | 1,477,226 | 20,823 | 20.82 | 3,601,132 | 3,599,737.7 | 3,596,252 | +| Jumps | 1,000,000 | 1,477,226 | 18,524 | 18.52 | 4,166,008 | 4,165,798.9 | 4,165,032 | +| Keccak | 1,000,000 | 1,477,226 | 42,232 | 42.23 | 4,138,700 | 4,138,700 | 4,138,700 | +| Memory Access (Small Mem, Uninit Offset, Off 0, Mload) | 1,000,000 | 1,477,226 | 25,142 | 25.14 | 3,075,152 | 3,073,200 | 3,067,344 | +| Memory Access (Small Mem, Uninit Offset, Off 0, Mstore8) | 1,000,000 | 1,477,226 | 22,482 | 22.48 | 1,759,552 | 1,747,303.2 | 1,738,080 | +| Memory Access (Small Mem, Uninit Offset, Off 0, Mstore) | 1,000,000 | 1,477,226 | 29,185 | 29.18 | 1,050,980 | 1,027,531.6 | 995,348 | +| Memory Access (Small Mem, Uninit Offset, Off 1, Mload) | 1,000,000 | 1,477,226 | 25,264 | 25.26 | 3,595,276 | 3,595,276 | 3,595,276 | +| Memory Access (Small Mem, Uninit Offset, Off 1, Mstore8) | 1,000,000 | 1,477,226 | 27,290 | 27.29 | 4,154,316 | 4,154,316 | 4,154,316 | +| Memory Access (Small Mem, Uninit Offset, Off 1, Mstore) | 1,000,000 | 1,477,226 | 27,617 | 27.62 | 3,898,732 | 3,898,732 | 3,898,732 | +| Memory Access (Small Mem, Uninit Offset, Off 31, Mload) | 1,000,000 | 1,477,226 | 25,619 | 25.62 | 3,850,924 | 3,850,924 | 3,850,924 | +| Memory Access (Small Mem, Uninit Offset, Off 31, Mstore8) | 1,000,000 | 1,477,226 | 23,113 | 23.11 | 1,935,232 | 1,922,195.4 | 1,905,952 | +| Memory Access (Small Mem, Uninit Offset, Off 31, Mstore) | 1,000,000 | 1,477,226 | 28,542 | 28.54 | 3,252,752 | 3,248,421 | 3,242,992 | +| Memory Access (Small Mem, Init Offset, Off 0, Mload) | 1,000,000 | 1,477,226 | 25,191 | 25.19 | 2,590,104 | 2,582,784 | 2,573,512 | +| Memory Access (Small Mem, Init Offset, Off 0, Mstore8) | 1,000,000 | 1,477,226 | 22,479 | 22.48 | 3,805,056 | 3,804,346.2 | 3,802,128 | +| Memory Access (Small Mem, Init Offset, Off 0, Mstore) | 1,000,000 | 1,477,226 | 32,500 | 32.50 | 4,102,604 | 4,102,604 | 4,102,604 | +| Memory Access (Small Mem, Init Offset, Off 1, Mload) | 1,000,000 | 1,477,226 | 24,862 | 24.86 | 3,992,384 | 3,992,127.2 | 3,991,408 | +| Memory Access (Small Mem, Init Offset, Off 1, Mstore8) | 1,000,000 | 1,477,226 | 23,321 | 23.32 | 3,521,116 | 3,515,785.5 | 3,511,356 | +| Memory Access (Small Mem, Init Offset, Off 1, Mstore) | 1,000,000 | 1,477,226 | 28,835 | 28.84 | 3,760,204 | 3,759,804.5 | 3,757,276 | +| Memory Access (Small Mem, Init Offset, Off 31, Mload) | 1,000,000 | 1,477,226 | 32,326 | 32.33 | 4,143,580 | 4,143,580 | 4,143,580 | +| Memory Access (Small Mem, Init Offset, Off 31, Mstore8) | 1,000,000 | 1,477,226 | 23,026 | 23.03 | 4,165,032 | 4,165,032 | 4,165,032 | +| Memory Access (Small Mem, Init Offset, Off 31, Mstore) | 1,000,000 | 1,477,226 | 29,677 | 29.68 | 3,901,660 | 3,901,660 | 3,900,684 | +| Memory Access (Big Mem, Uninit Offset, Off 0, Mload) | 1,000,000 | 1,477,226 | 25,951 | 25.95 | 4,022,628 | 4,022,628 | 4,022,628 | +| Memory Access (Big Mem, Uninit Offset, Off 0, Mstore8) | 1,000,000 | 1,477,226 | 22,431 | 22.43 | 1,860,080 | 1,850,956.5 | 1,831,776 | +| Memory Access (Big Mem, Uninit Offset, Off 0, Mstore) | 1,000,000 | 1,477,226 | 28,167 | 28.17 | 3,050,752 | 3,050,659.0 | 3,047,824 | +| Memory Access (Big Mem, Uninit Offset, Off 1, Mload) | 1,000,000 | 1,477,226 | 26,320 | 26.32 | 3,622,604 | 3,620,957 | 3,616,748 | +| Memory Access (Big Mem, Uninit Offset, Off 1, Mstore8) | 1,000,000 | 1,477,226 | 21,900 | 21.90 | 3,916,292 | 3,916,243.2 | 3,916,292 | +| Memory Access (Big Mem, Uninit Offset, Off 1, Mstore) | 1,000,000 | 1,477,226 | 27,989 | 27.99 | 3,174,680 | 3,173,743.0 | 3,168,824 | +| Memory Access (Big Mem, Uninit Offset, Off 31, Mload) | 1,000,000 | 1,477,226 | 26,135 | 26.14 | 2,879,968 | 2,876,964.9 | 2,872,160 | +| Memory Access (Big Mem, Uninit Offset, Off 31, Mstore8) | 1,000,000 | 1,477,226 | 23,213 | 23.21 | 4,178,692 | 4,178,692 | 4,177,716 | +| Memory Access (Big Mem, Uninit Offset, Off 31, Mstore) | 1,000,000 | 1,477,226 | 28,950 | 28.95 | 3,571,868 | 3,571,601.8 | 3,567,964 | +| Memory Access (Big Mem, Init Offset, Off 0, Mload) | 1,000,000 | 1,477,226 | 24,826 | 24.83 | 801,128 | 781,488.5 | 755,256 | +| Memory Access (Big Mem, Init Offset, Off 0, Mstore8) | 1,000,000 | 1,477,226 | 22,677 | 22.68 | 3,859,704 | 3,859,704 | 3,859,704 | +| Memory Access (Big Mem, Init Offset, Off 0, Mstore) | 1,000,000 | 1,477,226 | 28,520 | 28.52 | 4,179,664 | 4,179,664 | 4,178,688 | +| Memory Access (Big Mem, Init Offset, Off 1, Mload) | 1,000,000 | 1,477,226 | 25,457 | 25.46 | 3,764,100 | 3,763,758.4 | 3,761,172 | +| Memory Access (Big Mem, Init Offset, Off 1, Mstore8) | 1,000,000 | 1,477,226 | 22,495 | 22.50 | 4,187,468 | 4,187,468 | 4,186,492 | +| Memory Access (Big Mem, Init Offset, Off 1, Mstore) | 1,000,000 | 1,477,226 | 28,186 | 28.19 | 3,883,120 | 3,883,089.5 | 3,883,120 | +| Memory Access (Big Mem, Init Offset, Off 31, Mload) | 1,000,000 | 1,477,226 | 25,085 | 25.09 | 3,471,344 | 3,471,344 | 3,470,368 | +| Memory Access (Big Mem, Init Offset, Off 31, Mstore8) | 1,000,000 | 1,477,226 | 23,223 | 23.22 | 3,541,612 | 3,539,497.3 | 3,533,804 | +| Memory Access (Big Mem, Init Offset, Off 31, Mstore) | 1,000,000 | 1,477,226 | 30,752 | 30.75 | 3,045,876 | 3,045,225.2 | 3,039,044 | +| Mod (Op Mod, Mod Bits 127) | 1,000,000 | 1,477,226 | 76,563 | 76.56 | 4,021,652 | 4,021,652 | 4,021,652 | +| Mod (Op Mod, Mod Bits 191) | 1,000,000 | 1,477,226 | 115,442 | 115.44 | 4,111,384 | 4,111,384 | 4,111,384 | +| Mod (Op Mod, Mod Bits 255) | 1,000,000 | 1,477,226 | 75,928 | 75.93 | 3,995,312 | 3,994,824 | 3,993,360 | +| Mod (Op Mod, Mod Bits 63) | 1,000,000 | 1,477,226 | 53,491 | 53.49 | 3,062,464 | 3,061,139.4 | 3,053,680 | +| Mod (Op Smod, Mod Bits 127) | 1,000,000 | 1,477,226 | 79,231 | 79.23 | 3,932,880 | 3,932,880 | 3,932,880 | +| Mod (Op Smod, Mod Bits 191) | 1,000,000 | 1,477,226 | 99,155 | 99.16 | 1,323,284 | 1,298,460.5 | 1,256,916 | +| Mod (Op Smod, Mod Bits 255) | 1,000,000 | 1,477,226 | 73,666 | 73.67 | 3,082,960 | 3,082,607.8 | 3,076,128 | +| Mod (Op Smod, Mod Bits 63) | 1,000,000 | 1,477,226 | 71,105 | 71.11 | 4,144,556 | 4,144,556 | 4,144,556 | +| Modarith (Op Addmod, Mod Bits 127) | 1,000,000 | 1,477,226 | 60,318 | 60.32 | 3,751,420 | 3,751,118.3 | 3,750,444 | +| Modarith (Op Addmod, Mod Bits 191) | 1,000,000 | 1,477,226 | 74,943 | 74.94 | 3,778,736 | 3,778,715.6 | 3,778,736 | +| Modarith (Op Addmod, Mod Bits 255) | 1,000,000 | 1,477,226 | 61,004 | 61.00 | 2,948,280 | 2,948,117.3 | 2,946,328 | +| Modarith (Op Addmod, Mod Bits 63) | 1,000,000 | 1,477,226 | 45,773 | 45.77 | 3,778,732 | 3,778,732 | 3,778,732 | +| Modarith (Op Mulmod, Mod Bits 127) | 1,000,000 | 1,477,226 | 100,032 | 100.03 | 2,439,800 | 2,405,835.2 | 2,370,504 | +| Modarith (Op Mulmod, Mod Bits 191) | 1,000,000 | 1,477,226 | 140,107 | 140.11 | 3,786,536 | 3,786,536 | 3,785,560 | +| Modarith (Op Mulmod, Mod Bits 255) | 1,000,000 | 1,477,226 | 133,393 | 133.39 | 1,380,868 | 1,356,581.2 | 1,325,236 | +| Modarith (Op Mulmod, Mod Bits 63) | 1,000,000 | 1,477,226 | 80,373 | 80.37 | 2,945,352 | 2,943,139.7 | 2,936,568 | +| Modexp (Mod 1045 Gas Base Heavy) | 1,000,000 | 1,477,226 | 1,564,850 | 1,564.85 | 4,061,636 | 4,058,550.9 | 4,053,828 | +| Modexp (Mod 1360 Gas Balanced) | 1,000,000 | 1,477,226 | 335,316 | 335.32 | 3,487,936 | 3,487,197.3 | 3,481,104 | +| Modexp (Mod 400 Gas Exp Heavy) | 1,000,000 | 1,477,226 | 404,721 | 404.72 | 3,988,484 | 3,984,055.5 | 3,979,700 | +| Modexp (Mod 408 Gas Balanced) | 1,000,000 | 1,477,226 | 287,940 | 287.94 | 3,856,776 | 3,856,263.2 | 3,855,800 | +| Modexp (Mod 408 Gas Base Heavy) | 1,000,000 | 1,477,226 | 1,372,517 | 1,372.52 | 4,159,192 | 4,157,822.9 | 4,153,336 | +| Modexp (Mod 600 As Balanced) | 1,000,000 | 1,477,226 | 301,512 | 301.51 | 3,445,972 | 3,445,043.7 | 3,440,116 | +| Modexp (Mod 600 Gas Exp Heavy) | 1,000,000 | 1,477,226 | 425,734 | 425.73 | 3,091,740 | 3,090,294.6 | 3,082,956 | +| Modexp (Mod 616 Gas Base Heavy) | 1,000,000 | 1,477,226 | 1,359,072 | 1,359.07 | 3,887,996 | 3,886,358.3 | 3,885,068 | +| Modexp (Mod 677 Gas Base Heavy) | 1,000,000 | 1,477,226 | 320,028 | 320.03 | 3,567,964 | 3,560,435.7 | 3,542,588 | +| Modexp (Mod 765 Gas Exp Heavy) | 1,000,000 | 1,477,226 | 459,182 | 459.18 | 4,138,700 | 4,138,700 | 4,137,724 | +| Modexp (Mod 767 Gas Balanced) | 1,000,000 | 1,477,226 | 290,521 | 290.52 | 4,192,348 | 4,190,558.7 | 4,190,396 | +| Modexp (Mod 800 Gas Base Heavy) | 1,000,000 | 1,477,226 | 1,375,201 | 1,375.20 | 3,899,708 | 3,899,524.8 | 3,897,756 | +| Modexp (Mod 800 Gas Exp Heavy) | 1,000,000 | 1,477,226 | 517,703 | 517.70 | 4,096,748 | 4,093,655.6 | 4,090,892 | +| Modexp (Mod 852 Gas Exp Heavy) | 1,000,000 | 1,477,226 | 576,248 | 576.25 | 4,143,580 | 4,140,922.2 | 4,138,700 | +| Modexp (Mod 867 Gas Base Heavy) | 1,000,000 | 1,477,226 | 1,396,742 | 1,396.74 | 3,876,292 | 3,874,487.0 | 3,872,388 | +| Modexp (Mod 996 Gas Balanced) | 1,000,000 | 1,477,226 | 289,386 | 289.39 | 3,877,264 | 3,877,264 | 3,877,264 | +| Modexp (Mod Even 1024B Exp 1024) | 1,000,000 | 1,477,226 | 13,488 | 13.49 | 4,023,596 | 4,023,596 | 4,023,596 | +| Modexp (Mod Even 128B Exp 1024) | 1,000,000 | 1,477,226 | 300,736 | 300.74 | 3,802,132 | 3,799,160.2 | 3,795,300 | +| Modexp (Mod Even 16B Exp 320) | 1,000,000 | 1,477,226 | 425,224 | 425.22 | 3,705,560 | 3,704,787.8 | 3,703,608 | +| Modexp (Mod Even 24B Exp 168) | 1,000,000 | 1,477,226 | 349,559 | 349.56 | 3,900,684 | 3,899,954.4 | 3,899,708 | +| Modexp (Mod Even 256B Exp 1024) | 1,000,000 | 1,477,226 | 214,401 | 214.40 | 4,021,656 | 4,020,817.1 | 4,020,680 | +| Modexp (Mod Even 32B Exp 256) | 1,000,000 | 1,477,226 | 335,921 | 335.92 | 2,573,512 | 2,525,764.9 | 2,441,752 | +| Modexp (Mod Even 32B Exp 40) | 1,000,000 | 1,477,226 | 275,512 | 275.51 | 4,177,716 | 4,177,344.2 | 4,175,764 | +| Modexp (Mod Even 32B Exp 96) | 1,000,000 | 1,477,226 | 318,900 | 318.90 | 4,020,680 | 4,020,680 | 4,020,680 | +| Modexp (Mod Even 512B Exp 1024) | 1,000,000 | 1,477,226 | 12,256 | 12.26 | 2,368,552 | 2,363,794 | 2,354,888 | +| Modexp (Mod Even 64B Exp 512) | 1,000,000 | 1,477,226 | 320,246 | 320.25 | 2,936,568 | 2,929,754.4 | 2,903,384 | +| Modexp (Mod Even 8B Exp 896) | 1,000,000 | 1,477,226 | 710,188 | 710.19 | 3,110,280 | 3,107,893.1 | 3,096,616 | +| Modexp (Mod Exp 208 Gas Balanced) | 1,000,000 | 1,477,226 | 260,046 | 260.05 | 3,866,536 | 3,866,536 | 3,866,536 | +| Modexp (Mod Exp 215 Gas Exp Heavy) | 1,000,000 | 1,477,226 | 641,834 | 641.83 | 3,949,464 | 3,946,071.6 | 3,943,608 | +| Modexp (Mod Exp 298 Gas Exp Heavy) | 1,000,000 | 1,477,226 | 698,573 | 698.57 | 3,853,852 | 3,853,125.1 | 3,851,900 | +| Modexp (Mod Min As Balanced) | 1,000,000 | 1,477,226 | 336,087 | 336.09 | 4,124,068 | 4,122,069.8 | 4,120,164 | +| Modexp (Mod Min As Base Heavy) | 1,000,000 | 1,477,226 | 1,022,327 | 1,022.33 | 3,688,968 | 3,685,568.6 | 3,679,208 | +| Modexp (Mod Min As Exp Heavy) | 1,000,000 | 1,477,226 | 629,208 | 629.21 | 3,888,972 | 3,888,870.6 | 3,887,996 | +| Modexp (Mod Odd 1024B Exp 1024) | 1,000,000 | 1,477,226 | 13,106 | 13.11 | 836,264 | 825,840.3 | 803,080 | +| Modexp (Mod Odd 128B Exp 1024) | 1,000,000 | 1,477,226 | 296,101 | 296.10 | 3,261,536 | 3,259,216.1 | 3,252,752 | +| Modexp (Mod Odd 256B Exp 1024) | 1,000,000 | 1,477,226 | 213,251 | 213.25 | 3,780,684 | 3,780,013 | 3,778,732 | +| Modexp (Mod Odd 32B Exp 256) | 1,000,000 | 1,477,226 | 334,196 | 334.20 | 1,512,628 | 1,468,311.6 | 1,394,532 | +| Modexp (Mod Odd 32B Exp 96) | 1,000,000 | 1,477,226 | 312,668 | 312.67 | 3,956,296 | 3,955,498.7 | 3,955,320 | +| Modexp (Mod Odd 32B Exp Cover Windows) | 1,000,000 | 1,477,226 | 250,372 | 250.37 | 3,715,320 | 3,715,320 | 3,714,344 | +| Modexp (Mod Odd 512B Exp 1024) | 1,000,000 | 1,477,226 | 12,431 | 12.43 | 3,795,300 | 3,795,300 | 3,795,300 | +| Modexp (Mod Odd 64B Exp 512) | 1,000,000 | 1,477,226 | 321,431 | 321.43 | 3,211,764 | 3,207,647.4 | 3,198,100 | +| Modexp (Mod Pawel 2) | 1,000,000 | 1,477,226 | 410,243 | 410.24 | 3,784,588 | 3,783,725.2 | 3,782,636 | +| Modexp (Mod Pawel 3) | 1,000,000 | 1,477,226 | 341,944 | 341.94 | 3,872,388 | 3,872,041.6 | 3,870,436 | +| Modexp (Mod Pawel 4) | 1,000,000 | 1,477,226 | 311,817 | 311.82 | 3,652,860 | 3,650,316.2 | 3,647,004 | +| Modexp (Mod Vul Common 1152N1) | 1,000,000 | 1,477,226 | 187,262 | 187.26 | 3,724,100 | 3,723,455.7 | 3,714,340 | +| Modexp (Mod Vul Common 1349N1) | 1,000,000 | 1,477,226 | 271,093 | 271.09 | 4,160,168 | 4,160,168 | 4,160,168 | +| Modexp (Mod Vul Common 1360N1) | 1,000,000 | 1,477,226 | 299,672 | 299.67 | 3,843,120 | 3,843,120 | 3,843,120 | +| Modexp (Mod Vul Common 1360N2) | 1,000,000 | 1,477,226 | 273,822 | 273.82 | 3,469,392 | 3,466,203.7 | 3,464,512 | +| Modexp (Mod Vul Common 200N1) | 1,000,000 | 1,477,226 | 150,815 | 150.81 | 3,503,548 | 3,503,548 | 3,503,548 | +| Modexp (Mod Vul Common 200N2) | 1,000,000 | 1,477,226 | 189,583 | 189.58 | 3,296,664 | 3,295,121.8 | 3,289,832 | +| Modexp (Mod Vul Common 200N3) | 1,000,000 | 1,477,226 | 196,549 | 196.55 | 3,886,048 | 3,886,048 | 3,886,048 | +| Modexp (Mod Vul Example 1) | 1,000,000 | 1,477,226 | 330,561 | 330.56 | 2,183,120 | 2,110,033.5 | 1,986,944 | +| Modexp (Mod Vul Example 2) | 1,000,000 | 1,477,226 | 309,783 | 309.78 | 3,008,788 | 3,007,484.0 | 3,000,004 | +| Modexp (Mod Vul Guido 1 Even) | 1,000,000 | 1,477,226 | 270,228 | 270.23 | 4,136,756 | 4,136,232.0 | 4,132,852 | +| Modexp (Mod Vul Guido 2 Even) | 1,000,000 | 1,477,226 | 401,729 | 401.73 | 3,481,104 | 3,480,059.3 | 3,471,344 | +| Modexp (Mod Vul Guido 3 Even) | 1,000,000 | 1,477,226 | 752,179 | 752.18 | 3,852,876 | 3,852,876 | 3,850,924 | +| Modexp (Mod Vul Marius 1 Even) | 1,000,000 | 1,477,226 | 358,756 | 358.76 | 3,641,148 | 3,633,214.1 | 3,621,628 | +| Modexp (Mod Vul Nagydani 1 Pow 0X10001) | 1,000,000 | 1,477,226 | 248,655 | 248.66 | 3,666,520 | 3,663,901.1 | 3,657,736 | +| Modexp (Mod Vul Nagydani 1 Qube) | 1,000,000 | 1,477,226 | 181,974 | 181.97 | 4,171,860 | 4,171,860 | 4,171,860 | +| Modexp (Mod Vul Nagydani 1 Square) | 1,000,000 | 1,477,226 | 171,334 | 171.33 | 1,212,020 | 1,154,000.2 | 1,050,980 | +| Modexp (Mod Vul Nagydani 2 Pow 0X10001) | 1,000,000 | 1,477,226 | 251,235 | 251.24 | 4,043,092 | 4,042,116 | 4,035,284 | +| Modexp (Mod Vul Nagydani 2 Qube) | 1,000,000 | 1,477,226 | 542,014 | 542.01 | 3,306,424 | 3,305,099.8 | 3,303,496 | +| Modexp (Mod Vul Nagydani 2 Square) | 1,000,000 | 1,477,226 | 508,171 | 508.17 | 4,020,684 | 4,013,490.5 | 4,003,116 | +| Modexp (Mod Vul Nagydani 3 Pow 0X10001) | 1,000,000 | 1,477,226 | 247,937 | 247.94 | 3,714,344 | 3,714,233.8 | 3,711,416 | +| Modexp (Mod Vul Nagydani 3 Qube) | 1,000,000 | 1,477,226 | 1,307,073 | 1,307.07 | 3,342,528 | 3,339,609.1 | 3,323,984 | +| Modexp (Mod Vul Nagydani 3 Square) | 1,000,000 | 1,477,226 | 1,237,043 | 1,237.04 | 3,868,484 | 3,866,714.5 | 3,865,556 | +| Modexp (Mod Vul Nagydani 4 Pow 0X10001) | 1,000,000 | 1,477,226 | 243,910 | 243.91 | 3,942,632 | 3,942,366.9 | 3,936,776 | +| Modexp (Mod Vul Nagydani 4 Qube) | 1,000,000 | 1,477,226 | 1,587,284 | 1,587.28 | 3,843,120 | 3,832,187.8 | 3,806,032 | +| Modexp (Mod Vul Nagydani 4 Square) | 1,000,000 | 1,477,226 | 1,438,350 | 1,438.35 | 3,276,172 | 3,274,567.3 | 3,267,388 | +| Modexp (Mod Vul Nagydani 5 Pow 0X10001) | 1,000,000 | 1,477,226 | 225,950 | 225.95 | 3,917,264 | 3,917,127.2 | 3,916,288 | +| Modexp (Mod Vul Nagydani 5 Qube) | 1,000,000 | 1,477,226 | 1,620,765 | 1,620.77 | 3,038,068 | 3,034,282.2 | 3,020,500 | +| Modexp (Mod Vul Nagydani 5 Square) | 1,000,000 | 1,477,226 | 1,484,287 | 1,484.29 | 2,855,576 | 2,805,819.4 | 2,629,144 | +| Modexp (Mod Vul Pawel 1 Exp Heavy) | 1,000,000 | 1,477,226 | 679,800 | 679.80 | 3,703,608 | 3,700,709.4 | 3,690,920 | +| Modexp (Mod Vul Pawel 2 Exp Heavy) | 1,000,000 | 1,477,226 | 387,959 | 387.96 | 3,886,048 | 3,886,048 | 3,885,072 | +| Modexp (Mod Vul Pawel 3 Exp Heavy) | 1,000,000 | 1,477,226 | 320,339 | 320.34 | 3,440,116 | 3,435,610.0 | 3,426,452 | +| Modexp (Mod Vul Pawel 4 Exp Heavy) | 1,000,000 | 1,477,226 | 336,684 | 336.68 | 4,046,996 | 4,045,629.6 | 4,043,092 | +| Msize (Mem Size 0) | 1,000,000 | 1,477,226 | 27,660 | 27.66 | 3,925,072 | 3,923,530.9 | 3,917,264 | +| Msize (Mem Size 1000000) | 1,000,000 | 1,477,226 | 27,167 | 27.17 | 4,166,004 | 4,166,004 | 4,166,004 | +| Msize (Mem Size 100000) | 1,000,000 | 1,477,226 | 27,567 | 27.57 | 3,444,996 | 3,444,996 | 3,444,996 | +| Msize (Mem Size 1000) | 1,000,000 | 1,477,226 | 28,219 | 28.22 | 3,936,780 | 3,936,780 | 3,936,780 | +| Msize (Mem Size 1) | 1,000,000 | 1,477,226 | 27,476 | 27.48 | 2,857,524 | 2,857,182.4 | 2,855,572 | +| Precompile Fixed Cost (Blake2F) | 1,000,000 | 1,477,226 | 250,309 | 250.31 | 644,976 | 630,918.3 | 523,952 | +| Precompile Fixed Cost (Bls12 Fp To G1) | 1,000,000 | 1,477,226 | 630,297 | 630.30 | 4,102,604 | 4,100,035.4 | 4,097,724 | +| Precompile Fixed Cost (Bls12 Fp To G2) | 1,000,000 | 1,477,226 | 469,776 | 469.78 | 4,106,504 | 4,106,504 | 4,106,504 | +| Precompile Fixed Cost (Bls12 G1Add) | 1,000,000 | 1,477,226 | 290,142 | 290.14 | 3,492,816 | 3,490,633.1 | 3,487,936 | +| Precompile Fixed Cost (Bls12 G1Msm) | 1,000,000 | 1,477,226 | 224,791 | 224.79 | 3,728,004 | 3,727,178.8 | 3,725,076 | +| Precompile Fixed Cost (Bls12 G2Add) | 1,000,000 | 1,477,226 | 372,750 | 372.75 | 4,053,828 | 4,051,245.1 | 4,046,996 | +| Precompile Fixed Cost (Bls12 G2Msm) | 1,000,000 | 1,477,226 | 161,764 | 161.76 | 3,363,024 | 3,362,441.4 | 3,357,168 | +| Precompile Fixed Cost (Bls12 Pairing Check) | 1,000,000 | 1,477,226 | 464,051 | 464.05 | 3,304,472 | 3,302,534.7 | 3,295,688 | +| Precompile Fixed Cost (Bn128 Add) | 1,000,000 | 1,477,226 | 47,221 | 47.22 | 3,848,972 | 3,848,437.5 | 3,847,996 | +| Precompile Fixed Cost (Bn128 Add 1 2) | 1,000,000 | 1,477,226 | 41,496 | 41.50 | 3,884,096 | 3,883,829.8 | 3,878,240 | +| Precompile Fixed Cost (Bn128 Add Infinities) | 1,000,000 | 1,477,226 | 27,547 | 27.55 | 3,961,176 | 3,961,176 | 3,960,200 | +| Precompile Fixed Cost (Bn128 Mul) | 1,000,000 | 1,477,226 | 145,163 | 145.16 | 3,583,580 | 3,581,118.1 | 3,578,700 | +| Precompile Fixed Cost (Bn128 Mul 1 2 2 Scalar) | 1,000,000 | 1,477,226 | 15,286 | 15.29 | 3,880,192 | 3,880,149.6 | 3,878,240 | +| Precompile Fixed Cost (Bn128 Mul 1 2 32 Byte Scalar) | 1,000,000 | 1,477,226 | 149,329 | 149.33 | 4,080,180 | 4,079,857.8 | 4,076,276 | +| Precompile Fixed Cost (Bn128 Mul 32 Byte Coord And 2 Scalar) | 1,000,000 | 1,477,226 | 16,399 | 16.40 | 3,240,064 | 3,239,088 | 3,232,256 | +| Precompile Fixed Cost (Bn128 Mul 32 Byte Coord And Scalar) | 1,000,000 | 1,477,226 | 170,109 | 170.11 | 4,149,436 | 4,149,436 | 4,148,460 | +| Precompile Fixed Cost (Bn128 Mul Infinities 2 Scalar) | 1,000,000 | 1,477,226 | 15,405 | 15.40 | 3,901,660 | 3,901,660 | 3,901,660 | +| Precompile Fixed Cost (Bn128 Mul Infinities 32 Byte Scalar) | 1,000,000 | 1,477,226 | 86,625 | 86.62 | 3,757,276 | 3,756,859.8 | 3,755,324 | +| Precompile Fixed Cost (Bn128 One Pairing) | 1,000,000 | 1,477,226 | 103,190 | 103.19 | 3,157,112 | 3,154,849.1 | 3,145,400 | +| Precompile Fixed Cost (Bn128 Two Pairings) | 1,000,000 | 1,477,226 | 105,507 | 105.51 | 4,021,652 | 4,021,652 | 4,021,652 | +| Precompile Fixed Cost (Bn128 Two Pairings Empty) | 1,000,000 | 1,477,226 | 11,604 | 11.60 | 3,937,756 | 3,937,756 | 3,936,780 | +| Precompile Fixed Cost (Ecrecover) | 1,000,000 | 1,477,226 | 61,215 | 61.22 | 3,667,496 | 3,667,496 | 3,666,520 | +| Precompile Fixed Cost (Point Evaluation) | 1,000,000 | 1,477,226 | 1,281,252 | 1,281.25 | 3,000,980 | 2,991,001.3 | 2,971,700 | +| Precompile Only Data Input (Identity) | 1,000,000 | 1,477,226 | 22,533 | 22.53 | 3,577,724 | 3,574,968.2 | 3,573,820 | +| Precompile Only Data Input (Ripemd, 160) | 1,000,000 | 1,477,226 | 16,773 | 16.77 | 1,987,920 | 1,987,920 | 1,969,376 | +| Precompile Only Data Input (Sha2, 256) | 1,000,000 | 1,477,226 | 57,895 | 57.90 | 1,904,976 | 1,887,312.8 | 1,862,032 | +| Push (Push0) | 1,000,000 | 1,477,226 | 26,177 | 26.18 | 3,773,860 | 3,771,799.6 | 3,766,052 | +| Push (Push10) | 1,000,000 | 1,477,226 | 23,730 | 23.73 | 3,952,392 | 3,952,392 | 3,952,392 | +| Push (Push11) | 1,000,000 | 1,477,226 | 24,374 | 24.37 | 3,877,264 | 3,877,264 | 3,875,312 | +| Push (Push12) | 1,000,000 | 1,477,226 | 24,899 | 24.90 | 4,027,492 | 4,027,492 | 4,027,492 | +| Push (Push13) | 1,000,000 | 1,477,226 | 25,547 | 25.55 | 3,140,520 | 3,139,613.7 | 3,132,712 | +| Push (Push14) | 1,000,000 | 1,477,226 | 25,932 | 25.93 | 3,750,444 | 3,748,648.2 | 3,741,660 | +| Push (Push15) | 1,000,000 | 1,477,226 | 27,094 | 27.09 | 3,755,324 | 3,755,324 | 3,754,348 | +| Push (Push16) | 1,000,000 | 1,477,226 | 28,997 | 29.00 | 4,061,636 | 4,061,636 | 4,061,636 | +| Push (Push17) | 1,000,000 | 1,477,226 | 26,028 | 26.03 | 3,865,560 | 3,864,862.9 | 3,862,632 | +| Push (Push18) | 1,000,000 | 1,477,226 | 26,443 | 26.44 | 3,888,972 | 3,888,972 | 3,888,972 | +| Push (Push19) | 1,000,000 | 1,477,226 | 28,346 | 28.35 | 3,888,972 | 3,888,939.5 | 3,888,972 | +| Push (Push1) | 1,000,000 | 1,477,226 | 20,148 | 20.15 | 3,403,036 | 3,402,938 | 3,400,108 | +| Push (Push20) | 1,000,000 | 1,477,226 | 28,299 | 28.30 | 4,184,544 | 4,184,544 | 4,184,544 | +| Push (Push21) | 1,000,000 | 1,477,226 | 28,034 | 28.03 | 1,830,800 | 1,811,744.8 | 1,791,760 | +| Push (Push22) | 1,000,000 | 1,477,226 | 28,903 | 28.90 | 2,898,508 | 2,895,092 | 2,889,724 | +| Push (Push23) | 1,000,000 | 1,477,226 | 29,343 | 29.34 | 3,741,664 | 3,741,664 | 3,740,688 | +| Push (Push24) | 1,000,000 | 1,477,226 | 29,580 | 29.58 | 4,182,592 | 4,182,592 | 4,182,592 | +| Push (Push25) | 1,000,000 | 1,477,226 | 28,789 | 28.79 | 3,900,684 | 3,900,660.2 | 3,899,708 | +| Push (Push26) | 1,000,000 | 1,477,226 | 29,991 | 29.99 | 4,166,980 | 4,166,980 | 4,166,004 | +| Push (Push27) | 1,000,000 | 1,477,226 | 31,230 | 31.23 | 4,185,516 | 4,185,516 | 4,184,540 | +| Push (Push28) | 1,000,000 | 1,477,226 | 32,020 | 32.02 | 4,021,652 | 4,021,652 | 4,021,652 | +| Push (Push29) | 1,000,000 | 1,477,226 | 31,606 | 31.61 | 3,019,524 | 3,019,144.4 | 3,011,716 | +| Push (Push2) | 1,000,000 | 1,477,226 | 20,637 | 20.64 | 3,307,400 | 3,306,470.5 | 3,306,424 | +| Push (Push30) | 1,000,000 | 1,477,226 | 31,544 | 31.54 | 4,183,568 | 4,183,568 | 4,182,592 | +| Push (Push31) | 1,000,000 | 1,477,226 | 32,241 | 32.24 | 3,943,608 | 3,943,608 | 3,942,632 | +| Push (Push32) | 1,000,000 | 1,477,226 | 32,704 | 32.70 | 4,043,092 | 4,043,092 | 4,042,116 | +| Push (Push3) | 1,000,000 | 1,477,226 | 21,298 | 21.30 | 3,584,548 | 3,584,548 | 3,583,572 | +| Push (Push4) | 1,000,000 | 1,477,226 | 22,773 | 22.77 | 3,854,824 | 3,854,824 | 3,854,824 | +| Push (Push5) | 1,000,000 | 1,477,226 | 24,656 | 24.66 | 4,088,940 | 4,088,940 | 4,088,940 | +| Push (Push6) | 1,000,000 | 1,477,226 | 22,509 | 22.51 | 4,035,288 | 4,035,288 | 4,035,288 | +| Push (Push7) | 1,000,000 | 1,477,226 | 23,839 | 23.84 | 4,193,324 | 4,193,324 | 4,192,348 | +| Push (Push8) | 1,000,000 | 1,477,226 | 23,621 | 23.62 | 4,181,616 | 4,181,616 | 4,179,664 | +| Push (Push9) | 1,000,000 | 1,477,226 | 27,759 | 27.76 | 4,119,188 | 4,119,188 | 4,118,212 | +| Return Revert (1Kib Of Non, Zero Data, Return) | 1,000,000 | 1,477,226 | 28,123 | 28.12 | 1,778,096 | 1,770,985.1 | 1,761,504 | +| Return Revert (1Kib Of Non, Zero Data, Revert) | 1,000,000 | 1,477,226 | 27,384 | 27.38 | 4,186,492 | 4,186,492 | 4,186,492 | +| Return Revert (1Kib Of Zero Data, Return) | 1,000,000 | 1,477,226 | 30,922 | 30.92 | 3,935,808 | 3,935,808 | 3,935,808 | +| Return Revert (1Kib Of Zero Data, Revert) | 1,000,000 | 1,477,226 | 32,761 | 32.76 | 3,952,392 | 3,951,985.3 | 3,951,416 | +| Return Revert (1Mib Of Non, Zero Data, Return) | 1,000,000 | 1,477,226 | 12,952 | 12.95 | 3,711,416 | 3,711,416 | 3,705,560 | +| Return Revert (1Mib Of Non, Zero Data, Revert) | 1,000,000 | 1,477,226 | 12,578 | 12.58 | 4,165,032 | 4,165,032 | 4,165,032 | +| Return Revert (1Mib Of Zero Data, Return) | 1,000,000 | 1,477,226 | 16,258 | 16.26 | 4,081,156 | 4,079,854.7 | 4,078,228 | +| Return Revert (1Mib Of Zero Data, Revert) | 1,000,000 | 1,477,226 | 13,677 | 13.68 | 3,509,404 | 3,509,038 | 3,504,524 | +| Return Revert (Empty, Return) | 1,000,000 | 1,477,226 | 37,376 | 37.38 | 3,917,268 | 3,915,400.9 | 3,915,316 | +| Return Revert (Empty, Revert) | 1,000,000 | 1,477,226 | 41,720 | 41.72 | 3,647,004 | 3,645,865.3 | 3,641,148 | +| Returndatasize Nonzero (Returned Size 0, Return Data Style Returndatastyle.Identity) | 1,000,000 | 1,477,226 | 23,665 | 23.66 | 3,869,460 | 3,868,993.2 | 3,868,484 | +| Returndatasize Nonzero (Returned Size 0, Return Data Style Returndatastyle.Return) | 1,000,000 | 1,477,226 | 29,719 | 29.72 | 4,117,236 | 4,117,236 | 4,116,260 | +| Returndatasize Nonzero (Returned Size 0, Return Data Style Returndatastyle.Revert) | 1,000,000 | 1,477,226 | 29,742 | 29.74 | 4,137,732 | 4,137,732 | 4,137,732 | +| Returndatasize Nonzero (Returned Size 1, Return Data Style Returndatastyle.Identity) | 1,000,000 | 1,477,226 | 23,843 | 23.84 | 4,004,096 | 4,003,956.6 | 4,003,120 | +| Returndatasize Nonzero (Returned Size 1, Return Data Style Returndatastyle.Return) | 1,000,000 | 1,477,226 | 24,027 | 24.03 | 3,279,100 | 3,279,100 | 3,276,172 | +| Returndatasize Nonzero (Returned Size 1, Return Data Style Returndatastyle.Revert) | 1,000,000 | 1,477,226 | 23,752 | 23.75 | 3,309,352 | 3,309,352 | 3,309,352 | +| Returndatasize Zero | 1,000,000 | 1,477,226 | 24,732 | 24.73 | 4,166,012 | 4,165,524 | 4,164,060 | +| Shifts (Shift Right Sar) | 1,000,000 | 1,477,226 | 34,466 | 34.47 | 3,224,452 | 3,224,452 | 3,224,452 | +| Shifts (Shift Right Shr) | 1,000,000 | 1,477,226 | 32,253 | 32.25 | 4,030,412 | 4,030,412 | 4,028,460 | +| Swap (Swap10) | 1,000,000 | 1,477,226 | 39,597 | 39.60 | 1,696,116 | 1,683,165.2 | 1,666,836 | +| Swap (Swap11) | 1,000,000 | 1,477,226 | 39,172 | 39.17 | 3,383,516 | 3,383,125.6 | 3,381,564 | +| Swap (Swap12) | 1,000,000 | 1,477,226 | 38,673 | 38.67 | 4,027,496 | 4,027,496 | 4,027,496 | +| Swap (Swap13) | 1,000,000 | 1,477,226 | 38,894 | 38.89 | 3,753,372 | 3,753,236.4 | 3,751,420 | +| Swap (Swap14) | 1,000,000 | 1,477,226 | 38,166 | 38.17 | 4,166,984 | 4,166,220.2 | 4,165,032 | +| Swap (Swap15) | 1,000,000 | 1,477,226 | 46,617 | 46.62 | 4,109,432 | 4,109,380.6 | 4,106,504 | +| Swap (Swap16) | 1,000,000 | 1,477,226 | 38,746 | 38.75 | 4,028,460 | 4,028,460 | 4,028,460 | +| Swap (Swap1) | 1,000,000 | 1,477,226 | 39,565 | 39.56 | 3,785,552 | 3,785,552 | 3,785,552 | +| Swap (Swap2) | 1,000,000 | 1,477,226 | 39,695 | 39.70 | 3,618,700 | 3,616,748 | 3,611,868 | +| Swap (Swap3) | 1,000,000 | 1,477,226 | 39,418 | 39.42 | 3,941,656 | 3,941,656 | 3,941,656 | +| Swap (Swap4) | 1,000,000 | 1,477,226 | 39,285 | 39.28 | 3,423,524 | 3,423,184.5 | 3,418,644 | +| Swap (Swap5) | 1,000,000 | 1,477,226 | 38,817 | 38.82 | 3,844,096 | 3,844,065.4 | 3,844,096 | +| Swap (Swap6) | 1,000,000 | 1,477,226 | 46,473 | 46.47 | 4,089,936 | 4,088,960 | 4,080,176 | +| Swap (Swap7) | 1,000,000 | 1,477,226 | 38,906 | 38.91 | 3,096,616 | 3,096,547.5 | 3,090,760 | +| Swap (Swap8) | 1,000,000 | 1,477,226 | 39,052 | 39.05 | 3,866,536 | 3,866,501 | 3,866,536 | +| Swap (Swap9) | 1,000,000 | 1,477,226 | 46,169 | 46.17 | 4,112,360 | 4,112,360 | 4,112,360 | +| Tload (Val Mut False, Key Mut False) | 1,000,000 | 1,477,226 | 15,693 | 15.69 | 4,107,484 | 4,107,484 | 4,106,508 | +| Tload (Val Mut False, Key Mut True) | 1,000,000 | 1,477,226 | 14,711 | 14.71 | 2,870,212 | 2,870,212 | 2,865,332 | +| Tload (Val Mut True, Key Mut False) | 1,000,000 | 1,477,226 | 15,028 | 15.03 | 3,886,048 | 3,885,982.7 | 3,886,048 | +| Tload (Val Mut True, Key Mut True) | 1,000,000 | 1,477,226 | 14,054 | 14.05 | 3,418,644 | 3,418,644 | 3,417,668 | +| Tstore (Dense Val Mut False, Key Mut False) | 1,000,000 | 1,477,226 | 21,467 | 21.47 | 4,159,188 | 4,159,188 | 4,159,188 | +| Tstore (Dense Val Mut False, Key Mut True) | 1,000,000 | 1,477,226 | 19,505 | 19.50 | 3,936,784 | 3,936,784 | 3,936,784 | +| Tstore (Dense Val Mut True, Key Mut False) | 1,000,000 | 1,477,226 | 28,288 | 28.29 | 3,067,344 | 3,066,236.1 | 3,062,464 | +| Tstore (Dense Val Mut True, Key Mut True) | 1,000,000 | 1,477,226 | 26,815 | 26.82 | 3,931,904 | 3,931,904 | 3,930,928 | +| Unop (Iszero) | 1,000,000 | 1,477,226 | 42,951 | 42.95 | 3,954,344 | 3,954,344 | 3,953,368 | +| Unop (Not) | 1,000,000 | 1,477,226 | 23,482 | 23.48 | 4,159,184 | 4,159,184 | 4,158,208 | +| Zero Param (Address) | 1,000,000 | 1,477,226 | 38,624 | 38.62 | 4,023,596 | 4,023,596 | 4,023,596 | +| Zero Param (Basefee) | 1,000,000 | 1,477,226 | 27,767 | 27.77 | 3,760,200 | 3,759,965.8 | 3,759,224 | +| Zero Param (Blobbasefee) | 1,000,000 | 1,477,226 | 31,926 | 31.93 | 1,569,236 | 1,561,030.4 | 1,550,692 | +| Zero Param (Caller) | 1,000,000 | 1,477,226 | 37,800 | 37.80 | 4,022,628 | 4,022,628 | 4,021,652 | +| Zero Param (Chainid) | 1,000,000 | 1,477,226 | 28,885 | 28.89 | 4,024,576 | 4,024,576 | 4,024,576 | +| Zero Param (Codesize) | 1,000,000 | 1,477,226 | 32,505 | 32.51 | 4,106,508 | 4,106,312.8 | 4,105,532 | +| Zero Param (Coinbase) | 1,000,000 | 1,477,226 | 39,136 | 39.14 | 3,979,700 | 3,979,700 | 3,979,700 | +| Zero Param (Gaslimit) | 1,000,000 | 1,477,226 | 28,947 | 28.95 | 3,962,136 | 3,962,136 | 3,962,136 | +| Zero Param (Gasprice) | 1,000,000 | 1,477,226 | 33,032 | 33.03 | 3,929,952 | 3,929,952 | 3,928,976 | +| Zero Param (Gas) | 1,000,000 | 1,477,226 | 26,567 | 26.57 | 3,465,492 | 3,465,492 | 3,465,492 | +| Zero Param (Number) | 1,000,000 | 1,477,226 | 32,151 | 32.15 | 3,905,564 | 3,905,513.9 | 3,901,660 | +| Zero Param (Origin) | 1,000,000 | 1,477,226 | 45,969 | 45.97 | 4,089,920 | 4,089,920 | 4,089,920 | +| Zero Param (Prevrandao) | 1,000,000 | 1,477,226 | 48,635 | 48.63 | 3,879,216 | 3,879,201.6 | 3,879,216 | +| Zero Param (Timestamp) | 1,000,000 | 1,477,226 | 30,607 | 30.61 | 3,462,564 | 3,461,415.8 | 3,453,780 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 0Bytes, Call) | 1,000,000 | 1,477,226 | 39,062 | 39.06 | 4,105,528 | 4,105,528 | 4,105,528 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 0Bytes, Transaction) | 1,000,000 | 1,477,226 | 29,186 | 29.19 | 3,594,304 | 3,592,135.1 | 3,588,448 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 100Bytes, Call) | 1,000,000 | 1,477,226 | 26,699 | 26.70 | 3,794,324 | 3,794,324 | 3,792,372 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 100Bytes, Transaction) | 1,000,000 | 1,477,226 | 25,900 | 25.90 | 3,368,880 | 3,367,938.9 | 3,366,928 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 10Kib, Call) | 1,000,000 | 1,477,226 | 18,325 | 18.32 | 3,930,928 | 3,930,928 | 3,929,952 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 10Kib, Transaction) | 1,000,000 | 1,477,226 | 15,004 | 15.00 | 3,145,400 | 3,145,170.4 | 3,139,544 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 1Mib, Call) | 1,000,000 | 1,477,226 | 12,065 | 12.06 | 3,889,948 | 3,889,948 | 3,887,996 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 1Mib, Transaction) | 1,000,000 | 1,477,226 | 11,812 | 11.81 | 3,884,096 | 3,884,096 | 3,883,120 | +| Calldatacopy (Zero Data, Fixed Src Dst, 0Bytes, Call) | 1,000,000 | 1,477,226 | 26,007 | 26.01 | 2,208,496 | 2,206,256.9 | 2,201,664 | +| Calldatacopy (Zero Data, Fixed Src Dst, 0Bytes, Transaction) | 1,000,000 | 1,477,226 | 23,448 | 23.45 | 1,525,316 | 1,520,553.1 | 1,513,604 | +| Calldatacopy (Zero Data, Fixed Src Dst, 100Bytes, Call) | 1,000,000 | 1,477,226 | 20,638 | 20.64 | 3,849,948 | 3,849,948 | 3,848,972 | +| Calldatacopy (Zero Data, Fixed Src Dst, 100Bytes, Transaction) | 1,000,000 | 1,477,226 | 19,436 | 19.44 | 3,988,480 | 3,988,480 | 3,987,504 | +| Calldatacopy (Zero Data, Fixed Src Dst, 10Kib, Call) | 1,000,000 | 1,477,226 | 15,951 | 15.95 | 3,680,184 | 3,680,086.4 | 3,678,232 | +| Calldatacopy (Zero Data, Fixed Src Dst, 10Kib, Transaction) | 1,000,000 | 1,477,226 | 14,720 | 14.72 | 3,928,000 | 3,927,105.3 | 3,926,048 | +| Calldatacopy (Zero Data, Fixed Src Dst, 1Mib, Call) | 1,000,000 | 1,477,226 | 11,654 | 11.65 | 4,184,544 | 4,184,544 | 4,184,544 | +| Calldatacopy (Zero Data, Fixed Src Dst, 1Mib, Transaction) | 1,000,000 | 1,477,226 | 16,427 | 16.43 | 4,137,728 | 4,137,728 | 4,137,728 | +| Calldatacopy (Non Zero, Dynamic Src Dst, 100Bytes, Call) | 1,000,000 | 1,477,226 | 25,959 | 25.96 | 3,673,352 | 3,673,352 | 3,672,376 | +| Calldatacopy (Non Zero, Dynamic Src Dst, 100Bytes, Transaction) | 1,000,000 | 1,477,226 | 32,425 | 32.42 | 4,110,408 | 4,110,408 | 4,109,432 | +| Calldatacopy (Non Zero, Dynamic Src Dst, 10Kib, Call) | 1,000,000 | 1,477,226 | 17,537 | 17.54 | 3,846,044 | 3,846,044 | 3,846,044 | +| Calldatacopy (Non Zero, Dynamic Src Dst, 10Kib, Transaction) | 1,000,000 | 1,477,226 | 18,657 | 18.66 | 3,997,264 | 3,996,820.4 | 3,996,288 | +| Calldatacopy (Non Zero, Fixed Src Dst, 100Bytes, Call) | 1,000,000 | 1,477,226 | 21,051 | 21.05 | 3,522,092 | 3,522,026.9 | 3,521,116 | +| Calldatacopy (Non Zero, Fixed Src Dst, 100Bytes, Transaction) | 1,000,000 | 1,477,226 | 20,119 | 20.12 | 727,932 | 719,593.6 | 704,508 | +| Calldatacopy (Non Zero, Fixed Src Dst, 10Kib, Call) | 1,000,000 | 1,477,226 | 16,218 | 16.22 | 3,852,876 | 3,852,876 | 3,851,900 | +| Calldatacopy (Non Zero, Fixed Src Dst, 10Kib, Transaction) | 1,000,000 | 1,477,226 | 17,011 | 17.01 | 4,167,956 | 4,167,956 | 4,166,980 | +| Codecopy (Dynamic Src Dst, 0Bytes) | 1,000,000 | 1,477,226 | 28,718 | 28.72 | 3,198,104 | 3,196,659.5 | 3,187,368 | +| Codecopy (Dynamic Src Dst, 0.25X Max Code) | 1,000,000 | 1,477,226 | 27,536 | 27.54 | 4,138,708 | 4,138,708 | 4,137,732 | +| Codecopy (Dynamic Src Dst, 0.50X Max Code Size) | 1,000,000 | 1,477,226 | 22,419 | 22.42 | 4,080,176 | 4,080,176 | 4,080,176 | +| Codecopy (Dynamic Src Dst, 0.75X Max Code Size) | 1,000,000 | 1,477,226 | 18,257 | 18.26 | 4,163,084 | 4,163,084 | 4,159,180 | +| Codecopy (Dynamic Src Dst, Max Code) | 1,000,000 | 1,477,226 | 18,410 | 18.41 | 3,761,176 | 3,761,176 | 3,761,176 | +| Codecopy (Fixed Src Dst, 0Bytes) | 1,000,000 | 1,477,226 | 21,699 | 21.70 | 4,189,420 | 4,189,420 | 4,188,444 | +| Codecopy (Fixed Src Dst, 0.25X Max Code) | 1,000,000 | 1,477,226 | 16,476 | 16.48 | 1,226,660 | 1,221,877.6 | 1,212,996 | +| Codecopy (Fixed Src Dst, 0.50X Max Code Size) | 1,000,000 | 1,477,226 | 17,817 | 17.82 | 3,850,924 | 3,850,924 | 3,850,924 | +| Codecopy (Fixed Src Dst, 0.75X Max Code Size) | 1,000,000 | 1,477,226 | 21,510 | 21.51 | 4,138,708 | 4,138,708 | 4,137,732 | +| Codecopy (Fixed Src Dst, Max Code) | 1,000,000 | 1,477,226 | 16,770 | 16.77 | 3,242,992 | 3,242,422.7 | 3,240,064 | +| Mcopy (Dynamic Src Dst, 0Bytes) | 1,000,000 | 1,477,226 | 34,353 | 34.35 | 4,152,364 | 4,152,364 | 4,150,412 | +| Mcopy (Dynamic Src Dst, 100Bytes) | 1,000,000 | 1,477,226 | 27,380 | 27.38 | 3,794,324 | 3,794,324 | 3,794,324 | +| Mcopy (Dynamic Src Dst, 10Kib) | 1,000,000 | 1,477,226 | 24,549 | 24.55 | 3,584,552 | 3,584,552 | 3,584,552 | +| Mcopy (Dynamic Src Dst, 1Mib) | 1,000,000 | 1,477,226 | 14,526 | 14.53 | 3,886,048 | 3,886,048 | 3,886,048 | +| Mcopy (Fixed Src Dst, 0Bytes) | 1,000,000 | 1,477,226 | 23,568 | 23.57 | 3,884,096 | 3,884,096 | 3,883,120 | +| Mcopy (Fixed Src Dst, 100Bytes) | 1,000,000 | 1,477,226 | 22,706 | 22.71 | 4,027,500 | 4,027,445.6 | 4,027,500 | +| Mcopy (Fixed Src Dst, 10Kib) | 1,000,000 | 1,477,226 | 22,246 | 22.25 | 522,000 | 436,205.0 | 248,720 | +| Mcopy (Fixed Src Dst, 1Mib) | 1,000,000 | 1,477,226 | 12,735 | 12.73 | 1,578,020 | 1,574,360 | 1,569,236 | +| Returndatacopy (Fixed Dst False, 0Bytes) | 1,000,000 | 1,477,226 | 30,035 | 30.04 | 1,546,788 | 1,540,932 | 1,524,340 | +| Returndatacopy (Fixed Dst False, 100Bytes) | 1,000,000 | 1,477,226 | 25,369 | 25.37 | 3,589,428 | 3,588,394.6 | 3,586,500 | +| Returndatacopy (Fixed Dst False, 10Kib) | 1,000,000 | 1,477,226 | 19,871 | 19.87 | 3,995,312 | 3,995,312 | 3,995,312 | +| Returndatacopy (Fixed Dst False, 1Mib) | 1,000,000 | 1,477,226 | 14,002 | 14.00 | 3,780,684 | 3,780,684 | 3,780,684 | +| Returndatacopy (Fixed Dst True, 0Bytes) | 1,000,000 | 1,477,226 | 26,132 | 26.13 | 3,526,972 | 3,522,254.7 | 3,521,116 | +| Returndatacopy (Fixed Dst True, 100Bytes) | 1,000,000 | 1,477,226 | 20,807 | 20.81 | 3,586,500 | 3,586,500 | 3,585,524 | +| Returndatacopy (Fixed Dst True, 10Kib) | 1,000,000 | 1,477,226 | 17,408 | 17.41 | 3,789,456 | 3,789,456 | 3,788,480 | +| Returndatacopy (Fixed Dst True, 1Mib) | 1,000,000 | 1,477,226 | 13,129 | 13.13 | 3,617,724 | 3,617,724 | 3,617,724 | +| Log Opcodes (Dynamic, Non Zero Topic, 0 Bytes Data, Log0) | 1,000,000 | 1,477,226 | 13,926 | 13.93 | 4,172,836 | 4,172,836 | 4,172,836 | +| Log Opcodes (Dynamic, Non Zero Topic, 0 Bytes Data, Log1) | 1,000,000 | 1,477,226 | 13,428 | 13.43 | 3,501,596 | 3,501,596 | 3,501,596 | +| Log Opcodes (Dynamic, Non Zero Topic, 0 Bytes Data, Log2) | 1,000,000 | 1,477,226 | 12,306 | 12.31 | 3,885,072 | 3,885,072 | 3,883,120 | +| Log Opcodes (Dynamic, Non Zero Topic, 0 Bytes Data, Log3) | 1,000,000 | 1,477,226 | 13,715 | 13.71 | 4,192,348 | 4,192,348 | 4,192,348 | +| Log Opcodes (Dynamic, Non Zero Topic, 0 Bytes Data, Log4) | 1,000,000 | 1,477,226 | 13,225 | 13.22 | 3,897,756 | 3,897,128.6 | 3,890,924 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log0) | 1,000,000 | 1,477,226 | 12,813 | 12.81 | 4,021,652 | 4,021,652 | 4,021,652 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log1) | 1,000,000 | 1,477,226 | 12,406 | 12.41 | 3,656,764 | 3,656,764 | 3,655,788 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log2) | 1,000,000 | 1,477,226 | 15,858 | 15.86 | 4,079,204 | 4,079,095.6 | 4,079,204 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log3) | 1,000,000 | 1,477,226 | 12,185 | 12.19 | 2,319,760 | 2,313,318.4 | 2,306,096 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log4) | 1,000,000 | 1,477,226 | 14,038 | 14.04 | 3,400,108 | 3,400,108 | 3,400,108 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log0) | 1,000,000 | 1,477,226 | 12,758 | 12.76 | 3,267,392 | 3,267,001.6 | 3,261,536 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log1) | 1,000,000 | 1,477,226 | 12,853 | 12.85 | 3,472,320 | 3,472,320 | 3,471,344 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log2) | 1,000,000 | 1,477,226 | 12,703 | 12.70 | 3,905,564 | 3,905,564 | 3,905,564 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log3) | 1,000,000 | 1,477,226 | 11,945 | 11.95 | 3,750,444 | 3,750,444 | 3,750,444 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log4) | 1,000,000 | 1,477,226 | 13,331 | 13.33 | 3,667,496 | 3,667,496 | 3,667,496 | +| Log Opcodes (Dynamic, Zero Topic, 0 Bytes Data, Log0) | 1,000,000 | 1,477,226 | 17,660 | 17.66 | 4,147,484 | 4,147,484 | 4,146,508 | +| Log Opcodes (Dynamic, Zero Topic, 0 Bytes Data, Log1) | 1,000,000 | 1,477,226 | 12,775 | 12.78 | 3,878,240 | 3,878,240 | 3,878,240 | +| Log Opcodes (Dynamic, Zero Topic, 0 Bytes Data, Log2) | 1,000,000 | 1,477,226 | 13,718 | 13.72 | 3,740,688 | 3,740,688 | 3,738,736 | +| Log Opcodes (Dynamic, Zero Topic, 0 Bytes Data, Log3) | 1,000,000 | 1,477,226 | 18,567 | 18.57 | 4,118,212 | 4,118,212 | 4,117,236 | +| Log Opcodes (Dynamic, Zero Topic, 0 Bytes Data, Log4) | 1,000,000 | 1,477,226 | 13,807 | 13.81 | 3,349,360 | 3,348,291.0 | 3,341,552 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Non Zero Data, Log0) | 1,000,000 | 1,477,226 | 13,469 | 13.47 | 3,786,528 | 3,786,528 | 3,786,528 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Non Zero Data, Log1) | 1,000,000 | 1,477,226 | 12,679 | 12.68 | 3,859,704 | 3,859,704 | 3,859,704 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Non Zero Data, Log2) | 1,000,000 | 1,477,226 | 13,148 | 13.15 | 3,452,804 | 3,452,804 | 3,446,948 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Non Zero Data, Log3) | 1,000,000 | 1,477,226 | 13,309 | 13.31 | 3,861,656 | 3,861,656 | 3,861,656 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Non Zero Data, Log4) | 1,000,000 | 1,477,226 | 13,239 | 13.24 | 3,492,816 | 3,492,816 | 3,492,816 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Zeros Data, Log0) | 1,000,000 | 1,477,226 | 12,380 | 12.38 | 3,533,804 | 3,533,804 | 3,526,972 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Zeros Data, Log1) | 1,000,000 | 1,477,226 | 12,636 | 12.64 | 3,585,532 | 3,585,532 | 3,583,580 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Zeros Data, Log2) | 1,000,000 | 1,477,226 | 12,115 | 12.12 | 4,192,344 | 4,192,344 | 4,192,344 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Zeros Data, Log3) | 1,000,000 | 1,477,226 | 12,204 | 12.20 | 3,310,324 | 3,310,324 | 3,308,372 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Zeros Data, Log4) | 1,000,000 | 1,477,226 | 12,423 | 12.42 | 3,678,232 | 3,678,232 | 3,674,328 | +| Log Opcodes (Fixed, Non Zero Topic, 0 Bytes Data, Log0) | 1,000,000 | 1,477,226 | 12,595 | 12.60 | 4,164,060 | 4,163,165.3 | 4,163,084 | +| Log Opcodes (Fixed, Non Zero Topic, 0 Bytes Data, Log1) | 1,000,000 | 1,477,226 | 13,902 | 13.90 | 3,901,660 | 3,901,660 | 3,901,660 | +| Log Opcodes (Fixed, Non Zero Topic, 0 Bytes Data, Log2) | 1,000,000 | 1,477,226 | 13,257 | 13.26 | 4,002,144 | 4,001,070.4 | 4,000,192 | +| Log Opcodes (Fixed, Non Zero Topic, 0 Bytes Data, Log3) | 1,000,000 | 1,477,226 | 13,993 | 13.99 | 4,192,344 | 4,192,344 | 4,192,344 | +| Log Opcodes (Fixed, Non Zero Topic, 0 Bytes Data, Log4) | 1,000,000 | 1,477,226 | 12,847 | 12.85 | 3,266,412 | 3,266,412 | 3,266,412 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log0) | 1,000,000 | 1,477,226 | 13,284 | 13.28 | 3,787,504 | 3,787,504 | 3,786,528 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log1) | 1,000,000 | 1,477,226 | 12,015 | 12.02 | 3,999,216 | 3,999,216 | 3,998,240 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log2) | 1,000,000 | 1,477,226 | 14,756 | 14.76 | 4,114,312 | 4,114,312 | 4,113,336 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log3) | 1,000,000 | 1,477,226 | 15,977 | 15.98 | 4,074,324 | 4,073,766.3 | 4,072,372 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log4) | 1,000,000 | 1,477,226 | 12,680 | 12.68 | 1,967,440 | 1,965,813.3 | 1,952,800 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Zeros Data, Log0) | 1,000,000 | 1,477,226 | 13,706 | 13.71 | 3,464,516 | 3,464,516 | 3,461,588 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Zeros Data, Log1) | 1,000,000 | 1,477,226 | 12,800 | 12.80 | 4,024,572 | 4,024,572 | 4,023,596 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Zeros Data, Log2) | 1,000,000 | 1,477,226 | 12,717 | 12.72 | 3,426,452 | 3,426,126.7 | 3,423,524 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Zeros Data, Log3) | 1,000,000 | 1,477,226 | 13,307 | 13.31 | 1,392,580 | 1,387,293.3 | 1,382,820 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Zeros Data, Log4) | 1,000,000 | 1,477,226 | 13,213 | 13.21 | 2,956,088 | 2,955,234 | 2,949,256 | +| Log Opcodes (Fixed, Zero Topic, 0 Bytes Data, Log0) | 1,000,000 | 1,477,226 | 12,615 | 12.62 | 1,791,760 | 1,785,416 | 1,780,048 | +| Log Opcodes (Fixed, Zero Topic, 0 Bytes Data, Log1) | 1,000,000 | 1,477,226 | 13,274 | 13.27 | 3,774,832 | 3,774,832 | 3,773,856 | +| Log Opcodes (Fixed, Zero Topic, 0 Bytes Data, Log2) | 1,000,000 | 1,477,226 | 13,825 | 13.82 | 3,842,144 | 3,842,144 | 3,842,144 | +| Log Opcodes (Fixed, Zero Topic, 0 Bytes Data, Log3) | 1,000,000 | 1,477,226 | 12,641 | 12.64 | 3,847,020 | 3,847,020 | 3,847,020 | +| Log Opcodes (Fixed, Zero Topic, 0 Bytes Data, Log4) | 1,000,000 | 1,477,226 | 12,663 | 12.66 | 3,914,344 | 3,913,172.8 | 3,909,464 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Non Zero Data, Log0) | 1,000,000 | 1,477,226 | 13,084 | 13.08 | 3,391,324 | 3,389,194.5 | 3,384,492 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Non Zero Data, Log1) | 1,000,000 | 1,477,226 | 12,149 | 12.15 | 3,318,128 | 3,316,420 | 3,313,248 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Non Zero Data, Log2) | 1,000,000 | 1,477,226 | 12,480 | 12.48 | 3,766,052 | 3,765,835.1 | 3,765,076 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Non Zero Data, Log3) | 1,000,000 | 1,477,226 | 14,092 | 14.09 | 3,989,456 | 3,989,456 | 3,988,480 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Non Zero Data, Log4) | 1,000,000 | 1,477,226 | 12,582 | 12.58 | 3,862,632 | 3,861,833.5 | 3,861,656 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Zeros Data, Log0) | 1,000,000 | 1,477,226 | 13,227 | 13.23 | 1,950,848 | 1,945,317.3 | 1,938,160 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Zeros Data, Log1) | 1,000,000 | 1,477,226 | 12,694 | 12.69 | 3,761,172 | 3,761,172 | 3,761,172 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Zeros Data, Log2) | 1,000,000 | 1,477,226 | 17,073 | 17.07 | 4,137,728 | 4,137,728 | 4,137,728 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Zeros Data, Log3) | 1,000,000 | 1,477,226 | 12,775 | 12.78 | 3,790,420 | 3,790,420 | 3,788,468 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Zeros Data, Log4) | 1,000,000 | 1,477,226 | 12,953 | 12.95 | 3,778,736 | 3,777,597.3 | 3,774,832 | +| Address State Cold (Absent Accounts False, Balance) | 1,000,000 | 1,477,226 | 15,148 | 15.15 | 4,028,460 | 4,027,158.7 | 4,026,508 | +| Address State Cold (Absent Accounts True, Balance) | 1,000,000 | 1,477,226 | 13,965 | 13.96 | 4,002,144 | 4,002,144 | 4,002,144 | +| Address State Warm (Present Target, Balance) | 1,000,000 | 1,477,226 | 24,390 | 24.39 | 4,138,708 | 4,138,708 | 4,138,708 | +| Address State Warm (Present Target, Callcode) | 1,000,000 | 1,477,226 | 37,848 | 37.85 | 4,165,032 | 4,165,032 | 4,165,032 | +| Address State Warm (Present Target, Call) | 1,000,000 | 1,477,226 | 37,895 | 37.90 | 4,020,680 | 4,020,680 | 4,019,704 | +| Address State Warm (Present Target, Delegatecall) | 1,000,000 | 1,477,226 | 33,913 | 33.91 | 3,734,832 | 3,733,019.4 | 3,727,024 | +| Address State Warm (Present Target, Extcodehash) | 1,000,000 | 1,477,226 | 18,931 | 18.93 | 2,958,036 | 2,955,840 | 2,955,108 | +| Address State Warm (Present Target, Extcodesize) | 1,000,000 | 1,477,226 | 17,629 | 17.63 | 3,909,464 | 3,909,138.7 | 3,907,512 | +| Address State Warm (Present Target, Staticcall) | 1,000,000 | 1,477,226 | 36,997 | 37.00 | 4,165,032 | 4,165,032 | 4,165,032 | +| Address State Warm (Absent Target, Balance) | 1,000,000 | 1,477,226 | 20,675 | 20.68 | 3,166,872 | 3,165,291.8 | 3,162,968 | +| Address State Warm (Absent Target, Callcode) | 1,000,000 | 1,477,226 | 33,485 | 33.48 | 1,727,348 | 1,714,393.8 | 1,700,996 | +| Address State Warm (Absent Target, Call) | 1,000,000 | 1,477,226 | 39,756 | 39.76 | 4,117,240 | 4,117,240 | 4,116,264 | +| Address State Warm (Absent Target, Delegatecall) | 1,000,000 | 1,477,226 | 32,436 | 32.44 | 3,778,732 | 3,778,732 | 3,778,732 | +| Address State Warm (Absent Target, Extcodehash) | 1,000,000 | 1,477,226 | 23,153 | 23.15 | 3,991,408 | 3,991,408 | 3,991,408 | +| Address State Warm (Absent Target, Extcodesize) | 1,000,000 | 1,477,226 | 19,599 | 19.60 | 2,608,648 | 2,604,921.5 | 2,590,104 | +| Address State Warm (Absent Target, Staticcall) | 1,000,000 | 1,477,226 | 33,337 | 33.34 | 3,931,904 | 3,931,904 | 3,931,904 | +| Blockhash | 1,000,000 | 1,477,226 | 27,355 | 27.36 | 4,126,020 | 4,126,020 | 4,124,068 | +| Extcodecopy Warm (1Kib) | 1,000,000 | 1,477,226 | 19,063 | 19.06 | 703,532 | 696,600.4 | 675,228 | +| Extcodecopy Warm (512) | 1,000,000 | 1,477,226 | 17,733 | 17.73 | 3,993,360 | 3,993,360 | 3,992,384 | +| Extcodecopy Warm (5Kib) | 1,000,000 | 1,477,226 | 17,438 | 17.44 | 3,899,708 | 3,899,708 | 3,899,708 | +| Selfbalance | 1,000,000 | 1,477,226 | 107,988 | 107.99 | 3,404,980 | 3,404,248 | 3,401,076 | +| Selfdestruct Created (No Value) | 965,720 | 1,477,226 | 13,788 | 13.79 | 3,379,612 | 3,379,612 | 3,378,636 | +| Selfdestruct Created (With Value) | 965,720 | 1,477,226 | 14,329 | 14.33 | 3,850,924 | 3,850,924 | 3,849,948 | +| Selfdestruct Existing (No Value) | 998,771 | 1,477,226 | 15,312 | 15.31 | 3,504,524 | 3,504,524 | 3,503,548 | +| Selfdestruct Existing (With Value) | 998,771 | 1,477,226 | 14,578 | 14.58 | 3,232,260 | 3,231,106.5 | 3,226,404 | +| Selfdestruct Initcode (No Value) | 989,164 | 1,477,226 | 14,812 | 14.81 | 4,154,316 | 4,154,316 | 4,154,316 | +| Selfdestruct Initcode (With Value) | 989,164 | 1,477,226 | 12,301 | 12.30 | 3,934,832 | 3,934,832 | 3,933,856 | +| Storage Access Cold (Absent Slots False, Ssload) | 999,749 | 1,477,226 | 17,319 | 17.32 | 3,376,684 | 3,375,328.4 | 3,367,900 | +| Storage Access Cold (Absent Slots False, Sstore New Value, Out Of Gas) | 1,000,000 | 1,477,226 | 14,555 | 14.55 | 3,872,388 | 3,872,388 | 3,872,388 | +| Storage Access Cold (Absent Slots False, Sstore New Value, Revert) | 998,963 | 1,477,226 | 15,776 | 15.78 | 3,883,120 | 3,883,120 | 3,883,120 | +| Storage Access Cold (Absent Slots False, Sstore New Value) | 998,957 | 1,477,226 | 15,383 | 15.38 | 3,323,984 | 3,323,008 | 3,317,152 | +| Storage Access Cold (Absent Slots False, Sstore Same Value, Out Of Gas) | 1,000,000 | 1,477,226 | 21,499 | 21.50 | 4,137,728 | 4,137,727.6 | 4,137,728 | +| Storage Access Cold (Absent Slots False, Sstore Same Value, Revert) | 999,015 | 1,477,226 | 17,853 | 17.85 | 4,168,932 | 4,168,932 | 4,167,956 | +| Storage Access Cold (Absent Slots False, Sstore Same Value) | 999,009 | 1,477,226 | 17,549 | 17.55 | 896,772 | 883,108 | 863,588 | +| Storage Access Cold (Absent Slots True, Ssload) | 999,749 | 1,477,226 | 15,549 | 15.55 | 4,187,468 | 4,187,468 | 4,187,468 | +| Storage Access Cold (Absent Slots True, Sstore New Value, Out Of Gas) | 1,000,000 | 1,477,226 | 13,938 | 13.94 | 3,009,764 | 3,009,764 | 3,008,788 | +| Storage Access Cold (Absent Slots True, Sstore New Value, Revert) | 995,213 | 1,477,226 | 12,786 | 12.79 | 755,260 | 746,998.9 | 727,932 | +| Storage Access Cold (Absent Slots True, Sstore New Value) | 995,207 | 1,477,226 | 13,312 | 13.31 | 2,861,428 | 2,860,452 | 2,857,524 | +| Storage Access Cold (Absent Slots True, Sstore Same Value, Out Of Gas) | 1,000,000 | 1,477,226 | 12,684 | 12.68 | 4,166,984 | 4,166,008 | 4,165,032 | +| Storage Access Cold (Absent Slots True, Sstore Same Value, Revert) | 995,081 | 1,477,226 | 16,404 | 16.40 | 4,090,892 | 4,090,892 | 4,088,940 | +| Storage Access Cold (Absent Slots True, Sstore Same Value) | 995,075 | 1,477,226 | 12,817 | 12.82 | 4,193,320 | 4,193,320 | 4,193,320 | +| Storage Access Warm (Sload) | 1,000,000 | 1,477,226 | 18,357 | 18.36 | 674,252 | 669,334.5 | 661,564 | +| Storage Access Warm (Sstore New Value) | 1,000,000 | 1,477,226 | 31,071 | 31.07 | 3,868,484 | 3,868,484 | 3,868,484 | +| Storage Access Warm (Sstore Same Value) | 1,000,000 | 1,477,226 | 25,818 | 25.82 | 3,606,012 | 3,603,371.1 | 3,601,132 | + +## Summary Statistics + +- **Total Tests:** 508 +- **Successful Tests:** 508 +- **Failed Tests:** 0 + +### Proving Time (ms) +- **Average:** 107,193.2 +- **Minimum:** 9,425 +- **Maximum:** 1,620,765 + +### Peak Memory Usage (MB) +- **Average:** 3,544,570.1 +- **Minimum:** 522,000 +- **Maximum:** 4,193,324 + +### Proof Size (bytes) +- **Average:** 1,477,226 +- **Minimum:** 1,477,226 +- **Maximum:** 1,477,226 diff --git a/www/docs/pages/benchmark-results/gas-categorized/1m/sp1-1M-4.md b/www/docs/pages/benchmark-results/gas-categorized/1m/sp1-1M-4.md new file mode 100644 index 00000000..7fe09579 --- /dev/null +++ b/www/docs/pages/benchmark-results/gas-categorized/1m/sp1-1M-4.md @@ -0,0 +1,543 @@ +# zkEVM Benchmark Results + +Generated on: 2025-12-13 19:54:08 + +## Folder: zkevm-metrics-sp1-1M-4 + +**zkVM:** sp1-cluster-v5.2.3 (4 GPUs) + +**Hardware Configuration:** CPU: AMD EPYC 7B13 64-Core Processor | RAM: 396 GiB | GPU: NVIDIA GeForce RTX 4090, NVIDIA GeForce RTX 4090, NVIDIA GeForce RTX 4090, NVIDIA GeForce RTX 4090 + +## Proving Metrics + +| Benchmark | Gas Used | Proof Size (bytes) | Proving Time (ms) | Proving Time (s) | Peak Memory (MB) | Avg Memory (MB) | Initial Memory (MB) | +|---|---|---|---|---|---|---|---| +| Block Full Access List And Data | 999,980 | 1,477,226 | 7,091 | 7.09 | 1,631,812 | 1,628,493.6 | 1,619,124 | +| Block Full Data (Non Zero Byte) | 1,000,000 | 1,477,226 | 5,574 | 5.57 | 9,325,432 | 9,325,432 | 9,302,008 | +| Block Full Data (Zero Byte) | 1,000,000 | 1,477,226 | 7,089 | 7.09 | 3,720,404 | 3,719,428 | 3,710,644 | +| Block Full Of Ether Transfers (A To A) | 987,000 | 1,477,226 | 8,074 | 8.07 | 3,142,636 | 3,139,545.3 | 3,131,900 | +| Block Full Of Ether Transfers (A To B) | 987,000 | 1,477,226 | 8,587 | 8.59 | 7,168,552 | 7,166,600 | 7,163,672 | +| Block Full Of Ether Transfers (A To Diff Acc) | 987,000 | 1,477,226 | 8,588 | 8.59 | 9,171,232 | 9,168,443.4 | 9,161,472 | +| Block Full Of Ether Transfers (Diff Acc To B) | 987,000 | 1,477,226 | 8,573 | 8.57 | 3,297,796 | 3,294,868 | 3,281,204 | +| Block Full Of Ether Transfers (Diff Acc To Diff Acc) | 987,000 | 1,477,226 | 9,097 | 9.10 | 4,922,812 | 4,918,908 | 4,912,076 | +| Bytecode Single Opcode (Callcode) | 1,000,000 | 1,477,226 | 32,370 | 32.37 | 2,662,448 | 2,651,502.9 | 2,638,048 | +| Bytecode Single Opcode (Call) | 1,000,000 | 1,477,226 | 32,311 | 32.31 | 1,316,916 | 1,287,209 | 1,229,076 | +| Bytecode Single Opcode (Delegatecall) | 1,000,000 | 1,477,226 | 32,346 | 32.35 | 6,667,876 | 6,657,811 | 6,645,428 | +| Bytecode Single Opcode (Extcodecopy) | 1,000,000 | 1,477,226 | 31,332 | 31.33 | 9,573,484 | 9,571,922.4 | 9,570,556 | +| Bytecode Single Opcode (Extcodehash) | 1,000,000 | 1,477,226 | 31,336 | 31.34 | 1,514,700 | 1,502,837.8 | 1,472,732 | +| Bytecode Single Opcode (Extcodesize) | 1,000,000 | 1,477,226 | 32,880 | 32.88 | 8,125,968 | 8,120,762.7 | 8,119,136 | +| Bytecode Single Opcode (Staticcall) | 1,000,000 | 1,477,226 | 31,855 | 31.86 | 10,774,868 | 10,753,473.4 | 10,736,592 | +| Create (0Bytes, Create2) | 1,000,000 | 1,477,226 | 6,573 | 6.57 | 1,399,876 | 1,390,952.6 | 1,369,620 | +| Create (0Bytes, Create) | 1,000,000 | 1,477,226 | 6,041 | 6.04 | 804,756 | 794,562.2 | 776,452 | +| Create (0Bytes, Create2) | 1,000,000 | 1,477,226 | 6,073 | 6.07 | 9,815,780 | 9,815,780 | 9,812,852 | +| Create (0Bytes, Create) | 1,000,000 | 1,477,226 | 6,562 | 6.56 | 6,075,448 | 6,075,448 | 6,074,472 | +| Create (0.25X Max Code, Zero Data, Create2) | 1,000,000 | 1,477,226 | 6,055 | 6.05 | 1,195,148 | 1,176,278.7 | 1,150,252 | +| Create (0.25X Max Code, Zero Data, Create) | 1,000,000 | 1,477,226 | 6,046 | 6.05 | 7,781,456 | 7,781,456 | 7,777,552 | +| Create (0.25X Max Code, Create2) | 1,000,000 | 1,477,226 | 6,049 | 6.05 | 11,476,916 | 11,476,916 | 11,452,404 | +| Create (0.25X Max Code, Create) | 1,000,000 | 1,477,226 | 6,569 | 6.57 | 1,969,508 | 1,964,628 | 1,956,820 | +| Create (0.50X Max Code Size With Non, Zero Data, Create2) | 1,000,000 | 1,477,226 | 6,550 | 6.55 | 7,980,548 | 7,977,620 | 7,975,668 | +| Create (0.50X Max Code Size With Non, Zero Data, Create) | 1,000,000 | 1,477,226 | 6,074 | 6.07 | 9,186,844 | 9,181,964 | 9,178,060 | +| Create (0.50X Max Code Size With Zero Data, Create2) | 1,000,000 | 1,477,226 | 6,067 | 6.07 | 3,335,860 | 3,335,469.6 | 3,333,908 | +| Create (0.50X Max Code Size With Zero Data, Create) | 1,000,000 | 1,477,226 | 5,556 | 5.56 | 2,499,812 | 2,497,616 | 2,487,124 | +| Create (0.75X Max Code Size With Non, Zero Data, Create2) | 1,000,000 | 1,477,226 | 6,549 | 6.55 | 2,415,136 | 2,403,912 | 2,382,928 | +| Create (0.75X Max Code Size With Non, Zero Data, Create) | 1,000,000 | 1,477,226 | 6,094 | 6.09 | 5,976,872 | 5,976,872 | 5,972,968 | +| Create (0.75X Max Code Size With Zero Data, Create2) | 1,000,000 | 1,477,226 | 6,055 | 6.05 | 2,247,036 | 2,247,036 | 2,237,276 | +| Create (0.75X Max Code Size With Zero Data, Create) | 1,000,000 | 1,477,226 | 6,572 | 6.57 | 1,705,012 | 1,695,252 | 1,683,540 | +| Create (Max Code, Zero Data, Create2) | 1,000,000 | 1,477,226 | 6,561 | 6.56 | 8,704,104 | 8,704,104 | 8,681,656 | +| Create (Max Code, Zero Data, Create) | 1,000,000 | 1,477,226 | 6,571 | 6.57 | 2,286,076 | 2,276,873.7 | 2,266,556 | +| Create (Max Code, Create2) | 1,000,000 | 1,477,226 | 7,059 | 7.06 | 7,815,616 | 7,815,616 | 7,794,144 | +| Create (Max Code, Create) | 1,000,000 | 1,477,226 | 6,103 | 6.10 | 6,941,152 | 6,940,176 | 6,937,248 | +| Creates Collisions (Create2) | 1,000,000 | 1,477,226 | 6,068 | 6.07 | 7,757,064 | 7,756,088 | 7,753,160 | +| Creates Collisions (Create) | 1,000,000 | 1,477,226 | 6,571 | 6.57 | 7,960,052 | 7,958,295.2 | 7,957,124 | +| Initcode Jumpdest Analysis (00) | 1,000,000 | 1,477,226 | 8,599 | 8.60 | 4,562,668 | 4,559,008 | 4,549,004 | +| Initcode Jumpdest Analysis (5B) | 1,000,000 | 1,477,226 | 10,614 | 10.61 | 9,867,896 | 9,867,896 | 9,847,264 | +| Initcode Jumpdest Analysis (605B5B) | 1,000,000 | 1,477,226 | 8,072 | 8.07 | 1,366,924 | 1,343,825.3 | 1,310,316 | +| Initcode Jumpdest Analysis (605B) | 1,000,000 | 1,477,226 | 7,076 | 7.08 | 6,678,612 | 6,678,449.3 | 6,675,684 | +| Initcode Jumpdest Analysis (615B5B5B) | 1,000,000 | 1,477,226 | 8,073 | 8.07 | 1,310,316 | 1,286,111.2 | 1,255,660 | +| Initcode Jumpdest Analysis (615B5B) | 1,000,000 | 1,477,226 | 7,592 | 7.59 | 8,589,024 | 8,586,258.7 | 8,579,264 | +| Amortized Bn128 Pairings | 1,000,000 | 1,477,226 | 26,292 | 26.29 | 3,237,304 | 3,234,766.4 | 3,228,520 | +| Empty Block | 0 | 1,477,226 | 5,059 | 5.06 | 1,787,344 | 1,787,344 | 1,779,536 | +| Binop Simple (Add) | 1,000,000 | 1,477,226 | 9,098 | 9.10 | 7,690,700 | 7,688,748 | 7,683,868 | +| Binop Simple (And) | 1,000,000 | 1,477,226 | 9,623 | 9.62 | 4,823,260 | 4,822,674.4 | 4,820,332 | +| Binop Simple (Byte) | 1,000,000 | 1,477,226 | 9,602 | 9.60 | 10,803,684 | 10,798,778.7 | 10,794,284 | +| Binop Simple (Div, 0) | 1,000,000 | 1,477,226 | 26,755 | 26.75 | 8,163,056 | 8,158,284.4 | 8,143,536 | +| Binop Simple (Div, 1) | 1,000,000 | 1,477,226 | 24,758 | 24.76 | 6,139,864 | 6,131,004.9 | 6,117,416 | +| Binop Simple (Eq) | 1,000,000 | 1,477,226 | 15,660 | 15.66 | 1,164,660 | 1,143,853.5 | 1,115,860 | +| Binop Simple (Exp) | 1,000,000 | 1,477,226 | 18,732 | 18.73 | 1,998,788 | 1,990,687.2 | 1,970,484 | +| Binop Simple (Gt) | 1,000,000 | 1,477,226 | 10,098 | 10.10 | 6,859,172 | 6,857,708 | 6,850,388 | +| Binop Simple (Lt) | 1,000,000 | 1,477,226 | 10,086 | 10.09 | 10,168,124 | 10,165,846.7 | 10,153,484 | +| Binop Simple (Mod) | 1,000,000 | 1,477,226 | 14,180 | 14.18 | 6,883,572 | 6,879,424 | 6,870,884 | +| Binop Simple (Mul) | 1,000,000 | 1,477,226 | 12,644 | 12.64 | 5,508,404 | 5,500,758.7 | 5,493,764 | +| Binop Simple (Or) | 1,000,000 | 1,477,226 | 10,099 | 10.10 | 10,781,696 | 10,780,134.4 | 10,776,816 | +| Binop Simple (Sar) | 1,000,000 | 1,477,226 | 14,642 | 14.64 | 4,142,024 | 4,142,024 | 4,129,336 | +| Binop Simple (Sdiv, 0) | 1,000,000 | 1,477,226 | 29,837 | 29.84 | 8,175,740 | 8,175,740 | 8,165,980 | +| Binop Simple (Sdiv, 1) | 1,000,000 | 1,477,226 | 31,771 | 31.77 | 2,263,856 | 2,233,051 | 2,203,344 | +| Binop Simple (Sgt) | 1,000,000 | 1,477,226 | 17,211 | 17.21 | 11,247,636 | 11,232,159.4 | 11,213,476 | +| Binop Simple (Shl) | 1,000,000 | 1,477,226 | 12,111 | 12.11 | 10,053,676 | 10,050,887.4 | 10,047,820 | +| Binop Simple (Shr) | 1,000,000 | 1,477,226 | 12,140 | 12.14 | 8,759,860 | 8,759,860 | 8,755,956 | +| Binop Simple (Signextend) | 1,000,000 | 1,477,226 | 11,649 | 11.65 | 8,165,980 | 8,165,654.7 | 8,164,028 | +| Binop Simple (Slt) | 1,000,000 | 1,477,226 | 10,617 | 10.62 | 5,695,792 | 5,695,304 | 5,673,344 | +| Binop Simple (Smod) | 1,000,000 | 1,477,226 | 15,664 | 15.66 | 11,070,764 | 11,070,764 | 11,054,424 | +| Binop Simple (Sub) | 1,000,000 | 1,477,226 | 9,613 | 9.61 | 9,190,748 | 9,189,576.8 | 9,185,868 | +| Binop Simple (Xor) | 1,000,000 | 1,477,226 | 10,126 | 10.13 | 6,241,364 | 6,233,360.8 | 6,222,820 | +| Blobhash (No Blobs) | 1,000,000 | 1,477,226 | 8,582 | 8.58 | 1,537,144 | 1,535,470.9 | 1,526,408 | +| Blobhash (One Blob And Accessed) | 1,000,000 | 1,477,226 | 11,105 | 11.11 | 1,711,448 | 1,687,048 | 1,672,408 | +| Blobhash (One Blob But Access Non, Existent Index) | 1,000,000 | 1,477,226 | 8,594 | 8.59 | 10,055,628 | 10,055,628 | 10,053,676 | +| Blobhash (Six Blobs, Access Latest) | 1,000,000 | 1,477,226 | 11,113 | 11.11 | 1,354,004 | 1,335,622.7 | 1,316,916 | +| Calldataload (Empty) | 1,000,000 | 1,477,226 | 13,662 | 13.66 | 6,256,004 | 6,248,639.6 | 6,241,364 | +| Calldataload (One, Loop) | 1,000,000 | 1,477,226 | 16,157 | 16.16 | 7,882,952 | 7,881,978 | 7,879,052 | +| Calldataload (Zero, Loop) | 1,000,000 | 1,477,226 | 16,190 | 16.19 | 2,671,232 | 2,667,328 | 2,662,448 | +| Calldatasize (Calldata Length 0) | 1,000,000 | 1,477,226 | 9,600 | 9.60 | 11,073,692 | 11,073,692 | 11,071,740 | +| Calldatasize (Calldata Length 10000) | 1,000,000 | 1,477,226 | 10,099 | 10.10 | 11,054,424 | 11,051,984 | 11,044,664 | +| Calldatasize (Calldata Length 1000) | 1,000,000 | 1,477,226 | 10,626 | 10.63 | 3,184,600 | 3,179,998.9 | 3,175,816 | +| Callvalue (From Origin False, Non Zero Value False) | 1,000,000 | 1,477,226 | 11,110 | 11.11 | 7,725,832 | 7,725,832 | 7,720,952 | +| Callvalue (From Origin False, Non Zero Value True) | 1,000,000 | 1,477,226 | 9,599 | 9.60 | 11,005,204 | 11,001,950.7 | 10,990,068 | +| Callvalue (From Origin True, Non Zero Value False) | 1,000,000 | 1,477,226 | 10,623 | 10.62 | 9,610,344 | 9,604,824 | 9,598,328 | +| Callvalue (From Origin True, Non Zero Value True) | 1,000,000 | 1,477,226 | 10,600 | 10.60 | 9,281,724 | 9,279,772 | 9,272,940 | +| Dup (Dup10) | 1,000,000 | 1,477,226 | 8,605 | 8.61 | 6,896,256 | 6,894,548 | 6,890,400 | +| Dup (Dup11) | 1,000,000 | 1,477,226 | 9,131 | 9.13 | 3,448,100 | 3,448,100 | 3,435,412 | +| Dup (Dup12) | 1,000,000 | 1,477,226 | 9,088 | 9.09 | 8,599,760 | 8,596,466 | 8,589,024 | +| Dup (Dup13) | 1,000,000 | 1,477,226 | 9,096 | 9.10 | 3,318,292 | 3,313,900 | 3,301,700 | +| Dup (Dup14) | 1,000,000 | 1,477,226 | 8,584 | 8.58 | 7,770,720 | 7,770,720 | 7,764,864 | +| Dup (Dup15) | 1,000,000 | 1,477,226 | 9,077 | 9.08 | 1,225,172 | 1,214,968.4 | 1,204,676 | +| Dup (Dup16) | 1,000,000 | 1,477,226 | 9,111 | 9.11 | 9,162,452 | 9,162,452 | 9,161,476 | +| Dup (Dup1) | 1,000,000 | 1,477,226 | 9,095 | 9.10 | 6,935,296 | 6,925,210.7 | 6,910,896 | +| Dup (Dup2) | 1,000,000 | 1,477,226 | 9,102 | 9.10 | 7,903,448 | 7,903,448 | 7,897,592 | +| Dup (Dup3) | 1,000,000 | 1,477,226 | 9,095 | 9.10 | 9,833,600 | 9,824,289.7 | 9,815,780 | +| Dup (Dup4) | 1,000,000 | 1,477,226 | 9,078 | 9.08 | 3,217,784 | 3,217,784 | 3,196,312 | +| Dup (Dup5) | 1,000,000 | 1,477,226 | 9,597 | 9.60 | 5,516,212 | 5,514,382 | 5,511,332 | +| Dup (Dup6) | 1,000,000 | 1,477,226 | 9,086 | 9.09 | 1,807,840 | 1,800,868.6 | 1,786,368 | +| Dup (Dup7) | 1,000,000 | 1,477,226 | 9,099 | 9.10 | 1,526,408 | 1,523,968 | 1,513,720 | +| Dup (Dup8) | 1,000,000 | 1,477,226 | 9,127 | 9.13 | 6,869,908 | 6,868,932 | 6,867,956 | +| Dup (Dup9) | 1,000,000 | 1,477,226 | 8,576 | 8.58 | 1,443,796 | 1,422,690 | 1,401,828 | +| Jumpdests | 1,000,000 | 1,477,226 | 10,093 | 10.09 | 7,847,824 | 7,847,824 | 7,840,016 | +| Jumpi Fallthrough | 1,000,000 | 1,477,226 | 11,595 | 11.60 | 2,292,160 | 2,279,838 | 2,264,832 | +| Jumpis | 1,000,000 | 1,477,226 | 9,105 | 9.11 | 4,526,556 | 4,526,556 | 4,510,940 | +| Jumps | 1,000,000 | 1,477,226 | 8,113 | 8.11 | 10,874,656 | 10,872,704 | 10,866,848 | +| Keccak | 1,000,000 | 1,477,226 | 14,159 | 14.16 | 10,259,652 | 10,256,724 | 10,258,568 | +| Memory Access (Small Mem, Uninit Offset, Off 0, Mload) | 1,000,000 | 1,477,226 | 10,127 | 10.13 | 1,110,636 | 1,103,128.3 | 1,091,116 | +| Memory Access (Small Mem, Uninit Offset, Off 0, Mstore8) | 1,000,000 | 1,477,226 | 10,081 | 10.08 | 2,458,080 | 2,448,320 | 2,426,848 | +| Memory Access (Small Mem, Uninit Offset, Off 0, Mstore) | 1,000,000 | 1,477,226 | 11,090 | 11.09 | 1,481,116 | 1,446,834 | 1,404,012 | +| Memory Access (Small Mem, Uninit Offset, Off 1, Mload) | 1,000,000 | 1,477,226 | 10,626 | 10.63 | 4,497,276 | 4,493,372 | 4,489,468 | +| Memory Access (Small Mem, Uninit Offset, Off 1, Mstore8) | 1,000,000 | 1,477,226 | 10,100 | 10.10 | 10,486,940 | 10,477,573.3 | 10,465,672 | +| Memory Access (Small Mem, Uninit Offset, Off 1, Mstore) | 1,000,000 | 1,477,226 | 11,120 | 11.12 | 7,684,848 | 7,684,848 | 7,679,968 | +| Memory Access (Small Mem, Uninit Offset, Off 31, Mload) | 1,000,000 | 1,477,226 | 10,080 | 10.08 | 6,753,764 | 6,753,764 | 6,749,860 | +| Memory Access (Small Mem, Uninit Offset, Off 31, Mstore8) | 1,000,000 | 1,477,226 | 9,596 | 9.60 | 670,812 | 644,616.2 | 595,660 | +| Memory Access (Small Mem, Uninit Offset, Off 31, Mstore) | 1,000,000 | 1,477,226 | 11,121 | 11.12 | 2,096,372 | 2,087,978.4 | 2,069,044 | +| Memory Access (Small Mem, Init Offset, Off 0, Mload) | 1,000,000 | 1,477,226 | 10,605 | 10.61 | 1,761,968 | 1,753,476.8 | 1,743,424 | +| Memory Access (Small Mem, Init Offset, Off 0, Mstore8) | 1,000,000 | 1,477,226 | 10,638 | 10.64 | 6,397,524 | 6,390,854.7 | 6,378,980 | +| Memory Access (Small Mem, Init Offset, Off 0, Mstore) | 1,000,000 | 1,477,226 | 11,626 | 11.63 | 9,579,304 | 9,574,283.2 | 9,566,616 | +| Memory Access (Small Mem, Init Offset, Off 1, Mload) | 1,000,000 | 1,477,226 | 9,619 | 9.62 | 8,232,344 | 8,230,977.6 | 8,221,608 | +| Memory Access (Small Mem, Init Offset, Off 1, Mstore8) | 1,000,000 | 1,477,226 | 9,585 | 9.59 | 4,209,368 | 4,208,554.7 | 4,206,440 | +| Memory Access (Small Mem, Init Offset, Off 1, Mstore) | 1,000,000 | 1,477,226 | 10,652 | 10.65 | 5,642,116 | 5,639,188 | 5,633,332 | +| Memory Access (Small Mem, Init Offset, Off 31, Mload) | 1,000,000 | 1,477,226 | 10,102 | 10.10 | 10,342,196 | 10,341,096 | 10,338,044 | +| Memory Access (Small Mem, Init Offset, Off 31, Mstore8) | 1,000,000 | 1,477,226 | 9,616 | 9.62 | 10,852,208 | 10,852,208 | 10,840,496 | +| Memory Access (Small Mem, Init Offset, Off 31, Mstore) | 1,000,000 | 1,477,226 | 11,603 | 11.60 | 7,727,784 | 7,727,003.2 | 7,725,832 | +| Memory Access (Big Mem, Uninit Offset, Off 0, Mload) | 1,000,000 | 1,477,226 | 10,120 | 10.12 | 8,579,264 | 8,572,236.8 | 8,558,768 | +| Memory Access (Big Mem, Uninit Offset, Off 0, Mstore8) | 1,000,000 | 1,477,226 | 10,092 | 10.09 | 2,616,192 | 2,616,192 | 2,558,608 | +| Memory Access (Big Mem, Uninit Offset, Off 0, Mstore) | 1,000,000 | 1,477,226 | 11,141 | 11.14 | 1,055,004 | 1,050,991.6 | 1,042,316 | +| Memory Access (Big Mem, Uninit Offset, Off 1, Mload) | 1,000,000 | 1,477,226 | 10,621 | 10.62 | 4,653,436 | 4,648,556 | 4,625,132 | +| Memory Access (Big Mem, Uninit Offset, Off 1, Mstore8) | 1,000,000 | 1,477,226 | 9,599 | 9.60 | 7,785,360 | 7,785,360 | 7,783,408 | +| Memory Access (Big Mem, Uninit Offset, Off 1, Mstore) | 1,000,000 | 1,477,226 | 11,621 | 11.62 | 1,683,540 | 1,673,780 | 1,662,068 | +| Memory Access (Big Mem, Uninit Offset, Off 31, Mload) | 1,000,000 | 1,477,226 | 10,587 | 10.59 | 2,234,348 | 2,228,492 | 2,210,924 | +| Memory Access (Big Mem, Uninit Offset, Off 31, Mstore8) | 1,000,000 | 1,477,226 | 10,605 | 10.61 | 11,163,920 | 11,156,600 | 11,143,424 | +| Memory Access (Big Mem, Uninit Offset, Off 31, Mstore) | 1,000,000 | 1,477,226 | 11,124 | 11.12 | 4,362,596 | 4,353,812 | 4,346,980 | +| Memory Access (Big Mem, Init Offset, Off 0, Mload) | 1,000,000 | 1,477,226 | 10,084 | 10.08 | 1,076,080 | 1,053,632 | 1,020,448 | +| Memory Access (Big Mem, Init Offset, Off 0, Mstore8) | 1,000,000 | 1,477,226 | 9,610 | 9.61 | 6,910,896 | 6,910,896 | 6,896,256 | +| Memory Access (Big Mem, Init Offset, Off 0, Mstore) | 1,000,000 | 1,477,226 | 11,115 | 11.12 | 11,175,632 | 11,169,898 | 11,163,920 | +| Memory Access (Big Mem, Init Offset, Off 1, Mload) | 1,000,000 | 1,477,226 | 10,593 | 10.59 | 5,722,144 | 5,721,046 | 5,716,288 | +| Memory Access (Big Mem, Init Offset, Off 1, Mstore8) | 1,000,000 | 1,477,226 | 10,087 | 10.09 | 11,290,296 | 11,285,741.3 | 11,280,536 | +| Memory Access (Big Mem, Init Offset, Off 1, Mstore) | 1,000,000 | 1,477,226 | 11,622 | 11.62 | 7,409,620 | 7,405,994.9 | 7,397,908 | +| Memory Access (Big Mem, Init Offset, Off 31, Mload) | 1,000,000 | 1,477,226 | 9,617 | 9.62 | 3,867,776 | 3,867,385.6 | 3,861,920 | +| Memory Access (Big Mem, Init Offset, Off 31, Mstore8) | 1,000,000 | 1,477,226 | 9,594 | 9.59 | 4,263,048 | 4,261,876.8 | 4,255,240 | +| Memory Access (Big Mem, Init Offset, Off 31, Mstore) | 1,000,000 | 1,477,226 | 11,101 | 11.10 | 1,042,316 | 1,039,079.8 | 1,031,580 | +| Mod (Op Mod, Mod Bits 127) | 1,000,000 | 1,477,226 | 25,266 | 25.27 | 8,516,800 | 8,515,433.6 | 8,508,992 | +| Mod (Op Mod, Mod Bits 191) | 1,000,000 | 1,477,226 | 30,835 | 30.84 | 9,815,440 | 9,799,513.6 | 9,781,072 | +| Mod (Op Mod, Mod Bits 255) | 1,000,000 | 1,477,226 | 25,262 | 25.26 | 8,243,080 | 8,240,152 | 8,235,272 | +| Mod (Op Mod, Mod Bits 63) | 1,000,000 | 1,477,226 | 18,713 | 18.71 | 1,069,644 | 1,063,788 | 1,055,004 | +| Mod (Op Smod, Mod Bits 127) | 1,000,000 | 1,477,226 | 25,298 | 25.30 | 7,872,220 | 7,869,161.9 | 7,864,412 | +| Mod (Op Smod, Mod Bits 191) | 1,000,000 | 1,477,226 | 34,805 | 34.80 | 1,808,068 | 1,766,983.0 | 1,712,420 | +| Mod (Op Smod, Mod Bits 255) | 1,000,000 | 1,477,226 | 25,763 | 25.76 | 1,163,340 | 1,140,794.4 | 1,111,612 | +| Mod (Op Smod, Mod Bits 63) | 1,000,000 | 1,477,226 | 20,730 | 20.73 | 10,355,548 | 10,349,647 | 10,339,932 | +| Modarith (Op Addmod, Mod Bits 127) | 1,000,000 | 1,477,226 | 20,756 | 20.76 | 5,576,724 | 5,564,036 | 5,554,276 | +| Modarith (Op Addmod, Mod Bits 191) | 1,000,000 | 1,477,226 | 25,801 | 25.80 | 5,850,000 | 5,843,168 | 5,835,360 | +| Modarith (Op Addmod, Mod Bits 255) | 1,000,000 | 1,477,226 | 22,239 | 22.24 | 2,459,804 | 2,439,893.6 | 2,430,524 | +| Modarith (Op Addmod, Mod Bits 63) | 1,000,000 | 1,477,226 | 16,666 | 16.67 | 5,866,588 | 5,858,780 | 5,854,876 | +| Modarith (Op Mulmod, Mod Bits 127) | 1,000,000 | 1,477,226 | 33,830 | 33.83 | 1,581,408 | 1,531,377.4 | 1,470,144 | +| Modarith (Op Mulmod, Mod Bits 191) | 1,000,000 | 1,477,226 | 43,996 | 44.00 | 6,117,416 | 6,102,950.3 | 6,076,424 | +| Modarith (Op Mulmod, Mod Bits 255) | 1,000,000 | 1,477,226 | 44,861 | 44.86 | 1,893,956 | 1,853,196.4 | 1,811,972 | +| Modarith (Op Mulmod, Mod Bits 63) | 1,000,000 | 1,477,226 | 27,248 | 27.25 | 2,428,572 | 2,416,534.7 | 2,391,484 | +| Modexp (Mod 1045 Gas Base Heavy) | 1,000,000 | 1,477,226 | 430,175 | 430.18 | 9,153,668 | 9,095,703.5 | 9,014,464 | +| Modexp (Mod 1360 Gas Balanced) | 1,000,000 | 1,477,226 | 105,137 | 105.14 | 4,051,256 | 4,024,009.3 | 3,998,552 | +| Modexp (Mod 400 Gas Exp Heavy) | 1,000,000 | 1,477,226 | 125,398 | 125.40 | 8,208,924 | 8,191,964 | 8,179,644 | +| Modexp (Mod 408 Gas Balanced) | 1,000,000 | 1,477,226 | 89,904 | 89.90 | 6,867,956 | 6,865,372.5 | 6,860,148 | +| Modexp (Mod 408 Gas Base Heavy) | 1,000,000 | 1,477,226 | 378,385 | 378.38 | 10,692,776 | 10,622,558.0 | 10,492,796 | +| Modexp (Mod 600 As Balanced) | 1,000,000 | 1,477,226 | 93,569 | 93.57 | 3,710,644 | 3,678,219.1 | 3,631,588 | +| Modexp (Mod 600 Gas Exp Heavy) | 1,000,000 | 1,477,226 | 134,971 | 134.97 | 1,321,452 | 1,254,435.8 | 1,163,340 | +| Modexp (Mod 616 Gas Base Heavy) | 1,000,000 | 1,477,226 | 402,685 | 402.69 | 7,586,276 | 7,546,863.5 | 7,498,436 | +| Modexp (Mod 677 Gas Base Heavy) | 1,000,000 | 1,477,226 | 98,558 | 98.56 | 4,347,960 | 4,322,712.4 | 4,264,024 | +| Modexp (Mod 765 Gas Exp Heavy) | 1,000,000 | 1,477,226 | 110,075 | 110.08 | 10,256,616 | 10,244,108.9 | 10,189,592 | +| Modexp (Mod 767 Gas Balanced) | 1,000,000 | 1,477,226 | 87,966 | 87.97 | 11,438,972 | 11,392,466.6 | 11,316,424 | +| Modexp (Mod 800 Gas Base Heavy) | 1,000,000 | 1,477,226 | 421,604 | 421.60 | 7,680,948 | 7,665,999.8 | 7,624,340 | +| Modexp (Mod 800 Gas Exp Heavy) | 1,000,000 | 1,477,226 | 138,517 | 138.52 | 9,466,276 | 9,430,364.6 | 9,369,664 | +| Modexp (Mod 852 Gas Exp Heavy) | 1,000,000 | 1,477,226 | 139,010 | 139.01 | 10,337,220 | 10,294,630.9 | 10,259,652 | +| Modexp (Mod 867 Gas Base Heavy) | 1,000,000 | 1,477,226 | 425,272 | 425.27 | 7,313,000 | 7,263,986.8 | 7,221,256 | +| Modexp (Mod 996 Gas Balanced) | 1,000,000 | 1,477,226 | 90,972 | 90.97 | 7,347,160 | 7,337,562.7 | 7,317,880 | +| Modexp (Mod Even 1024B Exp 1024) | 1,000,000 | 1,477,226 | 6,044 | 6.04 | 8,647,580 | 8,646,929.3 | 8,646,604 | +| Modexp (Mod Even 128B Exp 1024) | 1,000,000 | 1,477,226 | 89,542 | 89.54 | 6,378,004 | 6,349,611.3 | 6,287,236 | +| Modexp (Mod Even 16B Exp 320) | 1,000,000 | 1,477,226 | 132,518 | 132.52 | 5,319,064 | 5,302,237.8 | 5,277,096 | +| Modexp (Mod Even 24B Exp 168) | 1,000,000 | 1,477,226 | 109,219 | 109.22 | 7,721,928 | 7,713,643.3 | 7,700,456 | +| Modexp (Mod Even 256B Exp 1024) | 1,000,000 | 1,477,226 | 64,144 | 64.14 | 8,506,596 | 8,495,860 | 8,463,652 | +| Modexp (Mod Even 32B Exp 256) | 1,000,000 | 1,477,226 | 106,015 | 106.02 | 1,734,640 | 1,671,335.1 | 1,589,216 | +| Modexp (Mod Even 32B Exp 40) | 1,000,000 | 1,477,226 | 86,423 | 86.42 | 11,144,120 | 11,127,109.7 | 11,072,716 | +| Modexp (Mod Even 32B Exp 96) | 1,000,000 | 1,477,226 | 98,561 | 98.56 | 8,459,748 | 8,419,691.3 | 8,384,596 | +| Modexp (Mod Even 512B Exp 1024) | 1,000,000 | 1,477,226 | 6,063 | 6.06 | 1,469,168 | 1,462,336 | 1,445,744 | +| Modexp (Mod Even 64B Exp 512) | 1,000,000 | 1,477,226 | 99,438 | 99.44 | 2,390,508 | 2,359,108.7 | 2,290,956 | +| Modexp (Mod Even 8B Exp 896) | 1,000,000 | 1,477,226 | 225,527 | 225.53 | 1,472,732 | 1,424,599.3 | 1,345,852 | +| Modexp (Mod Exp 208 Gas Balanced) | 1,000,000 | 1,477,226 | 80,875 | 80.88 | 7,012,396 | 7,002,351.3 | 6,966,524 | +| Modexp (Mod Exp 215 Gas Exp Heavy) | 1,000,000 | 1,477,226 | 199,115 | 199.12 | 8,037,156 | 8,016,263.4 | 7,981,524 | +| Modexp (Mod Exp 298 Gas Exp Heavy) | 1,000,000 | 1,477,226 | 219,240 | 219.24 | 6,843,556 | 6,833,708.3 | 6,808,420 | +| Modexp (Mod Min As Balanced) | 1,000,000 | 1,477,226 | 85,838 | 85.84 | 10,024,396 | 10,004,157.1 | 9,944,760 | +| Modexp (Mod Min As Base Heavy) | 1,000,000 | 1,477,226 | 303,918 | 303.92 | 5,177,548 | 5,090,367.7 | 4,973,564 | +| Modexp (Mod Min As Exp Heavy) | 1,000,000 | 1,477,226 | 197,677 | 197.68 | 7,617,508 | 7,606,886.8 | 7,594,084 | +| Modexp (Mod Odd 1024B Exp 1024) | 1,000,000 | 1,477,226 | 6,548 | 6.55 | 1,141,468 | 1,117,556 | 1,082,908 | +| Modexp (Mod Odd 128B Exp 1024) | 1,000,000 | 1,477,226 | 90,465 | 90.47 | 2,267,172 | 2,202,445.5 | 2,106,132 | +| Modexp (Mod Odd 256B Exp 1024) | 1,000,000 | 1,477,226 | 66,308 | 66.31 | 5,964,188 | 5,931,248 | 5,885,132 | +| Modexp (Mod Odd 32B Exp 256) | 1,000,000 | 1,477,226 | 109,962 | 109.96 | 2,090,132 | 2,004,656.9 | 1,919,332 | +| Modexp (Mod Odd 32B Exp 96) | 1,000,000 | 1,477,226 | 95,614 | 95.61 | 8,115,232 | 8,095,078.9 | 8,063,504 | +| Modexp (Mod Odd 32B Exp Cover Windows) | 1,000,000 | 1,477,226 | 77,849 | 77.85 | 5,429,352 | 5,420,934 | 5,402,024 | +| Modexp (Mod Odd 512B Exp 1024) | 1,000,000 | 1,477,226 | 6,060 | 6.06 | 6,283,332 | 6,275,524 | 6,268,692 | +| Modexp (Mod Odd 64B Exp 512) | 1,000,000 | 1,477,226 | 99,080 | 99.08 | 1,955,844 | 1,877,151.2 | 1,748,932 | +| Modexp (Mod Pawel 2) | 1,000,000 | 1,477,226 | 127,385 | 127.39 | 6,073,496 | 6,027,670.5 | 5,976,872 | +| Modexp (Mod Pawel 3) | 1,000,000 | 1,477,226 | 104,741 | 104.74 | 7,217,352 | 7,207,411.3 | 7,189,048 | +| Modexp (Mod Pawel 4) | 1,000,000 | 1,477,226 | 95,059 | 95.06 | 4,820,332 | 4,778,508.6 | 4,757,868 | +| Modexp (Mod Vul Common 1152N1) | 1,000,000 | 1,477,226 | 58,640 | 58.64 | 5,467,416 | 5,447,843.2 | 5,430,328 | +| Modexp (Mod Vul Common 1349N1) | 1,000,000 | 1,477,226 | 82,371 | 82.37 | 10,720,104 | 10,702,278.8 | 10,692,776 | +| Modexp (Mod Vul Common 1360N1) | 1,000,000 | 1,477,226 | 91,572 | 91.57 | 6,642,500 | 6,623,413.8 | 6,601,508 | +| Modexp (Mod Vul Common 1360N2) | 1,000,000 | 1,477,226 | 83,894 | 83.89 | 3,860,944 | 3,829,686.3 | 3,794,576 | +| Modexp (Mod Vul Common 200N1) | 1,000,000 | 1,477,226 | 48,028 | 48.03 | 4,181,064 | 4,168,610.2 | 4,152,760 | +| Modexp (Mod Vul Common 200N2) | 1,000,000 | 1,477,226 | 60,098 | 60.10 | 2,721,008 | 2,697,920.6 | 2,674,160 | +| Modexp (Mod Vul Common 200N3) | 1,000,000 | 1,477,226 | 60,712 | 60.71 | 7,491,604 | 7,487,324.6 | 7,475,988 | +| Modexp (Mod Vul Example 1) | 1,000,000 | 1,477,226 | 104,021 | 104.02 | 1,116,840 | 1,015,745.9 | 829,896 | +| Modexp (Mod Vul Example 2) | 1,000,000 | 1,477,226 | 90,902 | 90.90 | 698,772 | 677,028.1 | 646,068 | +| Modexp (Mod Vul Guido 1 Even) | 1,000,000 | 1,477,226 | 75,308 | 75.31 | 10,142,432 | 10,093,830.9 | 10,056,604 | +| Modexp (Mod Vul Guido 2 Even) | 1,000,000 | 1,477,226 | 124,373 | 124.37 | 3,997,580 | 3,962,227.0 | 3,878,508 | +| Modexp (Mod Vul Guido 3 Even) | 1,000,000 | 1,477,226 | 216,354 | 216.35 | 6,801,588 | 6,781,874.6 | 6,755,716 | +| Modexp (Mod Vul Marius 1 Even) | 1,000,000 | 1,477,226 | 111,720 | 111.72 | 4,738,348 | 4,703,826.5 | 4,654,412 | +| Modexp (Mod Vul Nagydani 1 Pow 0X10001) | 1,000,000 | 1,477,226 | 75,778 | 75.78 | 4,882,796 | 4,857,853.8 | 4,833,020 | +| Modexp (Mod Vul Nagydani 1 Qube) | 1,000,000 | 1,477,226 | 57,120 | 57.12 | 11,045,404 | 11,026,726.2 | 11,005,204 | +| Modexp (Mod Vul Nagydani 1 Square) | 1,000,000 | 1,477,226 | 56,031 | 56.03 | 1,638,252 | 1,598,548.3 | 1,485,020 | +| Modexp (Mod Vul Nagydani 2 Pow 0X10001) | 1,000,000 | 1,477,226 | 77,856 | 77.86 | 8,838,916 | 8,815,723.2 | 8,775,476 | +| Modexp (Mod Vul Nagydani 2 Qube) | 1,000,000 | 1,477,226 | 167,745 | 167.75 | 2,884,976 | 2,852,647.6 | 2,793,232 | +| Modexp (Mod Vul Nagydani 2 Square) | 1,000,000 | 1,477,226 | 154,628 | 154.63 | 8,358,244 | 8,321,391.6 | 8,289,924 | +| Modexp (Mod Vul Nagydani 3 Pow 0X10001) | 1,000,000 | 1,477,226 | 77,838 | 77.84 | 5,400,072 | 5,379,332 | 5,339,560 | +| Modexp (Mod Vul Nagydani 3 Qube) | 1,000,000 | 1,477,226 | 410,362 | 410.36 | 3,123,116 | 3,031,166.1 | 2,930,844 | +| Modexp (Mod Vul Nagydani 3 Square) | 1,000,000 | 1,477,226 | 368,520 | 368.52 | 7,164,652 | 7,113,610.6 | 7,021,180 | +| Modexp (Mod Vul Nagydani 4 Pow 0X10001) | 1,000,000 | 1,477,226 | 75,841 | 75.84 | 7,951,272 | 7,935,784.4 | 7,911,256 | +| Modexp (Mod Vul Nagydani 4 Qube) | 1,000,000 | 1,477,226 | 487,291 | 487.29 | 6,597,604 | 6,517,176.7 | 6,397,524 | +| Modexp (Mod Vul Nagydani 4 Square) | 1,000,000 | 1,477,226 | 443,681 | 443.68 | 2,630,240 | 2,526,179.8 | 2,307,184 | +| Modexp (Mod Vul Nagydani 5 Pow 0X10001) | 1,000,000 | 1,477,226 | 69,248 | 69.25 | 7,828,304 | 7,825,213.3 | 7,816,592 | +| Modexp (Mod Vul Nagydani 5 Qube) | 1,000,000 | 1,477,226 | 479,318 | 479.32 | 1,032,560 | 958,247.6 | 738,784 | +| Modexp (Mod Vul Nagydani 5 Square) | 1,000,000 | 1,477,226 | 466,242 | 466.24 | 2,172,864 | 2,057,687.0 | 1,807,840 | +| Modexp (Mod Vul Pawel 1 Exp Heavy) | 1,000,000 | 1,477,226 | 209,280 | 209.28 | 5,277,100 | 5,234,168.7 | 5,179,500 | +| Modexp (Mod Vul Pawel 2 Exp Heavy) | 1,000,000 | 1,477,226 | 121,321 | 121.32 | 7,470,132 | 7,442,187.6 | 7,413,524 | +| Modexp (Mod Vul Pawel 3 Exp Heavy) | 1,000,000 | 1,477,226 | 99,700 | 99.70 | 3,630,612 | 3,580,478.9 | 3,510,564 | +| Modexp (Mod Vul Pawel 4 Exp Heavy) | 1,000,000 | 1,477,226 | 89,463 | 89.46 | 8,923,492 | 8,887,417.5 | 8,849,440 | +| Msize (Mem Size 0) | 1,000,000 | 1,477,226 | 10,600 | 10.60 | 7,832,208 | 7,831,720 | 7,828,304 | +| Msize (Mem Size 1000000) | 1,000,000 | 1,477,226 | 10,656 | 10.66 | 10,911,376 | 10,911,376 | 10,894,176 | +| Msize (Mem Size 100000) | 1,000,000 | 1,477,226 | 11,100 | 11.10 | 3,731,140 | 3,728,537.3 | 3,722,356 | +| Msize (Mem Size 1000) | 1,000,000 | 1,477,226 | 10,619 | 10.62 | 7,897,592 | 7,896,372 | 7,893,688 | +| Msize (Mem Size 1) | 1,000,000 | 1,477,226 | 10,626 | 10.63 | 2,183,600 | 2,178,162.3 | 2,173,840 | +| Precompile Fixed Cost (Blake2F) | 1,000,000 | 1,477,226 | 83,729 | 83.73 | 773,524 | 701,029.3 | 500,244 | +| Precompile Fixed Cost (Bls12 Fp To G1) | 1,000,000 | 1,477,226 | 157,198 | 157.20 | 9,566,616 | 9,508,603.8 | 9,470,180 | +| Precompile Fixed Cost (Bls12 Fp To G2) | 1,000,000 | 1,477,226 | 113,202 | 113.20 | 9,763,504 | 9,716,255.5 | 9,621,080 | +| Precompile Fixed Cost (Bls12 G1Add) | 1,000,000 | 1,477,226 | 91,475 | 91.47 | 4,123,480 | 4,092,468.4 | 4,052,232 | +| Precompile Fixed Cost (Bls12 G1Msm) | 1,000,000 | 1,477,226 | 68,381 | 68.38 | 5,486,936 | 5,475,084.6 | 5,467,416 | +| Precompile Fixed Cost (Bls12 G2Add) | 1,000,000 | 1,477,226 | 94,095 | 94.09 | 9,015,444 | 8,969,649.8 | 8,924,468 | +| Precompile Fixed Cost (Bls12 G2Msm) | 1,000,000 | 1,477,226 | 51,576 | 51.58 | 3,175,820 | 3,165,770.8 | 3,144,588 | +| Precompile Fixed Cost (Bls12 Pairing Check) | 1,000,000 | 1,477,226 | 143,574 | 143.57 | 2,792,256 | 2,758,489.5 | 2,721,008 | +| Precompile Fixed Cost (Bn128 Add) | 1,000,000 | 1,477,226 | 26,736 | 26.74 | 6,724,484 | 6,698,559 | 6,690,324 | +| Precompile Fixed Cost (Bn128 Add 1 2) | 1,000,000 | 1,477,226 | 14,695 | 14.70 | 7,377,416 | 7,371,560 | 7,363,752 | +| Precompile Fixed Cost (Bn128 Add Infinities) | 1,000,000 | 1,477,226 | 11,135 | 11.13 | 8,142,560 | 8,139,827.2 | 8,126,944 | +| Precompile Fixed Cost (Bn128 Mul) | 1,000,000 | 1,477,226 | 41,407 | 41.41 | 4,395,776 | 4,385,269.6 | 4,367,472 | +| Precompile Fixed Cost (Bn128 Mul 1 2 2 Scalar) | 1,000,000 | 1,477,226 | 7,082 | 7.08 | 7,353,016 | 7,352,040 | 7,348,136 | +| Precompile Fixed Cost (Bn128 Mul 1 2 32 Byte Scalar) | 1,000,000 | 1,477,226 | 39,896 | 39.90 | 9,219,052 | 9,211,192.6 | 9,190,748 | +| Precompile Fixed Cost (Bn128 Mul 32 Byte Coord And 2 Scalar) | 1,000,000 | 1,477,226 | 8,057 | 8.06 | 2,041,732 | 2,035,876 | 2,025,140 | +| Precompile Fixed Cost (Bn128 Mul 32 Byte Coord And Scalar) | 1,000,000 | 1,477,226 | 40,943 | 40.94 | 10,423,036 | 10,399,952.8 | 10,363,044 | +| Precompile Fixed Cost (Bn128 Mul Infinities 2 Scalar) | 1,000,000 | 1,477,226 | 7,566 | 7.57 | 7,736,568 | 7,734,860 | 7,731,688 | +| Precompile Fixed Cost (Bn128 Mul Infinities 32 Byte Scalar) | 1,000,000 | 1,477,226 | 26,271 | 26.27 | 5,628,452 | 5,614,412.6 | 5,602,100 | +| Precompile Fixed Cost (Bn128 One Pairing) | 1,000,000 | 1,477,226 | 25,268 | 25.27 | 1,618,148 | 1,599,604 | 1,568,372 | +| Precompile Fixed Cost (Bn128 Two Pairings) | 1,000,000 | 1,477,226 | 26,272 | 26.27 | 8,534,368 | 8,531,033.3 | 8,516,800 | +| Precompile Fixed Cost (Bn128 Two Pairings Empty) | 1,000,000 | 1,477,226 | 6,069 | 6.07 | 7,910,280 | 7,908,328 | 7,904,424 | +| Precompile Fixed Cost (Ecrecover) | 1,000,000 | 1,477,226 | 18,189 | 18.19 | 4,905,244 | 4,903,013.1 | 4,886,700 | +| Precompile Fixed Cost (Point Evaluation) | 1,000,000 | 1,477,226 | 362,619 | 362.62 | 645,096 | 628,388.0 | 263,480 | +| Precompile Only Data Input (Identity) | 1,000,000 | 1,477,226 | 9,603 | 9.60 | 4,366,496 | 4,364,739.2 | 4,361,616 | +| Precompile Only Data Input (Ripemd, 160) | 1,000,000 | 1,477,226 | 7,080 | 7.08 | 827,944 | 813,141.3 | 783,048 | +| Precompile Only Data Input (Sha2, 256) | 1,000,000 | 1,477,226 | 17,188 | 17.19 | 589,804 | 495,194.3 | 286,268 | +| Push (Push0) | 1,000,000 | 1,477,226 | 10,589 | 10.59 | 5,819,744 | 5,819,581.3 | 5,817,792 | +| Push (Push10) | 1,000,000 | 1,477,226 | 9,616 | 9.62 | 8,050,816 | 8,050,816 | 8,043,984 | +| Push (Push11) | 1,000,000 | 1,477,226 | 10,610 | 10.61 | 7,317,880 | 7,315,440 | 7,313,976 | +| Push (Push12) | 1,000,000 | 1,477,226 | 10,078 | 10.08 | 8,681,580 | 8,676,374.7 | 8,669,868 | +| Push (Push13) | 1,000,000 | 1,477,226 | 10,115 | 10.12 | 1,544,948 | 1,543,606 | 1,539,092 | +| Push (Push14) | 1,000,000 | 1,477,226 | 10,604 | 10.60 | 5,544,516 | 5,541,262.7 | 5,533,780 | +| Push (Push15) | 1,000,000 | 1,477,226 | 10,587 | 10.59 | 5,601,124 | 5,599,172 | 5,593,316 | +| Push (Push16) | 1,000,000 | 1,477,226 | 10,094 | 10.09 | 9,160,500 | 9,159,524 | 9,155,620 | +| Push (Push17) | 1,000,000 | 1,477,226 | 11,107 | 11.11 | 6,965,548 | 6,963,921.3 | 6,947,004 | +| Push (Push18) | 1,000,000 | 1,477,226 | 11,134 | 11.13 | 7,589,204 | 7,588,350 | 7,587,252 | +| Push (Push19) | 1,000,000 | 1,477,226 | 11,609 | 11.61 | 7,593,108 | 7,593,108 | 7,588,228 | +| Push (Push1) | 1,000,000 | 1,477,226 | 8,591 | 8.59 | 3,347,572 | 3,347,572 | 3,335,860 | +| Push (Push20) | 1,000,000 | 1,477,226 | 11,127 | 11.13 | 11,210,548 | 11,207,759.4 | 11,193,956 | +| Push (Push21) | 1,000,000 | 1,477,226 | 11,097 | 11.10 | 2,557,632 | 2,538,600 | 2,508,832 | +| Push (Push22) | 1,000,000 | 1,477,226 | 11,079 | 11.08 | 2,265,580 | 2,258,357.6 | 2,248,012 | +| Push (Push23) | 1,000,000 | 1,477,226 | 11,637 | 11.64 | 5,532,804 | 5,522,556 | 5,518,164 | +| Push (Push24) | 1,000,000 | 1,477,226 | 11,141 | 11.14 | 11,193,200 | 11,191,000.7 | 11,189,296 | +| Push (Push25) | 1,000,000 | 1,477,226 | 11,638 | 11.64 | 7,700,456 | 7,700,456 | 7,697,528 | +| Push (Push26) | 1,000,000 | 1,477,226 | 12,124 | 12.12 | 10,928,944 | 10,928,944 | 10,912,352 | +| Push (Push27) | 1,000,000 | 1,477,226 | 12,166 | 12.17 | 11,272,728 | 11,257,757.8 | 11,247,636 | +| Push (Push28) | 1,000,000 | 1,477,226 | 12,153 | 12.15 | 8,507,040 | 8,505,088 | 8,502,160 | +| Push (Push29) | 1,000,000 | 1,477,226 | 12,644 | 12.64 | 737,808 | 730,662.3 | 715,360 | +| Push (Push2) | 1,000,000 | 1,477,226 | 8,592 | 8.59 | 2,891,804 | 2,890,584 | 2,884,972 | +| Push (Push30) | 1,000,000 | 1,477,226 | 13,125 | 13.12 | 11,186,836 | 11,186,557.1 | 11,184,884 | +| Push (Push31) | 1,000,000 | 1,477,226 | 12,613 | 12.61 | 7,975,668 | 7,970,028.9 | 7,963,956 | +| Push (Push32) | 1,000,000 | 1,477,226 | 12,638 | 12.64 | 8,849,444 | 8,842,937.3 | 8,838,708 | +| Push (Push3) | 1,000,000 | 1,477,226 | 9,102 | 9.10 | 4,437,744 | 4,431,400 | 4,420,176 | +| Push (Push4) | 1,000,000 | 1,477,226 | 9,608 | 9.61 | 6,858,196 | 6,858,196 | 6,858,196 | +| Push (Push5) | 1,000,000 | 1,477,226 | 10,101 | 10.10 | 9,332,264 | 9,329,824 | 9,327,384 | +| Push (Push6) | 1,000,000 | 1,477,226 | 10,095 | 10.10 | 8,774,500 | 8,773,198.7 | 8,772,548 | +| Push (Push7) | 1,000,000 | 1,477,226 | 10,121 | 10.12 | 11,452,316 | 11,452,316 | 11,436,028 | +| Push (Push8) | 1,000,000 | 1,477,226 | 10,101 | 10.10 | 11,188,320 | 11,184,416 | 11,175,632 | +| Push (Push9) | 1,000,000 | 1,477,226 | 10,105 | 10.11 | 9,951,828 | 9,949,454 | 9,944,996 | +| Return Revert (1Kib Of Non, Zero Data, Return) | 1,000,000 | 1,477,226 | 11,076 | 11.08 | 2,484,432 | 2,473,696 | 2,463,936 | +| Return Revert (1Kib Of Non, Zero Data, Revert) | 1,000,000 | 1,477,226 | 10,630 | 10.63 | 11,280,536 | 11,276,632 | 11,273,704 | +| Return Revert (1Kib Of Zero Data, Return) | 1,000,000 | 1,477,226 | 12,118 | 12.12 | 7,891,736 | 7,891,736 | 7,883,928 | +| Return Revert (1Kib Of Zero Data, Revert) | 1,000,000 | 1,477,226 | 12,125 | 12.12 | 8,043,984 | 8,042,386.9 | 8,037,152 | +| Return Revert (1Mib Of Non, Zero Data, Return) | 1,000,000 | 1,477,226 | 6,076 | 6.08 | 5,339,560 | 5,337,120 | 5,330,776 | +| Return Revert (1Mib Of Non, Zero Data, Revert) | 1,000,000 | 1,477,226 | 6,574 | 6.57 | 10,842,724 | 10,838,818.7 | 10,830,036 | +| Return Revert (1Mib Of Zero Data, Return) | 1,000,000 | 1,477,226 | 6,061 | 6.06 | 9,231,740 | 9,230,056 | 9,231,740 | +| Return Revert (1Mib Of Zero Data, Revert) | 1,000,000 | 1,477,226 | 6,061 | 6.06 | 4,204,488 | 4,204,488 | 4,200,584 | +| Return Revert (Empty, Return) | 1,000,000 | 1,477,226 | 15,182 | 15.18 | 7,794,144 | 7,789,508 | 7,786,336 | +| Return Revert (Empty, Revert) | 1,000,000 | 1,477,226 | 15,211 | 15.21 | 4,757,868 | 4,749,246.7 | 4,741,276 | +| Returndatasize Nonzero (Returned Size 0, Return Data Style Returndatastyle.Identity) | 1,000,000 | 1,477,226 | 10,125 | 10.12 | 7,188,072 | 7,185,422.9 | 7,175,384 | +| Returndatasize Nonzero (Returned Size 0, Return Data Style Returndatastyle.Return) | 1,000,000 | 1,477,226 | 10,621 | 10.62 | 9,927,432 | 9,924,016 | 9,919,624 | +| Returndatasize Nonzero (Returned Size 0, Return Data Style Returndatastyle.Revert) | 1,000,000 | 1,477,226 | 10,088 | 10.09 | 10,162,936 | 10,162,936 | 10,151,216 | +| Returndatasize Nonzero (Returned Size 1, Return Data Style Returndatastyle.Identity) | 1,000,000 | 1,477,226 | 10,119 | 10.12 | 8,284,072 | 8,282,933.3 | 8,278,216 | +| Returndatasize Nonzero (Returned Size 1, Return Data Style Returndatastyle.Return) | 1,000,000 | 1,477,226 | 10,107 | 10.11 | 2,632,192 | 2,632,192 | 2,632,192 | +| Returndatasize Nonzero (Returned Size 1, Return Data Style Returndatastyle.Revert) | 1,000,000 | 1,477,226 | 10,122 | 10.12 | 2,900,588 | 2,899,124 | 2,894,732 | +| Returndatasize Zero | 1,000,000 | 1,477,226 | 9,606 | 9.61 | 10,738,564 | 10,736,495.3 | 10,730,756 | +| Shifts (Shift Right Sar) | 1,000,000 | 1,477,226 | 14,138 | 14.14 | 2,015,380 | 2,010,109.6 | 1,999,764 | +| Shifts (Shift Right Shr) | 1,000,000 | 1,477,226 | 13,187 | 13.19 | 8,754,980 | 8,754,980 | 8,746,068 | +| Swap (Swap10) | 1,000,000 | 1,477,226 | 16,123 | 16.12 | 2,343,888 | 2,328,467.2 | 2,299,968 | +| Swap (Swap11) | 1,000,000 | 1,477,226 | 15,664 | 15.66 | 3,263,652 | 3,261,142.3 | 3,251,940 | +| Swap (Swap12) | 1,000,000 | 1,477,226 | 16,175 | 16.18 | 8,669,868 | 8,667,079.4 | 8,664,012 | +| Swap (Swap13) | 1,000,000 | 1,477,226 | 16,180 | 16.18 | 5,588,436 | 5,585,020 | 5,580,628 | +| Swap (Swap14) | 1,000,000 | 1,477,226 | 15,662 | 15.66 | 10,792,332 | 10,791,676.4 | 10,788,952 | +| Swap (Swap15) | 1,000,000 | 1,477,226 | 15,178 | 15.18 | 9,766,432 | 9,766,236.8 | 9,762,528 | +| Swap (Swap16) | 1,000,000 | 1,477,226 | 15,690 | 15.69 | 8,747,048 | 8,738,142 | 8,722,648 | +| Swap (Swap1) | 1,000,000 | 1,477,226 | 15,160 | 15.16 | 6,151,576 | 6,148,257.6 | 6,139,864 | +| Swap (Swap2) | 1,000,000 | 1,477,226 | 16,171 | 16.17 | 4,589,996 | 4,572,916 | 4,564,620 | +| Swap (Swap3) | 1,000,000 | 1,477,226 | 15,664 | 15.66 | 7,958,104 | 7,956,302.2 | 7,951,272 | +| Swap (Swap4) | 1,000,000 | 1,477,226 | 16,175 | 16.18 | 3,501,780 | 3,490,800 | 3,471,524 | +| Swap (Swap5) | 1,000,000 | 1,477,226 | 15,641 | 15.64 | 6,674,708 | 6,671,780 | 6,669,828 | +| Swap (Swap6) | 1,000,000 | 1,477,226 | 16,160 | 16.16 | 9,272,940 | 9,272,940 | 9,255,700 | +| Swap (Swap7) | 1,000,000 | 1,477,226 | 15,162 | 15.16 | 1,339,020 | 1,335,543 | 1,321,452 | +| Swap (Swap8) | 1,000,000 | 1,477,226 | 16,217 | 16.22 | 7,021,180 | 7,021,180 | 7,016,300 | +| Swap (Swap9) | 1,000,000 | 1,477,226 | 15,654 | 15.65 | 9,847,264 | 9,841,652 | 9,833,600 | +| Tload (Val Mut False, Key Mut False) | 1,000,000 | 1,477,226 | 6,585 | 6.58 | 9,598,328 | 9,596,961.6 | 9,593,448 | +| Tload (Val Mut False, Key Mut True) | 1,000,000 | 1,477,226 | 6,069 | 6.07 | 2,207,996 | 2,206,532 | 2,203,116 | +| Tload (Val Mut True, Key Mut False) | 1,000,000 | 1,477,226 | 7,578 | 7.58 | 7,498,436 | 7,498,192 | 7,493,556 | +| Tload (Val Mut True, Key Mut True) | 1,000,000 | 1,477,226 | 7,084 | 7.08 | 3,466,644 | 3,462,740 | 3,450,052 | +| Tstore (Dense Val Mut False, Key Mut False) | 1,000,000 | 1,477,226 | 8,089 | 8.09 | 10,729,984 | 10,725,078.9 | 10,718,432 | +| Tstore (Dense Val Mut False, Key Mut True) | 1,000,000 | 1,477,226 | 8,075 | 8.07 | 7,893,688 | 7,892,224 | 7,891,736 | +| Tstore (Dense Val Mut True, Key Mut False) | 1,000,000 | 1,477,226 | 11,116 | 11.12 | 1,089,164 | 1,086,445.1 | 1,071,596 | +| Tstore (Dense Val Mut True, Key Mut True) | 1,000,000 | 1,477,226 | 10,617 | 10.62 | 7,858,556 | 7,858,556 | 7,852,700 | +| Unop (Iszero) | 1,000,000 | 1,477,226 | 15,182 | 15.18 | 8,061,552 | 8,059,042.3 | 8,051,792 | +| Unop (Not) | 1,000,000 | 1,477,226 | 8,578 | 8.58 | 10,731,936 | 10,726,800 | 10,731,936 | +| Zero Param (Address) | 1,000,000 | 1,477,226 | 14,640 | 14.64 | 8,641,724 | 8,640,504 | 8,633,916 | +| Zero Param (Basefee) | 1,000,000 | 1,477,226 | 11,112 | 11.11 | 5,653,824 | 5,653,824 | 5,643,088 | +| Zero Param (Blobbasefee) | 1,000,000 | 1,477,226 | 13,110 | 13.11 | 2,174,068 | 2,163,332 | 2,142,836 | +| Zero Param (Caller) | 1,000,000 | 1,477,226 | 15,693 | 15.69 | 8,553,888 | 8,548,032 | 8,537,296 | +| Zero Param (Chainid) | 1,000,000 | 1,477,226 | 10,097 | 10.10 | 8,634,896 | 8,634,896 | 8,599,760 | +| Zero Param (Codesize) | 1,000,000 | 1,477,226 | 11,123 | 11.12 | 9,590,520 | 9,589,125.7 | 9,582,712 | +| Zero Param (Coinbase) | 1,000,000 | 1,477,226 | 15,158 | 15.16 | 8,179,644 | 8,178,668 | 8,175,740 | +| Zero Param (Gaslimit) | 1,000,000 | 1,477,226 | 10,617 | 10.62 | 8,165,004 | 8,165,004 | 8,164,028 | +| Zero Param (Gasprice) | 1,000,000 | 1,477,226 | 12,118 | 12.12 | 7,840,016 | 7,840,016 | 7,839,040 | +| Zero Param (Gas) | 1,000,000 | 1,477,226 | 11,105 | 11.11 | 3,794,576 | 3,778,960 | 3,766,272 | +| Zero Param (Number) | 1,000,000 | 1,477,226 | 11,118 | 11.12 | 7,745,352 | 7,743,237.3 | 7,736,568 | +| Zero Param (Origin) | 1,000,000 | 1,477,226 | 15,165 | 15.16 | 9,301,032 | 9,297,588.6 | 9,282,700 | +| Zero Param (Prevrandao) | 1,000,000 | 1,477,226 | 17,699 | 17.70 | 7,357,896 | 7,356,362.3 | 7,353,016 | +| Zero Param (Timestamp) | 1,000,000 | 1,477,226 | 11,608 | 11.61 | 3,755,540 | 3,753,588 | 3,746,756 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 0Bytes, Call) | 1,000,000 | 1,477,226 | 12,144 | 12.14 | 9,620,104 | 9,618,314.7 | 9,611,320 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 0Bytes, Transaction) | 1,000,000 | 1,477,226 | 12,671 | 12.67 | 4,489,468 | 4,483,333.1 | 4,465,068 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 100Bytes, Call) | 1,000,000 | 1,477,226 | 10,608 | 10.61 | 6,217,940 | 6,215,500 | 6,207,204 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 100Bytes, Transaction) | 1,000,000 | 1,477,226 | 10,614 | 10.61 | 3,196,312 | 3,193,523.4 | 3,186,552 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 10Kib, Call) | 1,000,000 | 1,477,226 | 8,086 | 8.09 | 7,851,728 | 7,851,728 | 7,849,776 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 10Kib, Transaction) | 1,000,000 | 1,477,226 | 7,092 | 7.09 | 1,567,396 | 1,556,334.7 | 1,545,924 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 1Mib, Call) | 1,000,000 | 1,477,226 | 5,562 | 5.56 | 7,621,412 | 7,620,110.7 | 7,619,460 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 1Mib, Transaction) | 1,000,000 | 1,477,226 | 6,052 | 6.05 | 7,390,100 | 7,390,100 | 7,388,148 | +| Calldatacopy (Zero Data, Fixed Src Dst, 0Bytes, Call) | 1,000,000 | 1,477,226 | 11,106 | 11.11 | 1,199,796 | 1,186,620 | 1,164,660 | +| Calldatacopy (Zero Data, Fixed Src Dst, 0Bytes, Transaction) | 1,000,000 | 1,477,226 | 10,085 | 10.09 | 2,107,700 | 2,102,820 | 2,092,084 | +| Calldatacopy (Zero Data, Fixed Src Dst, 100Bytes, Call) | 1,000,000 | 1,477,226 | 8,582 | 8.58 | 6,734,244 | 6,729,364 | 6,723,508 | +| Calldatacopy (Zero Data, Fixed Src Dst, 100Bytes, Transaction) | 1,000,000 | 1,477,226 | 8,076 | 8.08 | 8,212,824 | 8,212,336 | 8,208,920 | +| Calldatacopy (Zero Data, Fixed Src Dst, 10Kib, Call) | 1,000,000 | 1,477,226 | 7,068 | 7.07 | 4,971,612 | 4,966,927.2 | 4,957,948 | +| Calldatacopy (Zero Data, Fixed Src Dst, 10Kib, Transaction) | 1,000,000 | 1,477,226 | 7,076 | 7.08 | 7,838,064 | 7,836,356 | 7,832,208 | +| Calldatacopy (Zero Data, Fixed Src Dst, 1Mib, Call) | 1,000,000 | 1,477,226 | 5,543 | 5.54 | 11,193,956 | 11,190,296 | 11,183,220 | +| Calldatacopy (Zero Data, Fixed Src Dst, 1Mib, Transaction) | 1,000,000 | 1,477,226 | 6,061 | 6.06 | 10,171,052 | 10,170,076 | 10,168,124 | +| Calldatacopy (Non Zero, Dynamic Src Dst, 100Bytes, Call) | 1,000,000 | 1,477,226 | 11,134 | 11.13 | 4,946,236 | 4,941,160.8 | 4,926,716 | +| Calldatacopy (Non Zero, Dynamic Src Dst, 100Bytes, Transaction) | 1,000,000 | 1,477,226 | 11,123 | 11.12 | 9,781,072 | 9,774,890.7 | 9,766,432 | +| Calldatacopy (Non Zero, Dynamic Src Dst, 10Kib, Call) | 1,000,000 | 1,477,226 | 7,082 | 7.08 | 6,682,516 | 6,680,564 | 6,678,612 | +| Calldatacopy (Non Zero, Dynamic Src Dst, 10Kib, Transaction) | 1,000,000 | 1,477,226 | 7,615 | 7.62 | 8,261,624 | 8,260,322.7 | 8,253,816 | +| Calldatacopy (Non Zero, Fixed Src Dst, 100Bytes, Call) | 1,000,000 | 1,477,226 | 8,578 | 8.58 | 4,223,032 | 4,215,084.6 | 4,210,344 | +| Calldatacopy (Non Zero, Fixed Src Dst, 100Bytes, Transaction) | 1,000,000 | 1,477,226 | 9,074 | 9.07 | 971,648 | 945,198.4 | 907,232 | +| Calldatacopy (Non Zero, Fixed Src Dst, 10Kib, Call) | 1,000,000 | 1,477,226 | 7,574 | 7.57 | 6,809,396 | 6,809,396 | 6,808,420 | +| Calldatacopy (Non Zero, Fixed Src Dst, 10Kib, Transaction) | 1,000,000 | 1,477,226 | 7,060 | 7.06 | 10,942,384 | 10,941,408 | 10,923,840 | +| Codecopy (Dynamic Src Dst, 0Bytes) | 1,000,000 | 1,477,226 | 12,640 | 12.64 | 1,746,004 | 1,724,532 | 1,707,940 | +| Codecopy (Dynamic Src Dst, 0.25X Max Code) | 1,000,000 | 1,477,226 | 8,600 | 8.60 | 10,151,216 | 10,146,921.6 | 10,142,432 | +| Codecopy (Dynamic Src Dst, 0.50X Max Code Size) | 1,000,000 | 1,477,226 | 8,085 | 8.09 | 9,248,868 | 9,241,757.1 | 9,230,324 | +| Codecopy (Dynamic Src Dst, 0.75X Max Code Size) | 1,000,000 | 1,477,226 | 8,617 | 8.62 | 10,717,092 | 10,710,678.3 | 10,703,456 | +| Codecopy (Dynamic Src Dst, Max Code) | 1,000,000 | 1,477,226 | 8,591 | 8.59 | 5,672,368 | 5,668,073.6 | 5,658,704 | +| Codecopy (Fixed Src Dst, 0Bytes) | 1,000,000 | 1,477,226 | 10,093 | 10.09 | 11,316,424 | 11,316,424 | 11,300,056 | +| Codecopy (Fixed Src Dst, 0.25X Max Code) | 1,000,000 | 1,477,226 | 7,071 | 7.07 | 1,670,460 | 1,669,484 | 1,649,964 | +| Codecopy (Fixed Src Dst, 0.50X Max Code Size) | 1,000,000 | 1,477,226 | 7,588 | 7.59 | 6,747,908 | 6,747,908 | 6,742,052 | +| Codecopy (Fixed Src Dst, 0.75X Max Code Size) | 1,000,000 | 1,477,226 | 8,069 | 8.07 | 10,154,996 | 10,154,996 | 10,149,140 | +| Codecopy (Fixed Src Dst, Max Code) | 1,000,000 | 1,477,226 | 7,574 | 7.57 | 2,068,084 | 2,060,080.8 | 2,047,588 | +| Mcopy (Dynamic Src Dst, 0Bytes) | 1,000,000 | 1,477,226 | 12,662 | 12.66 | 10,443,224 | 10,435,477.6 | 10,423,036 | +| Mcopy (Dynamic Src Dst, 100Bytes) | 1,000,000 | 1,477,226 | 11,122 | 11.12 | 6,268,692 | 6,263,934 | 6,256,980 | +| Mcopy (Dynamic Src Dst, 10Kib) | 1,000,000 | 1,477,226 | 9,581 | 9.58 | 4,419,200 | 4,415,946.7 | 4,404,560 | +| Mcopy (Dynamic Src Dst, 1Mib) | 1,000,000 | 1,477,226 | 6,058 | 6.06 | 7,474,036 | 7,474,036 | 7,470,132 | +| Mcopy (Fixed Src Dst, 0Bytes) | 1,000,000 | 1,477,226 | 10,121 | 10.12 | 7,389,128 | 7,383,434.7 | 7,377,416 | +| Mcopy (Fixed Src Dst, 100Bytes) | 1,000,000 | 1,477,226 | 9,658 | 9.66 | 8,663,040 | 8,661,630.2 | 8,655,232 | +| Mcopy (Fixed Src Dst, 10Kib) | 1,000,000 | 1,477,226 | 8,062 | 8.06 | 488,532 | 421,318.1 | 305,044 | +| Mcopy (Fixed Src Dst, 1Mib) | 1,000,000 | 1,477,226 | 6,051 | 6.05 | 2,202,368 | 2,194,072 | 2,177,968 | +| Returndatacopy (Fixed Dst False, 0Bytes) | 1,000,000 | 1,477,226 | 12,106 | 12.11 | 2,143,812 | 2,128,196 | 2,108,676 | +| Returndatacopy (Fixed Dst False, 100Bytes) | 1,000,000 | 1,477,226 | 10,107 | 10.11 | 4,462,144 | 4,457,101.3 | 4,448,480 | +| Returndatacopy (Fixed Dst False, 10Kib) | 1,000,000 | 1,477,226 | 8,609 | 8.61 | 8,252,840 | 8,247,960 | 8,244,056 | +| Returndatacopy (Fixed Dst False, 1Mib) | 1,000,000 | 1,477,226 | 6,559 | 6.56 | 5,971,996 | 5,970,776 | 5,965,164 | +| Returndatacopy (Fixed Dst True, 0Bytes) | 1,000,000 | 1,477,226 | 11,126 | 11.13 | 4,241,576 | 4,234,093.3 | 4,225,960 | +| Returndatacopy (Fixed Dst True, 100Bytes) | 1,000,000 | 1,477,226 | 9,105 | 9.11 | 4,444,576 | 4,443,112 | 4,440,672 | +| Returndatacopy (Fixed Dst True, 10Kib) | 1,000,000 | 1,477,226 | 7,578 | 7.58 | 6,189,640 | 6,189,640 | 6,168,168 | +| Returndatacopy (Fixed Dst True, 1Mib) | 1,000,000 | 1,477,226 | 6,555 | 6.55 | 4,621,228 | 4,613,094.7 | 4,597,804 | +| Log Opcodes (Dynamic, Non Zero Topic, 0 Bytes Data, Log0) | 1,000,000 | 1,477,226 | 7,069 | 7.07 | 11,056,140 | 11,051,319 | 11,048,332 | +| Log Opcodes (Dynamic, Non Zero Topic, 0 Bytes Data, Log1) | 1,000,000 | 1,477,226 | 6,058 | 6.06 | 4,148,856 | 4,147,880 | 4,143,000 | +| Log Opcodes (Dynamic, Non Zero Topic, 0 Bytes Data, Log2) | 1,000,000 | 1,477,226 | 6,093 | 6.09 | 7,410,596 | 7,410,596 | 7,409,620 | +| Log Opcodes (Dynamic, Non Zero Topic, 0 Bytes Data, Log3) | 1,000,000 | 1,477,226 | 6,056 | 6.06 | 11,440,036 | 11,440,036 | 11,437,228 | +| Log Opcodes (Dynamic, Non Zero Topic, 0 Bytes Data, Log4) | 1,000,000 | 1,477,226 | 7,097 | 7.10 | 7,624,340 | 7,624,340 | 7,620,436 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log0) | 1,000,000 | 1,477,226 | 6,065 | 6.07 | 8,506,596 | 8,504,626.4 | 8,506,596 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log1) | 1,000,000 | 1,477,226 | 6,063 | 6.06 | 4,832,044 | 4,830,092 | 4,823,260 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log2) | 1,000,000 | 1,477,226 | 6,560 | 6.56 | 9,227,836 | 9,225,640 | 9,221,980 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log3) | 1,000,000 | 1,477,226 | 6,056 | 6.06 | 1,368,644 | 1,363,926.7 | 1,354,980 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log4) | 1,000,000 | 1,477,226 | 6,058 | 6.06 | 3,330,980 | 3,329,353.3 | 3,326,100 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log0) | 1,000,000 | 1,477,226 | 5,554 | 5.55 | 2,277,904 | 2,273,674.7 | 2,267,168 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log1) | 1,000,000 | 1,477,226 | 6,085 | 6.08 | 3,877,532 | 3,874,929.3 | 3,871,676 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log2) | 1,000,000 | 1,477,226 | 6,080 | 6.08 | 7,751,208 | 7,751,045.3 | 7,746,328 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log3) | 1,000,000 | 1,477,226 | 6,063 | 6.06 | 5,554,276 | 5,551,673.3 | 5,544,516 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log4) | 1,000,000 | 1,477,226 | 6,049 | 6.05 | 4,912,076 | 4,912,076 | 4,907,196 | +| Log Opcodes (Dynamic, Zero Topic, 0 Bytes Data, Log0) | 1,000,000 | 1,477,226 | 7,064 | 7.06 | 10,360,116 | 10,357,276 | 10,355,368 | +| Log Opcodes (Dynamic, Zero Topic, 0 Bytes Data, Log1) | 1,000,000 | 1,477,226 | 6,575 | 6.58 | 7,362,776 | 7,362,776 | 7,358,872 | +| Log Opcodes (Dynamic, Zero Topic, 0 Bytes Data, Log2) | 1,000,000 | 1,477,226 | 6,059 | 6.06 | 5,517,188 | 5,517,188 | 5,516,212 | +| Log Opcodes (Dynamic, Zero Topic, 0 Bytes Data, Log3) | 1,000,000 | 1,477,226 | 6,583 | 6.58 | 9,945,976 | 9,938,656 | 9,926,456 | +| Log Opcodes (Dynamic, Zero Topic, 0 Bytes Data, Log4) | 1,000,000 | 1,477,226 | 6,562 | 6.56 | 3,127,020 | 3,127,020 | 3,124,092 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Non Zero Data, Log0) | 1,000,000 | 1,477,226 | 6,571 | 6.57 | 6,159,384 | 6,157,432 | 6,151,576 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Non Zero Data, Log1) | 1,000,000 | 1,477,226 | 6,076 | 6.08 | 6,889,424 | 6,889,424 | 6,884,544 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Non Zero Data, Log2) | 1,000,000 | 1,477,226 | 6,054 | 6.05 | 3,744,804 | 3,742,201.3 | 3,731,140 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Non Zero Data, Log3) | 1,000,000 | 1,477,226 | 6,078 | 6.08 | 6,946,032 | 6,945,788 | 6,942,128 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Non Zero Data, Log4) | 1,000,000 | 1,477,226 | 6,052 | 6.05 | 4,126,408 | 4,125,757.3 | 4,123,480 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Zeros Data, Log0) | 1,000,000 | 1,477,226 | 6,049 | 6.05 | 4,253,288 | 4,250,685.3 | 4,242,552 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Zeros Data, Log1) | 1,000,000 | 1,477,226 | 6,084 | 6.08 | 4,403,584 | 4,400,330.7 | 4,396,752 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Zeros Data, Log2) | 1,000,000 | 1,477,226 | 6,574 | 6.57 | 11,517,744 | 11,517,744 | 11,516,768 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Zeros Data, Log3) | 1,000,000 | 1,477,226 | 6,073 | 6.07 | 2,910,348 | 2,910,348 | 2,903,516 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Zeros Data, Log4) | 1,000,000 | 1,477,226 | 6,084 | 6.08 | 4,957,948 | 4,953,653.6 | 4,947,212 | +| Log Opcodes (Fixed, Non Zero Topic, 0 Bytes Data, Log0) | 1,000,000 | 1,477,226 | 6,068 | 6.07 | 10,730,756 | 10,721,972 | 10,716,116 | +| Log Opcodes (Fixed, Non Zero Topic, 0 Bytes Data, Log1) | 1,000,000 | 1,477,226 | 6,569 | 6.57 | 7,731,688 | 7,731,037.3 | 7,728,760 | +| Log Opcodes (Fixed, Non Zero Topic, 0 Bytes Data, Log2) | 1,000,000 | 1,477,226 | 6,574 | 6.57 | 8,271,384 | 8,269,269.3 | 8,266,504 | +| Log Opcodes (Fixed, Non Zero Topic, 0 Bytes Data, Log3) | 1,000,000 | 1,477,226 | 6,110 | 6.11 | 11,453,384 | 11,453,384 | 11,449,480 | +| Log Opcodes (Fixed, Non Zero Topic, 0 Bytes Data, Log4) | 1,000,000 | 1,477,226 | 6,567 | 6.57 | 2,301,328 | 2,287,989.3 | 2,277,904 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log0) | 1,000,000 | 1,477,226 | 6,057 | 6.06 | 6,166,216 | 6,166,216 | 6,164,264 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log1) | 1,000,000 | 1,477,226 | 5,555 | 5.55 | 8,266,504 | 8,263,771.2 | 8,261,624 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log2) | 1,000,000 | 1,477,226 | 6,575 | 6.58 | 9,883,512 | 9,878,436.8 | 9,871,800 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log3) | 1,000,000 | 1,477,226 | 6,577 | 6.58 | 9,178,064 | 9,176,112 | 9,172,208 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log4) | 1,000,000 | 1,477,226 | 6,081 | 6.08 | 780,124 | 761,580 | 733,276 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Zeros Data, Log0) | 1,000,000 | 1,477,226 | 6,071 | 6.07 | 3,766,276 | 3,765,300 | 3,757,492 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Zeros Data, Log1) | 1,000,000 | 1,477,226 | 5,545 | 5.54 | 8,652,304 | 8,652,304 | 8,651,328 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Zeros Data, Log2) | 1,000,000 | 1,477,226 | 5,553 | 5.55 | 3,508,612 | 3,508,612 | 3,502,756 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Zeros Data, Log3) | 1,000,000 | 1,477,226 | 6,049 | 6.05 | 1,918,356 | 1,913,866.4 | 1,906,644 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Zeros Data, Log4) | 1,000,000 | 1,477,226 | 6,057 | 6.06 | 2,468,584 | 2,466,632 | 2,461,752 | +| Log Opcodes (Fixed, Zero Topic, 0 Bytes Data, Log0) | 1,000,000 | 1,477,226 | 6,541 | 6.54 | 2,501,024 | 2,501,024 | 2,486,384 | +| Log Opcodes (Fixed, Zero Topic, 0 Bytes Data, Log1) | 1,000,000 | 1,477,226 | 6,081 | 6.08 | 5,823,648 | 5,823,160 | 5,819,744 | +| Log Opcodes (Fixed, Zero Topic, 0 Bytes Data, Log2) | 1,000,000 | 1,477,226 | 6,579 | 6.58 | 6,644,452 | 6,644,452 | 6,642,500 | +| Log Opcodes (Fixed, Zero Topic, 0 Bytes Data, Log3) | 1,000,000 | 1,477,226 | 6,548 | 6.55 | 6,687,396 | 6,685,834.4 | 6,682,516 | +| Log Opcodes (Fixed, Zero Topic, 0 Bytes Data, Log4) | 1,000,000 | 1,477,226 | 6,557 | 6.56 | 7,764,868 | 7,764,672.8 | 7,763,892 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Non Zero Data, Log0) | 1,000,000 | 1,477,226 | 6,077 | 6.08 | 3,274,388 | 3,272,240.8 | 3,265,604 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Non Zero Data, Log1) | 1,000,000 | 1,477,226 | 6,047 | 6.05 | 2,915,228 | 2,915,228 | 2,910,348 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Non Zero Data, Log2) | 1,000,000 | 1,477,226 | 6,069 | 6.07 | 5,728,976 | 5,726,536 | 5,722,144 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Non Zero Data, Log3) | 1,000,000 | 1,477,226 | 6,063 | 6.06 | 8,217,704 | 8,217,216 | 8,214,776 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Non Zero Data, Log4) | 1,000,000 | 1,477,226 | 6,073 | 6.07 | 6,946,028 | 6,945,784 | 6,945,052 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Zeros Data, Log0) | 1,000,000 | 1,477,226 | 6,556 | 6.56 | 729,372 | 706,728.8 | 679,596 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Zeros Data, Log1) | 1,000,000 | 1,477,226 | 6,050 | 6.05 | 5,710,432 | 5,705,226.7 | 5,697,744 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Zeros Data, Log2) | 1,000,000 | 1,477,226 | 6,068 | 6.07 | 10,182,764 | 10,182,764 | 10,173,004 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Zeros Data, Log3) | 1,000,000 | 1,477,226 | 6,056 | 6.06 | 6,203,300 | 6,197,932 | 6,188,660 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Zeros Data, Log4) | 1,000,000 | 1,477,226 | 5,553 | 5.55 | 5,831,456 | 5,830,968 | 5,827,552 | +| Address State Cold (Absent Accounts False, Balance) | 1,000,000 | 1,477,226 | 7,562 | 7.56 | 8,722,648 | 8,718,093.3 | 8,708,008 | +| Address State Cold (Absent Accounts True, Balance) | 1,000,000 | 1,477,226 | 7,074 | 7.07 | 8,278,216 | 8,276,264 | 8,274,312 | +| Address State Warm (Present Target, Balance) | 1,000,000 | 1,477,226 | 8,072 | 8.07 | 10,153,484 | 10,153,484 | 10,152,508 | +| Address State Warm (Present Target, Callcode) | 1,000,000 | 1,477,226 | 15,163 | 15.16 | 10,865,872 | 10,857,673.6 | 10,853,184 | +| Address State Warm (Present Target, Call) | 1,000,000 | 1,477,226 | 15,704 | 15.70 | 8,382,644 | 8,376,495.2 | 8,372,884 | +| Address State Warm (Present Target, Delegatecall) | 1,000,000 | 1,477,226 | 13,640 | 13.64 | 5,494,744 | 5,494,093.3 | 5,486,936 | +| Address State Warm (Present Target, Extcodehash) | 1,000,000 | 1,477,226 | 8,576 | 8.58 | 2,484,196 | 2,476,583.2 | 2,469,556 | +| Address State Warm (Present Target, Extcodesize) | 1,000,000 | 1,477,226 | 8,580 | 8.58 | 7,762,916 | 7,762,916 | 7,759,988 | +| Address State Warm (Present Target, Staticcall) | 1,000,000 | 1,477,226 | 15,182 | 15.18 | 10,829,060 | 10,816,263.6 | 10,802,708 | +| Address State Warm (Absent Target, Balance) | 1,000,000 | 1,477,226 | 8,601 | 8.60 | 1,661,092 | 1,649,705.3 | 1,636,692 | +| Address State Warm (Absent Target, Callcode) | 1,000,000 | 1,477,226 | 13,606 | 13.61 | 2,379,024 | 2,371,606.4 | 2,346,816 | +| Address State Warm (Absent Target, Call) | 1,000,000 | 1,477,226 | 13,152 | 13.15 | 9,913,768 | 9,893,272 | 9,883,512 | +| Address State Warm (Absent Target, Delegatecall) | 1,000,000 | 1,477,226 | 12,632 | 12.63 | 5,881,228 | 5,878,300 | 5,871,468 | +| Address State Warm (Absent Target, Extcodehash) | 1,000,000 | 1,477,226 | 9,598 | 9.60 | 8,220,632 | 8,220,144 | 8,216,728 | +| Address State Warm (Absent Target, Extcodesize) | 1,000,000 | 1,477,226 | 8,569 | 8.57 | 1,778,560 | 1,770,996 | 1,763,920 | +| Address State Warm (Absent Target, Staticcall) | 1,000,000 | 1,477,226 | 14,137 | 14.14 | 7,863,436 | 7,862,535.1 | 7,859,532 | +| Blockhash | 1,000,000 | 1,477,226 | 9,593 | 9.59 | 10,038,060 | 10,032,761.7 | 10,026,348 | +| Extcodecopy Warm (1Kib) | 1,000,000 | 1,477,226 | 8,077 | 8.08 | 903,328 | 880,977.6 | 851,600 | +| Extcodecopy Warm (512) | 1,000,000 | 1,477,226 | 8,100 | 8.10 | 8,235,272 | 8,233,710.4 | 8,232,344 | +| Extcodecopy Warm (5Kib) | 1,000,000 | 1,477,226 | 7,083 | 7.08 | 7,697,532 | 7,697,532 | 7,691,676 | +| Selfbalance | 1,000,000 | 1,477,226 | 36,933 | 36.93 | 3,431,508 | 3,412,638.7 | 3,351,476 | +| Selfdestruct Created (No Value) | 965,720 | 1,477,226 | 6,568 | 6.57 | 3,251,940 | 3,250,476 | 3,239,252 | +| Selfdestruct Created (With Value) | 965,720 | 1,477,226 | 6,058 | 6.06 | 6,742,052 | 6,742,052 | 6,735,220 | +| Selfdestruct Existing (No Value) | 998,771 | 1,477,226 | 7,086 | 7.09 | 4,198,632 | 4,192,532 | 4,181,064 | +| Selfdestruct Existing (With Value) | 998,771 | 1,477,226 | 7,073 | 7.07 | 2,026,116 | 2,023,920 | 2,017,332 | +| Selfdestruct Initcode (No Value) | 989,164 | 1,477,226 | 6,054 | 6.05 | 10,465,672 | 10,453,374.4 | 10,444,200 | +| Selfdestruct Initcode (With Value) | 989,164 | 1,477,226 | 6,077 | 6.08 | 7,879,052 | 7,879,052 | 7,877,100 | +| Storage Access Cold (Absent Slots False, Ssload) | 999,749 | 1,477,226 | 7,072 | 7.07 | 3,227,544 | 3,226,568 | 3,216,808 | +| Storage Access Cold (Absent Slots False, Sstore New Value, Out Of Gas) | 1,000,000 | 1,477,226 | 7,078 | 7.08 | 7,219,304 | 7,219,304 | 7,218,328 | +| Storage Access Cold (Absent Slots False, Sstore New Value, Revert) | 998,963 | 1,477,226 | 7,081 | 7.08 | 7,394,980 | 7,394,980 | 7,391,076 | +| Storage Access Cold (Absent Slots False, Sstore New Value) | 998,957 | 1,477,226 | 7,582 | 7.58 | 2,925,964 | 2,924,012 | 2,917,180 | +| Storage Access Cold (Absent Slots False, Sstore Same Value, Out Of Gas) | 1,000,000 | 1,477,226 | 8,078 | 8.08 | 10,188,616 | 10,187,249.6 | 10,181,784 | +| Storage Access Cold (Absent Slots False, Sstore Same Value, Revert) | 999,015 | 1,477,226 | 8,074 | 8.07 | 10,988,116 | 10,986,814.7 | 10,942,244 | +| Storage Access Cold (Absent Slots False, Sstore Same Value) | 999,009 | 1,477,226 | 8,076 | 8.08 | 1,251,756 | 1,229,633.3 | 1,202,956 | +| Storage Access Cold (Absent Slots True, Ssload) | 999,749 | 1,477,226 | 7,078 | 7.08 | 11,300,056 | 11,296,347.2 | 11,289,320 | +| Storage Access Cold (Absent Slots True, Sstore New Value, Out Of Gas) | 1,000,000 | 1,477,226 | 6,060 | 6.06 | 713,412 | 709,752 | 701,700 | +| Storage Access Cold (Absent Slots True, Sstore New Value, Revert) | 995,213 | 1,477,226 | 6,547 | 6.55 | 1,017,520 | 997,674.7 | 972,624 | +| Storage Access Cold (Absent Slots True, Sstore New Value) | 995,207 | 1,477,226 | 6,065 | 6.07 | 2,203,116 | 2,196,677.6 | 2,185,552 | +| Storage Access Cold (Absent Slots True, Sstore Same Value, Out Of Gas) | 1,000,000 | 1,477,226 | 6,057 | 6.06 | 10,891,248 | 10,884,416 | 10,875,632 | +| Storage Access Cold (Absent Slots True, Sstore Same Value, Revert) | 995,081 | 1,477,226 | 6,054 | 6.05 | 9,348,192 | 9,342,336 | 9,335,504 | +| Storage Access Cold (Absent Slots True, Sstore Same Value) | 995,075 | 1,477,226 | 6,075 | 6.08 | 11,497,412 | 11,497,412 | 11,491,556 | +| Storage Access Warm (Sload) | 1,000,000 | 1,477,226 | 8,054 | 8.05 | 851,604 | 832,438.9 | 808,660 | +| Storage Access Warm (Sstore New Value) | 1,000,000 | 1,477,226 | 12,124 | 12.12 | 7,174,408 | 7,173,432 | 7,169,528 | +| Storage Access Warm (Sstore Same Value) | 1,000,000 | 1,477,226 | 10,618 | 10.62 | 4,548,028 | 4,538,407.4 | 4,527,532 | + +## Summary Statistics + +- **Total Tests:** 508 +- **Successful Tests:** 508 +- **Failed Tests:** 0 + +### Proving Time (ms) +- **Average:** 34,139.5 +- **Minimum:** 5,059 +- **Maximum:** 487,291 + +### Peak Memory Usage (MB) +- **Average:** 6,169,126.3 +- **Minimum:** 488,532 +- **Maximum:** 11,517,744 + +### Proof Size (bytes) +- **Average:** 1,477,226 +- **Minimum:** 1,477,226 +- **Maximum:** 1,477,226 diff --git a/www/docs/pages/benchmark-results/gas-categorized/1m/zisk-1M-4.md b/www/docs/pages/benchmark-results/gas-categorized/1m/zisk-1M-4.md new file mode 100644 index 00000000..e3a4a92e --- /dev/null +++ b/www/docs/pages/benchmark-results/gas-categorized/1m/zisk-1M-4.md @@ -0,0 +1,543 @@ +# zkEVM Benchmark Results + +Generated on: 2025-12-13 19:54:08 + +## Folder: zkevm-metrics-zisk-1M-4 + +**zkVM:** zisk-v0.14.0 (4 GPUs) + +**Hardware Configuration:** CPU: AMD EPYC 7B13 64-Core Processor | RAM: 396 GiB | GPU: NVIDIA GeForce RTX 4090, NVIDIA GeForce RTX 4090, NVIDIA GeForce RTX 4090, NVIDIA GeForce RTX 4090 + +## Proving Metrics + +| Benchmark | Gas Used | Proof Size (bytes) | Proving Time (ms) | Proving Time (s) | Peak Memory (MB) | Avg Memory (MB) | Initial Memory (MB) | +|---|---|---|---|---|---|---|---| +| Block Full Access List And Data | 999,980 | 249,880 | 3,628 | 3.63 | 4,314,636 | 4,314,636 | 4,309,756 | +| Block Full Data (Non Zero Byte) | 1,000,000 | 249,880 | 3,328 | 3.33 | 15,105,248 | 15,105,248 | 15,097,440 | +| Block Full Data (Zero Byte) | 1,000,000 | 249,880 | 3,646 | 3.65 | 5,757,144 | 5,755,517.3 | 5,745,432 | +| Block Full Of Ether Transfers (A To A) | 987,000 | 249,880 | 3,746 | 3.75 | 5,300,380 | 5,296,801.3 | 5,284,764 | +| Block Full Of Ether Transfers (A To B) | 987,000 | 249,880 | 3,537 | 3.54 | 10,640,080 | 10,640,080 | 10,637,152 | +| Block Full Of Ether Transfers (A To Diff Acc) | 987,000 | 249,880 | 3,351 | 3.35 | 14,715,828 | 14,713,876 | 14,693,380 | +| Block Full Of Ether Transfers (Diff Acc To B) | 987,000 | 249,880 | 3,427 | 3.43 | 5,461,420 | 5,461,420 | 5,448,732 | +| Block Full Of Ether Transfers (Diff Acc To Diff Acc) | 987,000 | 249,880 | 3,840 | 3.84 | 7,426,096 | 7,423,656 | 7,408,528 | +| Bytecode Single Opcode (Callcode) | 1,000,000 | 249,880 | 25,149 | 25.15 | 4,862,168 | 4,848,341.3 | 4,805,560 | +| Bytecode Single Opcode (Call) | 1,000,000 | 249,880 | 24,556 | 24.56 | 2,571,536 | 2,571,536 | 2,454,416 | +| Bytecode Single Opcode (Delegatecall) | 1,000,000 | 249,880 | 25,256 | 25.26 | 9,633,580 | 9,619,590.7 | 9,597,468 | +| Bytecode Single Opcode (Extcodecopy) | 1,000,000 | 249,880 | 24,134 | 24.13 | 15,543,468 | 15,530,361.7 | 15,493,692 | +| Bytecode Single Opcode (Extcodehash) | 1,000,000 | 249,880 | 25,044 | 25.04 | 4,234,608 | 4,231,571.6 | 4,224,848 | +| Bytecode Single Opcode (Extcodesize) | 1,000,000 | 249,880 | 25,314 | 25.31 | 13,138,632 | 13,124,751.1 | 13,105,448 | +| Bytecode Single Opcode (Staticcall) | 1,000,000 | 249,880 | 25,141 | 25.14 | 17,401,736 | 17,380,068.8 | 17,344,152 | +| Create (0Bytes, Create2) | 1,000,000 | 249,880 | 3,349 | 3.35 | 2,639,856 | 2,635,464 | 2,611,552 | +| Create (0Bytes, Create) | 1,000,000 | 249,880 | 3,024 | 3.02 | 542,444 | 540,248 | 531,708 | +| Create (0Bytes, Create2) | 1,000,000 | 249,880 | 3,424 | 3.42 | 15,890,924 | 15,890,924 | 15,855,788 | +| Create (0Bytes, Create) | 1,000,000 | 249,880 | 3,326 | 3.33 | 8,933,440 | 8,927,096 | 8,914,896 | +| Create (0.25X Max Code, Zero Data, Create2) | 1,000,000 | 249,880 | 3,652 | 3.65 | 814,748 | 800,303.2 | 780,588 | +| Create (0.25X Max Code, Zero Data, Create) | 1,000,000 | 249,880 | 3,735 | 3.73 | 12,116,888 | 12,114,448 | 12,107,128 | +| Create (0.25X Max Code, Create2) | 1,000,000 | 249,880 | 3,455 | 3.46 | 18,582,908 | 18,581,932 | 18,574,124 | +| Create (0.25X Max Code, Create) | 1,000,000 | 249,880 | 3,247 | 3.25 | 4,415,164 | 4,415,164 | 4,405,404 | +| Create (0.50X Max Code Size With Non, Zero Data, Create2) | 1,000,000 | 249,880 | 3,724 | 3.72 | 12,763,396 | 12,763,396 | 12,745,828 | +| Create (0.50X Max Code Size With Non, Zero Data, Create) | 1,000,000 | 249,880 | 3,737 | 3.74 | 14,793,904 | 14,784,144 | 14,752,912 | +| Create (0.50X Max Code Size With Zero Data, Create2) | 1,000,000 | 249,880 | 3,416 | 3.42 | 5,506,312 | 5,506,312 | 5,490,696 | +| Create (0.50X Max Code Size With Zero Data, Create) | 1,000,000 | 249,880 | 3,252 | 3.25 | 3,395,268 | 3,391,364 | 3,382,580 | +| Create (0.75X Max Code Size With Non, Zero Data, Create2) | 1,000,000 | 249,880 | 3,428 | 3.43 | 1,777,072 | 1,777,072 | 1,765,360 | +| Create (0.75X Max Code Size With Non, Zero Data, Create) | 1,000,000 | 249,880 | 3,746 | 3.75 | 8,788,144 | 8,788,144 | 8,782,976 | +| Create (0.75X Max Code Size With Zero Data, Create2) | 1,000,000 | 249,880 | 3,436 | 3.44 | 3,204,952 | 3,204,952 | 3,184,456 | +| Create (0.75X Max Code Size With Zero Data, Create) | 1,000,000 | 249,880 | 3,422 | 3.42 | 4,355,628 | 4,355,628 | 4,348,796 | +| Create (Max Code, Zero Data, Create2) | 1,000,000 | 249,880 | 3,357 | 3.36 | 14,231,740 | 14,231,252 | 14,227,836 | +| Create (Max Code, Zero Data, Create) | 1,000,000 | 249,880 | 3,629 | 3.63 | 3,228,372 | 3,225,932 | 3,218,612 | +| Create (Max Code, Create2) | 1,000,000 | 249,880 | 3,430 | 3.43 | 12,164,712 | 12,155,928 | 12,134,456 | +| Create (Max Code, Create) | 1,000,000 | 249,880 | 3,429 | 3.43 | 10,313,588 | 10,313,588 | 10,301,876 | +| Creates Collisions (Create2) | 1,000,000 | 249,880 | 3,536 | 3.54 | 12,044,116 | 12,044,116 | 12,040,212 | +| Creates Collisions (Create) | 1,000,000 | 249,880 | 3,234 | 3.23 | 12,728,588 | 12,728,588 | 12,707,116 | +| Initcode Jumpdest Analysis (00) | 1,000,000 | 249,880 | 4,243 | 4.24 | 6,959,572 | 6,959,572 | 6,905,892 | +| Initcode Jumpdest Analysis (5B) | 1,000,000 | 249,880 | 5,138 | 5.14 | 15,994,380 | 15,990,476 | 15,974,860 | +| Initcode Jumpdest Analysis (605B5B) | 1,000,000 | 249,880 | 4,132 | 4.13 | 938,696 | 925,227.2 | 908,440 | +| Initcode Jumpdest Analysis (605B) | 1,000,000 | 249,880 | 4,041 | 4.04 | 9,682,380 | 9,671,644 | 9,658,956 | +| Initcode Jumpdest Analysis (615B5B5B) | 1,000,000 | 249,880 | 4,048 | 4.05 | 904,536 | 888,337.6 | 860,620 | +| Initcode Jumpdest Analysis (615B5B) | 1,000,000 | 249,880 | 3,828 | 3.83 | 14,074,608 | 14,074,608 | 14,072,656 | +| Amortized Bn128 Pairings | 1,000,000 | 249,880 | 5,241 | 5.24 | 5,395,052 | 5,393,750.7 | 5,387,244 | +| Empty Block | 0 | 249,880 | 2,924 | 2.92 | 2,917,032 | 2,915,080 | 2,909,224 | +| Binop Simple (Add) | 1,000,000 | 249,880 | 4,548 | 4.55 | 11,904,796 | 11,904,796 | 11,899,916 | +| Binop Simple (And) | 1,000,000 | 249,880 | 4,474 | 4.47 | 7,295,316 | 7,287,508 | 7,280,676 | +| Binop Simple (Byte) | 1,000,000 | 249,880 | 4,033 | 4.03 | 17,461,272 | 17,458,344 | 17,448,584 | +| Binop Simple (Div, 0) | 1,000,000 | 249,880 | 8,570 | 8.57 | 13,190,360 | 13,182,942.4 | 13,170,840 | +| Binop Simple (Div, 1) | 1,000,000 | 249,880 | 8,354 | 8.35 | 9,008,224 | 9,008,224 | 8,984,572 | +| Binop Simple (Eq) | 1,000,000 | 249,880 | 6,756 | 6.76 | 2,390,976 | 2,377,637.3 | 2,357,792 | +| Binop Simple (Exp) | 1,000,000 | 249,880 | 4,840 | 4.84 | 4,419,068 | 4,417,604 | 4,415,164 | +| Binop Simple (Gt) | 1,000,000 | 249,880 | 4,855 | 4.86 | 10,117,284 | 10,117,284 | 10,101,668 | +| Binop Simple (Lt) | 1,000,000 | 249,880 | 4,230 | 4.23 | 16,555,124 | 16,554,798.7 | 16,548,292 | +| Binop Simple (Mod) | 1,000,000 | 249,880 | 6,072 | 6.07 | 10,192,060 | 10,186,310.7 | 10,180,508 | +| Binop Simple (Mul) | 1,000,000 | 249,880 | 4,240 | 4.24 | 8,027,864 | 8,020,544 | 8,010,296 | +| Binop Simple (Or) | 1,000,000 | 249,880 | 4,448 | 4.45 | 17,427,112 | 17,422,232 | 17,404,664 | +| Binop Simple (Sar) | 1,000,000 | 249,880 | 5,339 | 5.34 | 6,277,352 | 6,268,177.6 | 6,254,904 | +| Binop Simple (Sdiv, 0) | 1,000,000 | 249,880 | 9,272 | 9.27 | 13,268,436 | 13,257,002.9 | 13,231,348 | +| Binop Simple (Sdiv, 1) | 1,000,000 | 249,880 | 9,155 | 9.15 | 1,647,264 | 1,628,232 | 1,578,944 | +| Binop Simple (Sgt) | 1,000,000 | 249,880 | 7,273 | 7.27 | 18,221,856 | 18,181,156 | 18,144,980 | +| Binop Simple (Shl) | 1,000,000 | 249,880 | 5,250 | 5.25 | 16,242,804 | 16,234,736 | 16,215,932 | +| Binop Simple (Shr) | 1,000,000 | 249,880 | 4,944 | 4.94 | 14,304,940 | 14,303,638.7 | 14,295,180 | +| Binop Simple (Signextend) | 1,000,000 | 249,880 | 4,748 | 4.75 | 13,227,444 | 13,224,516 | 13,209,876 | +| Binop Simple (Slt) | 1,000,000 | 249,880 | 4,849 | 4.85 | 8,339,468 | 8,337,841.3 | 8,321,900 | +| Binop Simple (Smod) | 1,000,000 | 249,880 | 6,454 | 6.45 | 17,788,452 | 17,786,500 | 17,773,812 | +| Binop Simple (Sub) | 1,000,000 | 249,880 | 4,647 | 4.65 | 14,823,184 | 14,821,232 | 14,799,760 | +| Binop Simple (Xor) | 1,000,000 | 249,880 | 4,287 | 4.29 | 9,184,768 | 9,181,840 | 9,176,960 | +| Blobhash (No Blobs) | 1,000,000 | 249,880 | 4,948 | 4.95 | 4,258,032 | 4,258,032 | 4,247,296 | +| Blobhash (One Blob And Accessed) | 1,000,000 | 249,880 | 6,735 | 6.74 | 1,168,056 | 1,159,760 | 1,139,752 | +| Blobhash (One Blob But Access Non, Existent Index) | 1,000,000 | 249,880 | 4,644 | 4.64 | 16,249,636 | 16,247,358.7 | 16,242,804 | +| Blobhash (Six Blobs, Access Latest) | 1,000,000 | 249,880 | 7,673 | 7.67 | 2,595,936 | 2,586,826.7 | 2,573,488 | +| Calldataload (Empty) | 1,000,000 | 249,880 | 7,379 | 7.38 | 9,199,640 | 9,199,640 | 9,184,768 | +| Calldataload (One, Loop) | 1,000,000 | 249,880 | 7,761 | 7.76 | 12,469,376 | 12,466,692 | 12,460,592 | +| Calldataload (Zero, Loop) | 1,000,000 | 249,880 | 7,562 | 7.56 | 4,877,784 | 4,872,660 | 4,864,120 | +| Calldatasize (Calldata Length 0) | 1,000,000 | 249,880 | 4,737 | 4.74 | 17,796,260 | 17,795,284 | 17,788,452 | +| Calldatasize (Calldata Length 10000) | 1,000,000 | 249,880 | 4,832 | 4.83 | 17,769,908 | 17,767,468 | 17,761,124 | +| Calldatasize (Calldata Length 1000) | 1,000,000 | 249,880 | 5,132 | 5.13 | 5,337,468 | 5,333,889.3 | 5,325,756 | +| Callvalue (From Origin False, Non Zero Value False) | 1,000,000 | 249,880 | 4,553 | 4.55 | 11,977,352 | 11,971,496 | 11,964,664 | +| Callvalue (From Origin False, Non Zero Value True) | 1,000,000 | 249,880 | 4,632 | 4.63 | 17,701,364 | 17,700,062.7 | 17,670,132 | +| Callvalue (From Origin True, Non Zero Value False) | 1,000,000 | 249,880 | 4,747 | 4.75 | 15,638,140 | 15,632,934.7 | 15,622,524 | +| Callvalue (From Origin True, Non Zero Value True) | 1,000,000 | 249,880 | 4,527 | 4.53 | 15,031,072 | 15,016,757.3 | 14,998,864 | +| Dup (Dup10) | 1,000,000 | 249,880 | 4,637 | 4.64 | 10,245,740 | 10,242,324 | 10,205,724 | +| Dup (Dup11) | 1,000,000 | 249,880 | 4,646 | 4.65 | 5,568,776 | 5,568,776 | 5,561,944 | +| Dup (Dup12) | 1,000,000 | 249,880 | 4,249 | 4.25 | 14,106,816 | 14,106,816 | 14,081,440 | +| Dup (Dup13) | 1,000,000 | 249,880 | 4,435 | 4.43 | 5,476,060 | 5,476,060 | 5,461,420 | +| Dup (Dup14) | 1,000,000 | 249,880 | 4,441 | 4.44 | 12,073,944 | 12,066,624 | 12,057,352 | +| Dup (Dup15) | 1,000,000 | 249,880 | 4,334 | 4.33 | 2,432,944 | 2,426,112 | 2,417,328 | +| Dup (Dup16) | 1,000,000 | 249,880 | 4,637 | 4.64 | 14,693,380 | 14,690,452 | 14,680,692 | +| Dup (Dup1) | 1,000,000 | 249,880 | 4,737 | 4.74 | 10,297,972 | 10,294,566.7 | 10,279,900 | +| Dup (Dup2) | 1,000,000 | 249,880 | 4,126 | 4.13 | 12,577,472 | 12,575,520 | 12,560,880 | +| Dup (Dup3) | 1,000,000 | 249,880 | 4,332 | 4.33 | 15,907,516 | 15,907,516 | 15,893,852 | +| Dup (Dup4) | 1,000,000 | 249,880 | 4,651 | 4.65 | 5,375,532 | 5,372,604 | 5,359,916 | +| Dup (Dup5) | 1,000,000 | 249,880 | 4,428 | 4.43 | 8,031,768 | 8,031,524 | 8,027,864 | +| Dup (Dup6) | 1,000,000 | 249,880 | 4,543 | 4.54 | 2,921,912 | 2,921,424 | 2,918,008 | +| Dup (Dup7) | 1,000,000 | 249,880 | 4,547 | 4.55 | 4,246,320 | 4,246,320 | 4,244,368 | +| Dup (Dup8) | 1,000,000 | 249,880 | 4,235 | 4.24 | 10,175,484 | 10,175,484 | 10,164,072 | +| Dup (Dup9) | 1,000,000 | 249,880 | 4,341 | 4.34 | 2,661,328 | 2,656,122.7 | 2,642,784 | +| Jumpdests | 1,000,000 | 249,880 | 4,637 | 4.64 | 12,354,624 | 12,353,648 | 12,342,912 | +| Jumpi Fallthrough | 1,000,000 | 249,880 | 5,132 | 5.13 | 1,658,000 | 1,658,000 | 1,652,144 | +| Jumpis | 1,000,000 | 249,880 | 4,147 | 4.15 | 6,866,856 | 6,858,072 | 6,849,288 | +| Jumps | 1,000,000 | 249,880 | 4,140 | 4.14 | 17,539,352 | 17,539,352 | 17,532,520 | +| Keccak | 1,000,000 | 249,880 | 12,261 | 12.26 | 16,778,628 | 16,753,809.7 | 16,720,068 | +| Memory Access (Small Mem, Uninit Offset, Off 0, Mload) | 1,000,000 | 249,880 | 6,273 | 6.27 | 3,926,192 | 3,918,628 | 3,896,912 | +| Memory Access (Small Mem, Uninit Offset, Off 0, Mstore8) | 1,000,000 | 249,880 | 4,450 | 4.45 | 1,851,248 | 1,851,248 | 1,819,040 | +| Memory Access (Small Mem, Uninit Offset, Off 0, Mstore) | 1,000,000 | 249,880 | 5,851 | 5.85 | 999,208 | 985,544 | 938,696 | +| Memory Access (Small Mem, Uninit Offset, Off 1, Mload) | 1,000,000 | 249,880 | 6,066 | 6.07 | 6,819,032 | 6,819,032 | 6,791,704 | +| Memory Access (Small Mem, Uninit Offset, Off 1, Mstore8) | 1,000,000 | 249,880 | 4,344 | 4.34 | 17,007,048 | 17,001,192 | 16,990,456 | +| Memory Access (Small Mem, Uninit Offset, Off 1, Mstore) | 1,000,000 | 249,880 | 6,070 | 6.07 | 11,902,272 | 11,901,100.8 | 11,894,464 | +| Memory Access (Small Mem, Uninit Offset, Off 31, Mload) | 1,000,000 | 249,880 | 6,058 | 6.06 | 9,827,940 | 9,814,340 | 9,796,040 | +| Memory Access (Small Mem, Uninit Offset, Off 31, Mstore8) | 1,000,000 | 249,880 | 4,431 | 4.43 | 2,103,056 | 2,096,224 | 2,072,800 | +| Memory Access (Small Mem, Uninit Offset, Off 31, Mstore) | 1,000,000 | 249,880 | 5,958 | 5.96 | 4,486,408 | 4,478,600 | 4,467,864 | +| Memory Access (Small Mem, Init Offset, Off 0, Mload) | 1,000,000 | 249,880 | 6,160 | 6.16 | 2,891,656 | 2,885,995.2 | 2,870,184 | +| Memory Access (Small Mem, Init Offset, Off 0, Mstore8) | 1,000,000 | 249,880 | 4,444 | 4.44 | 9,305,232 | 9,305,232 | 9,295,472 | +| Memory Access (Small Mem, Init Offset, Off 0, Mstore) | 1,000,000 | 249,880 | 5,858 | 5.86 | 15,485,884 | 15,481,329.3 | 15,465,388 | +| Memory Access (Small Mem, Init Offset, Off 1, Mload) | 1,000,000 | 249,880 | 6,139 | 6.14 | 13,456,804 | 13,449,972 | 13,441,188 | +| Memory Access (Small Mem, Init Offset, Off 1, Mstore8) | 1,000,000 | 249,880 | 4,440 | 4.44 | 6,376,904 | 6,376,904 | 6,369,096 | +| Memory Access (Small Mem, Init Offset, Off 1, Mstore) | 1,000,000 | 249,880 | 6,047 | 6.05 | 8,285,620 | 8,279,373.6 | 8,265,124 | +| Memory Access (Small Mem, Init Offset, Off 31, Mload) | 1,000,000 | 249,880 | 6,059 | 6.06 | 16,891,020 | 16,891,020 | 16,874,428 | +| Memory Access (Small Mem, Init Offset, Off 31, Mstore8) | 1,000,000 | 249,880 | 4,549 | 4.55 | 17,508,120 | 17,508,120 | 17,488,600 | +| Memory Access (Small Mem, Init Offset, Off 31, Mstore) | 1,000,000 | 249,880 | 6,061 | 6.06 | 12,001,664 | 11,996,557.3 | 11,982,440 | +| Memory Access (Big Mem, Uninit Offset, Off 0, Mload) | 1,000,000 | 249,880 | 5,944 | 5.94 | 14,070,704 | 14,067,776 | 14,059,968 | +| Memory Access (Big Mem, Uninit Offset, Off 0, Mstore8) | 1,000,000 | 249,880 | 4,742 | 4.74 | 2,026,928 | 2,014,565.3 | 1,989,840 | +| Memory Access (Big Mem, Uninit Offset, Off 0, Mstore) | 1,000,000 | 249,880 | 6,043 | 6.04 | 3,836,416 | 3,834,464 | 3,830,560 | +| Memory Access (Big Mem, Uninit Offset, Off 1, Mload) | 1,000,000 | 249,880 | 6,245 | 6.25 | 7,075,716 | 7,071,649.3 | 7,059,124 | +| Memory Access (Big Mem, Uninit Offset, Off 1, Mstore8) | 1,000,000 | 249,880 | 4,648 | 4.65 | 12,122,744 | 12,122,500 | 12,117,864 | +| Memory Access (Big Mem, Uninit Offset, Off 1, Mstore) | 1,000,000 | 249,880 | 5,856 | 5.86 | 4,347,820 | 4,342,614.7 | 4,335,132 | +| Memory Access (Big Mem, Uninit Offset, Off 31, Mload) | 1,000,000 | 249,880 | 6,240 | 6.24 | 3,183,480 | 3,180,796 | 3,170,792 | +| Memory Access (Big Mem, Uninit Offset, Off 31, Mstore8) | 1,000,000 | 249,880 | 5,033 | 5.03 | 17,902,204 | 17,895,860 | 17,888,540 | +| Memory Access (Big Mem, Uninit Offset, Off 31, Mstore) | 1,000,000 | 249,880 | 5,845 | 5.84 | 6,598,456 | 6,591,868 | 6,579,912 | +| Memory Access (Big Mem, Init Offset, Off 0, Mload) | 1,000,000 | 249,880 | 6,240 | 6.24 | 738,620 | 715,781.6 | 664,444 | +| Memory Access (Big Mem, Init Offset, Off 0, Mstore8) | 1,000,000 | 249,880 | 4,661 | 4.66 | 10,279,900 | 10,265,992 | 10,245,740 | +| Memory Access (Big Mem, Init Offset, Off 0, Mstore) | 1,000,000 | 249,880 | 6,149 | 6.15 | 17,942,552 | 17,926,389.3 | 17,907,084 | +| Memory Access (Big Mem, Init Offset, Off 1, Mload) | 1,000,000 | 249,880 | 6,151 | 6.15 | 8,397,044 | 8,389,236 | 8,361,908 | +| Memory Access (Big Mem, Init Offset, Off 1, Mstore8) | 1,000,000 | 249,880 | 4,543 | 4.54 | 18,280,748 | 18,280,748 | 18,270,012 | +| Memory Access (Big Mem, Init Offset, Off 1, Mstore) | 1,000,000 | 249,880 | 7,039 | 7.04 | 11,206,032 | 11,195,052 | 11,183,584 | +| Memory Access (Big Mem, Init Offset, Off 31, Mload) | 1,000,000 | 249,880 | 6,155 | 6.16 | 5,991,384 | 5,991,384 | 5,925,992 | +| Memory Access (Big Mem, Init Offset, Off 31, Mstore8) | 1,000,000 | 249,880 | 4,353 | 4.35 | 6,514,520 | 6,509,640 | 6,495,000 | +| Memory Access (Big Mem, Init Offset, Off 31, Mstore) | 1,000,000 | 249,880 | 6,240 | 6.24 | 3,829,584 | 3,821,288 | 3,812,016 | +| Mod (Op Mod, Mod Bits 127) | 1,000,000 | 249,880 | 7,765 | 7.76 | 14,002,384 | 14,000,432 | 13,993,600 | +| Mod (Op Mod, Mod Bits 191) | 1,000,000 | 249,880 | 9,768 | 9.77 | 15,846,028 | 15,840,822.7 | 15,829,436 | +| Mod (Op Mod, Mod Bits 255) | 1,000,000 | 249,880 | 8,775 | 8.78 | 13,483,152 | 13,481,688 | 13,475,344 | +| Mod (Op Mod, Mod Bits 63) | 1,000,000 | 249,880 | 6,748 | 6.75 | 3,842,256 | 3,839,718.4 | 3,835,424 | +| Mod (Op Smod, Mod Bits 127) | 1,000,000 | 249,880 | 8,167 | 8.17 | 12,445,952 | 12,439,538.3 | 12,437,168 | +| Mod (Op Smod, Mod Bits 191) | 1,000,000 | 249,880 | 10,169 | 10.17 | 1,218,808 | 1,200,142 | 1,172,936 | +| Mod (Op Smod, Mod Bits 255) | 1,000,000 | 249,880 | 9,159 | 9.16 | 3,949,616 | 3,940,506.7 | 3,929,120 | +| Mod (Op Smod, Mod Bits 63) | 1,000,000 | 249,880 | 7,167 | 7.17 | 16,907,612 | 16,907,612 | 16,902,732 | +| Modarith (Op Addmod, Mod Bits 127) | 1,000,000 | 249,880 | 7,859 | 7.86 | 8,184,116 | 8,176,958.7 | 8,159,716 | +| Modarith (Op Addmod, Mod Bits 191) | 1,000,000 | 249,880 | 8,640 | 8.64 | 8,585,552 | 8,575,060 | 8,527,132 | +| Modarith (Op Addmod, Mod Bits 255) | 1,000,000 | 249,880 | 8,774 | 8.77 | 3,346,468 | 3,335,894.7 | 3,325,972 | +| Modarith (Op Addmod, Mod Bits 63) | 1,000,000 | 249,880 | 7,196 | 7.20 | 8,627,908 | 8,614,732 | 8,601,168 | +| Modarith (Op Mulmod, Mod Bits 127) | 1,000,000 | 249,880 | 10,057 | 10.06 | 2,791,136 | 2,791,136 | 2,716,960 | +| Modarith (Op Mulmod, Mod Bits 191) | 1,000,000 | 249,880 | 13,210 | 13.21 | 8,980,668 | 8,960,883.5 | 8,936,368 | +| Modarith (Op Mulmod, Mod Bits 255) | 1,000,000 | 249,880 | 12,287 | 12.29 | 1,292,980 | 1,259,579.1 | 1,218,804 | +| Modarith (Op Mulmod, Mod Bits 63) | 1,000,000 | 249,880 | 9,478 | 9.48 | 3,318,164 | 3,311,332 | 3,298,644 | +| Modexp (Mod 1045 Gas Base Heavy) | 1,000,000 | 249,880 | 83,687 | 83.69 | 14,668,004 | 14,599,814.1 | 14,505,012 | +| Modexp (Mod 1360 Gas Balanced) | 1,000,000 | 249,880 | 27,757 | 27.76 | 6,155,352 | 6,149,984 | 6,129,000 | +| Modexp (Mod 400 Gas Exp Heavy) | 1,000,000 | 249,880 | 39,932 | 39.93 | 13,368,964 | 13,354,519.2 | 13,292,836 | +| Modexp (Mod 408 Gas Balanced) | 1,000,000 | 249,880 | 23,433 | 23.43 | 10,164,072 | 10,146,504 | 10,134,792 | +| Modexp (Mod 408 Gas Base Heavy) | 1,000,000 | 249,880 | 78,017 | 78.02 | 17,186,748 | 17,143,576.5 | 17,017,784 | +| Modexp (Mod 600 As Balanced) | 1,000,000 | 249,880 | 24,080 | 24.08 | 5,743,480 | 5,728,421.7 | 5,712,248 | +| Modexp (Mod 600 Gas Exp Heavy) | 1,000,000 | 249,880 | 41,791 | 41.79 | 4,045,264 | 3,997,997.7 | 3,952,544 | +| Modexp (Mod 616 Gas Base Heavy) | 1,000,000 | 249,880 | 80,910 | 80.91 | 11,597,724 | 11,515,696.5 | 11,435,384 | +| Modexp (Mod 677 Gas Base Heavy) | 1,000,000 | 249,880 | 26,740 | 26.74 | 6,577,960 | 6,544,776 | 6,515,496 | +| Modexp (Mod 765 Gas Exp Heavy) | 1,000,000 | 249,880 | 31,363 | 31.36 | 16,720,068 | 16,683,304 | 16,605,872 | +| Modexp (Mod 767 Gas Balanced) | 1,000,000 | 249,880 | 22,637 | 22.64 | 18,467,276 | 18,454,628 | 18,425,856 | +| Modexp (Mod 800 Gas Base Heavy) | 1,000,000 | 249,880 | 83,721 | 83.72 | 11,881,776 | 11,808,403.2 | 11,746,792 | +| Modexp (Mod 800 Gas Exp Heavy) | 1,000,000 | 249,880 | 43,664 | 43.66 | 15,359,984 | 15,275,377 | 15,179,424 | +| Modexp (Mod 852 Gas Exp Heavy) | 1,000,000 | 249,880 | 43,147 | 43.15 | 16,874,428 | 16,855,981.6 | 16,780,580 | +| Modexp (Mod 867 Gas Base Heavy) | 1,000,000 | 249,880 | 84,085 | 84.08 | 11,013,376 | 10,899,403.2 | 10,816,476 | +| Modexp (Mod 996 Gas Balanced) | 1,000,000 | 249,880 | 23,018 | 23.02 | 11,082,088 | 11,068,116.6 | 11,034,848 | +| Modexp (Mod Even 1024B Exp 1024) | 1,000,000 | 249,880 | 3,633 | 3.63 | 14,153,660 | 14,153,660 | 14,147,804 | +| Modexp (Mod Even 128B Exp 1024) | 1,000,000 | 249,880 | 20,136 | 20.14 | 9,290,592 | 9,273,414.4 | 9,261,312 | +| Modexp (Mod Even 16B Exp 320) | 1,000,000 | 249,880 | 43,750 | 43.75 | 7,868,756 | 7,851,666.5 | 7,827,860 | +| Modexp (Mod Even 24B Exp 168) | 1,000,000 | 249,880 | 32,914 | 32.91 | 11,970,016 | 11,947,613.8 | 11,921,216 | +| Modexp (Mod Even 256B Exp 1024) | 1,000,000 | 249,880 | 14,810 | 14.81 | 13,955,536 | 13,936,341.3 | 13,923,328 | +| Modexp (Mod Even 32B Exp 256) | 1,000,000 | 249,880 | 28,663 | 28.66 | 2,864,336 | 2,821,810.3 | 2,791,136 | +| Modexp (Mod Even 32B Exp 40) | 1,000,000 | 249,880 | 26,271 | 26.27 | 17,886,588 | 17,862,607.3 | 17,800,164 | +| Modexp (Mod Even 32B Exp 96) | 1,000,000 | 249,880 | 28,887 | 28.89 | 13,843,296 | 13,843,296 | 13,833,536 | +| Modexp (Mod Even 512B Exp 1024) | 1,000,000 | 249,880 | 3,226 | 3.23 | 2,716,960 | 2,716,960 | 2,669,136 | +| Modexp (Mod Even 64B Exp 512) | 1,000,000 | 249,880 | 22,627 | 22.63 | 3,287,908 | 3,271,072 | 3,232,276 | +| Modexp (Mod Even 8B Exp 896) | 1,000,000 | 249,880 | 113,505 | 113.50 | 4,224,848 | 4,150,184 | 4,076,496 | +| Modexp (Mod Exp 208 Gas Balanced) | 1,000,000 | 249,880 | 23,255 | 23.25 | 10,480,872 | 10,458,504 | 10,407,112 | +| Modexp (Mod Exp 215 Gas Exp Heavy) | 1,000,000 | 249,880 | 98,050 | 98.05 | 12,919,556 | 12,855,628 | 12,771,204 | +| Modexp (Mod Exp 298 Gas Exp Heavy) | 1,000,000 | 249,880 | 108,197 | 108.20 | 10,105,652 | 10,062,119.3 | 10,002,144 | +| Modexp (Mod Min As Balanced) | 1,000,000 | 249,880 | 23,827 | 23.83 | 16,177,868 | 16,146,148 | 16,094,908 | +| Modexp (Mod Min As Base Heavy) | 1,000,000 | 249,880 | 62,588 | 62.59 | 7,561,296 | 7,512,802.7 | 7,480,748 | +| Modexp (Mod Min As Exp Heavy) | 1,000,000 | 249,880 | 96,955 | 96.95 | 11,740,876 | 11,686,943.6 | 11,613,624 | +| Modexp (Mod Odd 1024B Exp 1024) | 1,000,000 | 249,880 | 3,129 | 3.13 | 778,636 | 761,556 | 740,572 | +| Modexp (Mod Odd 128B Exp 1024) | 1,000,000 | 249,880 | 20,000 | 20 | 4,547,896 | 4,504,115.4 | 4,488,360 | +| Modexp (Mod Odd 256B Exp 1024) | 1,000,000 | 249,880 | 15,599 | 15.60 | 8,745,888 | 8,732,224 | 8,688,304 | +| Modexp (Mod Odd 32B Exp 256) | 1,000,000 | 249,880 | 27,862 | 27.86 | 1,454,996 | 1,410,471.8 | 1,332,996 | +| Modexp (Mod Odd 32B Exp 96) | 1,000,000 | 249,880 | 26,478 | 26.48 | 13,105,448 | 13,067,158.8 | 13,008,824 | +| Modexp (Mod Odd 32B Exp Cover Windows) | 1,000,000 | 249,880 | 21,336 | 21.34 | 7,950,760 | 7,939,048 | 7,930,264 | +| Modexp (Mod Odd 512B Exp 1024) | 1,000,000 | 249,880 | 3,433 | 3.43 | 9,261,312 | 9,252,040 | 9,237,888 | +| Modexp (Mod Odd 64B Exp 512) | 1,000,000 | 249,880 | 22,440 | 22.44 | 4,403,452 | 4,393,692 | 4,379,052 | +| Modexp (Mod Pawel 2) | 1,000,000 | 249,880 | 41,065 | 41.06 | 8,911,968 | 8,848,952.9 | 8,789,120 | +| Modexp (Mod Pawel 3) | 1,000,000 | 249,880 | 30,887 | 30.89 | 10,773,596 | 10,745,083.4 | 10,694,704 | +| Modexp (Mod Pawel 4) | 1,000,000 | 249,880 | 26,348 | 26.35 | 7,279,700 | 7,247,191.7 | 7,205,524 | +| Modexp (Mod Vul Common 1152N1) | 1,000,000 | 249,880 | 17,097 | 17.10 | 7,991,752 | 7,975,299.4 | 7,959,544 | +| Modexp (Mod Vul Common 1349N1) | 1,000,000 | 249,880 | 22,345 | 22.34 | 17,229,964 | 17,204,425.3 | 17,191,900 | +| Modexp (Mod Vul Common 1360N1) | 1,000,000 | 249,880 | 25,061 | 25.06 | 9,591,464 | 9,586,800.9 | 9,571,944 | +| Modexp (Mod Vul Common 1360N2) | 1,000,000 | 249,880 | 23,334 | 23.33 | 5,921,112 | 5,899,097.8 | 5,865,480 | +| Modexp (Mod Vul Common 200N1) | 1,000,000 | 249,880 | 14,482 | 14.48 | 6,335,912 | 6,318,344 | 6,287,112 | +| Modexp (Mod Vul Common 200N2) | 1,000,000 | 249,880 | 17,709 | 17.71 | 4,930,488 | 4,899,581.3 | 4,876,808 | +| Modexp (Mod Vul Common 200N3) | 1,000,000 | 249,880 | 17,385 | 17.39 | 11,405,264 | 11,360,786.3 | 11,342,800 | +| Modexp (Mod Vul Example 1) | 1,000,000 | 249,880 | 27,343 | 27.34 | 2,344,128 | 2,299,964 | 2,198,704 | +| Modexp (Mod Vul Example 2) | 1,000,000 | 249,880 | 24,314 | 24.31 | 3,636,340 | 3,616,039.2 | 3,602,180 | +| Modexp (Mod Vul Guido 1 Even) | 1,000,000 | 249,880 | 31,997 | 32.00 | 16,325,760 | 16,288,296.6 | 16,249,632 | +| Modexp (Mod Vul Guido 2 Even) | 1,000,000 | 249,880 | 37,918 | 37.92 | 6,126,072 | 6,096,683.6 | 6,046,040 | +| Modexp (Mod Vul Guido 3 Even) | 1,000,000 | 249,880 | 64,257 | 64.26 | 9,992,708 | 9,906,428.8 | 9,836,724 | +| Modexp (Mod Vul Marius 1 Even) | 1,000,000 | 249,880 | 34,067 | 34.07 | 7,171,364 | 7,147,521.7 | 7,080,596 | +| Modexp (Mod Vul Nagydani 1 Pow 0X10001) | 1,000,000 | 249,880 | 19,636 | 19.64 | 7,344,112 | 7,327,520 | 7,300,192 | +| Modexp (Mod Vul Nagydani 1 Qube) | 1,000,000 | 249,880 | 14,383 | 14.38 | 17,743,560 | 17,719,953.6 | 17,704,292 | +| Modexp (Mod Vul Nagydani 1 Square) | 1,000,000 | 249,880 | 14,395 | 14.39 | 1,110,472 | 1,068,579.1 | 1,004,088 | +| Modexp (Mod Vul Nagydani 2 Pow 0X10001) | 1,000,000 | 249,880 | 18,619 | 18.62 | 14,364,472 | 14,346,346.3 | 14,310,792 | +| Modexp (Mod Vul Nagydani 2 Qube) | 1,000,000 | 249,880 | 37,720 | 37.72 | 5,073,956 | 5,050,206.7 | 5,009,540 | +| Modexp (Mod Vul Nagydani 2 Square) | 1,000,000 | 249,880 | 35,165 | 35.16 | 13,773,024 | 13,747,831 | 13,722,272 | +| Modexp (Mod Vul Nagydani 3 Pow 0X10001) | 1,000,000 | 249,880 | 18,301 | 18.30 | 7,922,460 | 7,913,480.8 | 7,896,108 | +| Modexp (Mod Vul Nagydani 3 Qube) | 1,000,000 | 249,880 | 88,995 | 89.00 | 5,266,224 | 5,210,044.5 | 5,137,392 | +| Modexp (Mod Vul Nagydani 3 Square) | 1,000,000 | 249,880 | 80,976 | 80.98 | 10,636,176 | 10,580,647.7 | 10,516,776 | +| Modexp (Mod Vul Nagydani 4 Pow 0X10001) | 1,000,000 | 249,880 | 16,503 | 16.50 | 12,662,384 | 12,641,888 | 12,608,704 | +| Modexp (Mod Vul Nagydani 4 Qube) | 1,000,000 | 249,880 | 101,641 | 101.64 | 9,571,944 | 9,487,980.2 | 9,445,948 | +| Modexp (Mod Vul Nagydani 4 Square) | 1,000,000 | 249,880 | 91,712 | 91.71 | 4,792,872 | 4,664,402.5 | 4,581,080 | +| Modexp (Mod Vul Nagydani 5 Pow 0X10001) | 1,000,000 | 249,880 | 15,595 | 15.60 | 12,211,560 | 12,200,173.3 | 12,165,688 | +| Modexp (Mod Vul Nagydani 5 Qube) | 1,000,000 | 249,880 | 104,732 | 104.73 | 3,812,996 | 3,719,612.3 | 3,660,740 | +| Modexp (Mod Vul Nagydani 5 Square) | 1,000,000 | 249,880 | 97,374 | 97.37 | 3,117,112 | 3,040,035.1 | 2,924,840 | +| Modexp (Mod Vul Pawel 1 Exp Heavy) | 1,000,000 | 249,880 | 103,638 | 103.64 | 7,827,860 | 7,762,783.4 | 7,696,960 | +| Modexp (Mod Vul Pawel 2 Exp Heavy) | 1,000,000 | 249,880 | 37,678 | 37.68 | 11,325,232 | 11,300,070.4 | 11,220,672 | +| Modexp (Mod Vul Pawel 3 Exp Heavy) | 1,000,000 | 249,880 | 27,350 | 27.35 | 5,712,248 | 5,707,774.7 | 5,682,968 | +| Modexp (Mod Vul Pawel 4 Exp Heavy) | 1,000,000 | 249,880 | 22,739 | 22.74 | 14,457,192 | 14,435,394.7 | 14,387,896 | +| Msize (Mem Size 0) | 1,000,000 | 249,880 | 5,565 | 5.57 | 12,256,456 | 12,241,165.3 | 12,213,512 | +| Msize (Mem Size 1000000) | 1,000,000 | 249,880 | 5,333 | 5.33 | 17,571,560 | 17,564,402.7 | 17,553,016 | +| Msize (Mem Size 100000) | 1,000,000 | 249,880 | 5,660 | 5.66 | 5,768,856 | 5,763,488 | 5,759,096 | +| Msize (Mem Size 1000) | 1,000,000 | 249,880 | 5,435 | 5.43 | 12,559,504 | 12,550,546 | 12,531,448 | +| Msize (Mem Size 1) | 1,000,000 | 249,880 | 5,761 | 5.76 | 3,131,752 | 3,130,288 | 3,120,040 | +| Precompile Fixed Cost (Blake2F) | 1,000,000 | 249,880 | 26,636 | 26.64 | 531,708 | 511,186.6 | 478,028 | +| Precompile Fixed Cost (Bls12 Fp To G1) | 1,000,000 | 249,880 | 28,906 | 28.91 | 15,460,512 | 15,411,990.9 | 15,360,960 | +| Precompile Fixed Cost (Bls12 Fp To G2) | 1,000,000 | 249,880 | 21,642 | 21.64 | 15,768,924 | 15,724,028 | 15,687,916 | +| Precompile Fixed Cost (Bls12 G1Add) | 1,000,000 | 249,880 | 21,736 | 21.74 | 6,247,096 | 6,220,635.6 | 6,191,464 | +| Precompile Fixed Cost (Bls12 G1Msm) | 1,000,000 | 249,880 | 13,490 | 13.49 | 7,995,656 | 7,995,656 | 7,992,728 | +| Precompile Fixed Cost (Bls12 G2Add) | 1,000,000 | 249,880 | 22,910 | 22.91 | 14,499,160 | 14,490,375.6 | 14,481,592 | +| Precompile Fixed Cost (Bls12 G2Msm) | 1,000,000 | 249,880 | 11,896 | 11.90 | 5,325,756 | 5,320,095.2 | 5,303,308 | +| Precompile Fixed Cost (Bls12 Pairing Check) | 1,000,000 | 249,880 | 28,566 | 28.57 | 5,009,540 | 4,980,184.9 | 4,929,508 | +| Precompile Fixed Cost (Bn128 Add) | 1,000,000 | 249,880 | 9,876 | 9.88 | 9,744,840 | 9,744,840 | 9,715,564 | +| Precompile Fixed Cost (Bn128 Add 1 2) | 1,000,000 | 249,880 | 9,374 | 9.37 | 11,140,640 | 11,138,688 | 11,136,736 | +| Precompile Fixed Cost (Bn128 Add Infinities) | 1,000,000 | 249,880 | 7,259 | 7.26 | 13,168,888 | 13,161,730.7 | 13,153,272 | +| Precompile Fixed Cost (Bn128 Mul) | 1,000,000 | 249,880 | 3,849 | 3.85 | 6,628,712 | 6,628,712 | 6,625,784 | +| Precompile Fixed Cost (Bn128 Mul 1 2 2 Scalar) | 1,000,000 | 249,880 | 3,955 | 3.96 | 11,100,628 | 11,100,628 | 11,083,064 | +| Precompile Fixed Cost (Bn128 Mul 1 2 32 Byte Scalar) | 1,000,000 | 249,880 | 3,634 | 3.63 | 14,861,248 | 14,850,512 | 14,829,040 | +| Precompile Fixed Cost (Bn128 Mul 32 Byte Coord And 2 Scalar) | 1,000,000 | 249,880 | 3,347 | 3.35 | 4,453,224 | 4,452,248 | 4,445,416 | +| Precompile Fixed Cost (Bn128 Mul 32 Byte Coord And Scalar) | 1,000,000 | 249,880 | 3,531 | 3.53 | 16,953,484 | 16,950,556 | 16,944,700 | +| Precompile Fixed Cost (Bn128 Mul Infinities 2 Scalar) | 1,000,000 | 249,880 | 3,324 | 3.32 | 12,018,228 | 12,017,251 | 12,012,372 | +| Precompile Fixed Cost (Bn128 Mul Infinities 32 Byte Scalar) | 1,000,000 | 249,880 | 3,138 | 3.14 | 8,264,148 | 8,260,569.3 | 8,254,388 | +| Precompile Fixed Cost (Bn128 One Pairing) | 1,000,000 | 249,880 | 6,689 | 6.69 | 4,306,828 | 4,299,264 | 4,293,164 | +| Precompile Fixed Cost (Bn128 Two Pairings) | 1,000,000 | 249,880 | 5,548 | 5.55 | 14,010,192 | 14,006,678.4 | 14,002,384 | +| Precompile Fixed Cost (Bn128 Two Pairings Empty) | 1,000,000 | 249,880 | 3,150 | 3.15 | 12,599,920 | 12,597,480 | 12,579,424 | +| Precompile Fixed Cost (Ecrecover) | 1,000,000 | 249,880 | 5,854 | 5.85 | 7,369,488 | 7,359,972 | 7,346,064 | +| Precompile Fixed Cost (Point Evaluation) | 1,000,000 | 249,880 | 79,175 | 79.17 | 3,603,156 | 3,495,460.5 | 3,397,220 | +| Precompile Only Data Input (Identity) | 1,000,000 | 249,880 | 3,926 | 3.93 | 6,621,880 | 6,614,072 | 6,601,384 | +| Precompile Only Data Input (Ripemd, 160) | 1,000,000 | 249,880 | 3,741 | 3.74 | 2,196,752 | 2,196,752 | 2,179,184 | +| Precompile Only Data Input (Sha2, 256) | 1,000,000 | 249,880 | 5,533 | 5.53 | 2,070,848 | 2,057,834.7 | 2,040,592 | +| Push (Push0) | 1,000,000 | 249,880 | 5,236 | 5.24 | 8,461,484 | 8,446,177.3 | 8,424,372 | +| Push (Push10) | 1,000,000 | 249,880 | 5,643 | 5.64 | 12,986,376 | 12,986,376 | 12,981,496 | +| Push (Push11) | 1,000,000 | 249,880 | 5,649 | 5.65 | 11,031,920 | 11,028,504 | 11,020,208 | +| Push (Push12) | 1,000,000 | 249,880 | 5,739 | 5.74 | 14,224,908 | 14,221,004 | 14,202,460 | +| Push (Push13) | 1,000,000 | 249,880 | 6,057 | 6.06 | 4,269,744 | 4,269,744 | 4,258,032 | +| Push (Push14) | 1,000,000 | 249,880 | 6,532 | 6.53 | 8,131,412 | 8,126,047 | 8,119,704 | +| Push (Push15) | 1,000,000 | 249,880 | 6,561 | 6.56 | 8,250,484 | 8,246,970.4 | 8,242,676 | +| Push (Push16) | 1,000,000 | 249,880 | 6,659 | 6.66 | 14,680,692 | 14,680,692 | 14,668,980 | +| Push (Push17) | 1,000,000 | 249,880 | 6,948 | 6.95 | 10,389,544 | 10,389,544 | 10,368,072 | +| Push (Push18) | 1,000,000 | 249,880 | 6,911 | 6.91 | 11,599,960 | 11,596,381.3 | 11,589,224 | +| Push (Push19) | 1,000,000 | 249,880 | 7,253 | 7.25 | 11,609,720 | 11,608,093.3 | 11,601,912 | +| Push (Push1) | 1,000,000 | 249,880 | 4,340 | 4.34 | 5,528,760 | 5,519,976 | 5,510,216 | +| Push (Push20) | 1,000,000 | 249,880 | 6,852 | 6.85 | 18,131,316 | 18,129,364 | 18,109,844 | +| Push (Push21) | 1,000,000 | 249,880 | 7,349 | 7.35 | 1,982,032 | 1,958,803.2 | 1,927,376 | +| Push (Push22) | 1,000,000 | 249,880 | 7,351 | 7.35 | 3,215,688 | 3,213,085.3 | 3,206,904 | +| Push (Push23) | 1,000,000 | 249,880 | 7,552 | 7.55 | 8,082,520 | 8,066,318.4 | 8,044,456 | +| Push (Push24) | 1,000,000 | 249,880 | 7,743 | 7.74 | 17,996,628 | 17,987,258.4 | 17,959,540 | +| Push (Push25) | 1,000,000 | 249,880 | 8,057 | 8.06 | 11,919,264 | 11,919,264 | 11,915,532 | +| Push (Push26) | 1,000,000 | 249,880 | 7,872 | 7.87 | 17,619,384 | 17,602,548 | 17,576,440 | +| Push (Push27) | 1,000,000 | 249,880 | 8,280 | 8.28 | 18,254,396 | 18,239,102 | 18,221,856 | +| Push (Push28) | 1,000,000 | 249,880 | 8,164 | 8.16 | 13,992,624 | 13,992,624 | 13,988,720 | +| Push (Push29) | 1,000,000 | 249,880 | 8,359 | 8.36 | 3,659,764 | 3,656,445.6 | 3,645,124 | +| Push (Push2) | 1,000,000 | 249,880 | 4,949 | 4.95 | 5,082,740 | 5,082,740 | 5,073,956 | +| Push (Push30) | 1,000,000 | 249,880 | 8,759 | 8.76 | 18,023,956 | 18,023,956 | 17,998,580 | +| Push (Push31) | 1,000,000 | 249,880 | 9,072 | 9.07 | 12,745,828 | 12,735,417.3 | 12,723,380 | +| Push (Push32) | 1,000,000 | 249,880 | 9,377 | 9.38 | 14,383,016 | 14,376,672 | 14,368,376 | +| Push (Push3) | 1,000,000 | 249,880 | 4,838 | 4.84 | 6,676,536 | 6,676,536 | 6,667,752 | +| Push (Push4) | 1,000,000 | 249,880 | 4,933 | 4.93 | 10,133,876 | 10,132,229.3 | 10,117,284 | +| Push (Push5) | 1,000,000 | 249,880 | 5,044 | 5.04 | 15,126,720 | 15,125,093.3 | 15,114,032 | +| Push (Push6) | 1,000,000 | 249,880 | 5,280 | 5.28 | 14,306,892 | 14,306,891 | 14,304,940 | +| Push (Push7) | 1,000,000 | 249,880 | 5,343 | 5.34 | 18,529,736 | 18,516,072 | 18,501,432 | +| Push (Push8) | 1,000,000 | 249,880 | 5,365 | 5.37 | 17,959,540 | 17,959,540 | 17,940,020 | +| Push (Push9) | 1,000,000 | 249,880 | 5,474 | 5.47 | 16,093,932 | 16,092,956 | 16,066,604 | +| Return Revert (1Kib Of Non, Zero Data, Return) | 1,000,000 | 249,880 | 5,648 | 5.65 | 1,881,504 | 1,870,280 | 1,854,176 | +| Return Revert (1Kib Of Non, Zero Data, Revert) | 1,000,000 | 249,880 | 5,857 | 5.86 | 18,270,012 | 18,265,864 | 18,254,396 | +| Return Revert (1Kib Of Zero Data, Return) | 1,000,000 | 249,880 | 6,831 | 6.83 | 12,512,712 | 12,512,712 | 12,470,352 | +| Return Revert (1Kib Of Zero Data, Revert) | 1,000,000 | 249,880 | 6,882 | 6.88 | 12,973,688 | 12,973,386.7 | 12,965,428 | +| Return Revert (1Mib Of Non, Zero Data, Return) | 1,000,000 | 249,880 | 3,726 | 3.73 | 7,889,276 | 7,889,276 | 7,889,252 | +| Return Revert (1Mib Of Non, Zero Data, Revert) | 1,000,000 | 249,880 | 3,142 | 3.14 | 17,487,624 | 17,487,624 | 17,476,888 | +| Return Revert (1Mib Of Zero Data, Return) | 1,000,000 | 249,880 | 3,129 | 3.13 | 14,903,216 | 14,903,216 | 14,895,408 | +| Return Revert (1Mib Of Zero Data, Revert) | 1,000,000 | 249,880 | 3,241 | 3.24 | 6,362,264 | 6,362,264 | 6,353,480 | +| Return Revert (Empty, Return) | 1,000,000 | 249,880 | 7,766 | 7.77 | 12,128,600 | 12,127,298.7 | 12,123,720 | +| Return Revert (Empty, Revert) | 1,000,000 | 249,880 | 8,964 | 8.96 | 7,201,620 | 7,193,161.3 | 7,172,340 | +| Returndatasize Nonzero (Returned Size 0, Return Data Style Returndatastyle.Identity) | 1,000,000 | 249,880 | 4,855 | 4.86 | 10,676,160 | 10,671,036 | 10,659,568 | +| Returndatasize Nonzero (Returned Size 0, Return Data Style Returndatastyle.Return) | 1,000,000 | 249,880 | 4,962 | 4.96 | 16,040,252 | 16,038,788 | 16,032,444 | +| Returndatasize Nonzero (Returned Size 0, Return Data Style Returndatastyle.Revert) | 1,000,000 | 249,880 | 4,548 | 4.55 | 16,344,304 | 16,344,304 | 16,332,592 | +| Returndatasize Nonzero (Returned Size 1, Return Data Style Returndatastyle.Identity) | 1,000,000 | 249,880 | 4,789 | 4.79 | 13,689,088 | 13,689,088 | 13,682,256 | +| Returndatasize Nonzero (Returned Size 1, Return Data Style Returndatastyle.Return) | 1,000,000 | 249,880 | 4,838 | 4.84 | 4,803,608 | 4,800,924 | 4,794,824 | +| Returndatasize Nonzero (Returned Size 1, Return Data Style Returndatastyle.Revert) | 1,000,000 | 249,880 | 4,957 | 4.96 | 5,100,308 | 5,090,548 | 5,083,716 | +| Returndatasize Zero | 1,000,000 | 249,880 | 5,049 | 5.05 | 17,341,224 | 17,340,248 | 17,334,392 | +| Shifts (Shift Right Sar) | 1,000,000 | 249,880 | 5,145 | 5.14 | 4,433,708 | 4,428,828 | 4,420,044 | +| Shifts (Shift Right Shr) | 1,000,000 | 249,880 | 4,849 | 4.85 | 14,289,324 | 14,287,372 | 14,272,732 | +| Swap (Swap10) | 1,000,000 | 249,880 | 13,167 | 13.17 | 1,731,200 | 1,710,704 | 1,689,232 | +| Swap (Swap11) | 1,000,000 | 249,880 | 12,069 | 12.07 | 5,433,116 | 5,421,038 | 5,400,908 | +| Swap (Swap12) | 1,000,000 | 249,880 | 12,966 | 12.97 | 14,197,580 | 14,184,566.7 | 14,176,108 | +| Swap (Swap13) | 1,000,000 | 249,880 | 10,973 | 10.97 | 8,199,732 | 8,199,732 | 8,192,900 | +| Swap (Swap14) | 1,000,000 | 249,880 | 10,786 | 10.79 | 17,441,752 | 17,438,498.7 | 17,434,920 | +| Swap (Swap15) | 1,000,000 | 249,880 | 10,969 | 10.97 | 15,802,108 | 15,795,276 | 15,769,900 | +| Swap (Swap16) | 1,000,000 | 249,880 | 11,476 | 11.48 | 14,269,804 | 14,269,804 | 14,255,164 | +| Swap (Swap1) | 1,000,000 | 249,880 | 13,528 | 13.53 | 9,033,588 | 9,025,789.6 | 9,009,200 | +| Swap (Swap2) | 1,000,000 | 249,880 | 11,553 | 11.55 | 7,010,324 | 6,988,689.3 | 6,960,548 | +| Swap (Swap3) | 1,000,000 | 249,880 | 13,793 | 13.79 | 12,698,332 | 12,698,332 | 12,662,220 | +| Swap (Swap4) | 1,000,000 | 249,880 | 14,791 | 14.79 | 5,641,000 | 5,619,365.3 | 5,598,056 | +| Swap (Swap5) | 1,000,000 | 249,880 | 11,200 | 11.20 | 9,657,004 | 9,651,473.3 | 9,639,436 | +| Swap (Swap6) | 1,000,000 | 249,880 | 11,068 | 11.07 | 14,979,344 | 14,962,508 | 14,927,616 | +| Swap (Swap7) | 1,000,000 | 249,880 | 11,375 | 11.38 | 4,072,592 | 4,062,100 | 4,047,216 | +| Swap (Swap8) | 1,000,000 | 249,880 | 11,360 | 11.36 | 10,518,668 | 10,501,595.5 | 10,482,556 | +| Swap (Swap9) | 1,000,000 | 249,880 | 12,489 | 12.49 | 15,972,908 | 15,965,588 | 15,937,772 | +| Tload (Val Mut False, Key Mut False) | 1,000,000 | 249,880 | 3,428 | 3.43 | 15,620,572 | 15,616,668 | 15,610,812 | +| Tload (Val Mut False, Key Mut True) | 1,000,000 | 249,880 | 3,531 | 3.53 | 3,170,792 | 3,170,466.7 | 3,162,984 | +| Tload (Val Mut True, Key Mut False) | 1,000,000 | 249,880 | 3,863 | 3.86 | 11,433,432 | 11,433,432 | 11,410,984 | +| Tload (Val Mut True, Key Mut True) | 1,000,000 | 249,880 | 3,944 | 3.94 | 5,596,104 | 5,596,104 | 5,577,560 | +| Tstore (Dense Val Mut False, Key Mut False) | 1,000,000 | 249,880 | 4,140 | 4.14 | 17,249,484 | 17,246,230.7 | 17,232,892 | +| Tstore (Dense Val Mut False, Key Mut True) | 1,000,000 | 249,880 | 5,041 | 5.04 | 12,527,352 | 12,525,074.7 | 12,514,664 | +| Tstore (Dense Val Mut True, Key Mut False) | 1,000,000 | 249,880 | 5,837 | 5.84 | 3,882,272 | 3,882,272 | 3,872,512 | +| Tstore (Dense Val Mut True, Key Mut True) | 1,000,000 | 249,880 | 5,639 | 5.64 | 12,412,768 | 12,404,624 | 12,381,952 | +| Unop (Iszero) | 1,000,000 | 249,880 | 7,232 | 7.23 | 13,007,848 | 13,005,652 | 12,991,256 | +| Unop (Not) | 1,000,000 | 249,880 | 3,946 | 3.95 | 17,270,956 | 17,270,956 | 17,257,292 | +| Zero Param (Address) | 1,000,000 | 249,880 | 8,563 | 8.56 | 14,148,784 | 14,148,133.3 | 14,138,048 | +| Zero Param (Basefee) | 1,000,000 | 249,880 | 5,460 | 5.46 | 8,290,668 | 8,290,668 | 8,281,884 | +| Zero Param (Blobbasefee) | 1,000,000 | 249,880 | 5,856 | 5.86 | 1,548,688 | 1,546,410.7 | 1,519,408 | +| Zero Param (Caller) | 1,000,000 | 249,880 | 8,342 | 8.34 | 14,059,968 | 14,056,714.7 | 14,037,520 | +| Zero Param (Chainid) | 1,000,000 | 249,880 | 5,334 | 5.33 | 14,133,168 | 14,132,192 | 14,129,264 | +| Zero Param (Codesize) | 1,000,000 | 249,880 | 5,554 | 5.55 | 15,610,812 | 15,610,812 | 15,555,180 | +| Zero Param (Coinbase) | 1,000,000 | 249,880 | 8,678 | 8.68 | 13,289,908 | 13,281,937.3 | 13,269,412 | +| Zero Param (Gaslimit) | 1,000,000 | 249,880 | 5,440 | 5.44 | 13,193,288 | 13,193,288 | 13,191,336 | +| Zero Param (Gasprice) | 1,000,000 | 249,880 | 5,951 | 5.95 | 12,328,272 | 12,317,048 | 12,306,800 | +| Zero Param (Gas) | 1,000,000 | 249,880 | 5,150 | 5.15 | 5,864,504 | 5,849,213.3 | 5,827,416 | +| Zero Param (Number) | 1,000,000 | 249,880 | 5,331 | 5.33 | 12,037,744 | 12,028,569.6 | 12,018,224 | +| Zero Param (Origin) | 1,000,000 | 249,880 | 8,872 | 8.87 | 15,067,184 | 15,067,184 | 15,045,712 | +| Zero Param (Prevrandao) | 1,000,000 | 249,880 | 12,780 | 12.78 | 11,131,860 | 11,121,842.4 | 11,102,580 | +| Zero Param (Timestamp) | 1,000,000 | 249,880 | 5,434 | 5.43 | 5,803,016 | 5,795,696 | 5,783,496 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 0Bytes, Call) | 1,000,000 | 249,880 | 5,036 | 5.04 | 15,685,964 | 15,665,468 | 15,643,996 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 0Bytes, Transaction) | 1,000,000 | 249,880 | 5,031 | 5.03 | 6,785,848 | 6,785,522.7 | 6,767,304 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 100Bytes, Call) | 1,000,000 | 249,880 | 5,047 | 5.05 | 9,170,128 | 9,170,128 | 9,134,992 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 100Bytes, Transaction) | 1,000,000 | 249,880 | 4,848 | 4.85 | 5,357,964 | 5,352,840 | 5,341,372 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 10Kib, Call) | 1,000,000 | 249,880 | 4,850 | 4.85 | 12,377,072 | 12,371,216 | 12,354,624 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 10Kib, Transaction) | 1,000,000 | 249,880 | 3,753 | 3.75 | 4,278,528 | 4,278,528 | 4,268,768 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 1Mib, Call) | 1,000,000 | 249,880 | 3,340 | 3.34 | 11,738,008 | 11,738,008 | 11,733,128 | +| Calldatacopy (Zero Data, Dynamic Src Dst, 1Mib, Transaction) | 1,000,000 | 249,880 | 3,343 | 3.34 | 11,154,304 | 11,152,677.3 | 11,145,520 | +| Calldatacopy (Zero Data, Fixed Src Dst, 0Bytes, Call) | 1,000,000 | 249,880 | 4,942 | 4.94 | 2,402,688 | 2,402,688 | 2,396,832 | +| Calldatacopy (Zero Data, Fixed Src Dst, 0Bytes, Transaction) | 1,000,000 | 249,880 | 4,633 | 4.63 | 1,474,516 | 1,467,196 | 1,456,948 | +| Calldatacopy (Zero Data, Fixed Src Dst, 100Bytes, Call) | 1,000,000 | 249,880 | 4,241 | 4.24 | 9,751,148 | 9,751,148 | 9,743,340 | +| Calldatacopy (Zero Data, Fixed Src Dst, 100Bytes, Transaction) | 1,000,000 | 249,880 | 4,659 | 4.66 | 13,412,884 | 13,412,884 | 13,409,956 | +| Calldatacopy (Zero Data, Fixed Src Dst, 10Kib, Call) | 1,000,000 | 249,880 | 3,848 | 3.85 | 7,480,748 | 7,480,748 | 7,476,844 | +| Calldatacopy (Zero Data, Fixed Src Dst, 10Kib, Transaction) | 1,000,000 | 249,880 | 3,831 | 3.83 | 12,304,848 | 12,304,848 | 12,258,408 | +| Calldatacopy (Zero Data, Fixed Src Dst, 1Mib, Call) | 1,000,000 | 249,880 | 3,129 | 3.13 | 18,107,892 | 18,105,452 | 18,084,468 | +| Calldatacopy (Zero Data, Fixed Src Dst, 1Mib, Transaction) | 1,000,000 | 249,880 | 3,336 | 3.34 | 16,567,812 | 16,562,444 | 16,555,124 | +| Calldatacopy (Non Zero, Dynamic Src Dst, 100Bytes, Call) | 1,000,000 | 249,880 | 5,365 | 5.37 | 7,457,328 | 7,456,840 | 7,436,832 | +| Calldatacopy (Non Zero, Dynamic Src Dst, 100Bytes, Transaction) | 1,000,000 | 249,880 | 4,737 | 4.74 | 15,814,796 | 15,814,796 | 15,805,036 | +| Calldatacopy (Non Zero, Dynamic Src Dst, 10Kib, Call) | 1,000,000 | 249,880 | 4,529 | 4.53 | 9,693,116 | 9,688,561.3 | 9,682,380 | +| Calldatacopy (Non Zero, Dynamic Src Dst, 10Kib, Transaction) | 1,000,000 | 249,880 | 4,340 | 4.34 | 13,591,488 | 13,583,354.7 | 13,562,208 | +| Calldatacopy (Non Zero, Fixed Src Dst, 100Bytes, Call) | 1,000,000 | 249,880 | 4,536 | 4.54 | 6,401,304 | 6,394,472 | 6,382,760 | +| Calldatacopy (Non Zero, Fixed Src Dst, 100Bytes, Transaction) | 1,000,000 | 249,880 | 4,134 | 4.13 | 630,284 | 625,404 | 605,884 | +| Calldatacopy (Non Zero, Fixed Src Dst, 10Kib, Call) | 1,000,000 | 249,880 | 3,632 | 3.63 | 10,003,728 | 10,002,549.3 | 10,000,800 | +| Calldatacopy (Non Zero, Fixed Src Dst, 10Kib, Transaction) | 1,000,000 | 249,880 | 3,955 | 3.96 | 17,641,832 | 17,641,832 | 17,622,312 | +| Codecopy (Dynamic Src Dst, 0Bytes) | 1,000,000 | 249,880 | 4,946 | 4.95 | 4,374,172 | 4,371,244 | 4,355,628 | +| Codecopy (Dynamic Src Dst, 0.25X Max Code) | 1,000,000 | 249,880 | 4,541 | 4.54 | 16,332,592 | 16,332,592 | 16,325,760 | +| Codecopy (Dynamic Src Dst, 0.50X Max Code Size) | 1,000,000 | 249,880 | 4,354 | 4.35 | 14,922,736 | 14,916,392 | 14,903,216 | +| Codecopy (Dynamic Src Dst, 0.75X Max Code Size) | 1,000,000 | 249,880 | 4,531 | 4.53 | 17,283,644 | 17,283,644 | 17,277,788 | +| Codecopy (Dynamic Src Dst, Max Code) | 1,000,000 | 249,880 | 4,337 | 4.34 | 8,320,924 | 8,320,924 | 8,302,380 | +| Codecopy (Fixed Src Dst, 0Bytes) | 1,000,000 | 249,880 | 4,444 | 4.44 | 18,421,952 | 18,421,952 | 18,337,356 | +| Codecopy (Fixed Src Dst, 0.25X Max Code) | 1,000,000 | 249,880 | 3,726 | 3.73 | 1,137,800 | 1,126,576 | 1,111,448 | +| Codecopy (Fixed Src Dst, 0.50X Max Code Size) | 1,000,000 | 249,880 | 4,055 | 4.05 | 9,795,064 | 9,791,648 | 9,781,400 | +| Codecopy (Fixed Src Dst, 0.75X Max Code Size) | 1,000,000 | 249,880 | 3,751 | 3.75 | 16,373,584 | 16,373,584 | 16,364,800 | +| Codecopy (Fixed Src Dst, Max Code) | 1,000,000 | 249,880 | 3,651 | 3.65 | 4,463,960 | 4,462,333.3 | 4,453,224 | +| Mcopy (Dynamic Src Dst, 0Bytes) | 1,000,000 | 249,880 | 5,247 | 5.25 | 16,968,984 | 16,964,754.7 | 16,954,344 | +| Mcopy (Dynamic Src Dst, 100Bytes) | 1,000,000 | 249,880 | 5,143 | 5.14 | 9,226,176 | 9,215,928 | 9,199,824 | +| Mcopy (Dynamic Src Dst, 10Kib) | 1,000,000 | 249,880 | 4,326 | 4.33 | 6,667,752 | 6,665,800 | 6,659,944 | +| Mcopy (Dynamic Src Dst, 1Mib) | 1,000,000 | 249,880 | 3,638 | 3.64 | 11,334,992 | 11,334,992 | 11,325,232 | +| Mcopy (Fixed Src Dst, 0Bytes) | 1,000,000 | 249,880 | 4,140 | 4.14 | 11,145,520 | 11,144,869.3 | 11,140,640 | +| Mcopy (Fixed Src Dst, 100Bytes) | 1,000,000 | 249,880 | 4,349 | 4.35 | 14,174,156 | 14,171,878.7 | 14,165,372 | +| Mcopy (Fixed Src Dst, 10Kib) | 1,000,000 | 249,880 | 4,834 | 4.83 | 478,028 | 460,604.4 | 128,620 | +| Mcopy (Fixed Src Dst, 1Mib) | 1,000,000 | 249,880 | 3,234 | 3.23 | 1,572,112 | 1,563,328 | 1,550,640 | +| Returndatacopy (Fixed Dst False, 0Bytes) | 1,000,000 | 249,880 | 5,044 | 5.04 | 1,519,408 | 1,506,915.2 | 1,475,488 | +| Returndatacopy (Fixed Dst False, 100Bytes) | 1,000,000 | 249,880 | 5,443 | 5.44 | 6,762,424 | 6,762,424 | 6,730,216 | +| Returndatacopy (Fixed Dst False, 10Kib) | 1,000,000 | 249,880 | 4,534 | 4.53 | 13,539,760 | 13,539,760 | 13,537,808 | +| Returndatacopy (Fixed Dst False, 1Mib) | 1,000,000 | 249,880 | 3,638 | 3.64 | 8,777,120 | 8,777,120 | 8,750,768 | +| Returndatacopy (Fixed Dst True, 0Bytes) | 1,000,000 | 249,880 | 4,839 | 4.84 | 6,415,944 | 6,415,456 | 6,402,280 | +| Returndatacopy (Fixed Dst True, 100Bytes) | 1,000,000 | 249,880 | 4,754 | 4.75 | 6,700,936 | 6,698,008 | 6,689,224 | +| Returndatacopy (Fixed Dst True, 10Kib) | 1,000,000 | 249,880 | 3,727 | 3.73 | 9,128,160 | 9,128,160 | 9,124,256 | +| Returndatacopy (Fixed Dst True, 1Mib) | 1,000,000 | 249,880 | 3,243 | 3.24 | 7,059,124 | 7,059,124 | 7,019,108 | +| Log Opcodes (Dynamic, Non Zero Topic, 0 Bytes Data, Log0) | 1,000,000 | 249,880 | 3,227 | 3.23 | 17,755,272 | 17,755,272 | 17,750,392 | +| Log Opcodes (Dynamic, Non Zero Topic, 0 Bytes Data, Log1) | 1,000,000 | 249,880 | 3,432 | 3.43 | 6,287,112 | 6,284,834.7 | 6,279,304 | +| Log Opcodes (Dynamic, Non Zero Topic, 0 Bytes Data, Log2) | 1,000,000 | 249,880 | 3,248 | 3.25 | 11,217,744 | 11,217,418.7 | 11,208,960 | +| Log Opcodes (Dynamic, Non Zero Topic, 0 Bytes Data, Log3) | 1,000,000 | 249,880 | 3,437 | 3.44 | 18,491,672 | 18,482,402 | 18,469,228 | +| Log Opcodes (Dynamic, Non Zero Topic, 0 Bytes Data, Log4) | 1,000,000 | 249,880 | 3,428 | 3.43 | 11,742,888 | 11,740,936 | 11,738,008 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log0) | 1,000,000 | 249,880 | 3,758 | 3.76 | 13,988,720 | 13,988,720 | 13,964,320 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log1) | 1,000,000 | 249,880 | 3,331 | 3.33 | 7,297,268 | 7,295,966.7 | 7,294,340 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log2) | 1,000,000 | 249,880 | 3,337 | 3.34 | 14,887,600 | 14,883,696 | 14,869,056 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log3) | 1,000,000 | 249,880 | 3,147 | 3.15 | 2,611,552 | 2,611,552 | 2,598,864 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Non Zero Data, Log4) | 1,000,000 | 249,880 | 3,232 | 3.23 | 5,488,744 | 5,488,744 | 5,486,792 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log0) | 1,000,000 | 249,880 | 3,325 | 3.33 | 4,567,416 | 4,567,416 | 4,552,776 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log1) | 1,000,000 | 249,880 | 3,232 | 3.23 | 6,003,096 | 6,000,168 | 5,992,360 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log2) | 1,000,000 | 249,880 | 3,430 | 3.43 | 12,039,236 | 12,039,236 | 12,038,260 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log3) | 1,000,000 | 249,880 | 3,451 | 3.45 | 8,159,716 | 8,159,716 | 8,131,412 | +| Log Opcodes (Dynamic, Non Zero Topic, 1 Mib Zeros Data, Log4) | 1,000,000 | 249,880 | 3,523 | 3.52 | 7,406,576 | 7,406,576 | 7,369,488 | +| Log Opcodes (Dynamic, Zero Topic, 0 Bytes Data, Log0) | 1,000,000 | 249,880 | 3,432 | 3.43 | 16,942,748 | 16,937,217.3 | 16,927,132 | +| Log Opcodes (Dynamic, Zero Topic, 0 Bytes Data, Log1) | 1,000,000 | 249,880 | 3,436 | 3.44 | 11,136,740 | 11,135,764 | 11,132,836 | +| Log Opcodes (Dynamic, Zero Topic, 0 Bytes Data, Log2) | 1,000,000 | 249,880 | 3,326 | 3.33 | 8,042,504 | 8,042,504 | 8,039,576 | +| Log Opcodes (Dynamic, Zero Topic, 0 Bytes Data, Log3) | 1,000,000 | 249,880 | 3,440 | 3.44 | 16,050,988 | 16,050,988 | 16,040,252 | +| Log Opcodes (Dynamic, Zero Topic, 0 Bytes Data, Log4) | 1,000,000 | 249,880 | 3,542 | 3.54 | 5,283,792 | 5,281,189.3 | 5,276,960 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Non Zero Data, Log0) | 1,000,000 | 249,880 | 3,525 | 3.52 | 9,055,060 | 9,047,577.3 | 9,033,588 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Non Zero Data, Log1) | 1,000,000 | 249,880 | 3,330 | 3.33 | 10,200,844 | 10,200,844 | 10,193,036 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Non Zero Data, Log2) | 1,000,000 | 249,880 | 3,222 | 3.22 | 5,782,520 | 5,778,616 | 5,769,832 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Non Zero Data, Log3) | 1,000,000 | 249,880 | 3,349 | 3.35 | 10,341,892 | 10,341,892 | 10,322,372 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Non Zero Data, Log4) | 1,000,000 | 249,880 | 3,241 | 3.24 | 6,252,952 | 6,252,301.3 | 6,247,096 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Zeros Data, Log0) | 1,000,000 | 249,880 | 3,231 | 3.23 | 6,441,320 | 6,441,320 | 6,417,896 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Zeros Data, Log1) | 1,000,000 | 249,880 | 3,640 | 3.64 | 6,657,992 | 6,650,184 | 6,638,472 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Zeros Data, Log2) | 1,000,000 | 249,880 | 3,232 | 3.23 | 18,624,364 | 18,618,836 | 18,608,264 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Zeros Data, Log3) | 1,000,000 | 249,880 | 3,332 | 3.33 | 5,122,756 | 5,120,316 | 5,104,212 | +| Log Opcodes (Dynamic, Zero Topic, 1 Mib Zeros Data, Log4) | 1,000,000 | 249,880 | 3,231 | 3.23 | 7,475,872 | 7,475,872 | 7,462,208 | +| Log Opcodes (Fixed, Non Zero Topic, 0 Bytes Data, Log0) | 1,000,000 | 249,880 | 3,421 | 3.42 | 17,321,708 | 17,321,708 | 17,290,476 | +| Log Opcodes (Fixed, Non Zero Topic, 0 Bytes Data, Log1) | 1,000,000 | 249,880 | 3,339 | 3.34 | 12,011,424 | 12,008,821.3 | 12,001,664 | +| Log Opcodes (Fixed, Non Zero Topic, 0 Bytes Data, Log2) | 1,000,000 | 249,880 | 3,338 | 3.34 | 13,668,592 | 13,668,592 | 13,654,928 | +| Log Opcodes (Fixed, Non Zero Topic, 0 Bytes Data, Log3) | 1,000,000 | 249,880 | 3,448 | 3.45 | 18,573,148 | 18,554,929.3 | 18,536,568 | +| Log Opcodes (Fixed, Non Zero Topic, 0 Bytes Data, Log4) | 1,000,000 | 249,880 | 3,432 | 3.43 | 4,570,344 | 4,570,344 | 4,567,416 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log0) | 1,000,000 | 249,880 | 3,430 | 3.43 | 9,092,508 | 9,092,508 | 9,056,036 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log1) | 1,000,000 | 249,880 | 3,726 | 3.73 | 13,639,312 | 13,639,312 | 13,623,696 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log2) | 1,000,000 | 249,880 | 3,141 | 3.14 | 16,003,164 | 16,003,164 | 15,998,284 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log3) | 1,000,000 | 249,880 | 3,539 | 3.54 | 14,750,960 | 14,734,858 | 14,716,804 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Non Zero Data, Log4) | 1,000,000 | 249,880 | 3,130 | 3.13 | 2,171,376 | 2,171,376 | 2,134,288 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Zeros Data, Log0) | 1,000,000 | 249,880 | 3,134 | 3.13 | 5,822,536 | 5,817,656 | 5,803,016 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Zeros Data, Log1) | 1,000,000 | 249,880 | 3,151 | 3.15 | 14,157,564 | 14,156,913.3 | 14,154,636 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Zeros Data, Log2) | 1,000,000 | 249,880 | 3,228 | 3.23 | 5,681,992 | 5,681,992 | 5,644,904 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Zeros Data, Log3) | 1,000,000 | 249,880 | 3,339 | 3.34 | 1,332,020 | 1,312,744 | 1,293,956 | +| Log Opcodes (Fixed, Non Zero Topic, 1 Mib Zeros Data, Log4) | 1,000,000 | 249,880 | 3,131 | 3.13 | 3,357,204 | 3,356,228 | 3,347,444 | +| Log Opcodes (Fixed, Zero Topic, 0 Bytes Data, Log0) | 1,000,000 | 249,880 | 3,348 | 3.35 | 1,917,616 | 1,906,392 | 1,888,336 | +| Log Opcodes (Fixed, Zero Topic, 0 Bytes Data, Log1) | 1,000,000 | 249,880 | 3,245 | 3.25 | 8,478,076 | 8,478,076 | 8,461,484 | +| Log Opcodes (Fixed, Zero Topic, 0 Bytes Data, Log2) | 1,000,000 | 249,880 | 3,529 | 3.53 | 9,596,492 | 9,596,492 | 9,590,636 | +| Log Opcodes (Fixed, Zero Topic, 0 Bytes Data, Log3) | 1,000,000 | 249,880 | 3,535 | 3.54 | 9,714,588 | 9,705,316 | 9,696,044 | +| Log Opcodes (Fixed, Zero Topic, 0 Bytes Data, Log4) | 1,000,000 | 249,880 | 3,241 | 3.24 | 12,059,732 | 12,059,732 | 12,056,804 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Non Zero Data, Log0) | 1,000,000 | 249,880 | 3,438 | 3.44 | 5,447,756 | 5,444,828 | 5,439,948 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Non Zero Data, Log1) | 1,000,000 | 249,880 | 3,247 | 3.25 | 5,131,536 | 5,129,584 | 5,122,752 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Non Zero Data, Log2) | 1,000,000 | 249,880 | 3,345 | 3.35 | 8,419,492 | 8,410,057.3 | 8,399,972 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Non Zero Data, Log3) | 1,000,000 | 249,880 | 3,223 | 3.22 | 13,425,572 | 13,425,084 | 13,413,860 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Non Zero Data, Log4) | 1,000,000 | 249,880 | 3,442 | 3.44 | 10,368,924 | 10,368,924 | 10,347,452 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Zeros Data, Log0) | 1,000,000 | 249,880 | 3,344 | 3.34 | 2,134,288 | 2,132,010.7 | 2,123,552 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Zeros Data, Log1) | 1,000,000 | 249,880 | 3,330 | 3.33 | 8,358,988 | 8,355,572 | 8,339,468 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Zeros Data, Log2) | 1,000,000 | 249,880 | 3,319 | 3.32 | 16,583,424 | 16,583,424 | 16,573,664 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Zeros Data, Log3) | 1,000,000 | 249,880 | 3,349 | 3.35 | 9,135,968 | 9,135,642.7 | 9,133,040 | +| Log Opcodes (Fixed, Zero Topic, 1 Mib Zeros Data, Log4) | 1,000,000 | 249,880 | 3,232 | 3.23 | 8,525,900 | 8,525,900 | 8,505,404 | +| Address State Cold (Absent Accounts False, Balance) | 1,000,000 | 249,880 | 3,646 | 3.65 | 14,255,164 | 14,250,284 | 14,239,548 | +| Address State Cold (Absent Accounts True, Balance) | 1,000,000 | 249,880 | 3,222 | 3.22 | 13,673,472 | 13,673,472 | 13,670,544 | +| Address State Warm (Present Target, Balance) | 1,000,000 | 249,880 | 4,573 | 4.57 | 16,547,316 | 16,547,316 | 16,377,488 | +| Address State Warm (Present Target, Callcode) | 1,000,000 | 249,880 | 8,055 | 8.05 | 17,531,544 | 17,525,688 | 17,516,904 | +| Address State Warm (Present Target, Call) | 1,000,000 | 249,880 | 8,141 | 8.14 | 13,795,472 | 13,795,472 | 13,773,024 | +| Address State Warm (Present Target, Delegatecall) | 1,000,000 | 249,880 | 7,440 | 7.44 | 8,008,344 | 8,008,344 | 7,996,632 | +| Address State Warm (Present Target, Extcodehash) | 1,000,000 | 249,880 | 4,242 | 4.24 | 3,376,724 | 3,372,820 | 3,361,108 | +| Address State Warm (Present Target, Extcodesize) | 1,000,000 | 249,880 | 4,238 | 4.24 | 12,056,804 | 12,056,804 | 12,047,044 | +| Address State Warm (Present Target, Staticcall) | 1,000,000 | 249,880 | 8,264 | 8.26 | 17,470,056 | 17,466,640 | 17,461,272 | +| Address State Warm (Absent Target, Balance) | 1,000,000 | 249,880 | 4,343 | 4.34 | 4,332,204 | 4,330,252 | 4,324,396 | +| Address State Warm (Absent Target, Callcode) | 1,000,000 | 249,880 | 7,359 | 7.36 | 1,754,624 | 1,750,394.7 | 1,733,152 | +| Address State Warm (Absent Target, Call) | 1,000,000 | 249,880 | 6,953 | 6.95 | 16,025,612 | 16,023,269.6 | 16,014,876 | +| Address State Warm (Absent Target, Delegatecall) | 1,000,000 | 249,880 | 6,655 | 6.66 | 8,664,996 | 8,650,030.7 | 8,634,740 | +| Address State Warm (Absent Target, Extcodehash) | 1,000,000 | 249,880 | 4,957 | 4.96 | 13,441,188 | 13,439,236 | 13,432,404 | +| Address State Warm (Absent Target, Extcodesize) | 1,000,000 | 249,880 | 4,748 | 4.75 | 2,906,296 | 2,903,856 | 2,896,536 | +| Address State Warm (Absent Target, Staticcall) | 1,000,000 | 249,880 | 7,360 | 7.36 | 12,436,192 | 12,426,920 | 12,416,672 | +| Blockhash | 1,000,000 | 249,880 | 4,951 | 4.95 | 16,198,364 | 16,191,532 | 16,182,748 | +| Extcodecopy Warm (1Kib) | 1,000,000 | 249,880 | 3,634 | 3.63 | 605,884 | 587,218 | 574,652 | +| Extcodecopy Warm (512) | 1,000,000 | 249,880 | 4,151 | 4.15 | 13,473,396 | 13,472,745.3 | 13,462,660 | +| Extcodecopy Warm (5Kib) | 1,000,000 | 249,880 | 4,238 | 4.24 | 11,912,604 | 11,911,628 | 11,907,724 | +| Selfbalance | 1,000,000 | 249,880 | 20,234 | 20.23 | 5,558,040 | 5,546,505.5 | 5,531,688 | +| Selfdestruct Created (No Value) | 965,720 | 249,880 | 3,138 | 3.14 | 5,399,932 | 5,399,932 | 5,397,004 | +| Selfdestruct Created (With Value) | 965,720 | 249,880 | 3,518 | 3.52 | 9,782,380 | 9,772,294.7 | 9,762,860 | +| Selfdestruct Existing (No Value) | 998,771 | 249,880 | 3,525 | 3.52 | 6,354,456 | 6,347,624 | 6,337,864 | +| Selfdestruct Existing (With Value) | 998,771 | 249,880 | 3,431 | 3.43 | 4,444,440 | 4,444,440 | 4,434,680 | +| Selfdestruct Initcode (No Value) | 989,164 | 249,880 | 3,148 | 3.15 | 16,983,624 | 16,982,160 | 16,971,912 | +| Selfdestruct Initcode (With Value) | 989,164 | 249,880 | 3,535 | 3.54 | 12,454,736 | 12,454,736 | 12,446,928 | +| Storage Access Cold (Absent Slots False, Ssload) | 999,749 | 249,880 | 4,142 | 4.14 | 5,388,220 | 5,385,617.3 | 5,374,556 | +| Storage Access Cold (Absent Slots False, Sstore New Value, Out Of Gas) | 1,000,000 | 249,880 | 3,954 | 3.95 | 10,813,548 | 10,813,548 | 10,780,428 | +| Storage Access Cold (Absent Slots False, Sstore New Value, Revert) | 998,963 | 249,880 | 3,944 | 3.94 | 11,179,680 | 11,170,408 | 11,158,208 | +| Storage Access Cold (Absent Slots False, Sstore New Value) | 998,957 | 249,880 | 3,747 | 3.75 | 5,133,488 | 5,133,488 | 5,131,536 | +| Storage Access Cold (Absent Slots False, Sstore Same Value, Out Of Gas) | 1,000,000 | 249,880 | 4,631 | 4.63 | 16,602,944 | 16,596,112 | 16,585,376 | +| Storage Access Cold (Absent Slots False, Sstore Same Value, Revert) | 999,015 | 249,880 | 4,050 | 4.05 | 17,670,136 | 17,661,677.3 | 17,644,760 | +| Storage Access Cold (Absent Slots False, Sstore Same Value) | 999,009 | 249,880 | 4,535 | 4.54 | 855,740 | 838,172 | 817,676 | +| Storage Access Cold (Absent Slots True, Ssload) | 999,749 | 249,880 | 3,747 | 3.75 | 18,333,452 | 18,324,668 | 18,307,100 | +| Storage Access Cold (Absent Slots True, Sstore New Value, Out Of Gas) | 1,000,000 | 249,880 | 3,342 | 3.34 | 3,641,220 | 3,640,732 | 3,636,340 | +| Storage Access Cold (Absent Slots True, Sstore New Value, Revert) | 995,213 | 249,880 | 3,132 | 3.13 | 661,516 | 651,105.3 | 631,260 | +| Storage Access Cold (Absent Slots True, Sstore New Value) | 995,207 | 249,880 | 3,647 | 3.65 | 3,156,152 | 3,153,712 | 3,138,584 | +| Storage Access Cold (Absent Slots True, Sstore Same Value, Out Of Gas) | 1,000,000 | 249,880 | 3,325 | 3.33 | 17,551,064 | 17,548,461.3 | 17,539,352 | +| Storage Access Cold (Absent Slots True, Sstore Same Value, Revert) | 995,081 | 249,880 | 3,427 | 3.43 | 15,156,976 | 15,155,024 | 15,129,648 | +| Storage Access Cold (Absent Slots True, Sstore Same Value) | 995,075 | 249,880 | 3,548 | 3.55 | 18,603,384 | 18,601,432 | 18,584,860 | +| Storage Access Warm (Sload) | 1,000,000 | 249,880 | 4,149 | 4.15 | 571,724 | 562,647.2 | 549,276 | +| Storage Access Warm (Sstore New Value) | 1,000,000 | 249,880 | 6,351 | 6.35 | 10,648,584 | 10,645,070.4 | 10,635,896 | +| Storage Access Warm (Sstore Same Value) | 1,000,000 | 249,880 | 5,245 | 5.25 | 6,900,040 | 6,893,208 | 6,872,712 | + +## Summary Statistics + +- **Total Tests:** 508 +- **Successful Tests:** 508 +- **Failed Tests:** 0 + +### Proving Time (ms) +- **Average:** 11,193.2 +- **Minimum:** 2,924 +- **Maximum:** 113,505 + +### Peak Memory Usage (MB) +- **Average:** 9,756,025.5 +- **Minimum:** 478,028 +- **Maximum:** 18,624,364 + +### Proof Size (bytes) +- **Average:** 249,880 +- **Minimum:** 249,880 +- **Maximum:** 249,880 diff --git a/www/docs/pages/download-fixtures.mdx b/www/docs/pages/download-fixtures.mdx new file mode 100644 index 00000000..e4e073de --- /dev/null +++ b/www/docs/pages/download-fixtures.mdx @@ -0,0 +1,189 @@ +# Download Fixtures + +This guide explains how to download and extract execution spec test fixtures for zkEVM benchmarking using the automated download script. + +## Overview + +The `download-and-extract-fixtures.sh` script automatically downloads execution spec test fixtures from the [ethereum/execution-spec-tests](https://github.com/ethereum/execution-spec-tests) repository. These fixtures are essential for running zkEVM benchmarks and profiling different opcodes across various gas categories. + + +## Recommended Fixtures + +The recommended fixture to download for zkGas profiling is `zkevm@v0.1.0`. + +```bash +./scripts/download-and-extract-fixtures.sh zkevm@v0.1.0 +``` + +## Quick Start + +The simplest way to download fixtures is to use the default settings: + +```bash +./scripts/download-and-extract-fixtures.sh +``` + +This will: +- Find the latest release with the `benchmark@` prefix +- Download the appropriate fixture archive +- Extract it to `./zkevm-fixtures/` directory + +## Script Usage + +### Basic Syntax + +```bash +./scripts/download-and-extract-fixtures.sh [TAG|latest] [DEST_DIR] +``` + +### Parameters + +- **TAG** (optional): Specific release tag to download. Can be: + - `latest` - Explicitly fetch the latest release + - `benchmark@v0.1.0` - Download a specific benchmark release + - `zkevm@v0.1.0` - Download a specific zkEVM release + - Any other valid release tag +- **DEST_DIR** (optional): Destination directory for extraction (default: `./zkevm-fixtures`) + +## Examples + +### Download Latest Release + +```bash +# Download latest benchmark release to default directory +./scripts/download-and-extract-fixtures.sh + +# Explicitly download latest release +./scripts/download-and-extract-fixtures.sh latest +``` + +### Download to Custom Directory + +```bash +# Download latest release to a custom directory +./scripts/download-and-extract-fixtures.sh latest /tmp/fixtures + +# Download to a specific path +./scripts/download-and-extract-fixtures.sh latest ./my-test-fixtures +``` + +### Download Specific Release + +```bash +# Download a specific benchmark release +./scripts/download-and-extract-fixtures.sh benchmark@v0.1.0 + +# Download a specific zkEVM release +./scripts/download-and-extract-fixtures.sh zkevm@v0.1.0 + +# Download to custom directory +./scripts/download-and-extract-fixtures.sh benchmark@v0.1.0 /tmp/fixtures +``` + +## Asset Name Resolution + +The script automatically determines the correct asset name based on the release tag: + +| Tag Pattern | Asset Name | +|-------------|------------| +| `v4.5.0` (version tags) | `fixtures_stable.tar.gz` | +| `benchmark@v0.1.0` | `fixtures_benchmark.tar.gz` | +| `zkevm@v0.1.0` | `fixtures_zkevm.tar.gz` | +| `verkle@v0.1.0` | `fixtures_verkle.tar.gz` | +| Other tags | `fixtures_benchmark.tar.gz` (fallback) | + +## Authentication + +The script supports GitHub token authentication for higher rate limits: + +```bash +# Set GitHub token for authenticated requests +export GITHUB_TOKEN=your_github_token_here +./scripts/download-and-extract-fixtures.sh +``` + +When authenticated, the script will display: +``` +🔑 Using GitHub token for API authentication +``` + +## Download Strategies + +The script uses multiple download strategies with automatic fallback: + +1. **HTTP/1.1 with retries** - Primary method with 3 retries +2. **HTTP/2 with extended options** - Fallback if HTTP/1.1 fails +3. **wget fallback** - Final fallback if curl fails + +## Error Handling + +The script includes comprehensive error handling: + +- **Missing releases**: Fails gracefully if no releases with the specified prefix are found +- **Missing assets**: Validates that the required asset exists in the release +- **Download failures**: Tries multiple strategies before failing +- **Network issues**: Includes retry logic with exponential backoff + +## Directory Structure + +After successful extraction, the fixtures will be organized in the destination directory: + +``` +zkevm-fixtures/ +├── blockchain_tests/ # Main test fixtures +│ ├── GeneralStateTests/ # General state tests +│ ├── LegacyTests/ # Legacy test cases +│ └── ... # Other test categories +└── ... # Additional fixture data +``` + +## Integration with Workflow + +This script is typically used as the first step in the zkEVM profiling workflow: + +```bash +# 1. Download fixtures +./scripts/download-and-extract-fixtures.sh + +# 2. Generate gas-categorized fixtures +./scripts/generate-gas-categorized-fixtures.sh + +# 3. Run benchmarks +./scripts/run-gas-categorized-benchmarks.sh +``` + +## Troubleshooting + +### Common Issues + +**Script fails with "Could not find any releases"** +- Check your internet connection +- Verify the repository has releases with the expected prefix +- Try using a specific tag instead of relying on automatic detection + +**Download fails with network errors** +- The script will automatically retry with different strategies +- Check if you're behind a corporate firewall +- Consider using a GitHub token for authenticated requests + +**Extraction fails** +- Ensure you have sufficient disk space +- Check that the downloaded archive is not corrupted +- Verify you have write permissions to the destination directory + +### Getting Help + +If you encounter issues: + +1. Check the script output for specific error messages +2. Verify your network connection and GitHub access +3. Try downloading a specific release tag instead of using automatic detection +4. Ensure you have the required dependencies (`curl`, `jq`, `tar`) + +## Next Steps + +After downloading fixtures, you can proceed with: + +- [Gas Categorized Fixtures](/gas-categorized-fixtures) - Generate test fixtures for specific gas categories +- [Gas Categorized Benchmarks](/gas-categorized-benchmarks) - Run opcode profiling across different gas limits +- [Getting Started](/getting-started) - Return to the main getting started guide diff --git a/www/docs/pages/executor-vs-validator.mdx b/www/docs/pages/executor-vs-validator.mdx new file mode 100644 index 00000000..8c371813 --- /dev/null +++ b/www/docs/pages/executor-vs-validator.mdx @@ -0,0 +1,242 @@ +# Executor vs Validator: Choosing the Right Guest Program + +This guide helps you choose between `stateless-executor` and `stateless-validator` guest programs for your benchmarking needs. + +## Quick Decision Guide + +``` +┌─────────────────────────────────────────────────────────────────────────┐ +│ Which Guest Program Should I Use? │ +└─────────────────────────────────────────────────────────────────────────┘ + +Do you need to measure realistic block validation workloads? + │ + ├── YES → Do you need both Reth and Ethrex support? + │ │ + │ ├── YES → Use stateless-validator + │ │ + │ └── NO → Use stateless-validator (more realistic) + │ OR stateless-executor (for comparison) + │ + └── NO → Are you benchmarking pure EVM/opcode execution? + │ + ├── YES → Use stateless-executor + │ + └── NO → Consider empty-program for baseline overhead +``` + +--- + +## Feature Comparison + +| Feature | stateless-executor | stateless-validator | +|---------|:------------------:|:-------------------:| +| **Purpose** | Pure EVM execution measurement | Full block validation | +| **Pre-execution validation** | ❌ Skipped | ✅ Performed | +| **Post-execution validation** | ❌ Skipped | ✅ Performed | +| **State root verification** | ❌ Skipped | ✅ Performed | +| **Receipts root validation** | ❌ Skipped | ✅ Performed | +| **EVM transaction execution** | ✅ Performed | ✅ Performed | +| **Reth support** | ✅ Supported | ✅ Supported | +| **Ethrex support** | ❌ Not supported | ✅ Supported | +| **Realistic workload** | ⚠️ Partial | ✅ Full | +| **Cycle isolation** | ✅ Pure execution | ⚠️ Includes validation | + +--- + +## When to Use Each + +### Use `stateless-executor` when: + +1. **Benchmarking opcode costs**: You want to measure the raw cycle cost of EVM opcodes without validation overhead. + +2. **Comparing execution implementations**: You're comparing different EVM implementations and want to isolate execution performance. + +3. **Optimizing execution paths**: You're working on EVM execution optimization and need accurate cycle measurements. + +4. **Research and analysis**: You're studying EVM execution characteristics in zkVM environments. + +5. **Reth-only workflows**: You only need Reth execution client support. + +### Use `stateless-validator` when: + +1. **Realistic benchmarking**: You want to measure the complete cost of validating Ethereum blocks. + +2. **Production workload simulation**: Your benchmarks should reflect real-world zkEVM proving costs. + +3. **Multi-client comparison**: You need to compare performance between Reth and Ethrex execution clients. + +4. **End-to-end validation**: You want to ensure the full validation pipeline is working correctly. + +5. **Consensus compatibility**: Your benchmarks should include consensus-related validation costs. + +--- + +## Performance Implications + +### Cycle Count Differences + +The stateless-executor will show **lower cycle counts** than the stateless-validator because it skips validation steps: + +| Component | Approx. Cycle % (Validator) | Present in Executor? | +|-----------|:---------------------------:|:--------------------:| +| Header validation | 5-10% | ❌ No | +| State root verification | 10-20% | ❌ No | +| EVM execution | 40-60% | ✅ Yes | +| Post-execution validation | 10-20% | ❌ No | +| Receipts root computation | 5-15% | ❌ No | + +*Percentages are approximate and vary based on block composition* + +### When Cycle Counts Matter + +- **Executor cycles**: Represent the minimum zkVM cost for processing transactions +- **Validator cycles**: Represent the realistic cost of proving a block's validity + +For accurate zkEVM proving cost estimates, use **stateless-validator**. For pure execution research, use **stateless-executor**. + +--- + +## Input Compatibility + +Both guest programs use the same input fixtures generated by `witness-generator-cli`: + +``` +zkevm-fixtures-input/ +├── block-12345.json # Can be used by both +├── block-12346.json # Can be used by both +└── ... +``` + +This means you can: +- Generate fixtures once +- Run both executor and validator benchmarks on the same fixtures +- Compare results directly + +--- + +## Example Workflows + +### Workflow 1: Pure Execution Benchmarking + +```bash +# Generate fixtures +./scripts/generate-gas-categorized-fixtures.sh -g 1M + +# Run executor benchmarks (pure execution) +./scripts/run-gas-categorized-benchmarks.sh \ + -g stateless-executor \ + -z risc0 \ + -c 1M + +# Analyze raw execution cycles +python3 scripts/compare_proving_times.py --zkvm risc0 +``` + +### Workflow 2: Realistic Block Validation + +```bash +# Generate fixtures +./scripts/generate-gas-categorized-fixtures.sh -g 1M + +# Run validator benchmarks (full validation) +./scripts/run-gas-categorized-benchmarks.sh \ + -g stateless-validator \ + -e reth \ + -z risc0 \ + -c 1M + +# Analyze complete validation costs +python3 scripts/compare_proving_times.py --zkvm risc0 +``` + +### Workflow 3: Executor vs Validator Comparison + +```bash +# Generate fixtures +./scripts/generate-gas-categorized-fixtures.sh -g 1M + +# Run executor benchmarks +./scripts/run-gas-categorized-benchmarks.sh \ + -g stateless-executor \ + -z risc0 \ + -c 1M \ + -o ./zkevm-metrics-executor + +# Run validator benchmarks +./scripts/run-gas-categorized-benchmarks.sh \ + -g stateless-validator \ + -e reth \ + -z risc0 \ + -c 1M \ + -o ./zkevm-metrics-validator + +# Compare the overhead of validation +python3 scripts/compare_executions.py \ + zkevm-metrics-executor-risc0-1M \ + zkevm-metrics-validator-risc0-1M +``` + +--- + +## Metrics Interpretation + +### Executor Metrics + +The executor reports metrics focused on execution: + +```json +{ + "execution": { + "success": { + "total_num_cycles": 5000000, + "region_cycles": { + "execution": 5000000 + } + } + } +} +``` + +### Validator Metrics + +The validator reports metrics including all validation phases: + +```json +{ + "execution": { + "success": { + "total_num_cycles": 8000000, + "region_cycles": { + "verify_witness": 1000000, + "execution": 5000000, + "post_state_compute": 1500000, + "validation": 500000 + } + } + } +} +``` + +Note how the executor's total cycles match only the "execution" region of the validator. + +--- + +## Summary Table + +| Aspect | stateless-executor | stateless-validator | +|--------|-------------------|---------------------| +| **Best for** | Opcode research, EVM optimization | Production cost estimation | +| **Execution clients** | Reth only | Reth, Ethrex | +| **Cycle overhead** | Minimal (execution only) | Full (includes validation) | +| **Fixture compatibility** | Same as validator | Same as executor | +| **Typical use case** | "How expensive is SLOAD?" | "How much to prove this block?" | + +--- + +## See Also + +- [Stateless Executor Guide](/stateless-executor-guide) - Complete executor documentation +- [Stateless Executor Architecture](/stateless-executor-architecture) - Technical deep dive +- [Gas Categorized Benchmarks](/gas-categorized-benchmarks) - Running benchmarks + diff --git a/www/docs/pages/gas-categorized-benchmarks.mdx b/www/docs/pages/gas-categorized-benchmarks.mdx new file mode 100644 index 00000000..3e19c46d --- /dev/null +++ b/www/docs/pages/gas-categorized-benchmarks.mdx @@ -0,0 +1,356 @@ +# Gas Categorized Benchmarks + +This guide explains how to run gas-categorized profiling using the zkGas profiling framework. Gas-categorized profiling executes resource analysis tests across different gas limit categories, providing comprehensive analysis of the resources needed for proving different OPCODEs across various computational workloads. + +## Overview + +The gas-categorized profiling system runs resource analysis tests on pre-generated fixture files organized by gas categories. It supports multiple zkVM implementations, execution clients, and profiling actions, allowing for comprehensive comparison of opcode resource requirements across different zk environments. + +## Script: `run-gas-categorized-benchmarks.sh` + +### Basic Usage + +```bash +# Run all gas categories with default settings +./scripts/run-gas-categorized-benchmarks.sh + +# Run with specific zkVM and execution client +./scripts/run-gas-categorized-benchmarks.sh --zkvm sp1 --execution-client reth + +# Run on a single gas category +./scripts/run-gas-categorized-benchmarks.sh --gas-category 10M +``` + +### Command Line Options + +| Option | Description | Default | +|--------|-------------|---------| +| `--help`, `-h` | Show help message and usage examples | - | +| `--dry-run` | Show what would be executed without actually running | false | +| `--force-rerun` | Force rerun of profiling | true | +| `--no-force-rerun` | Disable force rerun | false | +| `--action ` | Profiling action to run (prove, execute) | prove | +| `--resource ` | Resource type to use (gpu, cpu) | gpu | +| `--guest ` | Guest program type | stateless-executor | +| `--zkvm ` | zkVM implementation to use | risc0 | +| `--execution-client ` | Execution client to use | reth | +| `--input-dir ` | Base input directory | ./zkevm-fixtures-input | +| `--gas-category ` | Run on specific gas category only | all | +| `--memory-tracking ` | Enable memory tracking for detailed memory analysis | false | + +### Supported zkVM Implementations + +| zkVM | Description | Status | +|------|-------------|--------| +| `risc0` | RISC0 zkVM implementation | ✅ Default | +| `sp1` | SP1 zkVM implementation | ✅ Supported | +| `openvm` | OpenVM zkVM implementation | ✅ Supported | +| `pico` | Pico zkVM implementation | ✅ Supported | +| `zisk` | Zisk zkVM implementation | ✅ Supported | + +### Supported Execution Clients + +| Client | Description | stateless-executor | stateless-validator | +|--------|-------------|:------------------:|:-------------------:| +| `reth` | Reth execution client | ✅ Default | ✅ Supported | +| `ethrex` | Ethrex execution client | ❌ Not supported | ✅ Supported | + +:::info[Execution Client Support] +The `stateless-executor` guest program only supports **Reth**. If you need Ethrex support, use `stateless-validator` instead. See [Executor vs Validator](/executor-vs-validator) for a detailed comparison. +::: + +### Supported Gas Categories + +| Category | Gas Limit | Description | +|----------|-----------|-------------| +| `1M` | 1,000,000 | Light computational workload | +| `10M` | 10,000,000 | Medium computational workload | +| `30M` | 30,000,000 | Heavy computational workload | +| `45M` | 45,000,000 | Very heavy computational workload | +| `60M` | 60,000,000 | Maximum computational workload | +| `100M` | 100,000,000 | Extreme computational workload | +| `500M` | 500,000,000 | Ultra-extreme computational workload | + +## Usage Examples + +### Basic Benchmark Execution + +#### Run All Gas Categories +```bash +# Run all gas categories with default settings (RISC0, Reth, GPU) +./scripts/run-gas-categorized-benchmarks.sh +``` + +#### Run with Specific zkVM +```bash +# Run with SP1 zkVM +./scripts/run-gas-categorized-benchmarks.sh --zkvm sp1 + +# Run with OpenVM zkVM +./scripts/run-gas-categorized-benchmarks.sh --zkvm openvm +``` + +#### Run with Different Execution Client +```bash +# Run with Ethrex execution client +./scripts/run-gas-categorized-benchmarks.sh --execution-client ethrex + +# Run with Reth execution client (default) +./scripts/run-gas-categorized-benchmarks.sh --execution-client reth +``` + +### Advanced Configuration + +#### Custom Resource and Action +```bash +# Run with CPU resource and execute action +./scripts/run-gas-categorized-benchmarks.sh --action execute --resource cpu + +# Run with GPU resource and prove action (default) +./scripts/run-gas-categorized-benchmarks.sh --action prove --resource gpu +``` + +#### Memory Tracking +```bash +# Enable memory tracking for detailed memory analysis +./scripts/run-gas-categorized-benchmarks.sh --memory-tracking true + +# Run with memory tracking on specific gas category +./scripts/run-gas-categorized-benchmarks.sh --memory-tracking true --gas-category 10M + +# Run with memory tracking and specific zkVM +./scripts/run-gas-categorized-benchmarks.sh --memory-tracking true --zkvm sp1 +``` + +#### Single Gas Category +```bash +# Run only on 10M gas category +./scripts/run-gas-categorized-benchmarks.sh --gas-category 10M + +# Run only on 100M gas category with SP1 +./scripts/run-gas-categorized-benchmarks.sh --gas-category 100M --zkvm sp1 +``` + +#### Custom Input Directory +```bash +# Run with custom input directory +./scripts/run-gas-categorized-benchmarks.sh --input-dir ./my-custom-fixtures +``` + +### Preview and Validation + +#### Dry Run Mode +```bash +# Preview what would be executed +./scripts/run-gas-categorized-benchmarks.sh --dry-run + +# Preview with specific configuration +./scripts/run-gas-categorized-benchmarks.sh --dry-run --zkvm sp1 --gas-category 10M + +# Preview with memory tracking enabled +./scripts/run-gas-categorized-benchmarks.sh --dry-run --memory-tracking true --zkvm sp1 +``` + +## Output Structure + +The benchmark script generates the following output structure: + +``` +zkevm-metrics-risc0-1M/ # RISC0 results for 1M gas +zkevm-metrics-risc0-10M/ # RISC0 results for 10M gas +zkevm-metrics-sp1-1M/ # SP1 results for 1M gas +zkevm-metrics-sp1-10M/ # SP1 results for 10M gas +... +``` + +Each metrics directory contains: +- JSON files with detailed benchmark results +- Execution metrics (cycles, duration, region breakdowns) +- Proving metrics (proof size, proving time, memory usage) +- Memory tracking data (when enabled): detailed memory allocation patterns, peak memory usage, memory efficiency metrics +- Metadata about the benchmark run + +## Workflow Details + +### 1. Pre-flight Checks +The script performs several validation steps: +- Verifies `cargo` is available +- Confirms the script is run from the project root directory +- Validates the project structure (presence of `Cargo.toml` and `crates/ere-hosts`) +- Validates gas category if specified + +### 2. Input Fixture Validation +The script checks for required input fixture directories: +- Scans for directories matching the pattern `{BASE_INPUT_DIR}-{GAS_VALUE}` +- Warns about missing fixture directories +- Continues with available directories + +### 3. Project Build +The script automatically builds the `ere-hosts` binary with the specified zkVM feature: +```bash +cargo build --release --bin ere-hosts +``` + +### 4. Benchmark Execution +For each gas category, the script: +- Creates the metrics output directory +- Runs the benchmark with the specified configuration +- Collects execution and proving metrics +- Saves results in JSON format + +### 5. Summary Report +After completion, the script provides: +- Summary of benchmark results for each gas category +- File counts for each metrics directory +- Location of all generated metrics + +## Performance Considerations + +### Resource Requirements + +#### GPU Resources +- **Recommended**: NVIDIA GPU with CUDA support +- **Memory**: At least 8GB VRAM for larger gas categories +- **Performance**: Significantly faster for proving operations + +#### CPU Resources +- **Recommended**: Multi-core CPU with at least 16GB RAM +- **Performance**: Slower but more accessible for development + +### Memory Tracking + +When memory tracking is enabled (`--memory-tracking true`), the benchmark system provides detailed memory analysis: + +#### Memory Metrics Collected +- **Peak Memory Usage**: Maximum memory consumption during execution +- **Memory Allocation Patterns**: Detailed tracking of memory allocations and deallocations +- **Memory Efficiency**: Analysis of memory utilization vs. waste +- **Memory Growth Trends**: How memory usage scales with gas categories +- **Memory Hotspots**: Identification of memory-intensive operations + +#### Use Cases for Memory Tracking +- **Performance Optimization**: Identify memory bottlenecks in zkVM implementations +- **Resource Planning**: Determine optimal memory requirements for different gas categories +- **Memory Leak Detection**: Monitor for potential memory leaks during long-running benchmarks +- **Comparative Analysis**: Compare memory efficiency between different zkVM implementations + +#### Performance Impact +- **Overhead**: Memory tracking adds approximately 5-10% execution time overhead +- **Storage**: Generates additional JSON files with memory metrics +- **Recommended**: Enable for detailed analysis, disable for maximum performance + +### Execution Time Estimates + +| Gas Category | Estimated Time (GPU) | Estimated Time (CPU) | +|--------------|---------------------|---------------------| +| 1M | 5-15 minutes | 30-60 minutes | +| 10M | 15-30 minutes | 1-2 hours | +| 30M | 30-60 minutes | 2-4 hours | +| 45M | 45-90 minutes | 3-6 hours | +| 60M | 60-120 minutes | 4-8 hours | +| 100M | 90-180 minutes | 6-12 hours | +| 500M | 300-600 minutes | 20-40 hours | + +*Times are estimates and may vary based on hardware and zkVM implementation* + +## Troubleshooting + +### Common Issues + +#### Missing Input Fixtures +```bash +# Check if fixture directories exist +ls -la zkevm-fixtures-input-* + +# Generate fixtures if missing +./scripts/generate-gas-categorized-fixtures.sh +``` + +#### Build Failures +```bash +# Ensure you're in the project root directory +pwd # Should show: .../zkevm-benchmark-workload + +# Check if Cargo.toml exists +ls Cargo.toml + +# Verify ere-hosts crate exists +ls crates/ere-hosts/ +``` + +#### Permission Issues +```bash +# Make the script executable +chmod +x scripts/run-gas-categorized-benchmarks.sh +``` + +#### Resource Issues +```bash +# Check available disk space +df -h + +# Check GPU availability (if using GPU) +nvidia-smi + +# Check system memory +free -h +``` + +### Error Messages + +| Error | Solution | +|-------|----------| +| `cargo is not installed` | Install Rust toolchain via `rustup` | +| `Cargo.toml not found` | Run script from project root directory | +| `ere-hosts crate not found` | Ensure project is properly cloned and built | +| `Invalid gas category` | Use valid gas categories: 1M, 10M, 30M, 45M, 60M, 100M, 500M | +| `Input directory not found` | Generate fixtures first or check input directory path | + +## Integration with Analysis + +The generated benchmark results are designed to work with the analysis system: + +1. **Execution Comparison**: Compare execution metrics between different runs + ```bash + python3 scripts/compare_executions.py baseline-folder optimized-folder + ``` + +2. **Proving Comparison**: Compare proving metrics between different runs + ```bash + python3 scripts/compare_provings.py baseline-folder optimized-folder + ``` + +## Best Practices + +### Benchmark Execution + +1. **Start Small**: Begin with smaller gas categories (1M, 10M) to validate setup +2. **Use Dry Run**: Always preview commands with `--dry-run` before execution +3. **Monitor Resources**: Keep an eye on disk space and memory usage +4. **Document Configuration**: Record the exact command used for reproducibility + +### Performance Optimization + +1. **Use GPU**: GPU resources provide significant speedup for proving operations +2. **Parallel Execution**: Run different zkVM implementations in parallel +3. **Resource Management**: Ensure sufficient disk space for results +4. **Network Considerations**: Some zkVM implementations may require network access + +### Result Management + +1. **Organize Results**: Use descriptive directory names for different benchmark runs +2. **Backup Important Results**: Archive significant benchmark results +3. **Version Control**: Consider versioning benchmark configurations +4. **Documentation**: Document the purpose and configuration of each benchmark run + +## Next Steps + +After running gas-categorized benchmarks, you can: + +1. **Compare Performance**: Analyze performance differences between zkVM implementations + ```bash + python3 scripts/compare_executions.py zkevm-metrics-risc0-10M zkevm-metrics-sp1-10M + python3 scripts/compare_provings.py zkevm-metrics-risc0-10M zkevm-metrics-sp1-10M + ``` + +2. **Optimize Configuration**: Use results to optimize benchmark parameters for your use case diff --git a/www/docs/pages/gas-categorized-fixtures.mdx b/www/docs/pages/gas-categorized-fixtures.mdx new file mode 100644 index 00000000..aeefc8cf --- /dev/null +++ b/www/docs/pages/gas-categorized-fixtures.mdx @@ -0,0 +1,432 @@ +# Gas Categorized Fixtures + +This guide explains how to generate gas-categorized fixtures for zkGas profiling. Gas-categorized fixtures organize test data by different gas limit categories, allowing you to profile the resource requirements for proving different OPCODEs across various computational complexity levels. + +## Overview + +The gas-categorized fixture generation process creates separate fixture directories for different gas categories, each containing test data optimized for specific gas limits. This approach enables comprehensive analysis of how different Ethereum opcodes consume resources (cycles, memory, proving time) across various computational workloads in zk environments. + +## Supported Gas Categories + +The system supports the following gas categories: + +| Gas Category | Gas Limit | Description | +|--------------|-----------|-------------| +| 1M | 1,000,000 | Light computational workload | +| 10M | 10,000,000 | Medium computational workload | +| 30M | 30,000,000 | Heavy computational workload | +| 45M | 45,000,000 | Very heavy computational workload | +| 60M | 60,000,000 | Maximum computational workload | +| 100M | 100,000,000 | Extreme computational workload | +| 500M | 500,000,000 | Ultra-extreme computational workload | + +## Script: `generate-gas-categorized-fixtures.sh` + +### Basic Usage + +```bash +# Generate fixtures for all gas categories using latest EEST release +./scripts/generate-gas-categorized-fixtures.sh + +# Generate fixtures using specific EEST release +./scripts/generate-gas-categorized-fixtures.sh v0.1.0 + +# Generate fixtures in custom output directory +./scripts/generate-gas-categorized-fixtures.sh v0.1.0 /tmp/fixtures +``` + +### Command Line Options + +| Option | Description | +|--------|-------------| +| `--help`, `-h` | Show help message and usage examples | +| `--dry-run` | Show what would be executed without actually running | +| `EEST_TAG` | EEST release tag to use (e.g., v0.1.0). If empty, latest will be used | +| `BASE_OUTPUT_DIR` | Base output directory (default: ./zkevm-fixtures-input) | + +### Examples + +#### Generate All Gas Categories +```bash +# Use latest EEST release with default output directory +./scripts/generate-gas-categorized-fixtures.sh + +# Use specific EEST release +./scripts/generate-gas-categorized-fixtures.sh v0.1.0 + +# Use custom output directory +./scripts/generate-gas-categorized-fixtures.sh v0.1.0 /tmp/my-fixtures +``` + +#### Preview Mode +```bash +# See what would be executed without running +./scripts/generate-gas-categorized-fixtures.sh --dry-run +``` + +## Output Structure + +The script generates the following directory structure: + +``` +zkevm-fixtures-input-1M/ # 1 million gas limit fixtures +zkevm-fixtures-input-10M/ # 10 million gas limit fixtures +zkevm-fixtures-input-30M/ # 30 million gas limit fixtures +zkevm-fixtures-input-45M/ # 45 million gas limit fixtures +zkevm-fixtures-input-60M/ # 60 million gas limit fixtures +zkevm-fixtures-input-100M/ # 100 million gas limit fixtures +zkevm-fixtures-input-500M/ # 500 million gas limit fixtures +``` + +Each directory contains: +- Individual JSON fixture files for opcode profiling +- Test data optimized for the specific gas category +- Metadata about the test cases, gas parameters, and opcode usage patterns + +## Fixture Format + +Both `stateless-executor` and `stateless-validator` use the same fixture format. Each fixture file is a JSON document with the following structure: + +### StatelessValidationFixture / StatelessExecutorFixture + +```json +{ + "name": "benchmark-gas-value_1M-CREATE_MODEXP_1000_bytes__d0g0v0", + "stateless_input": { + "block": { + "header": { + "parent_hash": "0x...", + "ommers_hash": "0x...", + "beneficiary": "0x...", + "state_root": "0x...", + "transactions_root": "0x...", + "receipts_root": "0x...", + "logs_bloom": "0x...", + "difficulty": "0x0", + "number": 1, + "gas_limit": 1000000, + "gas_used": 500000, + "timestamp": 1000, + "extra_data": "0x", + "mix_hash": "0x...", + "nonce": "0x0000000000000000", + "base_fee_per_gas": 7 + }, + "body": { + "transactions": [ + { + "type": "0x02", + "chain_id": 1, + "nonce": 0, + "gas_limit": 500000, + "to": "0x...", + "value": "0x0", + "input": "0x...", + "max_fee_per_gas": 1000000007, + "max_priority_fee_per_gas": 0, + "access_list": [] + } + ], + "ommers": [], + "withdrawals": [] + } + }, + "witness": { + "state": { + "0x1234...": { + "balance": "0xde0b6b3a7640000", + "nonce": 0, + "code_hash": "0x...", + "storage_root": "0x...", + "code": "0x...", + "storage": {} + } + }, + "codes": { + "0xabcd...": "0x6080604052..." + }, + "headers": [ + "0xf90..." + ] + }, + "chain_config": { + "chain_id": 1, + "homestead_block": 0, + "dao_fork_block": null, + "eip150_block": 0, + "eip155_block": 0, + "eip158_block": 0, + "byzantium_block": 0, + "constantinople_block": 0, + "petersburg_block": 0, + "istanbul_block": 0, + "muir_glacier_block": null, + "berlin_block": 0, + "london_block": 0, + "arrow_glacier_block": null, + "gray_glacier_block": null, + "merge_netsplit_block": 0, + "shanghai_time": 0, + "cancun_time": 0, + "prague_time": 0 + } + }, + "success": true +} +``` + +### Field Descriptions + +| Field | Description | +|-------|-------------| +| `name` | Unique identifier for the test case, includes gas category and opcode info | +| `stateless_input.block` | The Ethereum block to execute/validate | +| `stateless_input.witness` | State witness data required for stateless execution | +| `stateless_input.chain_config` | Chain configuration (hardfork settings) | +| `success` | Expected validation result (true for valid blocks) | + +### Witness Components + +| Component | Description | +|-----------|-------------| +| `state` | Account states (balance, nonce, code, storage) | +| `codes` | Contract bytecode indexed by code hash | +| `headers` | RLP-encoded ancestor headers (for BLOCKHASH opcode) | + +:::info[Fixture Compatibility] +The same fixture files work with both `stateless-executor` and `stateless-validator` guest programs. The executor uses the fixture data for execution-only benchmarks, while the validator uses it for full block validation. +::: + +## Prerequisites + +Before running the fixture generation script, ensure you have: + +1. **Rust Toolchain**: Standard Rust installation managed by `rustup` +2. **Project Dependencies**: All project dependencies built +3. **Sufficient Disk Space**: Each gas category can generate significant amounts of test data +4. **Network Access**: For downloading EEST releases (if not using local fixtures) + +## Workflow Details + +### 1. Pre-flight Checks +The script performs several validation steps: +- Verifies `cargo` is available +- Confirms the script is run from the project root directory +- Validates the project structure (presence of `Cargo.toml` and `crates/witness-generator-cli`) + +### 2. Gas Category Validation +The script validates all gas categories to ensure they follow the correct format: +- Pattern: `benchmark-gas-value_{VALUE}` +- Values: 1M, 10M, 30M, 45M, 60M, 100M, 500M + +### 3. Project Build +The script automatically builds the `witness-generator-cli` in release mode: +```bash +cargo build --release --bin witness-generator-cli +``` + +### 4. Fixture Generation +For each gas category, the script: +- Creates the output directory +- Runs the witness generator with the specific gas parameter +- Includes both the gas category and "Prague" test cases +- Counts and reports the number of generated files + +### 5. Summary Report +After completion, the script provides: +- Summary of generated fixtures for each gas category +- File counts for each directory +- Location of all generated fixtures + +## Advanced Usage + +### Custom EEST Tags +```bash +# Use a specific EEST release +./scripts/generate-gas-categorized-fixtures.sh v0.2.0 + +# Use latest (default behavior) +./scripts/generate-gas-categorized-fixtures.sh "" +``` + +### Custom Output Directories +```bash +# Generate in a different location +./scripts/generate-gas-categorized-fixtures.sh v0.1.0 /path/to/custom/fixtures + +# This creates: +# /path/to/custom/fixtures-1M/ +# /path/to/custom/fixtures-10M/ +# etc. +``` + +### Dry Run Mode +```bash +# Preview all commands that would be executed +./scripts/generate-gas-categorized-fixtures.sh --dry-run +``` + +## Troubleshooting + +### Common Issues + +#### Build Failures +```bash +# Ensure you're in the project root directory +pwd # Should show: .../zkevm-benchmark-workload + +# Check if Cargo.toml exists +ls Cargo.toml + +# Verify witness-generator-cli crate exists +ls crates/witness-generator-cli/ +``` + +#### Permission Issues +```bash +# Make the script executable +chmod +x scripts/generate-gas-categorized-fixtures.sh +``` + +#### Disk Space Issues +```bash +# Check available disk space +df -h + +# Clean up old fixtures if needed +rm -rf zkevm-fixtures-input-* +``` + +### Error Messages + +| Error | Solution | +|-------|----------| +| `cargo is not installed` | Install Rust toolchain via `rustup` | +| `Cargo.toml not found` | Run script from project root directory | +| `witness-generator-cli crate not found` | Ensure project is properly cloned and built | +| `Build failed` | Check Rust installation and dependencies | + +## Integration with OPCODE Profiling + +The generated gas-categorized fixtures are designed to work seamlessly with the opcode profiling system: + +1. **Input for Profiling**: Each gas category directory serves as input for the profiling runner +2. **Consistent Naming**: The naming convention `zkevm-fixtures-input-{GAS}` is expected by the profiling scripts +3. **Optimized Test Cases**: Each category contains test cases optimized for its specific gas limit and opcode usage patterns + +## Running Benchmarks for Specific Gas Categories + +The `run-gas-categorized-benchmarks.sh` script allows you to run benchmarks for specific gas categories, which is useful for targeted testing and faster iteration during development. + +### Using the `--gas-category` Option + +To run benchmarks for a specific gas category, use the `--gas-category` option: + +```bash +# Run benchmark for 1M gas limit only +./scripts/run-gas-categorized-benchmarks.sh --gas-category 1M + +# Run benchmark for 10M gas limit with SP1 zkVM +./scripts/run-gas-categorized-benchmarks.sh --gas-category 10M --zkvm sp1 + +# Run benchmark for 30M gas limit with custom action +./scripts/run-gas-categorized-benchmarks.sh --gas-category 30M --action execute + +# Run benchmark for 100M gas limit with CPU resource +./scripts/run-gas-categorized-benchmarks.sh --gas-category 100M --resource cpu +``` + +### Available Gas Categories + +The following gas categories can be specified with the `--gas-category` option: + +| Category | Gas Limit | Use Case | +|----------|-----------|----------| +| `1M` | 1,000,000 | Light computational workload testing | +| `10M` | 10,000,000 | Medium computational workload testing | +| `30M` | 30,000,000 | Heavy computational workload testing | +| `45M` | 45,000,000 | Very heavy computational workload testing | +| `60M` | 60,000,000 | Maximum computational workload testing | +| `100M` | 100,000,000 | Extreme computational workload testing | +| `500M` | 500,000,000 | Ultra-extreme computational workload testing | + +### Examples by Workload Type + +#### Light Workload Testing (1M) +```bash +# Quick test with light computational workload +./scripts/run-gas-categorized-benchmarks.sh --gas-category 1M + +# Test with different zkVM for comparison +./scripts/run-gas-categorized-benchmarks.sh --gas-category 1M --zkvm sp1 +``` + +#### Medium Workload Testing (10M) +```bash +# Standard medium workload testing +./scripts/run-gas-categorized-benchmarks.sh --gas-category 10M + +# Test with CPU resource instead of GPU +./scripts/run-gas-categorized-benchmarks.sh --gas-category 10M --resource cpu +``` + +#### Heavy Workload Testing (30M-60M) +```bash +# Heavy computational workload testing +./scripts/run-gas-categorized-benchmarks.sh --gas-category 30M + +# Maximum workload testing +./scripts/run-gas-categorized-benchmarks.sh --gas-category 60M --zkvm sp1 +``` + +#### Extreme Workload Testing (100M-500M) +```bash +# Extreme computational workload testing +./scripts/run-gas-categorized-benchmarks.sh --gas-category 100M + +# Ultra-extreme workload testing (may take significant time) +./scripts/run-gas-categorized-benchmarks.sh --gas-category 500M --resource gpu +``` + +### Output Structure + +When running benchmarks for specific gas categories, the script generates metrics in the following structure: + +``` +zkevm-metrics-{ZKVM}-{GAS}/ +├── metric_file_1.json +├── metric_file_2.json +└── ... +``` + +For example: +- `zkevm-metrics-risc0-1M/` - RISC0 metrics for 1M gas category +- `zkevm-metrics-sp1-10M/` - SP1 metrics for 10M gas category +- `zkevm-metrics-risc0-100M/` - RISC0 metrics for 100M gas category + +### Dry Run Mode + +Preview what would be executed without actually running the benchmarks: + +```bash +# Preview specific gas category +./scripts/run-gas-categorized-benchmarks.sh --gas-category 10M --dry-run + +# Preview with custom options +./scripts/run-gas-categorized-benchmarks.sh --gas-category 30M --zkvm sp1 --dry-run +``` + +## Next Steps + +After generating gas-categorized fixtures, you can: + +1. **Run OPCODE Profiling**: Use the generated fixtures with the profiling runner + ```bash + ./scripts/run-gas-categorized-benchmarks.sh + ``` + +2. **Compare Results**: Use comparison scripts to analyze resource requirements across different zkVM implementations + ```bash + python3 scripts/compare_executions.py zkevm-metrics-risc0-1M zkevm-metrics-sp1-1M + python3 scripts/compare_provings.py zkevm-metrics-risc0-1M zkevm-metrics-sp1-1M + ``` diff --git a/www/docs/pages/getting-started.mdx b/www/docs/pages/getting-started.mdx new file mode 100644 index 00000000..029d8496 --- /dev/null +++ b/www/docs/pages/getting-started.mdx @@ -0,0 +1,124 @@ +# Getting Started + +Welcome to the zkGas profiling documentation! This guide will help you understand the project structure and get started with profiling the resources needed for proving different OPCODEs in zk environments. + +:::tip[Complete Guide Available] +For a comprehensive walkthrough of running benchmarks with the stateless-executor, including detailed script documentation, troubleshooting, and automation tips, see the **[Stateless Executor Guide](/stateless-executor-guide)**. +::: + +## Project Overview + +zkGas profiling is a comprehensive framework for measuring and comparing the resources needed for proving different OPCODEs in zk environments. The project focuses on analyzing the computational costs, memory usage, and proving time required for various Ethereum opcodes across different gas categories and zkVM implementations. The stateless-executor guest program reduces the re-execution of an ethereum block and witness to the transaction level without the pre and post execution validation overhead. This makes the proving resources as close to the actual execution of the instructions as possible. + +## Key Features + +- **OPCODE Profiling**: Detailed analysis of resource requirements for different Ethereum opcodes +- **Gas-Categorized Analysis**: Organize profiling data by gas limits (1M, 10M, 30M, 45M, 60M, 100M, 150M) +- **Multi-zkVM Support**: Compare opcode costs across RISC0, SP1, OpenVM, Pico, Zisk, and Airbender zkVMs +- **Resource Metrics**: Comprehensive measurement of cycles, memory usage, and proving time +- **Automated Workflows**: Scripts for fixture download, generation, profiling execution, and results analysis +- **Docker-Based Compilation**: All zkVMs use EreDockerized for consistent builds + +## Choosing the Right Guest Program + +| Guest Program | Best For | Execution Clients | +|---------------|----------|-------------------| +| `stateless-executor` | Pure EVM opcode benchmarking, execution research | Reth only | +| `stateless-validator` | Realistic block validation costs, production estimates | Reth, Ethrex | +| `empty-program` | zkVM baseline overhead measurement | N/A | + +:::tip[Quick Decision] +- **Measuring opcode costs?** → Use `stateless-executor` +- **Estimating proving costs?** → Use `stateless-validator` +- See [Executor vs Validator](/executor-vs-validator) for detailed comparison. +::: + +## Quick Start + +### Prerequisites + +Ensure you have Docker, Rust (1.70+), Python 3.8+, and Git installed before proceeding. + +### 4-Step Workflow + +1. **Clone and Setup the Repository** + +```bash +git clone https://github.com/NethermindEth/zkevm-benchmark-workload.git +cd zkevm-benchmark-workload +``` + +2. **Download and Extract Fixtures** + +```bash +./scripts/download-and-extract-fixtures.sh +``` + +3. **Generate Gas-Categorized Fixtures** + +```bash +./scripts/generate-gas-categorized-fixtures.sh +``` + +4. **Run Benchmarks** + +```bash +# Run with defaults (risc0 zkVM, reth client, GPU) +./scripts/run-gas-categorized-benchmarks.sh + +# Or customize your run +./scripts/run-gas-categorized-benchmarks.sh -z sp1 -e reth -c 1M,10M +``` + + +### Default Configuration + +| Setting | Default Value | +|---------|---------------| +| zkVM | risc0 | +| Execution Client | reth | +| Resource | gpu | +| Gas Categories | 1M, 10M, 30M, 45M, 60M, 100M, 150M | +| Action | prove | + +## Project Structure + +``` +zkGas-profiling/ +├── scripts/ # Automation scripts +├── crates/ # Core Rust crates +├── ere-guests/ # zkVM guest programs +├── zkevm-fixtures-input-*/ # Generated test fixtures +├── zkevm-metrics-*/ # Raw profiling results +├── benchmark-results/ # Organized results and analysis reports +└── www/ # Documentation website +``` + +## Results Organization + +The `benchmark-results/` directory provides organized access to profiling results: + +- **`gas-categorized/`**: Results organized by gas categories (1M, 10M, 30M, etc.) +- **`zkvm-comparisons/`**: Results organized by zkVM implementations (RISC0, SP1, etc.) +- **`markdown-reports/`**: Human-readable analysis reports and comparisons +- **`archived/`**: Historical results for long-term analysis + +## Next Steps + +### Comprehensive Guides + +- **[Stateless Executor Guide](/stateless-executor-guide)** - Complete guide with TLDR, scripts reference, troubleshooting, and automation best practices + +### Workflow Documentation + +- [Download Fixtures](/download-fixtures) - Download EEST test fixtures +- [Gas Categorized Fixtures](/gas-categorized-fixtures) - Generate test fixtures by gas category +- [Gas Categorized Benchmarks](/gas-categorized-benchmarks) - Run benchmarks across gas categories + +### Analysis & Reporting + +- [Scripts](/scripts) - Comprehensive documentation for all automation scripts + +### Reference + +- [Benchmark Results](/benchmark-results) - View and organize generated profiling results \ No newline at end of file diff --git a/www/docs/pages/gpu-scaling-efficiency/1m-risc0-proving-times.md b/www/docs/pages/gpu-scaling-efficiency/1m-risc0-proving-times.md new file mode 100644 index 00000000..c590c0d1 --- /dev/null +++ b/www/docs/pages/gpu-scaling-efficiency/1m-risc0-proving-times.md @@ -0,0 +1,638 @@ +# RISC0 Proving Times Report + +## Overview + +This report shows the actual proving times for each test across different GPU configurations. + +**Hardware:** AMD EPYC 7543 (32-Core), 472 GiB RAM, 4x NVIDIA RTX 5090 + +--- + +## Summary + +| GPUs | Tests | Mean Time | Median Time | Min Time | Max Time | +| --- | --- | --- | --- | --- | --- | +| 1 GPU | 503 | 3m 11.0s | 40.64s | 13.34s | 53m 5.8s | +| 2 GPUs | 504 | 1m 51.4s | 29.33s | 12.01s | 29m 18.8s | +| 3 GPUs | 501 | 1m 10.9s | 24.38s | 10.67s | 19m 29.5s | +| 4 GPUs | 502 | 1m 2.9s | 22.40s | 13.83s | 14m 41.2s | + +--- + +## Proving Times by Test Category + +### Worst Blocks.Py + +**8 tests** + +| Test Name | 1 GPU | 2 GPUs | 3 GPUs | 4 GPUs | +| --- | --- | --- | --- | --- | +| Block Full Access List And Data: benchmark: gas: value 1M: blockchain test from state test | 19.21s | 15.55s | 14.85s | 20.36s | +| Block Full Data: False | 15.20s | 13.16s | 12.28s | 17.04s | +| Block Full Data: True | 19.53s | 15.88s | 19.78s | 21.55s | +| Block Full Of Ether Transfers: a to a | 47.67s | 33.41s | 27.37s | 24.93s | +| Block Full Of Ether Transfers: a to b | 46.27s | 33.28s | 28.27s | 24.80s | +| Block Full Of Ether Transfers: a to diff acc | 47.86s | 34.23s | 27.40s | 24.91s | +| Block Full Of Ether Transfers: diff acc to b | 49.61s | 33.77s | 27.96s | 24.36s | +| Block Full Of Ether Transfers: diff acc to diff acc | 50.30s | 34.37s | 27.68s | 24.40s | + +**Category Statistics:** + +| GPUs | Mean | Median | +| --- | --- | --- | +| 1 GPU | 36.95s | 46.97s | +| 2 GPUs | 26.71s | 33.34s | +| 3 GPUs | 23.20s | 27.38s | +| 4 GPUs | 22.79s | 24.38s | + +--- + +### Worst Bytecode.Py + +**35 tests** + +| Test Name | 1 GPU | 2 GPUs | 3 GPUs | 4 GPUs | +| --- | --- | --- | --- | --- | +| Bytecode Single Opcode: CALLCODE | 4m 40.2s | 2m 30.7s | 1m 45.6s | 1m 27.1s | +| Bytecode Single Opcode: CALL | 4m 37.7s | 2m 31.7s | 1m 47.0s | 1m 27.4s | +| Bytecode Single Opcode: DELEGATECALL | 4m 34.8s | 2m 30.5s | 1m 46.2s | 1m 25.4s | +| Bytecode Single Opcode: EXTCODECOPY | 4m 26.8s | 2m 24.0s | 1m 44.8s | 1m 23.4s | +| Bytecode Single Opcode: EXTCODEHASH | 4m 35.2s | 2m 30.2s | 1m 46.9s | 1m 25.8s | +| Bytecode Single Opcode: EXTCODESIZE | 4m 35.9s | 2m 29.5s | 1m 46.0s | 1m 25.3s | +| Bytecode Single Opcode: STATICCALL | 4m 35.2s | 2m 31.3s | 1m 46.3s | 1m 26.4s | +| Create: 0 BYTEs with value: CREATE2 | 16.25s | 16.67s | 13.01s | 16.99s | +| Create: 0 BYTEs with value: CREATE | 15.97s | 16.38s | 13.35s | 14.87s | +| Create: 0 BYTEs without value: CREATE2 | 15.90s | 14.53s | 13.37s | 16.47s | +| Create: 0 BYTEs without value: CREATE | 16.38s | 13.61s | 11.59s | 15.18s | +| Create: 0.25x max code size with non: zero data: CREATE2 | 15.38s | 16.15s | 12.49s | 18.12s | +| Create: 0.25x max code size with non: zero data: CREATE | 15.32s | 13.31s | 13.09s | 16.57s | +| Create: 0.25x max code size with zero data: CREATE2 | 15.02s | 12.95s | 13.22s | 16.39s | +| Create: 0.25x max code size with zero data: CREATE | 15.14s | 16.06s | 13.28s | 14.17s | +| Create: 0.50x max code size with non: zero data: CREATE2 | 15.96s | 13.29s | 13.58s | 15.23s | +| Create: 0.50x max code size with non: zero data: CREATE | 15.29s | 15.23s | 13.08s | 16.22s | +| Create: 0.50x max code size with zero data: CREATE2 | 15.25s | 19.12s | 12.43s | 15.85s | +| Create: 0.50x max code size with zero data: CREATE | 15.11s | 12.48s | 13.29s | 15.54s | +| Create: 0.75x max code size with non: zero data: CREATE2 | 16.54s | 13.52s | 16.12s | 16.20s | +| Create: 0.75x max code size with non: zero data: CREATE | 15.58s | 13.67s | 11.71s | 17.37s | +| Create: 0.75x max code size with zero data: CREATE2 | 14.94s | 13.10s | 13.60s | 16.65s | +| Create: 0.75x max code size with zero data: CREATE | 15.36s | 13.52s | 12.63s | 15.57s | +| Create: max code size with non: zero data: CREATE2 | 16.26s | 18.84s | 15.82s | 16.34s | +| Create: max code size with non: zero data: CREATE | 16.12s | 15.93s | 13.25s | 16.56s | +| Create: max code size with zero data: CREATE2 | 15.91s | 13.06s | 12.85s | 18.11s | +| Create: max code size with zero data: CREATE | 15.25s | 12.31s | 15.69s | 15.96s | +| Creates Collisions: CREATE2 | 15.10s | 13.25s | 13.26s | 16.57s | +| Creates Collisions: CREATE | 16.13s | 13.74s | 13.66s | 17.72s | +| Initcode Jumpdest Analysis: 00 | 30.18s | 24.69s | 20.31s | 19.16s | +| Initcode Jumpdest Analysis: 5b | 37.37s | 25.22s | 23.76s | 21.30s | +| Initcode Jumpdest Analysis: 605b5b | 28.84s | 23.74s | 20.17s | 19.09s | +| Initcode Jumpdest Analysis: 605b | 25.68s | 23.18s | 17.36s | 18.95s | +| Initcode Jumpdest Analysis: 615b5b5b | 27.03s | 22.63s | 19.95s | 19.03s | +| Initcode Jumpdest Analysis: 615b5b | 23.57s | 20.83s | 18.02s | 17.35s | + +**Category Statistics:** + +| GPUs | Mean | Median | +| --- | --- | --- | +| 1 GPU | 1m 9.8s | 16.13s | +| 2 GPUs | 43.11s | 16.15s | +| 3 GPUs | 33.05s | 13.60s | +| 4 GPUs | 30.70s | 16.99s | + +--- + +### Worst Compute.Py + +**311 tests** + +| Test Name | 1 GPU | 2 GPUs | 3 GPUs | 4 GPUs | +| --- | --- | --- | --- | --- | +| Amortized Bn128 Pairings: benchmark: gas: value 1M: blockchain test from state test | 3m 50.4s | 2m 6.0s | 1m 28.6s | 1m 11.8s | +| Empty Block: benchmark: gas: value 1M: blockchain test | 13.34s | 13.62s | 10.87s | 16.60s | +| Binop Simple: ADD: | 38.33s | 28.54s | 24.10s | 21.30s | +| Binop Simple: AND: | 34.45s | 25.66s | 21.93s | 20.57s | +| Binop Simple: BYTE: | 35.46s | 26.48s | 22.47s | 21.53s | +| Binop Simple: DIV: 0 | 3m 12.7s | 1m 45.0s | 1m 13.3s | 1m 0.3s | +| Binop Simple: DIV: 1 | 2m 58.5s | 1m 38.6s | 1m 11.2s | 56.41s | +| Binop Simple: EQ: | 1m 11.7s | 43.87s | 33.83s | 29.11s | +| Binop Simple: EXP: | 1m 52.8s | N/A | 47.72s | 40.98s | +| Binop Simple: GT: | 36.06s | 26.76s | 22.52s | 21.08s | +| Binop Simple: LT: | 35.81s | 26.35s | 23.60s | 21.42s | +| Binop Simple: MOD: | 57.43s | 38.58s | 30.36s | 26.57s | +| Binop Simple: MUL: | 58.75s | 38.16s | 30.70s | 26.19s | +| Binop Simple: OR: | 33.76s | 25.70s | 23.04s | 20.04s | +| Binop Simple: SAR: | 1m 7.3s | 42.64s | 33.73s | 29.25s | +| Binop Simple: SDIV: 0 | 3m 34.6s | 1m 55.3s | 1m 22.7s | 1m 4.8s | +| Binop Simple: SDIV: 1 | 3m 42.0s | 1m 56.1s | 1m 21.9s | 1m 5.3s | +| Binop Simple: SGT: | 1m 13.4s | 47.13s | 36.20s | 31.23s | +| Binop Simple: SHL: | 59.19s | 38.90s | 30.72s | 26.14s | +| Binop Simple: SHR: | 1m 0.9s | 35.51s | 29.59s | 27.18s | +| Binop Simple: SIGNEXTEND: | 54.59s | 32.34s | 28.49s | 25.66s | +| Binop Simple: SLT: | 40.64s | 28.28s | 24.70s | 22.06s | +| Binop Simple: SMOD: | 1m 7.3s | 41.55s | 32.30s | 27.81s | +| Binop Simple: SUB: | 40.89s | 29.23s | 24.49s | 22.64s | +| Binop Simple: XOR: | 33.77s | 26.71s | 21.68s | 21.16s | +| Blobhash: no blobs | 37.06s | 27.64s | 23.02s | 21.64s | +| Blobhash: one blob AND accessed | 51.08s | 34.25s | 28.30s | 24.85s | +| Blobhash: one blob but access non: existent index | 37.71s | 27.79s | 23.79s | 21.03s | +| Blobhash: six blobs, access latest | 50.99s | 34.51s | 27.51s | 24.13s | +| Calldataload: empty | 1m 7.2s | 43.47s | 33.94s | 29.82s | +| Calldataload: one: loop | 1m 18.7s | 48.32s | 36.03s | 32.34s | +| Calldataload: zero: loop | 1m 19.3s | 49.51s | 37.51s | 32.62s | +| Calldatasize: CALLdata lenGTh 0 | 34.86s | 25.69s | 22.90s | 20.31s | +| Calldatasize: CALLdata lenGTh 10000 | 34.21s | 27.06s | 21.25s | 20.80s | +| Calldatasize: CALLdata lenGTh 1000 | 35.05s | 26.43s | 20.96s | 20.52s | +| Callvalue: from ORigin False: non zero value False | 32.95s | 26.17s | 22.86s | 20.93s | +| Callvalue: from ORigin False: non zero value True | 32.47s | 25.44s | 22.62s | 20.42s | +| Callvalue: from ORigin True: non zero value False | 33.09s | 24.87s | 20.83s | 20.46s | +| Callvalue: from ORigin True: non zero value True | 32.70s | 25.60s | 22.41s | 20.23s | +| Dup: DUP10 | 32.48s | 25.80s | 22.18s | 20.85s | +| Dup: DUP11 | 33.45s | 25.27s | 21.48s | 20.90s | +| Dup: DUP12 | 33.74s | 25.46s | 22.57s | 19.70s | +| Dup: DUP13 | 33.78s | 25.73s | 21.57s | 20.83s | +| Dup: DUP14 | 32.82s | 25.25s | 21.49s | 20.71s | +| Dup: DUP15 | 33.16s | 25.32s | 20.61s | 21.09s | +| Dup: DUP16 | 33.37s | 25.48s | 22.34s | 20.34s | +| Dup: DUP1 | 33.83s | 26.22s | 22.63s | 20.40s | +| Dup: DUP2 | 33.55s | 25.30s | 21.48s | 20.43s | +| Dup: DUP3 | 33.50s | 24.95s | 22.50s | 20.70s | +| Dup: DUP4 | 33.15s | 25.25s | 21.34s | 20.10s | +| Dup: DUP5 | 33.18s | 25.78s | 22.02s | 20.88s | +| Dup: DUP6 | 33.04s | 25.77s | 20.47s | 20.78s | +| Dup: DUP7 | 32.85s | 25.26s | 21.29s | 20.29s | +| Dup: DUP8 | 31.50s | 24.42s | 22.41s | 21.71s | +| Dup: DUP9 | 33.85s | 25.99s | 22.15s | 20.53s | +| Jumpdests: benchmark: gas: value 1M: blockchain test from state test | 33.55s | 25.40s | 22.50s | 19.70s | +| Jumpi Fallthrough: benchmark: gas: value 1M: blockchain test from state test | 42.61s | 30.42s | 25.57s | 22.34s | +| Jumpis: benchmark: gas: value 1M: blockchain test from state test | 28.79s | 21.02s | 18.97s | 19.59s | +| Jumps: benchmark: gas: value 1M: blockchain test from state test | 24.71s | 21.84s | 17.46s | 18.70s | +| Keccak: benchmark: gas: value 1M: blockchain test from state test | 2m 13.9s | 1m 19.0s | 58.48s | 48.91s | +| Memory Access: big memORy EXPansion False: offset initialized False: offset 0: MLOAD | 46.53s | 32.07s | 26.84s | 24.02s | +| Memory Access: big memORy EXPansion False: offset initialized False: offset 0: MSTORE8 | 40.67s | 29.09s | 24.86s | 21.18s | +| Memory Access: big memORy EXPansion False: offset initialized False: offset 0: MSTORE | 52.53s | 34.71s | 27.50s | 23.81s | +| Memory Access: big memORy EXPansion False: offset initialized False: offset 1: MLOAD | 47.32s | 32.63s | 25.24s | 23.55s | +| Memory Access: big memORy EXPansion False: offset initialized False: offset 1: MSTORE8 | 40.92s | 29.00s | 24.38s | 22.13s | +| Memory Access: big memORy EXPansion False: offset initialized False: offset 1: MSTORE | 58.77s | 36.87s | 30.17s | 26.65s | +| Memory Access: big memORy EXPansion False: offset initialized False: offset 31: MLOAD | 47.10s | 33.24s | 26.71s | 23.90s | +| Memory Access: big memORy EXPansion False: offset initialized False: offset 31: MSTORE8 | 39.26s | 28.73s | 22.26s | 22.50s | +| Memory Access: big memORy EXPansion False: offset initialized False: offset 31: MSTORE | 58.12s | 38.55s | 30.53s | 27.47s | +| Memory Access: big memORy EXPansion False: offset initialized True: offset 0: MLOAD | 47.26s | 32.01s | 26.49s | 23.50s | +| Memory Access: big memORy EXPansion False: offset initialized True: offset 0: MSTORE8 | 40.29s | 29.23s | 22.36s | 22.27s | +| Memory Access: big memORy EXPansion False: offset initialized True: offset 0: MSTORE | 52.98s | 33.82s | 26.77s | 24.32s | +| Memory Access: big memORy EXPansion False: offset initialized True: offset 1: MLOAD | 46.73s | 32.60s | 27.02s | 23.15s | +| Memory Access: big memORy EXPansion False: offset initialized True: offset 1: MSTORE8 | 39.78s | 29.30s | 24.59s | 22.77s | +| Memory Access: big memORy EXPansion False: offset initialized True: offset 1: MSTORE | 59.27s | 37.87s | 28.52s | 26.27s | +| Memory Access: big memORy EXPansion False: offset initialized True: offset 31: MLOAD | 47.00s | 31.12s | 26.55s | 22.74s | +| Memory Access: big memORy EXPansion False: offset initialized True: offset 31: MSTORE8 | 38.87s | 28.67s | 24.27s | 22.61s | +| Memory Access: big memORy EXPansion False: offset initialized True: offset 31: MSTORE | 57.65s | 38.28s | 31.01s | 26.68s | +| Memory Access: big memORy EXPansion True: offset initialized False: offset 0: MLOAD | 46.82s | 31.25s | 26.71s | 23.63s | +| Memory Access: big memORy EXPansion True: offset initialized False: offset 0: MSTORE8 | 39.97s | 27.98s | 22.01s | 22.03s | +| Memory Access: big memORy EXPansion True: offset initialized False: offset 0: MSTORE | 51.47s | 34.26s | 28.57s | 25.24s | +| Memory Access: big memORy EXPansion True: offset initialized False: offset 1: MLOAD | 47.20s | 32.26s | 26.55s | 23.87s | +| Memory Access: big memORy EXPansion True: offset initialized False: offset 1: MSTORE8 | 40.04s | 29.43s | 24.52s | 21.32s | +| Memory Access: big memORy EXPansion True: offset initialized False: offset 1: MSTORE | 57.71s | 35.82s | 30.43s | 26.76s | +| Memory Access: big memORy EXPansion True: offset initialized False: offset 31: MLOAD | 46.49s | 32.35s | 25.57s | 22.84s | +| Memory Access: big memORy EXPansion True: offset initialized False: offset 31: MSTORE8 | 38.72s | 28.30s | 23.77s | 22.18s | +| Memory Access: big memORy EXPansion True: offset initialized False: offset 31: MSTORE | 57.52s | 38.27s | 29.16s | 26.59s | +| Memory Access: big memORy EXPansion True: offset initialized True: offset 0: MLOAD | 46.26s | 32.70s | 26.63s | 24.45s | +| Memory Access: big memORy EXPansion True: offset initialized True: offset 0: MSTORE8 | 40.25s | 29.40s | 24.74s | 21.58s | +| Memory Access: big memORy EXPansion True: offset initialized True: offset 0: MSTORE | 51.87s | 34.56s | 28.74s | 24.15s | +| Memory Access: big memORy EXPansion True: offset initialized True: offset 1: MLOAD | 46.16s | 32.43s | 24.95s | 23.90s | +| Memory Access: big memORy EXPansion True: offset initialized True: offset 1: MSTORE8 | 39.27s | 29.36s | 24.56s | 22.06s | +| Memory Access: big memORy EXPansion True: offset initialized True: offset 1: MSTORE | 58.14s | 38.42s | 29.28s | 26.82s | +| Memory Access: big memORy EXPansion True: offset initialized True: offset 31: MLOAD | 47.21s | 33.04s | 25.69s | 23.47s | +| Memory Access: big memORy EXPansion True: offset initialized True: offset 31: MSTORE8 | 39.37s | 29.44s | 23.67s | 22.55s | +| Memory Access: big memORy EXPansion True: offset initialized True: offset 31: MSTORE | 58.33s | 38.98s | 30.44s | 25.92s | +| Mod: op MOD: MOD bits 127 | 2m 55.8s | 1m 37.4s | 1m 9.8s | 56.45s | +| Mod: op MOD: MOD bits 191 | 3m 44.6s | 2m 2.7s | 1m 25.9s | 1m 7.7s | +| Mod: op MOD: MOD bits 255 | 2m 50.2s | 1m 30.0s | 1m 6.6s | 53.58s | +| Mod: op MOD: MOD bits 63 | 1m 59.0s | 1m 8.8s | 51.16s | 42.12s | +| Mod: op SMOD: MOD bits 127 | 3m 4.4s | 1m 39.1s | 1m 10.9s | 57.78s | +| Mod: op SMOD: MOD bits 191 | 3m 53.9s | 2m 4.9s | 1m 27.7s | 1m 10.6s | +| Mod: op SMOD: MOD bits 255 | 2m 55.1s | 1m 35.8s | 1m 8.1s | 55.55s | +| Mod: op SMOD: MOD bits 63 | 2m 8.4s | 1m 12.1s | 51.83s | 44.35s | +| Modarith: op ADDMOD: MOD bits 127 | 3m 27.1s | 1m 53.6s | 1m 19.7s | 1m 4.6s | +| Modarith: op ADDMOD: MOD bits 191 | 4m 19.8s | 2m 20.9s | 1m 38.8s | N/A | +| Modarith: op ADDMOD: MOD bits 255 | 3m 22.3s | 1m 49.2s | 1m 14.9s | 1m 2.5s | +| Modarith: op ADDMOD: MOD bits 63 | 2m 23.6s | N/A | 58.90s | 48.48s | +| Modarith: op MULMOD: MOD bits 127 | 4m 7.7s | 2m 11.7s | 1m 33.2s | 1m 14.1s | +| Modarith: op MULMOD: MOD bits 191 | 5m 59.1s | 3m 9.1s | 2m 9.4s | 1m 42.1s | +| Modarith: op MULMOD: MOD bits 255 | 5m 45.8s | 2m 56.4s | 2m 4.8s | 1m 38.1s | +| Modarith: op MULMOD: MOD bits 63 | 3m 10.6s | 1m 44.0s | 1m 14.9s | 1m 0.1s | +| Modexp: MOD 1045 gas base heavy | 48m 33.4s | 24m 49.3s | 16m 55.7s | 12m 57.6s | +| Modexp: MOD 1360 gas BALANCEd | 12m 50.4s | 6m 28.9s | 4m 27.1s | 3m 27.1s | +| Modexp: MOD 400 gas EXP heavy | 15m 59.7s | 8m 19.4s | 5m 37.4s | 4m 19.1s | +| Modexp: MOD 408 gas BALANCEd | 11m 16.7s | 5m 44.1s | 3m 53.1s | 3m 2.4s | +| Modexp: MOD 408 gas base heavy | N/A | 22m 37.6s | 15m 36.0s | 11m 54.1s | +| Modexp: MOD 600 as BALANCEd | 11m 16.4s | 5m 57.6s | 3m 56.8s | 3m 4.8s | +| Modexp: MOD 600 gas EXP heavy | 17m 36.4s | 8m 55.4s | 6m 0.3s | 4m 35.6s | +| Modexp: MOD 616 gas base heavy | 47m 55.6s | 24m 17.6s | 16m 34.3s | 12m 20.2s | +| Modexp: MOD 677 gas base heavy | 12m 5.1s | 6m 12.4s | 4m 14.6s | 3m 16.4s | +| Modexp: MOD 765 gas EXP heavy | 14m 23.2s | 7m 7.1s | 4m 48.2s | 3m 42.1s | +| Modexp: MOD 767 gas BALANCEd | 10m 50.7s | 5m 38.3s | 3m 51.3s | 3m 0.5s | +| Modexp: MOD 800 gas base heavy | 48m 41.8s | 25m 11.9s | 16m 43.8s | 12m 39.9s | +| Modexp: MOD 800 gas EXP heavy | 17m 38.1s | 9m 8.0s | 6m 12.3s | 4m 42.2s | +| Modexp: MOD 852 gas EXP heavy | 17m 38.8s | 9m 16.7s | 6m 5.8s | 4m 41.1s | +| Modexp: MOD 867 gas base heavy | 49m 5.1s | 25m 32.6s | N/A | 12m 53.6s | +| Modexp: MOD 996 gas BALANCEd | N/A | 5m 44.6s | 3m 52.3s | 3m 1.2s | +| Modexp: MOD even 1024b EXP 1024 | 15.02s | 12.30s | 12.68s | 16.63s | +| Modexp: MOD even 128b EXP 1024 | 10m 4.7s | 5m 17.4s | 3m 36.3s | 2m 47.5s | +| Modexp: MOD even 16b EXP 320 | 17m 20.4s | 8m 38.1s | 5m 52.6s | 4m 30.5s | +| Modexp: MOD even 24b EXP 168 | 14m 5.6s | 7m 4.1s | 4m 47.8s | 3m 41.3s | +| Modexp: MOD even 256b EXP 1024 | 7m 10.2s | 3m 43.7s | 2m 34.3s | 2m 1.9s | +| Modexp: MOD even 32b EXP 256 | 13m 18.9s | 6m 45.7s | 4m 28.9s | 3m 31.9s | +| Modexp: MOD even 32b EXP 40 | 10m 33.9s | 5m 29.9s | 3m 44.0s | 2m 55.6s | +| Modexp: MOD even 32b EXP 96 | 12m 39.3s | 6m 24.0s | 4m 17.5s | 3m 16.8s | +| Modexp: MOD even 512b EXP 1024 | 15.13s | 15.57s | 14.09s | 18.32s | +| Modexp: MOD even 64b EXP 512 | 11m 10.8s | 5m 37.8s | 3m 56.3s | 3m 1.2s | +| Modexp: MOD even 8b EXP 896 | 31m 2.8s | 15m 6.1s | 10m 15.5s | 7m 42.0s | +| Modexp: MOD EXP 208 gas BALANCEd | 9m 55.1s | 5m 9.5s | 3m 29.5s | 2m 44.5s | +| Modexp: MOD EXP 215 gas EXP heavy | 27m 20.5s | 13m 27.8s | 9m 7.3s | 6m 59.7s | +| Modexp: MOD EXP 298 gas EXP heavy | 29m 27.4s | 14m 45.5s | 10m 2.1s | 7m 36.9s | +| Modexp: MOD min as BALANCEd | 10m 45.1s | 5m 34.9s | 3m 47.1s | 2m 53.9s | +| Modexp: MOD min as base heavy | 38m 8.5s | 19m 2.1s | 12m 38.8s | N/A | +| Modexp: MOD min as EXP heavy | 25m 40.1s | 13m 14.3s | 9m 5.2s | 6m 47.1s | +| Modexp: MOD odd 1024b EXP 1024 | 14.66s | 13.14s | 14.64s | 15.75s | +| Modexp: MOD odd 128b EXP 1024 | 10m 28.4s | 5m 12.1s | 3m 32.8s | N/A | +| Modexp: MOD odd 256b EXP 1024 | 7m 11.6s | 3m 49.0s | 2m 35.9s | 2m 3.5s | +| Modexp: MOD odd 32b EXP 256 | 13m 6.3s | 6m 40.1s | 4m 31.6s | 3m 27.2s | +| Modexp: MOD odd 32b EXP 96 | 11m 56.3s | 5m 58.2s | 4m 8.2s | N/A | +| Modexp: MOD odd 32b EXP cover windows | 9m 30.8s | 4m 55.0s | 3m 18.8s | 2m 35.2s | +| Modexp: MOD odd 512b EXP 1024 | 14.92s | 12.44s | 12.19s | 17.58s | +| Modexp: MOD odd 64b EXP 512 | 11m 11.6s | 5m 42.2s | 3m 54.0s | 3m 0.6s | +| Modexp: MOD pawel 2 | 16m 25.1s | 8m 15.5s | 5m 39.7s | 4m 23.0s | +| Modexp: MOD pawel 3 | 13m 9.0s | 6m 51.5s | 4m 32.1s | 3m 33.7s | +| Modexp: MOD pawel 4 | 11m 55.4s | 6m 3.8s | 4m 10.0s | 3m 9.6s | +| Modexp: MOD vul common 1152n1 | 7m 11.0s | 3m 41.6s | 2m 32.9s | 1m 57.8s | +| Modexp: MOD vul common 1349n1 | 10m 23.8s | 5m 20.4s | 3m 35.3s | 2m 46.7s | +| Modexp: MOD vul common 1360n1 | 11m 33.9s | 5m 51.0s | 3m 57.7s | 3m 2.5s | +| Modexp: MOD vul common 1360n2 | 10m 7.1s | 5m 14.4s | 3m 39.0s | 2m 46.1s | +| Modexp: MOD vul common 200n1 | 5m 46.3s | 2m 58.0s | 2m 7.5s | 1m 38.6s | +| Modexp: MOD vul common 200n2 | 7m 18.2s | 3m 49.5s | 2m 38.3s | 2m 2.6s | +| Modexp: MOD vul common 200n3 | 7m 25.5s | 3m 48.3s | 2m 38.3s | 2m 3.8s | +| Modexp: MOD vul example 1 | N/A | 6m 34.6s | 4m 27.2s | 3m 28.4s | +| Modexp: MOD vul example 2 | 12m 16.0s | 6m 14.5s | 4m 14.5s | 3m 13.8s | +| Modexp: MOD vul guido 1 even | 8m 53.3s | 4m 48.2s | 3m 18.5s | 2m 35.1s | +| Modexp: MOD vul guido 2 even | 14m 56.1s | 8m 0.9s | 5m 21.5s | 4m 6.6s | +| Modexp: MOD vul guido 3 even | 24m 34.4s | 12m 27.8s | 8m 42.1s | 6m 36.0s | +| Modexp: MOD vul marius 1 even | 14m 15.9s | 7m 4.9s | 4m 55.5s | 3m 44.5s | +| Modexp: MOD vul nagydani 1 pow 0x10001 | 9m 17.7s | 4m 38.9s | 3m 15.4s | 2m 29.2s | +| Modexp: MOD vul nagydani 1 qube | 6m 47.3s | 3m 35.1s | 2m 28.9s | 1m 55.9s | +| Modexp: MOD vul nagydani 1 square | 6m 34.8s | 3m 20.8s | 2m 20.6s | 1m 49.3s | +| Modexp: MOD vul nagydani 2 pow 0x10001 | 9m 23.0s | 4m 49.7s | 3m 20.9s | 2m 34.4s | +| Modexp: MOD vul nagydani 2 qube | 20m 33.2s | 10m 29.0s | 7m 12.7s | 5m 27.3s | +| Modexp: MOD vul nagydani 2 square | 19m 19.3s | 9m 38.0s | 6m 42.8s | 5m 4.5s | +| Modexp: MOD vul nagydani 3 pow 0x10001 | 8m 58.4s | 4m 31.8s | 3m 9.3s | 2m 27.5s | +| Modexp: MOD vul nagydani 3 qube | 50m 38.9s | N/A | N/A | 12m 54.9s | +| Modexp: MOD vul nagydani 3 square | 44m 59.4s | 23m 38.2s | N/A | N/A | +| Modexp: MOD vul nagydani 4 pow 0x10001 | 8m 29.1s | 4m 26.3s | 2m 58.6s | 2m 20.5s | +| Modexp: MOD vul nagydani 4 qube | N/A | 28m 51.7s | N/A | 14m 40.6s | +| Modexp: MOD vul nagydani 4 square | 53m 5.8s | 25m 38.4s | 17m 49.3s | 13m 15.3s | +| Modexp: MOD vul nagydani 5 pow 0x10001 | 7m 34.3s | 4m 4.9s | 2m 46.4s | 2m 8.7s | +| Modexp: MOD vul nagydani 5 qube | N/A | 29m 18.8s | 19m 29.5s | 14m 41.2s | +| Modexp: MOD vul nagydani 5 square | 52m 21.2s | 26m 35.8s | N/A | 13m 26.4s | +| Modexp: MOD vul pawel 1 EXP heavy | 28m 11.4s | 14m 23.2s | 9m 45.3s | 7m 19.5s | +| Modexp: MOD vul pawel 2 EXP heavy | 15m 23.0s | 8m 7.3s | N/A | 4m 10.0s | +| Modexp: MOD vul pawel 3 EXP heavy | 12m 48.4s | 6m 32.3s | 4m 23.2s | 3m 22.3s | +| Modexp: MOD vul pawel 4 EXP heavy | 11m 2.6s | 5m 48.9s | 3m 57.8s | 3m 1.7s | +| Msize: mem size 0 | 45.10s | 31.44s | 26.53s | 23.40s | +| Msize: mem size 1000000 | 44.29s | 31.55s | 25.62s | 23.86s | +| Msize: mem size 100000 | 44.28s | 30.54s | 26.29s | 23.63s | +| Msize: mem size 1000 | 44.97s | 31.47s | 24.85s | 23.09s | +| Msize: mem size 1 | 44.39s | 32.39s | 25.23s | 23.21s | +| Precompile Fixed Cost: blake2f | 10m 46.7s | 5m 35.5s | 3m 49.6s | 2m 54.7s | +| Precompile Fixed Cost: bls12 fp to g1 | 1m 18.7s | 50.38s | 37.77s | 34.09s | +| Precompile Fixed Cost: bls12 fp to g2 | 1m 1.8s | 39.95s | 32.43s | 27.91s | +| Precompile Fixed Cost: bls12 g1ADD | 1m 0.9s | 39.73s | 31.11s | 28.08s | +| Precompile Fixed Cost: bls12 g1msm | 1m 26.9s | 54.12s | 41.37s | 34.96s | +| Precompile Fixed Cost: bls12 g2ADD | 1m 8.8s | 44.36s | 34.76s | 29.57s | +| Precompile Fixed Cost: bls12 g2msm | 1m 3.8s | 42.72s | 33.92s | 29.05s | +| Precompile Fixed Cost: bls12 pairing check | 1m 53.5s | 1m 7.2s | 49.67s | 42.43s | +| Precompile Fixed Cost: bn128 ADD | 1m 19.8s | 49.74s | 37.79s | 33.24s | +| Precompile Fixed Cost: bn128 ADD 1 2 | 1m 24.9s | 51.20s | 38.56s | 33.15s | +| Precompile Fixed Cost: bn128 ADD infinities | 52.83s | 35.82s | 27.62s | 25.86s | +| Precompile Fixed Cost: bn128 MUL | 4m 2.3s | 2m 13.8s | 1m 34.3s | 1m 15.7s | +| Precompile Fixed Cost: bn128 MUL 1 2 2 scalar | 19.37s | 16.69s | 13.23s | 20.80s | +| Precompile Fixed Cost: bn128 MUL 1 2 32 BYTE scalar | 3m 59.8s | N/A | 1m 32.4s | 1m 15.9s | +| Precompile Fixed Cost: bn128 MUL 32 BYTE coORd AND 2 scalar | 19.48s | 15.27s | 14.57s | 16.20s | +| Precompile Fixed Cost: bn128 MUL 32 BYTE coORd AND scalar | 3m 57.0s | 2m 8.8s | 1m 32.5s | 1m 15.1s | +| Precompile Fixed Cost: bn128 MUL infinities 2 scalar | 18.49s | 14.70s | 14.65s | 21.80s | +| Precompile Fixed Cost: bn128 MUL infinities 32 BYTE scalar | 2m 36.4s | 1m 26.8s | 1m 4.2s | 51.87s | +| Precompile Fixed Cost: bn128 one pairing | 3m 50.0s | 2m 6.2s | 1m 29.7s | 1m 12.0s | +| Precompile Fixed Cost: bn128 two pairings | 3m 49.8s | 2m 5.4s | 1m 29.7s | 1m 11.6s | +| Precompile Fixed Cost: bn128 two pairings empty | 15.03s | 12.66s | 12.63s | 14.42s | +| Precompile Fixed Cost: ecrecover | 3m 37.9s | 2m 2.6s | 1m 26.4s | 1m 12.0s | +| Precompile Fixed Cost: point evaluation | 4m 17.2s | 2m 19.9s | 1m 40.0s | 1m 21.2s | +| Precompile Only Data Input: IDENTITY | 31.02s | 24.43s | 20.76s | 19.57s | +| Precompile Only Data Input: RIPEMD: 160 | 24.21s | 21.00s | 17.36s | 17.93s | +| Precompile Only Data Input: SHA2: 256 | 19.96s | 15.73s | 16.72s | 19.55s | +| Push: PUSH0 | 38.26s | 28.45s | 23.41s | 21.41s | +| Push: PUSH10 | 40.80s | 29.11s | 23.46s | 22.74s | +| Push: PUSH11 | 41.85s | 29.84s | 25.12s | 23.02s | +| Push: PUSH12 | 42.78s | 30.03s | 24.08s | 21.45s | +| Push: PUSH13 | 42.01s | 30.59s | 24.02s | 22.83s | +| Push: PUSH14 | 45.31s | 31.95s | 25.98s | 23.43s | +| Push: PUSH15 | 46.62s | 31.99s | 26.07s | 23.81s | +| Push: PUSH16 | 45.95s | 30.71s | 24.55s | 22.30s | +| Push: PUSH17 | 46.09s | 32.07s | 26.17s | 23.65s | +| Push: PUSH18 | 47.52s | 32.69s | 26.76s | 22.92s | +| Push: PUSH19 | 49.13s | 33.00s | 27.12s | 24.17s | +| Push: PUSH1 | 31.49s | 25.84s | 22.16s | 19.60s | +| Push: PUSH20 | 47.21s | 32.40s | 26.20s | 24.19s | +| Push: PUSH21 | 49.98s | 33.70s | 27.81s | 25.09s | +| Push: PUSH22 | 51.71s | 34.20s | 28.34s | 24.81s | +| Push: PUSH23 | 53.43s | 32.22s | 28.13s | 24.34s | +| Push: PUSH24 | 54.09s | 35.37s | 29.08s | 24.46s | +| Push: PUSH25 | 55.69s | 37.61s | 28.96s | 25.92s | +| Push: PUSH26 | 56.95s | 38.03s | 29.49s | 26.54s | +| Push: PUSH27 | 57.92s | 38.72s | 30.59s | 25.99s | +| Push: PUSH28 | 57.43s | 38.76s | 30.68s | 25.91s | +| Push: PUSH29 | 1m 0.3s | 39.36s | 30.84s | 27.59s | +| Push: PUSH2 | 33.07s | 24.95s | 21.57s | 20.44s | +| Push: PUSH30 | 1m 1.1s | 39.39s | 31.31s | 27.51s | +| Push: PUSH31 | 1m 1.9s | 40.09s | 31.53s | 26.86s | +| Push: PUSH32 | 1m 5.5s | 40.80s | 32.52s | 28.39s | +| Push: PUSH3 | 34.94s | 26.73s | 20.99s | 21.33s | +| Push: PUSH4 | 34.19s | 25.54s | 23.62s | 21.23s | +| Push: PUSH5 | 36.20s | 27.31s | 23.16s | 21.43s | +| Push: PUSH6 | 37.55s | 28.34s | 23.73s | 22.24s | +| Push: PUSH7 | 39.14s | 28.41s | 23.71s | 21.81s | +| Push: PUSH8 | 37.63s | 28.27s | 24.03s | 22.08s | +| Push: PUSH9 | 39.56s | 28.42s | 23.78s | 21.55s | +| Return Revert: 1KiB of non: zero data: RETURN | 50.16s | 34.36s | 27.89s | 24.84s | +| Return Revert: 1KiB of non: zero data: REVERT | 52.35s | 35.32s | 27.44s | 25.74s | +| Return Revert: 1KiB of zero data: RETURN | 1m 1.0s | 39.61s | 30.09s | 27.60s | +| Return Revert: 1KiB of zero data: REVERT | 1m 3.8s | 40.57s | 33.37s | 27.89s | +| Return Revert: 1MiB of non: zero data: RETURN | 15.36s | 13.29s | 13.28s | 15.65s | +| Return Revert: 1MiB of non: zero data: REVERT | 15.26s | 13.05s | 14.54s | 15.73s | +| Return Revert: 1MiB of zero data: RETURN | 14.97s | 16.01s | 16.06s | 15.59s | +| Return Revert: 1MiB of zero data: REVERT | 15.01s | 12.85s | 10.91s | 17.37s | +| Return Revert: empty: RETURN | 1m 20.9s | 49.14s | 37.14s | 32.32s | +| Return Revert: empty: REVERT | 1m 28.4s | 53.63s | 40.79s | 34.45s | +| Returndatasize Nonzero: RETURNed size 0: RETURN data style ReturnDataStyle.IDENTITY | 31.92s | 24.32s | 21.37s | 20.77s | +| Returndatasize Nonzero: RETURNed size 0: RETURN data style ReturnDataStyle.RETURN | 32.53s | 25.27s | 22.46s | 19.96s | +| Returndatasize Nonzero: RETURNed size 0: RETURN data style ReturnDataStyle.REVERT | 32.37s | 25.04s | 19.46s | 20.29s | +| Returndatasize Nonzero: RETURNed size 1: RETURN data style ReturnDataStyle.IDENTITY | 31.86s | 25.17s | 21.82s | 19.45s | +| Returndatasize Nonzero: RETURNed size 1: RETURN data style ReturnDataStyle.RETURN | 32.48s | 23.93s | 21.97s | 19.92s | +| Returndatasize Nonzero: RETURNed size 1: RETURN data style ReturnDataStyle.REVERT | 32.06s | 25.59s | 21.79s | 18.61s | +| Returndatasize Zero: benchmark: gas: value 1M: blockchain test from state test | 32.26s | 25.15s | 21.79s | 20.75s | +| Shifts: shift right SAR | 1m 3.8s | 41.32s | 30.65s | 27.75s | +| Shifts: shift right SHR | 59.96s | 38.98s | 30.28s | 26.63s | +| Swap: SWAP10 | 1m 5.9s | 41.29s | 32.54s | 28.24s | +| Swap: SWAP11 | 1m 6.7s | 42.13s | 31.02s | 28.74s | +| Swap: SWAP12 | 1m 4.4s | 42.11s | 33.33s | 28.11s | +| Swap: SWAP13 | 1m 5.1s | 42.18s | 33.07s | 27.84s | +| Swap: SWAP14 | 1m 5.0s | 42.75s | 32.85s | 27.58s | +| Swap: SWAP15 | 1m 5.0s | 41.95s | 33.17s | 28.15s | +| Swap: SWAP16 | 1m 6.1s | 42.11s | 32.98s | 28.89s | +| Swap: SWAP1 | 1m 5.9s | 41.06s | 32.78s | 27.73s | +| Swap: SWAP2 | 1m 5.0s | 41.59s | 32.90s | 28.89s | +| Swap: SWAP3 | 1m 6.2s | 41.49s | 33.16s | 28.59s | +| Swap: SWAP4 | 1m 4.6s | 41.47s | 32.13s | 28.54s | +| Swap: SWAP5 | 1m 5.3s | 41.98s | 32.15s | 28.19s | +| Swap: SWAP6 | 1m 5.5s | 41.88s | 33.03s | 28.67s | +| Swap: SWAP7 | 1m 5.9s | 42.08s | 32.91s | 27.71s | +| Swap: SWAP8 | 1m 6.3s | 42.23s | 32.45s | 28.05s | +| Swap: SWAP9 | 1m 5.1s | 41.61s | 32.97s | 28.14s | +| Tload: val mut False: key mut False | 18.73s | 17.33s | 14.12s | 18.76s | +| Tload: val mut False: key mut True | 18.28s | 18.29s | 15.69s | 19.20s | +| Tload: val mut True: key mut False | 18.85s | 15.23s | 16.34s | 19.85s | +| Tload: val mut True: key mut True | 19.39s | 15.28s | 15.24s | 16.75s | +| Tstore: dense val mut False: key mut False | 28.91s | 23.27s | 19.98s | 19.00s | +| Tstore: dense val mut False: key mut True | 29.03s | 23.51s | 19.20s | 19.36s | +| Tstore: dense val mut True: key mut False | 45.60s | 31.39s | 24.92s | 23.23s | +| Tstore: dense val mut True: key mut True | 45.23s | 31.55s | 26.77s | 23.80s | +| Unop: ISZERO | 1m 8.9s | 44.01s | 34.65s | 29.81s | +| Unop: NOT | 32.65s | 24.97s | 22.16s | 20.06s | +| Zero Param: ADDRESS | 1m 5.0s | 41.42s | 31.57s | 27.15s | +| Zero Param: BASEFEE | 39.20s | 29.44s | 23.03s | 21.16s | +| Zero Param: BLOBBASEFEE | 50.47s | 34.17s | 26.86s | 24.69s | +| Zero Param: CALLER | 1m 2.8s | 41.97s | 33.57s | 27.48s | +| Zero Param: CHAINID | 39.94s | 29.39s | 24.33s | 22.55s | +| Zero Param: CODESIZE | 49.59s | 33.87s | 26.91s | 23.95s | +| Zero Param: COINBASE | 1m 3.5s | 41.55s | 31.53s | 27.26s | +| Zero Param: GASLIMIT | 39.53s | 25.96s | 24.38s | 22.02s | +| Zero Param: GASPRICE | 46.77s | 32.87s | 25.89s | 24.66s | +| Zero Param: GAS | 37.83s | 27.66s | 23.95s | 23.00s | +| Zero Param: NUMBER | 41.66s | 30.73s | 25.26s | 22.38s | +| Zero Param: ORIGIN | 1m 4.4s | 41.24s | 33.64s | 28.45s | +| Zero Param: PREVRANDAO | 2m 0.7s | 1m 11.1s | 51.75s | 43.02s | +| Zero Param: TIMESTAMP | 42.24s | 27.45s | 24.48s | 23.43s | + +**Category Statistics:** + +| GPUs | Mean | Median | +| --- | --- | --- | +| 1 GPU | 4m 51.8s | 58.24s | +| 2 GPUs | 2m 46.9s | 38.55s | +| 3 GPUs | 1m 43.1s | 30.36s | +| 4 GPUs | 1m 29.6s | 26.61s | + +--- + +### Worst Memory.Py + +**50 tests** + +| Test Name | 1 GPU | 2 GPUs | 3 GPUs | 4 GPUs | +| --- | --- | --- | --- | --- | +| Calldatacopy: non zero data False: fixed src dst False: 0 BYTEs: CALL | 52.01s | 35.12s | 26.19s | 25.49s | +| Calldatacopy: non zero data False: fixed src dst False: 0 BYTEs: transaction | 52.32s | 35.09s | N/A | 24.79s | +| Calldatacopy: non zero data False: fixed src dst False: 100 BYTEs: CALL | 46.76s | 31.48s | 24.71s | 23.36s | +| Calldatacopy: non zero data False: fixed src dst False: 100 BYTEs: transaction | 43.63s | 30.10s | 25.96s | 22.88s | +| Calldatacopy: non zero data False: fixed src dst False: 10KiB: CALL | 27.33s | 22.37s | 18.49s | 18.44s | +| Calldatacopy: non zero data False: fixed src dst False: 10KiB: transaction | 19.51s | 18.54s | 14.59s | 18.16s | +| Calldatacopy: non zero data False: fixed src dst False: 1MiB: CALL | 14.16s | 12.01s | 13.86s | 17.23s | +| Calldatacopy: non zero data False: fixed src dst False: 1MiB: transaction | 14.71s | 12.78s | 10.70s | 19.38s | +| Calldatacopy: non zero data False: fixed src dst True: 0 BYTEs: CALL | 37.58s | 27.73s | 23.09s | 21.76s | +| Calldatacopy: non zero data False: fixed src dst True: 0 BYTEs: transaction | 36.43s | 26.99s | 21.41s | 21.43s | +| Calldatacopy: non zero data False: fixed src dst True: 100 BYTEs: CALL | 31.34s | 26.11s | 21.73s | 19.87s | +| Calldatacopy: non zero data False: fixed src dst True: 100 BYTEs: transaction | 30.07s | 21.69s | 20.59s | 19.76s | +| Calldatacopy: non zero data False: fixed src dst True: 10KiB: CALL | 22.96s | 20.75s | 17.04s | 20.18s | +| Calldatacopy: non zero data False: fixed src dst True: 10KiB: transaction | 18.25s | 16.40s | 13.60s | 18.91s | +| Calldatacopy: non zero data False: fixed src dst True: 1MiB: CALL | 14.14s | 12.09s | 12.38s | 15.72s | +| Calldatacopy: non zero data False: fixed src dst True: 1MiB: transaction | 14.95s | 15.62s | 10.67s | 14.34s | +| Calldatacopy: non zero data True: fixed src dst False: 100 BYTEs: CALL | 46.77s | 32.35s | 26.58s | 23.77s | +| Calldatacopy: non zero data True: fixed src dst False: 100 BYTEs: transaction | 45.78s | 31.78s | 26.66s | 23.88s | +| Calldatacopy: non zero data True: fixed src dst False: 10KiB: CALL | 26.61s | 22.06s | 18.47s | 17.46s | +| Calldatacopy: non zero data True: fixed src dst False: 10KiB: transaction | 25.46s | 22.07s | 17.07s | 18.26s | +| Calldatacopy: non zero data True: fixed src dst True: 100 BYTEs: CALL | 33.12s | 25.63s | 22.47s | 20.37s | +| Calldatacopy: non zero data True: fixed src dst True: 100 BYTEs: transaction | 32.80s | 25.34s | 22.33s | 19.57s | +| Calldatacopy: non zero data True: fixed src dst True: 10KiB: CALL | 22.44s | 20.58s | 18.16s | 20.84s | +| Calldatacopy: non zero data True: fixed src dst True: 10KiB: transaction | 21.66s | 18.16s | 16.66s | 19.68s | +| Codecopy: fixed src dst False: 0 BYTEs | 50.60s | 34.68s | 26.45s | 24.06s | +| Codecopy: fixed src dst False: 0.25x max code size | 31.76s | 22.50s | 21.29s | 20.21s | +| Codecopy: fixed src dst False: 0.50x max code size | 27.92s | 22.96s | 16.59s | 19.79s | +| Codecopy: fixed src dst False: 0.75x max code size | 28.07s | 23.85s | 20.66s | 18.95s | +| Codecopy: fixed src dst False: max code size | 28.16s | 22.70s | 21.01s | 18.84s | +| Codecopy: fixed src dst True: 0 BYTEs | 34.02s | 26.21s | 22.48s | 20.68s | +| Codecopy: fixed src dst True: 0.25x max code size | 23.08s | 21.20s | 17.43s | 19.80s | +| Codecopy: fixed src dst True: 0.50x max code size | 22.40s | 20.40s | 16.44s | 18.67s | +| Codecopy: fixed src dst True: 0.75x max code size | 22.68s | 20.95s | 17.17s | 20.25s | +| Codecopy: fixed src dst True: max code size | 22.26s | 21.43s | 16.18s | 20.32s | +| Mcopy: fixed src dst False: 0 BYTEs | 49.93s | 34.72s | 27.44s | 24.37s | +| Mcopy: fixed src dst False: 100 BYTEs | 49.04s | 34.05s | 27.16s | 24.31s | +| Mcopy: fixed src dst False: 10KiB | 39.42s | 27.76s | 23.78s | 22.23s | +| Mcopy: fixed src dst False: 1MiB | 15.39s | 16.18s | 12.36s | 16.17s | +| Mcopy: fixed src dst True: 0 BYTEs | 33.53s | 26.12s | 22.16s | 20.69s | +| Mcopy: fixed src dst True: 100 BYTEs | 34.54s | 26.18s | 21.88s | 21.22s | +| Mcopy: fixed src dst True: 10KiB | 29.38s | 24.94s | 20.22s | 19.58s | +| Mcopy: fixed src dst True: 1MiB | 15.27s | 12.83s | 13.87s | 15.53s | +| Returndatacopy: fixed dst False: 0 BYTEs | 50.29s | 33.83s | 26.78s | 23.65s | +| Returndatacopy: fixed dst False: 100 BYTEs | 41.94s | 27.78s | 24.32s | 22.60s | +| Returndatacopy: fixed dst False: 10KiB | 29.20s | 24.18s | 19.50s | 19.26s | +| Returndatacopy: fixed dst False: 1MiB | 16.02s | 13.55s | 15.52s | 19.69s | +| Returndatacopy: fixed dst True: 0 BYTEs | 39.76s | 28.79s | 24.18s | 22.20s | +| Returndatacopy: fixed dst True: 100 BYTEs | 33.20s | 25.00s | 21.66s | 20.39s | +| Returndatacopy: fixed dst True: 10KiB | 22.24s | 19.78s | 17.33s | 18.37s | +| Returndatacopy: fixed dst True: 1MiB | 15.88s | 16.22s | 13.47s | 15.52s | + +**Category Statistics:** + +| GPUs | Mean | Median | +| --- | --- | --- | +| 1 GPU | 30.74s | 29.29s | +| 2 GPUs | 23.83s | 23.41s | +| 3 GPUs | 19.81s | 20.59s | +| 4 GPUs | 20.26s | 20.02s | + +--- + +### Worst Opcode.Py + +**60 tests** + +| Test Name | 1 GPU | 2 GPUs | 3 GPUs | 4 GPUs | +| --- | --- | --- | --- | --- | +| Log Opcodes: fixed offset False: non zero topic: 0 BYTEs data: LOG0 | 16.96s | 17.38s | 15.50s | 15.83s | +| Log Opcodes: fixed offset False: non zero topic: 0 BYTEs data: LOG1 | 16.75s | 13.94s | 13.68s | 20.08s | +| Log Opcodes: fixed offset False: non zero topic: 0 BYTEs data: LOG2 | 15.85s | 15.98s | 14.02s | 17.46s | +| Log Opcodes: fixed offset False: non zero topic: 0 BYTEs data: LOG3 | 16.05s | 13.37s | 12.12s | 17.03s | +| Log Opcodes: fixed offset False: non zero topic: 0 BYTEs data: LOG4 | 16.05s | 12.95s | 13.37s | 16.11s | +| Log Opcodes: fixed offset False: non zero topic: 1 MiB non zero data: LOG0 | 15.07s | 15.92s | 11.15s | 14.05s | +| Log Opcodes: fixed offset False: non zero topic: 1 MiB non zero data: LOG1 | 15.02s | 12.34s | 12.69s | 17.39s | +| Log Opcodes: fixed offset False: non zero topic: 1 MiB non zero data: LOG2 | 14.88s | 12.42s | 12.73s | 17.69s | +| Log Opcodes: fixed offset False: non zero topic: 1 MiB non zero data: LOG3 | 15.04s | 12.52s | 15.80s | 15.82s | +| Log Opcodes: fixed offset False: non zero topic: 1 MiB non zero data: LOG4 | 14.95s | 12.93s | 15.65s | 15.83s | +| Log Opcodes: fixed offset False: non zero topic: 1 MiB zeros data: LOG0 | 15.57s | 15.50s | 12.43s | 17.25s | +| Log Opcodes: fixed offset False: non zero topic: 1 MiB zeros data: LOG1 | 15.08s | 15.87s | 15.62s | 17.21s | +| Log Opcodes: fixed offset False: non zero topic: 1 MiB zeros data: LOG2 | 15.05s | 15.54s | 12.75s | 19.10s | +| Log Opcodes: fixed offset False: non zero topic: 1 MiB zeros data: LOG3 | 15.06s | 12.84s | 15.05s | 17.46s | +| Log Opcodes: fixed offset False: non zero topic: 1 MiB zeros data: LOG4 | 14.92s | 12.30s | 15.38s | 14.00s | +| Log Opcodes: fixed offset False: zeros topic: 0 BYTEs data: LOG0 | 17.59s | 14.73s | 15.80s | 15.56s | +| Log Opcodes: fixed offset False: zeros topic: 0 BYTEs data: LOG1 | 16.33s | 14.09s | 15.81s | 17.91s | +| Log Opcodes: fixed offset False: zeros topic: 0 BYTEs data: LOG2 | 15.74s | 13.55s | 13.02s | 16.88s | +| Log Opcodes: fixed offset False: zeros topic: 0 BYTEs data: LOG3 | 15.65s | 16.72s | 15.96s | 17.47s | +| Log Opcodes: fixed offset False: zeros topic: 0 BYTEs data: LOG4 | 16.06s | 13.48s | 13.89s | 15.98s | +| Log Opcodes: fixed offset False: zeros topic: 1 MiB non zero data: LOG0 | 14.64s | 12.13s | 12.77s | 18.93s | +| Log Opcodes: fixed offset False: zeros topic: 1 MiB non zero data: LOG1 | 14.76s | 12.53s | 12.45s | 15.95s | +| Log Opcodes: fixed offset False: zeros topic: 1 MiB non zero data: LOG2 | 14.93s | 16.02s | 13.30s | 16.01s | +| Log Opcodes: fixed offset False: zeros topic: 1 MiB non zero data: LOG3 | 14.93s | 12.28s | 14.06s | 17.39s | +| Log Opcodes: fixed offset False: zeros topic: 1 MiB non zero data: LOG4 | 15.26s | 12.57s | 12.51s | 17.39s | +| Log Opcodes: fixed offset False: zeros topic: 1 MiB zeros data: LOG0 | 15.48s | 12.28s | 15.50s | 21.07s | +| Log Opcodes: fixed offset False: zeros topic: 1 MiB zeros data: LOG1 | 14.71s | 12.45s | 11.88s | 15.70s | +| Log Opcodes: fixed offset False: zeros topic: 1 MiB zeros data: LOG2 | 15.06s | 15.54s | 12.52s | 14.10s | +| Log Opcodes: fixed offset False: zeros topic: 1 MiB zeros data: LOG3 | 14.51s | 15.76s | 15.43s | 16.24s | +| Log Opcodes: fixed offset False: zeros topic: 1 MiB zeros data: LOG4 | 15.04s | 15.77s | 12.52s | 15.95s | +| Log Opcodes: fixed offset True: non zero topic: 0 BYTEs data: LOG0 | 15.35s | 12.86s | 12.93s | 16.52s | +| Log Opcodes: fixed offset True: non zero topic: 0 BYTEs data: LOG1 | 16.08s | 13.29s | 13.68s | 14.80s | +| Log Opcodes: fixed offset True: non zero topic: 0 BYTEs data: LOG2 | 15.94s | 16.28s | 11.65s | 14.35s | +| Log Opcodes: fixed offset True: non zero topic: 0 BYTEs data: LOG3 | 15.88s | 13.65s | 12.19s | 16.51s | +| Log Opcodes: fixed offset True: non zero topic: 0 BYTEs data: LOG4 | 15.79s | 13.12s | 11.83s | 17.11s | +| Log Opcodes: fixed offset True: non zero topic: 1 MiB non zero data: LOG0 | 14.72s | 12.38s | 13.95s | 15.64s | +| Log Opcodes: fixed offset True: non zero topic: 1 MiB non zero data: LOG1 | 14.97s | 12.55s | 16.30s | 15.63s | +| Log Opcodes: fixed offset True: non zero topic: 1 MiB non zero data: LOG2 | 14.94s | 12.63s | 10.90s | 15.62s | +| Log Opcodes: fixed offset True: non zero topic: 1 MiB non zero data: LOG3 | 15.01s | 12.40s | 12.35s | 16.26s | +| Log Opcodes: fixed offset True: non zero topic: 1 MiB non zero data: LOG4 | 14.89s | 12.33s | 15.33s | 14.08s | +| Log Opcodes: fixed offset True: non zero topic: 1 MiB zeros data: LOG0 | 15.10s | 15.67s | 14.52s | 17.62s | +| Log Opcodes: fixed offset True: non zero topic: 1 MiB zeros data: LOG1 | 15.32s | 15.45s | 12.80s | 15.39s | +| Log Opcodes: fixed offset True: non zero topic: 1 MiB zeros data: LOG2 | 15.21s | 12.23s | 15.76s | 18.81s | +| Log Opcodes: fixed offset True: non zero topic: 1 MiB zeros data: LOG3 | 15.12s | 13.11s | 15.58s | 18.70s | +| Log Opcodes: fixed offset True: non zero topic: 1 MiB zeros data: LOG4 | 15.03s | 12.72s | 12.72s | 15.36s | +| Log Opcodes: fixed offset True: zeros topic: 0 BYTEs data: LOG0 | 16.09s | 13.37s | 13.59s | 16.47s | +| Log Opcodes: fixed offset True: zeros topic: 0 BYTEs data: LOG1 | 16.14s | 16.49s | 14.90s | 15.20s | +| Log Opcodes: fixed offset True: zeros topic: 0 BYTEs data: LOG2 | 15.99s | 13.04s | 16.11s | 16.46s | +| Log Opcodes: fixed offset True: zeros topic: 0 BYTEs data: LOG3 | 15.69s | 13.49s | 16.73s | 15.38s | +| Log Opcodes: fixed offset True: zeros topic: 0 BYTEs data: LOG4 | 15.96s | 14.00s | 11.75s | 15.69s | +| Log Opcodes: fixed offset True: zeros topic: 1 MiB non zero data: LOG0 | 14.98s | 12.29s | 11.01s | 15.44s | +| Log Opcodes: fixed offset True: zeros topic: 1 MiB non zero data: LOG1 | 15.05s | 12.93s | 12.70s | 15.76s | +| Log Opcodes: fixed offset True: zeros topic: 1 MiB non zero data: LOG2 | 15.03s | 12.65s | 12.76s | 16.32s | +| Log Opcodes: fixed offset True: zeros topic: 1 MiB non zero data: LOG3 | 15.17s | 15.62s | 12.60s | 17.86s | +| Log Opcodes: fixed offset True: zeros topic: 1 MiB non zero data: LOG4 | 14.99s | 13.67s | 12.76s | 15.52s | +| Log Opcodes: fixed offset True: zeros topic: 1 MiB zeros data: LOG0 | 14.88s | 12.69s | 12.34s | 16.18s | +| Log Opcodes: fixed offset True: zeros topic: 1 MiB zeros data: LOG1 | 15.11s | 16.02s | 15.62s | 15.56s | +| Log Opcodes: fixed offset True: zeros topic: 1 MiB zeros data: LOG2 | 15.05s | 13.35s | 12.70s | 15.34s | +| Log Opcodes: fixed offset True: zeros topic: 1 MiB zeros data: LOG3 | 15.04s | 12.51s | 12.23s | 16.06s | +| Log Opcodes: fixed offset True: zeros topic: 1 MiB zeros data: LOG4 | 15.00s | 13.31s | 12.65s | 13.83s | + +**Category Statistics:** + +| GPUs | Mean | Median | +| --- | --- | --- | +| 1 GPU | 15.38s | 15.07s | +| 2 GPUs | 13.80s | 13.30s | +| 3 GPUs | 13.64s | 12.98s | +| 4 GPUs | 16.41s | 16.08s | + +--- + +### Worst Stateful Opcodes.Py + +**44 tests** + +| Test Name | 1 GPU | 2 GPUs | 3 GPUs | 4 GPUs | +| --- | --- | --- | --- | --- | +| Address State Cold: absent accounts False: BALANCE | 26.23s | 22.07s | 18.33s | 18.48s | +| Address State Cold: absent accounts True: BALANCE | 17.82s | 15.99s | 15.88s | 18.45s | +| Address State Warm: absent target False: BALANCE | 24.19s | 20.54s | 17.34s | 17.31s | +| Address State Warm: absent target False: CALLCODE | 1m 21.8s | 49.59s | 38.45s | 32.37s | +| Address State Warm: absent target False: CALL | 1m 19.9s | 50.32s | 38.63s | 32.13s | +| Address State Warm: absent target False: DELEGATECALL | 1m 10.1s | 44.44s | 34.67s | 28.29s | +| Address State Warm: absent target False: EXTCODEHASH | 28.28s | 23.18s | 20.02s | 19.09s | +| Address State Warm: absent target False: EXTCODESIZE | 25.80s | 22.08s | 19.66s | 18.73s | +| Address State Warm: absent target False: STATICCALL | 1m 22.2s | 49.33s | 37.40s | 32.88s | +| Address State Warm: absent target True: BALANCE | 23.22s | 20.82s | 17.52s | 18.26s | +| Address State Warm: absent target True: CALLCODE | 1m 17.6s | 48.55s | 37.78s | 31.70s | +| Address State Warm: absent target True: CALL | 1m 16.1s | 48.53s | 37.07s | 30.87s | +| Address State Warm: absent target True: DELEGATECALL | 1m 7.4s | 42.09s | 34.24s | 28.71s | +| Address State Warm: absent target True: EXTCODEHASH | 30.71s | 24.30s | 20.99s | 20.20s | +| Address State Warm: absent target True: EXTCODESIZE | 25.01s | 22.51s | 17.67s | 18.23s | +| Address State Warm: absent target True: STATICCALL | 1m 18.1s | 48.10s | 37.68s | 32.45s | +| Blockhash: benchmark: gas: value 1M: blockchain test | 41.24s | 30.48s | 24.88s | 22.71s | +| Extcodecopy Warm: 1KiB | 24.50s | 22.02s | 17.72s | 18.54s | +| Extcodecopy Warm: 512 | 24.80s | 22.01s | 16.17s | 22.39s | +| Extcodecopy Warm: 5KiB | 22.98s | 21.17s | 17.93s | 20.66s | +| Selfbalance: benchmark: gas: value 1M: blockchain test from state test | 2m 30.2s | 1m 27.3s | 1m 2.7s | 51.26s | +| Selfdestruct Created: value bearing False | 15.28s | 13.33s | 13.29s | 16.01s | +| Selfdestruct Created: value bearing True | 15.17s | 12.95s | 12.54s | 18.41s | +| Selfdestruct Existing: value bearing False | 20.80s | 19.37s | 17.48s | 18.60s | +| Selfdestruct Existing: value bearing True | 21.63s | 19.78s | 18.79s | 20.14s | +| Selfdestruct Initcode: value bearing False | 15.00s | 12.28s | 12.67s | 17.02s | +| Selfdestruct Initcode: value bearing True | 14.97s | 12.39s | 13.01s | 15.76s | +| Storage Access Cold: absent slots False: SSLOAD | 27.42s | 23.04s | 20.01s | 18.70s | +| Storage Access Cold: absent slots False: SSTORE new value, out of gas | 20.74s | 16.90s | 15.76s | 18.43s | +| Storage Access Cold: absent slots False: SSTORE new value, REVERT | 20.99s | 19.31s | 16.09s | 16.01s | +| Storage Access Cold: absent slots False: SSTORE new value | 21.04s | 19.94s | 14.39s | 17.94s | +| Storage Access Cold: absent slots False: SSTORE same value, out of gas | 26.97s | 22.82s | 19.16s | 17.74s | +| Storage Access Cold: absent slots False: SSTORE same value, REVERT | 27.69s | 23.58s | 18.45s | 17.97s | +| Storage Access Cold: absent slots False: SSTORE same value | 27.44s | 23.32s | 18.81s | N/A | +| Storage Access Cold: absent slots True: SSLOAD | 21.82s | 19.15s | 16.17s | 18.90s | +| Storage Access Cold: absent slots True: SSTORE new value, out of gas | 15.11s | 13.12s | 13.07s | 15.67s | +| Storage Access Cold: absent slots True: SSTORE new value, REVERT | 15.06s | 12.51s | 14.59s | 15.77s | +| Storage Access Cold: absent slots True: SSTORE new value | 15.18s | 15.84s | 15.96s | 15.48s | +| Storage Access Cold: absent slots True: SSTORE same value, out of gas | 15.06s | 15.69s | 15.81s | 16.38s | +| Storage Access Cold: absent slots True: SSTORE same value, REVERT | 15.02s | 13.10s | 13.05s | 16.14s | +| Storage Access Cold: absent slots True: SSTORE same value | 15.05s | 13.41s | 13.33s | 16.51s | +| Storage Access Warm: SLOAD | 26.51s | 23.55s | 16.41s | 19.13s | +| Storage Access Warm: SSTORE new value | 51.45s | 34.96s | 28.34s | 24.99s | +| Storage Access Warm: SSTORE same value | 43.73s | 29.79s | 25.15s | 22.42s | + +**Category Statistics:** + +| GPUs | Mean | Median | +| --- | --- | --- | +| 1 GPU | 36.08s | 24.91s | +| 2 GPUs | 26.49s | 22.04s | +| 3 GPUs | 21.93s | 17.83s | +| 4 GPUs | 21.58s | 18.60s | + +--- diff --git a/www/docs/pages/gpu-scaling-efficiency/1m-risc0-speedup-efficiency.md b/www/docs/pages/gpu-scaling-efficiency/1m-risc0-speedup-efficiency.md new file mode 100644 index 00000000..ba8d98b9 --- /dev/null +++ b/www/docs/pages/gpu-scaling-efficiency/1m-risc0-speedup-efficiency.md @@ -0,0 +1,634 @@ +# RISC0 GPU Speedup & Efficiency Report + +## Overview + +This report shows speedup factors and parallel efficiency for each test. + +- **Speedup**: How much faster compared to 1 GPU (higher is better) +- **Efficiency**: Speedup ÷ Number of GPUs (closer to 100% is better) + +**Hardware:** AMD EPYC 7543 (32-Core), 472 GiB RAM, 4x NVIDIA RTX 5090 + +--- + +## Summary + +| Configuration | Tests | Mean Speedup | Median Speedup | Mean Efficiency | Efficiency Range | +| --- | --- | --- | --- | --- | --- | +| 2 GPUs | 499 | **1.43x** | 1.39x | **71.7%** | 39.9% - 103.5% | +| 3 GPUs | 497 | **1.79x** | 1.66x | **59.6%** | 30.6% - 100.9% | +| 4 GPUs | 497 | **1.98x** | 1.81x | **49.5%** | 18.4% - 100.8% | + +--- + +## Speedup & Efficiency by Test Category + +### Worst Blocks.Py + +**8 tests** + +| Test Name | 2 GPUs | Eff | 3 GPUs | Eff | 4 GPUs | Eff | +| --- | --- | --- | --- | --- | --- | --- | +| Block Full Access List And Data: benchmark: gas: value 1M: blockchain test from state test | **1.23x** | 62% | **1.29x** | 43% | **0.94x** | 24% | +| Block Full Data: False | **1.16x** | 58% | **1.24x** | 41% | **0.89x** | 22% | +| Block Full Data: True | **1.23x** | 61% | **0.99x** | 33% | **0.91x** | 23% | +| Block Full Of Ether Transfers: a to a | **1.43x** | 71% | **1.74x** | 58% | **1.91x** | 48% | +| Block Full Of Ether Transfers: a to b | **1.39x** | 70% | **1.64x** | 55% | **1.87x** | 47% | +| Block Full Of Ether Transfers: a to diff acc | **1.40x** | 70% | **1.75x** | 58% | **1.92x** | 48% | +| Block Full Of Ether Transfers: diff acc to b | **1.47x** | 73% | **1.77x** | 59% | **2.04x** | 51% | +| Block Full Of Ether Transfers: diff acc to diff acc | **1.46x** | 73% | **1.82x** | 61% | **2.06x** | 52% | + +**Category Statistics:** + +| Configuration | Mean Speedup | Mean Efficiency | +| --- | --- | --- | +| 2 GPUs | 1.35x | 67.3% | +| 3 GPUs | 1.53x | 51.0% | +| 4 GPUs | 1.57x | 39.2% | + +--- + +### Worst Bytecode.Py + +**35 tests** + +| Test Name | 2 GPUs | Eff | 3 GPUs | Eff | 4 GPUs | Eff | +| --- | --- | --- | --- | --- | --- | --- | +| Bytecode Single Opcode: CALLCODE | **1.86x** | 93% | **2.65x** | 88% | **3.22x** | 80% | +| Bytecode Single Opcode: CALL | **1.83x** | 91% | **2.59x** | 86% | **3.18x** | 79% | +| Bytecode Single Opcode: DELEGATECALL | **1.83x** | 91% | **2.59x** | 86% | **3.22x** | 80% | +| Bytecode Single Opcode: EXTCODECOPY | **1.85x** | 93% | **2.55x** | 85% | **3.20x** | 80% | +| Bytecode Single Opcode: EXTCODEHASH | **1.83x** | 92% | **2.57x** | 86% | **3.21x** | 80% | +| Bytecode Single Opcode: EXTCODESIZE | **1.85x** | 92% | **2.60x** | 87% | **3.23x** | 81% | +| Bytecode Single Opcode: STATICCALL | **1.82x** | 91% | **2.59x** | 86% | **3.18x** | 80% | +| Create: 0 BYTEs with value: CREATE2 | **0.97x** | 49% | **1.25x** | 42% | **0.96x** | 24% | +| Create: 0 BYTEs with value: CREATE | **0.98x** | 49% | **1.20x** | 40% | **1.07x** | 27% | +| Create: 0 BYTEs without value: CREATE2 | **1.09x** | 55% | **1.19x** | 40% | **0.97x** | 24% | +| Create: 0 BYTEs without value: CREATE | **1.20x** | 60% | **1.41x** | 47% | **1.08x** | 27% | +| Create: 0.25x max code size with non: zero data: CREATE2 | **0.95x** | 48% | **1.23x** | 41% | **0.85x** | 21% | +| Create: 0.25x max code size with non: zero data: CREATE | **1.15x** | 58% | **1.17x** | 39% | **0.92x** | 23% | +| Create: 0.25x max code size with zero data: CREATE2 | **1.16x** | 58% | **1.14x** | 38% | **0.92x** | 23% | +| Create: 0.25x max code size with zero data: CREATE | **0.94x** | 47% | **1.14x** | 38% | **1.07x** | 27% | +| Create: 0.50x max code size with non: zero data: CREATE2 | **1.20x** | 60% | **1.18x** | 39% | **1.05x** | 26% | +| Create: 0.50x max code size with non: zero data: CREATE | **1.00x** | 50% | **1.17x** | 39% | **0.94x** | 24% | +| Create: 0.50x max code size with zero data: CREATE2 | **0.80x** | 40% | **1.23x** | 41% | **0.96x** | 24% | +| Create: 0.50x max code size with zero data: CREATE | **1.21x** | 61% | **1.14x** | 38% | **0.97x** | 24% | +| Create: 0.75x max code size with non: zero data: CREATE2 | **1.22x** | 61% | **1.03x** | 34% | **1.02x** | 26% | +| Create: 0.75x max code size with non: zero data: CREATE | **1.14x** | 57% | **1.33x** | 44% | **0.90x** | 22% | +| Create: 0.75x max code size with zero data: CREATE2 | **1.14x** | 57% | **1.10x** | 37% | **0.90x** | 22% | +| Create: 0.75x max code size with zero data: CREATE | **1.14x** | 57% | **1.22x** | 41% | **0.99x** | 25% | +| Create: max code size with non: zero data: CREATE2 | **0.86x** | 43% | **1.03x** | 34% | **0.99x** | 25% | +| Create: max code size with non: zero data: CREATE | **1.01x** | 51% | **1.22x** | 41% | **0.97x** | 24% | +| Create: max code size with zero data: CREATE2 | **1.22x** | 61% | **1.24x** | 41% | **0.88x** | 22% | +| Create: max code size with zero data: CREATE | **1.24x** | 62% | **0.97x** | 32% | **0.96x** | 24% | +| Creates Collisions: CREATE2 | **1.14x** | 57% | **1.14x** | 38% | **0.91x** | 23% | +| Creates Collisions: CREATE | **1.17x** | 59% | **1.18x** | 39% | **0.91x** | 23% | +| Initcode Jumpdest Analysis: 00 | **1.22x** | 61% | **1.49x** | 50% | **1.57x** | 39% | +| Initcode Jumpdest Analysis: 5b | **1.48x** | 74% | **1.57x** | 52% | **1.75x** | 44% | +| Initcode Jumpdest Analysis: 605b5b | **1.21x** | 61% | **1.43x** | 48% | **1.51x** | 38% | +| Initcode Jumpdest Analysis: 605b | **1.11x** | 55% | **1.48x** | 49% | **1.36x** | 34% | +| Initcode Jumpdest Analysis: 615b5b5b | **1.19x** | 60% | **1.35x** | 45% | **1.42x** | 36% | +| Initcode Jumpdest Analysis: 615b5b | **1.13x** | 57% | **1.31x** | 44% | **1.36x** | 34% | + +**Category Statistics:** + +| Configuration | Mean Speedup | Mean Efficiency | +| --- | --- | --- | +| 2 GPUs | 1.26x | 63.1% | +| 3 GPUs | 1.50x | 50.1% | +| 4 GPUs | 1.50x | 37.6% | + +--- + +### Worst Compute.Py + +**311 tests** + +| Test Name | 2 GPUs | Eff | 3 GPUs | Eff | 4 GPUs | Eff | +| --- | --- | --- | --- | --- | --- | --- | +| Amortized Bn128 Pairings: benchmark: gas: value 1M: blockchain test from state test | **1.83x** | 91% | **2.60x** | 87% | **3.21x** | 80% | +| Empty Block: benchmark: gas: value 1M: blockchain test | **0.98x** | 49% | **1.23x** | 41% | **0.80x** | 20% | +| Binop Simple: ADD: | **1.34x** | 67% | **1.59x** | 53% | **1.80x** | 45% | +| Binop Simple: AND: | **1.34x** | 67% | **1.57x** | 52% | **1.67x** | 42% | +| Binop Simple: BYTE: | **1.34x** | 67% | **1.58x** | 53% | **1.65x** | 41% | +| Binop Simple: DIV: 0 | **1.84x** | 92% | **2.63x** | 88% | **3.20x** | 80% | +| Binop Simple: DIV: 1 | **1.81x** | 91% | **2.51x** | 84% | **3.17x** | 79% | +| Binop Simple: EQ: | **1.63x** | 82% | **2.12x** | 71% | **2.46x** | 62% | +| Binop Simple: EXP: | N/A | N/A | **2.36x** | 79% | **2.75x** | 69% | +| Binop Simple: GT: | **1.35x** | 67% | **1.60x** | 53% | **1.71x** | 43% | +| Binop Simple: LT: | **1.36x** | 68% | **1.52x** | 51% | **1.67x** | 42% | +| Binop Simple: MOD: | **1.49x** | 74% | **1.89x** | 63% | **2.16x** | 54% | +| Binop Simple: MUL: | **1.54x** | 77% | **1.91x** | 64% | **2.24x** | 56% | +| Binop Simple: OR: | **1.31x** | 66% | **1.47x** | 49% | **1.68x** | 42% | +| Binop Simple: SAR: | **1.58x** | 79% | **2.00x** | 67% | **2.30x** | 58% | +| Binop Simple: SDIV: 0 | **1.86x** | 93% | **2.60x** | 87% | **3.31x** | 83% | +| Binop Simple: SDIV: 1 | **1.91x** | 96% | **2.71x** | 90% | **3.40x** | 85% | +| Binop Simple: SGT: | **1.56x** | 78% | **2.03x** | 68% | **2.35x** | 59% | +| Binop Simple: SHL: | **1.52x** | 76% | **1.93x** | 64% | **2.26x** | 57% | +| Binop Simple: SHR: | **1.72x** | 86% | **2.06x** | 69% | **2.24x** | 56% | +| Binop Simple: SIGNEXTEND: | **1.69x** | 84% | **1.92x** | 64% | **2.13x** | 53% | +| Binop Simple: SLT: | **1.44x** | 72% | **1.65x** | 55% | **1.84x** | 46% | +| Binop Simple: SMOD: | **1.62x** | 81% | **2.08x** | 69% | **2.42x** | 61% | +| Binop Simple: SUB: | **1.40x** | 70% | **1.67x** | 56% | **1.81x** | 45% | +| Binop Simple: XOR: | **1.26x** | 63% | **1.56x** | 52% | **1.60x** | 40% | +| Blobhash: no blobs | **1.34x** | 67% | **1.61x** | 54% | **1.71x** | 43% | +| Blobhash: one blob AND accessed | **1.49x** | 75% | **1.81x** | 60% | **2.06x** | 51% | +| Blobhash: one blob but access non: existent index | **1.36x** | 68% | **1.59x** | 53% | **1.79x** | 45% | +| Blobhash: six blobs, access latest | **1.48x** | 74% | **1.85x** | 62% | **2.11x** | 53% | +| Calldataload: empty | **1.55x** | 77% | **1.98x** | 66% | **2.25x** | 56% | +| Calldataload: one: loop | **1.63x** | 81% | **2.19x** | 73% | **2.44x** | 61% | +| Calldataload: zero: loop | **1.60x** | 80% | **2.11x** | 70% | **2.43x** | 61% | +| Calldatasize: CALLdata lenGTh 0 | **1.36x** | 68% | **1.52x** | 51% | **1.72x** | 43% | +| Calldatasize: CALLdata lenGTh 10000 | **1.26x** | 63% | **1.61x** | 54% | **1.64x** | 41% | +| Calldatasize: CALLdata lenGTh 1000 | **1.33x** | 66% | **1.67x** | 56% | **1.71x** | 43% | +| Callvalue: from ORigin False: non zero value False | **1.26x** | 63% | **1.44x** | 48% | **1.57x** | 39% | +| Callvalue: from ORigin False: non zero value True | **1.28x** | 64% | **1.44x** | 48% | **1.59x** | 40% | +| Callvalue: from ORigin True: non zero value False | **1.33x** | 67% | **1.59x** | 53% | **1.62x** | 40% | +| Callvalue: from ORigin True: non zero value True | **1.28x** | 64% | **1.46x** | 49% | **1.62x** | 40% | +| Dup: DUP10 | **1.26x** | 63% | **1.46x** | 49% | **1.56x** | 39% | +| Dup: DUP11 | **1.32x** | 66% | **1.56x** | 52% | **1.60x** | 40% | +| Dup: DUP12 | **1.33x** | 66% | **1.49x** | 50% | **1.71x** | 43% | +| Dup: DUP13 | **1.31x** | 66% | **1.57x** | 52% | **1.62x** | 41% | +| Dup: DUP14 | **1.30x** | 65% | **1.53x** | 51% | **1.58x** | 40% | +| Dup: DUP15 | **1.31x** | 65% | **1.61x** | 54% | **1.57x** | 39% | +| Dup: DUP16 | **1.31x** | 65% | **1.49x** | 50% | **1.64x** | 41% | +| Dup: DUP1 | **1.29x** | 65% | **1.49x** | 50% | **1.66x** | 41% | +| Dup: DUP2 | **1.33x** | 66% | **1.56x** | 52% | **1.64x** | 41% | +| Dup: DUP3 | **1.34x** | 67% | **1.49x** | 50% | **1.62x** | 40% | +| Dup: DUP4 | **1.31x** | 66% | **1.55x** | 52% | **1.65x** | 41% | +| Dup: DUP5 | **1.29x** | 64% | **1.51x** | 50% | **1.59x** | 40% | +| Dup: DUP6 | **1.28x** | 64% | **1.61x** | 54% | **1.59x** | 40% | +| Dup: DUP7 | **1.30x** | 65% | **1.54x** | 51% | **1.62x** | 40% | +| Dup: DUP8 | **1.29x** | 64% | **1.41x** | 47% | **1.45x** | 36% | +| Dup: DUP9 | **1.30x** | 65% | **1.53x** | 51% | **1.65x** | 41% | +| Jumpdests: benchmark: gas: value 1M: blockchain test from state test | **1.32x** | 66% | **1.49x** | 50% | **1.70x** | 43% | +| Jumpi Fallthrough: benchmark: gas: value 1M: blockchain test from state test | **1.40x** | 70% | **1.67x** | 56% | **1.91x** | 48% | +| Jumpis: benchmark: gas: value 1M: blockchain test from state test | **1.37x** | 68% | **1.52x** | 51% | **1.47x** | 37% | +| Jumps: benchmark: gas: value 1M: blockchain test from state test | **1.13x** | 57% | **1.42x** | 47% | **1.32x** | 33% | +| Keccak: benchmark: gas: value 1M: blockchain test from state test | **1.70x** | 85% | **2.29x** | 76% | **2.74x** | 68% | +| Memory Access: big memORy EXPansion False: offset initialized False: offset 0: MLOAD | **1.45x** | 73% | **1.73x** | 58% | **1.94x** | 48% | +| Memory Access: big memORy EXPansion False: offset initialized False: offset 0: MSTORE8 | **1.40x** | 70% | **1.64x** | 55% | **1.92x** | 48% | +| Memory Access: big memORy EXPansion False: offset initialized False: offset 0: MSTORE | **1.51x** | 76% | **1.91x** | 64% | **2.21x** | 55% | +| Memory Access: big memORy EXPansion False: offset initialized False: offset 1: MLOAD | **1.45x** | 73% | **1.88x** | 63% | **2.01x** | 50% | +| Memory Access: big memORy EXPansion False: offset initialized False: offset 1: MSTORE8 | **1.41x** | 71% | **1.68x** | 56% | **1.85x** | 46% | +| Memory Access: big memORy EXPansion False: offset initialized False: offset 1: MSTORE | **1.59x** | 80% | **1.95x** | 65% | **2.21x** | 55% | +| Memory Access: big memORy EXPansion False: offset initialized False: offset 31: MLOAD | **1.42x** | 71% | **1.76x** | 59% | **1.97x** | 49% | +| Memory Access: big memORy EXPansion False: offset initialized False: offset 31: MSTORE8 | **1.37x** | 68% | **1.76x** | 59% | **1.74x** | 44% | +| Memory Access: big memORy EXPansion False: offset initialized False: offset 31: MSTORE | **1.51x** | 75% | **1.90x** | 63% | **2.12x** | 53% | +| Memory Access: big memORy EXPansion False: offset initialized True: offset 0: MLOAD | **1.48x** | 74% | **1.78x** | 59% | **2.01x** | 50% | +| Memory Access: big memORy EXPansion False: offset initialized True: offset 0: MSTORE8 | **1.38x** | 69% | **1.80x** | 60% | **1.81x** | 45% | +| Memory Access: big memORy EXPansion False: offset initialized True: offset 0: MSTORE | **1.57x** | 78% | **1.98x** | 66% | **2.18x** | 54% | +| Memory Access: big memORy EXPansion False: offset initialized True: offset 1: MLOAD | **1.43x** | 72% | **1.73x** | 58% | **2.02x** | 50% | +| Memory Access: big memORy EXPansion False: offset initialized True: offset 1: MSTORE8 | **1.36x** | 68% | **1.62x** | 54% | **1.75x** | 44% | +| Memory Access: big memORy EXPansion False: offset initialized True: offset 1: MSTORE | **1.57x** | 78% | **2.08x** | 69% | **2.26x** | 56% | +| Memory Access: big memORy EXPansion False: offset initialized True: offset 31: MLOAD | **1.51x** | 76% | **1.77x** | 59% | **2.07x** | 52% | +| Memory Access: big memORy EXPansion False: offset initialized True: offset 31: MSTORE8 | **1.36x** | 68% | **1.60x** | 53% | **1.72x** | 43% | +| Memory Access: big memORy EXPansion False: offset initialized True: offset 31: MSTORE | **1.51x** | 75% | **1.86x** | 62% | **2.16x** | 54% | +| Memory Access: big memORy EXPansion True: offset initialized False: offset 0: MLOAD | **1.50x** | 75% | **1.75x** | 58% | **1.98x** | 50% | +| Memory Access: big memORy EXPansion True: offset initialized False: offset 0: MSTORE8 | **1.43x** | 71% | **1.82x** | 61% | **1.81x** | 45% | +| Memory Access: big memORy EXPansion True: offset initialized False: offset 0: MSTORE | **1.50x** | 75% | **1.80x** | 60% | **2.04x** | 51% | +| Memory Access: big memORy EXPansion True: offset initialized False: offset 1: MLOAD | **1.46x** | 73% | **1.78x** | 59% | **1.98x** | 49% | +| Memory Access: big memORy EXPansion True: offset initialized False: offset 1: MSTORE8 | **1.36x** | 68% | **1.63x** | 54% | **1.88x** | 47% | +| Memory Access: big memORy EXPansion True: offset initialized False: offset 1: MSTORE | **1.61x** | 81% | **1.90x** | 63% | **2.16x** | 54% | +| Memory Access: big memORy EXPansion True: offset initialized False: offset 31: MLOAD | **1.44x** | 72% | **1.82x** | 61% | **2.04x** | 51% | +| Memory Access: big memORy EXPansion True: offset initialized False: offset 31: MSTORE8 | **1.37x** | 68% | **1.63x** | 54% | **1.75x** | 44% | +| Memory Access: big memORy EXPansion True: offset initialized False: offset 31: MSTORE | **1.50x** | 75% | **1.97x** | 66% | **2.16x** | 54% | +| Memory Access: big memORy EXPansion True: offset initialized True: offset 0: MLOAD | **1.41x** | 71% | **1.74x** | 58% | **1.89x** | 47% | +| Memory Access: big memORy EXPansion True: offset initialized True: offset 0: MSTORE8 | **1.37x** | 68% | **1.63x** | 54% | **1.87x** | 47% | +| Memory Access: big memORy EXPansion True: offset initialized True: offset 0: MSTORE | **1.50x** | 75% | **1.81x** | 60% | **2.15x** | 54% | +| Memory Access: big memORy EXPansion True: offset initialized True: offset 1: MLOAD | **1.42x** | 71% | **1.85x** | 62% | **1.93x** | 48% | +| Memory Access: big memORy EXPansion True: offset initialized True: offset 1: MSTORE8 | **1.34x** | 67% | **1.60x** | 53% | **1.78x** | 45% | +| Memory Access: big memORy EXPansion True: offset initialized True: offset 1: MSTORE | **1.51x** | 76% | **1.99x** | 66% | **2.17x** | 54% | +| Memory Access: big memORy EXPansion True: offset initialized True: offset 31: MLOAD | **1.43x** | 71% | **1.84x** | 61% | **2.01x** | 50% | +| Memory Access: big memORy EXPansion True: offset initialized True: offset 31: MSTORE8 | **1.34x** | 67% | **1.66x** | 55% | **1.75x** | 44% | +| Memory Access: big memORy EXPansion True: offset initialized True: offset 31: MSTORE | **1.50x** | 75% | **1.92x** | 64% | **2.25x** | 56% | +| Mod: op MOD: MOD bits 127 | **1.80x** | 90% | **2.52x** | 84% | **3.11x** | 78% | +| Mod: op MOD: MOD bits 191 | **1.83x** | 92% | **2.61x** | 87% | **3.32x** | 83% | +| Mod: op MOD: MOD bits 255 | **1.89x** | 95% | **2.55x** | 85% | **3.18x** | 79% | +| Mod: op MOD: MOD bits 63 | **1.73x** | 86% | **2.33x** | 78% | **2.82x** | 71% | +| Mod: op SMOD: MOD bits 127 | **1.86x** | 93% | **2.60x** | 87% | **3.19x** | 80% | +| Mod: op SMOD: MOD bits 191 | **1.87x** | 94% | **2.67x** | 89% | **3.31x** | 83% | +| Mod: op SMOD: MOD bits 255 | **1.83x** | 91% | **2.57x** | 86% | **3.15x** | 79% | +| Mod: op SMOD: MOD bits 63 | **1.78x** | 89% | **2.48x** | 83% | **2.89x** | 72% | +| Modarith: op ADDMOD: MOD bits 127 | **1.82x** | 91% | **2.60x** | 87% | **3.21x** | 80% | +| Modarith: op ADDMOD: MOD bits 191 | **1.84x** | 92% | **2.63x** | 88% | N/A | N/A | +| Modarith: op ADDMOD: MOD bits 255 | **1.85x** | 93% | **2.70x** | 90% | **3.24x** | 81% | +| Modarith: op ADDMOD: MOD bits 63 | N/A | N/A | **2.44x** | 81% | **2.96x** | 74% | +| Modarith: op MULMOD: MOD bits 127 | **1.88x** | 94% | **2.66x** | 89% | **3.34x** | 84% | +| Modarith: op MULMOD: MOD bits 191 | **1.90x** | 95% | **2.77x** | 92% | **3.52x** | 88% | +| Modarith: op MULMOD: MOD bits 255 | **1.96x** | 98% | **2.77x** | 92% | **3.52x** | 88% | +| Modarith: op MULMOD: MOD bits 63 | **1.83x** | 92% | **2.54x** | 85% | **3.17x** | 79% | +| Modexp: MOD 1045 gas base heavy | **1.96x** | 98% | **2.87x** | 96% | **3.75x** | 94% | +| Modexp: MOD 1360 gas BALANCEd | **1.98x** | 99% | **2.88x** | 96% | **3.72x** | 93% | +| Modexp: MOD 400 gas EXP heavy | **1.92x** | 96% | **2.84x** | 95% | **3.70x** | 93% | +| Modexp: MOD 408 gas BALANCEd | **1.97x** | 98% | **2.90x** | 97% | **3.71x** | 93% | +| Modexp: MOD 408 gas base heavy | N/A | N/A | N/A | N/A | N/A | N/A | +| Modexp: MOD 600 as BALANCEd | **1.89x** | 95% | **2.86x** | 95% | **3.66x** | 92% | +| Modexp: MOD 600 gas EXP heavy | **1.97x** | 99% | **2.93x** | 98% | **3.83x** | 96% | +| Modexp: MOD 616 gas base heavy | **1.97x** | 99% | **2.89x** | 96% | **3.89x** | 97% | +| Modexp: MOD 677 gas base heavy | **1.95x** | 97% | **2.85x** | 95% | **3.69x** | 92% | +| Modexp: MOD 765 gas EXP heavy | **2.02x** | 101% | **3.00x** | 100% | **3.89x** | 97% | +| Modexp: MOD 767 gas BALANCEd | **1.92x** | 96% | **2.81x** | 94% | **3.60x** | 90% | +| Modexp: MOD 800 gas base heavy | **1.93x** | 97% | **2.91x** | 97% | **3.84x** | 96% | +| Modexp: MOD 800 gas EXP heavy | **1.93x** | 97% | **2.84x** | 95% | **3.75x** | 94% | +| Modexp: MOD 852 gas EXP heavy | **1.90x** | 95% | **2.89x** | 96% | **3.77x** | 94% | +| Modexp: MOD 867 gas base heavy | **1.92x** | 96% | N/A | N/A | **3.81x** | 95% | +| Modexp: MOD 996 gas BALANCEd | N/A | N/A | N/A | N/A | N/A | N/A | +| Modexp: MOD even 1024b EXP 1024 | **1.22x** | 61% | **1.18x** | 39% | **0.90x** | 23% | +| Modexp: MOD even 128b EXP 1024 | **1.91x** | 95% | **2.80x** | 93% | **3.61x** | 90% | +| Modexp: MOD even 16b EXP 320 | **2.01x** | 100% | **2.95x** | 98% | **3.85x** | 96% | +| Modexp: MOD even 24b EXP 168 | **1.99x** | 100% | **2.94x** | 98% | **3.82x** | 96% | +| Modexp: MOD even 256b EXP 1024 | **1.92x** | 96% | **2.79x** | 93% | **3.53x** | 88% | +| Modexp: MOD even 32b EXP 256 | **1.97x** | 98% | **2.97x** | 99% | **3.77x** | 94% | +| Modexp: MOD even 32b EXP 40 | **1.92x** | 96% | **2.83x** | 94% | **3.61x** | 90% | +| Modexp: MOD even 32b EXP 96 | **1.98x** | 99% | **2.95x** | 98% | **3.86x** | 96% | +| Modexp: MOD even 512b EXP 1024 | **0.97x** | 49% | **1.07x** | 36% | **0.83x** | 21% | +| Modexp: MOD even 64b EXP 512 | **1.99x** | 99% | **2.84x** | 95% | **3.70x** | 93% | +| Modexp: MOD even 8b EXP 896 | **2.06x** | 103% | **3.03x** | 101% | **4.03x** | 101% | +| Modexp: MOD EXP 208 gas BALANCEd | **1.92x** | 96% | **2.84x** | 95% | **3.62x** | 90% | +| Modexp: MOD EXP 215 gas EXP heavy | **2.03x** | 102% | **3.00x** | 100% | **3.91x** | 98% | +| Modexp: MOD EXP 298 gas EXP heavy | **2.00x** | 100% | **2.94x** | 98% | **3.87x** | 97% | +| Modexp: MOD min as BALANCEd | **1.93x** | 96% | **2.84x** | 95% | **3.71x** | 93% | +| Modexp: MOD min as base heavy | **2.00x** | 100% | **3.02x** | 101% | N/A | N/A | +| Modexp: MOD min as EXP heavy | **1.94x** | 97% | **2.82x** | 94% | **3.78x** | 95% | +| Modexp: MOD odd 1024b EXP 1024 | **1.12x** | 56% | **1.00x** | 33% | **0.93x** | 23% | +| Modexp: MOD odd 128b EXP 1024 | **2.01x** | 101% | **2.95x** | 98% | N/A | N/A | +| Modexp: MOD odd 256b EXP 1024 | **1.88x** | 94% | **2.77x** | 92% | **3.49x** | 87% | +| Modexp: MOD odd 32b EXP 256 | **1.97x** | 98% | **2.90x** | 97% | **3.80x** | 95% | +| Modexp: MOD odd 32b EXP 96 | **2.00x** | 100% | **2.89x** | 96% | N/A | N/A | +| Modexp: MOD odd 32b EXP cover windows | **1.94x** | 97% | **2.87x** | 96% | **3.68x** | 92% | +| Modexp: MOD odd 512b EXP 1024 | **1.20x** | 60% | **1.22x** | 41% | **0.85x** | 21% | +| Modexp: MOD odd 64b EXP 512 | **1.96x** | 98% | **2.87x** | 96% | **3.72x** | 93% | +| Modexp: MOD pawel 2 | **1.99x** | 99% | **2.90x** | 97% | **3.74x** | 94% | +| Modexp: MOD pawel 3 | **1.92x** | 96% | **2.90x** | 97% | **3.69x** | 92% | +| Modexp: MOD pawel 4 | **1.97x** | 98% | **2.86x** | 95% | **3.77x** | 94% | +| Modexp: MOD vul common 1152n1 | **1.95x** | 97% | **2.82x** | 94% | **3.66x** | 92% | +| Modexp: MOD vul common 1349n1 | **1.95x** | 97% | **2.90x** | 97% | **3.74x** | 94% | +| Modexp: MOD vul common 1360n1 | **1.98x** | 99% | **2.92x** | 97% | **3.80x** | 95% | +| Modexp: MOD vul common 1360n2 | **1.93x** | 97% | **2.77x** | 92% | **3.66x** | 91% | +| Modexp: MOD vul common 200n1 | **1.95x** | 97% | **2.72x** | 91% | **3.51x** | 88% | +| Modexp: MOD vul common 200n2 | **1.91x** | 95% | **2.77x** | 92% | **3.57x** | 89% | +| Modexp: MOD vul common 200n3 | **1.95x** | 98% | **2.81x** | 94% | **3.60x** | 90% | +| Modexp: MOD vul example 1 | N/A | N/A | N/A | N/A | N/A | N/A | +| Modexp: MOD vul example 2 | **1.97x** | 98% | **2.89x** | 96% | **3.80x** | 95% | +| Modexp: MOD vul guido 1 even | **1.85x** | 93% | **2.69x** | 90% | **3.44x** | 86% | +| Modexp: MOD vul guido 2 even | **1.86x** | 93% | **2.79x** | 93% | **3.63x** | 91% | +| Modexp: MOD vul guido 3 even | **1.97x** | 99% | **2.82x** | 94% | **3.72x** | 93% | +| Modexp: MOD vul marius 1 even | **2.01x** | 101% | **2.90x** | 97% | **3.81x** | 95% | +| Modexp: MOD vul nagydani 1 pow 0x10001 | **2.00x** | 100% | **2.85x** | 95% | **3.74x** | 93% | +| Modexp: MOD vul nagydani 1 qube | **1.89x** | 95% | **2.74x** | 91% | **3.51x** | 88% | +| Modexp: MOD vul nagydani 1 square | **1.97x** | 98% | **2.81x** | 94% | **3.61x** | 90% | +| Modexp: MOD vul nagydani 2 pow 0x10001 | **1.94x** | 97% | **2.80x** | 93% | **3.65x** | 91% | +| Modexp: MOD vul nagydani 2 qube | **1.96x** | 98% | **2.85x** | 95% | **3.77x** | 94% | +| Modexp: MOD vul nagydani 2 square | **2.01x** | 100% | **2.88x** | 96% | **3.81x** | 95% | +| Modexp: MOD vul nagydani 3 pow 0x10001 | **1.98x** | 99% | **2.84x** | 95% | **3.65x** | 91% | +| Modexp: MOD vul nagydani 3 qube | N/A | N/A | N/A | N/A | **3.92x** | 98% | +| Modexp: MOD vul nagydani 3 square | **1.90x** | 95% | N/A | N/A | N/A | N/A | +| Modexp: MOD vul nagydani 4 pow 0x10001 | **1.91x** | 96% | **2.85x** | 95% | **3.62x** | 91% | +| Modexp: MOD vul nagydani 4 qube | N/A | N/A | N/A | N/A | N/A | N/A | +| Modexp: MOD vul nagydani 4 square | **2.07x** | 104% | **2.98x** | 99% | **4.01x** | 100% | +| Modexp: MOD vul nagydani 5 pow 0x10001 | **1.86x** | 93% | **2.73x** | 91% | **3.53x** | 88% | +| Modexp: MOD vul nagydani 5 qube | N/A | N/A | N/A | N/A | N/A | N/A | +| Modexp: MOD vul nagydani 5 square | **1.97x** | 98% | N/A | N/A | **3.90x** | 97% | +| Modexp: MOD vul pawel 1 EXP heavy | **1.96x** | 98% | **2.89x** | 96% | **3.85x** | 96% | +| Modexp: MOD vul pawel 2 EXP heavy | **1.89x** | 95% | N/A | N/A | **3.69x** | 92% | +| Modexp: MOD vul pawel 3 EXP heavy | **1.96x** | 98% | **2.92x** | 97% | **3.80x** | 95% | +| Modexp: MOD vul pawel 4 EXP heavy | **1.90x** | 95% | **2.79x** | 93% | **3.65x** | 91% | +| Msize: mem size 0 | **1.43x** | 72% | **1.70x** | 57% | **1.93x** | 48% | +| Msize: mem size 1000000 | **1.40x** | 70% | **1.73x** | 58% | **1.86x** | 46% | +| Msize: mem size 100000 | **1.45x** | 73% | **1.68x** | 56% | **1.87x** | 47% | +| Msize: mem size 1000 | **1.43x** | 71% | **1.81x** | 60% | **1.95x** | 49% | +| Msize: mem size 1 | **1.37x** | 69% | **1.76x** | 59% | **1.91x** | 48% | +| Precompile Fixed Cost: blake2f | **1.93x** | 96% | **2.82x** | 94% | **3.70x** | 93% | +| Precompile Fixed Cost: bls12 fp to g1 | **1.56x** | 78% | **2.08x** | 69% | **2.31x** | 58% | +| Precompile Fixed Cost: bls12 fp to g2 | **1.55x** | 77% | **1.91x** | 64% | **2.21x** | 55% | +| Precompile Fixed Cost: bls12 g1ADD | **1.53x** | 77% | **1.96x** | 65% | **2.17x** | 54% | +| Precompile Fixed Cost: bls12 g1msm | **1.60x** | 80% | **2.10x** | 70% | **2.48x** | 62% | +| Precompile Fixed Cost: bls12 g2ADD | **1.55x** | 78% | **1.98x** | 66% | **2.33x** | 58% | +| Precompile Fixed Cost: bls12 g2msm | **1.49x** | 75% | **1.88x** | 63% | **2.20x** | 55% | +| Precompile Fixed Cost: bls12 pairing check | **1.69x** | 85% | **2.29x** | 76% | **2.68x** | 67% | +| Precompile Fixed Cost: bn128 ADD | **1.60x** | 80% | **2.11x** | 70% | **2.40x** | 60% | +| Precompile Fixed Cost: bn128 ADD 1 2 | **1.66x** | 83% | **2.20x** | 73% | **2.56x** | 64% | +| Precompile Fixed Cost: bn128 ADD infinities | **1.47x** | 74% | **1.91x** | 64% | **2.04x** | 51% | +| Precompile Fixed Cost: bn128 MUL | **1.81x** | 91% | **2.57x** | 86% | **3.20x** | 80% | +| Precompile Fixed Cost: bn128 MUL 1 2 2 scalar | **1.16x** | 58% | **1.46x** | 49% | **0.93x** | 23% | +| Precompile Fixed Cost: bn128 MUL 1 2 32 BYTE scalar | N/A | N/A | **2.59x** | 86% | **3.16x** | 79% | +| Precompile Fixed Cost: bn128 MUL 32 BYTE coORd AND 2 scalar | **1.28x** | 64% | **1.34x** | 45% | **1.20x** | 30% | +| Precompile Fixed Cost: bn128 MUL 32 BYTE coORd AND scalar | **1.84x** | 92% | **2.56x** | 85% | **3.16x** | 79% | +| Precompile Fixed Cost: bn128 MUL infinities 2 scalar | **1.26x** | 63% | **1.26x** | 42% | **0.85x** | 21% | +| Precompile Fixed Cost: bn128 MUL infinities 32 BYTE scalar | **1.80x** | 90% | **2.43x** | 81% | **3.02x** | 75% | +| Precompile Fixed Cost: bn128 one pairing | **1.82x** | 91% | **2.56x** | 85% | **3.20x** | 80% | +| Precompile Fixed Cost: bn128 two pairings | **1.83x** | 92% | **2.56x** | 85% | **3.21x** | 80% | +| Precompile Fixed Cost: bn128 two pairings empty | **1.19x** | 59% | **1.19x** | 40% | **1.04x** | 26% | +| Precompile Fixed Cost: ecrecover | **1.78x** | 89% | **2.52x** | 84% | **3.03x** | 76% | +| Precompile Fixed Cost: point evaluation | **1.84x** | 92% | **2.57x** | 86% | **3.17x** | 79% | +| Precompile Only Data Input: IDENTITY | **1.27x** | 63% | **1.49x** | 50% | **1.58x** | 40% | +| Precompile Only Data Input: RIPEMD: 160 | **1.15x** | 58% | **1.39x** | 46% | **1.35x** | 34% | +| Precompile Only Data Input: SHA2: 256 | **1.27x** | 63% | **1.19x** | 40% | **1.02x** | 26% | +| Push: PUSH0 | **1.34x** | 67% | **1.63x** | 54% | **1.79x** | 45% | +| Push: PUSH10 | **1.40x** | 70% | **1.74x** | 58% | **1.79x** | 45% | +| Push: PUSH11 | **1.40x** | 70% | **1.67x** | 56% | **1.82x** | 45% | +| Push: PUSH12 | **1.42x** | 71% | **1.78x** | 59% | **1.99x** | 50% | +| Push: PUSH13 | **1.37x** | 69% | **1.75x** | 58% | **1.84x** | 46% | +| Push: PUSH14 | **1.42x** | 71% | **1.74x** | 58% | **1.93x** | 48% | +| Push: PUSH15 | **1.46x** | 73% | **1.79x** | 60% | **1.96x** | 49% | +| Push: PUSH16 | **1.50x** | 75% | **1.87x** | 62% | **2.06x** | 52% | +| Push: PUSH17 | **1.44x** | 72% | **1.76x** | 59% | **1.95x** | 49% | +| Push: PUSH18 | **1.45x** | 73% | **1.78x** | 59% | **2.07x** | 52% | +| Push: PUSH19 | **1.49x** | 74% | **1.81x** | 60% | **2.03x** | 51% | +| Push: PUSH1 | **1.22x** | 61% | **1.42x** | 47% | **1.61x** | 40% | +| Push: PUSH20 | **1.46x** | 73% | **1.80x** | 60% | **1.95x** | 49% | +| Push: PUSH21 | **1.48x** | 74% | **1.80x** | 60% | **1.99x** | 50% | +| Push: PUSH22 | **1.51x** | 76% | **1.82x** | 61% | **2.08x** | 52% | +| Push: PUSH23 | **1.66x** | 83% | **1.90x** | 63% | **2.20x** | 55% | +| Push: PUSH24 | **1.53x** | 76% | **1.86x** | 62% | **2.21x** | 55% | +| Push: PUSH25 | **1.48x** | 74% | **1.92x** | 64% | **2.15x** | 54% | +| Push: PUSH26 | **1.50x** | 75% | **1.93x** | 64% | **2.15x** | 54% | +| Push: PUSH27 | **1.50x** | 75% | **1.89x** | 63% | **2.23x** | 56% | +| Push: PUSH28 | **1.48x** | 74% | **1.87x** | 62% | **2.22x** | 55% | +| Push: PUSH29 | **1.53x** | 77% | **1.96x** | 65% | **2.19x** | 55% | +| Push: PUSH2 | **1.33x** | 66% | **1.53x** | 51% | **1.62x** | 40% | +| Push: PUSH30 | **1.55x** | 78% | **1.95x** | 65% | **2.22x** | 56% | +| Push: PUSH31 | **1.54x** | 77% | **1.96x** | 65% | **2.30x** | 58% | +| Push: PUSH32 | **1.61x** | 80% | **2.01x** | 67% | **2.31x** | 58% | +| Push: PUSH3 | **1.31x** | 65% | **1.66x** | 55% | **1.64x** | 41% | +| Push: PUSH4 | **1.34x** | 67% | **1.45x** | 48% | **1.61x** | 40% | +| Push: PUSH5 | **1.33x** | 66% | **1.56x** | 52% | **1.69x** | 42% | +| Push: PUSH6 | **1.33x** | 66% | **1.58x** | 53% | **1.69x** | 42% | +| Push: PUSH7 | **1.38x** | 69% | **1.65x** | 55% | **1.79x** | 45% | +| Push: PUSH8 | **1.33x** | 67% | **1.57x** | 52% | **1.70x** | 43% | +| Push: PUSH9 | **1.39x** | 70% | **1.66x** | 55% | **1.84x** | 46% | +| Return Revert: 1KiB of non: zero data: RETURN | **1.46x** | 73% | **1.80x** | 60% | **2.02x** | 50% | +| Return Revert: 1KiB of non: zero data: REVERT | **1.48x** | 74% | **1.91x** | 64% | **2.03x** | 51% | +| Return Revert: 1KiB of zero data: RETURN | **1.54x** | 77% | **2.03x** | 68% | **2.21x** | 55% | +| Return Revert: 1KiB of zero data: REVERT | **1.57x** | 79% | **1.91x** | 64% | **2.29x** | 57% | +| Return Revert: 1MiB of non: zero data: RETURN | **1.16x** | 58% | **1.16x** | 39% | **0.98x** | 25% | +| Return Revert: 1MiB of non: zero data: REVERT | **1.17x** | 58% | **1.05x** | 35% | **0.97x** | 24% | +| Return Revert: 1MiB of zero data: RETURN | **0.93x** | 47% | **0.93x** | 31% | **0.96x** | 24% | +| Return Revert: 1MiB of zero data: REVERT | **1.17x** | 58% | **1.38x** | 46% | **0.86x** | 22% | +| Return Revert: empty: RETURN | **1.65x** | 82% | **2.18x** | 73% | **2.50x** | 63% | +| Return Revert: empty: REVERT | **1.65x** | 82% | **2.17x** | 72% | **2.57x** | 64% | +| Returndatasize Nonzero: RETURNed size 0: RETURN data style ReturnDataStyle.IDENTITY | **1.31x** | 66% | **1.49x** | 50% | **1.54x** | 38% | +| Returndatasize Nonzero: RETURNed size 0: RETURN data style ReturnDataStyle.RETURN | **1.29x** | 64% | **1.45x** | 48% | **1.63x** | 41% | +| Returndatasize Nonzero: RETURNed size 0: RETURN data style ReturnDataStyle.REVERT | **1.29x** | 65% | **1.66x** | 55% | **1.60x** | 40% | +| Returndatasize Nonzero: RETURNed size 1: RETURN data style ReturnDataStyle.IDENTITY | **1.27x** | 63% | **1.46x** | 49% | **1.64x** | 41% | +| Returndatasize Nonzero: RETURNed size 1: RETURN data style ReturnDataStyle.RETURN | **1.36x** | 68% | **1.48x** | 49% | **1.63x** | 41% | +| Returndatasize Nonzero: RETURNed size 1: RETURN data style ReturnDataStyle.REVERT | **1.25x** | 63% | **1.47x** | 49% | **1.72x** | 43% | +| Returndatasize Zero: benchmark: gas: value 1M: blockchain test from state test | **1.28x** | 64% | **1.48x** | 49% | **1.55x** | 39% | +| Shifts: shift right SAR | **1.54x** | 77% | **2.08x** | 69% | **2.30x** | 57% | +| Shifts: shift right SHR | **1.54x** | 77% | **1.98x** | 66% | **2.25x** | 56% | +| Swap: SWAP10 | **1.60x** | 80% | **2.03x** | 68% | **2.33x** | 58% | +| Swap: SWAP11 | **1.58x** | 79% | **2.15x** | 72% | **2.32x** | 58% | +| Swap: SWAP12 | **1.53x** | 76% | **1.93x** | 64% | **2.29x** | 57% | +| Swap: SWAP13 | **1.54x** | 77% | **1.97x** | 66% | **2.34x** | 58% | +| Swap: SWAP14 | **1.52x** | 76% | **1.98x** | 66% | **2.36x** | 59% | +| Swap: SWAP15 | **1.55x** | 78% | **1.96x** | 65% | **2.31x** | 58% | +| Swap: SWAP16 | **1.57x** | 78% | **2.00x** | 67% | **2.29x** | 57% | +| Swap: SWAP1 | **1.60x** | 80% | **2.01x** | 67% | **2.38x** | 59% | +| Swap: SWAP2 | **1.56x** | 78% | **1.98x** | 66% | **2.25x** | 56% | +| Swap: SWAP3 | **1.60x** | 80% | **2.00x** | 67% | **2.32x** | 58% | +| Swap: SWAP4 | **1.56x** | 78% | **2.01x** | 67% | **2.26x** | 57% | +| Swap: SWAP5 | **1.56x** | 78% | **2.03x** | 68% | **2.32x** | 58% | +| Swap: SWAP6 | **1.56x** | 78% | **1.98x** | 66% | **2.28x** | 57% | +| Swap: SWAP7 | **1.57x** | 78% | **2.00x** | 67% | **2.38x** | 59% | +| Swap: SWAP8 | **1.57x** | 79% | **2.04x** | 68% | **2.37x** | 59% | +| Swap: SWAP9 | **1.56x** | 78% | **1.97x** | 66% | **2.31x** | 58% | +| Tload: val mut False: key mut False | **1.08x** | 54% | **1.33x** | 44% | **1.00x** | 25% | +| Tload: val mut False: key mut True | **1.00x** | 50% | **1.17x** | 39% | **0.95x** | 24% | +| Tload: val mut True: key mut False | **1.24x** | 62% | **1.15x** | 38% | **0.95x** | 24% | +| Tload: val mut True: key mut True | **1.27x** | 63% | **1.27x** | 42% | **1.16x** | 29% | +| Tstore: dense val mut False: key mut False | **1.24x** | 62% | **1.45x** | 48% | **1.52x** | 38% | +| Tstore: dense val mut False: key mut True | **1.23x** | 62% | **1.51x** | 50% | **1.50x** | 37% | +| Tstore: dense val mut True: key mut False | **1.45x** | 73% | **1.83x** | 61% | **1.96x** | 49% | +| Tstore: dense val mut True: key mut True | **1.43x** | 72% | **1.69x** | 56% | **1.90x** | 48% | +| Unop: ISZERO | **1.57x** | 78% | **1.99x** | 66% | **2.31x** | 58% | +| Unop: NOT | **1.31x** | 65% | **1.47x** | 49% | **1.63x** | 41% | +| Zero Param: ADDRESS | **1.57x** | 79% | **2.06x** | 69% | **2.40x** | 60% | +| Zero Param: BASEFEE | **1.33x** | 67% | **1.70x** | 57% | **1.85x** | 46% | +| Zero Param: BLOBBASEFEE | **1.48x** | 74% | **1.88x** | 63% | **2.04x** | 51% | +| Zero Param: CALLER | **1.50x** | 75% | **1.87x** | 62% | **2.29x** | 57% | +| Zero Param: CHAINID | **1.36x** | 68% | **1.64x** | 55% | **1.77x** | 44% | +| Zero Param: CODESIZE | **1.46x** | 73% | **1.84x** | 61% | **2.07x** | 52% | +| Zero Param: COINBASE | **1.53x** | 76% | **2.01x** | 67% | **2.33x** | 58% | +| Zero Param: GASLIMIT | **1.52x** | 76% | **1.62x** | 54% | **1.80x** | 45% | +| Zero Param: GASPRICE | **1.42x** | 71% | **1.81x** | 60% | **1.90x** | 47% | +| Zero Param: GAS | **1.37x** | 68% | **1.58x** | 53% | **1.64x** | 41% | +| Zero Param: NUMBER | **1.36x** | 68% | **1.65x** | 55% | **1.86x** | 47% | +| Zero Param: ORIGIN | **1.56x** | 78% | **1.91x** | 64% | **2.26x** | 57% | +| Zero Param: PREVRANDAO | **1.70x** | 85% | **2.33x** | 78% | **2.80x** | 70% | +| Zero Param: TIMESTAMP | **1.54x** | 77% | **1.73x** | 58% | **1.80x** | 45% | + +**Category Statistics:** + +| Configuration | Mean Speedup | Mean Efficiency | +| --- | --- | --- | +| 2 GPUs | 1.57x | 78.7% | +| 3 GPUs | 2.05x | 68.3% | +| 4 GPUs | 2.40x | 60.1% | + +--- + +### Worst Memory.Py + +**50 tests** + +| Test Name | 2 GPUs | Eff | 3 GPUs | Eff | 4 GPUs | Eff | +| --- | --- | --- | --- | --- | --- | --- | +| Calldatacopy: non zero data False: fixed src dst False: 0 BYTEs: CALL | **1.48x** | 74% | **1.99x** | 66% | **2.04x** | 51% | +| Calldatacopy: non zero data False: fixed src dst False: 0 BYTEs: transaction | **1.49x** | 75% | N/A | N/A | **2.11x** | 53% | +| Calldatacopy: non zero data False: fixed src dst False: 100 BYTEs: CALL | **1.49x** | 74% | **1.89x** | 63% | **2.00x** | 50% | +| Calldatacopy: non zero data False: fixed src dst False: 100 BYTEs: transaction | **1.45x** | 72% | **1.68x** | 56% | **1.91x** | 48% | +| Calldatacopy: non zero data False: fixed src dst False: 10KiB: CALL | **1.22x** | 61% | **1.48x** | 49% | **1.48x** | 37% | +| Calldatacopy: non zero data False: fixed src dst False: 10KiB: transaction | **1.05x** | 53% | **1.34x** | 45% | **1.07x** | 27% | +| Calldatacopy: non zero data False: fixed src dst False: 1MiB: CALL | **1.18x** | 59% | **1.02x** | 34% | **0.82x** | 21% | +| Calldatacopy: non zero data False: fixed src dst False: 1MiB: transaction | **1.15x** | 58% | **1.37x** | 46% | **0.76x** | 19% | +| Calldatacopy: non zero data False: fixed src dst True: 0 BYTEs: CALL | **1.36x** | 68% | **1.63x** | 54% | **1.73x** | 43% | +| Calldatacopy: non zero data False: fixed src dst True: 0 BYTEs: transaction | **1.35x** | 67% | **1.70x** | 57% | **1.70x** | 42% | +| Calldatacopy: non zero data False: fixed src dst True: 100 BYTEs: CALL | **1.20x** | 60% | **1.44x** | 48% | **1.58x** | 39% | +| Calldatacopy: non zero data False: fixed src dst True: 100 BYTEs: transaction | **1.39x** | 69% | **1.46x** | 49% | **1.52x** | 38% | +| Calldatacopy: non zero data False: fixed src dst True: 10KiB: CALL | **1.11x** | 55% | **1.35x** | 45% | **1.14x** | 28% | +| Calldatacopy: non zero data False: fixed src dst True: 10KiB: transaction | **1.11x** | 56% | **1.34x** | 45% | **0.96x** | 24% | +| Calldatacopy: non zero data False: fixed src dst True: 1MiB: CALL | **1.17x** | 58% | **1.14x** | 38% | **0.90x** | 22% | +| Calldatacopy: non zero data False: fixed src dst True: 1MiB: transaction | **0.96x** | 48% | **1.40x** | 47% | **1.04x** | 26% | +| Calldatacopy: non zero data True: fixed src dst False: 100 BYTEs: CALL | **1.45x** | 72% | **1.76x** | 59% | **1.97x** | 49% | +| Calldatacopy: non zero data True: fixed src dst False: 100 BYTEs: transaction | **1.44x** | 72% | **1.72x** | 57% | **1.92x** | 48% | +| Calldatacopy: non zero data True: fixed src dst False: 10KiB: CALL | **1.21x** | 60% | **1.44x** | 48% | **1.52x** | 38% | +| Calldatacopy: non zero data True: fixed src dst False: 10KiB: transaction | **1.15x** | 58% | **1.49x** | 50% | **1.39x** | 35% | +| Calldatacopy: non zero data True: fixed src dst True: 100 BYTEs: CALL | **1.29x** | 65% | **1.47x** | 49% | **1.63x** | 41% | +| Calldatacopy: non zero data True: fixed src dst True: 100 BYTEs: transaction | **1.29x** | 65% | **1.47x** | 49% | **1.68x** | 42% | +| Calldatacopy: non zero data True: fixed src dst True: 10KiB: CALL | **1.09x** | 55% | **1.24x** | 41% | **1.08x** | 27% | +| Calldatacopy: non zero data True: fixed src dst True: 10KiB: transaction | **1.19x** | 60% | **1.30x** | 43% | **1.10x** | 28% | +| Codecopy: fixed src dst False: 0 BYTEs | **1.46x** | 73% | **1.91x** | 64% | **2.10x** | 53% | +| Codecopy: fixed src dst False: 0.25x max code size | **1.41x** | 71% | **1.49x** | 50% | **1.57x** | 39% | +| Codecopy: fixed src dst False: 0.50x max code size | **1.22x** | 61% | **1.68x** | 56% | **1.41x** | 35% | +| Codecopy: fixed src dst False: 0.75x max code size | **1.18x** | 59% | **1.36x** | 45% | **1.48x** | 37% | +| Codecopy: fixed src dst False: max code size | **1.24x** | 62% | **1.34x** | 45% | **1.50x** | 37% | +| Codecopy: fixed src dst True: 0 BYTEs | **1.30x** | 65% | **1.51x** | 50% | **1.65x** | 41% | +| Codecopy: fixed src dst True: 0.25x max code size | **1.09x** | 54% | **1.32x** | 44% | **1.17x** | 29% | +| Codecopy: fixed src dst True: 0.50x max code size | **1.10x** | 55% | **1.36x** | 45% | **1.20x** | 30% | +| Codecopy: fixed src dst True: 0.75x max code size | **1.08x** | 54% | **1.32x** | 44% | **1.12x** | 28% | +| Codecopy: fixed src dst True: max code size | **1.04x** | 52% | **1.38x** | 46% | **1.10x** | 27% | +| Mcopy: fixed src dst False: 0 BYTEs | **1.44x** | 72% | **1.82x** | 61% | **2.05x** | 51% | +| Mcopy: fixed src dst False: 100 BYTEs | **1.44x** | 72% | **1.81x** | 60% | **2.02x** | 50% | +| Mcopy: fixed src dst False: 10KiB | **1.42x** | 71% | **1.66x** | 55% | **1.77x** | 44% | +| Mcopy: fixed src dst False: 1MiB | **0.95x** | 48% | **1.25x** | 42% | **0.95x** | 24% | +| Mcopy: fixed src dst True: 0 BYTEs | **1.28x** | 64% | **1.51x** | 50% | **1.62x** | 41% | +| Mcopy: fixed src dst True: 100 BYTEs | **1.32x** | 66% | **1.58x** | 53% | **1.63x** | 41% | +| Mcopy: fixed src dst True: 10KiB | **1.18x** | 59% | **1.45x** | 48% | **1.50x** | 38% | +| Mcopy: fixed src dst True: 1MiB | **1.19x** | 60% | **1.10x** | 37% | **0.98x** | 25% | +| Returndatacopy: fixed dst False: 0 BYTEs | **1.49x** | 74% | **1.88x** | 63% | **2.13x** | 53% | +| Returndatacopy: fixed dst False: 100 BYTEs | **1.51x** | 75% | **1.72x** | 57% | **1.86x** | 46% | +| Returndatacopy: fixed dst False: 10KiB | **1.21x** | 60% | **1.50x** | 50% | **1.52x** | 38% | +| Returndatacopy: fixed dst False: 1MiB | **1.18x** | 59% | **1.03x** | 34% | **0.81x** | 20% | +| Returndatacopy: fixed dst True: 0 BYTEs | **1.38x** | 69% | **1.64x** | 55% | **1.79x** | 45% | +| Returndatacopy: fixed dst True: 100 BYTEs | **1.33x** | 66% | **1.53x** | 51% | **1.63x** | 41% | +| Returndatacopy: fixed dst True: 10KiB | **1.12x** | 56% | **1.28x** | 43% | **1.21x** | 30% | +| Returndatacopy: fixed dst True: 1MiB | **0.98x** | 49% | **1.18x** | 39% | **1.02x** | 26% | + +**Category Statistics:** + +| Configuration | Mean Speedup | Mean Efficiency | +| --- | --- | --- | +| 2 GPUs | 1.26x | 62.8% | +| 3 GPUs | 1.48x | 49.5% | +| 4 GPUs | 1.48x | 36.9% | + +--- + +### Worst Opcode.Py + +**60 tests** + +| Test Name | 2 GPUs | Eff | 3 GPUs | Eff | 4 GPUs | Eff | +| --- | --- | --- | --- | --- | --- | --- | +| Log Opcodes: fixed offset False: non zero topic: 0 BYTEs data: LOG0 | **0.98x** | 49% | **1.09x** | 36% | **1.07x** | 27% | +| Log Opcodes: fixed offset False: non zero topic: 0 BYTEs data: LOG1 | **1.20x** | 60% | **1.22x** | 41% | **0.83x** | 21% | +| Log Opcodes: fixed offset False: non zero topic: 0 BYTEs data: LOG2 | **0.99x** | 50% | **1.13x** | 38% | **0.91x** | 23% | +| Log Opcodes: fixed offset False: non zero topic: 0 BYTEs data: LOG3 | **1.20x** | 60% | **1.32x** | 44% | **0.94x** | 24% | +| Log Opcodes: fixed offset False: non zero topic: 0 BYTEs data: LOG4 | **1.24x** | 62% | **1.20x** | 40% | **1.00x** | 25% | +| Log Opcodes: fixed offset False: non zero topic: 1 MiB non zero data: LOG0 | **0.95x** | 47% | **1.35x** | 45% | **1.07x** | 27% | +| Log Opcodes: fixed offset False: non zero topic: 1 MiB non zero data: LOG1 | **1.22x** | 61% | **1.18x** | 39% | **0.86x** | 22% | +| Log Opcodes: fixed offset False: non zero topic: 1 MiB non zero data: LOG2 | **1.20x** | 60% | **1.17x** | 39% | **0.84x** | 21% | +| Log Opcodes: fixed offset False: non zero topic: 1 MiB non zero data: LOG3 | **1.20x** | 60% | **0.95x** | 32% | **0.95x** | 24% | +| Log Opcodes: fixed offset False: non zero topic: 1 MiB non zero data: LOG4 | **1.16x** | 58% | **0.96x** | 32% | **0.94x** | 24% | +| Log Opcodes: fixed offset False: non zero topic: 1 MiB zeros data: LOG0 | **1.00x** | 50% | **1.25x** | 42% | **0.90x** | 23% | +| Log Opcodes: fixed offset False: non zero topic: 1 MiB zeros data: LOG1 | **0.95x** | 47% | **0.97x** | 32% | **0.88x** | 22% | +| Log Opcodes: fixed offset False: non zero topic: 1 MiB zeros data: LOG2 | **0.97x** | 48% | **1.18x** | 39% | **0.79x** | 20% | +| Log Opcodes: fixed offset False: non zero topic: 1 MiB zeros data: LOG3 | **1.17x** | 59% | **1.00x** | 33% | **0.86x** | 22% | +| Log Opcodes: fixed offset False: non zero topic: 1 MiB zeros data: LOG4 | **1.21x** | 61% | **0.97x** | 32% | **1.07x** | 27% | +| Log Opcodes: fixed offset False: zeros topic: 0 BYTEs data: LOG0 | **1.19x** | 60% | **1.11x** | 37% | **1.13x** | 28% | +| Log Opcodes: fixed offset False: zeros topic: 0 BYTEs data: LOG1 | **1.16x** | 58% | **1.03x** | 34% | **0.91x** | 23% | +| Log Opcodes: fixed offset False: zeros topic: 0 BYTEs data: LOG2 | **1.16x** | 58% | **1.21x** | 40% | **0.93x** | 23% | +| Log Opcodes: fixed offset False: zeros topic: 0 BYTEs data: LOG3 | **0.94x** | 47% | **0.98x** | 33% | **0.90x** | 22% | +| Log Opcodes: fixed offset False: zeros topic: 0 BYTEs data: LOG4 | **1.19x** | 60% | **1.16x** | 39% | **1.00x** | 25% | +| Log Opcodes: fixed offset False: zeros topic: 1 MiB non zero data: LOG0 | **1.21x** | 60% | **1.15x** | 38% | **0.77x** | 19% | +| Log Opcodes: fixed offset False: zeros topic: 1 MiB non zero data: LOG1 | **1.18x** | 59% | **1.19x** | 40% | **0.93x** | 23% | +| Log Opcodes: fixed offset False: zeros topic: 1 MiB non zero data: LOG2 | **0.93x** | 47% | **1.12x** | 37% | **0.93x** | 23% | +| Log Opcodes: fixed offset False: zeros topic: 1 MiB non zero data: LOG3 | **1.22x** | 61% | **1.06x** | 35% | **0.86x** | 21% | +| Log Opcodes: fixed offset False: zeros topic: 1 MiB non zero data: LOG4 | **1.21x** | 61% | **1.22x** | 41% | **0.88x** | 22% | +| Log Opcodes: fixed offset False: zeros topic: 1 MiB zeros data: LOG0 | **1.26x** | 63% | **1.00x** | 33% | **0.73x** | 18% | +| Log Opcodes: fixed offset False: zeros topic: 1 MiB zeros data: LOG1 | **1.18x** | 59% | **1.24x** | 41% | **0.94x** | 23% | +| Log Opcodes: fixed offset False: zeros topic: 1 MiB zeros data: LOG2 | **0.97x** | 48% | **1.20x** | 40% | **1.07x** | 27% | +| Log Opcodes: fixed offset False: zeros topic: 1 MiB zeros data: LOG3 | **0.92x** | 46% | **0.94x** | 31% | **0.89x** | 22% | +| Log Opcodes: fixed offset False: zeros topic: 1 MiB zeros data: LOG4 | **0.95x** | 48% | **1.20x** | 40% | **0.94x** | 24% | +| Log Opcodes: fixed offset True: non zero topic: 0 BYTEs data: LOG0 | **1.19x** | 60% | **1.19x** | 40% | **0.93x** | 23% | +| Log Opcodes: fixed offset True: non zero topic: 0 BYTEs data: LOG1 | **1.21x** | 61% | **1.18x** | 39% | **1.09x** | 27% | +| Log Opcodes: fixed offset True: non zero topic: 0 BYTEs data: LOG2 | **0.98x** | 49% | **1.37x** | 46% | **1.11x** | 28% | +| Log Opcodes: fixed offset True: non zero topic: 0 BYTEs data: LOG3 | **1.16x** | 58% | **1.30x** | 43% | **0.96x** | 24% | +| Log Opcodes: fixed offset True: non zero topic: 0 BYTEs data: LOG4 | **1.20x** | 60% | **1.33x** | 44% | **0.92x** | 23% | +| Log Opcodes: fixed offset True: non zero topic: 1 MiB non zero data: LOG0 | **1.19x** | 59% | **1.06x** | 35% | **0.94x** | 24% | +| Log Opcodes: fixed offset True: non zero topic: 1 MiB non zero data: LOG1 | **1.19x** | 60% | **0.92x** | 31% | **0.96x** | 24% | +| Log Opcodes: fixed offset True: non zero topic: 1 MiB non zero data: LOG2 | **1.18x** | 59% | **1.37x** | 46% | **0.96x** | 24% | +| Log Opcodes: fixed offset True: non zero topic: 1 MiB non zero data: LOG3 | **1.21x** | 61% | **1.22x** | 41% | **0.92x** | 23% | +| Log Opcodes: fixed offset True: non zero topic: 1 MiB non zero data: LOG4 | **1.21x** | 60% | **0.97x** | 32% | **1.06x** | 26% | +| Log Opcodes: fixed offset True: non zero topic: 1 MiB zeros data: LOG0 | **0.96x** | 48% | **1.04x** | 35% | **0.86x** | 21% | +| Log Opcodes: fixed offset True: non zero topic: 1 MiB zeros data: LOG1 | **0.99x** | 50% | **1.20x** | 40% | **1.00x** | 25% | +| Log Opcodes: fixed offset True: non zero topic: 1 MiB zeros data: LOG2 | **1.24x** | 62% | **0.97x** | 32% | **0.81x** | 20% | +| Log Opcodes: fixed offset True: non zero topic: 1 MiB zeros data: LOG3 | **1.15x** | 58% | **0.97x** | 32% | **0.81x** | 20% | +| Log Opcodes: fixed offset True: non zero topic: 1 MiB zeros data: LOG4 | **1.18x** | 59% | **1.18x** | 39% | **0.98x** | 24% | +| Log Opcodes: fixed offset True: zeros topic: 0 BYTEs data: LOG0 | **1.20x** | 60% | **1.18x** | 39% | **0.98x** | 24% | +| Log Opcodes: fixed offset True: zeros topic: 0 BYTEs data: LOG1 | **0.98x** | 49% | **1.08x** | 36% | **1.06x** | 27% | +| Log Opcodes: fixed offset True: zeros topic: 0 BYTEs data: LOG2 | **1.23x** | 61% | **0.99x** | 33% | **0.97x** | 24% | +| Log Opcodes: fixed offset True: zeros topic: 0 BYTEs data: LOG3 | **1.16x** | 58% | **0.94x** | 31% | **1.02x** | 26% | +| Log Opcodes: fixed offset True: zeros topic: 0 BYTEs data: LOG4 | **1.14x** | 57% | **1.36x** | 45% | **1.02x** | 25% | +| Log Opcodes: fixed offset True: zeros topic: 1 MiB non zero data: LOG0 | **1.22x** | 61% | **1.36x** | 45% | **0.97x** | 24% | +| Log Opcodes: fixed offset True: zeros topic: 1 MiB non zero data: LOG1 | **1.16x** | 58% | **1.19x** | 40% | **0.96x** | 24% | +| Log Opcodes: fixed offset True: zeros topic: 1 MiB non zero data: LOG2 | **1.19x** | 59% | **1.18x** | 39% | **0.92x** | 23% | +| Log Opcodes: fixed offset True: zeros topic: 1 MiB non zero data: LOG3 | **0.97x** | 49% | **1.20x** | 40% | **0.85x** | 21% | +| Log Opcodes: fixed offset True: zeros topic: 1 MiB non zero data: LOG4 | **1.10x** | 55% | **1.17x** | 39% | **0.97x** | 24% | +| Log Opcodes: fixed offset True: zeros topic: 1 MiB zeros data: LOG0 | **1.17x** | 59% | **1.21x** | 40% | **0.92x** | 23% | +| Log Opcodes: fixed offset True: zeros topic: 1 MiB zeros data: LOG1 | **0.94x** | 47% | **0.97x** | 32% | **0.97x** | 24% | +| Log Opcodes: fixed offset True: zeros topic: 1 MiB zeros data: LOG2 | **1.13x** | 56% | **1.19x** | 40% | **0.98x** | 25% | +| Log Opcodes: fixed offset True: zeros topic: 1 MiB zeros data: LOG3 | **1.20x** | 60% | **1.23x** | 41% | **0.94x** | 23% | +| Log Opcodes: fixed offset True: zeros topic: 1 MiB zeros data: LOG4 | **1.13x** | 56% | **1.19x** | 40% | **1.09x** | 27% | + +**Category Statistics:** + +| Configuration | Mean Speedup | Mean Efficiency | +| --- | --- | --- | +| 2 GPUs | 1.13x | 56.3% | +| 3 GPUs | 1.14x | 38.0% | +| 4 GPUs | 0.94x | 23.6% | + +--- + +### Worst Stateful Opcodes.Py + +**44 tests** + +| Test Name | 2 GPUs | Eff | 3 GPUs | Eff | 4 GPUs | Eff | +| --- | --- | --- | --- | --- | --- | --- | +| Address State Cold: absent accounts False: BALANCE | **1.19x** | 59% | **1.43x** | 48% | **1.42x** | 35% | +| Address State Cold: absent accounts True: BALANCE | **1.11x** | 56% | **1.12x** | 37% | **0.97x** | 24% | +| Address State Warm: absent target False: BALANCE | **1.18x** | 59% | **1.40x** | 47% | **1.40x** | 35% | +| Address State Warm: absent target False: CALLCODE | **1.65x** | 83% | **2.13x** | 71% | **2.53x** | 63% | +| Address State Warm: absent target False: CALL | **1.59x** | 79% | **2.07x** | 69% | **2.49x** | 62% | +| Address State Warm: absent target False: DELEGATECALL | **1.58x** | 79% | **2.02x** | 67% | **2.48x** | 62% | +| Address State Warm: absent target False: EXTCODEHASH | **1.22x** | 61% | **1.41x** | 47% | **1.48x** | 37% | +| Address State Warm: absent target False: EXTCODESIZE | **1.17x** | 58% | **1.31x** | 44% | **1.38x** | 34% | +| Address State Warm: absent target False: STATICCALL | **1.67x** | 83% | **2.20x** | 73% | **2.50x** | 62% | +| Address State Warm: absent target True: BALANCE | **1.12x** | 56% | **1.33x** | 44% | **1.27x** | 32% | +| Address State Warm: absent target True: CALLCODE | **1.60x** | 80% | **2.05x** | 68% | **2.45x** | 61% | +| Address State Warm: absent target True: CALL | **1.57x** | 78% | **2.05x** | 68% | **2.47x** | 62% | +| Address State Warm: absent target True: DELEGATECALL | **1.60x** | 80% | **1.97x** | 66% | **2.35x** | 59% | +| Address State Warm: absent target True: EXTCODEHASH | **1.26x** | 63% | **1.46x** | 49% | **1.52x** | 38% | +| Address State Warm: absent target True: EXTCODESIZE | **1.11x** | 56% | **1.42x** | 47% | **1.37x** | 34% | +| Address State Warm: absent target True: STATICCALL | **1.62x** | 81% | **2.07x** | 69% | **2.41x** | 60% | +| Blockhash: benchmark: gas: value 1M: blockchain test | **1.35x** | 68% | **1.66x** | 55% | **1.82x** | 45% | +| Extcodecopy Warm: 1KiB | **1.11x** | 56% | **1.38x** | 46% | **1.32x** | 33% | +| Extcodecopy Warm: 512 | **1.13x** | 56% | **1.53x** | 51% | **1.11x** | 28% | +| Extcodecopy Warm: 5KiB | **1.09x** | 54% | **1.28x** | 43% | **1.11x** | 28% | +| Selfbalance: benchmark: gas: value 1M: blockchain test from state test | **1.72x** | 86% | **2.40x** | 80% | **2.93x** | 73% | +| Selfdestruct Created: value bearing False | **1.15x** | 57% | **1.15x** | 38% | **0.95x** | 24% | +| Selfdestruct Created: value bearing True | **1.17x** | 59% | **1.21x** | 40% | **0.82x** | 21% | +| Selfdestruct Existing: value bearing False | **1.07x** | 54% | **1.19x** | 40% | **1.12x** | 28% | +| Selfdestruct Existing: value bearing True | **1.09x** | 55% | **1.15x** | 38% | **1.07x** | 27% | +| Selfdestruct Initcode: value bearing False | **1.22x** | 61% | **1.18x** | 39% | **0.88x** | 22% | +| Selfdestruct Initcode: value bearing True | **1.21x** | 60% | **1.15x** | 38% | **0.95x** | 24% | +| Storage Access Cold: absent slots False: SSLOAD | **1.19x** | 60% | **1.37x** | 46% | **1.47x** | 37% | +| Storage Access Cold: absent slots False: SSTORE new value, out of gas | **1.23x** | 61% | **1.32x** | 44% | **1.12x** | 28% | +| Storage Access Cold: absent slots False: SSTORE new value, REVERT | **1.09x** | 54% | **1.30x** | 43% | **1.31x** | 33% | +| Storage Access Cold: absent slots False: SSTORE new value | **1.05x** | 53% | **1.46x** | 49% | **1.17x** | 29% | +| Storage Access Cold: absent slots False: SSTORE same value, out of gas | **1.18x** | 59% | **1.41x** | 47% | **1.52x** | 38% | +| Storage Access Cold: absent slots False: SSTORE same value, REVERT | **1.17x** | 59% | **1.50x** | 50% | **1.54x** | 39% | +| Storage Access Cold: absent slots False: SSTORE same value | **1.18x** | 59% | **1.46x** | 49% | N/A | N/A | +| Storage Access Cold: absent slots True: SSLOAD | **1.14x** | 57% | **1.35x** | 45% | **1.15x** | 29% | +| Storage Access Cold: absent slots True: SSTORE new value, out of gas | **1.15x** | 58% | **1.16x** | 39% | **0.96x** | 24% | +| Storage Access Cold: absent slots True: SSTORE new value, REVERT | **1.20x** | 60% | **1.03x** | 34% | **0.96x** | 24% | +| Storage Access Cold: absent slots True: SSTORE new value | **0.96x** | 48% | **0.95x** | 32% | **0.98x** | 25% | +| Storage Access Cold: absent slots True: SSTORE same value, out of gas | **0.96x** | 48% | **0.95x** | 32% | **0.92x** | 23% | +| Storage Access Cold: absent slots True: SSTORE same value, REVERT | **1.15x** | 57% | **1.15x** | 38% | **0.93x** | 23% | +| Storage Access Cold: absent slots True: SSTORE same value | **1.12x** | 56% | **1.13x** | 38% | **0.91x** | 23% | +| Storage Access Warm: SLOAD | **1.13x** | 56% | **1.62x** | 54% | **1.39x** | 35% | +| Storage Access Warm: SSTORE new value | **1.47x** | 74% | **1.82x** | 61% | **2.06x** | 51% | +| Storage Access Warm: SSTORE same value | **1.47x** | 73% | **1.74x** | 58% | **1.95x** | 49% | + +**Category Statistics:** + +| Configuration | Mean Speedup | Mean Efficiency | +| --- | --- | --- | +| 2 GPUs | 1.26x | 62.9% | +| 3 GPUs | 1.49x | 49.6% | +| 4 GPUs | 1.51x | 37.7% | + +--- diff --git a/www/docs/pages/index.mdx b/www/docs/pages/index.mdx new file mode 100644 index 00000000..3be3064e --- /dev/null +++ b/www/docs/pages/index.mdx @@ -0,0 +1,15 @@ +--- +layout: landing +--- + +import { HomePage } from 'vocs/components' + + + + zkGas profiling + Comprehensive profiling framework for measuring and comparing the resources needed for proving different OPCODEs in zk environments across various gas categories. + + Get Started + Benchmark Results + + \ No newline at end of file diff --git a/www/docs/pages/marginal-gas-benchmark/index.mdx b/www/docs/pages/marginal-gas-benchmark/index.mdx new file mode 100644 index 00000000..28ec3c33 --- /dev/null +++ b/www/docs/pages/marginal-gas-benchmark/index.mdx @@ -0,0 +1,58 @@ +# Marginal Gas Benchmark Results + +import { CsvTable } from '../../components/CsvTable'; + +This section contains the latest zkVM benchmark results from December 2025, comparing **SP1 v5.2.3** and **RISC0 v3.0.4** provers. + +## Test Environment + +| Parameter | Value | +|-----------|-------| +| **CPU** | AMD EPYC 7B13 64-Core Processor | +| **RAM** | 371 GiB | +| **GPUs** | 4x NVIDIA GeForce RTX 4090 | +| **Date** | December 29, 2025 | + +## Available Reports + +### Individual Prover Reports + +- [**SP1 v5.2.3 Report**](/marginal-gas-benchmark/sp1) - Comprehensive benchmark results for SP1 prover +- [**RISC0 v3.0.4 Report**](/marginal-gas-benchmark/risc0) - Comprehensive benchmark results for RISC0 prover + +### Combined Comparison + +View the **Combined SP1 vs RISC0 Comparison** (opens in new tab) for a side-by-side analysis. + +## Report Contents + +Each prover report includes: + +1. **Regression Results** - Time/Gas, Cycles/Gas, and Time/Cycle metrics with R² values +2. **Proving Time Analysis** - Correlation between ZK cycles and proving time +3. **Gas vs ZK Cycles Charts** - Per-opcode and precompile analysis +4. **Proving Time Charts** - Performance visualization for each operation + +## SP1 Regression Summary + + + +## RISC0 Regression Summary + + + +## Raw Data Downloads + +- SP1 Raw Data +- SP1 Regression Data +- RISC0 Raw Data +- RISC0 Regression Data + diff --git a/www/docs/pages/marginal-gas-benchmark/risc0.md b/www/docs/pages/marginal-gas-benchmark/risc0.md new file mode 100644 index 00000000..dcdce228 --- /dev/null +++ b/www/docs/pages/marginal-gas-benchmark/risc0.md @@ -0,0 +1,2213 @@ +# ZK Gas Benchmark Report 2025-12-29 (risc0, both) + +## Context + +- **Generated**: 2025-12-29 21:10:10 +- **Prover**: risc0-v3.0.4 +- **Mode**: both +- **CPU**: AMD EPYC 7B13 64-Core Processor +- **RAM**: 371 GiB +- **GPUs**: 4x NVIDIA GeForce RTX 4090 + +## Regression Results + +### Time/Gas Bar Chart (R² ≥ 0.7) + +*Only opcodes/precompiles with R² ≥ 0.7 are shown.* + +![Time/Gas Bar Chart](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/bar_time_per_gas.png) + +### Cycles/Gas Bar Chart (R² ≥ 0.9) + +*Only opcodes/precompiles with R² ≥ 0.9 (green) are shown.* + +![Cycles/Gas Bar Chart](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/bar_cycles_per_gas.png) + +### Regression Results + +| Opcode | Max Ops | Max Gas | Max ZK Cycles | Time/Gas (R²) | Cycles/Gas (R²) | Time/Cycle (R²) | +|--------|---------|---------|---------------|---------------|-----------------|-----------------| +| modexp | 36.00 | 116.12K | 193.68M | 1.36ms (0.9998) | 3.91K (1.0000) | 0.35µs (0.9998) | +| blake2f | 10.00 | 704.62K | 461.37M | 242.84µs (1.0000) | 702.03 (1.0000) | 0.35µs (1.0000) | +| mulmod | 210.00K | 4.60M | 824.50M | 151.85µs (1.0000) | 420.63 (1.0000) | 0.36µs (1.0000) | +| div | 210.00K | 3.30M | 407.58M | 110.29µs (0.9999) | 306.78 (1.0000) | 0.36µs (0.9999) | +| mod | 210.00K | 3.30M | 356.34M | 94.55µs (1.0000) | 257.97 (1.0000) | 0.37µs (1.0000) | +| sdiv | 210.00K | 3.30M | 355.50M | 92.84µs (1.0000) | 257.18 (1.0000) | 0.36µs (1.0000) | +| bn128_mul | 72.00 | 487.85K | 100.68M | 86.68µs (0.9997) | 229.21 (1.0000) | 0.38µs (0.9997) | +| point_evaluation | 9.00 | 499.92K | 101.65M | 85.54µs (0.9945) | 223.09 (1.0000) | 0.38µs (0.9945) | +| selfbalance | 600.00K | 5.59M | 786.76M | 84.67µs (0.9999) | 241.80 (1.0000) | 0.35µs (0.9999) | +| keccak256 | 24.00K | 38.51M | 3.07B | 84.62µs (0.9980) | 80.73 (1.0000) | 1.05µs (0.9980) | +| bn128_pairing | 8.00 | 956.88K | 205.53M | 81.72µs (0.9968) | 225.96 (1.0000) | 0.36µs (0.9968) | +| ecrecover | 201.00 | 674.36K | 119.41M | 81.32µs (0.9921) | 193.83 (1.0000) | 0.42µs (0.9921) | +| addmod | 201.00K | 4.41M | 428.76M | 71.00µs (0.9999) | 196.25 (1.0000) | 0.36µs (0.9999) | +| bls12_g1msm | 39.00 | 942.30K | 81.33M | 37.74µs (0.9893) | 89.91 (1.0000) | 0.42µs (0.9893) | +| bls12_pairing | 9.00 | 983.01K | 82.96M | 36.15µs (0.9979) | 88.19 (1.0000) | 0.41µs (0.9979) | +| eq | 450.00K | 6.11M | 318.09M | 34.89µs (0.9993) | 101.29 (1.0000) | 0.34µs (0.9993) | +| exp | 2.25K | 3.69M | 339.20M | 32.61µs (0.9997) | 92.99 (1.0000) | 0.35µs (0.9997) | +| bls12_map_fp_to_g1 | 75.00 | 468.01K | 24.69M | 31.51µs (0.9772) | 55.78 (1.0000) | 0.56µs (0.9773) | +| smod | 600.00K | 9.34M | 484.20M | 28.99µs (0.9996) | 80.97 (1.0000) | 0.36µs (0.9995) | +| bls12_g2msm | 24.00 | 1.14M | 80.25M | 28.85µs (0.9960) | 73.03 (1.0000) | 0.40µs (0.9960) | +| sar | 450.00K | 6.11M | 243.24M | 28.77µs (0.9998) | 78.36 (1.0000) | 0.37µs (0.9998) | +| bn128_add | 801.00 | 263.28K | 14.61M | 28.52µs (0.7509) | 67.29 (1.0000) | 0.42µs (0.7509) | +| prevrandao | 900.00K | 5.66M | 232.72M | 27.62µs (0.9998) | 78.49 (1.0000) | 0.35µs (0.9998) | +| bls12_g1add | 771.00 | 429.98K | 18.05M | 25.16µs (0.9518) | 40.44 (1.0000) | 0.62µs (0.9522) | +| call | 49.50K | 6.16M | 375.52M | 24.72µs (1.0000) | 70.64 (1.0000) | 0.35µs (1.0000) | +| callcode | 49.50K | 6.16M | 372.60M | 24.46µs (0.9999) | 70.06 (1.0000) | 0.35µs (0.9998) | +| staticcall | 49.50K | 6.01M | 369.46M | 23.98µs (0.9999) | 69.81 (1.0000) | 0.34µs (0.9999) | +| mstore | 501.00K | 4.21M | 204.25M | 22.14µs (0.9961) | 62.67 (1.0000) | 0.35µs (0.9961) | +| address | 900.00K | 5.66M | 195.82M | 21.50µs (0.9969) | 57.99 (1.0000) | 0.37µs (0.9969) | +| origin | 1.20M | 7.54M | 260.68M | 21.41µs (0.9995) | 57.98 (1.0000) | 0.37µs (0.9996) | +| caller | 1.20M | 7.54M | 260.68M | 21.35µs (0.9998) | 57.98 (1.0000) | 0.37µs (0.9997) | +| mul | 600.00K | 9.34M | 423.00M | 21.21µs (0.9970) | 60.57 (1.0000) | 0.35µs (0.9970) | +| delegatecall | 49.50K | 6.01M | 315.92M | 20.95µs (0.9998) | 59.11 (1.0000) | 0.35µs (0.9998) | +| coinbase | 1.20M | 7.54M | 260.68M | 20.80µs (0.9983) | 57.98 (1.0000) | 0.36µs (0.9984) | +| signextend | 1.50M | 23.27M | 738.37M | 20.53µs (0.9997) | 55.40 (1.0000) | 0.37µs (0.9997) | +| bls12_g2add | 450.00 | 376.04K | 18.62M | 20.28µs (0.9636) | 52.96 (1.0000) | 0.38µs (0.9636) | +| shl | 450.00K | 6.11M | 206.33M | 20.17µs (0.9991) | 51.02 (1.0000) | 0.40µs (0.9992) | +| calldataload | 501.00K | 4.70M | 165.98M | 20.03µs (0.9970) | 56.34 (1.0000) | 0.36µs (0.9970) | +| mload | 1.00M | 9.38M | 332.79M | 19.82µs (0.9983) | 56.68 (1.0000) | 0.35µs (0.9983) | +| bls12_map_fp2_to_g2 | 27.00 | 693.24K | 27.17M | 19.25µs (0.9404) | 40.15 (1.0000) | 0.48µs (0.9404) | +| shr | 600.00K | 8.14M | 275.24M | 18.85µs (0.9984) | 51.35 (1.0000) | 0.37µs (0.9983) | +| swap16 | 300.00K | 1.18M | 58.45M | 17.95µs (0.9957) | 53.37 (1.0000) | 0.34µs (0.9956) | +| push32 | 525.00K | 3.94M | 134.05M | 16.51µs (0.9954) | 47.79 (1.0000) | 0.35µs (0.9954) | +| swap1 | 300.00K | 1.10M | 57.28M | 16.31µs (0.9913) | 53.35 (1.0000) | 0.31µs (0.9913) | +| swap8 | 300.00K | 1.14M | 57.81M | 15.32µs (0.9917) | 53.34 (1.0000) | 0.29µs (0.9917) | +| blobbasefee | 1.20M | 7.54M | 223.48M | 14.61µs (0.9997) | 42.48 (1.0000) | 0.34µs (0.9997) | +| gasprice | 1.20M | 7.54M | 218.68M | 14.14µs (0.9986) | 40.48 (1.0000) | 0.35µs (0.9986) | +| slt | 2.10M | 28.36M | 1.08B | 13.84µs (0.9963) | 37.96 (1.0000) | 0.36µs (0.9963) | +| sgt | 900.00K | 12.18M | 463.62M | 13.68µs (0.9896) | 37.97 (1.0000) | 0.36µs (0.9896) | +| sub | 1.50M | 20.27M | 768.67M | 13.48µs (0.9927) | 37.30 (1.0000) | 0.36µs (0.9926) | +| callvalue | 1.20M | 7.54M | 215.08M | 13.39µs (0.9978) | 38.99 (1.0000) | 0.34µs (0.9978) | +| codecopy | 900.00K | 12.22M | 362.91M | 12.70µs (0.9998) | 35.67 (1.0000) | 0.36µs (0.9998) | +| sstore | 61.20K | 6.86M | 245.91M | 12.64µs (0.9994) | 36.08 (1.0000) | 0.35µs (0.9995) | +| calldatacopy | 600.00K | 8.16M | 242.35M | 12.43µs (0.9999) | 35.67 (1.0000) | 0.35µs (0.9999) | +| pc | 1.20M | 7.54M | 198.28M | 11.71µs (1.0000) | 31.98 (1.0000) | 0.37µs (1.0000) | +| add | 900.00K | 12.18M | 451.92M | 11.65µs (0.9991) | 33.62 (1.0000) | 0.35µs (0.9990) | +| gas | 1.20M | 7.54M | 193.48M | 11.37µs (0.9961) | 29.98 (1.0000) | 0.38µs (0.9961) | +| timestamp | 1.20M | 7.54M | 199.48M | 11.32µs (0.9987) | 32.48 (1.0000) | 0.35µs (0.9988) | +| basefee | 1.20M | 7.54M | 197.08M | 11.25µs (0.9987) | 31.48 (1.0000) | 0.36µs (0.9988) | +| number | 1.20M | 7.54M | 199.48M | 11.22µs (0.9999) | 32.48 (1.0000) | 0.35µs (0.9999) | +| calldatasize | 1.20M | 7.54M | 198.28M | 11.12µs (0.9972) | 31.99 (1.0000) | 0.35µs (0.9972) | +| push16 | 1.00M | 7.35M | 189.56M | 11.11µs (0.9999) | 28.37 (1.0000) | 0.39µs (0.9999) | +| codesize | 1.20M | 7.54M | 194.68M | 10.76µs (0.9992) | 30.48 (1.0000) | 0.35µs (0.9992) | +| chainid | 1.20M | 7.54M | 197.08M | 10.65µs (0.9979) | 31.48 (1.0000) | 0.34µs (0.9980) | +| lt | 600.00K | 8.14M | 290.39M | 10.60µs (0.9483) | 27.28 (1.0000) | 0.39µs (0.9484) | +| gaslimit | 1.20M | 7.54M | 193.48M | 10.58µs (0.9953) | 29.98 (1.0000) | 0.35µs (0.9954) | +| msize | 1.20M | 7.56M | 194.36M | 10.57µs (0.9998) | 30.01 (1.0000) | 0.35µs (0.9998) | +| returndatasize | 1.20M | 7.54M | 193.48M | 10.45µs (0.9996) | 29.98 (1.0000) | 0.35µs (0.9997) | +| push0 | 1.20M | 7.54M | 189.88M | 10.31µs (0.9990) | 28.48 (1.0000) | 0.36µs (0.9990) | +| gt | 600.00K | 8.14M | 290.40M | 9.70µs (0.9983) | 27.30 (1.0000) | 0.36µs (0.9984) | +| blobhash | 1.50M | 14.01M | 363.18M | 9.55µs (0.9981) | 27.00 (1.0000) | 0.35µs (0.9980) | +| or | 900.00K | 12.18M | 425.82M | 9.07µs (0.9728) | 23.96 (1.0000) | 0.38µs (0.9726) | +| mstore8 | 1.00M | 8.38M | 199.33M | 9.02µs (0.9980) | 26.00 (1.0000) | 0.35µs (0.9980) | +| byte | 600.00K | 8.14M | 232.05M | 8.86µs (0.9964) | 27.36 (1.0000) | 0.32µs (0.9964) | +| xor | 1.50M | 20.27M | 708.67M | 8.63µs (0.9994) | 23.95 (1.0000) | 0.36µs (0.9995) | +| jumpdest | 2.40M | 3.03M | 95.30M | 8.55µs (0.9944) | 25.84 (1.0000) | 0.33µs (0.9951) | +| returndatacopy | 180.00K | 3.30M | 80.34M | 8.51µs (0.9920) | 26.45 (1.0000) | 0.32µs (0.9920) | +| and | 600.00K | 8.14M | 284.40M | 8.11µs (0.9966) | 23.96 (1.0000) | 0.34µs (0.9964) | +| iszero | 1.35M | 13.98M | 423.50M | 7.74µs (0.9938) | 21.65 (1.0000) | 0.36µs (0.9940) | +| extcodehash | 200.00K | 21.95M | 502.96M | 7.64µs (0.9998) | 22.70 (1.0000) | 0.34µs (0.9998) | +| not | 900.00K | 9.34M | 273.83M | 6.40µs (0.9948) | 18.32 (1.0000) | 0.35µs (0.9945) | +| dup16 | 600.00K | 4.70M | 102.29M | 6.27µs (0.9768) | 17.00 (1.0000) | 0.37µs (0.9768) | +| dup8 | 900.00K | 6.90M | 151.01M | 5.95µs (0.9816) | 16.98 (1.0000) | 0.35µs (0.9814) | +| extcodesize | 198.00K | 21.73M | 385.55M | 5.95µs (0.9996) | 17.07 (1.0000) | 0.35µs (0.9996) | +| balance | 300.00K | 32.40M | 562.04M | 5.91µs (0.9999) | 17.01 (1.0000) | 0.35µs (0.9999) | +| dup1 | 900.00K | 6.80M | 149.41M | 5.89µs (0.9909) | 16.98 (1.0000) | 0.35µs (0.9904) | +| tstore | 198.00K | 21.13M | 392.16M | 5.82µs (1.0000) | 16.93 (1.0000) | 0.34µs (1.0000) | +| extcodecopy | 102.00K | 14.28M | 246.94M | 5.54µs (0.9999) | 16.06 (1.0000) | 0.34µs (0.9999) | +| pop | 1.80M | 7.68M | 181.68M | 5.47µs (0.9867) | 15.02 (1.0000) | 0.36µs (0.9865) | +| sload | 198.00K | 21.73M | 354.21M | 5.39µs (0.9999) | 15.53 (1.0000) | 0.35µs (0.9999) | +| mcopy | 60.00K | 6.60M | 101.57M | 5.20µs (0.9974) | 14.92 (1.0000) | 0.35µs (0.9973) | +| push1 | 1.20M | 8.74M | 176.69M | 5.19µs (0.9935) | 15.34 (1.0000) | 0.34µs (0.9935) | +| jumpi | 1.00M | 17.86M | 291.08M | 4.52µs (0.9978) | 12.30 (1.0000) | 0.37µs (0.9978) | +| ripemd160 | 1.50K | 6.90M | 73.80M | 3.15µs (0.9982) | 9.38 (1.0000) | 0.34µs (0.9982) | +| jump | 600.00K | 7.68M | 110.88M | 2.74µs (0.9976) | 7.88 (1.0000) | 0.35µs (0.9973) | +| identity | 1.50M | 259.80M | 10.56B | 1.87µs (0.9274) | 1.70 (0.9998) | 1.10µs (0.9206) | +| sha256 | 1.50K | 2.68M | 19.67M | 0.94µs (0.8017) | 3.41 (1.0000) | 0.28µs (0.8015) | +| tload | 1.50M | 159.77M | 621.48M | 0.86µs (0.9999) | 2.43 (1.0000) | 0.36µs (0.9999) | +| create2 | 4.20K | 134.68M | 189.22M | 0.56µs (0.9999) | 1.37 (0.9997) | 0.41µs (0.9995) | +| create | 4.20K | 134.56M | 177.51M | 0.49µs (0.9998) | 1.29 (0.9997) | 0.38µs (0.9994) | +| log0 | 120.00K | 45.96M | 371.63M | 0.30µs (0.9807) | 7.77 (1.0000) | 0.04µs (0.9815) | +| log1 | 81.00K | 82.44M | 571.66M | 0.27µs (0.9959) | 6.76 (1.0000) | 0.04µs (0.9956) | +| log3 | 35.70K | 127.10M | 644.16M | 0.16µs (0.9874) | 4.98 (1.0000) | 0.03µs (0.9882) | +| log2 | 42.00K | 133.62M | 635.44M | 0.15µs (0.9985) | 4.67 (0.9999) | 0.03µs (0.9988) | +| log4 | 27.30K | 107.56M | 576.67M | 0.15µs (0.9983) | 5.25 (1.0000) | 0.03µs (0.9982) | + +## Proving time vs ZK Cycles + +This section examines whether ZK cycles are a good proxy for proving time. + +### Time/Cycles Bar Chart (R² ≥ 0.7) + +*Only opcodes/precompiles with R² ≥ 0.7 are shown.* + +![Time/Cycles Bar Chart](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/bar_time_per_cycle.png) + +### Combined ZK Cycles ↔ Proving Time (All Opcodes) + +![Combined ZK Cycles vs Proving Time](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/combined_zkcycles_proving.png) + +### Excluding: log0, log1, log2, log3, log4 + +![Regular Opcodes](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/combined_zkcycles_regular.png) + +### Excluding: blake2f, log0, log1, log2, log3, log4, modexp + +![Regular Opcodes No Outliers](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/combined_zkcycles_regular_no_outliers.png) + +### Excluding: blake2f, keccak256, log0, log0, log1, log1, log2, log2, log3, log3, log4, log4, modexp + +![Regular Opcodes Minimal](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/combined_zkcycles_regular_minimal.png) + +### Only: log0, log1, log2, log3, log4 + +![BLS12 Precompiles](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/combined_zkcycles_bls12.png) + + +## Regression Charts + +### risc0 Gas vs Proving Time + +**modexp**: Slope = 1.36ms/gas, R² = 0.9998 + +![modexp](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_modexp.png) + +**blake2f**: Slope = 242.84µs/gas, R² = 1.0000 + +![blake2f](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_blake2f.png) + +**mulmod**: Slope = 151.85µs/gas, R² = 1.0000 + +![mulmod](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_mulmod.png) + +**div**: Slope = 110.29µs/gas, R² = 0.9999 + +![div](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_div.png) + +**mod**: Slope = 94.55µs/gas, R² = 1.0000 + +![mod](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_mod.png) + +**sdiv**: Slope = 92.84µs/gas, R² = 1.0000 + +![sdiv](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_sdiv.png) + +**bn128_mul**: Slope = 86.68µs/gas, R² = 0.9997 + +![bn128_mul](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_bn128_mul.png) + +**point_evaluation**: Slope = 85.54µs/gas, R² = 0.9945 + +![point_evaluation](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_point_evaluation.png) + +**selfbalance**: Slope = 84.67µs/gas, R² = 0.9999 + +![selfbalance](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_selfbalance.png) + +**keccak256**: Slope = 84.62µs/gas, R² = 0.9980 + +![keccak256](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_keccak256.png) + +**bn128_pairing**: Slope = 81.72µs/gas, R² = 0.9968 + +![bn128_pairing](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_bn128_pairing.png) + +**ecrecover**: Slope = 81.32µs/gas, R² = 0.9921 + +![ecrecover](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_ecrecover.png) + +**addmod**: Slope = 71.00µs/gas, R² = 0.9999 + +![addmod](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_addmod.png) + +**bls12_g1msm**: Slope = 37.74µs/gas, R² = 0.9893 + +![bls12_g1msm](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_bls12_g1msm.png) + +**bls12_pairing**: Slope = 36.15µs/gas, R² = 0.9979 + +![bls12_pairing](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_bls12_pairing.png) + +**eq**: Slope = 34.89µs/gas, R² = 0.9993 + +![eq](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_eq.png) + +**exp**: Slope = 32.61µs/gas, R² = 0.9997 + +![exp](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_exp.png) + +**bls12_map_fp_to_g1**: Slope = 31.51µs/gas, R² = 0.9772 + +![bls12_map_fp_to_g1](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_bls12_map_fp_to_g1.png) + +**smod**: Slope = 28.99µs/gas, R² = 0.9996 + +![smod](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_smod.png) + +**bls12_g2msm**: Slope = 28.85µs/gas, R² = 0.9960 + +![bls12_g2msm](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_bls12_g2msm.png) + +**sar**: Slope = 28.77µs/gas, R² = 0.9998 + +![sar](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_sar.png) + +**bn128_add**: Slope = 28.52µs/gas, R² = 0.7509 + +![bn128_add](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_bn128_add.png) + +**prevrandao**: Slope = 27.62µs/gas, R² = 0.9998 + +![prevrandao](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_prevrandao.png) + +**bls12_g1add**: Slope = 25.16µs/gas, R² = 0.9518 + +![bls12_g1add](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_bls12_g1add.png) + +**call**: Slope = 24.72µs/gas, R² = 1.0000 + +![call](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_call.png) + +**callcode**: Slope = 24.46µs/gas, R² = 0.9999 + +![callcode](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_callcode.png) + +**staticcall**: Slope = 23.98µs/gas, R² = 0.9999 + +![staticcall](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_staticcall.png) + +**mstore**: Slope = 22.14µs/gas, R² = 0.9961 + +![mstore](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_mstore.png) + +**address**: Slope = 21.50µs/gas, R² = 0.9969 + +![address](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_address.png) + +**origin**: Slope = 21.41µs/gas, R² = 0.9995 + +![origin](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_origin.png) + +**caller**: Slope = 21.35µs/gas, R² = 0.9998 + +![caller](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_caller.png) + +**mul**: Slope = 21.21µs/gas, R² = 0.9970 + +![mul](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_mul.png) + +**delegatecall**: Slope = 20.95µs/gas, R² = 0.9998 + +![delegatecall](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_delegatecall.png) + +**coinbase**: Slope = 20.80µs/gas, R² = 0.9983 + +![coinbase](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_coinbase.png) + +**signextend**: Slope = 20.53µs/gas, R² = 0.9997 + +![signextend](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_signextend.png) + +**bls12_g2add**: Slope = 20.28µs/gas, R² = 0.9636 + +![bls12_g2add](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_bls12_g2add.png) + +**shl**: Slope = 20.17µs/gas, R² = 0.9991 + +![shl](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_shl.png) + +**calldataload**: Slope = 20.03µs/gas, R² = 0.9970 + +![calldataload](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_calldataload.png) + +**mload**: Slope = 19.82µs/gas, R² = 0.9983 + +![mload](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_mload.png) + +**bls12_map_fp2_to_g2**: Slope = 19.25µs/gas, R² = 0.9404 + +![bls12_map_fp2_to_g2](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_bls12_map_fp2_to_g2.png) + +**shr**: Slope = 18.85µs/gas, R² = 0.9984 + +![shr](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_shr.png) + +**swap16**: Slope = 17.95µs/gas, R² = 0.9957 + +![swap16](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_swap16.png) + +**push32**: Slope = 16.51µs/gas, R² = 0.9954 + +![push32](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_push32.png) + +**swap1**: Slope = 16.31µs/gas, R² = 0.9913 + +![swap1](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_swap1.png) + +**swap8**: Slope = 15.32µs/gas, R² = 0.9917 + +![swap8](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_swap8.png) + +**blobbasefee**: Slope = 14.61µs/gas, R² = 0.9997 + +![blobbasefee](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_blobbasefee.png) + +**gasprice**: Slope = 14.14µs/gas, R² = 0.9986 + +![gasprice](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_gasprice.png) + +**slt**: Slope = 13.84µs/gas, R² = 0.9963 + +![slt](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_slt.png) + +**sgt**: Slope = 13.68µs/gas, R² = 0.9896 + +![sgt](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_sgt.png) + +**sub**: Slope = 13.48µs/gas, R² = 0.9927 + +![sub](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_sub.png) + +**callvalue**: Slope = 13.39µs/gas, R² = 0.9978 + +![callvalue](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_callvalue.png) + +**codecopy**: Slope = 12.70µs/gas, R² = 0.9998 + +![codecopy](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_codecopy.png) + +**sstore**: Slope = 12.64µs/gas, R² = 0.9994 + +![sstore](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_sstore.png) + +**calldatacopy**: Slope = 12.43µs/gas, R² = 0.9999 + +![calldatacopy](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_calldatacopy.png) + +**pc**: Slope = 11.71µs/gas, R² = 1.0000 + +![pc](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_pc.png) + +**add**: Slope = 11.65µs/gas, R² = 0.9991 + +![add](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_add.png) + +**gas**: Slope = 11.37µs/gas, R² = 0.9961 + +![gas](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_gas.png) + +**timestamp**: Slope = 11.32µs/gas, R² = 0.9987 + +![timestamp](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_timestamp.png) + +**basefee**: Slope = 11.25µs/gas, R² = 0.9987 + +![basefee](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_basefee.png) + +**number**: Slope = 11.22µs/gas, R² = 0.9999 + +![number](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_number.png) + +**calldatasize**: Slope = 11.12µs/gas, R² = 0.9972 + +![calldatasize](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_calldatasize.png) + +**push16**: Slope = 11.11µs/gas, R² = 0.9999 + +![push16](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_push16.png) + +**codesize**: Slope = 10.76µs/gas, R² = 0.9992 + +![codesize](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_codesize.png) + +**chainid**: Slope = 10.65µs/gas, R² = 0.9979 + +![chainid](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_chainid.png) + +**lt**: Slope = 10.60µs/gas, R² = 0.9483 + +![lt](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_lt.png) + +**gaslimit**: Slope = 10.58µs/gas, R² = 0.9953 + +![gaslimit](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_gaslimit.png) + +**msize**: Slope = 10.57µs/gas, R² = 0.9998 + +![msize](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_msize.png) + +**returndatasize**: Slope = 10.45µs/gas, R² = 0.9996 + +![returndatasize](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_returndatasize.png) + +**push0**: Slope = 10.31µs/gas, R² = 0.9990 + +![push0](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_push0.png) + +**gt**: Slope = 9.70µs/gas, R² = 0.9983 + +![gt](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_gt.png) + +**blobhash**: Slope = 9.55µs/gas, R² = 0.9981 + +![blobhash](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_blobhash.png) + +**or**: Slope = 9.07µs/gas, R² = 0.9728 + +![or](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_or.png) + +**mstore8**: Slope = 9.02µs/gas, R² = 0.9980 + +![mstore8](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_mstore8.png) + +**byte**: Slope = 8.86µs/gas, R² = 0.9964 + +![byte](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_byte.png) + +**xor**: Slope = 8.63µs/gas, R² = 0.9994 + +![xor](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_xor.png) + +**jumpdest**: Slope = 8.55µs/gas, R² = 0.9944 + +![jumpdest](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_jumpdest.png) + +**returndatacopy**: Slope = 8.51µs/gas, R² = 0.9920 + +![returndatacopy](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_returndatacopy.png) + +**and**: Slope = 8.11µs/gas, R² = 0.9966 + +![and](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_and.png) + +**iszero**: Slope = 7.74µs/gas, R² = 0.9938 + +![iszero](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_iszero.png) + +**extcodehash**: Slope = 7.64µs/gas, R² = 0.9998 + +![extcodehash](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_extcodehash.png) + +**not**: Slope = 6.40µs/gas, R² = 0.9948 + +![not](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_not.png) + +**dup16**: Slope = 6.27µs/gas, R² = 0.9768 + +![dup16](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_dup16.png) + +**dup8**: Slope = 5.95µs/gas, R² = 0.9816 + +![dup8](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_dup8.png) + +**extcodesize**: Slope = 5.95µs/gas, R² = 0.9996 + +![extcodesize](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_extcodesize.png) + +**balance**: Slope = 5.91µs/gas, R² = 0.9999 + +![balance](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_balance.png) + +**dup1**: Slope = 5.89µs/gas, R² = 0.9909 + +![dup1](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_dup1.png) + +**tstore**: Slope = 5.82µs/gas, R² = 1.0000 + +![tstore](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_tstore.png) + +**extcodecopy**: Slope = 5.54µs/gas, R² = 0.9999 + +![extcodecopy](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_extcodecopy.png) + +**pop**: Slope = 5.47µs/gas, R² = 0.9867 + +![pop](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_pop.png) + +**sload**: Slope = 5.39µs/gas, R² = 0.9999 + +![sload](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_sload.png) + +**mcopy**: Slope = 5.20µs/gas, R² = 0.9974 + +![mcopy](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_mcopy.png) + +**push1**: Slope = 5.19µs/gas, R² = 0.9935 + +![push1](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_push1.png) + +**jumpi**: Slope = 4.52µs/gas, R² = 0.9978 + +![jumpi](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_jumpi.png) + +**ripemd160**: Slope = 3.15µs/gas, R² = 0.9982 + +![ripemd160](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_ripemd160.png) + +**jump**: Slope = 2.74µs/gas, R² = 0.9976 + +![jump](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_jump.png) + +**identity**: Slope = 1.87µs/gas, R² = 0.9274 + +![identity](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_identity.png) + +**sha256**: Slope = 0.94µs/gas, R² = 0.8017 + +![sha256](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_sha256.png) + +**tload**: Slope = 0.86µs/gas, R² = 0.9999 + +![tload](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_tload.png) + +**create2**: Slope = 0.56µs/gas, R² = 0.9999 + +![create2](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_create2.png) + +**create**: Slope = 0.49µs/gas, R² = 0.9998 + +![create](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_create.png) + +**log0**: Slope = 0.30µs/gas, R² = 0.9807 + +![log0](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_log0.png) + +**log1**: Slope = 0.27µs/gas, R² = 0.9959 + +![log1](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_log1.png) + +**log3**: Slope = 0.16µs/gas, R² = 0.9874 + +![log3](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_log3.png) + +**log2**: Slope = 0.15µs/gas, R² = 0.9985 + +![log2](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_log2.png) + +**log4**: Slope = 0.15µs/gas, R² = 0.9983 + +![log4](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_proving_log4.png) + +### risc0 Gas vs ZK Cycles + +**modexp**: Slope = 3.91K cycles/gas, R² = 1.0000 + +![modexp](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_modexp.png) + +**blake2f**: Slope = 702.03 cycles/gas, R² = 1.0000 + +![blake2f](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_blake2f.png) + +**mulmod**: Slope = 420.63 cycles/gas, R² = 1.0000 + +![mulmod](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_mulmod.png) + +**div**: Slope = 306.78 cycles/gas, R² = 1.0000 + +![div](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_div.png) + +**mod**: Slope = 257.97 cycles/gas, R² = 1.0000 + +![mod](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_mod.png) + +**sdiv**: Slope = 257.18 cycles/gas, R² = 1.0000 + +![sdiv](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_sdiv.png) + +**selfbalance**: Slope = 241.80 cycles/gas, R² = 1.0000 + +![selfbalance](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_selfbalance.png) + +**bn128_mul**: Slope = 229.21 cycles/gas, R² = 1.0000 + +![bn128_mul](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_bn128_mul.png) + +**bn128_pairing**: Slope = 225.96 cycles/gas, R² = 1.0000 + +![bn128_pairing](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_bn128_pairing.png) + +**point_evaluation**: Slope = 223.09 cycles/gas, R² = 1.0000 + +![point_evaluation](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_point_evaluation.png) + +**addmod**: Slope = 196.25 cycles/gas, R² = 1.0000 + +![addmod](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_addmod.png) + +**ecrecover**: Slope = 193.83 cycles/gas, R² = 1.0000 + +![ecrecover](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_ecrecover.png) + +**eq**: Slope = 101.29 cycles/gas, R² = 1.0000 + +![eq](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_eq.png) + +**exp**: Slope = 92.99 cycles/gas, R² = 1.0000 + +![exp](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_exp.png) + +**bls12_g1msm**: Slope = 89.91 cycles/gas, R² = 1.0000 + +![bls12_g1msm](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_bls12_g1msm.png) + +**bls12_pairing**: Slope = 88.19 cycles/gas, R² = 1.0000 + +![bls12_pairing](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_bls12_pairing.png) + +**smod**: Slope = 80.97 cycles/gas, R² = 1.0000 + +![smod](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_smod.png) + +**keccak256**: Slope = 80.73 cycles/gas, R² = 1.0000 + +![keccak256](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_keccak256.png) + +**prevrandao**: Slope = 78.49 cycles/gas, R² = 1.0000 + +![prevrandao](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_prevrandao.png) + +**sar**: Slope = 78.36 cycles/gas, R² = 1.0000 + +![sar](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_sar.png) + +**bls12_g2msm**: Slope = 73.03 cycles/gas, R² = 1.0000 + +![bls12_g2msm](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_bls12_g2msm.png) + +**call**: Slope = 70.64 cycles/gas, R² = 1.0000 + +![call](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_call.png) + +**callcode**: Slope = 70.06 cycles/gas, R² = 1.0000 + +![callcode](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_callcode.png) + +**staticcall**: Slope = 69.81 cycles/gas, R² = 1.0000 + +![staticcall](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_staticcall.png) + +**bn128_add**: Slope = 67.29 cycles/gas, R² = 1.0000 + +![bn128_add](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_bn128_add.png) + +**mstore**: Slope = 62.67 cycles/gas, R² = 1.0000 + +![mstore](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_mstore.png) + +**mul**: Slope = 60.57 cycles/gas, R² = 1.0000 + +![mul](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_mul.png) + +**delegatecall**: Slope = 59.11 cycles/gas, R² = 1.0000 + +![delegatecall](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_delegatecall.png) + +**address**: Slope = 57.99 cycles/gas, R² = 1.0000 + +![address](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_address.png) + +**origin**: Slope = 57.98 cycles/gas, R² = 1.0000 + +![origin](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_origin.png) + +**coinbase**: Slope = 57.98 cycles/gas, R² = 1.0000 + +![coinbase](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_coinbase.png) + +**caller**: Slope = 57.98 cycles/gas, R² = 1.0000 + +![caller](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_caller.png) + +**mload**: Slope = 56.68 cycles/gas, R² = 1.0000 + +![mload](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_mload.png) + +**calldataload**: Slope = 56.34 cycles/gas, R² = 1.0000 + +![calldataload](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_calldataload.png) + +**bls12_map_fp_to_g1**: Slope = 55.78 cycles/gas, R² = 1.0000 + +![bls12_map_fp_to_g1](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_bls12_map_fp_to_g1.png) + +**signextend**: Slope = 55.40 cycles/gas, R² = 1.0000 + +![signextend](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_signextend.png) + +**swap16**: Slope = 53.37 cycles/gas, R² = 1.0000 + +![swap16](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_swap16.png) + +**swap1**: Slope = 53.35 cycles/gas, R² = 1.0000 + +![swap1](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_swap1.png) + +**swap8**: Slope = 53.34 cycles/gas, R² = 1.0000 + +![swap8](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_swap8.png) + +**bls12_g2add**: Slope = 52.96 cycles/gas, R² = 1.0000 + +![bls12_g2add](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_bls12_g2add.png) + +**shr**: Slope = 51.35 cycles/gas, R² = 1.0000 + +![shr](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_shr.png) + +**shl**: Slope = 51.02 cycles/gas, R² = 1.0000 + +![shl](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_shl.png) + +**push32**: Slope = 47.79 cycles/gas, R² = 1.0000 + +![push32](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_push32.png) + +**blobbasefee**: Slope = 42.48 cycles/gas, R² = 1.0000 + +![blobbasefee](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_blobbasefee.png) + +**gasprice**: Slope = 40.48 cycles/gas, R² = 1.0000 + +![gasprice](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_gasprice.png) + +**bls12_g1add**: Slope = 40.44 cycles/gas, R² = 1.0000 + +![bls12_g1add](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_bls12_g1add.png) + +**bls12_map_fp2_to_g2**: Slope = 40.15 cycles/gas, R² = 1.0000 + +![bls12_map_fp2_to_g2](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_bls12_map_fp2_to_g2.png) + +**callvalue**: Slope = 38.99 cycles/gas, R² = 1.0000 + +![callvalue](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_callvalue.png) + +**sgt**: Slope = 37.97 cycles/gas, R² = 1.0000 + +![sgt](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_sgt.png) + +**slt**: Slope = 37.96 cycles/gas, R² = 1.0000 + +![slt](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_slt.png) + +**sub**: Slope = 37.30 cycles/gas, R² = 1.0000 + +![sub](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_sub.png) + +**sstore**: Slope = 36.08 cycles/gas, R² = 1.0000 + +![sstore](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_sstore.png) + +**calldatacopy**: Slope = 35.67 cycles/gas, R² = 1.0000 + +![calldatacopy](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_calldatacopy.png) + +**codecopy**: Slope = 35.67 cycles/gas, R² = 1.0000 + +![codecopy](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_codecopy.png) + +**add**: Slope = 33.62 cycles/gas, R² = 1.0000 + +![add](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_add.png) + +**timestamp**: Slope = 32.48 cycles/gas, R² = 1.0000 + +![timestamp](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_timestamp.png) + +**number**: Slope = 32.48 cycles/gas, R² = 1.0000 + +![number](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_number.png) + +**calldatasize**: Slope = 31.99 cycles/gas, R² = 1.0000 + +![calldatasize](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_calldatasize.png) + +**pc**: Slope = 31.98 cycles/gas, R² = 1.0000 + +![pc](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_pc.png) + +**basefee**: Slope = 31.48 cycles/gas, R² = 1.0000 + +![basefee](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_basefee.png) + +**chainid**: Slope = 31.48 cycles/gas, R² = 1.0000 + +![chainid](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_chainid.png) + +**codesize**: Slope = 30.48 cycles/gas, R² = 1.0000 + +![codesize](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_codesize.png) + +**msize**: Slope = 30.01 cycles/gas, R² = 1.0000 + +![msize](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_msize.png) + +**gas**: Slope = 29.98 cycles/gas, R² = 1.0000 + +![gas](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_gas.png) + +**gaslimit**: Slope = 29.98 cycles/gas, R² = 1.0000 + +![gaslimit](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_gaslimit.png) + +**returndatasize**: Slope = 29.98 cycles/gas, R² = 1.0000 + +![returndatasize](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_returndatasize.png) + +**push0**: Slope = 28.48 cycles/gas, R² = 1.0000 + +![push0](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_push0.png) + +**push16**: Slope = 28.37 cycles/gas, R² = 1.0000 + +![push16](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_push16.png) + +**byte**: Slope = 27.36 cycles/gas, R² = 1.0000 + +![byte](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_byte.png) + +**gt**: Slope = 27.30 cycles/gas, R² = 1.0000 + +![gt](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_gt.png) + +**lt**: Slope = 27.28 cycles/gas, R² = 1.0000 + +![lt](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_lt.png) + +**blobhash**: Slope = 27.00 cycles/gas, R² = 1.0000 + +![blobhash](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_blobhash.png) + +**returndatacopy**: Slope = 26.45 cycles/gas, R² = 1.0000 + +![returndatacopy](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_returndatacopy.png) + +**mstore8**: Slope = 26.00 cycles/gas, R² = 1.0000 + +![mstore8](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_mstore8.png) + +**jumpdest**: Slope = 25.84 cycles/gas, R² = 1.0000 + +![jumpdest](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_jumpdest.png) + +**or**: Slope = 23.96 cycles/gas, R² = 1.0000 + +![or](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_or.png) + +**and**: Slope = 23.96 cycles/gas, R² = 1.0000 + +![and](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_and.png) + +**xor**: Slope = 23.95 cycles/gas, R² = 1.0000 + +![xor](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_xor.png) + +**extcodehash**: Slope = 22.70 cycles/gas, R² = 1.0000 + +![extcodehash](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_extcodehash.png) + +**iszero**: Slope = 21.65 cycles/gas, R² = 1.0000 + +![iszero](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_iszero.png) + +**not**: Slope = 18.32 cycles/gas, R² = 1.0000 + +![not](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_not.png) + +**extcodesize**: Slope = 17.07 cycles/gas, R² = 1.0000 + +![extcodesize](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_extcodesize.png) + +**balance**: Slope = 17.01 cycles/gas, R² = 1.0000 + +![balance](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_balance.png) + +**dup16**: Slope = 17.00 cycles/gas, R² = 1.0000 + +![dup16](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_dup16.png) + +**dup1**: Slope = 16.98 cycles/gas, R² = 1.0000 + +![dup1](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_dup1.png) + +**dup8**: Slope = 16.98 cycles/gas, R² = 1.0000 + +![dup8](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_dup8.png) + +**tstore**: Slope = 16.93 cycles/gas, R² = 1.0000 + +![tstore](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_tstore.png) + +**extcodecopy**: Slope = 16.06 cycles/gas, R² = 1.0000 + +![extcodecopy](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_extcodecopy.png) + +**sload**: Slope = 15.53 cycles/gas, R² = 1.0000 + +![sload](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_sload.png) + +**push1**: Slope = 15.34 cycles/gas, R² = 1.0000 + +![push1](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_push1.png) + +**pop**: Slope = 15.02 cycles/gas, R² = 1.0000 + +![pop](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_pop.png) + +**mcopy**: Slope = 14.92 cycles/gas, R² = 1.0000 + +![mcopy](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_mcopy.png) + +**jumpi**: Slope = 12.30 cycles/gas, R² = 1.0000 + +![jumpi](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_jumpi.png) + +**ripemd160**: Slope = 9.38 cycles/gas, R² = 1.0000 + +![ripemd160](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_ripemd160.png) + +**jump**: Slope = 7.88 cycles/gas, R² = 1.0000 + +![jump](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_jump.png) + +**log0**: Slope = 7.77 cycles/gas, R² = 1.0000 + +![log0](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_log0.png) + +**log1**: Slope = 6.76 cycles/gas, R² = 1.0000 + +![log1](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_log1.png) + +**log4**: Slope = 5.25 cycles/gas, R² = 1.0000 + +![log4](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_log4.png) + +**log3**: Slope = 4.98 cycles/gas, R² = 1.0000 + +![log3](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_log3.png) + +**log2**: Slope = 4.67 cycles/gas, R² = 0.9999 + +![log2](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_log2.png) + +**sha256**: Slope = 3.41 cycles/gas, R² = 1.0000 + +![sha256](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_sha256.png) + +**tload**: Slope = 2.43 cycles/gas, R² = 1.0000 + +![tload](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_tload.png) + +**identity**: Slope = 1.70 cycles/gas, R² = 0.9998 + +![identity](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_identity.png) + +**create2**: Slope = 1.37 cycles/gas, R² = 0.9997 + +![create2](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_create2.png) + +**create**: Slope = 1.29 cycles/gas, R² = 0.9997 + +![create](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/gas_zkcycles_create.png) + +### risc0 ZK Cycles vs Proving Time + +**identity**: Slope = 1.10µs/cycle, R² = 0.9206 + +![identity](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_identity.png) + +**keccak256**: Slope = 1.05µs/cycle, R² = 0.9980 + +![keccak256](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_keccak256.png) + +**bls12_g1add**: Slope = 0.62µs/cycle, R² = 0.9522 + +![bls12_g1add](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_bls12_g1add.png) + +**bls12_map_fp_to_g1**: Slope = 0.56µs/cycle, R² = 0.9773 + +![bls12_map_fp_to_g1](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_bls12_map_fp_to_g1.png) + +**bls12_map_fp2_to_g2**: Slope = 0.48µs/cycle, R² = 0.9404 + +![bls12_map_fp2_to_g2](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_bls12_map_fp2_to_g2.png) + +**bn128_add**: Slope = 0.42µs/cycle, R² = 0.7509 + +![bn128_add](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_bn128_add.png) + +**bls12_g1msm**: Slope = 0.42µs/cycle, R² = 0.9893 + +![bls12_g1msm](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_bls12_g1msm.png) + +**ecrecover**: Slope = 0.42µs/cycle, R² = 0.9921 + +![ecrecover](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_ecrecover.png) + +**create2**: Slope = 0.41µs/cycle, R² = 0.9995 + +![create2](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_create2.png) + +**bls12_pairing**: Slope = 0.41µs/cycle, R² = 0.9979 + +![bls12_pairing](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_bls12_pairing.png) + +**shl**: Slope = 0.40µs/cycle, R² = 0.9992 + +![shl](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_shl.png) + +**bls12_g2msm**: Slope = 0.40µs/cycle, R² = 0.9960 + +![bls12_g2msm](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_bls12_g2msm.png) + +**push16**: Slope = 0.39µs/cycle, R² = 0.9999 + +![push16](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_push16.png) + +**lt**: Slope = 0.39µs/cycle, R² = 0.9484 + +![lt](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_lt.png) + +**point_evaluation**: Slope = 0.38µs/cycle, R² = 0.9945 + +![point_evaluation](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_point_evaluation.png) + +**bls12_g2add**: Slope = 0.38µs/cycle, R² = 0.9636 + +![bls12_g2add](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_bls12_g2add.png) + +**create**: Slope = 0.38µs/cycle, R² = 0.9994 + +![create](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_create.png) + +**gas**: Slope = 0.38µs/cycle, R² = 0.9961 + +![gas](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_gas.png) + +**or**: Slope = 0.38µs/cycle, R² = 0.9726 + +![or](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_or.png) + +**bn128_mul**: Slope = 0.38µs/cycle, R² = 0.9997 + +![bn128_mul](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_bn128_mul.png) + +**address**: Slope = 0.37µs/cycle, R² = 0.9969 + +![address](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_address.png) + +**signextend**: Slope = 0.37µs/cycle, R² = 0.9997 + +![signextend](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_signextend.png) + +**origin**: Slope = 0.37µs/cycle, R² = 0.9996 + +![origin](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_origin.png) + +**dup16**: Slope = 0.37µs/cycle, R² = 0.9768 + +![dup16](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_dup16.png) + +**caller**: Slope = 0.37µs/cycle, R² = 0.9997 + +![caller](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_caller.png) + +**jumpi**: Slope = 0.37µs/cycle, R² = 0.9978 + +![jumpi](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_jumpi.png) + +**sar**: Slope = 0.37µs/cycle, R² = 0.9998 + +![sar](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_sar.png) + +**shr**: Slope = 0.37µs/cycle, R² = 0.9983 + +![shr](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_shr.png) + +**mod**: Slope = 0.37µs/cycle, R² = 1.0000 + +![mod](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_mod.png) + +**pc**: Slope = 0.37µs/cycle, R² = 1.0000 + +![pc](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_pc.png) + +**slt**: Slope = 0.36µs/cycle, R² = 0.9963 + +![slt](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_slt.png) + +**pop**: Slope = 0.36µs/cycle, R² = 0.9865 + +![pop](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_pop.png) + +**push0**: Slope = 0.36µs/cycle, R² = 0.9990 + +![push0](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_push0.png) + +**addmod**: Slope = 0.36µs/cycle, R² = 0.9999 + +![addmod](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_addmod.png) + +**bn128_pairing**: Slope = 0.36µs/cycle, R² = 0.9968 + +![bn128_pairing](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_bn128_pairing.png) + +**sub**: Slope = 0.36µs/cycle, R² = 0.9926 + +![sub](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_sub.png) + +**sdiv**: Slope = 0.36µs/cycle, R² = 1.0000 + +![sdiv](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_sdiv.png) + +**mulmod**: Slope = 0.36µs/cycle, R² = 1.0000 + +![mulmod](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_mulmod.png) + +**xor**: Slope = 0.36µs/cycle, R² = 0.9995 + +![xor](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_xor.png) + +**sgt**: Slope = 0.36µs/cycle, R² = 0.9896 + +![sgt](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_sgt.png) + +**div**: Slope = 0.36µs/cycle, R² = 0.9999 + +![div](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_div.png) + +**coinbase**: Slope = 0.36µs/cycle, R² = 0.9984 + +![coinbase](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_coinbase.png) + +**smod**: Slope = 0.36µs/cycle, R² = 0.9995 + +![smod](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_smod.png) + +**iszero**: Slope = 0.36µs/cycle, R² = 0.9940 + +![iszero](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_iszero.png) + +**basefee**: Slope = 0.36µs/cycle, R² = 0.9988 + +![basefee](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_basefee.png) + +**codecopy**: Slope = 0.36µs/cycle, R² = 0.9998 + +![codecopy](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_codecopy.png) + +**tload**: Slope = 0.36µs/cycle, R² = 0.9999 + +![tload](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_tload.png) + +**calldataload**: Slope = 0.36µs/cycle, R² = 0.9970 + +![calldataload](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_calldataload.png) + +**gt**: Slope = 0.36µs/cycle, R² = 0.9984 + +![gt](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_gt.png) + +**delegatecall**: Slope = 0.35µs/cycle, R² = 0.9998 + +![delegatecall](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_delegatecall.png) + +**blobhash**: Slope = 0.35µs/cycle, R² = 0.9980 + +![blobhash](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_blobhash.png) + +**mstore**: Slope = 0.35µs/cycle, R² = 0.9961 + +![mstore](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_mstore.png) + +**codesize**: Slope = 0.35µs/cycle, R² = 0.9992 + +![codesize](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_codesize.png) + +**gaslimit**: Slope = 0.35µs/cycle, R² = 0.9954 + +![gaslimit](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_gaslimit.png) + +**msize**: Slope = 0.35µs/cycle, R² = 0.9998 + +![msize](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_msize.png) + +**prevrandao**: Slope = 0.35µs/cycle, R² = 0.9998 + +![prevrandao](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_prevrandao.png) + +**exp**: Slope = 0.35µs/cycle, R² = 0.9997 + +![exp](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_exp.png) + +**dup8**: Slope = 0.35µs/cycle, R² = 0.9814 + +![dup8](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_dup8.png) + +**sstore**: Slope = 0.35µs/cycle, R² = 0.9995 + +![sstore](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_sstore.png) + +**selfbalance**: Slope = 0.35µs/cycle, R² = 0.9999 + +![selfbalance](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_selfbalance.png) + +**mul**: Slope = 0.35µs/cycle, R² = 0.9970 + +![mul](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_mul.png) + +**call**: Slope = 0.35µs/cycle, R² = 1.0000 + +![call](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_call.png) + +**mload**: Slope = 0.35µs/cycle, R² = 0.9983 + +![mload](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_mload.png) + +**not**: Slope = 0.35µs/cycle, R² = 0.9945 + +![not](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_not.png) + +**gasprice**: Slope = 0.35µs/cycle, R² = 0.9986 + +![gasprice](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_gasprice.png) + +**callcode**: Slope = 0.35µs/cycle, R² = 0.9998 + +![callcode](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_callcode.png) + +**returndatasize**: Slope = 0.35µs/cycle, R² = 0.9997 + +![returndatasize](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_returndatasize.png) + +**extcodesize**: Slope = 0.35µs/cycle, R² = 0.9996 + +![extcodesize](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_extcodesize.png) + +**timestamp**: Slope = 0.35µs/cycle, R² = 0.9988 + +![timestamp](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_timestamp.png) + +**modexp**: Slope = 0.35µs/cycle, R² = 0.9998 + +![modexp](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_modexp.png) + +**calldatacopy**: Slope = 0.35µs/cycle, R² = 0.9999 + +![calldatacopy](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_calldatacopy.png) + +**mcopy**: Slope = 0.35µs/cycle, R² = 0.9973 + +![mcopy](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_mcopy.png) + +**jump**: Slope = 0.35µs/cycle, R² = 0.9973 + +![jump](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_jump.png) + +**calldatasize**: Slope = 0.35µs/cycle, R² = 0.9972 + +![calldatasize](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_calldatasize.png) + +**balance**: Slope = 0.35µs/cycle, R² = 0.9999 + +![balance](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_balance.png) + +**sload**: Slope = 0.35µs/cycle, R² = 0.9999 + +![sload](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_sload.png) + +**mstore8**: Slope = 0.35µs/cycle, R² = 0.9980 + +![mstore8](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_mstore8.png) + +**dup1**: Slope = 0.35µs/cycle, R² = 0.9904 + +![dup1](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_dup1.png) + +**add**: Slope = 0.35µs/cycle, R² = 0.9990 + +![add](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_add.png) + +**blake2f**: Slope = 0.35µs/cycle, R² = 1.0000 + +![blake2f](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_blake2f.png) + +**push32**: Slope = 0.35µs/cycle, R² = 0.9954 + +![push32](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_push32.png) + +**number**: Slope = 0.35µs/cycle, R² = 0.9999 + +![number](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_number.png) + +**extcodecopy**: Slope = 0.34µs/cycle, R² = 0.9999 + +![extcodecopy](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_extcodecopy.png) + +**eq**: Slope = 0.34µs/cycle, R² = 0.9993 + +![eq](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_eq.png) + +**blobbasefee**: Slope = 0.34µs/cycle, R² = 0.9997 + +![blobbasefee](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_blobbasefee.png) + +**tstore**: Slope = 0.34µs/cycle, R² = 1.0000 + +![tstore](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_tstore.png) + +**staticcall**: Slope = 0.34µs/cycle, R² = 0.9999 + +![staticcall](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_staticcall.png) + +**callvalue**: Slope = 0.34µs/cycle, R² = 0.9978 + +![callvalue](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_callvalue.png) + +**push1**: Slope = 0.34µs/cycle, R² = 0.9935 + +![push1](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_push1.png) + +**and**: Slope = 0.34µs/cycle, R² = 0.9964 + +![and](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_and.png) + +**chainid**: Slope = 0.34µs/cycle, R² = 0.9980 + +![chainid](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_chainid.png) + +**extcodehash**: Slope = 0.34µs/cycle, R² = 0.9998 + +![extcodehash](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_extcodehash.png) + +**swap16**: Slope = 0.34µs/cycle, R² = 0.9956 + +![swap16](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_swap16.png) + +**ripemd160**: Slope = 0.34µs/cycle, R² = 0.9982 + +![ripemd160](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_ripemd160.png) + +**jumpdest**: Slope = 0.33µs/cycle, R² = 0.9951 + +![jumpdest](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_jumpdest.png) + +**byte**: Slope = 0.32µs/cycle, R² = 0.9964 + +![byte](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_byte.png) + +**returndatacopy**: Slope = 0.32µs/cycle, R² = 0.9920 + +![returndatacopy](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_returndatacopy.png) + +**swap1**: Slope = 0.31µs/cycle, R² = 0.9913 + +![swap1](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_swap1.png) + +**swap8**: Slope = 0.29µs/cycle, R² = 0.9917 + +![swap8](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_swap8.png) + +**sha256**: Slope = 0.28µs/cycle, R² = 0.8015 + +![sha256](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_sha256.png) + +**log1**: Slope = 0.04µs/cycle, R² = 0.9956 + +![log1](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_log1.png) + +**log0**: Slope = 0.04µs/cycle, R² = 0.9815 + +![log0](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_log0.png) + +**log2**: Slope = 0.03µs/cycle, R² = 0.9988 + +![log2](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_log2.png) + +**log3**: Slope = 0.03µs/cycle, R² = 0.9882 + +![log3](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_log3.png) + +**log4**: Slope = 0.03µs/cycle, R² = 0.9982 + +![log4](/zkevm-benchmark-workload/marginal-gas-benchmark/risc0/plots/zkcycles_proving_log4.png) + +## Appendix: Per-Op-Count Regression + +### Gas ↔ Proving Time + +| Opcode | Time/Gas | R² | Std Error | +|--------|----------|-----|-----------| +| modexp | 1.36ms/gas | 0.9998 | 13.02µs | +| blake2f | 242.84µs/gas | 1.0000 | 1.58µs | +| mulmod | 151.85µs/gas | 1.0000 | 0.54µs | +| div | 110.29µs/gas | 0.9999 | 0.60µs | +| mod | 94.55µs/gas | 1.0000 | 0.31µs | +| sdiv | 92.84µs/gas | 1.0000 | 0.40µs | +| bn128_mul | 86.68µs/gas | 0.9997 | 1.04µs | +| point_evaluation | 85.54µs/gas | 0.9945 | 4.50µs | +| selfbalance | 84.67µs/gas | 0.9999 | 0.57µs | +| keccak256 | 84.62µs/gas | 0.9980 | 2.71µs | +| bn128_pairing | 81.72µs/gas | 0.9968 | 2.68µs | +| ecrecover | 81.32µs/gas | 0.9921 | 5.13µs | +| addmod | 71.00µs/gas | 0.9999 | 0.49µs | +| bls12_g1msm | 37.74µs/gas | 0.9893 | 2.78µs | +| bls12_pairing | 36.15µs/gas | 0.9979 | 1.17µs | +| eq | 34.89µs/gas | 0.9993 | 0.65µs | +| exp | 32.61µs/gas | 0.9997 | 0.40µs | +| bls12_map_fp_to_g1 | 31.51µs/gas | 0.9772 | 3.40µs | +| smod | 28.99µs/gas | 0.9996 | 0.43µs | +| bls12_g2msm | 28.85µs/gas | 0.9960 | 1.30µs | +| sar | 28.77µs/gas | 0.9998 | 0.32µs | +| bn128_add | 28.52µs/gas | 0.7509 | 11.61µs | +| prevrandao | 27.62µs/gas | 0.9998 | 0.27µs | +| bls12_g1add | 25.16µs/gas | 0.9518 | 4.00µs | +| call | 24.72µs/gas | 1.0000 | 0.11µs | +| callcode | 24.46µs/gas | 0.9999 | 0.17µs | +| staticcall | 23.98µs/gas | 0.9999 | 0.16µs | +| mstore | 22.14µs/gas | 0.9961 | 0.98µs | +| address | 21.50µs/gas | 0.9969 | 0.85µs | +| origin | 21.41µs/gas | 0.9995 | 0.32µs | +| caller | 21.35µs/gas | 0.9998 | 0.24µs | +| mul | 21.21µs/gas | 0.9970 | 0.83µs | +| delegatecall | 20.95µs/gas | 0.9998 | 0.23µs | +| coinbase | 20.80µs/gas | 0.9983 | 0.60µs | +| signextend | 20.53µs/gas | 0.9997 | 0.23µs | +| bls12_g2add | 20.28µs/gas | 0.9636 | 2.79µs | +| shl | 20.17µs/gas | 0.9991 | 0.43µs | +| calldataload | 20.03µs/gas | 0.9970 | 0.78µs | +| mload | 19.82µs/gas | 0.9983 | 0.58µs | +| bls12_map_fp2_to_g2 | 19.25µs/gas | 0.9404 | 3.43µs | +| shr | 18.85µs/gas | 0.9984 | 0.53µs | +| swap16 | 17.95µs/gas | 0.9957 | 0.84µs | +| push32 | 16.51µs/gas | 0.9954 | 0.56µs | +| swap1 | 16.31µs/gas | 0.9913 | 0.76µs | +| swap8 | 15.32µs/gas | 0.9917 | 0.99µs | +| blobbasefee | 14.61µs/gas | 0.9997 | 0.16µs | +| gasprice | 14.14µs/gas | 0.9986 | 0.37µs | +| slt | 13.84µs/gas | 0.9963 | 0.42µs | +| sgt | 13.68µs/gas | 0.9896 | 0.70µs | +| sub | 13.48µs/gas | 0.9927 | 0.58µs | +| callvalue | 13.39µs/gas | 0.9978 | 0.36µs | +| codecopy | 12.70µs/gas | 0.9998 | 0.13µs | +| sstore | 12.64µs/gas | 0.9994 | 0.22µs | +| calldatacopy | 12.43µs/gas | 0.9999 | 0.08µs | +| pc | 11.71µs/gas | 1.0000 | 0.04µs | +| add | 11.65µs/gas | 0.9991 | 0.25µs | +| gas | 11.37µs/gas | 0.9961 | 0.50µs | +| timestamp | 11.32µs/gas | 0.9987 | 0.29µs | +| basefee | 11.25µs/gas | 0.9987 | 0.28µs | +| number | 11.22µs/gas | 0.9999 | 0.08µs | +| calldatasize | 11.12µs/gas | 0.9972 | 0.29µs | +| push16 | 11.11µs/gas | 0.9999 | 0.09µs | +| codesize | 10.76µs/gas | 0.9992 | 0.22µs | +| chainid | 10.65µs/gas | 0.9979 | 0.35µs | +| lt | 10.60µs/gas | 0.9483 | 1.75µs | +| gaslimit | 10.58µs/gas | 0.9953 | 0.51µs | +| msize | 10.57µs/gas | 0.9998 | 0.08µs | +| returndatasize | 10.45µs/gas | 0.9996 | 0.14µs | +| push0 | 10.31µs/gas | 0.9990 | 0.23µs | +| gt | 9.70µs/gas | 0.9983 | 0.28µs | +| blobhash | 9.55µs/gas | 0.9981 | 0.30µs | +| or | 9.07µs/gas | 0.9728 | 0.76µs | +| mstore8 | 9.02µs/gas | 0.9980 | 0.29µs | +| byte | 8.86µs/gas | 0.9964 | 0.37µs | +| xor | 8.63µs/gas | 0.9994 | 0.15µs | +| jumpdest | 8.55µs/gas | 0.9944 | 0.45µs | +| returndatacopy | 8.51µs/gas | 0.9920 | 0.54µs | +| and | 8.11µs/gas | 0.9966 | 0.34µs | +| iszero | 7.74µs/gas | 0.9938 | 0.31µs | +| extcodehash | 7.64µs/gas | 0.9998 | 0.07µs | +| not | 6.40µs/gas | 0.9948 | 0.23µs | +| dup16 | 6.27µs/gas | 0.9768 | 0.48µs | +| dup8 | 5.95µs/gas | 0.9816 | 0.41µs | +| extcodesize | 5.95µs/gas | 0.9996 | 0.09µs | +| balance | 5.91µs/gas | 0.9999 | 0.04µs | +| dup1 | 5.89µs/gas | 0.9909 | 0.28µs | +| tstore | 5.82µs/gas | 1.0000 | 0.01µs | +| extcodecopy | 5.54µs/gas | 0.9999 | 0.04µs | +| pop | 5.47µs/gas | 0.9867 | 0.32µs | +| sload | 5.39µs/gas | 0.9999 | 0.04µs | +| mcopy | 5.20µs/gas | 0.9974 | 0.19µs | +| push1 | 5.19µs/gas | 0.9935 | 0.21µs | +| jumpi | 4.52µs/gas | 0.9978 | 0.15µs | +| ripemd160 | 3.15µs/gas | 0.9982 | 0.09µs | +| jump | 2.74µs/gas | 0.9976 | 0.07µs | +| identity | 1.87µs/gas | 0.9274 | 0.37µs | +| sha256 | 0.94µs/gas | 0.8017 | 0.33µs | +| tload | 0.86µs/gas | 0.9999 | 0.01µs | +| create2 | 0.56µs/gas | 0.9999 | 0.00µs | +| create | 0.49µs/gas | 0.9998 | 0.01µs | +| log0 | 0.30µs/gas | 0.9807 | 0.02µs | +| log1 | 0.27µs/gas | 0.9959 | 0.01µs | +| log3 | 0.16µs/gas | 0.9874 | 0.01µs | +| log2 | 0.15µs/gas | 0.9985 | 0.00µs | +| log4 | 0.15µs/gas | 0.9983 | 0.00µs | + +### Gas ↔ ZK Cycles + +| Opcode | Cycles/Gas | R² | Std Error | +|--------|------------|-----|-----------| +| modexp | 3.91K | 1.0000 | 0.05548 | +| blake2f | 702.03 | 1.0000 | 0.003845 | +| mulmod | 420.63 | 1.0000 | 0.01475 | +| div | 306.78 | 1.0000 | 0.0175 | +| mod | 257.97 | 1.0000 | 0.02337 | +| sdiv | 257.18 | 1.0000 | 0.01745 | +| selfbalance | 241.80 | 1.0000 | 0.005111 | +| bn128_mul | 229.21 | 1.0000 | 0.008463 | +| bn128_pairing | 225.96 | 1.0000 | 0.002614 | +| point_evaluation | 223.09 | 1.0000 | 0.008398 | +| addmod | 196.25 | 1.0000 | 0.0007769 | +| ecrecover | 193.83 | 1.0000 | 0.004032 | +| eq | 101.29 | 1.0000 | 0.02858 | +| exp | 92.99 | 1.0000 | 0.001999 | +| bls12_g1msm | 89.91 | 1.0000 | 0.00232 | +| bls12_pairing | 88.19 | 1.0000 | 0.002931 | +| smod | 80.97 | 1.0000 | 0.02077 | +| keccak256 | 80.73 | 1.0000 | 0.0001587 | +| prevrandao | 78.49 | 1.0000 | 0.01303 | +| sar | 78.36 | 1.0000 | 0.0485 | +| bls12_g2msm | 73.03 | 1.0000 | 0.002221 | +| call | 70.64 | 1.0000 | 0.146 | +| callcode | 70.06 | 1.0000 | 0.1453 | +| staticcall | 69.81 | 1.0000 | 0.1154 | +| bn128_add | 67.29 | 1.0000 | 0.06984 | +| mstore | 62.67 | 1.0000 | 0.003245 | +| mul | 60.57 | 1.0000 | 0.01852 | +| delegatecall | 59.11 | 1.0000 | 0.1172 | +| address | 57.99 | 1.0000 | 0.01283 | +| origin | 57.98 | 1.0000 | 0.01297 | +| coinbase | 57.98 | 1.0000 | 0.01346 | +| caller | 57.98 | 1.0000 | 0.01282 | +| mload | 56.68 | 1.0000 | 0.0158 | +| calldataload | 56.34 | 1.0000 | 0.0009552 | +| bls12_map_fp_to_g1 | 55.78 | 1.0000 | 0.00736 | +| signextend | 55.40 | 1.0000 | 6.051e-05 | +| swap16 | 53.37 | 1.0000 | 0.01695 | +| swap1 | 53.35 | 1.0000 | 0.01812 | +| swap8 | 53.34 | 1.0000 | 0.0003698 | +| bls12_g2add | 52.96 | 1.0000 | 0.1624 | +| shr | 51.35 | 1.0000 | 0.05555 | +| shl | 51.02 | 1.0000 | 0.05619 | +| push32 | 47.79 | 1.0000 | 0.001532 | +| blobbasefee | 42.48 | 1.0000 | 0.01323 | +| gasprice | 40.48 | 1.0000 | 0.01313 | +| bls12_g1add | 40.44 | 1.0000 | 0.02711 | +| bls12_map_fp2_to_g2 | 40.15 | 1.0000 | 0.003976 | +| callvalue | 38.99 | 1.0000 | 0.01211 | +| sgt | 37.97 | 1.0000 | 0.02033 | +| slt | 37.96 | 1.0000 | 0.02345 | +| sub | 37.30 | 1.0000 | 0.02252 | +| sstore | 36.08 | 1.0000 | 0.06192 | +| calldatacopy | 35.67 | 1.0000 | 8.247e-05 | +| codecopy | 35.67 | 1.0000 | 5.494e-05 | +| add | 33.62 | 1.0000 | 0.02848 | +| timestamp | 32.48 | 1.0000 | 0.01292 | +| number | 32.48 | 1.0000 | 0.01328 | +| calldatasize | 31.99 | 1.0000 | 0.01043 | +| pc | 31.98 | 1.0000 | 0.01301 | +| basefee | 31.48 | 1.0000 | 0.01303 | +| chainid | 31.48 | 1.0000 | 0.01305 | +| codesize | 30.48 | 1.0000 | 0.01265 | +| msize | 30.01 | 1.0000 | 0.000413 | +| gas | 29.98 | 1.0000 | 0.01324 | +| gaslimit | 29.98 | 1.0000 | 0.01335 | +| returndatasize | 29.98 | 1.0000 | 0.01273 | +| push0 | 28.48 | 1.0000 | 0.01289 | +| push16 | 28.37 | 1.0000 | 0.01699 | +| byte | 27.36 | 1.0000 | 0.05331 | +| gt | 27.30 | 1.0000 | 0.02397 | +| lt | 27.28 | 1.0000 | 0.02589 | +| blobhash | 27.00 | 1.0000 | 0.0002251 | +| returndatacopy | 26.45 | 1.0000 | 0.0003056 | +| mstore8 | 26.00 | 1.0000 | 0.004088 | +| jumpdest | 25.84 | 1.0000 | 0.09462 | +| or | 23.96 | 1.0000 | 0.02271 | +| and | 23.96 | 1.0000 | 0.02841 | +| xor | 23.95 | 1.0000 | 0.02856 | +| extcodehash | 22.70 | 1.0000 | 5.128e-05 | +| iszero | 21.65 | 1.0000 | 0.02629 | +| not | 18.32 | 1.0000 | 0.02607 | +| extcodesize | 17.07 | 1.0000 | 5.257e-05 | +| balance | 17.01 | 1.0000 | 4.584e-06 | +| dup16 | 17.00 | 1.0000 | 0.0004251 | +| dup1 | 16.98 | 1.0000 | 0.02709 | +| dup8 | 16.98 | 1.0000 | 0.0136 | +| tstore | 16.93 | 1.0000 | 0.003899 | +| extcodecopy | 16.06 | 1.0000 | 0.01009 | +| sload | 15.53 | 1.0000 | 0.002623 | +| push1 | 15.34 | 1.0000 | 0.01127 | +| pop | 15.02 | 1.0000 | 0.01038 | +| mcopy | 14.92 | 1.0000 | 0.02028 | +| jumpi | 12.30 | 1.0000 | 0.0002197 | +| ripemd160 | 9.38 | 1.0000 | 0.002035 | +| jump | 7.88 | 1.0000 | 0.01299 | +| log0 | 7.77 | 1.0000 | 0.02176 | +| log1 | 6.76 | 1.0000 | 0.01361 | +| log4 | 5.25 | 1.0000 | 0.01303 | +| log3 | 4.98 | 1.0000 | 0.02489 | +| log2 | 4.67 | 0.9999 | 0.02364 | +| sha256 | 3.41 | 1.0000 | 0.001651 | +| tload | 2.43 | 1.0000 | 0.0008525 | +| identity | 1.70 | 0.9998 | 0.01748 | +| create2 | 1.37 | 0.9997 | 0.0153 | +| create | 1.29 | 0.9997 | 0.01596 | + +### ZK Cycles ↔ Proving Time + +| Opcode | Time/Cycle | R² | Std Error | +|--------|------------|-----|-----------| +| identity | 1.10µs/cycle | 0.9206 | 0.23µs | +| keccak256 | 1.05µs/cycle | 0.9980 | 0.03µs | +| bls12_g1add | 0.62µs/cycle | 0.9522 | 0.10µs | +| bls12_map_fp_to_g1 | 0.56µs/cycle | 0.9773 | 0.06µs | +| bls12_map_fp2_to_g2 | 0.48µs/cycle | 0.9404 | 0.09µs | +| bn128_add | 0.42µs/cycle | 0.7509 | 0.17µs | +| bls12_g1msm | 0.42µs/cycle | 0.9893 | 0.03µs | +| ecrecover | 0.42µs/cycle | 0.9921 | 0.03µs | +| create2 | 0.41µs/cycle | 0.9995 | 0.01µs | +| bls12_pairing | 0.41µs/cycle | 0.9979 | 0.01µs | +| shl | 0.40µs/cycle | 0.9992 | 0.01µs | +| bls12_g2msm | 0.40µs/cycle | 0.9960 | 0.02µs | +| push16 | 0.39µs/cycle | 0.9999 | 0.00µs | +| lt | 0.39µs/cycle | 0.9484 | 0.06µs | +| point_evaluation | 0.38µs/cycle | 0.9945 | 0.02µs | +| bls12_g2add | 0.38µs/cycle | 0.9636 | 0.05µs | +| create | 0.38µs/cycle | 0.9994 | 0.01µs | +| gas | 0.38µs/cycle | 0.9961 | 0.02µs | +| or | 0.38µs/cycle | 0.9726 | 0.03µs | +| bn128_mul | 0.38µs/cycle | 0.9997 | 0.00µs | +| address | 0.37µs/cycle | 0.9969 | 0.01µs | +| signextend | 0.37µs/cycle | 0.9997 | 0.00µs | +| origin | 0.37µs/cycle | 0.9996 | 0.01µs | +| dup16 | 0.37µs/cycle | 0.9768 | 0.03µs | +| caller | 0.37µs/cycle | 0.9997 | 0.00µs | +| jumpi | 0.37µs/cycle | 0.9978 | 0.01µs | +| sar | 0.37µs/cycle | 0.9998 | 0.00µs | +| shr | 0.37µs/cycle | 0.9983 | 0.01µs | +| mod | 0.37µs/cycle | 1.0000 | 0.00µs | +| pc | 0.37µs/cycle | 1.0000 | 0.00µs | +| slt | 0.36µs/cycle | 0.9963 | 0.01µs | +| pop | 0.36µs/cycle | 0.9865 | 0.02µs | +| push0 | 0.36µs/cycle | 0.9990 | 0.01µs | +| addmod | 0.36µs/cycle | 0.9999 | 0.00µs | +| bn128_pairing | 0.36µs/cycle | 0.9968 | 0.01µs | +| sub | 0.36µs/cycle | 0.9926 | 0.02µs | +| sdiv | 0.36µs/cycle | 1.0000 | 0.00µs | +| mulmod | 0.36µs/cycle | 1.0000 | 0.00µs | +| xor | 0.36µs/cycle | 0.9995 | 0.01µs | +| sgt | 0.36µs/cycle | 0.9896 | 0.02µs | +| div | 0.36µs/cycle | 0.9999 | 0.00µs | +| coinbase | 0.36µs/cycle | 0.9984 | 0.01µs | +| smod | 0.36µs/cycle | 0.9995 | 0.01µs | +| iszero | 0.36µs/cycle | 0.9940 | 0.01µs | +| basefee | 0.36µs/cycle | 0.9988 | 0.01µs | +| codecopy | 0.36µs/cycle | 0.9998 | 0.00µs | +| tload | 0.36µs/cycle | 0.9999 | 0.00µs | +| calldataload | 0.36µs/cycle | 0.9970 | 0.01µs | +| gt | 0.36µs/cycle | 0.9984 | 0.01µs | +| delegatecall | 0.35µs/cycle | 0.9998 | 0.00µs | +| blobhash | 0.35µs/cycle | 0.9980 | 0.01µs | +| mstore | 0.35µs/cycle | 0.9961 | 0.02µs | +| codesize | 0.35µs/cycle | 0.9992 | 0.01µs | +| gaslimit | 0.35µs/cycle | 0.9954 | 0.02µs | +| msize | 0.35µs/cycle | 0.9998 | 0.00µs | +| prevrandao | 0.35µs/cycle | 0.9998 | 0.00µs | +| exp | 0.35µs/cycle | 0.9997 | 0.00µs | +| dup8 | 0.35µs/cycle | 0.9814 | 0.02µs | +| sstore | 0.35µs/cycle | 0.9995 | 0.01µs | +| selfbalance | 0.35µs/cycle | 0.9999 | 0.00µs | +| mul | 0.35µs/cycle | 0.9970 | 0.01µs | +| call | 0.35µs/cycle | 1.0000 | 0.00µs | +| mload | 0.35µs/cycle | 0.9983 | 0.01µs | +| not | 0.35µs/cycle | 0.9945 | 0.01µs | +| gasprice | 0.35µs/cycle | 0.9986 | 0.01µs | +| callcode | 0.35µs/cycle | 0.9998 | 0.00µs | +| returndatasize | 0.35µs/cycle | 0.9997 | 0.00µs | +| extcodesize | 0.35µs/cycle | 0.9996 | 0.01µs | +| timestamp | 0.35µs/cycle | 0.9988 | 0.01µs | +| modexp | 0.35µs/cycle | 0.9998 | 0.00µs | +| calldatacopy | 0.35µs/cycle | 0.9999 | 0.00µs | +| mcopy | 0.35µs/cycle | 0.9973 | 0.01µs | +| jump | 0.35µs/cycle | 0.9973 | 0.01µs | +| calldatasize | 0.35µs/cycle | 0.9972 | 0.01µs | +| balance | 0.35µs/cycle | 0.9999 | 0.00µs | +| sload | 0.35µs/cycle | 0.9999 | 0.00µs | +| mstore8 | 0.35µs/cycle | 0.9980 | 0.01µs | +| dup1 | 0.35µs/cycle | 0.9904 | 0.02µs | +| add | 0.35µs/cycle | 0.9990 | 0.01µs | +| blake2f | 0.35µs/cycle | 1.0000 | 0.00µs | +| push32 | 0.35µs/cycle | 0.9954 | 0.01µs | +| number | 0.35µs/cycle | 0.9999 | 0.00µs | +| extcodecopy | 0.34µs/cycle | 0.9999 | 0.00µs | +| eq | 0.34µs/cycle | 0.9993 | 0.01µs | +| blobbasefee | 0.34µs/cycle | 0.9997 | 0.00µs | +| tstore | 0.34µs/cycle | 1.0000 | 0.00µs | +| staticcall | 0.34µs/cycle | 0.9999 | 0.00µs | +| callvalue | 0.34µs/cycle | 0.9978 | 0.01µs | +| push1 | 0.34µs/cycle | 0.9935 | 0.01µs | +| and | 0.34µs/cycle | 0.9964 | 0.01µs | +| chainid | 0.34µs/cycle | 0.9980 | 0.01µs | +| extcodehash | 0.34µs/cycle | 0.9998 | 0.00µs | +| swap16 | 0.34µs/cycle | 0.9956 | 0.02µs | +| ripemd160 | 0.34µs/cycle | 0.9982 | 0.01µs | +| jumpdest | 0.33µs/cycle | 0.9951 | 0.02µs | +| byte | 0.32µs/cycle | 0.9964 | 0.01µs | +| returndatacopy | 0.32µs/cycle | 0.9920 | 0.02µs | +| swap1 | 0.31µs/cycle | 0.9913 | 0.01µs | +| swap8 | 0.29µs/cycle | 0.9917 | 0.02µs | +| sha256 | 0.28µs/cycle | 0.8015 | 0.10µs | +| log1 | 0.04µs/cycle | 0.9956 | 0.00µs | +| log0 | 0.04µs/cycle | 0.9815 | 0.00µs | +| log2 | 0.03µs/cycle | 0.9988 | 0.00µs | +| log3 | 0.03µs/cycle | 0.9882 | 0.00µs | +| log4 | 0.03µs/cycle | 0.9982 | 0.00µs | + +### Op Count ↔ Gas Used (Marginal Property Check) + +*High R² (≥ 0.99) indicates gas scales linearly with op count, confirming the marginal property.* + +| Opcode | Gas/Op | Intercept | R² | Status | +|--------|--------|-----------|-----|--------| +| add | 3.00 | 9.48M | 1.0000 | ✅ Good | +| addmod | 8.00 | 2.80M | 1.0000 | ✅ Good | +| address | 2.00 | 3.86M | 1.0000 | ✅ Good | +| and | 3.00 | 6.34M | 1.0000 | ✅ Good | +| balance | 100.00 | 2.40M | 1.0000 | ✅ Good | +| basefee | 2.00 | 5.14M | 1.0000 | ✅ Good | +| blake2f | 65.54K | 49.27K | 1.0000 | ✅ Good | +| blobbasefee | 2.00 | 5.14M | 1.0000 | ✅ Good | +| blobhash | 3.00 | 9.50M | 1.0000 | ✅ Good | +| bls12_g1add | 375.00 | 140.85K | 1.0000 | ✅ Good | +| bls12_g1msm | 22.78K | 54.04K | 1.0000 | ✅ Good | +| bls12_g2add | 600.00 | 106.04K | 1.0000 | ✅ Good | +| bls12_g2msm | 45.00K | 55.64K | 1.0000 | ✅ Good | +| bls12_map_fp2_to_g2 | 23.80K | 50.64K | 1.0000 | ✅ Good | +| bls12_map_fp_to_g1 | 5.50K | 55.51K | 1.0000 | ✅ Good | +| bls12_pairing | 102.90K | 56.91K | 1.0000 | ✅ Good | +| bn128_add | 150.00 | 143.13K | 1.0000 | ✅ Good | +| bn128_mul | 6.00K | 55.85K | 1.0000 | ✅ Good | +| bn128_pairing | 113.00K | 52.88K | 1.0000 | ✅ Good | +| byte | 3.00 | 6.34M | 1.0000 | ✅ Good | +| calldatacopy | 6.00 | 4.56M | 1.0000 | ✅ Good | +| calldataload | 3.00 | 3.20M | 1.0000 | ✅ Good | +| calldatasize | 2.00 | 5.14M | 1.0000 | ✅ Good | +| caller | 2.00 | 5.14M | 1.0000 | ✅ Good | +| callvalue | 2.00 | 5.14M | 1.0000 | ✅ Good | +| chainid | 2.00 | 5.14M | 1.0000 | ✅ Good | +| codecopy | 6.00 | 6.82M | 1.0000 | ✅ Good | +| codesize | 2.00 | 5.14M | 1.0000 | ✅ Good | +| coinbase | 2.00 | 5.14M | 1.0000 | ✅ Good | +| create | 32.01K | 123.81K | 1.0000 | ✅ Good | +| create2 | 32.02K | 200.71K | 1.0000 | ✅ Good | +| div | 5.00 | 2.25M | 1.0000 | ✅ Good | +| dup1 | 3.00 | 4.10M | 1.0000 | ✅ Good | +| dup16 | 3.00 | 2.90M | 1.0000 | ✅ Good | +| dup8 | 3.00 | 4.20M | 1.0000 | ✅ Good | +| ecrecover | 3.00K | 71.36K | 1.0000 | ✅ Good | +| eq | 3.00 | 4.76M | 1.0000 | ✅ Good | +| exp | 1.61K | 70.29K | 1.0000 | ✅ Good | +| extcodehash | 100.00 | 1.95M | 1.0000 | ✅ Good | +| extcodesize | 100.00 | 1.93M | 1.0000 | ✅ Good | +| gas | 2.00 | 5.14M | 1.0000 | ✅ Good | +| gaslimit | 2.00 | 5.14M | 1.0000 | ✅ Good | +| gasprice | 2.00 | 5.14M | 1.0000 | ✅ Good | +| gt | 3.00 | 6.34M | 1.0000 | ✅ Good | +| iszero | 3.00 | 9.93M | 1.0000 | ✅ Good | +| jump | 8.00 | 2.88M | 1.0000 | ✅ Good | +| jumpdest | 1.00 | 625.61K | 1.0000 | ✅ Good | +| jumpi | 10.00 | 7.81M | 1.0000 | ✅ Good | +| keccak256 | 1.57K | 930.61K | 1.0000 | ✅ Good | +| log0 | 375.00 | 957.61K | 1.0000 | ✅ Good | +| lt | 3.00 | 6.34M | 1.0000 | ✅ Good | +| mload | 3.00 | 6.37M | 1.0000 | ✅ Good | +| mod | 5.00 | 2.25M | 1.0000 | ✅ Good | +| modexp | 1.36K | 66.98K | 1.0000 | ✅ Good | +| msize | 2.00 | 5.16M | 1.0000 | ✅ Good | +| mstore | 3.00 | 2.71M | 1.0000 | ✅ Good | +| mstore8 | 3.00 | 5.37M | 1.0000 | ✅ Good | +| mul | 5.00 | 6.34M | 1.0000 | ✅ Good | +| mulmod | 8.00 | 2.92M | 1.0000 | ✅ Good | +| not | 3.00 | 6.64M | 1.0000 | ✅ Good | +| number | 2.00 | 5.14M | 1.0000 | ✅ Good | +| or | 3.00 | 9.48M | 1.0000 | ✅ Good | +| origin | 2.00 | 5.14M | 1.0000 | ✅ Good | +| pc | 2.00 | 5.14M | 1.0000 | ✅ Good | +| point_evaluation | 50.00K | 49.92K | 1.0000 | ✅ Good | +| pop | 2.00 | 4.08M | 1.0000 | ✅ Good | +| prevrandao | 2.00 | 3.86M | 1.0000 | ✅ Good | +| push0 | 2.00 | 5.14M | 1.0000 | ✅ Good | +| push1 | 3.00 | 5.14M | 1.0000 | ✅ Good | +| push16 | 3.00 | 4.34M | 1.0000 | ✅ Good | +| push32 | 3.00 | 2.36M | 1.0000 | ✅ Good | +| returndatasize | 2.00 | 5.14M | 1.0000 | ✅ Good | +| ripemd160 | 4.44K | 240.82K | 1.0000 | ✅ Good | +| sar | 3.00 | 4.76M | 1.0000 | ✅ Good | +| sdiv | 5.00 | 2.25M | 1.0000 | ✅ Good | +| selfbalance | 5.00 | 2.59M | 1.0000 | ✅ Good | +| sgt | 3.00 | 9.48M | 1.0000 | ✅ Good | +| sha256 | 1.60K | 290.57K | 1.0000 | ✅ Good | +| shl | 3.00 | 4.76M | 1.0000 | ✅ Good | +| shr | 3.00 | 6.34M | 1.0000 | ✅ Good | +| signextend | 5.00 | 15.77M | 1.0000 | ✅ Good | +| sload | 100.00 | 1.93M | 1.0000 | ✅ Good | +| slt | 3.00 | 22.06M | 1.0000 | ✅ Good | +| smod | 5.00 | 6.34M | 1.0000 | ✅ Good | +| sub | 3.00 | 15.77M | 1.0000 | ✅ Good | +| swap1 | 3.00 | 200.61K | 1.0000 | ✅ Good | +| swap16 | 3.00 | 275.61K | 1.0000 | ✅ Good | +| swap8 | 3.00 | 235.61K | 1.0000 | ✅ Good | +| timestamp | 2.00 | 5.14M | 1.0000 | ✅ Good | +| tload | 100.00 | 9.77M | 1.0000 | ✅ Good | +| tstore | 100.00 | 1.33M | 1.0000 | ✅ Good | +| xor | 3.00 | 15.77M | 1.0000 | ✅ Good | +| log2 | 3.17K | 671.06K | 1.0000 | ✅ Good | +| log3 | 3.54K | 702.56K | 1.0000 | ✅ Good | +| log1 | 1.01K | 941.81K | 1.0000 | ✅ Good | +| log4 | 3.92K | 658.46K | 1.0000 | ✅ Good | +| call | 100.05 | 1.21M | 1.0000 | ✅ Good | +| callcode | 100.05 | 1.21M | 1.0000 | ✅ Good | +| delegatecall | 100.05 | 1.06M | 1.0000 | ✅ Good | +| staticcall | 100.05 | 1.06M | 1.0000 | ✅ Good | +| identity | 27.02 | 219.29M | 1.0000 | ✅ Good | +| returndatacopy | 9.02 | 1.68M | 1.0000 | ✅ Good | +| sstore | 100.29 | 724.38K | 1.0000 | ✅ Good | +| extcodecopy | 124.37 | 1.60M | 1.0000 | ✅ Good | +| mcopy | 99.33 | 648.67K | 1.0000 | ✅ Good | + +### Op Count ↔ ZK Cycles + +| Opcode | Cycles/Op | R² | +|--------|-----------|-----| +| add | 100.86 | 1.0000 | +| addmod | 1.57K | 1.0000 | +| address | 115.97 | 1.0000 | +| and | 71.87 | 1.0000 | +| balance | 1.70K | 1.0000 | +| basefee | 62.97 | 1.0000 | +| blake2f | 46.01M | 1.0000 | +| blobbasefee | 84.97 | 1.0000 | +| blobhash | 81.01 | 1.0000 | +| bls12_g1add | 15.16K | 1.0000 | +| bls12_g1msm | 2.05M | 1.0000 | +| bls12_g2add | 31.77K | 1.0000 | +| bls12_g2msm | 3.29M | 1.0000 | +| bls12_map_fp2_to_g2 | 955.45K | 1.0000 | +| bls12_map_fp_to_g1 | 306.79K | 1.0000 | +| bls12_pairing | 9.08M | 1.0000 | +| bn128_add | 10.09K | 1.0000 | +| bn128_mul | 1.38M | 1.0000 | +| bn128_pairing | 25.53M | 1.0000 | +| byte | 82.07 | 1.0000 | +| call | 7.07K | 1.0000 | +| callcode | 7.01K | 1.0000 | +| calldatacopy | 214.01 | 1.0000 | +| calldataload | 169.02 | 1.0000 | +| calldatasize | 63.98 | 1.0000 | +| caller | 115.97 | 1.0000 | +| callvalue | 77.97 | 1.0000 | +| chainid | 62.97 | 1.0000 | +| codecopy | 214.01 | 1.0000 | +| codesize | 60.97 | 1.0000 | +| coinbase | 115.97 | 1.0000 | +| create | 41.31K | 0.9997 | +| create2 | 43.77K | 0.9997 | +| delegatecall | 5.91K | 1.0000 | +| div | 1.53K | 1.0000 | +| dup1 | 50.94 | 1.0000 | +| dup16 | 51.01 | 1.0000 | +| dup8 | 50.94 | 1.0000 | +| ecrecover | 581.49K | 1.0000 | +| eq | 303.87 | 1.0000 | +| exp | 149.72K | 1.0000 | +| extcodecopy | 2.00K | 1.0000 | +| extcodehash | 2.27K | 1.0000 | +| extcodesize | 1.71K | 1.0000 | +| gas | 59.97 | 1.0000 | +| gaslimit | 59.97 | 1.0000 | +| gasprice | 80.97 | 1.0000 | +| gt | 81.89 | 1.0000 | +| identity | 45.89 | 0.9998 | +| iszero | 64.94 | 1.0000 | +| jump | 63.01 | 1.0000 | +| jumpdest | 25.84 | 1.0000 | +| jumpi | 123.00 | 1.0000 | +| keccak256 | 126.43K | 1.0000 | +| log0 | 2.91K | 1.0000 | +| log1 | 6.80K | 1.0000 | +| log2 | 14.79K | 0.9999 | +| log3 | 17.63K | 0.9999 | +| log4 | 20.57K | 1.0000 | +| lt | 81.84 | 1.0000 | +| mcopy | 1.48K | 1.0000 | +| mload | 170.03 | 1.0000 | +| mod | 1.29K | 1.0000 | +| modexp | 5.34M | 1.0000 | +| msize | 60.01 | 1.0000 | +| mstore | 188.01 | 1.0000 | +| mstore8 | 78.01 | 1.0000 | +| mul | 302.86 | 1.0000 | +| mulmod | 3.37K | 1.0000 | +| not | 54.95 | 1.0000 | +| number | 64.97 | 1.0000 | +| or | 71.89 | 1.0000 | +| origin | 115.97 | 1.0000 | +| pc | 63.97 | 1.0000 | +| point_evaluation | 11.15M | 1.0000 | +| pop | 30.04 | 1.0000 | +| prevrandao | 156.97 | 1.0000 | +| push0 | 56.97 | 1.0000 | +| push1 | 46.01 | 1.0000 | +| push16 | 85.12 | 1.0000 | +| push32 | 143.38 | 1.0000 | +| returndatacopy | 238.52 | 1.0000 | +| returndatasize | 59.97 | 1.0000 | +| ripemd160 | 41.67K | 1.0000 | +| sar | 235.07 | 1.0000 | +| sdiv | 1.29K | 1.0000 | +| selfbalance | 1.21K | 1.0000 | +| sgt | 113.90 | 1.0000 | +| sha256 | 5.45K | 1.0000 | +| shl | 153.06 | 1.0000 | +| shr | 154.06 | 1.0000 | +| signextend | 277.01 | 1.0000 | +| sload | 1.55K | 1.0000 | +| slt | 113.89 | 1.0000 | +| smod | 404.87 | 1.0000 | +| sstore | 3.62K | 1.0000 | +| staticcall | 6.98K | 1.0000 | +| sub | 111.89 | 1.0000 | +| swap1 | 160.04 | 1.0000 | +| swap16 | 160.11 | 1.0000 | +| swap8 | 160.03 | 1.0000 | +| timestamp | 64.97 | 1.0000 | +| tload | 243.07 | 1.0000 | +| tstore | 1.69K | 1.0000 | +| xor | 71.86 | 1.0000 | + +### Op Count ↔ Proving Time + +| Opcode | Time/Op (s) | R² | +|--------|-------------|-----| +| add | 3.49e-05 | 0.9991 | +| addmod | 5.68e-04 | 0.9999 | +| address | 4.30e-05 | 0.9969 | +| and | 2.43e-05 | 0.9966 | +| balance | 5.91e-04 | 0.9999 | +| basefee | 2.25e-05 | 0.9987 | +| blake2f | 1.59e+01 | 1.0000 | +| blobbasefee | 2.92e-05 | 0.9997 | +| blobhash | 2.86e-05 | 0.9981 | +| bls12_g1add | 9.44e-03 | 0.9518 | +| bls12_g1msm | 8.60e-01 | 0.9893 | +| bls12_g2add | 1.22e-02 | 0.9636 | +| bls12_g2msm | 1.30e+00 | 0.9960 | +| bls12_map_fp2_to_g2 | 4.58e-01 | 0.9404 | +| bls12_map_fp_to_g1 | 1.73e-01 | 0.9772 | +| bls12_pairing | 3.72e+00 | 0.9979 | +| bn128_add | 4.28e-03 | 0.7509 | +| bn128_mul | 5.20e-01 | 0.9997 | +| bn128_pairing | 9.23e+00 | 0.9968 | +| byte | 2.66e-05 | 0.9964 | +| call | 2.47e-03 | 1.0000 | +| callcode | 2.45e-03 | 0.9999 | +| calldatacopy | 7.46e-05 | 0.9999 | +| calldataload | 6.01e-05 | 0.9970 | +| calldatasize | 2.22e-05 | 0.9972 | +| caller | 4.27e-05 | 0.9998 | +| callvalue | 2.68e-05 | 0.9978 | +| chainid | 2.13e-05 | 0.9979 | +| codecopy | 7.62e-05 | 0.9998 | +| codesize | 2.15e-05 | 0.9992 | +| coinbase | 4.16e-05 | 0.9983 | +| create | 1.57e-02 | 0.9998 | +| create2 | 1.80e-02 | 0.9999 | +| delegatecall | 2.10e-03 | 0.9998 | +| div | 5.51e-04 | 0.9999 | +| dup1 | 1.77e-05 | 0.9909 | +| dup16 | 1.88e-05 | 0.9768 | +| dup8 | 1.79e-05 | 0.9816 | +| ecrecover | 2.44e-01 | 0.9921 | +| eq | 1.05e-04 | 0.9993 | +| exp | 5.25e-02 | 0.9997 | +| extcodecopy | 6.89e-04 | 0.9999 | +| extcodehash | 7.64e-04 | 0.9998 | +| extcodesize | 5.95e-04 | 0.9996 | +| gas | 2.27e-05 | 0.9961 | +| gaslimit | 2.12e-05 | 0.9953 | +| gasprice | 2.83e-05 | 0.9986 | +| gt | 2.91e-05 | 0.9983 | +| identity | 5.06e-05 | 0.9276 | +| iszero | 2.32e-05 | 0.9938 | +| jump | 2.19e-05 | 0.9976 | +| jumpdest | 8.55e-06 | 0.9944 | +| jumpi | 4.52e-05 | 0.9978 | +| keccak256 | 1.33e-01 | 0.9980 | +| log0 | 1.12e-04 | 0.9807 | +| log1 | 2.73e-04 | 0.9960 | +| log2 | 4.84e-04 | 0.9985 | +| log3 | 5.72e-04 | 0.9873 | +| log4 | 5.68e-04 | 0.9983 | +| lt | 3.18e-05 | 0.9483 | +| mcopy | 5.16e-04 | 0.9972 | +| mload | 5.95e-05 | 0.9983 | +| mod | 4.73e-04 | 1.0000 | +| modexp | 1.86e+00 | 0.9998 | +| msize | 2.11e-05 | 0.9998 | +| mstore | 6.64e-05 | 0.9961 | +| mstore8 | 2.71e-05 | 0.9980 | +| mul | 1.06e-04 | 0.9970 | +| mulmod | 1.21e-03 | 1.0000 | +| not | 1.92e-05 | 0.9948 | +| number | 2.24e-05 | 0.9999 | +| or | 2.72e-05 | 0.9728 | +| origin | 4.28e-05 | 0.9995 | +| pc | 2.34e-05 | 1.0000 | +| point_evaluation | 4.28e+00 | 0.9945 | +| pop | 1.09e-05 | 0.9867 | +| prevrandao | 5.52e-05 | 0.9998 | +| push0 | 2.06e-05 | 0.9990 | +| push1 | 1.56e-05 | 0.9935 | +| push16 | 3.33e-05 | 0.9999 | +| push32 | 4.95e-05 | 0.9954 | +| returndatacopy | 7.67e-05 | 0.9922 | +| returndatasize | 2.09e-05 | 0.9996 | +| ripemd160 | 1.40e-02 | 0.9982 | +| sar | 8.63e-05 | 0.9998 | +| sdiv | 4.64e-04 | 1.0000 | +| selfbalance | 4.23e-04 | 0.9999 | +| sgt | 4.10e-05 | 0.9896 | +| sha256 | 1.51e-03 | 0.8017 | +| shl | 6.05e-05 | 0.9991 | +| shr | 5.65e-05 | 0.9984 | +| signextend | 1.03e-04 | 0.9997 | +| sload | 5.39e-04 | 0.9999 | +| slt | 4.15e-05 | 0.9963 | +| smod | 1.45e-04 | 0.9996 | +| sstore | 1.27e-03 | 0.9995 | +| staticcall | 2.40e-03 | 0.9999 | +| sub | 4.04e-05 | 0.9927 | +| swap1 | 4.89e-05 | 0.9913 | +| swap16 | 5.39e-05 | 0.9957 | +| swap8 | 4.60e-05 | 0.9917 | +| timestamp | 2.26e-05 | 0.9987 | +| tload | 8.65e-05 | 0.9999 | +| tstore | 5.82e-04 | 1.0000 | +| xor | 2.59e-05 | 0.9994 | + +### Opcodes/Precompiles Summary + +| Opcode | N | Min Op Count | Max Op Count | Min Gas | Max Gas | Gas/Op | +|--------|---|--------------|--------------|---------|---------|--------| +| add | 4 | 0 | 900000 | 9.48M | 12.18M | 3.00 | +| addmod | 4 | 0 | 201000 | 2.80M | 4.41M | 8.00 | +| address | 4 | 0 | 900000 | 3.86M | 5.66M | 2.00 | +| and | 4 | 0 | 600000 | 6.34M | 8.14M | 3.00 | +| balance | 4 | 0 | 300000 | 2.40M | 32.40M | 100.00 | +| basefee | 4 | 0 | 1200000 | 5.14M | 7.54M | 2.00 | +| blake2f | 3 | 0 | 10 | 49.27K | 704.62K | 65.54K | +| blobbasefee | 4 | 0 | 1200000 | 5.14M | 7.54M | 2.00 | +| blobhash | 4 | 0 | 1503000 | 9.50M | 14.01M | 3.00 | +| bls12_g1add | 4 | 0 | 771 | 140.85K | 429.98K | 375.00 | +| bls12_g1msm | 4 | 0 | 39 | 54.04K | 942.30K | 22.78K | +| bls12_g2add | 4 | 0 | 450 | 106.04K | 376.04K | 600.00 | +| bls12_g2msm | 4 | 0 | 24 | 55.64K | 1.14M | 45.00K | +| bls12_map_fp2_to_g2 | 4 | 0 | 27 | 50.64K | 693.24K | 23.80K | +| bls12_map_fp_to_g1 | 4 | 0 | 75 | 55.51K | 468.01K | 5.50K | +| bls12_pairing | 4 | 0 | 9 | 56.91K | 983.01K | 102.90K | +| bn128_add | 4 | 0 | 801 | 143.13K | 263.28K | 150.00 | +| bn128_mul | 4 | 0 | 72 | 55.85K | 487.85K | 6.00K | +| bn128_pairing | 5 | 0 | 8 | 52.88K | 956.88K | 113.00K | +| byte | 4 | 0 | 600000 | 6.34M | 8.14M | 3.00 | +| call | 4 | 0 | 49500 | 1.21M | 6.16M | 100.05 | +| callcode | 4 | 0 | 49500 | 1.21M | 6.16M | 100.05 | +| calldatacopy | 4 | 0 | 600000 | 4.56M | 8.16M | 6.00 | +| calldataload | 4 | 0 | 501000 | 3.20M | 4.70M | 3.00 | +| calldatasize | 6 | 0 | 1200000 | 5.14M | 7.54M | 2.00 | +| caller | 4 | 0 | 1200000 | 5.14M | 7.54M | 2.00 | +| callvalue | 5 | 0 | 1200000 | 5.14M | 7.54M | 2.00 | +| chainid | 4 | 0 | 1200000 | 5.14M | 7.54M | 2.00 | +| codecopy | 4 | 0 | 900000 | 6.82M | 12.22M | 6.00 | +| codesize | 4 | 0 | 1200000 | 5.14M | 7.54M | 2.00 | +| coinbase | 4 | 0 | 1200000 | 5.14M | 7.54M | 2.00 | +| create | 4 | 0 | 4200 | 123.81K | 134.56M | 32.01K | +| create2 | 4 | 0 | 4200 | 200.71K | 134.68M | 32.02K | +| delegatecall | 4 | 0 | 49500 | 1.06M | 6.01M | 100.05 | +| div | 4 | 0 | 210000 | 2.25M | 3.30M | 5.00 | +| dup1 | 6 | 0 | 900000 | 4.10M | 6.80M | 3.00 | +| dup16 | 6 | 0 | 600000 | 2.90M | 4.70M | 3.00 | +| dup8 | 6 | 0 | 900000 | 4.20M | 6.90M | 3.00 | +| ecrecover | 4 | 0 | 201 | 71.36K | 674.36K | 3.00K | +| eq | 4 | 0 | 450000 | 4.76M | 6.11M | 3.00 | +| exp | 4 | 0 | 2250 | 70.29K | 3.69M | 1.61K | +| extcodecopy | 4 | 0 | 102000 | 1.59M | 14.28M | 124.37 | +| extcodehash | 5 | 0 | 200000 | 1.95M | 21.95M | 100.00 | +| extcodesize | 4 | 0 | 198000 | 1.93M | 21.73M | 100.00 | +| gas | 4 | 0 | 1200000 | 5.14M | 7.54M | 2.00 | +| gaslimit | 4 | 0 | 1200000 | 5.14M | 7.54M | 2.00 | +| gasprice | 4 | 0 | 1200000 | 5.14M | 7.54M | 2.00 | +| gt | 4 | 0 | 600000 | 6.34M | 8.14M | 3.00 | +| identity | 4 | 0 | 1500000 | 219.28M | 259.80M | 27.02 | +| iszero | 6 | 0 | 1350000 | 9.93M | 13.98M | 3.00 | +| jump | 6 | 0 | 600000 | 2.88M | 7.68M | 8.00 | +| jumpdest | 4 | 0 | 2400000 | 625.61K | 3.03M | 1.00 | +| jumpi | 4 | 0 | 1005000 | 7.81M | 17.86M | 10.00 | +| keccak256 | 4 | 0 | 24000 | 930.61K | 38.51M | 1.57K | +| log0 | 6 | 0 | 120000 | 957.61K | 45.96M | 375.00 | +| log1 | 4 | 0 | 81000 | 934.61K | 82.44M | 1.01K | +| log2 | 4 | 0 | 42000 | 661.61K | 133.62M | 3.17K | +| log3 | 4 | 0 | 35700 | 693.11K | 127.10M | 3.54K | +| log4 | 4 | 0 | 27300 | 649.01K | 107.56M | 3.92K | +| lt | 4 | 0 | 600000 | 6.34M | 8.14M | 3.00 | +| mcopy | 4 | 0 | 60000 | 642.01K | 6.60M | 99.33 | +| mload | 4 | 0 | 1002000 | 6.37M | 9.38M | 3.00 | +| mod | 4 | 0 | 210000 | 2.25M | 3.30M | 5.00 | +| modexp | 4 | 0 | 36 | 66.98K | 116.12K | 1.36K | +| msize | 5 | 0 | 1200000 | 5.16M | 7.56M | 2.00 | +| mstore | 4 | 0 | 501000 | 2.71M | 4.21M | 3.00 | +| mstore8 | 4 | 0 | 1002000 | 5.37M | 8.38M | 3.00 | +| mul | 4 | 0 | 600000 | 6.34M | 9.34M | 5.00 | +| mulmod | 4 | 0 | 210000 | 2.92M | 4.60M | 8.00 | +| not | 6 | 0 | 900000 | 6.64M | 9.34M | 3.00 | +| number | 4 | 0 | 1200000 | 5.14M | 7.54M | 2.00 | +| or | 6 | 0 | 900000 | 9.48M | 12.18M | 3.00 | +| origin | 4 | 0 | 1200000 | 5.14M | 7.54M | 2.00 | +| pc | 4 | 0 | 1200000 | 5.14M | 7.54M | 2.00 | +| point_evaluation | 4 | 0 | 9 | 49.92K | 499.92K | 50.00K | +| pop | 6 | 0 | 1800000 | 4.08M | 7.68M | 2.00 | +| prevrandao | 4 | 0 | 900000 | 3.86M | 5.66M | 2.00 | +| push0 | 4 | 0 | 1200000 | 5.14M | 7.54M | 2.00 | +| push1 | 6 | 0 | 1200000 | 5.14M | 8.74M | 3.00 | +| push16 | 4 | 0 | 1002000 | 4.34M | 7.35M | 3.00 | +| push32 | 6 | 0 | 525000 | 2.36M | 3.94M | 3.00 | +| returndatacopy | 4 | 0 | 180000 | 1.67M | 3.30M | 9.02 | +| returndatasize | 4 | 0 | 1200000 | 5.14M | 7.54M | 2.00 | +| ripemd160 | 4 | 0 | 1500 | 240.82K | 6.90M | 4.44K | +| sar | 4 | 0 | 450000 | 4.76M | 6.11M | 3.00 | +| sdiv | 4 | 0 | 210000 | 2.25M | 3.30M | 5.00 | +| selfbalance | 4 | 0 | 600000 | 2.59M | 5.59M | 5.00 | +| sgt | 6 | 0 | 900000 | 9.48M | 12.18M | 3.00 | +| sha256 | 4 | 0 | 1500 | 290.57K | 2.68M | 1.60K | +| shl | 4 | 0 | 450000 | 4.76M | 6.11M | 3.00 | +| shr | 4 | 0 | 600000 | 6.34M | 8.14M | 3.00 | +| signextend | 4 | 0 | 1500000 | 15.77M | 23.27M | 5.00 | +| sload | 4 | 0 | 198000 | 1.93M | 21.73M | 100.00 | +| slt | 6 | 0 | 2100000 | 22.06M | 28.36M | 3.00 | +| smod | 4 | 0 | 600000 | 6.34M | 9.34M | 5.00 | +| sstore | 4 | 0 | 61200 | 718.41K | 6.86M | 100.29 | +| staticcall | 4 | 0 | 49500 | 1.06M | 6.01M | 100.05 | +| sub | 6 | 0 | 1500000 | 15.77M | 20.27M | 3.00 | +| swap1 | 6 | 0 | 300000 | 200.61K | 1.10M | 3.00 | +| swap16 | 4 | 0 | 300000 | 275.61K | 1.18M | 3.00 | +| swap8 | 4 | 0 | 300000 | 235.61K | 1.14M | 3.00 | +| timestamp | 4 | 0 | 1200000 | 5.14M | 7.54M | 2.00 | +| tload | 4 | 0 | 1500000 | 9.77M | 159.77M | 100.00 | +| tstore | 4 | 0 | 198000 | 1.33M | 21.13M | 100.00 | +| xor | 4 | 0 | 1500000 | 15.77M | 20.27M | 3.00 | + +### risc0 Max ZK Cycles by Opcode (colored by R²) + +Bar length = Max ZK Cycles, color = Time/Gas R² (green=high, red=low) + +
risc0 Max ZK Cycles by Opcode (colored by Time/Gas R²)identity10,556,833,087 (R²=0.9274)keccak2563,069,435,495 (R²=0.9980)slt1,079,708,104 (R²=0.9963)mulmod824,500,827 (R²=1.0000)selfbalance786,763,264 (R²=0.9999)sub768,665,479 (R²=0.9927)signextend738,366,006 (R²=0.9997)xor708,666,002 (R²=0.9994)log3644,155,315 (R²=0.9874)log2635,435,877 (R²=0.9985)tload621,483,291 (R²=0.9999)log4576,670,108 (R²=0.9983)log1571,658,240 (R²=0.9959)balance562,043,337 (R²=0.9999)extcodehash502,957,196 (R²=0.9998)smod484,202,259 (R²=0.9996)sgt463,623,886 (R²=0.9896)blake2f461,368,864 (R²=1.0000)add451,923,532 (R²=0.9991)addmod428,759,313 (R²=0.9999)or425,824,057 (R²=0.9728)iszero423,500,043 (R²=0.9938)mul423,002,965 (R²=0.9970)div407,575,671 (R²=0.9999)tstore392,158,977 (R²=1.0000)extcodesize385,545,218 (R²=0.9996)call375,518,195 (R²=1.0000)callcode372,601,026 (R²=0.9999)log0371,625,478 (R²=0.9807)staticcall369,460,726 (R²=0.9999)blobhash363,183,171 (R²=0.9981)codecopy362,913,832 (R²=0.9998)mod356,335,478 (R²=1.0000)sdiv355,495,181 (R²=1.0000)sload354,206,253 (R²=0.9999)exp339,204,366 (R²=0.9997)mload332,790,363 (R²=0.9983)eq318,091,484 (R²=0.9993)delegatecall315,919,108 (R²=0.9998)jumpi291,083,174 (R²=0.9978)gt290,402,127 (R²=0.9983)lt290,387,332 (R²=0.9483)and284,402,859 (R²=0.9966)shr275,237,855 (R²=0.9984)not273,828,589 (R²=0.9948)coinbase260,684,551 (R²=0.9983)origin260,683,981 (R²=0.9995)caller260,683,743 (R²=0.9998)extcodecopy246,939,808 (R²=0.9999)sstore245,914,583 (R²=0.9994)sar243,235,845 (R²=0.9998)calldatacopy242,352,642 (R²=0.9999)prevrandao232,724,117 (R²=0.9998)byte232,046,423 (R²=0.9964)blobbasefee223,484,141 (R²=0.9997)gasprice218,684,641 (R²=0.9986)callvalue215,084,191 (R²=0.9978)shl206,326,977 (R²=0.9991)bn128_pairing205,528,558 (R²=0.9968)mstore204,254,711 (R²=0.9961)timestamp199,484,647 (R²=0.9987)number199,484,512 (R²=0.9999)mstore8199,325,622 (R²=0.9980)calldatasize198,284,695 (R²=0.9972)pc198,284,169 (R²=1.0000)basefee197,084,614 (R²=0.9987)chainid197,083,903 (R²=0.9979)address195,823,994 (R²=0.9969)codesize194,683,186 (R²=0.9992)msize194,361,018 (R²=0.9998)modexp193,677,956 (R²=0.9998)gaslimit193,484,821 (R²=0.9953)gas193,484,498 (R²=0.9961)returndatasize193,483,232 (R²=0.9996)push0189,883,112 (R²=0.9990)push16189,560,595 (R²=0.9999)create2189,215,410 (R²=0.9999)pop181,680,979 (R²=0.9867)create177,512,031 (R²=0.9998)push1176,694,008 (R²=0.9935)calldataload165,980,605 (R²=0.9970)dup8151,007,563 (R²=0.9816)dup1149,410,529 (R²=0.9909)push32134,046,402 (R²=0.9954)ecrecover119,413,558 (R²=0.9921)jump110,878,496 (R²=0.9976)dup16102,294,872 (R²=0.9768)point_evaluation101,650,739 (R²=0.9945)mcopy101,565,697 (R²=0.9974)bn128_mul100,681,680 (R²=0.9997)jumpdest95,301,059 (R²=0.9944)bls12_pairing82,964,346 (R²=0.9979)bls12_g1msm81,326,966 (R²=0.9893)returndatacopy80,338,605 (R²=0.9920)bls12_g2msm80,248,480 (R²=0.9960)ripemd16073,800,758 (R²=0.9982)swap1658,450,252 (R²=0.9957)swap857,812,914 (R²=0.9917)swap157,278,073 (R²=0.9913)bls12_map_fp2_to_g227,168,216 (R²=0.9404)bls12_map_fp_to_g124,692,979 (R²=0.9772)sha25619,668,514 (R²=0.8017)bls12_g2add18,615,501 (R²=0.9636)bls12_g1add18,054,432 (R²=0.9518)bn128_add14,612,379 (R²=0.7509)
diff --git a/www/docs/pages/marginal-gas-benchmark/sp1.md b/www/docs/pages/marginal-gas-benchmark/sp1.md new file mode 100644 index 00000000..9e23f83f --- /dev/null +++ b/www/docs/pages/marginal-gas-benchmark/sp1.md @@ -0,0 +1,2209 @@ +# ZK Gas Benchmark Report 2025-12-29 (sp1, both) + +## Context + +- **Generated**: 2025-12-29 21:07:06 +- **Prover**: sp1-cluster-v5.2.3 +- **Mode**: both +- **CPU**: AMD EPYC 7B13 64-Core Processor +- **RAM**: 371 GiB +- **GPUs**: 4x NVIDIA GeForce RTX 4090 + +## Regression Results + +### Time/Gas Bar Chart (R² ≥ 0.7) + +*Only opcodes/precompiles with R² ≥ 0.7 are shown.* + +![Time/Gas Bar Chart](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/bar_time_per_gas.png) + +### Cycles/Gas Bar Chart (R² ≥ 0.9) + +*Only opcodes/precompiles with R² ≥ 0.9 (green) are shown.* + +![Cycles/Gas Bar Chart](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/bar_cycles_per_gas.png) + +### Regression Results + +| Opcode | Max Ops | Max Gas | Max ZK Cycles | Time/Gas (R²) | Cycles/Gas (R²) | Time/Cycle (R²) | +|--------|---------|---------|---------------|---------------|-----------------|-----------------| +| modexp | 36.00 | 116.12K | 187.44M | 554.91µs (0.9945) | 3.79K (1.0000) | 0.15µs (0.9945) | +| point_evaluation | 9.00 | 499.92K | 1.33B | 398.23µs (1.0000) | 2.96K (1.0000) | 0.13µs (1.0000) | +| bls12_map_fp_to_g1 | 75.00 | 468.01K | 481.23M | 159.35µs (0.9993) | 1.16K (1.0000) | 0.14µs (0.9993) | +| bls12_pairing | 9.00 | 983.01K | 922.93M | 133.93µs (1.0000) | 995.58 (1.0000) | 0.13µs (1.0000) | +| bls12_g1add | 771.00 | 429.98K | 241.74M | 112.19µs (0.9995) | 816.57 (1.0000) | 0.14µs (0.9995) | +| bls12_map_fp2_to_g2 | 27.00 | 693.24K | 534.42M | 112.10µs (0.9999) | 830.06 (1.0000) | 0.14µs (0.9999) | +| bls12_g2add | 450.00 | 376.04K | 222.44M | 110.98µs (0.9986) | 810.27 (1.0000) | 0.14µs (0.9986) | +| blake2f | 10.00 | 704.62K | 392.21M | 81.60µs (0.9995) | 597.02 (1.0000) | 0.14µs (0.9995) | +| mulmod | 210.00K | 4.60M | 815.00M | 52.68µs (0.9999) | 422.25 (1.0000) | 0.12µs (0.9999) | +| bls12_g1msm | 39.00 | 942.30K | 331.18M | 51.92µs (0.9974) | 371.60 (1.0000) | 0.14µs (0.9974) | +| bn128_mul | 72.00 | 487.85K | 34.78M | 40.27µs (0.9977) | 77.49 (1.0000) | 0.52µs (0.9977) | +| bls12_g2msm | 24.00 | 1.14M | 304.01M | 39.40µs (0.9966) | 280.55 (1.0000) | 0.14µs (0.9966) | +| div | 210.00K | 3.30M | 398.40M | 38.98µs (0.9973) | 306.02 (1.0000) | 0.13µs (0.9973) | +| bn128_add | 801.00 | 263.28K | 10.69M | 37.83µs (0.9196) | 40.55 (1.0000) | 0.93µs (0.9193) | +| sdiv | 210.00K | 3.30M | 350.52M | 32.61µs (0.9951) | 260.42 (1.0000) | 0.13µs (0.9951) | +| mod | 210.00K | 3.30M | 345.27M | 31.87µs (0.9997) | 255.42 (1.0000) | 0.12µs (0.9997) | +| selfbalance | 600.00K | 5.59M | 762.70M | 31.23µs (0.9980) | 234.00 (1.0000) | 0.13µs (0.9980) | +| addmod | 201.00K | 4.41M | 411.79M | 24.18µs (0.9999) | 193.00 (1.0000) | 0.13µs (0.9999) | +| bn128_pairing | 8.00 | 956.88K | 49.89M | 22.11µs (0.9909) | 54.18 (1.0000) | 0.41µs (0.9909) | +| eq | 450.00K | 6.11M | 297.74M | 14.68µs (0.9872) | 99.03 (1.0000) | 0.15µs (0.9872) | +| exp | 2.25K | 3.69M | 319.05M | 12.03µs (0.9968) | 87.58 (1.0000) | 0.14µs (0.9968) | +| swap16 | 300.00K | 1.18M | 57.77M | 10.79µs (0.9845) | 53.34 (1.0000) | 0.20µs (0.9845) | +| prevrandao | 900.00K | 5.66M | 231.90M | 10.61µs (0.9904) | 78.50 (1.0000) | 0.14µs (0.9903) | +| swap8 | 300.00K | 1.14M | 57.19M | 9.93µs (0.9847) | 53.37 (1.0000) | 0.19µs (0.9846) | +| sar | 450.00K | 6.11M | 234.20M | 9.80µs (0.9839) | 78.34 (1.0000) | 0.13µs (0.9839) | +| mstore | 501.00K | 4.21M | 194.41M | 9.77µs (0.9946) | 62.70 (1.0000) | 0.16µs (0.9946) | +| smod | 600.00K | 9.34M | 457.26M | 9.71µs (0.9969) | 79.62 (1.0000) | 0.12µs (0.9969) | +| sha256 | 1.50K | 2.68M | 39.93M | 9.61µs (0.9985) | 12.40 (1.0000) | 0.77µs (0.9985) | +| ecrecover | 201.00 | 674.36K | 8.54M | 9.55µs (0.9380) | 10.67 (1.0000) | 0.89µs (0.9380) | +| swap1 | 300.00K | 1.10M | 56.68M | 9.49µs (0.9781) | 53.37 (1.0000) | 0.18µs (0.9784) | +| call | 49.50K | 6.16M | 366.39M | 9.27µs (0.9932) | 68.84 (1.0000) | 0.13µs (0.9931) | +| callcode | 49.50K | 6.16M | 356.72M | 9.26µs (0.9991) | 66.91 (1.0000) | 0.14µs (0.9990) | +| staticcall | 49.50K | 6.01M | 353.79M | 8.97µs (0.9999) | 66.80 (1.0000) | 0.13µs (0.9999) | +| coinbase | 1.20M | 7.54M | 259.71M | 8.25µs (0.9857) | 58.00 (1.0000) | 0.14µs (0.9856) | +| caller | 1.20M | 7.54M | 259.71M | 8.17µs (0.9845) | 58.00 (1.0000) | 0.14µs (0.9845) | +| origin | 1.20M | 7.54M | 259.71M | 8.10µs (0.9678) | 58.00 (1.0000) | 0.14µs (0.9678) | +| delegatecall | 49.50K | 6.01M | 302.12M | 7.55µs (0.9999) | 56.48 (1.0000) | 0.13µs (0.9999) | +| push32 | 525.00K | 3.94M | 123.65M | 7.52µs (0.9244) | 41.71 (1.0000) | 0.18µs (0.9244) | +| address | 900.00K | 5.66M | 195.00M | 7.42µs (0.9953) | 58.00 (1.0000) | 0.13µs (0.9954) | +| mul | 600.00K | 9.34M | 400.26M | 7.33µs (0.9892) | 60.62 (1.0000) | 0.12µs (0.9892) | +| codecopy | 900.00K | 12.22M | 417.43M | 7.13µs (0.9950) | 47.07 (0.9929) | 0.15µs (0.9996) | +| shr | 600.00K | 8.14M | 263.36M | 7.09µs (0.9971) | 51.34 (1.0000) | 0.14µs (0.9971) | +| keccak256 | 24.00K | 38.51M | 701.87M | 6.68µs (0.9992) | 17.78 (1.0000) | 0.38µs (0.9992) | +| blobbasefee | 1.20M | 7.54M | 222.51M | 6.62µs (0.9940) | 42.50 (1.0000) | 0.16µs (0.9941) | +| mload | 1.00M | 9.38M | 323.76M | 6.55µs (0.9755) | 54.01 (1.0000) | 0.12µs (0.9755) | +| gasprice | 1.20M | 7.54M | 217.71M | 6.50µs (0.9995) | 40.50 (1.0000) | 0.16µs (0.9995) | +| calldataload | 501.00K | 4.70M | 162.31M | 6.35µs (0.9983) | 54.34 (1.0000) | 0.12µs (0.9983) | +| callvalue | 1.20M | 7.54M | 214.11M | 6.31µs (0.9789) | 39.00 (1.0000) | 0.16µs (0.9789) | +| shl | 450.00K | 6.11M | 196.40M | 6.26µs (0.9913) | 50.34 (1.0000) | 0.12µs (0.9913) | +| signextend | 1.50M | 23.27M | 721.57M | 5.91µs (0.9918) | 53.42 (1.0000) | 0.11µs (0.9919) | +| codesize | 1.20M | 7.54M | 193.71M | 5.63µs (0.9864) | 30.50 (1.0000) | 0.18µs (0.9863) | +| gas | 1.20M | 7.54M | 192.51M | 5.51µs (0.9836) | 30.00 (1.0000) | 0.18µs (0.9837) | +| calldatasize | 1.20M | 7.54M | 197.31M | 5.48µs (0.9780) | 32.00 (1.0000) | 0.17µs (0.9780) | +| pc | 1.20M | 7.54M | 197.31M | 5.43µs (0.9565) | 32.00 (1.0000) | 0.17µs (0.9563) | +| and | 600.00K | 8.14M | 261.66M | 5.24µs (0.9897) | 24.03 (1.0000) | 0.22µs (0.9896) | +| chainid | 1.20M | 7.54M | 196.11M | 5.04µs (1.0000) | 31.50 (1.0000) | 0.16µs (1.0000) | +| push0 | 1.20M | 7.54M | 188.91M | 4.92µs (0.9425) | 28.50 (1.0000) | 0.17µs (0.9421) | +| xor | 1.50M | 20.27M | 652.66M | 4.91µs (0.9720) | 24.03 (1.0000) | 0.20µs (0.9720) | +| gaslimit | 1.20M | 7.54M | 192.51M | 4.79µs (0.9959) | 30.00 (1.0000) | 0.16µs (0.9960) | +| returndatasize | 1.20M | 7.54M | 192.51M | 4.70µs (0.9944) | 30.00 (1.0000) | 0.16µs (0.9945) | +| basefee | 1.20M | 7.54M | 196.11M | 4.68µs (0.9866) | 31.50 (1.0000) | 0.15µs (0.9867) | +| number | 1.20M | 7.54M | 198.51M | 4.66µs (0.9843) | 32.50 (1.0000) | 0.14µs (0.9845) | +| sstore | 61.20K | 6.86M | 236.88M | 4.61µs (0.9998) | 34.90 (1.0000) | 0.13µs (0.9998) | +| byte | 600.00K | 8.14M | 220.15M | 4.54µs (0.9691) | 27.34 (1.0000) | 0.17µs (0.9691) | +| timestamp | 1.20M | 7.54M | 198.51M | 4.33µs (0.9887) | 32.50 (1.0000) | 0.13µs (0.9886) | +| returndatacopy | 180.00K | 3.30M | 79.64M | 4.20µs (0.9857) | 26.45 (1.0000) | 0.16µs (0.9857) | +| calldatacopy | 600.00K | 8.16M | 240.18M | 4.14µs (0.9724) | 35.33 (1.0000) | 0.12µs (0.9724) | +| jumpdest | 2.40M | 3.03M | 93.71M | 4.10µs (0.9930) | 26.00 (1.0000) | 0.16µs (0.9930) | +| msize | 1.20M | 7.56M | 193.38M | 3.96µs (0.9917) | 30.00 (1.0000) | 0.13µs (0.9917) | +| lt | 600.00K | 8.14M | 267.66M | 3.95µs (0.9971) | 27.36 (1.0000) | 0.14µs (0.9970) | +| gt | 600.00K | 8.14M | 267.66M | 3.84µs (0.9896) | 27.36 (1.0000) | 0.14µs (0.9895) | +| slt | 2.10M | 28.36M | 1.00B | 3.79µs (0.8388) | 38.02 (1.0000) | 0.10µs (0.8383) | +| add | 900.00K | 12.18M | 414.49M | 3.78µs (0.9987) | 32.36 (1.0000) | 0.12µs (0.9987) | +| push16 | 1.00M | 7.35M | 188.49M | 3.73µs (0.9960) | 28.36 (1.0000) | 0.13µs (0.9961) | +| sgt | 900.00K | 12.18M | 429.79M | 3.55µs (0.8265) | 38.02 (1.0000) | 0.09µs (0.8261) | +| dup16 | 600.00K | 4.70M | 101.33M | 3.54µs (0.9449) | 16.99 (1.0000) | 0.21µs (0.9461) | +| mstore8 | 1.00M | 8.38M | 198.35M | 3.36µs (0.9735) | 26.01 (1.0000) | 0.13µs (0.9736) | +| extcodehash | 200.00K | 21.95M | 490.88M | 3.24µs (0.9982) | 22.15 (1.0000) | 0.15µs (0.9982) | +| dup8 | 900.00K | 6.90M | 149.81M | 3.21µs (0.9217) | 17.02 (1.0000) | 0.19µs (0.9216) | +| dup1 | 900.00K | 6.80M | 148.13M | 3.05µs (0.8879) | 17.00 (1.0000) | 0.18µs (0.8879) | +| or | 900.00K | 12.18M | 391.99M | 3.02µs (0.8897) | 24.02 (1.0000) | 0.13µs (0.8900) | +| push1 | 1.20M | 8.74M | 175.71M | 2.75µs (0.9551) | 15.34 (1.0000) | 0.18µs (0.9551) | +| sub | 1.50M | 20.27M | 712.67M | 2.59µs (0.7971) | 37.36 (1.0000) | 0.07µs (0.7967) | +| balance | 300.00K | 32.40M | 549.04M | 2.43µs (0.9993) | 16.60 (1.0000) | 0.15µs (0.9993) | +| extcodecopy | 102.00K | 14.28M | 241.92M | 2.30µs (0.9967) | 15.75 (1.0000) | 0.15µs (0.9967) | +| iszero | 1.35M | 13.98M | 388.29M | 2.30µs (0.8634) | 19.33 (1.0000) | 0.12µs (0.8634) | +| extcodesize | 198.00K | 21.73M | 376.38M | 2.25µs (0.9978) | 16.66 (1.0000) | 0.13µs (0.9978) | +| sload | 198.00K | 21.73M | 342.58M | 2.10µs (0.9979) | 15.00 (1.0000) | 0.14µs (0.9979) | +| jumpi | 1.00M | 17.86M | 282.14M | 2.09µs (0.9972) | 11.60 (1.0000) | 0.18µs (0.9972) | +| mcopy | 60.00K | 6.60M | 100.43M | 2.09µs (0.9951) | 14.80 (1.0000) | 0.14µs (0.9948) | +| tstore | 198.00K | 21.13M | 367.66M | 2.08µs (0.9995) | 15.90 (1.0000) | 0.13µs (0.9995) | +| identity | 1.50M | 259.80M | 10.20B | 2.06µs (0.7010) | 4.66 (1.0000) | 0.44µs (0.6975) | +| blobhash | 1.50M | 14.01M | 340.85M | 1.92µs (0.9644) | 22.34 (1.0000) | 0.09µs (0.9642) | +| not | 900.00K | 9.34M | 256.48M | 1.89µs (0.9312) | 18.34 (1.0000) | 0.10µs (0.9312) | +| ripemd160 | 1.50K | 6.90M | 70.23M | 1.55µs (0.9559) | 9.01 (1.0000) | 0.17µs (0.9550) | +| pop | 1.80M | 7.68M | 180.31M | 0.96µs (0.7252) | 15.00 (1.0000) | 0.06µs (0.7252) | +| jump | 600.00K | 7.68M | 109.50M | 0.88µs (0.8975) | 7.88 (1.0000) | 0.11µs (0.8975) | +| tload | 1.50M | 159.77M | 619.43M | 0.35µs (0.9982) | 2.43 (1.0000) | 0.14µs (0.9983) | +| create | 4.20K | 134.56M | 111.70M | 0.15µs (0.9997) | 0.8048 (0.9996) | 0.19µs (0.9990) | +| create2 | 4.20K | 134.68M | 117.66M | 0.15µs (0.9997) | 0.8391 (0.9997) | 0.18µs (0.9989) | +| log0 | 120.00K | 45.96M | 46.49M | 0.15µs (0.9268) | 0.5558 (0.9944) | 0.27µs (0.9422) | +| log1 | 81.00K | 82.44M | 66.44M | 0.14µs (0.9995) | 0.5628 (0.9997) | 0.24µs (0.9988) | +| log2 | 42.00K | 133.62M | 55.47M | 0.08µs (0.9756) | 0.3078 (0.9999) | 0.26µs (0.9747) | +| log4 | 27.30K | 107.56M | 47.82M | 0.08µs (0.9897) | 0.3136 (0.9998) | 0.25µs (0.9886) | +| log3 | 35.70K | 127.10M | 55.01M | 0.07µs (0.9979) | 0.316 (0.9999) | 0.22µs (0.9981) | + +## Proving time vs ZK Cycles + +This section examines whether ZK cycles are a good proxy for proving time. + +### Time/Cycles Bar Chart (R² ≥ 0.7) + +*Only opcodes/precompiles with R² ≥ 0.7 are shown.* + +![Time/Cycles Bar Chart](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/bar_time_per_cycle.png) + +### Combined ZK Cycles ↔ Proving Time (All Opcodes) + +![Combined ZK Cycles vs Proving Time](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/combined_zkcycles_proving.png) + +### Excluding: none + +![Regular Opcodes](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/combined_zkcycles_regular.png) + +### Excluding: blake2f, modexp + +![Regular Opcodes No Outliers](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/combined_zkcycles_regular_no_outliers.png) + +### Excluding: blake2f, keccak256, log0, log1, log2, log3, log4, modexp + +![Regular Opcodes Minimal](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/combined_zkcycles_regular_minimal.png) + + +## Regression Charts + +### sp1 Gas vs Proving Time + +**modexp**: Slope = 554.91µs/gas, R² = 0.9945 + +![modexp](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_modexp.png) + +**point_evaluation**: Slope = 398.23µs/gas, R² = 1.0000 + +![point_evaluation](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_point_evaluation.png) + +**bls12_map_fp_to_g1**: Slope = 159.35µs/gas, R² = 0.9993 + +![bls12_map_fp_to_g1](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_bls12_map_fp_to_g1.png) + +**bls12_pairing**: Slope = 133.93µs/gas, R² = 1.0000 + +![bls12_pairing](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_bls12_pairing.png) + +**bls12_g1add**: Slope = 112.19µs/gas, R² = 0.9995 + +![bls12_g1add](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_bls12_g1add.png) + +**bls12_map_fp2_to_g2**: Slope = 112.10µs/gas, R² = 0.9999 + +![bls12_map_fp2_to_g2](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_bls12_map_fp2_to_g2.png) + +**bls12_g2add**: Slope = 110.98µs/gas, R² = 0.9986 + +![bls12_g2add](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_bls12_g2add.png) + +**blake2f**: Slope = 81.60µs/gas, R² = 0.9995 + +![blake2f](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_blake2f.png) + +**mulmod**: Slope = 52.68µs/gas, R² = 0.9999 + +![mulmod](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_mulmod.png) + +**bls12_g1msm**: Slope = 51.92µs/gas, R² = 0.9974 + +![bls12_g1msm](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_bls12_g1msm.png) + +**bn128_mul**: Slope = 40.27µs/gas, R² = 0.9977 + +![bn128_mul](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_bn128_mul.png) + +**bls12_g2msm**: Slope = 39.40µs/gas, R² = 0.9966 + +![bls12_g2msm](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_bls12_g2msm.png) + +**div**: Slope = 38.98µs/gas, R² = 0.9973 + +![div](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_div.png) + +**bn128_add**: Slope = 37.83µs/gas, R² = 0.9196 + +![bn128_add](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_bn128_add.png) + +**sdiv**: Slope = 32.61µs/gas, R² = 0.9951 + +![sdiv](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_sdiv.png) + +**mod**: Slope = 31.87µs/gas, R² = 0.9997 + +![mod](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_mod.png) + +**selfbalance**: Slope = 31.23µs/gas, R² = 0.9980 + +![selfbalance](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_selfbalance.png) + +**addmod**: Slope = 24.18µs/gas, R² = 0.9999 + +![addmod](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_addmod.png) + +**bn128_pairing**: Slope = 22.11µs/gas, R² = 0.9909 + +![bn128_pairing](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_bn128_pairing.png) + +**eq**: Slope = 14.68µs/gas, R² = 0.9872 + +![eq](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_eq.png) + +**exp**: Slope = 12.03µs/gas, R² = 0.9968 + +![exp](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_exp.png) + +**swap16**: Slope = 10.79µs/gas, R² = 0.9845 + +![swap16](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_swap16.png) + +**prevrandao**: Slope = 10.61µs/gas, R² = 0.9904 + +![prevrandao](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_prevrandao.png) + +**swap8**: Slope = 9.93µs/gas, R² = 0.9847 + +![swap8](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_swap8.png) + +**sar**: Slope = 9.80µs/gas, R² = 0.9839 + +![sar](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_sar.png) + +**mstore**: Slope = 9.77µs/gas, R² = 0.9946 + +![mstore](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_mstore.png) + +**smod**: Slope = 9.71µs/gas, R² = 0.9969 + +![smod](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_smod.png) + +**sha256**: Slope = 9.61µs/gas, R² = 0.9985 + +![sha256](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_sha256.png) + +**ecrecover**: Slope = 9.55µs/gas, R² = 0.9380 + +![ecrecover](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_ecrecover.png) + +**swap1**: Slope = 9.49µs/gas, R² = 0.9781 + +![swap1](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_swap1.png) + +**call**: Slope = 9.27µs/gas, R² = 0.9932 + +![call](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_call.png) + +**callcode**: Slope = 9.26µs/gas, R² = 0.9991 + +![callcode](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_callcode.png) + +**staticcall**: Slope = 8.97µs/gas, R² = 0.9999 + +![staticcall](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_staticcall.png) + +**coinbase**: Slope = 8.25µs/gas, R² = 0.9857 + +![coinbase](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_coinbase.png) + +**caller**: Slope = 8.17µs/gas, R² = 0.9845 + +![caller](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_caller.png) + +**origin**: Slope = 8.10µs/gas, R² = 0.9678 + +![origin](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_origin.png) + +**delegatecall**: Slope = 7.55µs/gas, R² = 0.9999 + +![delegatecall](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_delegatecall.png) + +**push32**: Slope = 7.52µs/gas, R² = 0.9244 + +![push32](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_push32.png) + +**address**: Slope = 7.42µs/gas, R² = 0.9953 + +![address](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_address.png) + +**mul**: Slope = 7.33µs/gas, R² = 0.9892 + +![mul](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_mul.png) + +**codecopy**: Slope = 7.13µs/gas, R² = 0.9950 + +![codecopy](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_codecopy.png) + +**shr**: Slope = 7.09µs/gas, R² = 0.9971 + +![shr](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_shr.png) + +**keccak256**: Slope = 6.68µs/gas, R² = 0.9992 + +![keccak256](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_keccak256.png) + +**blobbasefee**: Slope = 6.62µs/gas, R² = 0.9940 + +![blobbasefee](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_blobbasefee.png) + +**mload**: Slope = 6.55µs/gas, R² = 0.9755 + +![mload](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_mload.png) + +**gasprice**: Slope = 6.50µs/gas, R² = 0.9995 + +![gasprice](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_gasprice.png) + +**calldataload**: Slope = 6.35µs/gas, R² = 0.9983 + +![calldataload](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_calldataload.png) + +**callvalue**: Slope = 6.31µs/gas, R² = 0.9789 + +![callvalue](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_callvalue.png) + +**shl**: Slope = 6.26µs/gas, R² = 0.9913 + +![shl](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_shl.png) + +**signextend**: Slope = 5.91µs/gas, R² = 0.9918 + +![signextend](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_signextend.png) + +**codesize**: Slope = 5.63µs/gas, R² = 0.9864 + +![codesize](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_codesize.png) + +**gas**: Slope = 5.51µs/gas, R² = 0.9836 + +![gas](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_gas.png) + +**calldatasize**: Slope = 5.48µs/gas, R² = 0.9780 + +![calldatasize](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_calldatasize.png) + +**pc**: Slope = 5.43µs/gas, R² = 0.9565 + +![pc](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_pc.png) + +**and**: Slope = 5.24µs/gas, R² = 0.9897 + +![and](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_and.png) + +**chainid**: Slope = 5.04µs/gas, R² = 1.0000 + +![chainid](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_chainid.png) + +**push0**: Slope = 4.92µs/gas, R² = 0.9425 + +![push0](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_push0.png) + +**xor**: Slope = 4.91µs/gas, R² = 0.9720 + +![xor](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_xor.png) + +**gaslimit**: Slope = 4.79µs/gas, R² = 0.9959 + +![gaslimit](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_gaslimit.png) + +**returndatasize**: Slope = 4.70µs/gas, R² = 0.9944 + +![returndatasize](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_returndatasize.png) + +**basefee**: Slope = 4.68µs/gas, R² = 0.9866 + +![basefee](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_basefee.png) + +**number**: Slope = 4.66µs/gas, R² = 0.9843 + +![number](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_number.png) + +**sstore**: Slope = 4.61µs/gas, R² = 0.9998 + +![sstore](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_sstore.png) + +**byte**: Slope = 4.54µs/gas, R² = 0.9691 + +![byte](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_byte.png) + +**timestamp**: Slope = 4.33µs/gas, R² = 0.9887 + +![timestamp](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_timestamp.png) + +**returndatacopy**: Slope = 4.20µs/gas, R² = 0.9857 + +![returndatacopy](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_returndatacopy.png) + +**calldatacopy**: Slope = 4.14µs/gas, R² = 0.9724 + +![calldatacopy](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_calldatacopy.png) + +**jumpdest**: Slope = 4.10µs/gas, R² = 0.9930 + +![jumpdest](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_jumpdest.png) + +**msize**: Slope = 3.96µs/gas, R² = 0.9917 + +![msize](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_msize.png) + +**lt**: Slope = 3.95µs/gas, R² = 0.9971 + +![lt](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_lt.png) + +**gt**: Slope = 3.84µs/gas, R² = 0.9896 + +![gt](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_gt.png) + +**slt**: Slope = 3.79µs/gas, R² = 0.8388 + +![slt](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_slt.png) + +**add**: Slope = 3.78µs/gas, R² = 0.9987 + +![add](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_add.png) + +**push16**: Slope = 3.73µs/gas, R² = 0.9960 + +![push16](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_push16.png) + +**sgt**: Slope = 3.55µs/gas, R² = 0.8265 + +![sgt](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_sgt.png) + +**dup16**: Slope = 3.54µs/gas, R² = 0.9449 + +![dup16](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_dup16.png) + +**mstore8**: Slope = 3.36µs/gas, R² = 0.9735 + +![mstore8](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_mstore8.png) + +**extcodehash**: Slope = 3.24µs/gas, R² = 0.9982 + +![extcodehash](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_extcodehash.png) + +**dup8**: Slope = 3.21µs/gas, R² = 0.9217 + +![dup8](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_dup8.png) + +**dup1**: Slope = 3.05µs/gas, R² = 0.8879 + +![dup1](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_dup1.png) + +**or**: Slope = 3.02µs/gas, R² = 0.8897 + +![or](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_or.png) + +**push1**: Slope = 2.75µs/gas, R² = 0.9551 + +![push1](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_push1.png) + +**sub**: Slope = 2.59µs/gas, R² = 0.7971 + +![sub](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_sub.png) + +**balance**: Slope = 2.43µs/gas, R² = 0.9993 + +![balance](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_balance.png) + +**extcodecopy**: Slope = 2.30µs/gas, R² = 0.9967 + +![extcodecopy](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_extcodecopy.png) + +**iszero**: Slope = 2.30µs/gas, R² = 0.8634 + +![iszero](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_iszero.png) + +**extcodesize**: Slope = 2.25µs/gas, R² = 0.9978 + +![extcodesize](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_extcodesize.png) + +**sload**: Slope = 2.10µs/gas, R² = 0.9979 + +![sload](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_sload.png) + +**jumpi**: Slope = 2.09µs/gas, R² = 0.9972 + +![jumpi](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_jumpi.png) + +**mcopy**: Slope = 2.09µs/gas, R² = 0.9951 + +![mcopy](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_mcopy.png) + +**tstore**: Slope = 2.08µs/gas, R² = 0.9995 + +![tstore](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_tstore.png) + +**identity**: Slope = 2.06µs/gas, R² = 0.7010 + +![identity](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_identity.png) + +**blobhash**: Slope = 1.92µs/gas, R² = 0.9644 + +![blobhash](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_blobhash.png) + +**not**: Slope = 1.89µs/gas, R² = 0.9312 + +![not](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_not.png) + +**ripemd160**: Slope = 1.55µs/gas, R² = 0.9559 + +![ripemd160](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_ripemd160.png) + +**pop**: Slope = 0.96µs/gas, R² = 0.7252 + +![pop](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_pop.png) + +**jump**: Slope = 0.88µs/gas, R² = 0.8975 + +![jump](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_jump.png) + +**tload**: Slope = 0.35µs/gas, R² = 0.9982 + +![tload](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_tload.png) + +**create**: Slope = 0.15µs/gas, R² = 0.9997 + +![create](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_create.png) + +**create2**: Slope = 0.15µs/gas, R² = 0.9997 + +![create2](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_create2.png) + +**log0**: Slope = 0.15µs/gas, R² = 0.9268 + +![log0](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_log0.png) + +**log1**: Slope = 0.14µs/gas, R² = 0.9995 + +![log1](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_log1.png) + +**log2**: Slope = 0.08µs/gas, R² = 0.9756 + +![log2](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_log2.png) + +**log4**: Slope = 0.08µs/gas, R² = 0.9897 + +![log4](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_log4.png) + +**log3**: Slope = 0.07µs/gas, R² = 0.9979 + +![log3](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_proving_log3.png) + +### sp1 Gas vs ZK Cycles + +**modexp**: Slope = 3.79K cycles/gas, R² = 1.0000 + +![modexp](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_modexp.png) + +**point_evaluation**: Slope = 2.96K cycles/gas, R² = 1.0000 + +![point_evaluation](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_point_evaluation.png) + +**bls12_map_fp_to_g1**: Slope = 1.16K cycles/gas, R² = 1.0000 + +![bls12_map_fp_to_g1](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_bls12_map_fp_to_g1.png) + +**bls12_pairing**: Slope = 995.58 cycles/gas, R² = 1.0000 + +![bls12_pairing](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_bls12_pairing.png) + +**bls12_map_fp2_to_g2**: Slope = 830.06 cycles/gas, R² = 1.0000 + +![bls12_map_fp2_to_g2](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_bls12_map_fp2_to_g2.png) + +**bls12_g1add**: Slope = 816.57 cycles/gas, R² = 1.0000 + +![bls12_g1add](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_bls12_g1add.png) + +**bls12_g2add**: Slope = 810.27 cycles/gas, R² = 1.0000 + +![bls12_g2add](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_bls12_g2add.png) + +**blake2f**: Slope = 597.02 cycles/gas, R² = 1.0000 + +![blake2f](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_blake2f.png) + +**mulmod**: Slope = 422.25 cycles/gas, R² = 1.0000 + +![mulmod](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_mulmod.png) + +**bls12_g1msm**: Slope = 371.60 cycles/gas, R² = 1.0000 + +![bls12_g1msm](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_bls12_g1msm.png) + +**div**: Slope = 306.02 cycles/gas, R² = 1.0000 + +![div](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_div.png) + +**bls12_g2msm**: Slope = 280.55 cycles/gas, R² = 1.0000 + +![bls12_g2msm](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_bls12_g2msm.png) + +**sdiv**: Slope = 260.42 cycles/gas, R² = 1.0000 + +![sdiv](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_sdiv.png) + +**mod**: Slope = 255.42 cycles/gas, R² = 1.0000 + +![mod](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_mod.png) + +**selfbalance**: Slope = 234.00 cycles/gas, R² = 1.0000 + +![selfbalance](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_selfbalance.png) + +**addmod**: Slope = 193.00 cycles/gas, R² = 1.0000 + +![addmod](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_addmod.png) + +**eq**: Slope = 99.03 cycles/gas, R² = 1.0000 + +![eq](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_eq.png) + +**exp**: Slope = 87.58 cycles/gas, R² = 1.0000 + +![exp](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_exp.png) + +**smod**: Slope = 79.62 cycles/gas, R² = 1.0000 + +![smod](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_smod.png) + +**prevrandao**: Slope = 78.50 cycles/gas, R² = 1.0000 + +![prevrandao](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_prevrandao.png) + +**sar**: Slope = 78.34 cycles/gas, R² = 1.0000 + +![sar](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_sar.png) + +**bn128_mul**: Slope = 77.49 cycles/gas, R² = 1.0000 + +![bn128_mul](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_bn128_mul.png) + +**call**: Slope = 68.84 cycles/gas, R² = 1.0000 + +![call](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_call.png) + +**callcode**: Slope = 66.91 cycles/gas, R² = 1.0000 + +![callcode](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_callcode.png) + +**staticcall**: Slope = 66.80 cycles/gas, R² = 1.0000 + +![staticcall](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_staticcall.png) + +**mstore**: Slope = 62.70 cycles/gas, R² = 1.0000 + +![mstore](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_mstore.png) + +**mul**: Slope = 60.62 cycles/gas, R² = 1.0000 + +![mul](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_mul.png) + +**address**: Slope = 58.00 cycles/gas, R² = 1.0000 + +![address](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_address.png) + +**caller**: Slope = 58.00 cycles/gas, R² = 1.0000 + +![caller](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_caller.png) + +**coinbase**: Slope = 58.00 cycles/gas, R² = 1.0000 + +![coinbase](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_coinbase.png) + +**origin**: Slope = 58.00 cycles/gas, R² = 1.0000 + +![origin](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_origin.png) + +**delegatecall**: Slope = 56.48 cycles/gas, R² = 1.0000 + +![delegatecall](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_delegatecall.png) + +**calldataload**: Slope = 54.34 cycles/gas, R² = 1.0000 + +![calldataload](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_calldataload.png) + +**bn128_pairing**: Slope = 54.18 cycles/gas, R² = 1.0000 + +![bn128_pairing](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_bn128_pairing.png) + +**mload**: Slope = 54.01 cycles/gas, R² = 1.0000 + +![mload](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_mload.png) + +**signextend**: Slope = 53.42 cycles/gas, R² = 1.0000 + +![signextend](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_signextend.png) + +**swap8**: Slope = 53.37 cycles/gas, R² = 1.0000 + +![swap8](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_swap8.png) + +**swap1**: Slope = 53.37 cycles/gas, R² = 1.0000 + +![swap1](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_swap1.png) + +**swap16**: Slope = 53.34 cycles/gas, R² = 1.0000 + +![swap16](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_swap16.png) + +**shr**: Slope = 51.34 cycles/gas, R² = 1.0000 + +![shr](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_shr.png) + +**shl**: Slope = 50.34 cycles/gas, R² = 1.0000 + +![shl](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_shl.png) + +**codecopy**: Slope = 47.07 cycles/gas, R² = 0.9929 + +![codecopy](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_codecopy.png) + +**blobbasefee**: Slope = 42.50 cycles/gas, R² = 1.0000 + +![blobbasefee](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_blobbasefee.png) + +**push32**: Slope = 41.71 cycles/gas, R² = 1.0000 + +![push32](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_push32.png) + +**bn128_add**: Slope = 40.55 cycles/gas, R² = 1.0000 + +![bn128_add](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_bn128_add.png) + +**gasprice**: Slope = 40.50 cycles/gas, R² = 1.0000 + +![gasprice](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_gasprice.png) + +**callvalue**: Slope = 39.00 cycles/gas, R² = 1.0000 + +![callvalue](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_callvalue.png) + +**sgt**: Slope = 38.02 cycles/gas, R² = 1.0000 + +![sgt](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_sgt.png) + +**slt**: Slope = 38.02 cycles/gas, R² = 1.0000 + +![slt](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_slt.png) + +**sub**: Slope = 37.36 cycles/gas, R² = 1.0000 + +![sub](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_sub.png) + +**calldatacopy**: Slope = 35.33 cycles/gas, R² = 1.0000 + +![calldatacopy](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_calldatacopy.png) + +**sstore**: Slope = 34.90 cycles/gas, R² = 1.0000 + +![sstore](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_sstore.png) + +**number**: Slope = 32.50 cycles/gas, R² = 1.0000 + +![number](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_number.png) + +**timestamp**: Slope = 32.50 cycles/gas, R² = 1.0000 + +![timestamp](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_timestamp.png) + +**add**: Slope = 32.36 cycles/gas, R² = 1.0000 + +![add](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_add.png) + +**calldatasize**: Slope = 32.00 cycles/gas, R² = 1.0000 + +![calldatasize](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_calldatasize.png) + +**pc**: Slope = 32.00 cycles/gas, R² = 1.0000 + +![pc](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_pc.png) + +**chainid**: Slope = 31.50 cycles/gas, R² = 1.0000 + +![chainid](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_chainid.png) + +**basefee**: Slope = 31.50 cycles/gas, R² = 1.0000 + +![basefee](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_basefee.png) + +**codesize**: Slope = 30.50 cycles/gas, R² = 1.0000 + +![codesize](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_codesize.png) + +**msize**: Slope = 30.00 cycles/gas, R² = 1.0000 + +![msize](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_msize.png) + +**gaslimit**: Slope = 30.00 cycles/gas, R² = 1.0000 + +![gaslimit](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_gaslimit.png) + +**gas**: Slope = 30.00 cycles/gas, R² = 1.0000 + +![gas](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_gas.png) + +**returndatasize**: Slope = 30.00 cycles/gas, R² = 1.0000 + +![returndatasize](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_returndatasize.png) + +**push0**: Slope = 28.50 cycles/gas, R² = 1.0000 + +![push0](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_push0.png) + +**push16**: Slope = 28.36 cycles/gas, R² = 1.0000 + +![push16](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_push16.png) + +**gt**: Slope = 27.36 cycles/gas, R² = 1.0000 + +![gt](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_gt.png) + +**lt**: Slope = 27.36 cycles/gas, R² = 1.0000 + +![lt](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_lt.png) + +**byte**: Slope = 27.34 cycles/gas, R² = 1.0000 + +![byte](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_byte.png) + +**returndatacopy**: Slope = 26.45 cycles/gas, R² = 1.0000 + +![returndatacopy](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_returndatacopy.png) + +**mstore8**: Slope = 26.01 cycles/gas, R² = 1.0000 + +![mstore8](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_mstore8.png) + +**jumpdest**: Slope = 26.00 cycles/gas, R² = 1.0000 + +![jumpdest](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_jumpdest.png) + +**and**: Slope = 24.03 cycles/gas, R² = 1.0000 + +![and](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_and.png) + +**xor**: Slope = 24.03 cycles/gas, R² = 1.0000 + +![xor](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_xor.png) + +**or**: Slope = 24.02 cycles/gas, R² = 1.0000 + +![or](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_or.png) + +**blobhash**: Slope = 22.34 cycles/gas, R² = 1.0000 + +![blobhash](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_blobhash.png) + +**extcodehash**: Slope = 22.15 cycles/gas, R² = 1.0000 + +![extcodehash](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_extcodehash.png) + +**iszero**: Slope = 19.33 cycles/gas, R² = 1.0000 + +![iszero](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_iszero.png) + +**not**: Slope = 18.34 cycles/gas, R² = 1.0000 + +![not](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_not.png) + +**keccak256**: Slope = 17.78 cycles/gas, R² = 1.0000 + +![keccak256](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_keccak256.png) + +**dup8**: Slope = 17.02 cycles/gas, R² = 1.0000 + +![dup8](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_dup8.png) + +**dup1**: Slope = 17.00 cycles/gas, R² = 1.0000 + +![dup1](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_dup1.png) + +**dup16**: Slope = 16.99 cycles/gas, R² = 1.0000 + +![dup16](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_dup16.png) + +**extcodesize**: Slope = 16.66 cycles/gas, R² = 1.0000 + +![extcodesize](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_extcodesize.png) + +**balance**: Slope = 16.60 cycles/gas, R² = 1.0000 + +![balance](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_balance.png) + +**tstore**: Slope = 15.90 cycles/gas, R² = 1.0000 + +![tstore](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_tstore.png) + +**extcodecopy**: Slope = 15.75 cycles/gas, R² = 1.0000 + +![extcodecopy](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_extcodecopy.png) + +**push1**: Slope = 15.34 cycles/gas, R² = 1.0000 + +![push1](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_push1.png) + +**pop**: Slope = 15.00 cycles/gas, R² = 1.0000 + +![pop](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_pop.png) + +**sload**: Slope = 15.00 cycles/gas, R² = 1.0000 + +![sload](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_sload.png) + +**mcopy**: Slope = 14.80 cycles/gas, R² = 1.0000 + +![mcopy](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_mcopy.png) + +**sha256**: Slope = 12.40 cycles/gas, R² = 1.0000 + +![sha256](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_sha256.png) + +**jumpi**: Slope = 11.60 cycles/gas, R² = 1.0000 + +![jumpi](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_jumpi.png) + +**ecrecover**: Slope = 10.67 cycles/gas, R² = 1.0000 + +![ecrecover](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_ecrecover.png) + +**ripemd160**: Slope = 9.01 cycles/gas, R² = 1.0000 + +![ripemd160](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_ripemd160.png) + +**jump**: Slope = 7.88 cycles/gas, R² = 1.0000 + +![jump](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_jump.png) + +**identity**: Slope = 4.66 cycles/gas, R² = 1.0000 + +![identity](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_identity.png) + +**tload**: Slope = 2.43 cycles/gas, R² = 1.0000 + +![tload](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_tload.png) + +**create2**: Slope = 0.8391 cycles/gas, R² = 0.9997 + +![create2](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_create2.png) + +**create**: Slope = 0.8048 cycles/gas, R² = 0.9996 + +![create](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_create.png) + +**log1**: Slope = 0.5628 cycles/gas, R² = 0.9997 + +![log1](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_log1.png) + +**log0**: Slope = 0.5558 cycles/gas, R² = 0.9944 + +![log0](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_log0.png) + +**log3**: Slope = 0.316 cycles/gas, R² = 0.9999 + +![log3](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_log3.png) + +**log4**: Slope = 0.3136 cycles/gas, R² = 0.9998 + +![log4](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_log4.png) + +**log2**: Slope = 0.3078 cycles/gas, R² = 0.9999 + +![log2](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/gas_zkcycles_log2.png) + +### sp1 ZK Cycles vs Proving Time + +**bn128_add**: Slope = 0.93µs/cycle, R² = 0.9193 + +![bn128_add](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_bn128_add.png) + +**ecrecover**: Slope = 0.89µs/cycle, R² = 0.9380 + +![ecrecover](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_ecrecover.png) + +**sha256**: Slope = 0.77µs/cycle, R² = 0.9985 + +![sha256](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_sha256.png) + +**bn128_mul**: Slope = 0.52µs/cycle, R² = 0.9977 + +![bn128_mul](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_bn128_mul.png) + +**bn128_pairing**: Slope = 0.41µs/cycle, R² = 0.9909 + +![bn128_pairing](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_bn128_pairing.png) + +**keccak256**: Slope = 0.38µs/cycle, R² = 0.9992 + +![keccak256](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_keccak256.png) + +**log0**: Slope = 0.27µs/cycle, R² = 0.9422 + +![log0](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_log0.png) + +**log2**: Slope = 0.26µs/cycle, R² = 0.9747 + +![log2](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_log2.png) + +**log4**: Slope = 0.25µs/cycle, R² = 0.9886 + +![log4](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_log4.png) + +**log1**: Slope = 0.24µs/cycle, R² = 0.9988 + +![log1](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_log1.png) + +**and**: Slope = 0.22µs/cycle, R² = 0.9896 + +![and](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_and.png) + +**log3**: Slope = 0.22µs/cycle, R² = 0.9981 + +![log3](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_log3.png) + +**dup16**: Slope = 0.21µs/cycle, R² = 0.9461 + +![dup16](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_dup16.png) + +**xor**: Slope = 0.20µs/cycle, R² = 0.9720 + +![xor](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_xor.png) + +**swap16**: Slope = 0.20µs/cycle, R² = 0.9845 + +![swap16](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_swap16.png) + +**dup8**: Slope = 0.19µs/cycle, R² = 0.9216 + +![dup8](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_dup8.png) + +**create**: Slope = 0.19µs/cycle, R² = 0.9990 + +![create](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_create.png) + +**swap8**: Slope = 0.19µs/cycle, R² = 0.9846 + +![swap8](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_swap8.png) + +**codesize**: Slope = 0.18µs/cycle, R² = 0.9863 + +![codesize](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_codesize.png) + +**gas**: Slope = 0.18µs/cycle, R² = 0.9837 + +![gas](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_gas.png) + +**push32**: Slope = 0.18µs/cycle, R² = 0.9244 + +![push32](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_push32.png) + +**jumpi**: Slope = 0.18µs/cycle, R² = 0.9972 + +![jumpi](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_jumpi.png) + +**dup1**: Slope = 0.18µs/cycle, R² = 0.8879 + +![dup1](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_dup1.png) + +**push1**: Slope = 0.18µs/cycle, R² = 0.9551 + +![push1](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_push1.png) + +**create2**: Slope = 0.18µs/cycle, R² = 0.9989 + +![create2](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_create2.png) + +**swap1**: Slope = 0.18µs/cycle, R² = 0.9784 + +![swap1](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_swap1.png) + +**push0**: Slope = 0.17µs/cycle, R² = 0.9421 + +![push0](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_push0.png) + +**ripemd160**: Slope = 0.17µs/cycle, R² = 0.9550 + +![ripemd160](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_ripemd160.png) + +**calldatasize**: Slope = 0.17µs/cycle, R² = 0.9780 + +![calldatasize](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_calldatasize.png) + +**pc**: Slope = 0.17µs/cycle, R² = 0.9563 + +![pc](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_pc.png) + +**byte**: Slope = 0.17µs/cycle, R² = 0.9691 + +![byte](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_byte.png) + +**callvalue**: Slope = 0.16µs/cycle, R² = 0.9789 + +![callvalue](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_callvalue.png) + +**gasprice**: Slope = 0.16µs/cycle, R² = 0.9995 + +![gasprice](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_gasprice.png) + +**chainid**: Slope = 0.16µs/cycle, R² = 1.0000 + +![chainid](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_chainid.png) + +**gaslimit**: Slope = 0.16µs/cycle, R² = 0.9960 + +![gaslimit](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_gaslimit.png) + +**returndatacopy**: Slope = 0.16µs/cycle, R² = 0.9857 + +![returndatacopy](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_returndatacopy.png) + +**jumpdest**: Slope = 0.16µs/cycle, R² = 0.9930 + +![jumpdest](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_jumpdest.png) + +**returndatasize**: Slope = 0.16µs/cycle, R² = 0.9945 + +![returndatasize](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_returndatasize.png) + +**blobbasefee**: Slope = 0.16µs/cycle, R² = 0.9941 + +![blobbasefee](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_blobbasefee.png) + +**mstore**: Slope = 0.16µs/cycle, R² = 0.9946 + +![mstore](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_mstore.png) + +**codecopy**: Slope = 0.15µs/cycle, R² = 0.9996 + +![codecopy](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_codecopy.png) + +**basefee**: Slope = 0.15µs/cycle, R² = 0.9867 + +![basefee](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_basefee.png) + +**eq**: Slope = 0.15µs/cycle, R² = 0.9872 + +![eq](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_eq.png) + +**extcodehash**: Slope = 0.15µs/cycle, R² = 0.9982 + +![extcodehash](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_extcodehash.png) + +**modexp**: Slope = 0.15µs/cycle, R² = 0.9945 + +![modexp](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_modexp.png) + +**extcodecopy**: Slope = 0.15µs/cycle, R² = 0.9967 + +![extcodecopy](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_extcodecopy.png) + +**balance**: Slope = 0.15µs/cycle, R² = 0.9993 + +![balance](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_balance.png) + +**lt**: Slope = 0.14µs/cycle, R² = 0.9970 + +![lt](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_lt.png) + +**number**: Slope = 0.14µs/cycle, R² = 0.9845 + +![number](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_number.png) + +**tload**: Slope = 0.14µs/cycle, R² = 0.9983 + +![tload](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_tload.png) + +**coinbase**: Slope = 0.14µs/cycle, R² = 0.9856 + +![coinbase](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_coinbase.png) + +**mcopy**: Slope = 0.14µs/cycle, R² = 0.9948 + +![mcopy](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_mcopy.png) + +**caller**: Slope = 0.14µs/cycle, R² = 0.9845 + +![caller](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_caller.png) + +**bls12_g2msm**: Slope = 0.14µs/cycle, R² = 0.9966 + +![bls12_g2msm](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_bls12_g2msm.png) + +**gt**: Slope = 0.14µs/cycle, R² = 0.9895 + +![gt](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_gt.png) + +**sload**: Slope = 0.14µs/cycle, R² = 0.9979 + +![sload](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_sload.png) + +**bls12_g1msm**: Slope = 0.14µs/cycle, R² = 0.9974 + +![bls12_g1msm](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_bls12_g1msm.png) + +**origin**: Slope = 0.14µs/cycle, R² = 0.9678 + +![origin](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_origin.png) + +**callcode**: Slope = 0.14µs/cycle, R² = 0.9990 + +![callcode](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_callcode.png) + +**shr**: Slope = 0.14µs/cycle, R² = 0.9971 + +![shr](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_shr.png) + +**bls12_g1add**: Slope = 0.14µs/cycle, R² = 0.9995 + +![bls12_g1add](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_bls12_g1add.png) + +**exp**: Slope = 0.14µs/cycle, R² = 0.9968 + +![exp](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_exp.png) + +**bls12_map_fp_to_g1**: Slope = 0.14µs/cycle, R² = 0.9993 + +![bls12_map_fp_to_g1](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_bls12_map_fp_to_g1.png) + +**bls12_g2add**: Slope = 0.14µs/cycle, R² = 0.9986 + +![bls12_g2add](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_bls12_g2add.png) + +**blake2f**: Slope = 0.14µs/cycle, R² = 0.9995 + +![blake2f](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_blake2f.png) + +**prevrandao**: Slope = 0.14µs/cycle, R² = 0.9903 + +![prevrandao](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_prevrandao.png) + +**bls12_map_fp2_to_g2**: Slope = 0.14µs/cycle, R² = 0.9999 + +![bls12_map_fp2_to_g2](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_bls12_map_fp2_to_g2.png) + +**extcodesize**: Slope = 0.13µs/cycle, R² = 0.9978 + +![extcodesize](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_extcodesize.png) + +**point_evaluation**: Slope = 0.13µs/cycle, R² = 1.0000 + +![point_evaluation](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_point_evaluation.png) + +**call**: Slope = 0.13µs/cycle, R² = 0.9931 + +![call](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_call.png) + +**bls12_pairing**: Slope = 0.13µs/cycle, R² = 1.0000 + +![bls12_pairing](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_bls12_pairing.png) + +**staticcall**: Slope = 0.13µs/cycle, R² = 0.9999 + +![staticcall](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_staticcall.png) + +**delegatecall**: Slope = 0.13µs/cycle, R² = 0.9999 + +![delegatecall](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_delegatecall.png) + +**selfbalance**: Slope = 0.13µs/cycle, R² = 0.9980 + +![selfbalance](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_selfbalance.png) + +**timestamp**: Slope = 0.13µs/cycle, R² = 0.9886 + +![timestamp](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_timestamp.png) + +**sstore**: Slope = 0.13µs/cycle, R² = 0.9998 + +![sstore](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_sstore.png) + +**msize**: Slope = 0.13µs/cycle, R² = 0.9917 + +![msize](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_msize.png) + +**push16**: Slope = 0.13µs/cycle, R² = 0.9961 + +![push16](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_push16.png) + +**tstore**: Slope = 0.13µs/cycle, R² = 0.9995 + +![tstore](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_tstore.png) + +**mstore8**: Slope = 0.13µs/cycle, R² = 0.9736 + +![mstore8](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_mstore8.png) + +**address**: Slope = 0.13µs/cycle, R² = 0.9954 + +![address](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_address.png) + +**div**: Slope = 0.13µs/cycle, R² = 0.9973 + +![div](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_div.png) + +**or**: Slope = 0.13µs/cycle, R² = 0.8900 + +![or](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_or.png) + +**addmod**: Slope = 0.13µs/cycle, R² = 0.9999 + +![addmod](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_addmod.png) + +**sdiv**: Slope = 0.13µs/cycle, R² = 0.9951 + +![sdiv](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_sdiv.png) + +**sar**: Slope = 0.13µs/cycle, R² = 0.9839 + +![sar](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_sar.png) + +**mod**: Slope = 0.12µs/cycle, R² = 0.9997 + +![mod](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_mod.png) + +**mulmod**: Slope = 0.12µs/cycle, R² = 0.9999 + +![mulmod](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_mulmod.png) + +**shl**: Slope = 0.12µs/cycle, R² = 0.9913 + +![shl](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_shl.png) + +**smod**: Slope = 0.12µs/cycle, R² = 0.9969 + +![smod](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_smod.png) + +**mload**: Slope = 0.12µs/cycle, R² = 0.9755 + +![mload](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_mload.png) + +**mul**: Slope = 0.12µs/cycle, R² = 0.9892 + +![mul](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_mul.png) + +**iszero**: Slope = 0.12µs/cycle, R² = 0.8634 + +![iszero](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_iszero.png) + +**calldatacopy**: Slope = 0.12µs/cycle, R² = 0.9724 + +![calldatacopy](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_calldatacopy.png) + +**calldataload**: Slope = 0.12µs/cycle, R² = 0.9983 + +![calldataload](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_calldataload.png) + +**add**: Slope = 0.12µs/cycle, R² = 0.9987 + +![add](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_add.png) + +**jump**: Slope = 0.11µs/cycle, R² = 0.8975 + +![jump](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_jump.png) + +**signextend**: Slope = 0.11µs/cycle, R² = 0.9919 + +![signextend](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_signextend.png) + +**not**: Slope = 0.10µs/cycle, R² = 0.9312 + +![not](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_not.png) + +**slt**: Slope = 0.10µs/cycle, R² = 0.8383 + +![slt](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_slt.png) + +**sgt**: Slope = 0.09µs/cycle, R² = 0.8261 + +![sgt](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_sgt.png) + +**blobhash**: Slope = 0.09µs/cycle, R² = 0.9642 + +![blobhash](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_blobhash.png) + +**sub**: Slope = 0.07µs/cycle, R² = 0.7967 + +![sub](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_sub.png) + +**pop**: Slope = 0.06µs/cycle, R² = 0.7252 + +![pop](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_pop.png) + +**identity**: Slope = 0.44µs/cycle, R² = 0.6975 + +![identity](/zkevm-benchmark-workload/marginal-gas-benchmark/sp1/plots/zkcycles_proving_identity.png) + +## Appendix: Per-Op-Count Regression + +### Gas ↔ Proving Time + +| Opcode | Time/Gas | R² | Std Error | +|--------|----------|-----|-----------| +| modexp | 554.91µs/gas | 0.9945 | 29.11µs | +| point_evaluation | 398.23µs/gas | 1.0000 | 1.59µs | +| bls12_map_fp_to_g1 | 159.35µs/gas | 0.9993 | 3.07µs | +| bls12_pairing | 133.93µs/gas | 1.0000 | 0.46µs | +| bls12_g1add | 112.19µs/gas | 0.9995 | 1.84µs | +| bls12_map_fp2_to_g2 | 112.10µs/gas | 0.9999 | 0.84µs | +| bls12_g2add | 110.98µs/gas | 0.9986 | 2.97µs | +| blake2f | 81.60µs/gas | 0.9995 | 1.78µs | +| mulmod | 52.68µs/gas | 0.9999 | 0.33µs | +| bls12_g1msm | 51.92µs/gas | 0.9974 | 1.87µs | +| bn128_mul | 40.27µs/gas | 0.9977 | 1.36µs | +| bls12_g2msm | 39.40µs/gas | 0.9966 | 1.62µs | +| div | 38.98µs/gas | 0.9973 | 1.43µs | +| bn128_add | 37.83µs/gas | 0.9196 | 7.91µs | +| sdiv | 32.61µs/gas | 0.9951 | 1.62µs | +| mod | 31.87µs/gas | 0.9997 | 0.39µs | +| selfbalance | 31.23µs/gas | 0.9980 | 0.99µs | +| addmod | 24.18µs/gas | 0.9999 | 0.14µs | +| bn128_pairing | 22.11µs/gas | 0.9909 | 1.23µs | +| eq | 14.68µs/gas | 0.9872 | 1.18µs | +| exp | 12.03µs/gas | 0.9968 | 0.48µs | +| swap16 | 10.79µs/gas | 0.9845 | 0.96µs | +| prevrandao | 10.61µs/gas | 0.9904 | 0.74µs | +| swap8 | 9.93µs/gas | 0.9847 | 0.88µs | +| sar | 9.80µs/gas | 0.9839 | 0.89µs | +| mstore | 9.77µs/gas | 0.9946 | 0.51µs | +| smod | 9.71µs/gas | 0.9969 | 0.38µs | +| sha256 | 9.61µs/gas | 0.9985 | 0.26µs | +| ecrecover | 9.55µs/gas | 0.9380 | 1.74µs | +| swap1 | 9.49µs/gas | 0.9781 | 0.71µs | +| call | 9.27µs/gas | 0.9932 | 0.54µs | +| callcode | 9.26µs/gas | 0.9991 | 0.20µs | +| staticcall | 8.97µs/gas | 0.9999 | 0.05µs | +| coinbase | 8.25µs/gas | 0.9857 | 0.70µs | +| caller | 8.17µs/gas | 0.9845 | 0.72µs | +| origin | 8.10µs/gas | 0.9678 | 1.04µs | +| delegatecall | 7.55µs/gas | 0.9999 | 0.05µs | +| push32 | 7.52µs/gas | 0.9244 | 1.08µs | +| address | 7.42µs/gas | 0.9953 | 0.36µs | +| mul | 7.33µs/gas | 0.9892 | 0.54µs | +| codecopy | 7.13µs/gas | 0.9950 | 0.36µs | +| shr | 7.09µs/gas | 0.9971 | 0.27µs | +| keccak256 | 6.68µs/gas | 0.9992 | 0.14µs | +| blobbasefee | 6.62µs/gas | 0.9940 | 0.36µs | +| mload | 6.55µs/gas | 0.9755 | 0.73µs | +| gasprice | 6.50µs/gas | 0.9995 | 0.10µs | +| calldataload | 6.35µs/gas | 0.9983 | 0.18µs | +| callvalue | 6.31µs/gas | 0.9789 | 0.53µs | +| shl | 6.26µs/gas | 0.9913 | 0.42µs | +| signextend | 5.91µs/gas | 0.9918 | 0.38µs | +| codesize | 5.63µs/gas | 0.9864 | 0.47µs | +| gas | 5.51µs/gas | 0.9836 | 0.50µs | +| calldatasize | 5.48µs/gas | 0.9780 | 0.41µs | +| pc | 5.43µs/gas | 0.9565 | 0.82µs | +| and | 5.24µs/gas | 0.9897 | 0.38µs | +| chainid | 5.04µs/gas | 1.0000 | 0.00µs | +| push0 | 4.92µs/gas | 0.9425 | 0.86µs | +| xor | 4.91µs/gas | 0.9720 | 0.59µs | +| gaslimit | 4.79µs/gas | 0.9959 | 0.22µs | +| returndatasize | 4.70µs/gas | 0.9944 | 0.25µs | +| basefee | 4.68µs/gas | 0.9866 | 0.39µs | +| number | 4.66µs/gas | 0.9843 | 0.42µs | +| sstore | 4.61µs/gas | 0.9998 | 0.05µs | +| byte | 4.54µs/gas | 0.9691 | 0.57µs | +| timestamp | 4.33µs/gas | 0.9887 | 0.33µs | +| returndatacopy | 4.20µs/gas | 0.9857 | 0.36µs | +| calldatacopy | 4.14µs/gas | 0.9724 | 0.49µs | +| jumpdest | 4.10µs/gas | 0.9930 | 0.24µs | +| msize | 3.96µs/gas | 0.9917 | 0.21µs | +| lt | 3.95µs/gas | 0.9971 | 0.15µs | +| gt | 3.84µs/gas | 0.9896 | 0.28µs | +| slt | 3.79µs/gas | 0.8388 | 0.83µs | +| add | 3.78µs/gas | 0.9987 | 0.09µs | +| push16 | 3.73µs/gas | 0.9960 | 0.17µs | +| sgt | 3.55µs/gas | 0.8265 | 0.81µs | +| dup16 | 3.54µs/gas | 0.9449 | 0.43µs | +| mstore8 | 3.36µs/gas | 0.9735 | 0.39µs | +| extcodehash | 3.24µs/gas | 0.9982 | 0.08µs | +| dup8 | 3.21µs/gas | 0.9217 | 0.47µs | +| dup1 | 3.05µs/gas | 0.8879 | 0.54µs | +| or | 3.02µs/gas | 0.8897 | 0.53µs | +| push1 | 2.75µs/gas | 0.9551 | 0.30µs | +| sub | 2.59µs/gas | 0.7971 | 0.65µs | +| balance | 2.43µs/gas | 0.9993 | 0.05µs | +| extcodecopy | 2.30µs/gas | 0.9967 | 0.09µs | +| iszero | 2.30µs/gas | 0.8634 | 0.46µs | +| extcodesize | 2.25µs/gas | 0.9978 | 0.07µs | +| sload | 2.10µs/gas | 0.9979 | 0.07µs | +| jumpi | 2.09µs/gas | 0.9972 | 0.08µs | +| mcopy | 2.09µs/gas | 0.9951 | 0.10µs | +| tstore | 2.08µs/gas | 0.9995 | 0.03µs | +| identity | 2.06µs/gas | 0.7010 | 0.95µs | +| blobhash | 1.92µs/gas | 0.9644 | 0.26µs | +| not | 1.89µs/gas | 0.9312 | 0.26µs | +| ripemd160 | 1.55µs/gas | 0.9559 | 0.23µs | +| pop | 0.96µs/gas | 0.7252 | 0.29µs | +| jump | 0.88µs/gas | 0.8975 | 0.15µs | +| tload | 0.35µs/gas | 0.9982 | 0.01µs | +| create | 0.15µs/gas | 0.9997 | 0.00µs | +| create2 | 0.15µs/gas | 0.9997 | 0.00µs | +| log0 | 0.15µs/gas | 0.9268 | 0.02µs | +| log1 | 0.14µs/gas | 0.9995 | 0.00µs | +| log2 | 0.08µs/gas | 0.9756 | 0.01µs | +| log4 | 0.08µs/gas | 0.9897 | 0.01µs | +| log3 | 0.07µs/gas | 0.9979 | 0.00µs | + +### Gas ↔ ZK Cycles + +| Opcode | Cycles/Gas | R² | Std Error | +|--------|------------|-----|-----------| +| modexp | 3.79K | 1.0000 | 0.145 | +| point_evaluation | 2.96K | 1.0000 | 0.005583 | +| bls12_map_fp_to_g1 | 1.16K | 1.0000 | 0.00698 | +| bls12_pairing | 995.58 | 1.0000 | 0.002471 | +| bls12_map_fp2_to_g2 | 830.06 | 1.0000 | 0.003916 | +| bls12_g1add | 816.57 | 1.0000 | 0.0481 | +| bls12_g2add | 810.27 | 1.0000 | 0.006868 | +| blake2f | 597.02 | 1.0000 | 0.002866 | +| mulmod | 422.25 | 1.0000 | 0.0009255 | +| bls12_g1msm | 371.60 | 1.0000 | 0.002802 | +| div | 306.02 | 1.0000 | 0.009481 | +| bls12_g2msm | 280.55 | 1.0000 | 0.001033 | +| sdiv | 260.42 | 1.0000 | 0.009457 | +| mod | 255.42 | 1.0000 | 0.009546 | +| selfbalance | 234.00 | 1.0000 | 0.007161 | +| addmod | 193.00 | 1.0000 | 0.001093 | +| eq | 99.03 | 1.0000 | 0.01568 | +| exp | 87.58 | 1.0000 | 4.622e-05 | +| smod | 79.62 | 1.0000 | 0.009412 | +| prevrandao | 78.50 | 1.0000 | 0.01787 | +| sar | 78.34 | 1.0000 | 0.0004705 | +| bn128_mul | 77.49 | 1.0000 | 0.004442 | +| call | 68.84 | 1.0000 | 0.05806 | +| callcode | 66.91 | 1.0000 | 0.05779 | +| staticcall | 66.80 | 1.0000 | 0.01348 | +| mstore | 62.70 | 1.0000 | 0.03255 | +| mul | 60.62 | 1.0000 | 0.00943 | +| address | 58.00 | 1.0000 | 0.01798 | +| caller | 58.00 | 1.0000 | 0.01802 | +| coinbase | 58.00 | 1.0000 | 0.01797 | +| origin | 58.00 | 1.0000 | 0.01789 | +| delegatecall | 56.48 | 1.0000 | 0.01147 | +| calldataload | 54.34 | 1.0000 | 0.01456 | +| bn128_pairing | 54.18 | 1.0000 | 0.001476 | +| mload | 54.01 | 1.0000 | 0.01423 | +| signextend | 53.42 | 1.0000 | 0.009294 | +| swap8 | 53.37 | 1.0000 | 0.01232 | +| swap1 | 53.37 | 1.0000 | 0.03019 | +| swap16 | 53.34 | 1.0000 | 0.0003765 | +| shr | 51.34 | 1.0000 | 0.0002656 | +| shl | 50.34 | 1.0000 | 0.0003668 | +| codecopy | 47.07 | 0.9929 | 2.82 | +| blobbasefee | 42.50 | 1.0000 | 0.01809 | +| push32 | 41.71 | 1.0000 | 0.0006016 | +| bn128_add | 40.55 | 1.0000 | 0.01928 | +| gasprice | 40.50 | 1.0000 | 0.01796 | +| callvalue | 39.00 | 1.0000 | 0.0005647 | +| sgt | 38.02 | 1.0000 | 0.01239 | +| slt | 38.02 | 1.0000 | 0.01239 | +| sub | 37.36 | 1.0000 | 0.01241 | +| calldatacopy | 35.33 | 1.0000 | 0.0001926 | +| sstore | 34.90 | 1.0000 | 0.0583 | +| number | 32.50 | 1.0000 | 0.0179 | +| timestamp | 32.50 | 1.0000 | 0.01808 | +| add | 32.36 | 1.0000 | 0.01566 | +| calldatasize | 32.00 | 1.0000 | 0.003185 | +| pc | 32.00 | 1.0000 | 0.01791 | +| chainid | 31.50 | 1.0000 | 0.01801 | +| basefee | 31.50 | 1.0000 | 0.01813 | +| codesize | 30.50 | 1.0000 | 0.01798 | +| msize | 30.00 | 1.0000 | 0.0001897 | +| gaslimit | 30.00 | 1.0000 | 0.01803 | +| gas | 30.00 | 1.0000 | 0.01783 | +| returndatasize | 30.00 | 1.0000 | 0.01809 | +| push0 | 28.50 | 1.0000 | 0.01804 | +| push16 | 28.36 | 1.0000 | 0.01441 | +| gt | 27.36 | 1.0000 | 0.01564 | +| lt | 27.36 | 1.0000 | 0.01563 | +| byte | 27.34 | 1.0000 | 0.0004367 | +| returndatacopy | 26.45 | 1.0000 | 0.0003697 | +| mstore8 | 26.01 | 1.0000 | 0.01318 | +| jumpdest | 26.00 | 1.0000 | 0.0001226 | +| and | 24.03 | 1.0000 | 0.01578 | +| xor | 24.03 | 1.0000 | 0.01552 | +| or | 24.02 | 1.0000 | 0.0123 | +| blobhash | 22.34 | 1.0000 | 0.01436 | +| extcodehash | 22.15 | 1.0000 | 0.002532 | +| iszero | 19.33 | 1.0000 | 0.0002898 | +| not | 18.34 | 1.0000 | 0.0006821 | +| keccak256 | 17.78 | 1.0000 | 1.358e-05 | +| dup8 | 17.02 | 1.0000 | 0.01236 | +| dup1 | 17.00 | 1.0000 | 0.000136 | +| dup16 | 16.99 | 1.0000 | 0.03248 | +| extcodesize | 16.66 | 1.0000 | 6.751e-05 | +| balance | 16.60 | 1.0000 | 2.933e-05 | +| tstore | 15.90 | 1.0000 | 0.006938 | +| extcodecopy | 15.75 | 1.0000 | 0.01176 | +| push1 | 15.34 | 1.0000 | 0.0001363 | +| pop | 15.00 | 1.0000 | 0.0001595 | +| sload | 15.00 | 1.0000 | 0.002069 | +| mcopy | 14.80 | 1.0000 | 0.02032 | +| sha256 | 12.40 | 1.0000 | 0.001021 | +| jumpi | 11.60 | 1.0000 | 0.0001886 | +| ecrecover | 10.67 | 1.0000 | 0.005079 | +| ripemd160 | 9.01 | 1.0000 | 0.02436 | +| jump | 7.88 | 1.0000 | 6.326e-05 | +| identity | 4.66 | 1.0000 | 0.01649 | +| tload | 2.43 | 1.0000 | 0.009344 | +| create2 | 0.8391 | 0.9997 | 0.01048 | +| create | 0.8048 | 0.9996 | 0.01118 | +| log1 | 0.5628 | 0.9997 | 0.0067 | +| log0 | 0.5558 | 0.9944 | 0.02083 | +| log3 | 0.316 | 0.9999 | 0.002322 | +| log4 | 0.3136 | 0.9998 | 0.003386 | +| log2 | 0.3078 | 0.9999 | 0.001867 | + +### ZK Cycles ↔ Proving Time + +| Opcode | Time/Cycle | R² | Std Error | +|--------|------------|-----|-----------| +| bn128_add | 0.93µs/cycle | 0.9193 | 0.20µs | +| ecrecover | 0.89µs/cycle | 0.9380 | 0.16µs | +| sha256 | 0.77µs/cycle | 0.9985 | 0.02µs | +| bn128_mul | 0.52µs/cycle | 0.9977 | 0.02µs | +| bn128_pairing | 0.41µs/cycle | 0.9909 | 0.02µs | +| keccak256 | 0.38µs/cycle | 0.9992 | 0.01µs | +| log0 | 0.27µs/cycle | 0.9422 | 0.03µs | +| log2 | 0.26µs/cycle | 0.9747 | 0.03µs | +| log4 | 0.25µs/cycle | 0.9886 | 0.02µs | +| log1 | 0.24µs/cycle | 0.9988 | 0.01µs | +| and | 0.22µs/cycle | 0.9896 | 0.02µs | +| log3 | 0.22µs/cycle | 0.9981 | 0.01µs | +| dup16 | 0.21µs/cycle | 0.9461 | 0.02µs | +| xor | 0.20µs/cycle | 0.9720 | 0.02µs | +| swap16 | 0.20µs/cycle | 0.9845 | 0.02µs | +| dup8 | 0.19µs/cycle | 0.9216 | 0.03µs | +| create | 0.19µs/cycle | 0.9990 | 0.00µs | +| swap8 | 0.19µs/cycle | 0.9846 | 0.02µs | +| codesize | 0.18µs/cycle | 0.9863 | 0.02µs | +| gas | 0.18µs/cycle | 0.9837 | 0.02µs | +| push32 | 0.18µs/cycle | 0.9244 | 0.03µs | +| jumpi | 0.18µs/cycle | 0.9972 | 0.01µs | +| dup1 | 0.18µs/cycle | 0.8879 | 0.03µs | +| push1 | 0.18µs/cycle | 0.9551 | 0.02µs | +| create2 | 0.18µs/cycle | 0.9989 | 0.00µs | +| swap1 | 0.18µs/cycle | 0.9784 | 0.01µs | +| push0 | 0.17µs/cycle | 0.9421 | 0.03µs | +| ripemd160 | 0.17µs/cycle | 0.9550 | 0.03µs | +| calldatasize | 0.17µs/cycle | 0.9780 | 0.01µs | +| pc | 0.17µs/cycle | 0.9563 | 0.03µs | +| byte | 0.17µs/cycle | 0.9691 | 0.02µs | +| callvalue | 0.16µs/cycle | 0.9789 | 0.01µs | +| gasprice | 0.16µs/cycle | 0.9995 | 0.00µs | +| chainid | 0.16µs/cycle | 1.0000 | 0.00µs | +| gaslimit | 0.16µs/cycle | 0.9960 | 0.01µs | +| returndatacopy | 0.16µs/cycle | 0.9857 | 0.01µs | +| jumpdest | 0.16µs/cycle | 0.9930 | 0.01µs | +| returndatasize | 0.16µs/cycle | 0.9945 | 0.01µs | +| blobbasefee | 0.16µs/cycle | 0.9941 | 0.01µs | +| mstore | 0.16µs/cycle | 0.9946 | 0.01µs | +| codecopy | 0.15µs/cycle | 0.9996 | 0.00µs | +| basefee | 0.15µs/cycle | 0.9867 | 0.01µs | +| eq | 0.15µs/cycle | 0.9872 | 0.01µs | +| extcodehash | 0.15µs/cycle | 0.9982 | 0.00µs | +| modexp | 0.15µs/cycle | 0.9945 | 0.01µs | +| extcodecopy | 0.15µs/cycle | 0.9967 | 0.01µs | +| balance | 0.15µs/cycle | 0.9993 | 0.00µs | +| lt | 0.14µs/cycle | 0.9970 | 0.01µs | +| number | 0.14µs/cycle | 0.9845 | 0.01µs | +| tload | 0.14µs/cycle | 0.9983 | 0.00µs | +| coinbase | 0.14µs/cycle | 0.9856 | 0.01µs | +| mcopy | 0.14µs/cycle | 0.9948 | 0.01µs | +| caller | 0.14µs/cycle | 0.9845 | 0.01µs | +| bls12_g2msm | 0.14µs/cycle | 0.9966 | 0.01µs | +| gt | 0.14µs/cycle | 0.9895 | 0.01µs | +| sload | 0.14µs/cycle | 0.9979 | 0.00µs | +| bls12_g1msm | 0.14µs/cycle | 0.9974 | 0.01µs | +| origin | 0.14µs/cycle | 0.9678 | 0.02µs | +| callcode | 0.14µs/cycle | 0.9990 | 0.00µs | +| shr | 0.14µs/cycle | 0.9971 | 0.01µs | +| bls12_g1add | 0.14µs/cycle | 0.9995 | 0.00µs | +| exp | 0.14µs/cycle | 0.9968 | 0.01µs | +| bls12_map_fp_to_g1 | 0.14µs/cycle | 0.9993 | 0.00µs | +| bls12_g2add | 0.14µs/cycle | 0.9986 | 0.00µs | +| blake2f | 0.14µs/cycle | 0.9995 | 0.00µs | +| prevrandao | 0.14µs/cycle | 0.9903 | 0.01µs | +| bls12_map_fp2_to_g2 | 0.14µs/cycle | 0.9999 | 0.00µs | +| extcodesize | 0.13µs/cycle | 0.9978 | 0.00µs | +| point_evaluation | 0.13µs/cycle | 1.0000 | 0.00µs | +| call | 0.13µs/cycle | 0.9931 | 0.01µs | +| bls12_pairing | 0.13µs/cycle | 1.0000 | 0.00µs | +| staticcall | 0.13µs/cycle | 0.9999 | 0.00µs | +| delegatecall | 0.13µs/cycle | 0.9999 | 0.00µs | +| selfbalance | 0.13µs/cycle | 0.9980 | 0.00µs | +| timestamp | 0.13µs/cycle | 0.9886 | 0.01µs | +| sstore | 0.13µs/cycle | 0.9998 | 0.00µs | +| msize | 0.13µs/cycle | 0.9917 | 0.01µs | +| push16 | 0.13µs/cycle | 0.9961 | 0.01µs | +| tstore | 0.13µs/cycle | 0.9995 | 0.00µs | +| mstore8 | 0.13µs/cycle | 0.9736 | 0.02µs | +| address | 0.13µs/cycle | 0.9954 | 0.01µs | +| div | 0.13µs/cycle | 0.9973 | 0.00µs | +| or | 0.13µs/cycle | 0.8900 | 0.02µs | +| addmod | 0.13µs/cycle | 0.9999 | 0.00µs | +| sdiv | 0.13µs/cycle | 0.9951 | 0.01µs | +| sar | 0.13µs/cycle | 0.9839 | 0.01µs | +| mod | 0.12µs/cycle | 0.9997 | 0.00µs | +| mulmod | 0.12µs/cycle | 0.9999 | 0.00µs | +| shl | 0.12µs/cycle | 0.9913 | 0.01µs | +| smod | 0.12µs/cycle | 0.9969 | 0.00µs | +| mload | 0.12µs/cycle | 0.9755 | 0.01µs | +| mul | 0.12µs/cycle | 0.9892 | 0.01µs | +| iszero | 0.12µs/cycle | 0.8634 | 0.02µs | +| calldatacopy | 0.12µs/cycle | 0.9724 | 0.01µs | +| calldataload | 0.12µs/cycle | 0.9983 | 0.00µs | +| add | 0.12µs/cycle | 0.9987 | 0.00µs | +| jump | 0.11µs/cycle | 0.8975 | 0.02µs | +| signextend | 0.11µs/cycle | 0.9919 | 0.01µs | +| not | 0.10µs/cycle | 0.9312 | 0.01µs | +| slt | 0.10µs/cycle | 0.8383 | 0.02µs | +| sgt | 0.09µs/cycle | 0.8261 | 0.02µs | +| blobhash | 0.09µs/cycle | 0.9642 | 0.01µs | +| sub | 0.07µs/cycle | 0.7967 | 0.02µs | +| pop | 0.06µs/cycle | 0.7252 | 0.02µs | +| identity | 0.44µs/cycle | 0.6975 | 0.21µs | + +### Op Count ↔ Gas Used (Marginal Property Check) + +*High R² (≥ 0.99) indicates gas scales linearly with op count, confirming the marginal property.* + +| Opcode | Gas/Op | Intercept | R² | Status | +|--------|--------|-----------|-----|--------| +| add | 3.00 | 9.48M | 1.0000 | ✅ Good | +| addmod | 8.00 | 2.80M | 1.0000 | ✅ Good | +| address | 2.00 | 3.86M | 1.0000 | ✅ Good | +| and | 3.00 | 6.34M | 1.0000 | ✅ Good | +| balance | 100.00 | 2.40M | 1.0000 | ✅ Good | +| basefee | 2.00 | 5.14M | 1.0000 | ✅ Good | +| blake2f | 65.54K | 49.27K | 1.0000 | ✅ Good | +| blobbasefee | 2.00 | 5.14M | 1.0000 | ✅ Good | +| blobhash | 3.00 | 9.50M | 1.0000 | ✅ Good | +| bls12_g1add | 375.00 | 140.85K | 1.0000 | ✅ Good | +| bls12_g1msm | 22.78K | 54.04K | 1.0000 | ✅ Good | +| bls12_g2add | 600.00 | 106.04K | 1.0000 | ✅ Good | +| bls12_g2msm | 45.00K | 55.64K | 1.0000 | ✅ Good | +| bls12_map_fp2_to_g2 | 23.80K | 50.64K | 1.0000 | ✅ Good | +| bls12_map_fp_to_g1 | 5.50K | 55.51K | 1.0000 | ✅ Good | +| bls12_pairing | 102.90K | 56.91K | 1.0000 | ✅ Good | +| bn128_add | 150.00 | 143.13K | 1.0000 | ✅ Good | +| bn128_mul | 6.00K | 55.85K | 1.0000 | ✅ Good | +| bn128_pairing | 113.00K | 52.88K | 1.0000 | ✅ Good | +| byte | 3.00 | 6.34M | 1.0000 | ✅ Good | +| calldatacopy | 6.00 | 4.56M | 1.0000 | ✅ Good | +| calldataload | 3.00 | 3.20M | 1.0000 | ✅ Good | +| calldatasize | 2.00 | 5.14M | 1.0000 | ✅ Good | +| caller | 2.00 | 5.14M | 1.0000 | ✅ Good | +| callvalue | 2.00 | 5.14M | 1.0000 | ✅ Good | +| chainid | 2.00 | 5.14M | 1.0000 | ✅ Good | +| codecopy | 6.00 | 6.82M | 1.0000 | ✅ Good | +| codesize | 2.00 | 5.14M | 1.0000 | ✅ Good | +| coinbase | 2.00 | 5.14M | 1.0000 | ✅ Good | +| create | 32.01K | 123.81K | 1.0000 | ✅ Good | +| create2 | 32.02K | 200.71K | 1.0000 | ✅ Good | +| div | 5.00 | 2.25M | 1.0000 | ✅ Good | +| dup1 | 3.00 | 4.10M | 1.0000 | ✅ Good | +| dup16 | 3.00 | 2.90M | 1.0000 | ✅ Good | +| dup8 | 3.00 | 4.20M | 1.0000 | ✅ Good | +| ecrecover | 3.00K | 71.36K | 1.0000 | ✅ Good | +| eq | 3.00 | 4.76M | 1.0000 | ✅ Good | +| exp | 1.61K | 70.29K | 1.0000 | ✅ Good | +| extcodehash | 100.00 | 1.95M | 1.0000 | ✅ Good | +| extcodesize | 100.00 | 1.93M | 1.0000 | ✅ Good | +| gas | 2.00 | 5.14M | 1.0000 | ✅ Good | +| gaslimit | 2.00 | 5.14M | 1.0000 | ✅ Good | +| gasprice | 2.00 | 5.14M | 1.0000 | ✅ Good | +| gt | 3.00 | 6.34M | 1.0000 | ✅ Good | +| iszero | 3.00 | 9.93M | 1.0000 | ✅ Good | +| jump | 8.00 | 2.88M | 1.0000 | ✅ Good | +| jumpdest | 1.00 | 625.61K | 1.0000 | ✅ Good | +| jumpi | 10.00 | 7.81M | 1.0000 | ✅ Good | +| keccak256 | 1.57K | 930.61K | 1.0000 | ✅ Good | +| log0 | 375.00 | 957.61K | 1.0000 | ✅ Good | +| lt | 3.00 | 6.34M | 1.0000 | ✅ Good | +| mload | 3.00 | 6.37M | 1.0000 | ✅ Good | +| mod | 5.00 | 2.25M | 1.0000 | ✅ Good | +| modexp | 1.36K | 66.98K | 1.0000 | ✅ Good | +| msize | 2.00 | 5.16M | 1.0000 | ✅ Good | +| mstore | 3.00 | 2.71M | 1.0000 | ✅ Good | +| mstore8 | 3.00 | 5.37M | 1.0000 | ✅ Good | +| mul | 5.00 | 6.34M | 1.0000 | ✅ Good | +| mulmod | 8.00 | 2.92M | 1.0000 | ✅ Good | +| not | 3.00 | 6.64M | 1.0000 | ✅ Good | +| number | 2.00 | 5.14M | 1.0000 | ✅ Good | +| or | 3.00 | 9.48M | 1.0000 | ✅ Good | +| origin | 2.00 | 5.14M | 1.0000 | ✅ Good | +| pc | 2.00 | 5.14M | 1.0000 | ✅ Good | +| point_evaluation | 50.00K | 49.92K | 1.0000 | ✅ Good | +| pop | 2.00 | 4.08M | 1.0000 | ✅ Good | +| prevrandao | 2.00 | 3.86M | 1.0000 | ✅ Good | +| push0 | 2.00 | 5.14M | 1.0000 | ✅ Good | +| push1 | 3.00 | 5.14M | 1.0000 | ✅ Good | +| push16 | 3.00 | 4.34M | 1.0000 | ✅ Good | +| push32 | 3.00 | 2.36M | 1.0000 | ✅ Good | +| returndatasize | 2.00 | 5.14M | 1.0000 | ✅ Good | +| ripemd160 | 4.44K | 240.82K | 1.0000 | ✅ Good | +| sar | 3.00 | 4.76M | 1.0000 | ✅ Good | +| sdiv | 5.00 | 2.25M | 1.0000 | ✅ Good | +| selfbalance | 5.00 | 2.59M | 1.0000 | ✅ Good | +| sgt | 3.00 | 9.48M | 1.0000 | ✅ Good | +| sha256 | 1.60K | 290.57K | 1.0000 | ✅ Good | +| shl | 3.00 | 4.76M | 1.0000 | ✅ Good | +| shr | 3.00 | 6.34M | 1.0000 | ✅ Good | +| signextend | 5.00 | 15.77M | 1.0000 | ✅ Good | +| sload | 100.00 | 1.93M | 1.0000 | ✅ Good | +| slt | 3.00 | 22.06M | 1.0000 | ✅ Good | +| smod | 5.00 | 6.34M | 1.0000 | ✅ Good | +| sub | 3.00 | 15.77M | 1.0000 | ✅ Good | +| swap1 | 3.00 | 200.61K | 1.0000 | ✅ Good | +| swap16 | 3.00 | 275.61K | 1.0000 | ✅ Good | +| swap8 | 3.00 | 235.61K | 1.0000 | ✅ Good | +| timestamp | 2.00 | 5.14M | 1.0000 | ✅ Good | +| tload | 100.00 | 9.77M | 1.0000 | ✅ Good | +| tstore | 100.00 | 1.33M | 1.0000 | ✅ Good | +| xor | 3.00 | 15.77M | 1.0000 | ✅ Good | +| log2 | 3.17K | 671.06K | 1.0000 | ✅ Good | +| log3 | 3.54K | 702.56K | 1.0000 | ✅ Good | +| log1 | 1.01K | 941.81K | 1.0000 | ✅ Good | +| log4 | 3.92K | 658.46K | 1.0000 | ✅ Good | +| call | 100.05 | 1.21M | 1.0000 | ✅ Good | +| callcode | 100.05 | 1.21M | 1.0000 | ✅ Good | +| delegatecall | 100.05 | 1.06M | 1.0000 | ✅ Good | +| staticcall | 100.05 | 1.06M | 1.0000 | ✅ Good | +| identity | 27.02 | 219.29M | 1.0000 | ✅ Good | +| returndatacopy | 9.02 | 1.68M | 1.0000 | ✅ Good | +| sstore | 100.29 | 724.38K | 1.0000 | ✅ Good | +| extcodecopy | 124.37 | 1.60M | 1.0000 | ✅ Good | +| mcopy | 99.33 | 648.67K | 1.0000 | ✅ Good | + +### Op Count ↔ ZK Cycles + +| Opcode | Cycles/Op | R² | +|--------|-----------|-----| +| add | 97.09 | 1.0000 | +| addmod | 1.54K | 1.0000 | +| address | 116.00 | 1.0000 | +| and | 72.09 | 1.0000 | +| balance | 1.66K | 1.0000 | +| basefee | 62.99 | 1.0000 | +| blake2f | 39.13M | 1.0000 | +| blobbasefee | 84.99 | 1.0000 | +| blobhash | 67.02 | 1.0000 | +| bls12_g1add | 306.21K | 1.0000 | +| bls12_g1msm | 8.46M | 1.0000 | +| bls12_g2add | 486.16K | 1.0000 | +| bls12_g2msm | 12.62M | 1.0000 | +| bls12_map_fp2_to_g2 | 19.76M | 1.0000 | +| bls12_map_fp_to_g1 | 6.40M | 1.0000 | +| bls12_pairing | 102.45M | 1.0000 | +| bn128_add | 6.08K | 1.0000 | +| bn128_mul | 464.94K | 1.0000 | +| bn128_pairing | 6.12M | 1.0000 | +| byte | 82.01 | 1.0000 | +| call | 6.89K | 1.0000 | +| callcode | 6.69K | 1.0000 | +| calldatacopy | 212.01 | 1.0000 | +| calldataload | 163.03 | 1.0000 | +| calldatasize | 64.01 | 1.0000 | +| caller | 115.99 | 1.0000 | +| callvalue | 78.01 | 1.0000 | +| chainid | 62.99 | 1.0000 | +| codecopy | 282.40 | 0.9929 | +| codesize | 60.99 | 1.0000 | +| coinbase | 115.99 | 1.0000 | +| create | 25.76K | 0.9996 | +| create2 | 26.87K | 0.9997 | +| delegatecall | 5.65K | 1.0000 | +| div | 1.53K | 1.0000 | +| dup1 | 51.00 | 1.0000 | +| dup16 | 50.98 | 1.0000 | +| dup8 | 51.07 | 1.0000 | +| ecrecover | 32.02K | 1.0000 | +| eq | 297.09 | 1.0000 | +| exp | 141.00K | 1.0000 | +| extcodecopy | 1.96K | 1.0000 | +| extcodehash | 2.21K | 1.0000 | +| extcodesize | 1.67K | 1.0000 | +| gas | 59.99 | 1.0000 | +| gaslimit | 59.99 | 1.0000 | +| gasprice | 80.99 | 1.0000 | +| gt | 82.09 | 1.0000 | +| identity | 125.89 | 1.0000 | +| iszero | 58.00 | 1.0000 | +| jump | 63.00 | 1.0000 | +| jumpdest | 26.00 | 1.0000 | +| jumpi | 116.00 | 1.0000 | +| keccak256 | 27.84K | 1.0000 | +| log0 | 208.41 | 0.9944 | +| log1 | 566.34 | 0.9997 | +| log2 | 974.39 | 0.9999 | +| log3 | 1.12K | 0.9999 | +| log4 | 1.23K | 0.9998 | +| lt | 82.09 | 1.0000 | +| mcopy | 1.47K | 1.0000 | +| mload | 162.02 | 1.0000 | +| mod | 1.28K | 1.0000 | +| modexp | 5.18M | 1.0000 | +| msize | 60.01 | 1.0000 | +| mstore | 188.09 | 1.0000 | +| mstore8 | 78.02 | 1.0000 | +| mul | 303.09 | 1.0000 | +| mulmod | 3.38K | 1.0000 | +| not | 55.01 | 1.0000 | +| number | 64.99 | 1.0000 | +| or | 72.07 | 1.0000 | +| origin | 115.99 | 1.0000 | +| pc | 63.99 | 1.0000 | +| point_evaluation | 147.76M | 1.0000 | +| pop | 30.00 | 1.0000 | +| prevrandao | 157.00 | 1.0000 | +| push0 | 56.99 | 1.0000 | +| push1 | 46.01 | 1.0000 | +| push16 | 85.07 | 1.0000 | +| push32 | 125.12 | 1.0000 | +| returndatacopy | 238.50 | 1.0000 | +| returndatasize | 59.99 | 1.0000 | +| ripemd160 | 39.98K | 1.0000 | +| sar | 235.01 | 1.0000 | +| sdiv | 1.30K | 1.0000 | +| selfbalance | 1.17K | 1.0000 | +| sgt | 114.07 | 1.0000 | +| sha256 | 19.79K | 1.0000 | +| shl | 151.01 | 1.0000 | +| shr | 154.01 | 1.0000 | +| signextend | 267.08 | 1.0000 | +| sload | 1.50K | 1.0000 | +| slt | 114.07 | 1.0000 | +| smod | 398.09 | 1.0000 | +| sstore | 3.50K | 1.0000 | +| staticcall | 6.68K | 1.0000 | +| sub | 112.07 | 1.0000 | +| swap1 | 160.10 | 1.0000 | +| swap16 | 160.01 | 1.0000 | +| swap8 | 160.12 | 1.0000 | +| timestamp | 64.99 | 1.0000 | +| tload | 243.36 | 1.0000 | +| tstore | 1.59K | 1.0000 | +| xor | 72.08 | 1.0000 | + +### Op Count ↔ Proving Time + +| Opcode | Time/Op (s) | R² | +|--------|-------------|-----| +| add | 1.13e-05 | 0.9987 | +| addmod | 1.93e-04 | 0.9999 | +| address | 1.48e-05 | 0.9953 | +| and | 1.57e-05 | 0.9897 | +| balance | 2.43e-04 | 0.9993 | +| basefee | 9.37e-06 | 0.9866 | +| blake2f | 5.35e+00 | 0.9995 | +| blobbasefee | 1.32e-05 | 0.9940 | +| blobhash | 5.77e-06 | 0.9644 | +| bls12_g1add | 4.21e-02 | 0.9995 | +| bls12_g1msm | 1.18e+00 | 0.9974 | +| bls12_g2add | 6.66e-02 | 0.9986 | +| bls12_g2msm | 1.77e+00 | 0.9966 | +| bls12_map_fp2_to_g2 | 2.67e+00 | 0.9999 | +| bls12_map_fp_to_g1 | 8.76e-01 | 0.9993 | +| bls12_pairing | 1.38e+01 | 1.0000 | +| bn128_add | 5.67e-03 | 0.9196 | +| bn128_mul | 2.42e-01 | 0.9977 | +| bn128_pairing | 2.50e+00 | 0.9909 | +| byte | 1.36e-05 | 0.9691 | +| call | 9.27e-04 | 0.9931 | +| callcode | 9.27e-04 | 0.9991 | +| calldatacopy | 2.48e-05 | 0.9724 | +| calldataload | 1.91e-05 | 0.9983 | +| calldatasize | 1.10e-05 | 0.9780 | +| caller | 1.63e-05 | 0.9845 | +| callvalue | 1.26e-05 | 0.9789 | +| chainid | 1.01e-05 | 1.0000 | +| codecopy | 4.28e-05 | 0.9950 | +| codesize | 1.13e-05 | 0.9864 | +| coinbase | 1.65e-05 | 0.9857 | +| create | 4.83e-03 | 0.9997 | +| create2 | 4.80e-03 | 0.9997 | +| delegatecall | 7.55e-04 | 0.9999 | +| div | 1.95e-04 | 0.9973 | +| dup1 | 9.14e-06 | 0.8879 | +| dup16 | 1.06e-05 | 0.9449 | +| dup8 | 9.63e-06 | 0.9217 | +| ecrecover | 2.87e-02 | 0.9380 | +| eq | 4.40e-05 | 0.9872 | +| exp | 1.94e-02 | 0.9968 | +| extcodecopy | 2.86e-04 | 0.9966 | +| extcodehash | 3.24e-04 | 0.9982 | +| extcodesize | 2.25e-04 | 0.9978 | +| gas | 1.10e-05 | 0.9836 | +| gaslimit | 9.57e-06 | 0.9959 | +| gasprice | 1.30e-05 | 0.9995 | +| gt | 1.15e-05 | 0.9896 | +| identity | 5.57e-05 | 0.7013 | +| iszero | 6.89e-06 | 0.8634 | +| jump | 7.04e-06 | 0.8975 | +| jumpdest | 4.10e-06 | 0.9930 | +| jumpi | 2.09e-05 | 0.9972 | +| keccak256 | 1.05e-02 | 0.9992 | +| log0 | 5.59e-05 | 0.9268 | +| log1 | 1.38e-04 | 0.9995 | +| log2 | 2.52e-04 | 0.9757 | +| log3 | 2.42e-04 | 0.9979 | +| log4 | 3.06e-04 | 0.9898 | +| lt | 1.18e-05 | 0.9971 | +| mcopy | 2.07e-04 | 0.9947 | +| mload | 1.96e-05 | 0.9755 | +| mod | 1.59e-04 | 0.9997 | +| modexp | 7.57e-01 | 0.9945 | +| msize | 7.93e-06 | 0.9917 | +| mstore | 2.93e-05 | 0.9946 | +| mstore8 | 1.01e-05 | 0.9735 | +| mul | 3.67e-05 | 0.9892 | +| mulmod | 4.21e-04 | 0.9999 | +| not | 5.66e-06 | 0.9312 | +| number | 9.31e-06 | 0.9843 | +| or | 9.07e-06 | 0.8897 | +| origin | 1.62e-05 | 0.9678 | +| pc | 1.09e-05 | 0.9565 | +| point_evaluation | 1.99e+01 | 1.0000 | +| pop | 1.91e-06 | 0.7252 | +| prevrandao | 2.12e-05 | 0.9904 | +| push0 | 9.84e-06 | 0.9425 | +| push1 | 8.24e-06 | 0.9551 | +| push16 | 1.12e-05 | 0.9960 | +| push32 | 2.26e-05 | 0.9244 | +| returndatacopy | 3.79e-05 | 0.9854 | +| returndatasize | 9.41e-06 | 0.9944 | +| ripemd160 | 6.87e-03 | 0.9559 | +| sar | 2.94e-05 | 0.9839 | +| sdiv | 1.63e-04 | 0.9951 | +| selfbalance | 1.56e-04 | 0.9980 | +| sgt | 1.06e-05 | 0.8265 | +| sha256 | 1.53e-02 | 0.9985 | +| shl | 1.88e-05 | 0.9913 | +| shr | 2.13e-05 | 0.9971 | +| signextend | 2.96e-05 | 0.9918 | +| sload | 2.10e-04 | 0.9979 | +| slt | 1.14e-05 | 0.8388 | +| smod | 4.86e-05 | 0.9969 | +| sstore | 4.63e-04 | 0.9998 | +| staticcall | 8.98e-04 | 0.9999 | +| sub | 7.77e-06 | 0.7971 | +| swap1 | 2.85e-05 | 0.9781 | +| swap16 | 3.24e-05 | 0.9845 | +| swap8 | 2.98e-05 | 0.9847 | +| timestamp | 8.66e-06 | 0.9887 | +| tload | 3.47e-05 | 0.9982 | +| tstore | 2.08e-04 | 0.9995 | +| xor | 1.47e-05 | 0.9720 | + +### Opcodes/Precompiles Summary + +| Opcode | N | Min Op Count | Max Op Count | Min Gas | Max Gas | Gas/Op | +|--------|---|--------------|--------------|---------|---------|--------| +| add | 4 | 0 | 900000 | 9.48M | 12.18M | 3.00 | +| addmod | 4 | 0 | 201000 | 2.80M | 4.41M | 8.00 | +| address | 4 | 0 | 900000 | 3.86M | 5.66M | 2.00 | +| and | 4 | 0 | 600000 | 6.34M | 8.14M | 3.00 | +| balance | 4 | 0 | 300000 | 2.40M | 32.40M | 100.00 | +| basefee | 4 | 0 | 1200000 | 5.14M | 7.54M | 2.00 | +| blake2f | 3 | 0 | 10 | 49.27K | 704.62K | 65.54K | +| blobbasefee | 4 | 0 | 1200000 | 5.14M | 7.54M | 2.00 | +| blobhash | 4 | 0 | 1503000 | 9.50M | 14.01M | 3.00 | +| bls12_g1add | 4 | 0 | 771 | 140.85K | 429.98K | 375.00 | +| bls12_g1msm | 4 | 0 | 39 | 54.04K | 942.30K | 22.78K | +| bls12_g2add | 4 | 0 | 450 | 106.04K | 376.04K | 600.00 | +| bls12_g2msm | 4 | 0 | 24 | 55.64K | 1.14M | 45.00K | +| bls12_map_fp2_to_g2 | 4 | 0 | 27 | 50.64K | 693.24K | 23.80K | +| bls12_map_fp_to_g1 | 4 | 0 | 75 | 55.51K | 468.01K | 5.50K | +| bls12_pairing | 4 | 0 | 9 | 56.91K | 983.01K | 102.90K | +| bn128_add | 4 | 0 | 801 | 143.13K | 263.28K | 150.00 | +| bn128_mul | 4 | 0 | 72 | 55.85K | 487.85K | 6.00K | +| bn128_pairing | 5 | 0 | 8 | 52.88K | 956.88K | 113.00K | +| byte | 4 | 0 | 600000 | 6.34M | 8.14M | 3.00 | +| call | 4 | 0 | 49500 | 1.21M | 6.16M | 100.05 | +| callcode | 4 | 0 | 49500 | 1.21M | 6.16M | 100.05 | +| calldatacopy | 4 | 0 | 600000 | 4.56M | 8.16M | 6.00 | +| calldataload | 4 | 0 | 501000 | 3.20M | 4.70M | 3.00 | +| calldatasize | 6 | 0 | 1200000 | 5.14M | 7.54M | 2.00 | +| caller | 4 | 0 | 1200000 | 5.14M | 7.54M | 2.00 | +| callvalue | 5 | 0 | 1200000 | 5.14M | 7.54M | 2.00 | +| chainid | 4 | 0 | 1200000 | 5.14M | 7.54M | 2.00 | +| codecopy | 4 | 0 | 900000 | 6.82M | 12.22M | 6.00 | +| codesize | 4 | 0 | 1200000 | 5.14M | 7.54M | 2.00 | +| coinbase | 4 | 0 | 1200000 | 5.14M | 7.54M | 2.00 | +| create | 4 | 0 | 4200 | 123.81K | 134.56M | 32.01K | +| create2 | 4 | 0 | 4200 | 200.71K | 134.68M | 32.02K | +| delegatecall | 4 | 0 | 49500 | 1.06M | 6.01M | 100.05 | +| div | 4 | 0 | 210000 | 2.25M | 3.30M | 5.00 | +| dup1 | 6 | 0 | 900000 | 4.10M | 6.80M | 3.00 | +| dup16 | 6 | 0 | 600000 | 2.90M | 4.70M | 3.00 | +| dup8 | 6 | 0 | 900000 | 4.20M | 6.90M | 3.00 | +| ecrecover | 4 | 0 | 201 | 71.36K | 674.36K | 3.00K | +| eq | 4 | 0 | 450000 | 4.76M | 6.11M | 3.00 | +| exp | 4 | 0 | 2250 | 70.29K | 3.69M | 1.61K | +| extcodecopy | 4 | 0 | 102000 | 1.59M | 14.28M | 124.37 | +| extcodehash | 5 | 0 | 200000 | 1.95M | 21.95M | 100.00 | +| extcodesize | 4 | 0 | 198000 | 1.93M | 21.73M | 100.00 | +| gas | 4 | 0 | 1200000 | 5.14M | 7.54M | 2.00 | +| gaslimit | 4 | 0 | 1200000 | 5.14M | 7.54M | 2.00 | +| gasprice | 4 | 0 | 1200000 | 5.14M | 7.54M | 2.00 | +| gt | 4 | 0 | 600000 | 6.34M | 8.14M | 3.00 | +| identity | 4 | 0 | 1500000 | 219.28M | 259.80M | 27.02 | +| iszero | 6 | 0 | 1350000 | 9.93M | 13.98M | 3.00 | +| jump | 6 | 0 | 600000 | 2.88M | 7.68M | 8.00 | +| jumpdest | 4 | 0 | 2400000 | 625.61K | 3.03M | 1.00 | +| jumpi | 4 | 0 | 1005000 | 7.81M | 17.86M | 10.00 | +| keccak256 | 4 | 0 | 24000 | 930.61K | 38.51M | 1.57K | +| log0 | 6 | 0 | 120000 | 957.61K | 45.96M | 375.00 | +| log1 | 4 | 0 | 81000 | 934.61K | 82.44M | 1.01K | +| log2 | 4 | 0 | 42000 | 661.61K | 133.62M | 3.17K | +| log3 | 4 | 0 | 35700 | 693.11K | 127.10M | 3.54K | +| log4 | 4 | 0 | 27300 | 649.01K | 107.56M | 3.92K | +| lt | 4 | 0 | 600000 | 6.34M | 8.14M | 3.00 | +| mcopy | 4 | 0 | 60000 | 642.01K | 6.60M | 99.33 | +| mload | 4 | 0 | 1002000 | 6.37M | 9.38M | 3.00 | +| mod | 4 | 0 | 210000 | 2.25M | 3.30M | 5.00 | +| modexp | 4 | 0 | 36 | 66.98K | 116.12K | 1.36K | +| msize | 5 | 0 | 1200000 | 5.16M | 7.56M | 2.00 | +| mstore | 4 | 0 | 501000 | 2.71M | 4.21M | 3.00 | +| mstore8 | 4 | 0 | 1002000 | 5.37M | 8.38M | 3.00 | +| mul | 4 | 0 | 600000 | 6.34M | 9.34M | 5.00 | +| mulmod | 4 | 0 | 210000 | 2.92M | 4.60M | 8.00 | +| not | 6 | 0 | 900000 | 6.64M | 9.34M | 3.00 | +| number | 4 | 0 | 1200000 | 5.14M | 7.54M | 2.00 | +| or | 6 | 0 | 900000 | 9.48M | 12.18M | 3.00 | +| origin | 4 | 0 | 1200000 | 5.14M | 7.54M | 2.00 | +| pc | 4 | 0 | 1200000 | 5.14M | 7.54M | 2.00 | +| point_evaluation | 4 | 0 | 9 | 49.92K | 499.92K | 50.00K | +| pop | 6 | 0 | 1800000 | 4.08M | 7.68M | 2.00 | +| prevrandao | 4 | 0 | 900000 | 3.86M | 5.66M | 2.00 | +| push0 | 4 | 0 | 1200000 | 5.14M | 7.54M | 2.00 | +| push1 | 6 | 0 | 1200000 | 5.14M | 8.74M | 3.00 | +| push16 | 4 | 0 | 1002000 | 4.34M | 7.35M | 3.00 | +| push32 | 6 | 0 | 525000 | 2.36M | 3.94M | 3.00 | +| returndatacopy | 4 | 0 | 180000 | 1.67M | 3.30M | 9.02 | +| returndatasize | 4 | 0 | 1200000 | 5.14M | 7.54M | 2.00 | +| ripemd160 | 4 | 0 | 1500 | 240.82K | 6.90M | 4.44K | +| sar | 4 | 0 | 450000 | 4.76M | 6.11M | 3.00 | +| sdiv | 4 | 0 | 210000 | 2.25M | 3.30M | 5.00 | +| selfbalance | 4 | 0 | 600000 | 2.59M | 5.59M | 5.00 | +| sgt | 6 | 0 | 900000 | 9.48M | 12.18M | 3.00 | +| sha256 | 4 | 0 | 1500 | 290.57K | 2.68M | 1.60K | +| shl | 4 | 0 | 450000 | 4.76M | 6.11M | 3.00 | +| shr | 4 | 0 | 600000 | 6.34M | 8.14M | 3.00 | +| signextend | 4 | 0 | 1500000 | 15.77M | 23.27M | 5.00 | +| sload | 4 | 0 | 198000 | 1.93M | 21.73M | 100.00 | +| slt | 6 | 0 | 2100000 | 22.06M | 28.36M | 3.00 | +| smod | 4 | 0 | 600000 | 6.34M | 9.34M | 5.00 | +| sstore | 4 | 0 | 61200 | 718.41K | 6.86M | 100.29 | +| staticcall | 4 | 0 | 49500 | 1.06M | 6.01M | 100.05 | +| sub | 6 | 0 | 1500000 | 15.77M | 20.27M | 3.00 | +| swap1 | 6 | 0 | 300000 | 200.61K | 1.10M | 3.00 | +| swap16 | 4 | 0 | 300000 | 275.61K | 1.18M | 3.00 | +| swap8 | 4 | 0 | 300000 | 235.61K | 1.14M | 3.00 | +| timestamp | 4 | 0 | 1200000 | 5.14M | 7.54M | 2.00 | +| tload | 4 | 0 | 1500000 | 9.77M | 159.77M | 100.00 | +| tstore | 4 | 0 | 198000 | 1.33M | 21.13M | 100.00 | +| xor | 4 | 0 | 1500000 | 15.77M | 20.27M | 3.00 | + +### sp1 Max ZK Cycles by Opcode (colored by R²) + +Bar length = Max ZK Cycles, color = Time/Gas R² (green=high, red=low) + +
sp1 Max ZK Cycles by Opcode (colored by Time/Gas R²)identity10,200,500,155 (R²=0.7010)point_evaluation1,330,714,918 (R²=1.0000)slt1,001,536,992 (R²=0.8388)bls12_pairing922,934,573 (R²=1.0000)mulmod814,995,628 (R²=0.9999)selfbalance762,697,588 (R²=0.9980)signextend721,573,681 (R²=0.9918)sub712,665,219 (R²=0.7971)keccak256701,869,291 (R²=0.9992)xor652,664,871 (R²=0.9720)tload619,426,017 (R²=0.9982)balance549,036,232 (R²=0.9993)bls12_map_fp2_to_g2534,421,958 (R²=0.9999)extcodehash490,882,382 (R²=0.9982)bls12_map_fp_to_g1481,232,626 (R²=0.9993)smod457,256,662 (R²=0.9969)sgt429,792,758 (R²=0.8265)codecopy417,427,357 (R²=0.9950)add414,492,906 (R²=0.9987)addmod411,794,422 (R²=0.9999)mul400,256,656 (R²=0.9892)div398,399,962 (R²=0.9973)blake2f392,214,720 (R²=0.9995)or391,992,349 (R²=0.8897)iszero388,290,438 (R²=0.8634)extcodesize376,380,558 (R²=0.9978)tstore367,663,625 (R²=0.9995)call366,392,108 (R²=0.9932)callcode356,722,458 (R²=0.9991)staticcall353,790,851 (R²=0.9999)sdiv350,520,174 (R²=0.9951)mod345,269,919 (R²=0.9997)sload342,582,271 (R²=0.9979)blobhash340,850,737 (R²=0.9644)bls12_g1msm331,183,342 (R²=0.9974)mload323,757,292 (R²=0.9755)exp319,045,626 (R²=0.9968)bls12_g2msm304,008,054 (R²=0.9966)delegatecall302,121,319 (R²=0.9999)eq297,738,989 (R²=0.9872)jumpi282,137,245 (R²=0.9972)gt267,656,911 (R²=0.9896)lt267,656,406 (R²=0.9971)shr263,355,025 (R²=0.9971)and261,656,773 (R²=0.9897)coinbase259,706,902 (R²=0.9857)caller259,706,778 (R²=0.9845)origin259,706,612 (R²=0.9678)not256,481,833 (R²=0.9312)extcodecopy241,916,048 (R²=0.9967)bls12_g1add241,742,874 (R²=0.9995)calldatacopy240,179,335 (R²=0.9724)sstore236,875,454 (R²=0.9998)sar234,200,489 (R²=0.9839)prevrandao231,902,154 (R²=0.9904)blobbasefee222,506,569 (R²=0.9940)bls12_g2add222,437,843 (R²=0.9986)byte220,154,993 (R²=0.9691)gasprice217,706,736 (R²=0.9995)callvalue214,106,666 (R²=0.9789)number198,506,894 (R²=0.9843)timestamp198,506,116 (R²=0.9887)mstore8198,346,244 (R²=0.9735)pc197,306,746 (R²=0.9565)calldatasize197,306,616 (R²=0.9780)shl196,400,109 (R²=0.9913)chainid196,106,598 (R²=1.0000)basefee196,106,120 (R²=0.9866)address195,002,271 (R²=0.9953)mstore194,412,769 (R²=0.9946)codesize193,706,816 (R²=0.9864)msize193,384,132 (R²=0.9917)gas192,506,753 (R²=0.9836)gaslimit192,506,450 (R²=0.9959)returndatasize192,506,180 (R²=0.9944)push0188,906,121 (R²=0.9425)push16188,488,780 (R²=0.9960)modexp187,438,664 (R²=0.9945)pop180,307,995 (R²=0.7252)push1175,710,571 (R²=0.9551)calldataload162,306,900 (R²=0.9983)dup8149,809,820 (R²=0.9217)dup1148,132,282 (R²=0.8879)push32123,649,737 (R²=0.9244)create2117,657,462 (R²=0.9997)create111,696,632 (R²=0.9997)jump109,504,936 (R²=0.8975)dup16101,327,887 (R²=0.9449)mcopy100,426,617 (R²=0.9951)jumpdest93,712,846 (R²=0.9930)returndatacopy79,637,301 (R²=0.9857)ripemd16070,227,143 (R²=0.9559)log166,442,856 (R²=0.9995)swap1657,772,381 (R²=0.9845)swap857,191,415 (R²=0.9847)swap156,683,434 (R²=0.9781)log255,466,713 (R²=0.9756)log355,007,279 (R²=0.9979)bn128_pairing49,885,324 (R²=0.9909)log447,815,613 (R²=0.9897)log046,485,358 (R²=0.9268)sha25639,934,103 (R²=0.9985)bn128_mul34,781,700 (R²=0.9977)bn128_add10,688,648 (R²=0.9196)ecrecover8,538,758 (R²=0.9380)
diff --git a/www/docs/pages/scripts.mdx b/www/docs/pages/scripts.mdx new file mode 100644 index 00000000..017942e0 --- /dev/null +++ b/www/docs/pages/scripts.mdx @@ -0,0 +1,233 @@ +# Scripts Documentation + +This page provides comprehensive documentation for all scripts in the zkEVM benchmark workload system. These scripts handle benchmark execution, results analysis, fixture management, and various utilities. + +## Overview + +The scripts are organized into several categories: + +- **Benchmark Execution**: Run benchmarks on fixtures +- **Results Analysis**: Compare results between different runs +- **Fixture Management**: Download, generate, and process test fixtures +- **Utilities**: Helper scripts for data processing and naming + +## Benchmark Execution Scripts + +### Gas Categorized Benchmarks + +The `run-gas-categorized-benchmarks.sh` script runs benchmarks on each gas-categorized fixtures folder and outputs results to metrics folders. + +#### Usage + +```bash +./scripts/run-gas-categorized-benchmarks.sh [OPTIONS] +``` + +#### Key Options + +- `--dry-run`: Show what would be executed without running +- `--action `: Benchmark action (default: prove) +- `--resource `: Resource type (default: gpu) +- `--zkvm `: zkVM implementation (default: risc0) +- `--execution-client `: Execution client (default: reth) +- `--gas-category `: Run on specific gas category only +- `--memory-tracking`: Enable memory tracking (default: false) + +#### Examples + +```bash +# Run all gas categories with default settings +./scripts/run-gas-categorized-benchmarks.sh + +# Run with specific zkVM and execution client +./scripts/run-gas-categorized-benchmarks.sh --zkvm sp1 --execution-client ethrex + +# Run on just one gas category +./scripts/run-gas-categorized-benchmarks.sh --gas-category 10M +``` + +## Comparison Scripts + +### Execution Comparison + +The `compare_executions.py` script compares execution metrics between baseline and optimized runs, focusing on region cycles and total execution cycles. + +#### Usage + +```bash +python3 scripts/compare_executions.py +``` + +#### Features + +- Detailed speedup analysis by region +- Statistical analysis with best/worst performers +- Overall performance summary with total cycles + +### Proving Comparison + +The `compare_provings.py` script compares proving time metrics between baseline and optimized runs. + +#### Usage + +```bash +python3 scripts/compare_provings.py +``` + +#### Features + +- Proving time speedup analysis +- Time savings calculations +- Efficiency gain reporting + +## Fixture Management Scripts + +### Gas Categorized Fixtures + +The `generate-gas-categorized-fixtures.sh` script generates gas-categorized fixtures for benchmarking by running the witness-generator-cli for each gas category. + +#### Usage + +```bash +./scripts/generate-gas-categorized-fixtures.sh [EEST_TAG] [BASE_OUTPUT_DIR] +``` + +#### Features + +- Generates fixtures for all gas categories (1M, 10M, 30M, 45M, 60M, 100M, 500M) +- Supports custom EEST tags and output directories +- Dry-run mode for previewing operations + +### Fixture Download + +The `download-and-extract-fixtures.sh` script downloads and extracts test fixtures from the ethereum/execution-spec-tests repository. + +#### Usage + +```bash +./scripts/download-and-extract-fixtures.sh [TAG|latest] [DEST_DIR] +``` + +#### Features + +- Automatic latest release detection +- Multiple download strategies with retries +- Support for different fixture types (benchmark, stable, etc.) + +### Chain Config Migration + +The `migrate_mainnet_fixtures_chainconfig.py` script processes zkevm fixture JSON files by updating chain configuration to a standardized format. + +#### Usage + +```bash +python3 scripts/migrate_mainnet_fixtures_chainconfig.py [-o ] +``` + +## Utility Scripts + +### Test Name Parser + +The `test_name_parser.py` script provides parsing functionality for complex test file names, used by other scripts for name formatting. + +#### Features + +- Extracts test categories, functions, and parameters +- Generates display names and simplified names +- Supports multiple naming formats + +## Complete Workflow Examples + +### Standard Benchmark Workflow + +1. **Download fixtures:** + ```bash + ./scripts/download-and-extract-fixtures.sh + ``` + +2. **Generate gas-categorized fixtures:** + ```bash + ./scripts/generate-gas-categorized-fixtures.sh + ``` + +3. **Run benchmarks:** + ```bash + ./scripts/run-gas-categorized-benchmarks.sh + ``` + +### Performance Comparison Workflow + +1. **Run baseline benchmarks:** + ```bash + ./scripts/run-gas-categorized-benchmarks.sh --zkvm risc0 + ``` + +2. **Run optimized benchmarks:** + ```bash + ./scripts/run-gas-categorized-benchmarks.sh --zkvm sp1 + ``` + +3. **Compare results:** + ```bash + python3 scripts/compare_executions.py zkevm-metrics-risc0-1M zkevm-metrics-sp1-1M + python3 scripts/compare_provings.py zkevm-metrics-risc0-1M zkevm-metrics-sp1-1M + ``` + +## Configuration + +### Gas Categories + +The system supports the following gas categories: + +- **1M**: 1 million gas limit +- **10M**: 10 million gas limit +- **30M**: 30 million gas limit +- **45M**: 45 million gas limit +- **60M**: 60 million gas limit +- **100M**: 100 million gas limit +- **500M**: 500 million gas limit + +### zkVM Implementations + +- **risc0**: RISC0 zkVM implementation (default) +- **sp1**: SP1 zkVM implementation +- **openvm**: OpenVM zkVM implementation +- **pico**: Pico zkVM implementation +- **zisk**: Zisk zkVM implementation + +### Execution Clients + +- **reth**: Reth execution client (default) +- **ethrex**: Ethrex execution client + +## Metrics Structure + +The benchmark system generates JSON files containing: + +### Execution Metrics + +- `total_num_cycles`: Total execution cycles +- `region_cycles`: Cycles by region (setup, compute, teardown, etc.) +- `execution_duration`: Execution time + +### Proving Metrics + +- `proof_size`: Proof size in bytes +- `proving_time_ms`: Proving time in milliseconds +- `peak_memory_usage_bytes`: Peak memory usage during proving +- `average_memory_usage_bytes`: Average memory usage during proving + +### Metadata + +- `name`: Benchmark name +- `timestamp_completed`: Completion timestamp +- `metadata`: Additional benchmark-specific data (gas used, etc.) + +## Getting Help + +All scripts support `--help` or `-h` flags for detailed usage information: + +```bash +./scripts/run-gas-categorized-benchmarks.sh --help +python3 scripts/compare_executions.py --help +``` diff --git a/www/docs/pages/sp1-cluster.mdx b/www/docs/pages/sp1-cluster.mdx new file mode 100644 index 00000000..a4a8c389 --- /dev/null +++ b/www/docs/pages/sp1-cluster.mdx @@ -0,0 +1,447 @@ +# SP1 Cluster Setup Guide + +This guide explains how to set up and run a local SP1 proving cluster using Docker Compose. The SP1 cluster provides a self-hosted environment for generating SP1 proofs with GPU acceleration. + +:::tip[When to Use SP1 Cluster] +Use the local SP1 cluster when you need: +- **Full control** over proving infrastructure +- **Multiple GPUs** for parallel proving +- **Offline operation** without network dependencies +- **Consistent benchmarking** environment +::: + +--- + +## Quick Start + +```bash +# Navigate to the sp1-cluster directory +cd scripts/sp1-cluster + +# Copy environment template (optional, for customization) +cp env.example .env + +# Start the cluster with 4 GPU workers +./start-sp1-cluster.sh --gpu-nodes 4 -d + +# Wait for services to be healthy +./start-sp1-cluster.sh --wait --gpu-nodes 4 +``` + +--- + +## Prerequisites + +### Required Software + +| Software | Minimum Version | Purpose | +|----------|-----------------|---------| +| **Docker** | 20.10+ | Container runtime | +| **Docker Compose** | v2.0+ (v1 supported) | Service orchestration | +| **NVIDIA Driver** | 525+ | GPU support | +| **NVIDIA Container Toolkit** | Latest | Docker GPU access | + +### Hardware Requirements + +| Resource | Minimum | Recommended | +|----------|---------|-------------| +| **CPU** | 8 cores | 32+ cores | +| **RAM** | 32 GB | 64+ GB | +| **GPU** | 1x NVIDIA GPU | 4x RTX 4090 or A100 | +| **Disk** | 50 GB | 100+ GB SSD | + +### Verify Prerequisites + +```bash +# Check Docker +docker --version +docker info + +# Check Docker Compose +docker compose version # v2 +docker-compose --version # v1 (legacy) + +# Check NVIDIA +nvidia-smi + +# Check NVIDIA Container Toolkit +docker info | grep -i nvidia +``` + +--- + +## Installation + +### 1. Install NVIDIA Container Toolkit + +If Docker doesn't show NVIDIA runtime, install the NVIDIA Container Toolkit: + +```bash +# Ubuntu/Debian +curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | \ + sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg + +curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \ + sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \ + sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list + +sudo apt-get update +sudo apt-get install -y nvidia-container-toolkit +sudo nvidia-ctk runtime configure --runtime=docker +sudo systemctl restart docker +``` + +### 2. Verify GPU Access in Docker + +```bash +docker run --rm --gpus all nvidia/cuda:12.0-base nvidia-smi +``` + +--- + +## Configuration + +### Environment Variables + +Copy `env.example` to `.env` and customize: + +```bash +cd scripts/sp1-cluster +cp env.example .env +``` + +#### Resource Limits + +| Variable | Default | Description | +|----------|---------|-------------| +| `REDIS_MEMORY_LIMIT` | 30G | Redis memory limit | +| `CPU_NODE_CPUS_LIMIT` | 8 | CPU cores for CPU node | +| `CPU_NODE_MEMORY_LIMIT` | 32G | Memory for CPU node | +| `GPU_NODE_CPUS_LIMIT` | 32 | CPU cores per GPU node | +| `GPU_NODE_MEMORY_LIMIT` | 24G | Memory per GPU node | + +#### Network Ports + +| Variable | Default | Description | +|----------|---------|-------------| +| `API_PORT` | 50051 | gRPC API port | +| `REDIS_PORT` | 6379 | Redis port | + +#### Other Settings + +| Variable | Default | Description | +|----------|---------|-------------| +| `SP1_CIRCUITS_DIR` | `~/.sp1/circuits` | Circuit cache directory | +| `REDIS_PASSWORD` | redispassword | Redis authentication | +| `POSTGRES_PASSWORD` | postgrespassword | PostgreSQL authentication | + +### Example .env File + +```bash +# Custom resource limits for high-memory workloads +REDIS_MEMORY_LIMIT=64G +CPU_NODE_MEMORY_LIMIT=64G +GPU_NODE_MEMORY_LIMIT=48G + +# Custom ports for running multiple clusters +API_PORT=50052 +REDIS_PORT=6380 + +# Custom circuit cache location +SP1_CIRCUITS_DIR=/data/sp1-circuits +``` + +--- + +## Usage + +### Start the Cluster + +```bash +# Start with 1 GPU worker (default) +./start-sp1-cluster.sh + +# Start with 4 GPU workers in detached mode +./start-sp1-cluster.sh --gpu-nodes 4 -d + +# Start and wait for all services to be healthy +./start-sp1-cluster.sh --gpu-nodes 4 --wait + +# Start in CPU-only mode (no GPUs) +./start-sp1-cluster.sh --gpu-nodes 0 -d + +# Start in mixed mode (single worker handling all tasks) +./start-sp1-cluster.sh --mixed -d + +# Custom ports for multiple clusters +./start-sp1-cluster.sh --port 50052 --redis-port 6380 -d +``` + +### Command Line Options + +| Option | Description | +|--------|-------------| +| `--gpu-nodes N` | Number of GPU workers (0-8, default: 1) | +| `--mixed` | Use mixed worker mode | +| `--port PORT` | API gRPC port (default: 50051) | +| `--redis-port PORT` | Redis port (default: 6379) | +| `--pull` | Force re-pull Docker images | +| `--detach, -d` | Run in background | +| `--wait` | Wait for services to be healthy | +| `--skip-gpu-check` | Skip NVIDIA runtime check | +| `--help, -h` | Show help message | + +### Stop the Cluster + +```bash +# Stop services, keep data +./stop-sp1-cluster.sh + +# Stop and remove all data +./stop-sp1-cluster.sh --remove-volumes + +# Complete cleanup (data + images) +./stop-sp1-cluster.sh --all +``` + +### View Logs and Status + +```bash +cd scripts/sp1-cluster + +# View all logs +docker compose logs -f + +# View specific service logs +docker compose logs -f api +docker compose logs -f gpu0 + +# Check service status +docker compose ps +``` + +--- + +## Architecture + +### Services + +| Service | Description | Replicas | +|---------|-------------|----------| +| **redis** | Artifact storage and caching | 1 | +| **postgresql** | Cluster state and job metadata | 1 | +| **api** | gRPC API for proof requests | 1 | +| **coordinator** | Job distribution to workers | 1 | +| **cpu-node** | CPU-bound proving tasks | 1 | +| **gpu0-gpu7** | GPU-accelerated proving | 0-8 | + +### Data Flow + +``` + ┌──────────────┐ + │ Client │ + │ (SP1 Prover) │ + └──────┬───────┘ + │ gRPC + ▼ + ┌──────────────┐ + │ API │ + │ :50051 │ + └──────┬───────┘ + │ + ▼ + ┌──────────────┐ + │ Coordinator │ + └──────┬───────┘ + │ + ┌─────────────┼─────────────┐ + ▼ ▼ ▼ + ┌──────────┐ ┌──────────┐ ┌──────────┐ + │ CPU Node │ │ GPU 0 │ │ GPU N │ + └────┬─────┘ └────┬─────┘ └────┬─────┘ + │ │ │ + └─────────────┼─────────────┘ + ▼ + ┌──────────────┐ + │ Redis │ + │ (Artifacts) │ + └──────────────┘ +``` + +--- + +## GPU Worker Design + +### One GPU Per Worker + +Each GPU worker is assigned to a single GPU via `CUDA_VISIBLE_DEVICES`. This design provides: + +| Benefit | Description | +|---------|-------------| +| **Memory Isolation** | Dedicated GPU memory prevents OOM errors from affecting other workers | +| **Fault Tolerance** | Worker crashes don't impact other workers | +| **Predictable Performance** | No resource contention ensures consistent proving times | +| **Simplified Debugging** | Issues traceable to specific GPU/worker pairs | + +### GPU Worker Limit (Maximum 8) + +The cluster supports up to 8 GPU workers (gpu0-gpu7). This limit is based on: + +- **Typical Server Configurations**: Most GPU servers have 4-8 GPUs +- **Resource Management**: Each worker requires significant CPU and memory +- **Coordinator Overhead**: More workers increases coordination complexity + +:::info[Scaling Beyond 8 GPUs] +For deployments requiring more than 8 GPUs, run multiple SP1 clusters on separate machines and distribute workloads using a load balancer or job queue. +::: + +--- + +## Running Multiple Clusters + +You can run multiple SP1 clusters on the same machine by using different ports: + +```bash +# Cluster 1 (default ports) +./start-sp1-cluster.sh --gpu-nodes 4 -d + +# Cluster 2 (custom ports) +cd /path/to/second/cluster +API_PORT=50052 REDIS_PORT=6380 ./start-sp1-cluster.sh --gpu-nodes 4 -d +``` + +Or use CLI arguments: + +```bash +# Cluster 2 with CLI arguments +./start-sp1-cluster.sh --port 50052 --redis-port 6380 --gpu-nodes 4 -d +``` + +--- + +## High Availability + +:::warning[Single Instance Architecture] +The default configuration runs a single instance of each service. For production deployments requiring high availability, consider the following recommendations. +::: + +### Production Recommendations + +1. **Multiple Clusters**: Run multiple SP1 clusters on separate machines with a load balancer +2. **External Databases**: Use managed services for Redis and PostgreSQL (AWS ElastiCache, RDS) +3. **Monitoring**: Configure Prometheus/Grafana for metrics and alerting +4. **Backup**: Implement regular backups of PostgreSQL and Redis data +5. **Recovery**: Test disaster recovery procedures regularly + +### Health Checks + +All critical services have health checks configured: + +```yaml +healthcheck: + test: ["CMD", "redis-cli", "ping"] + interval: 10s + timeout: 5s + retries: 5 + start_period: 10s +``` + +Use the `--wait` flag to ensure all services are healthy before proceeding: + +```bash +./start-sp1-cluster.sh --wait --gpu-nodes 4 +``` + +--- + +## Troubleshooting + +### Common Issues + +| Problem | Symptoms | Solution | +|---------|----------|----------| +| **NVIDIA runtime not detected** | GPU workers fail to start | Install NVIDIA Container Toolkit | +| **Out of memory** | Workers killed | Reduce memory limits or add more RAM | +| **Port already in use** | Startup fails | Use `--port` and `--redis-port` flags | +| **Circuit cache permissions** | Workers can't write circuits | Check `SP1_CIRCUITS_DIR` permissions | +| **Services not healthy** | API unreachable | Check logs with `docker compose logs` | + +### Diagnostic Commands + +```bash +cd scripts/sp1-cluster + +# Check if all containers are running +docker compose ps + +# View logs for specific service +docker compose logs -f api +docker compose logs -f coordinator +docker compose logs -f gpu0 + +# Check GPU availability in container +docker compose exec gpu0 nvidia-smi + +# Check Redis connectivity +docker compose exec redis redis-cli -a redispassword ping + +# Check PostgreSQL connectivity +docker compose exec postgresql pg_isready -U postgres +``` + +### Reset the Cluster + +```bash +# Stop and remove everything +./stop-sp1-cluster.sh --all + +# Remove orphan volumes manually +docker volume ls | grep sp1-cluster +docker volume rm + +# Start fresh +./start-sp1-cluster.sh --pull --gpu-nodes 4 -d +``` + +--- + +## Integration with Benchmarks + +To use the local SP1 cluster with the benchmark scripts: + +```bash +# Set the SP1 prover to use local cluster +export SP1_PROVER=cluster +export SP1_CLUSTER_URL=http://localhost:50051 + +# Run benchmarks +./scripts/run-gas-categorized-benchmarks.sh -z sp1 -c 1M +``` + +--- + +## FAQ + +### How many GPUs should I use? + +Start with the number of physical GPUs in your system. For a 4-GPU server, use `--gpu-nodes 4`. + +### Can I run without GPUs? + +Yes, use `--gpu-nodes 0` for CPU-only mode. Proving will be significantly slower. + +### How do I update the cluster? + +```bash +./stop-sp1-cluster.sh +./start-sp1-cluster.sh --pull --gpu-nodes 4 -d +``` + +### Where are the circuit files stored? + +By default in `~/.sp1/circuits`. Override with `SP1_CIRCUITS_DIR` environment variable. + +### Can I run multiple proofs simultaneously? + +Yes, the cluster automatically distributes work across available workers based on capacity and current load. + diff --git a/www/docs/pages/stateless-executor-api.mdx b/www/docs/pages/stateless-executor-api.mdx new file mode 100644 index 00000000..68c3696f --- /dev/null +++ b/www/docs/pages/stateless-executor-api.mdx @@ -0,0 +1,263 @@ +# Stateless Executor API Reference + +This page documents the public types and interfaces of the `stateless-executor` guest program. + +## Input Types + +### `RethStatelessExecutorInput` + +The primary input type for the stateless executor guest program. + +```rust +pub struct RethStatelessExecutorInput { + /// The stateless input for the execution function. + pub stateless_input: StatelessInput, + /// The recovered signers for the transactions in the block. + pub public_keys: Vec, +} +``` + +#### Fields + +| Field | Type | Description | +|-------|------|-------------| +| `stateless_input` | `StatelessInput` | Contains the block to execute and the execution witness | +| `public_keys` | `Vec` | Public keys for each transaction signer (must match transaction count) | + +#### `StatelessInput` Structure + +The `StatelessInput` type (re-exported from `reth_stateless`) contains: + +| Field | Type | Description | +|-------|------|-------------| +| `block` | `Block` | The Ethereum block to execute | +| `witness` | `ExecutionWitness` | State witness data for stateless execution | +| `chain_config` | `ChainConfig` | Chain configuration (hardfork settings, chain ID, etc.) | + +#### `ExecutionWitness` Structure + +The witness data required for stateless execution: + +| Field | Type | Description | +|-------|------|-------------| +| `state` | `HashMap` | Account states (balance, nonce, code, storage) | +| `codes` | `HashMap` | Contract bytecode by code hash | +| `headers` | `Vec` | RLP-encoded ancestor headers (for BLOCKHASH opcode) | + +--- + +## Output Types + +### `RethStatelessExecutorOutput` + +The output type returned by the executor. + +```rust +pub type RethStatelessExecutorOutput = bool; +``` + +| Value | Meaning | +|-------|---------| +| `true` | All transactions executed successfully | +| `false` | One or more transactions failed during execution | + +:::info[Success Criteria] +The executor returns `true` if the EVM successfully processed all transactions, regardless of whether individual transactions reverted. A `false` return indicates a fundamental execution error (e.g., invalid signature, missing state). +::: + +--- + +## Error Types + +### `StatelessExecutionError` + +Errors that can occur during stateless execution. + +```rust +pub enum StatelessExecutionError { + ExecutionFailed(String), + SignerRecovery, + HomesteadSignatureNotNormalized, + PublicKeyCountMismatch { keys: usize, txs: usize }, + WitnessBuildFailed, + HeaderDeserializationFailed, + MissingAncestorHeader, +} +``` + +#### Error Variants + +| Variant | Description | Common Cause | +|---------|-------------|--------------| +| `ExecutionFailed(String)` | EVM execution failed | Invalid transaction, missing state, EVM error | +| `SignerRecovery` | Failed to recover signer from public key | Corrupted public key, invalid signature | +| `HomesteadSignatureNotNormalized` | Non-normalized signature in post-Homestead block | Legacy transaction with high-S signature | +| `PublicKeyCountMismatch` | Number of public keys doesn't match transactions | Mismatched input data | +| `WitnessBuildFailed` | Failed to build state from witness | Invalid or incomplete witness data | +| `HeaderDeserializationFailed` | Failed to deserialize ancestor headers | Corrupted header RLP data | +| `MissingAncestorHeader` | No ancestor headers provided | Empty headers in witness | + +--- + +## Core Functions + +### `stateless_execution_with_trie` + +The main execution function that performs EVM transaction execution. + +```rust +pub fn stateless_execution_with_trie( + current_block: Block, + public_keys: Vec, + witness: ExecutionWitness, + chain_spec: Arc, + evm_config: E, +) -> bool +where + T: StatelessTrie, + ChainSpec: Send + Sync + EthChainSpec
+ EthereumHardforks, + E: ConfigureEvm + Clone + 'static; +``` + +#### Parameters + +| Parameter | Type | Description | +|-----------|------|-------------| +| `current_block` | `Block` | The block containing transactions to execute | +| `public_keys` | `Vec` | Transaction signer public keys | +| `witness` | `ExecutionWitness` | State witness for execution | +| `chain_spec` | `Arc` | Chain specification | +| `evm_config` | `E` | EVM configuration | + +#### Returns + +- `true` if all transactions executed successfully +- `false` if any error occurred during execution + +#### Type Parameters + +| Parameter | Constraint | Description | +|-----------|------------|-------------| +| `T` | `StatelessTrie` | Trie implementation (e.g., `SparseState`) | +| `ChainSpec` | `EthChainSpec + EthereumHardforks` | Chain specification type | +| `E` | `ConfigureEvm` | EVM configuration type | + +--- + +## Guest Implementation + +### `RethStatelessExecutorGuest` + +The guest program implementation for zkVM execution. + +```rust +pub struct RethStatelessExecutorGuest; + +impl Guest for RethStatelessExecutorGuest { + type Io = IoSerde; + + fn compute(input: ::Input) -> ::Output { + // ... execution logic + } +} +``` + +#### Methods + +| Method | Description | +|--------|-------------| +| `compute(input)` | Executes the block and returns success status | +| `run_output_sha256()` | Entry point that reads input, computes, and writes output | + +--- + +## Example Input JSON + +The following shows an example of the input structure (simplified for clarity): + +```json +{ + "stateless_input": { + "block": { + "header": { + "parent_hash": "0x1234...", + "number": 12345, + "gas_limit": 30000000, + "gas_used": 1500000, + "timestamp": 1699999999, + "base_fee_per_gas": 1000000000 + }, + "body": { + "transactions": [ + { + "type": "0x02", + "chain_id": 1, + "nonce": 5, + "gas_limit": 21000, + "to": "0xabcd...", + "value": "1000000000000000000", + "data": "0x", + "max_fee_per_gas": 2000000000, + "max_priority_fee_per_gas": 100000000 + } + ] + } + }, + "witness": { + "state": { + "0x1234...": { + "balance": "1000000000000000000000", + "nonce": 5, + "code_hash": "0x...", + "storage": {} + } + }, + "codes": {}, + "headers": ["0xf90..."] + }, + "chain_config": { + "chain_id": 1, + "homestead_block": 1150000, + "eip150_block": 2463000 + } + }, + "public_keys": [ + "0x04..." + ] +} +``` + +--- + +## Serialization + +The executor uses **Bincode (Legacy)** serialization for zkVM I/O: + +```rust +type Io = IoSerde; +``` + +### Input Serialization + +When preparing inputs for the executor: + +1. Serialize `RethStatelessExecutorInput` using Bincode +2. The zkVM reads this from stdin +3. Deserialization happens inside the guest + +### Output Serialization + +The output is a simple boolean: + +1. `true` or `false` serialized as Bincode +2. Written to zkVM stdout +3. Host reads and interprets result + +--- + +## See Also + +- [Stateless Executor Guide](/stateless-executor-guide) - How to run executor benchmarks +- [Stateless Executor Architecture](/stateless-executor-architecture) - Internal architecture details +- [Executor vs Validator](/executor-vs-validator) - Comparison with stateless-validator + diff --git a/www/docs/pages/stateless-executor-architecture.mdx b/www/docs/pages/stateless-executor-architecture.mdx new file mode 100644 index 00000000..7e75ee88 --- /dev/null +++ b/www/docs/pages/stateless-executor-architecture.mdx @@ -0,0 +1,270 @@ +# Stateless Executor Architecture + +This page provides a deep dive into the technical architecture of the **stateless-executor** guest program, explaining how it achieves pure EVM execution without validation overhead. + +## Overview + +The stateless-executor is designed for benchmarking raw EVM execution cycles in zkVMs. Unlike the `stateless-validator` which performs complete block validation, the executor focuses solely on transaction execution, skipping all consensus-related validation steps. + +## Module Structure + +The stateless-executor crate is organized into three main modules: + +``` +ere-guests/stateless-executor/ +├── src/ +│ ├── lib.rs # Public API and re-exports +│ ├── execution.rs # Core execution logic +│ ├── guest.rs # zkVM guest implementation +│ └── witness_db.rs # EVM database backed by witness data +├── sp1/ # SP1 zkVM implementation +├── risc0/ # RISC0 zkVM implementation +├── openvm/ # OpenVM implementation +├── pico/ # Pico implementation +├── zisk/ # Zisk implementation +└── airbender/ # Airbender implementation +``` + +### `lib.rs` - Public API + +The entry point that exposes the core functionality: + +- `stateless_execution_with_trie()` - Main execution function +- `StatelessExecutionError` - Error types for execution failures +- Re-exports from `reth_stateless` for input types + +### `execution.rs` - Core Execution Logic + +Contains the `stateless_execution_with_trie` function that performs EVM execution. The key steps are: + +1. **Signer Recovery** - Recover transaction signers from public keys +2. **Build Ancestor Hashes** - Construct block hash map for BLOCKHASH opcode (without validation) +3. **Build State from Witness** - Create the state trie from witness data +4. **Create Database** - Initialize the `WitnessDatabase` for EVM access +5. **Execute Block** - Run all transactions through the EVM + +### `guest.rs` - zkVM Guest Implementation + +Implements the `Guest` trait for zkVM execution: + +- `RethStatelessExecutorInput` - Input type containing stateless input and public keys +- `RethStatelessExecutorOutput` - Boolean indicating execution success +- `RethStatelessExecutorGuest` - The guest implementation that runs in zkVMs + +### `witness_db.rs` - EVM Database + +Provides `WitnessDatabase`, an EVM database implementation backed by witness data: + +- Implements `reth_revm::Database` trait +- Provides account state, storage, and bytecode access +- Supports BLOCKHASH opcode via ancestor hashes map + +--- + +## What Gets Skipped + +The stateless-executor deliberately skips several validation steps to measure pure execution costs: + +| Validation Step | Stateless-Validator | Stateless-Executor | +|-----------------|:------------------:|:-----------------:| +| Pre-execution consensus validation | ✅ Performed | ❌ Skipped | +| Header checks | ✅ Performed | ❌ Skipped | +| Ancestor verification | ✅ Performed | ❌ Skipped | +| Post-execution consensus checks | ✅ Performed | ❌ Skipped | +| Receipts root validation | ✅ Performed | ❌ Skipped | +| Gas used validation | ✅ Performed | ❌ Skipped | +| Pre-state root verification | ✅ Performed | ❌ Skipped | +| Post-state root verification | ✅ Performed | ❌ Skipped | +| EVM transaction execution | ✅ Performed | ✅ Performed | + +### Why Skip Validation? + +When benchmarking opcode execution costs, the validation overhead can obscure the actual execution metrics: + +- **Pre-execution validation** involves header parsing, hash computations, and ancestor chain verification +- **Post-execution validation** requires computing receipts root, state root, and comparing against expected values +- **State root verification** involves MPT traversal and hashing + +By skipping these steps, the executor provides more accurate measurements of: +- Raw EVM opcode cycles +- Transaction execution overhead +- Memory access patterns during execution + +--- + +## Execution Flow + +The following diagram illustrates how the stateless-executor processes a block: + +``` +┌─────────────────────────────────────────────────────────────────────────┐ +│ Stateless Executor Flow │ +└─────────────────────────────────────────────────────────────────────────┘ + + Input: StatelessInput + PublicKeys + │ + ▼ + ┌───────────────────────────────┐ + │ 1. Recover Block with PKs │ ← Verify signatures, compute senders + │ (recover_block_with_ │ + │ public_keys) │ + └───────────────────────────────┘ + │ + ▼ + ┌───────────────────────────────┐ + │ 2. Build Ancestor Hashes │ ← Parse headers, build hash map + │ (build_ancestor_hashes_ │ (NO contiguity validation) + │ unchecked) │ + └───────────────────────────────┘ + │ + ▼ + ┌───────────────────────────────┐ + │ 3. Build State from Witness │ ← Create StatelessTrie from witness + │ (T::new) │ (NO state root verification) + └───────────────────────────────┘ + │ + ▼ + ┌───────────────────────────────┐ + │ 4. Create WitnessDatabase │ ← Initialize EVM database with + │ │ trie, bytecode, ancestor hashes + └───────────────────────────────┘ + │ + ▼ + ┌───────────────────────────────┐ + │ 5. Execute Block │ ← Run all transactions via EVM + │ (executor.execute) │ This is what we're measuring! + └───────────────────────────────┘ + │ + ▼ + ┌───────────────────────────────┐ + │ SKIP: Post-execution │ ← NO receipts root validation + │ validation │ NO gas used validation + │ │ NO state root computation + └───────────────────────────────┘ + │ + ▼ + Output: bool (success) +``` + +--- + +## Comparison with Validator Flow + +For comparison, here's how the stateless-validator processes the same input: + +``` +┌─────────────────────────────────────────────────────────────────────────┐ +│ Stateless Validator Flow │ +└─────────────────────────────────────────────────────────────────────────┘ + + Input: StatelessInput + PublicKeys + │ + ▼ + ┌───────────────────────────────┐ + │ 1. Pre-execution Validation │ ← Header checks, ancestor verification + │ (validate_header) │ Consensus rule validation + └───────────────────────────────┘ + │ + ▼ + ┌───────────────────────────────┐ + │ 2. State Root Verification │ ← Verify pre-state root matches + │ (verify_state_root) │ witness state root + └───────────────────────────────┘ + │ + ▼ + ┌───────────────────────────────┐ + │ 3. Execute Block │ ← Same as executor + │ (executor.execute) │ + └───────────────────────────────┘ + │ + ▼ + ┌───────────────────────────────┐ + │ 4. Post-execution Validation │ ← Verify receipts root + │ (validate_block_post_ │ Verify gas used + │ execution) │ Compute & verify state root + └───────────────────────────────┘ + │ + ▼ + Output: bool (valid) +``` + +--- + +## Key Data Structures + +### RethStatelessExecutorInput + +The input provided to the guest program: + +```rust +pub struct RethStatelessExecutorInput { + /// The stateless input for the execution function. + pub stateless_input: StatelessInput, + /// The recovered signers for the transactions in the block. + pub public_keys: Vec, +} +``` + +### StatelessExecutionError + +Possible errors during execution: + +| Error | Description | +|-------|-------------| +| `ExecutionFailed` | EVM execution failed for a transaction | +| `SignerRecovery` | Failed to recover signer from public key | +| `HomesteadSignatureNotNormalized` | Non-normalized signature in post-Homestead block | +| `PublicKeyCountMismatch` | Number of public keys doesn't match transactions | +| `WitnessBuildFailed` | Failed to build state from witness | +| `HeaderDeserializationFailed` | Failed to deserialize ancestor headers | +| `MissingAncestorHeader` | No ancestor headers provided | + +### WitnessDatabase + +The EVM database implementation: + +```rust +pub struct WitnessDatabase<'a, T: StatelessTrie> { + /// Map of block numbers to block hashes (for BLOCKHASH opcode) + block_hashes_by_block_number: BTreeMap, + /// Map of code hashes to bytecode + bytecode: B256Map, + /// The sparse state trie containing account and storage state + trie: &'a T, +} +``` + +The `WitnessDatabase` implements the `reth_revm::Database` trait, providing: +- `basic()` - Account information (balance, nonce, code hash) +- `storage()` - Storage slot values +- `code_by_hash()` - Contract bytecode +- `block_hash()` - Historical block hashes + +--- + +## Cycle Measurement + +The executor wraps the execution step in a cycle scope for accurate measurement: + +```rust +P::cycle_scope("execution", || { + stateless_execution_with_trie::( + input.stateless_input.block, + input.public_keys, + input.stateless_input.witness, + chain_spec, + evm_config, + ) +}) +``` + +This ensures that only the actual EVM execution cycles are measured, not setup or teardown operations. + +--- + +## See Also + +- [Stateless Executor Guide](/stateless-executor-guide) - How to run executor benchmarks +- [Executor vs Validator](/executor-vs-validator) - Detailed comparison and when to use each +- [Stateless Executor API](/stateless-executor-api) - Complete API reference + diff --git a/www/docs/pages/stateless-executor-guide.mdx b/www/docs/pages/stateless-executor-guide.mdx new file mode 100644 index 00000000..b972c7a2 --- /dev/null +++ b/www/docs/pages/stateless-executor-guide.mdx @@ -0,0 +1,757 @@ +# Stateless Executor Benchmark Guide + +This comprehensive guide explains how to run benchmarks using the **stateless-executor** guest program. The stateless-executor is the primary benchmarking workload that executes Ethereum stateless block execution logic without the pre and post execution validation overhead within zkVM environments. + +--- + +## When to Use Stateless Executor + +The `stateless-executor` is designed for specific benchmarking scenarios. Understanding when to use it helps ensure accurate measurements. + +### Ideal Use Cases + +| Use Case | Why Executor? | +|----------|---------------| +| **Opcode cost analysis** | Measures pure EVM execution cycles without validation noise | +| **EVM optimization research** | Isolates execution performance for comparison | +| **zkVM execution benchmarking** | Provides raw cycle counts for execution paths | +| **Gas cost modeling** | Accurate measurement of opcode-level costs | +| **Performance regression testing** | Consistent execution-only baseline for comparisons | + +### When NOT to Use + +| Scenario | Use Instead | +|----------|-------------| +| Production proving cost estimates | `stateless-validator` (includes full validation overhead) | +| Multi-client comparison (Reth vs Ethrex) | `stateless-validator` (supports both clients) | +| Realistic block validation benchmarks | `stateless-validator` (full validation pipeline) | +| zkVM baseline overhead measurement | `empty-program` (minimal workload) | + +### Trade-offs to Consider + +:::warning[Accuracy vs Isolation] +The executor provides **more accurate** measurement of pure EVM execution but **less realistic** overall proving costs. Choose based on your research goals: + +- **Research goal: "How expensive is SLOAD in zkVM?"** → Use `stateless-executor` +- **Research goal: "How much to prove this block?"** → Use `stateless-validator` +::: + +### Decision Criteria + +1. **Are you measuring opcode costs?** → Use `stateless-executor` +2. **Do you need Ethrex support?** → Use `stateless-validator` +3. **Do you need realistic proving estimates?** → Use `stateless-validator` +4. **Are you comparing EVM implementations?** → Use `stateless-executor` + +For a detailed comparison, see [Executor vs Validator](/executor-vs-validator). + +--- + +## TLDR: Quick Start + +For those who want to get started immediately with default settings: + +```bash +# 1. Clone and navigate to the repository +git clone https://github.com/NethermindEth/zkevm-benchmark-workload.git +cd zkevm-benchmark-workload + +# 2. Download EEST test fixtures +./scripts/download-and-extract-fixtures.sh benchmark@v0.0.4 + +# 3. Generate gas-categorized witness files +RAYON_NUM_THREADS=4 ./scripts/generate-gas-categorized-fixtures.sh + +# 4. Run benchmarks (defaults: risc0 zkVM, reth execution client, GPU) +./scripts/run-gas-categorized-benchmarks.sh + +``` + +**Default Configuration:** +- **zkVM**: RISC0 +- **Execution Client**: Reth +- **Resource**: GPU +- **Gas Categories**: 1M, 10M, 30M, 45M, 60M, 100M, 150M +- **Action**: prove + +:::warning[Execution Client Limitation] +The **stateless-executor** only supports the **Reth** execution client. Unlike `stateless-validator` which supports both Reth and Ethrex, the executor is limited to Reth. If you need Ethrex support, use [stateless-validator](/executor-vs-validator) instead. +::: + +--- + +## Prerequisites + +Before running benchmarks, ensure you have the following installed: + +### Required Software + +| Software | Minimum Version | Purpose | +|----------|-----------------|---------| +| **Docker** | 20.10+ | Required for EreDockerized zkVM compilation | +| **Rust** | 1.70+ | Building the benchmark runner | +| **Git** | 2.0+ | Cloning the repository | +| **Python** | 3.8+ | Running analysis scripts | +| **jq** | 1.6+ | JSON processing in shell scripts | +| **curl** | 7.0+ | Downloading fixtures | + +### Hardware Requirements + +| Resource | Minimum | Recommended | +|----------|---------|-------------| +| **CPU** | 8 cores | 16+ cores | +| **RAM** | 16 GB | 32+ GB | +| **GPU (optional)** | NVIDIA with CUDA | RTX 3080+ or A100 | +| **Disk Space** | 50 GB | 100+ GB | + +### Verify Prerequisites + +```bash +# Check Docker +docker --version +docker info # Ensure Docker daemon is running + +# Check Rust +rustc --version +cargo --version + +# Check Python +python3 --version + +# Check other tools +jq --version +curl --version +``` + +--- + +## Complete Workflow + +The benchmarking process consists of four main stages: + +``` +┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐ +│ 1. Download │───▶│ 2. Generate │───▶│ 3. Execute │───▶│ 4. Analyze │ +│ Fixtures │ │ Witnesses │ │ Benchmarks │ │ Results │ +└──────────────────┘ └──────────────────┘ └──────────────────┘ └──────────────────┘ +``` + +### Stage 1: Download EEST Fixtures + +Download the Ethereum Execution Spec Test (EEST) fixtures that serve as the base test data. + +```bash +# Download default fixtures (benchmark@v0.0.6) +./scripts/download-and-extract-fixtures.sh + +# Download latest official release +./scripts/download-and-extract-fixtures.sh latest + +# Download specific version +./scripts/download-and-extract-fixtures.sh v5.0.0 + +# Download to custom directory +./scripts/download-and-extract-fixtures.sh latest ./my-fixtures +``` + +**Output:** Creates `./zkevm-fixtures/` directory containing blockchain test fixtures. + +### Stage 2: Generate Gas-Categorized Fixtures + +Transform the EEST fixtures into `BlockAndWitness` JSON files organized by gas categories. + +:::tip[Troubleshooting Parallelization] +If the process hangs or fails, try limiting parallelization by prefixing commands with `RAYON_NUM_THREADS=4`. +::: + +```bash +# Generate with default gas categories (1M, 10M, 30M, 45M, 60M, 100M, 150M) +./scripts/generate-gas-categorized-fixtures.sh + +# Generate with custom gas categories +./scripts/generate-gas-categorized-fixtures.sh -g 1M,10M,30M + +# Use local EEST fixtures instead of downloading +./scripts/generate-gas-categorized-fixtures.sh -e ./my-local-eest-fixtures + +# Preview commands without executing +./scripts/generate-gas-categorized-fixtures.sh --dry-run +``` + +**Output:** Creates directories like `./zkevm-fixtures-input-1M/`, `./zkevm-fixtures-input-10M/`, etc. + +:::info[Fixture Compatibility] +The generated fixtures are compatible with both `stateless-executor` and `stateless-validator` guest programs. The fixture format (`StatelessValidationFixture`) contains: +- **Block data**: The Ethereum block to execute +- **Witness data**: State, bytecode, and ancestor headers needed for execution +- **Chain config**: Hardfork settings + +See [Gas Categorized Fixtures](/gas-categorized-fixtures#fixture-format) for detailed fixture format documentation. +::: + +### Stage 3: Execute Benchmarks + +Run the stateless-executor benchmarks across your chosen configuration. + +```bash +# Run all gas categories with defaults +./scripts/run-gas-categorized-benchmarks.sh + +# Run with specific zkVM +./scripts/run-gas-categorized-benchmarks.sh -z sp1 +./scripts/run-gas-categorized-benchmarks.sh -z risc0 +./scripts/run-gas-categorized-benchmarks.sh -z openvm + +# Run with specific execution client +./scripts/run-gas-categorized-benchmarks.sh -e ethrex + +# Run on CPU instead of GPU +./scripts/run-gas-categorized-benchmarks.sh -r cpu + +# Run only specific gas categories +./scripts/run-gas-categorized-benchmarks.sh -c 10M +./scripts/run-gas-categorized-benchmarks.sh -c 1M,10M,30M + +# Enable memory tracking +./scripts/run-gas-categorized-benchmarks.sh -m + +# Force rerun (bypass cached results) +./scripts/run-gas-categorized-benchmarks.sh -f + +# Execute only (skip proving) +./scripts/run-gas-categorized-benchmarks.sh -a execute + +# Custom input directory (default: ./zkevm-fixtures-input) +./scripts/run-gas-categorized-benchmarks.sh -i ./my-fixtures + +# Custom output directory (default: ./zkevm-metrics) +./scripts/run-gas-categorized-benchmarks.sh -o ./my-metrics + +# Custom input and output directories +./scripts/run-gas-categorized-benchmarks.sh -i ./my-fixtures -o ./my-metrics + +# Preview commands without executing +./scripts/run-gas-categorized-benchmarks.sh -n +``` + +**Output:** Creates directories like `./zkevm-metrics-risc0-1M/`, `./zkevm-metrics-sp1-10M/`, etc. + +### Stage 4: Analyze Results + +Generate reports and compare benchmark results. + +```bash +# Compare execution metrics between two runs +python3 scripts/compare_executions.py zkevm-metrics-risc0-1M zkevm-metrics-sp1-1M + +# Compare proving times across all zkVMs (uses human-readable names by default) +python3 scripts/compare_proving_times.py + +# Compare proving times with raw benchmark names (disable formatting) +python3 scripts/compare_proving_times.py --no-format + +# Filter by zkVM or benchmark name +python3 scripts/compare_proving_times.py --zkvm sp1 +python3 scripts/compare_proving_times.py --benchmark create + +# Export proving times comparison to markdown +python3 scripts/compare_proving_times.py -o results/ + +# Convert metrics to markdown (uses human-readable names by default) +python3 scripts/convert-metrics-to-markdown.py zkevm-metrics-sp1-1M + +# Convert multiple metrics directories +python3 scripts/convert-metrics-to-markdown.py zkevm-metrics-* + +# Specify output directory for markdown files +python3 scripts/convert-metrics-to-markdown.py -o markdown-reports zkevm-metrics-sp1-1M +``` + +--- + +## Scripts Reference + +### Setup Scripts + +#### `download-and-extract-fixtures.sh` + +Downloads and extracts Ethereum Execution Spec Test fixtures. + +| Option | Description | +|--------|-------------| +| `[TAG]` | EEST release tag (e.g., `v5.0.0`, `latest`) | +| `[DEST_DIR]` | Destination directory (default: `./zkevm-fixtures`) | + +**Environment Variables:** +- `GITHUB_TOKEN`: Optional. Provides authenticated API access to avoid rate limits. + +```bash +# With authentication (recommended for CI/CD) +export GITHUB_TOKEN=ghp_xxxxxxxxxxxx +./scripts/download-and-extract-fixtures.sh latest +``` + +--- + +#### `generate-gas-categorized-fixtures.sh` + +Generates witness files organized by gas categories. + +| Option | Short | Description | Default | +|--------|-------|-------------|---------| +| `--gas` | `-g` | Comma-separated gas categories | 1M,10M,30M,45M,60M,100M,150M | +| `--eest-fixtures-path` | `-e` | Path to local EEST fixtures | - | +| `--dry-run` | - | Preview commands only | false | +| `--help` | `-h` | Show help message | - | + +**Gas Category Format:** Use rational numbers with `M` suffix (e.g., `0.5M`, `1M`, `2.5M`, `10M`). + +```bash +# Examples +./scripts/generate-gas-categorized-fixtures.sh -g 0.5M,1M,2.5M +./scripts/generate-gas-categorized-fixtures.sh -e ./eest-fixtures -g 10M,30M +``` + +--- + +### Benchmark Execution Scripts + +#### `run-gas-categorized-benchmarks.sh` + +Main script for running stateless-executor benchmarks. + +| Option | Short | Description | Default | +|--------|-------|-------------|---------| +| `--dry-run` | `-n` | Preview commands only | false | +| `--force-rerun` | `-f` | Force rerun of benchmarks | false | +| `--action` | `-a` | Action: `prove` or `execute` | prove | +| `--resource` | `-r` | Resource: `gpu` or `cpu` | gpu | +| `--guest` | `-g` | Guest program type | stateless-executor | +| `--zkvm` | `-z` | zkVM implementation | risc0 | +| `--execution-client` | `-e` | Execution client | reth | +| `--input-dir` | `-i` | Base input directory | ./zkevm-fixtures-input | +| `--output-dir` | `-o` | Base output directory | ./zkevm-metrics | +| `--gas-categories` | `-c` | Gas categories to run | 1M,10M,30M,45M,60M,100M,150M | +| `--memory-tracking` | `-m` | Enable memory tracking | false | + +**Supported zkVMs:** +- `risc0` - RISC0 zkVM (default) +- `sp1` - SP1 zkVM +- `openvm` - OpenVM zkVM +- `pico` - Pico zkVM +- `zisk` - Zisk zkVM +- `airbender` - Airbender zkVM + +**Supported Execution Clients:** +- `reth` - Reth (default) +- `ethrex` - Ethrex + +```bash +# Full example with all options +./scripts/run-gas-categorized-benchmarks.sh \ + -z sp1 \ + -e reth \ + -r gpu \ + -a prove \ + -c 1M,10M \ + -m \ + -f +``` + +--- + +### Analysis Scripts + +#### `compare_executions.py` + +Compares execution cycle counts between two benchmark runs. + +```bash +python3 scripts/compare_executions.py + +# Example +python3 scripts/compare_executions.py zkevm-metrics-risc0-1M zkevm-metrics-sp1-1M +``` + +**Output includes:** +- Speedup table by region (verify_witness, post_state_compute, validation, etc.) +- Total cycle counts comparison +- Statistical analysis with best/worst performers +- Key findings summary + +--- + +#### `compare_provings.py` + +Compares proving time metrics between two runs. + +```bash +python3 scripts/compare_provings.py + +# Example +python3 scripts/compare_provings.py zkevm-metrics-risc0-10M zkevm-metrics-sp1-10M +``` + +**Output includes:** +- Proving time speedup analysis +- Time savings calculations (in seconds) +- Efficiency gain reporting +- Top performers identification + + +--- + +#### `analyze_opcode_traces.py` + +Analyzes bytecode and traces opcode execution. + +```bash +python3 scripts/analyze_opcode_traces.py [OPTIONS] + +# Options +--fixtures-dir Directory with test fixtures +--output Output directory for reports +--test-case Specific test case to analyze + +# Example +python3 scripts/analyze_opcode_traces.py --fixtures-dir ./zkevm-fixtures --output ./opcode-analysis +``` + +--- + +## zkVM Compatibility + +The stateless-executor supports multiple zkVM platforms. Each platform has been tested for compatibility with the executor guest program. + +### Supported zkVM Platforms + +| zkVM | Status | GPU Support | Notes | +|------|:------:|:-----------:|-------| +| **RISC0** | ✅ Supported | ✅ Yes | Default zkVM, well-tested, production-ready | +| **SP1** | ✅ Supported | ✅ Yes | Excellent GPU acceleration, fast proving | +| **OpenVM** | ✅ Supported | ✅ Yes | Good performance characteristics | +| **Pico** | ✅ Supported | ⚠️ Limited | Experimental GPU support | +| **Zisk** | ✅ Supported | ✅ Yes | Strong GPU performance | +| **Airbender** | ✅ Supported | ✅ Yes | Optimized for specific workloads | + +### Platform Selection Guidelines + +```bash +# RISC0 - Default choice, best documentation and support +./scripts/run-gas-categorized-benchmarks.sh -z risc0 + +# SP1 - Fast proving, excellent for large workloads +./scripts/run-gas-categorized-benchmarks.sh -z sp1 + +# OpenVM - Alternative with good performance +./scripts/run-gas-categorized-benchmarks.sh -z openvm + +# Zisk - Strong GPU acceleration +./scripts/run-gas-categorized-benchmarks.sh -z zisk +``` + +### Performance Characteristics + +Different zkVMs have different performance profiles: + +| zkVM | Cycle Counting | Proving Speed | Memory Usage | +|------|----------------|---------------|--------------| +| **RISC0** | Accurate | Moderate | Moderate | +| **SP1** | Accurate | Fast | Higher | +| **OpenVM** | Accurate | Fast | Moderate | +| **Pico** | Accurate | Moderate | Lower | +| **Zisk** | Accurate | Fast | Higher | +| **Airbender** | Accurate | Variable | Variable | + +:::info[Cycle Count Consistency] +All supported zkVMs provide consistent cycle counts for the same execution workload. The primary differences are in proving speed and memory requirements, not in the cycle measurement accuracy. +::: + +### Running Multi-zkVM Comparisons + +To compare the same workload across multiple zkVMs: + +```bash +# Run the same gas category across different zkVMs +for zkvm in risc0 sp1 openvm zisk; do + ./scripts/run-gas-categorized-benchmarks.sh \ + -z "$zkvm" \ + -c 1M \ + -o "./zkevm-metrics-${zkvm}" +done + +# Compare results +python3 scripts/compare_proving_times.py +``` + +--- + +## Troubleshooting + +### Stage 1: Download Fixtures + +| Problem | Symptoms | Solution | +|---------|----------|----------| +| **GitHub rate limit** | `API rate limit exceeded` error | Set `GITHUB_TOKEN` environment variable | +| **Network timeout** | Download stalls or fails | Retry with `curl --retry 3` or use VPN | +| **Asset not found** | `Asset not found in release` error | Check the release tag exists on GitHub | +| **Disk space** | Extraction fails | Ensure 10+ GB free space | + +```bash +# Fix rate limit +export GITHUB_TOKEN=ghp_your_token_here +./scripts/download-and-extract-fixtures.sh + +# Check disk space +df -h . +``` + +--- + +### Stage 2: Generate Fixtures + +| Problem | Symptoms | Solution | +|---------|----------|----------| +| **Missing EEST fixtures** | `Fixtures directory not found` | Run download script first | +| **Invalid gas format** | `Invalid gas value format` error | Use format like `1M`, `0.5M`, `10M` | +| **Build failure** | Cargo compilation errors | Check Rust version, run `rustup update` | +| **Memory exhaustion** | Process killed | Reduce parallel jobs or increase RAM | + +```bash +# Verify fixtures exist +ls -la ./zkevm-fixtures/ + +# Check Rust installation +rustup show +rustup update + +# Build with verbose output +cargo build --release --bin witness-generator-cli -v +``` + +--- + +### Stage 3: Execute Benchmarks + +| Problem | Symptoms | Solution | +|---------|----------|----------| +| **Docker not running** | `Cannot connect to Docker daemon` | Start Docker: `sudo systemctl start docker` | +| **GPU not detected** | CUDA errors or fallback to CPU | Check `nvidia-smi`, use `-r cpu` flag | +| **Input not found** | `Input directory not found` | Run fixture generation first | +| **Out of memory** | Process killed, OOM errors | Use smaller gas categories or more RAM | +| **Build failure** | EreDockerized compilation errors | Check Docker disk space, restart Docker | + +```bash +# Check Docker +docker info +docker ps + +# Check GPU +nvidia-smi + +# Check input directories +ls -la zkevm-fixtures-input-* + +# Run with CPU if GPU issues +./scripts/run-gas-categorized-benchmarks.sh -r cpu + +# Run smaller gas category first +./scripts/run-gas-categorized-benchmarks.sh -c 1M +``` + +--- + +### Stage 4: Analysis + +| Problem | Symptoms | Solution | +|---------|----------|----------| +| **No common files** | `No common files found` | Ensure both folders have matching test names | +| **Import error** | `ModuleNotFoundError` | Run from scripts directory or fix PYTHONPATH | +| **Empty results** | No data in output | Check JSON files exist in metrics folders | + +```bash +# Check metrics files exist +ls -la zkevm-metrics-*/ + +# Run from correct directory +cd /path/to/zkevm-benchmark-workload +python3 scripts/compare_executions.py ... + +# Verify JSON structure +cat zkevm-metrics-risc0-1M/some-test.json | jq . +``` + +--- + +## Automation & Best Practices + +### Environment Configuration + +Create a `.env` file for consistent configuration: + +```bash +# .env +export GITHUB_TOKEN=ghp_xxxxxxxxxxxx +export ZKVM=risc0 +export EXECUTION_CLIENT=reth +export GAS_CATEGORIES=1M,10M,30M +export RESOURCE=gpu +``` + +Load before running: + +```bash +source .env +./scripts/run-gas-categorized-benchmarks.sh -z $ZKVM -e $EXECUTION_CLIENT -c $GAS_CATEGORIES -r $RESOURCE +``` + +--- + +### Batch Processing Multiple zkVMs + +```bash +#!/bin/bash +# run-all-zkvms.sh + +ZKVMS=("risc0" "sp1") +GAS_CATEGORIES="1M,10M" + +for zkvm in "${ZKVMS[@]}"; do + echo "Running benchmarks for $zkvm..." + ./scripts/run-gas-categorized-benchmarks.sh \ + -z "$zkvm" \ + -c "$GAS_CATEGORIES" \ + -f + + if [ $? -ne 0 ]; then + echo "Failed: $zkvm" + exit 1 + fi +done + +echo "All benchmarks completed!" + +# Generate comparison reports +for gas in 1M 10M; do + echo "Comparing results for ${gas}..." + python3 scripts/compare_executions.py \ + "zkevm-metrics-risc0-${gas}" \ + "zkevm-metrics-sp1-${gas}" \ + > "comparison-risc0-vs-sp1-${gas}.txt" +done +``` + +--- + +### Memory Tracking Best Practices + +When using memory tracking (`-m` flag): + +1. **Start with smaller gas categories** to establish baseline memory usage +2. **Monitor system memory** during execution: `watch -n 1 free -h` +3. **Allocate 2x expected memory** as headroom for peak usage +4. **Review memory metrics** in output JSON for optimization opportunities + +```bash +# Run with memory tracking on small category first +./scripts/run-gas-categorized-benchmarks.sh -c 1M -m + +# Check memory metrics +jq '.proving.success.peak_memory_usage_bytes' zkevm-metrics-risc0-1M/*.json +``` + +--- + +### Performance Optimization Tips + +1. **Use GPU when available** - Proving is 5-10x faster with GPU +2. **Start small** - Test with 1M gas category before running larger ones +3. **Use dry-run first** - Preview commands with `-n` flag +4. **Parallelize zkVM runs** - Run different zkVMs on different machines +5. **Monitor disk space** - Metrics can consume significant space for large runs +6. **Cache fixtures** - Reuse generated fixtures across multiple benchmark runs + +--- + +### Execution Time Estimates + +| Gas Category | GPU (prove) | CPU (prove) | GPU (execute) | CPU (execute) | +|--------------|-------------|-------------|---------------|---------------| +| 1M | 5-15 min | 30-60 min | 1-2 min | 5-10 min | +| 10M | 15-30 min | 1-2 hr | 5-10 min | 20-40 min | +| 30M | 30-60 min | 2-4 hr | 10-20 min | 40-80 min | +| 45M | 45-90 min | 3-6 hr | 15-30 min | 1-2 hr | +| 60M | 60-120 min | 4-8 hr | 20-40 min | 1.5-3 hr | +| 100M | 90-180 min | 6-12 hr | 30-60 min | 2-4 hr | +| 150M | 120-240 min | 8-16 hr | 45-90 min | 3-6 hr | + +*Times are estimates and vary based on hardware and zkVM implementation.* + +--- + +## Output Structure + +After running benchmarks, your directory structure will look like: + +``` +zkevm-benchmark-workload/ +├── zkevm-fixtures/ # Downloaded EEST fixtures +│ └── fixtures/ +│ └── blockchain_tests/ +│ └── benchmark/ +├── zkevm-fixtures-input-1M/ # Generated witnesses (1M gas) +│ ├── test-case-1.json +│ ├── test-case-2.json +│ └── ... +├── zkevm-fixtures-input-10M/ # Generated witnesses (10M gas) +├── zkevm-metrics-risc0-1M/ # RISC0 results (1M gas) +│ ├── test-case-1.json # Contains execution & proving metrics +│ └── ... +├── zkevm-metrics-sp1-1M/ # SP1 results (1M gas) +├── index.html # Generated HTML report +└── comparison-*.txt # Comparison reports +``` + +### Metrics JSON Structure + +Each metrics file contains: + +```json +{ + "name": "test-case-name", + "execution": { + "success": { + "total_num_cycles": 5000000, + "region_cycles": { + "execution": 5000000 + }, + "execution_duration": { + "secs": 45, + "nanos": 123456789 + } + } + }, + "proving": { + "success": { + "proving_time_ms": 180000, + "proof_size": 1024, + "peak_memory_usage_bytes": 8589934592 + } + } +} +``` + +:::info[Executor-Specific Metrics] +The `stateless-executor` only measures the **"execution"** region, which represents pure EVM transaction execution cycles. Unlike `stateless-validator`, the executor does not include `verify_witness`, `post_state_compute`, or `validation` regions because it skips all validation steps. + +This makes the metrics directly reflect the cost of EVM opcode execution without validation overhead. +::: + +--- + +For more detailed information on specific topics: + +- [Gas Categorized Fixtures](/gas-categorized-fixtures) - Fixture generation details +- [Gas Categorized Benchmarks](/gas-categorized-benchmarks) - Benchmark execution details +- [Scripts Reference](/scripts) - Complete scripts documentation + diff --git a/www/docs/public/marginal-gas-benchmark/combined-sp1-risc0.html b/www/docs/public/marginal-gas-benchmark/combined-sp1-risc0.html new file mode 100644 index 00000000..ad1262f6 --- /dev/null +++ b/www/docs/public/marginal-gas-benchmark/combined-sp1-risc0.html @@ -0,0 +1,687 @@ + + + + + +SP1 vs RISC0 Comparison Report + + + +
+

SP1 vs RISC0 Comparison Report

+
+

Generated: 2025-12-29 21:33:05

+

SP1 Opcodes: 105 | RISC0 Opcodes: 105 | Common: 105

+
+

Proving Time per Gas (Side-by-Side Comparison)

+

Only opcodes/precompiles with R² ≥ 0.7 in both zkVMs are shown. Each chart is independently ordered by its own proving time.

+
+ +
+

Proving Time per ZK Cycle (Side-by-Side Comparison)

+

All opcodes/precompiles with available data are shown. Each chart is independently ordered and scaled, as ZK cycles have different meanings in SP1 vs RISC0.

+
+ +
+

Performance Ratio (RISC0 / SP1)

+

Values < 1 indicate RISC0 is faster, values > 1 indicate SP1 is faster.

+
+ +
+

Detailed Comparison Table

+

All opcodes and precompiles with available data from both zkVMs.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
OpcodeSP1 µs/gas (R²)RISC0 µs/gas (R²)Max µs/gas
modexp554.91 (0.9945)1362.81 (0.9998)1362.81
point_evaluation398.23 (1.0000)85.54 (0.9945)398.23
blake2f81.60 (0.9995)242.84 (1.0000)242.84
bls12_map_fp_to_g1159.35 (0.9993)31.51 (0.9772)159.35
mulmod52.68 (0.9999)151.85 (1.0000)151.85
bls12_pairing133.93 (1.0000)36.15 (0.9979)133.93
bls12_g1add112.19 (0.9995)25.16 (0.9518)112.19
bls12_map_fp2_to_g2112.10 (0.9999)19.25 (0.9404)112.10
bls12_g2add110.98 (0.9986)20.28 (0.9636)110.98
div38.98 (0.9973)110.29 (0.9999)110.29
mod31.87 (0.9997)94.55 (1.0000)94.55
sdiv32.61 (0.9951)92.84 (1.0000)92.84
bn128_mul40.27 (0.9977)86.68 (0.9997)86.68
selfbalance31.23 (0.9980)84.67 (0.9999)84.67
keccak2566.68 (0.9992)84.62 (0.9980)84.62
bn128_pairing22.11 (0.9909)81.72 (0.9968)81.72
ecrecover9.55 (0.9380)81.32 (0.9921)81.32
addmod24.18 (0.9999)71.00 (0.9999)71.00
bls12_g1msm51.92 (0.9974)37.74 (0.9893)51.92
bls12_g2msm39.40 (0.9966)28.85 (0.9960)39.40
bn128_add37.83 (0.9196)28.52 (0.7509)37.83
eq14.68 (0.9872)34.89 (0.9993)34.89
exp12.03 (0.9968)32.61 (0.9997)32.61
smod9.71 (0.9969)28.99 (0.9996)28.99
sar9.80 (0.9839)28.77 (0.9998)28.77
prevrandao10.61 (0.9904)27.62 (0.9998)27.62
call9.27 (0.9932)24.72 (1.0000)24.72
callcode9.26 (0.9991)24.46 (0.9999)24.46
staticcall8.97 (0.9999)23.98 (0.9999)23.98
mstore9.77 (0.9946)22.14 (0.9961)22.14
address7.42 (0.9953)21.50 (0.9969)21.50
origin8.10 (0.9678)21.41 (0.9995)21.41
caller8.17 (0.9845)21.35 (0.9998)21.35
mul7.33 (0.9892)21.21 (0.9970)21.21
delegatecall7.55 (0.9999)20.95 (0.9998)20.95
coinbase8.25 (0.9857)20.80 (0.9983)20.80
signextend5.91 (0.9918)20.53 (0.9997)20.53
shl6.26 (0.9913)20.17 (0.9991)20.17
calldataload6.35 (0.9983)20.03 (0.9970)20.03
mload6.55 (0.9755)19.82 (0.9983)19.82
shr7.09 (0.9971)18.85 (0.9984)18.85
swap1610.79 (0.9845)17.95 (0.9957)17.95
push327.52 (0.9244)16.51 (0.9954)16.51
swap19.49 (0.9781)16.31 (0.9913)16.31
swap89.93 (0.9847)15.32 (0.9917)15.32
blobbasefee6.62 (0.9940)14.61 (0.9997)14.61
gasprice6.50 (0.9995)14.14 (0.9986)14.14
slt3.79 (0.8388)13.84 (0.9963)13.84
sgt3.55 (0.8265)13.68 (0.9896)13.68
sub2.59 (0.7971)13.48 (0.9927)13.48
callvalue6.31 (0.9789)13.39 (0.9978)13.39
codecopy7.13 (0.9950)12.70 (0.9998)12.70
sstore4.61 (0.9998)12.64 (0.9994)12.64
calldatacopy4.14 (0.9724)12.43 (0.9999)12.43
pc5.43 (0.9565)11.71 (1.0000)11.71
add3.78 (0.9987)11.65 (0.9991)11.65
gas5.51 (0.9836)11.37 (0.9961)11.37
timestamp4.33 (0.9887)11.32 (0.9987)11.32
basefee4.68 (0.9866)11.25 (0.9987)11.25
number4.66 (0.9843)11.22 (0.9999)11.22
calldatasize5.48 (0.9780)11.12 (0.9972)11.12
push163.73 (0.9960)11.11 (0.9999)11.11
codesize5.63 (0.9864)10.76 (0.9992)10.76
chainid5.04 (1.0000)10.65 (0.9979)10.65
lt3.95 (0.9971)10.60 (0.9483)10.60
gaslimit4.79 (0.9959)10.58 (0.9953)10.58
msize3.96 (0.9917)10.57 (0.9998)10.57
returndatasize4.70 (0.9944)10.45 (0.9996)10.45
push04.92 (0.9425)10.31 (0.9990)10.31
gt3.84 (0.9896)9.70 (0.9983)9.70
sha2569.61 (0.9985)0.94 (0.8017)9.61
blobhash1.92 (0.9644)9.55 (0.9981)9.55
or3.02 (0.8897)9.07 (0.9728)9.07
mstore83.36 (0.9735)9.02 (0.9980)9.02
byte4.54 (0.9691)8.86 (0.9964)8.86
xor4.91 (0.9720)8.63 (0.9994)8.63
jumpdest4.10 (0.9930)8.55 (0.9944)8.55
returndatacopy4.20 (0.9857)8.51 (0.9920)8.51
and5.24 (0.9897)8.11 (0.9966)8.11
iszero2.30 (0.8634)7.74 (0.9938)7.74
extcodehash3.24 (0.9982)7.64 (0.9998)7.64
not1.89 (0.9312)6.40 (0.9948)6.40
dup163.54 (0.9449)6.27 (0.9768)6.27
dup83.21 (0.9217)5.95 (0.9816)5.95
extcodesize2.25 (0.9978)5.95 (0.9996)5.95
balance2.43 (0.9993)5.91 (0.9999)5.91
dup13.05 (0.8879)5.89 (0.9909)5.89
tstore2.08 (0.9995)5.82 (1.0000)5.82
extcodecopy2.30 (0.9967)5.54 (0.9999)5.54
pop0.96 (0.7252)5.47 (0.9867)5.47
sload2.10 (0.9979)5.39 (0.9999)5.39
mcopy2.09 (0.9951)5.20 (0.9974)5.20
push12.75 (0.9551)5.19 (0.9935)5.19
jumpi2.09 (0.9972)4.52 (0.9978)4.52
ripemd1601.55 (0.9559)3.15 (0.9982)3.15
jump0.88 (0.8975)2.74 (0.9976)2.74
identity2.06 (0.7010)1.87 (0.9274)2.06
tload0.35 (0.9982)0.86 (0.9999)0.86
create20.15 (0.9997)0.56 (0.9999)0.56
create0.15 (0.9997)0.49 (0.9998)0.49
log00.15 (0.9268)0.30 (0.9807)0.30
log10.14 (0.9995)0.27 (0.9959)0.27
log30.07 (0.9979)0.16 (0.9874)0.16
log20.08 (0.9756)0.15 (0.9985)0.15
log40.08 (0.9897)0.15 (0.9983)0.15
+
+ + \ No newline at end of file diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/bar_cycles_per_gas.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/bar_cycles_per_gas.png new file mode 100644 index 00000000..6c9ab33a Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/bar_cycles_per_gas.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/bar_time_per_cycle.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/bar_time_per_cycle.png new file mode 100644 index 00000000..e064a620 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/bar_time_per_cycle.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/bar_time_per_gas.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/bar_time_per_gas.png new file mode 100644 index 00000000..61810560 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/bar_time_per_gas.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/combined_zkcycles_bls12.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/combined_zkcycles_bls12.png new file mode 100644 index 00000000..3bd26522 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/combined_zkcycles_bls12.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/combined_zkcycles_proving.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/combined_zkcycles_proving.png new file mode 100644 index 00000000..1fed8eec Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/combined_zkcycles_proving.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/combined_zkcycles_regular.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/combined_zkcycles_regular.png new file mode 100644 index 00000000..e8fce50b Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/combined_zkcycles_regular.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/combined_zkcycles_regular_minimal.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/combined_zkcycles_regular_minimal.png new file mode 100644 index 00000000..2fcd74aa Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/combined_zkcycles_regular_minimal.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/combined_zkcycles_regular_no_outliers.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/combined_zkcycles_regular_no_outliers.png new file mode 100644 index 00000000..5b4acb01 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/combined_zkcycles_regular_no_outliers.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_add.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_add.png new file mode 100644 index 00000000..060c33fb Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_add.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_addmod.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_addmod.png new file mode 100644 index 00000000..8c56d5e1 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_addmod.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_address.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_address.png new file mode 100644 index 00000000..65125c60 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_address.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_and.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_and.png new file mode 100644 index 00000000..801172b0 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_and.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_balance.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_balance.png new file mode 100644 index 00000000..c5aa54d1 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_balance.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_basefee.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_basefee.png new file mode 100644 index 00000000..92c2a0fc Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_basefee.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_blake2f.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_blake2f.png new file mode 100644 index 00000000..8a299210 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_blake2f.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_blobbasefee.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_blobbasefee.png new file mode 100644 index 00000000..8a6a2f7a Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_blobbasefee.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_blobhash.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_blobhash.png new file mode 100644 index 00000000..2ecb71c2 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_blobhash.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_bls12_g1add.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_bls12_g1add.png new file mode 100644 index 00000000..bf5d6e9d Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_bls12_g1add.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_bls12_g1msm.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_bls12_g1msm.png new file mode 100644 index 00000000..6d6336c9 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_bls12_g1msm.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_bls12_g2add.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_bls12_g2add.png new file mode 100644 index 00000000..af497dfb Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_bls12_g2add.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_bls12_g2msm.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_bls12_g2msm.png new file mode 100644 index 00000000..bb9c8dd5 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_bls12_g2msm.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_bls12_map_fp2_to_g2.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_bls12_map_fp2_to_g2.png new file mode 100644 index 00000000..e2780d14 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_bls12_map_fp2_to_g2.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_bls12_map_fp_to_g1.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_bls12_map_fp_to_g1.png new file mode 100644 index 00000000..c267f6f1 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_bls12_map_fp_to_g1.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_bls12_pairing.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_bls12_pairing.png new file mode 100644 index 00000000..bbf60f27 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_bls12_pairing.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_bn128_add.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_bn128_add.png new file mode 100644 index 00000000..2ff8bbdc Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_bn128_add.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_bn128_mul.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_bn128_mul.png new file mode 100644 index 00000000..5adcb951 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_bn128_mul.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_bn128_pairing.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_bn128_pairing.png new file mode 100644 index 00000000..10c64f91 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_bn128_pairing.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_byte.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_byte.png new file mode 100644 index 00000000..8704ef32 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_byte.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_call.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_call.png new file mode 100644 index 00000000..e68d4c1b Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_call.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_callcode.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_callcode.png new file mode 100644 index 00000000..5ca3a14b Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_callcode.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_calldatacopy.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_calldatacopy.png new file mode 100644 index 00000000..f3654612 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_calldatacopy.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_calldataload.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_calldataload.png new file mode 100644 index 00000000..71187ae4 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_calldataload.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_calldatasize.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_calldatasize.png new file mode 100644 index 00000000..718fb165 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_calldatasize.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_caller.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_caller.png new file mode 100644 index 00000000..287690cb Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_caller.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_callvalue.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_callvalue.png new file mode 100644 index 00000000..a2e02492 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_callvalue.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_chainid.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_chainid.png new file mode 100644 index 00000000..4d2dac82 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_chainid.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_codecopy.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_codecopy.png new file mode 100644 index 00000000..91d09f54 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_codecopy.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_codesize.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_codesize.png new file mode 100644 index 00000000..fb912a37 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_codesize.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_coinbase.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_coinbase.png new file mode 100644 index 00000000..4008aab4 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_coinbase.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_create.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_create.png new file mode 100644 index 00000000..829d6657 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_create.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_create2.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_create2.png new file mode 100644 index 00000000..c64ce958 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_create2.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_delegatecall.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_delegatecall.png new file mode 100644 index 00000000..4233f165 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_delegatecall.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_div.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_div.png new file mode 100644 index 00000000..df8a02c7 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_div.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_dup1.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_dup1.png new file mode 100644 index 00000000..52c5a21d Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_dup1.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_dup16.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_dup16.png new file mode 100644 index 00000000..d4258cfd Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_dup16.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_dup8.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_dup8.png new file mode 100644 index 00000000..9ff32416 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_dup8.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_ecrecover.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_ecrecover.png new file mode 100644 index 00000000..da32ef1d Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_ecrecover.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_eq.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_eq.png new file mode 100644 index 00000000..fe17a1ce Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_eq.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_exp.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_exp.png new file mode 100644 index 00000000..9b8fcfe8 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_exp.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_extcodecopy.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_extcodecopy.png new file mode 100644 index 00000000..b858241b Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_extcodecopy.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_extcodehash.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_extcodehash.png new file mode 100644 index 00000000..445ca351 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_extcodehash.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_extcodesize.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_extcodesize.png new file mode 100644 index 00000000..048a9e3e Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_extcodesize.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_gas.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_gas.png new file mode 100644 index 00000000..9737faf5 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_gas.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_gaslimit.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_gaslimit.png new file mode 100644 index 00000000..531ef72c Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_gaslimit.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_gasprice.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_gasprice.png new file mode 100644 index 00000000..11da230c Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_gasprice.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_gt.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_gt.png new file mode 100644 index 00000000..cfff3519 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_gt.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_identity.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_identity.png new file mode 100644 index 00000000..cb652194 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_identity.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_iszero.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_iszero.png new file mode 100644 index 00000000..ca6c250a Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_iszero.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_jump.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_jump.png new file mode 100644 index 00000000..c302a12e Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_jump.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_jumpdest.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_jumpdest.png new file mode 100644 index 00000000..5b85ac6f Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_jumpdest.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_jumpi.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_jumpi.png new file mode 100644 index 00000000..e741a3ab Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_jumpi.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_keccak256.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_keccak256.png new file mode 100644 index 00000000..b4d8b3d3 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_keccak256.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_log0.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_log0.png new file mode 100644 index 00000000..8a452706 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_log0.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_log1.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_log1.png new file mode 100644 index 00000000..2a89a9b7 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_log1.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_log2.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_log2.png new file mode 100644 index 00000000..2678f6b4 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_log2.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_log3.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_log3.png new file mode 100644 index 00000000..6eee5f9f Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_log3.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_log4.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_log4.png new file mode 100644 index 00000000..a29d41b4 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_log4.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_lt.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_lt.png new file mode 100644 index 00000000..86514338 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_lt.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_mcopy.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_mcopy.png new file mode 100644 index 00000000..f09ddd06 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_mcopy.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_mload.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_mload.png new file mode 100644 index 00000000..f6c0fd3c Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_mload.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_mod.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_mod.png new file mode 100644 index 00000000..f6af4fdc Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_mod.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_modexp.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_modexp.png new file mode 100644 index 00000000..99af2895 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_modexp.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_msize.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_msize.png new file mode 100644 index 00000000..b700f3cc Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_msize.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_mstore.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_mstore.png new file mode 100644 index 00000000..f9e05a71 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_mstore.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_mstore8.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_mstore8.png new file mode 100644 index 00000000..f29d9ed1 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_mstore8.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_mul.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_mul.png new file mode 100644 index 00000000..7bce072d Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_mul.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_mulmod.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_mulmod.png new file mode 100644 index 00000000..563a293c Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_mulmod.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_not.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_not.png new file mode 100644 index 00000000..fc719874 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_not.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_number.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_number.png new file mode 100644 index 00000000..49334939 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_number.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_or.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_or.png new file mode 100644 index 00000000..2b696bd2 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_or.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_origin.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_origin.png new file mode 100644 index 00000000..e80d14c8 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_origin.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_pc.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_pc.png new file mode 100644 index 00000000..1231cbf4 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_pc.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_point_evaluation.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_point_evaluation.png new file mode 100644 index 00000000..d75c7c18 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_point_evaluation.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_pop.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_pop.png new file mode 100644 index 00000000..ef129b6b Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_pop.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_prevrandao.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_prevrandao.png new file mode 100644 index 00000000..7fb1224d Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_prevrandao.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_push0.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_push0.png new file mode 100644 index 00000000..87a983b0 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_push0.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_push1.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_push1.png new file mode 100644 index 00000000..0f8de156 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_push1.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_push16.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_push16.png new file mode 100644 index 00000000..9d3a316a Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_push16.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_push32.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_push32.png new file mode 100644 index 00000000..ec7932a8 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_push32.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_returndatacopy.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_returndatacopy.png new file mode 100644 index 00000000..9147a5d3 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_returndatacopy.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_returndatasize.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_returndatasize.png new file mode 100644 index 00000000..397edbf0 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_returndatasize.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_ripemd160.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_ripemd160.png new file mode 100644 index 00000000..b4423176 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_ripemd160.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_sar.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_sar.png new file mode 100644 index 00000000..5c722cb3 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_sar.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_sdiv.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_sdiv.png new file mode 100644 index 00000000..bda8c1a8 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_sdiv.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_selfbalance.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_selfbalance.png new file mode 100644 index 00000000..48698558 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_selfbalance.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_sgt.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_sgt.png new file mode 100644 index 00000000..e4d44fa7 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_sgt.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_sha256.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_sha256.png new file mode 100644 index 00000000..c94f16aa Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_sha256.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_shl.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_shl.png new file mode 100644 index 00000000..c563338b Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_shl.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_shr.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_shr.png new file mode 100644 index 00000000..899568fb Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_shr.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_signextend.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_signextend.png new file mode 100644 index 00000000..8471f5de Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_signextend.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_sload.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_sload.png new file mode 100644 index 00000000..f361b93e Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_sload.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_slt.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_slt.png new file mode 100644 index 00000000..6b4e19f1 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_slt.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_smod.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_smod.png new file mode 100644 index 00000000..d24ce8e7 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_smod.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_sstore.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_sstore.png new file mode 100644 index 00000000..5aa06843 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_sstore.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_staticcall.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_staticcall.png new file mode 100644 index 00000000..685c44b6 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_staticcall.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_sub.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_sub.png new file mode 100644 index 00000000..9012e11f Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_sub.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_swap1.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_swap1.png new file mode 100644 index 00000000..94d56c85 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_swap1.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_swap16.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_swap16.png new file mode 100644 index 00000000..dbdaf27d Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_swap16.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_swap8.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_swap8.png new file mode 100644 index 00000000..6193f5c2 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_swap8.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_timestamp.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_timestamp.png new file mode 100644 index 00000000..430f7a51 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_timestamp.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_tload.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_tload.png new file mode 100644 index 00000000..0ce46a0e Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_tload.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_tstore.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_tstore.png new file mode 100644 index 00000000..515d2815 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_tstore.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_xor.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_xor.png new file mode 100644 index 00000000..72bf8664 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_proving_xor.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_add.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_add.png new file mode 100644 index 00000000..6b1c2764 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_add.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_addmod.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_addmod.png new file mode 100644 index 00000000..2cc8377e Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_addmod.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_address.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_address.png new file mode 100644 index 00000000..de189158 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_address.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_and.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_and.png new file mode 100644 index 00000000..1c3d7722 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_and.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_balance.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_balance.png new file mode 100644 index 00000000..0613fa28 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_balance.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_basefee.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_basefee.png new file mode 100644 index 00000000..a3a9e83f Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_basefee.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_blake2f.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_blake2f.png new file mode 100644 index 00000000..508d79bb Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_blake2f.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_blobbasefee.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_blobbasefee.png new file mode 100644 index 00000000..9bacabf5 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_blobbasefee.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_blobhash.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_blobhash.png new file mode 100644 index 00000000..c21cf337 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_blobhash.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_bls12_g1add.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_bls12_g1add.png new file mode 100644 index 00000000..fc4276ee Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_bls12_g1add.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_bls12_g1msm.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_bls12_g1msm.png new file mode 100644 index 00000000..f627ed14 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_bls12_g1msm.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_bls12_g2add.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_bls12_g2add.png new file mode 100644 index 00000000..6d84882b Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_bls12_g2add.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_bls12_g2msm.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_bls12_g2msm.png new file mode 100644 index 00000000..336b5ed6 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_bls12_g2msm.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_bls12_map_fp2_to_g2.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_bls12_map_fp2_to_g2.png new file mode 100644 index 00000000..312df60f Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_bls12_map_fp2_to_g2.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_bls12_map_fp_to_g1.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_bls12_map_fp_to_g1.png new file mode 100644 index 00000000..735911af Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_bls12_map_fp_to_g1.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_bls12_pairing.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_bls12_pairing.png new file mode 100644 index 00000000..344ae41d Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_bls12_pairing.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_bn128_add.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_bn128_add.png new file mode 100644 index 00000000..902d8cb8 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_bn128_add.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_bn128_mul.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_bn128_mul.png new file mode 100644 index 00000000..5ee04c37 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_bn128_mul.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_bn128_pairing.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_bn128_pairing.png new file mode 100644 index 00000000..2b7529e1 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_bn128_pairing.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_byte.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_byte.png new file mode 100644 index 00000000..fe89cf34 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_byte.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_call.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_call.png new file mode 100644 index 00000000..9f4e3660 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_call.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_callcode.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_callcode.png new file mode 100644 index 00000000..c19f5172 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_callcode.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_calldatacopy.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_calldatacopy.png new file mode 100644 index 00000000..2def215e Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_calldatacopy.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_calldataload.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_calldataload.png new file mode 100644 index 00000000..120e291c Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_calldataload.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_calldatasize.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_calldatasize.png new file mode 100644 index 00000000..838f1c51 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_calldatasize.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_caller.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_caller.png new file mode 100644 index 00000000..948bc921 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_caller.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_callvalue.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_callvalue.png new file mode 100644 index 00000000..83ee6f12 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_callvalue.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_chainid.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_chainid.png new file mode 100644 index 00000000..74cd81c9 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_chainid.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_codecopy.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_codecopy.png new file mode 100644 index 00000000..6416accf Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_codecopy.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_codesize.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_codesize.png new file mode 100644 index 00000000..9b40ebf0 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_codesize.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_coinbase.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_coinbase.png new file mode 100644 index 00000000..a4867643 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_coinbase.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_create.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_create.png new file mode 100644 index 00000000..d2ed671e Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_create.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_create2.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_create2.png new file mode 100644 index 00000000..724b44cd Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_create2.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_delegatecall.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_delegatecall.png new file mode 100644 index 00000000..228ccd51 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_delegatecall.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_div.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_div.png new file mode 100644 index 00000000..cb05fde2 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_div.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_dup1.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_dup1.png new file mode 100644 index 00000000..52889934 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_dup1.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_dup16.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_dup16.png new file mode 100644 index 00000000..17864c14 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_dup16.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_dup8.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_dup8.png new file mode 100644 index 00000000..414cbc6e Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_dup8.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_ecrecover.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_ecrecover.png new file mode 100644 index 00000000..1647a7ab Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_ecrecover.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_eq.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_eq.png new file mode 100644 index 00000000..986345b8 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_eq.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_exp.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_exp.png new file mode 100644 index 00000000..3ff86440 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_exp.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_extcodecopy.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_extcodecopy.png new file mode 100644 index 00000000..0bcd52bf Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_extcodecopy.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_extcodehash.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_extcodehash.png new file mode 100644 index 00000000..8916d96a Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_extcodehash.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_extcodesize.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_extcodesize.png new file mode 100644 index 00000000..4ff20794 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_extcodesize.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_gas.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_gas.png new file mode 100644 index 00000000..a341f878 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_gas.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_gaslimit.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_gaslimit.png new file mode 100644 index 00000000..2e883113 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_gaslimit.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_gasprice.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_gasprice.png new file mode 100644 index 00000000..2186381e Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_gasprice.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_gt.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_gt.png new file mode 100644 index 00000000..94307b34 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_gt.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_identity.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_identity.png new file mode 100644 index 00000000..39c610d2 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_identity.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_iszero.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_iszero.png new file mode 100644 index 00000000..94c8534a Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_iszero.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_jump.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_jump.png new file mode 100644 index 00000000..d67c8ae0 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_jump.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_jumpdest.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_jumpdest.png new file mode 100644 index 00000000..c4d729c4 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_jumpdest.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_jumpi.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_jumpi.png new file mode 100644 index 00000000..54ae2bc7 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_jumpi.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_keccak256.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_keccak256.png new file mode 100644 index 00000000..2672472b Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_keccak256.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_log0.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_log0.png new file mode 100644 index 00000000..10335b13 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_log0.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_log1.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_log1.png new file mode 100644 index 00000000..4f4c54f6 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_log1.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_log2.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_log2.png new file mode 100644 index 00000000..d52fe20b Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_log2.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_log3.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_log3.png new file mode 100644 index 00000000..6eefe283 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_log3.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_log4.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_log4.png new file mode 100644 index 00000000..c6bcd8ee Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_log4.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_lt.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_lt.png new file mode 100644 index 00000000..79ec1bcb Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_lt.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_mcopy.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_mcopy.png new file mode 100644 index 00000000..cb24a67f Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_mcopy.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_mload.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_mload.png new file mode 100644 index 00000000..7a365a21 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_mload.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_mod.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_mod.png new file mode 100644 index 00000000..1e9fec7c Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_mod.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_modexp.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_modexp.png new file mode 100644 index 00000000..34a35167 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_modexp.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_msize.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_msize.png new file mode 100644 index 00000000..bec8e6c6 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_msize.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_mstore.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_mstore.png new file mode 100644 index 00000000..fc2416a6 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_mstore.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_mstore8.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_mstore8.png new file mode 100644 index 00000000..94486b88 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_mstore8.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_mul.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_mul.png new file mode 100644 index 00000000..827ed319 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_mul.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_mulmod.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_mulmod.png new file mode 100644 index 00000000..4c0b1f53 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_mulmod.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_not.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_not.png new file mode 100644 index 00000000..b1da0bea Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_not.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_number.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_number.png new file mode 100644 index 00000000..f10d61ff Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_number.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_or.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_or.png new file mode 100644 index 00000000..bc063c8f Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_or.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_origin.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_origin.png new file mode 100644 index 00000000..e9b48e02 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_origin.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_pc.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_pc.png new file mode 100644 index 00000000..eccf96c8 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_pc.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_point_evaluation.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_point_evaluation.png new file mode 100644 index 00000000..9d29de16 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_point_evaluation.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_pop.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_pop.png new file mode 100644 index 00000000..9205f614 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_pop.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_prevrandao.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_prevrandao.png new file mode 100644 index 00000000..42de4706 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_prevrandao.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_push0.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_push0.png new file mode 100644 index 00000000..ccdc9eb5 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_push0.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_push1.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_push1.png new file mode 100644 index 00000000..780e3410 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_push1.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_push16.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_push16.png new file mode 100644 index 00000000..5b48967e Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_push16.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_push32.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_push32.png new file mode 100644 index 00000000..886808ae Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_push32.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_returndatacopy.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_returndatacopy.png new file mode 100644 index 00000000..4a921e29 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_returndatacopy.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_returndatasize.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_returndatasize.png new file mode 100644 index 00000000..ed2224ec Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_returndatasize.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_ripemd160.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_ripemd160.png new file mode 100644 index 00000000..04e8e5cd Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_ripemd160.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_sar.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_sar.png new file mode 100644 index 00000000..5784e7d1 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_sar.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_sdiv.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_sdiv.png new file mode 100644 index 00000000..15e5c825 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_sdiv.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_selfbalance.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_selfbalance.png new file mode 100644 index 00000000..422250aa Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_selfbalance.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_sgt.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_sgt.png new file mode 100644 index 00000000..ff771f3a Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_sgt.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_sha256.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_sha256.png new file mode 100644 index 00000000..6698904a Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_sha256.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_shl.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_shl.png new file mode 100644 index 00000000..8220381b Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_shl.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_shr.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_shr.png new file mode 100644 index 00000000..6499b75f Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_shr.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_signextend.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_signextend.png new file mode 100644 index 00000000..919a92e0 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_signextend.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_sload.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_sload.png new file mode 100644 index 00000000..306c64c4 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_sload.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_slt.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_slt.png new file mode 100644 index 00000000..ac039774 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_slt.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_smod.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_smod.png new file mode 100644 index 00000000..bca3c5eb Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_smod.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_sstore.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_sstore.png new file mode 100644 index 00000000..0815128c Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_sstore.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_staticcall.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_staticcall.png new file mode 100644 index 00000000..27e4b4eb Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_staticcall.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_sub.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_sub.png new file mode 100644 index 00000000..d9b19f0d Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_sub.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_swap1.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_swap1.png new file mode 100644 index 00000000..2445c9e5 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_swap1.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_swap16.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_swap16.png new file mode 100644 index 00000000..ee548663 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_swap16.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_swap8.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_swap8.png new file mode 100644 index 00000000..b117ccc4 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_swap8.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_timestamp.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_timestamp.png new file mode 100644 index 00000000..8183c5c1 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_timestamp.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_tload.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_tload.png new file mode 100644 index 00000000..a40a6d3f Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_tload.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_tstore.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_tstore.png new file mode 100644 index 00000000..1c725bce Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_tstore.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_xor.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_xor.png new file mode 100644 index 00000000..5d04e73b Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/gas_zkcycles_xor.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_add.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_add.png new file mode 100644 index 00000000..cbf88f2e Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_add.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_addmod.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_addmod.png new file mode 100644 index 00000000..4801e103 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_addmod.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_address.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_address.png new file mode 100644 index 00000000..939b6a3e Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_address.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_and.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_and.png new file mode 100644 index 00000000..008d3fe2 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_and.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_balance.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_balance.png new file mode 100644 index 00000000..eeb716ee Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_balance.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_basefee.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_basefee.png new file mode 100644 index 00000000..324822db Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_basefee.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_blake2f.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_blake2f.png new file mode 100644 index 00000000..e0d90d9f Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_blake2f.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_blobbasefee.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_blobbasefee.png new file mode 100644 index 00000000..51925c37 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_blobbasefee.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_blobhash.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_blobhash.png new file mode 100644 index 00000000..99384a6a Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_blobhash.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_bls12_g1add.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_bls12_g1add.png new file mode 100644 index 00000000..e9296767 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_bls12_g1add.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_bls12_g1msm.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_bls12_g1msm.png new file mode 100644 index 00000000..f1791388 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_bls12_g1msm.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_bls12_g2add.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_bls12_g2add.png new file mode 100644 index 00000000..a58e205c Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_bls12_g2add.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_bls12_g2msm.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_bls12_g2msm.png new file mode 100644 index 00000000..18f42623 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_bls12_g2msm.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_bls12_map_fp2_to_g2.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_bls12_map_fp2_to_g2.png new file mode 100644 index 00000000..fa88aa22 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_bls12_map_fp2_to_g2.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_bls12_map_fp_to_g1.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_bls12_map_fp_to_g1.png new file mode 100644 index 00000000..904083ca Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_bls12_map_fp_to_g1.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_bls12_pairing.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_bls12_pairing.png new file mode 100644 index 00000000..54af178a Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_bls12_pairing.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_bn128_add.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_bn128_add.png new file mode 100644 index 00000000..05b3a374 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_bn128_add.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_bn128_mul.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_bn128_mul.png new file mode 100644 index 00000000..358acf09 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_bn128_mul.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_bn128_pairing.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_bn128_pairing.png new file mode 100644 index 00000000..ceaf1be4 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_bn128_pairing.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_byte.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_byte.png new file mode 100644 index 00000000..344cce44 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_byte.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_call.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_call.png new file mode 100644 index 00000000..a5afc82f Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_call.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_callcode.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_callcode.png new file mode 100644 index 00000000..d8c14bfb Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_callcode.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_calldatacopy.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_calldatacopy.png new file mode 100644 index 00000000..b5adbc56 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_calldatacopy.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_calldataload.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_calldataload.png new file mode 100644 index 00000000..83b9d533 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_calldataload.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_calldatasize.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_calldatasize.png new file mode 100644 index 00000000..e7ce73b4 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_calldatasize.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_caller.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_caller.png new file mode 100644 index 00000000..e40a83e6 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_caller.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_callvalue.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_callvalue.png new file mode 100644 index 00000000..3ac6ab8c Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_callvalue.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_chainid.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_chainid.png new file mode 100644 index 00000000..bd208732 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_chainid.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_codecopy.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_codecopy.png new file mode 100644 index 00000000..0b85ad28 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_codecopy.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_codesize.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_codesize.png new file mode 100644 index 00000000..192cfeeb Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_codesize.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_coinbase.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_coinbase.png new file mode 100644 index 00000000..9c507279 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_coinbase.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_create.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_create.png new file mode 100644 index 00000000..40ec4db5 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_create.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_create2.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_create2.png new file mode 100644 index 00000000..d65f3d66 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_create2.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_delegatecall.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_delegatecall.png new file mode 100644 index 00000000..6f720cca Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_delegatecall.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_div.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_div.png new file mode 100644 index 00000000..d0dc1880 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_div.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_dup1.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_dup1.png new file mode 100644 index 00000000..96a94122 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_dup1.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_dup16.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_dup16.png new file mode 100644 index 00000000..6bdee351 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_dup16.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_dup8.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_dup8.png new file mode 100644 index 00000000..f789d7e8 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_dup8.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_ecrecover.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_ecrecover.png new file mode 100644 index 00000000..9d55bf9a Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_ecrecover.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_eq.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_eq.png new file mode 100644 index 00000000..569e894f Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_eq.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_exp.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_exp.png new file mode 100644 index 00000000..76c246cb Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_exp.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_extcodecopy.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_extcodecopy.png new file mode 100644 index 00000000..a64e9ab9 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_extcodecopy.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_extcodehash.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_extcodehash.png new file mode 100644 index 00000000..6e1ac1ca Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_extcodehash.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_extcodesize.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_extcodesize.png new file mode 100644 index 00000000..6e17c7f7 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_extcodesize.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_gas.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_gas.png new file mode 100644 index 00000000..b6777208 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_gas.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_gaslimit.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_gaslimit.png new file mode 100644 index 00000000..3f055354 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_gaslimit.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_gasprice.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_gasprice.png new file mode 100644 index 00000000..dea0f6ee Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_gasprice.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_gt.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_gt.png new file mode 100644 index 00000000..d533f607 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_gt.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_identity.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_identity.png new file mode 100644 index 00000000..bc574a27 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_identity.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_iszero.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_iszero.png new file mode 100644 index 00000000..f1815c24 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_iszero.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_jump.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_jump.png new file mode 100644 index 00000000..cb17f109 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_jump.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_jumpdest.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_jumpdest.png new file mode 100644 index 00000000..2d8e713f Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_jumpdest.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_jumpi.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_jumpi.png new file mode 100644 index 00000000..05653be7 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_jumpi.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_keccak256.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_keccak256.png new file mode 100644 index 00000000..66ffb692 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_keccak256.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_log0.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_log0.png new file mode 100644 index 00000000..4dbdb9fb Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_log0.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_log1.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_log1.png new file mode 100644 index 00000000..3f9a56c0 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_log1.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_log2.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_log2.png new file mode 100644 index 00000000..586737f0 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_log2.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_log3.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_log3.png new file mode 100644 index 00000000..2288e78f Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_log3.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_log4.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_log4.png new file mode 100644 index 00000000..e11a327c Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_log4.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_lt.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_lt.png new file mode 100644 index 00000000..90b5653e Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_lt.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_mcopy.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_mcopy.png new file mode 100644 index 00000000..0947ab3b Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_mcopy.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_mload.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_mload.png new file mode 100644 index 00000000..0bcf1eb6 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_mload.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_mod.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_mod.png new file mode 100644 index 00000000..58209abb Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_mod.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_modexp.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_modexp.png new file mode 100644 index 00000000..16521a3a Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_modexp.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_msize.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_msize.png new file mode 100644 index 00000000..44fe04e2 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_msize.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_mstore.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_mstore.png new file mode 100644 index 00000000..6971b319 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_mstore.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_mstore8.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_mstore8.png new file mode 100644 index 00000000..9ca75dae Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_mstore8.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_mul.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_mul.png new file mode 100644 index 00000000..f12815c8 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_mul.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_mulmod.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_mulmod.png new file mode 100644 index 00000000..bfa9a504 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_mulmod.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_not.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_not.png new file mode 100644 index 00000000..e4892c75 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_not.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_number.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_number.png new file mode 100644 index 00000000..0833ff9e Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_number.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_or.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_or.png new file mode 100644 index 00000000..0da6f660 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_or.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_origin.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_origin.png new file mode 100644 index 00000000..f775092a Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_origin.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_pc.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_pc.png new file mode 100644 index 00000000..447af8ed Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_pc.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_point_evaluation.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_point_evaluation.png new file mode 100644 index 00000000..6dcfefe4 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_point_evaluation.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_pop.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_pop.png new file mode 100644 index 00000000..24d16d9e Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_pop.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_prevrandao.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_prevrandao.png new file mode 100644 index 00000000..46ba63d4 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_prevrandao.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_push0.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_push0.png new file mode 100644 index 00000000..e01eaddd Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_push0.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_push1.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_push1.png new file mode 100644 index 00000000..0164b641 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_push1.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_push16.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_push16.png new file mode 100644 index 00000000..22b9678e Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_push16.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_push32.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_push32.png new file mode 100644 index 00000000..344fb231 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_push32.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_returndatacopy.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_returndatacopy.png new file mode 100644 index 00000000..cc920c14 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_returndatacopy.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_returndatasize.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_returndatasize.png new file mode 100644 index 00000000..8562c540 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_returndatasize.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_ripemd160.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_ripemd160.png new file mode 100644 index 00000000..48708901 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_ripemd160.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_sar.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_sar.png new file mode 100644 index 00000000..990d8a3a Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_sar.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_sdiv.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_sdiv.png new file mode 100644 index 00000000..502320f6 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_sdiv.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_selfbalance.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_selfbalance.png new file mode 100644 index 00000000..85658f2c Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_selfbalance.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_sgt.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_sgt.png new file mode 100644 index 00000000..237d45e9 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_sgt.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_sha256.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_sha256.png new file mode 100644 index 00000000..f43be2eb Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_sha256.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_shl.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_shl.png new file mode 100644 index 00000000..824f41cb Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_shl.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_shr.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_shr.png new file mode 100644 index 00000000..d0ea51b8 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_shr.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_signextend.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_signextend.png new file mode 100644 index 00000000..f6710e39 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_signextend.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_sload.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_sload.png new file mode 100644 index 00000000..db36dfe5 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_sload.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_slt.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_slt.png new file mode 100644 index 00000000..11a4503e Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_slt.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_smod.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_smod.png new file mode 100644 index 00000000..a4da6201 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_smod.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_sstore.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_sstore.png new file mode 100644 index 00000000..7fd0cfee Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_sstore.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_staticcall.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_staticcall.png new file mode 100644 index 00000000..940eb10a Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_staticcall.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_sub.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_sub.png new file mode 100644 index 00000000..4c95f1e0 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_sub.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_swap1.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_swap1.png new file mode 100644 index 00000000..904c2c4d Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_swap1.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_swap16.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_swap16.png new file mode 100644 index 00000000..ae7a7cde Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_swap16.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_swap8.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_swap8.png new file mode 100644 index 00000000..6dd28bb9 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_swap8.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_timestamp.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_timestamp.png new file mode 100644 index 00000000..94919a90 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_timestamp.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_tload.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_tload.png new file mode 100644 index 00000000..0691d165 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_tload.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_tstore.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_tstore.png new file mode 100644 index 00000000..479efda4 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_tstore.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_xor.png b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_xor.png new file mode 100644 index 00000000..fc05e7e9 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/risc0/plots/zkcycles_proving_xor.png differ diff --git a/www/docs/public/marginal-gas-benchmark/risc0/raw-data-risc0-both-20251229-211052.csv b/www/docs/public/marginal-gas-benchmark/risc0/raw-data-risc0-both-20251229-211052.csv new file mode 100644 index 00000000..8bddecd1 --- /dev/null +++ b/www/docs/public/marginal-gas-benchmark/risc0/raw-data-risc0-both-20251229-211052.csv @@ -0,0 +1,456 @@ +name,opcode,op_count,gas_used,zk_cycles,proving_time_s +test_marginal_opcodes.py::test_add[fork_Prague-blockchain_test_from_state_test-op_count_0],add,0,9480611,361163206,138.209 +test_marginal_opcodes.py::test_add[fork_Prague-blockchain_test_from_state_test-op_count_300000],add,300000,10380611,391318160,149.129 +test_marginal_opcodes.py::test_add[fork_Prague-blockchain_test_from_state_test-op_count_600000],add,600000,11280611,421620100,159.94 +test_marginal_opcodes.py::test_add[fork_Prague-blockchain_test_from_state_test-op_count_900000],add,900000,12180611,451923532,169.541 +test_marginal_opcodes.py::test_addmod[fork_Prague-blockchain_test_from_state_test-op_count_0],addmod,0,2803611,113187113,49.552 +test_marginal_opcodes.py::test_addmod[fork_Prague-blockchain_test_from_state_test-op_count_134000],addmod,134000,3875611,323570221,125.887 +test_marginal_opcodes.py::test_addmod[fork_Prague-blockchain_test_from_state_test-op_count_201000],addmod,201000,4411611,428759313,163.354 +test_marginal_opcodes.py::test_addmod[fork_Prague-blockchain_test_from_state_test-op_count_67000],addmod,67000,3339611,218378259,86.735 +test_marginal_opcodes.py::test_address[fork_Prague-blockchain_test_from_state_test-op_count_0],address,0,3863111,91454325,38.508 +test_marginal_opcodes.py::test_address[fork_Prague-blockchain_test_from_state_test-op_count_300000],address,300000,4463111,126214725,53.486 +test_marginal_opcodes.py::test_address[fork_Prague-blockchain_test_from_state_test-op_count_600000],address,600000,5063111,161018767,65.431 +test_marginal_opcodes.py::test_address[fork_Prague-blockchain_test_from_state_test-op_count_900000],address,900000,5663111,195823994,77.521 +test_marginal_opcodes.py::test_and[fork_Prague-blockchain_test_from_state_test-op_count_0],and,0,6335611,241292741,95.777 +test_marginal_opcodes.py::test_and[fork_Prague-blockchain_test_from_state_test-op_count_200000],and,200000,6935611,255597352,101.349 +test_marginal_opcodes.py::test_and[fork_Prague-blockchain_test_from_state_test-op_count_400000],and,400000,7535611,269999303,106.103 +test_marginal_opcodes.py::test_and[fork_Prague-blockchain_test_from_state_test-op_count_600000],and,600000,8135611,284402859,110.412 +test_marginal_opcodes.py::test_balance[fork_Prague-blockchain_test_from_state_test-op_count_0],balance,0,2398111,51736266,26.857 +test_marginal_opcodes.py::test_balance[fork_Prague-blockchain_test_from_state_test-op_count_100000],balance,100000,12398111,221838492,84.819 +test_marginal_opcodes.py::test_balance[fork_Prague-blockchain_test_from_state_test-op_count_200000],balance,200000,22398111,391941062,143.807 +test_marginal_opcodes.py::test_balance[fork_Prague-blockchain_test_from_state_test-op_count_300000],balance,300000,32398111,562043337,204.127 +test_marginal_opcodes.py::test_blobbasefee[fork_Prague-blockchain_test_from_state_test-op_count_0],blobbasefee,0,5135611,121530118,51.818 +test_marginal_opcodes.py::test_blobbasefee[fork_Prague-blockchain_test_from_state_test-op_count_1200000],blobbasefee,1200000,7535611,223484141,87.067 +test_marginal_opcodes.py::test_blobbasefee[fork_Prague-blockchain_test_from_state_test-op_count_400000],blobbasefee,400000,5935611,155474367,63.834 +test_marginal_opcodes.py::test_blobbasefee[fork_Prague-blockchain_test_from_state_test-op_count_800000],blobbasefee,800000,6735611,189477973,74.967 +test_marginal_opcodes.py::test_blobhash[fork_Prague-blockchain_test_from_state_test-op_count_0],blobhash,0,9498611,241431109,94.362 +test_marginal_opcodes.py::test_blobhash[fork_Prague-blockchain_test_from_state_test-op_count_1002000],blobhash,1002000,12504611,322599850,122.696 +test_marginal_opcodes.py::test_blobhash[fork_Prague-blockchain_test_from_state_test-op_count_1503000],blobhash,1503000,14007611,363183171,138.037 +test_marginal_opcodes.py::test_blobhash[fork_Prague-blockchain_test_from_state_test-op_count_501000],blobhash,501000,11001611,282014241,110.217 +test_marginal_opcodes.py::test_byte[fork_Prague-blockchain_test_from_state_test-op_count_0],byte,0,6335611,182839646,74.89 +test_marginal_opcodes.py::test_byte[fork_Prague-blockchain_test_from_state_test-op_count_200000],byte,200000,6935611,199242224,79.288 +test_marginal_opcodes.py::test_byte[fork_Prague-blockchain_test_from_state_test-op_count_400000],byte,400000,7535611,215765146,85.029 +test_marginal_opcodes.py::test_byte[fork_Prague-blockchain_test_from_state_test-op_count_600000],byte,600000,8135611,232046423,90.701 +test_marginal_opcodes.py::test_calldatacopy[fork_Prague-blockchain_test_from_state_test-op_count_0],calldatacopy,0,4559611,113945637,49.045 +test_marginal_opcodes.py::test_calldatacopy[fork_Prague-blockchain_test_from_state_test-op_count_200000],calldatacopy,200000,5759611,156748324,63.8 +test_marginal_opcodes.py::test_calldatacopy[fork_Prague-blockchain_test_from_state_test-op_count_400000],calldatacopy,400000,6959611,199550246,79.108 +test_marginal_opcodes.py::test_calldatacopy[fork_Prague-blockchain_test_from_state_test-op_count_600000],calldatacopy,600000,8159611,242352642,93.651 +test_marginal_opcodes.py::test_calldataload[fork_Prague-blockchain_test_from_state_test-op_count_0],calldataload,0,3196611,81300842,38.341 +test_marginal_opcodes.py::test_calldataload[fork_Prague-blockchain_test_from_state_test-op_count_167000],calldataload,167000,3697611,109525557,46.783 +test_marginal_opcodes.py::test_calldataload[fork_Prague-blockchain_test_from_state_test-op_count_334000],calldataload,334000,4198611,137753257,57.546 +test_marginal_opcodes.py::test_calldataload[fork_Prague-blockchain_test_from_state_test-op_count_501000],calldataload,501000,4699611,165980605,68.202 +test_marginal_opcodes.py::test_calldatasize[fork_Prague-blockchain_test_from_state_test-op_count_0],calldatasize,0,5135611,121530142,51.213 +test_marginal_opcodes.py::test_calldatasize[fork_Prague-blockchain_test_from_state_test-op_count_1200000],calldatasize,1200000,7535611,198284695,77.508 +test_marginal_opcodes.py::test_calldatasize[fork_Prague-blockchain_test_from_state_test-op_count_240000],calldatasize,240000,5615611,136832784,56.42 +test_marginal_opcodes.py::test_calldatasize[fork_Prague-blockchain_test_from_state_test-op_count_480000],calldatasize,480000,6095611,152195215,61.967 +test_marginal_opcodes.py::test_calldatasize[fork_Prague-blockchain_test_from_state_test-op_count_720000],calldatasize,720000,6575611,167572893,68.376 +test_marginal_opcodes.py::test_calldatasize[fork_Prague-blockchain_test_from_state_test-op_count_960000],calldatasize,960000,7055611,182920483,72.755 +test_marginal_opcodes.py::test_caller[fork_Prague-blockchain_test_from_state_test-op_count_0],caller,0,5135611,121529379,51.268 +test_marginal_opcodes.py::test_caller[fork_Prague-blockchain_test_from_state_test-op_count_1200000],caller,1200000,7535611,260683743,102.489 +test_marginal_opcodes.py::test_caller[fork_Prague-blockchain_test_from_state_test-op_count_400000],caller,400000,5935611,167875113,68.892 +test_marginal_opcodes.py::test_caller[fork_Prague-blockchain_test_from_state_test-op_count_800000],caller,800000,6735611,214277720,86.055 +test_marginal_opcodes.py::test_caller_basefee[fork_Prague-blockchain_test_from_state_test-op_count_0],basefee,0,5135611,121529448,51.508 +test_marginal_opcodes.py::test_caller_basefee[fork_Prague-blockchain_test_from_state_test-op_count_1200000],basefee,1200000,7535611,197084614,78.337 +test_marginal_opcodes.py::test_caller_basefee[fork_Prague-blockchain_test_from_state_test-op_count_400000],basefee,400000,5935611,146674861,59.567 +test_marginal_opcodes.py::test_caller_basefee[fork_Prague-blockchain_test_from_state_test-op_count_800000],basefee,800000,6735611,171877763,69.051 +test_marginal_opcodes.py::test_callvalue[fork_Prague-blockchain_test_from_state_test-op_count_0],callvalue,0,5135611,121529682,51.673 +test_marginal_opcodes.py::test_callvalue[fork_Prague-blockchain_test_from_state_test-op_count_1200000],callvalue,1200000,7535611,215084191,83.05 +test_marginal_opcodes.py::test_callvalue[fork_Prague-blockchain_test_from_state_test-op_count_300000],callvalue,300000,5735611,144870612,58.493 +test_marginal_opcodes.py::test_callvalue[fork_Prague-blockchain_test_from_state_test-op_count_600000],callvalue,600000,6335611,168276532,67.275 +test_marginal_opcodes.py::test_callvalue[fork_Prague-blockchain_test_from_state_test-op_count_900000],callvalue,900000,6935611,191678871,76.054 +test_marginal_opcodes.py::test_chainid[fork_Prague-blockchain_test_from_state_test-op_count_0],chainid,0,5135611,121530277,52.469 +test_marginal_opcodes.py::test_chainid[fork_Prague-blockchain_test_from_state_test-op_count_1200000],chainid,1200000,7535611,197083903,77.761 +test_marginal_opcodes.py::test_chainid[fork_Prague-blockchain_test_from_state_test-op_count_400000],chainid,400000,5935611,146674711,59.819 +test_marginal_opcodes.py::test_chainid[fork_Prague-blockchain_test_from_state_test-op_count_800000],chainid,800000,6735611,171879039,69.148 +test_marginal_opcodes.py::test_codecopy[fork_Prague-blockchain_test_from_state_test-op_count_0],codecopy,0,6816611,170305912,67.803 +test_marginal_opcodes.py::test_codecopy[fork_Prague-blockchain_test_from_state_test-op_count_300000],codecopy,300000,8616611,234508189,90.809 +test_marginal_opcodes.py::test_codecopy[fork_Prague-blockchain_test_from_state_test-op_count_600000],codecopy,600000,10416611,298711225,112.851 +test_marginal_opcodes.py::test_codecopy[fork_Prague-blockchain_test_from_state_test-op_count_900000],codecopy,900000,12216611,362913832,136.675 +test_marginal_opcodes.py::test_codesize[fork_Prague-blockchain_test_from_state_test-op_count_0],codesize,0,5135611,121529554,50.645 +test_marginal_opcodes.py::test_codesize[fork_Prague-blockchain_test_from_state_test-op_count_1200000],codesize,1200000,7535611,194683186,76.55 +test_marginal_opcodes.py::test_codesize[fork_Prague-blockchain_test_from_state_test-op_count_400000],codesize,400000,5935611,145875302,59.92 +test_marginal_opcodes.py::test_codesize[fork_Prague-blockchain_test_from_state_test-op_count_800000],codesize,800000,6735611,170278521,68.318 +test_marginal_opcodes.py::test_coinbase[fork_Prague-blockchain_test_from_state_test-op_count_0],coinbase,0,5135611,121530200,52.14 +test_marginal_opcodes.py::test_coinbase[fork_Prague-blockchain_test_from_state_test-op_count_1200000],coinbase,1200000,7535611,260684551,101.396 +test_marginal_opcodes.py::test_coinbase[fork_Prague-blockchain_test_from_state_test-op_count_400000],coinbase,400000,5935611,167873893,67.177 +test_marginal_opcodes.py::test_coinbase[fork_Prague-blockchain_test_from_state_test-op_count_800000],coinbase,800000,6735611,214277751,85.821 +test_marginal_opcodes.py::test_div[fork_Prague-blockchain_test_from_state_test-op_count_0],div,0,2247111,85461706,39.305 +test_marginal_opcodes.py::test_div[fork_Prague-blockchain_test_from_state_test-op_count_140000],div,140000,2947111,300191395,116.41 +test_marginal_opcodes.py::test_div[fork_Prague-blockchain_test_from_state_test-op_count_210000],div,210000,3297111,407575671,155.396 +test_marginal_opcodes.py::test_div[fork_Prague-blockchain_test_from_state_test-op_count_70000],div,70000,2597111,192809792,78.665 +test_marginal_opcodes.py::test_dup16[fork_Prague-blockchain_test_from_state_test-op_count_0],dup16,0,2895611,71688091,34.15 +test_marginal_opcodes.py::test_dup16[fork_Prague-blockchain_test_from_state_test-op_count_120000],dup16,120000,3255611,77809866,34.514 +test_marginal_opcodes.py::test_dup16[fork_Prague-blockchain_test_from_state_test-op_count_240000],dup16,240000,3615611,83931097,37.782 +test_marginal_opcodes.py::test_dup16[fork_Prague-blockchain_test_from_state_test-op_count_360000],dup16,360000,3975611,90053666,40.336 +test_marginal_opcodes.py::test_dup16[fork_Prague-blockchain_test_from_state_test-op_count_480000],dup16,480000,4335611,96174452,42.0 +test_marginal_opcodes.py::test_dup16[fork_Prague-blockchain_test_from_state_test-op_count_600000],dup16,600000,4695611,102294872,44.938 +test_marginal_opcodes.py::test_dup1[fork_Prague-blockchain_test_from_state_test-op_count_0],dup1,0,4095611,103504026,45.118 +test_marginal_opcodes.py::test_dup1[fork_Prague-blockchain_test_from_state_test-op_count_180000],dup1,180000,4635611,112831766,46.915 +test_marginal_opcodes.py::test_dup1[fork_Prague-blockchain_test_from_state_test-op_count_360000],dup1,360000,5175611,121867857,51.375 +test_marginal_opcodes.py::test_dup1[fork_Prague-blockchain_test_from_state_test-op_count_540000],dup1,540000,5715611,131049041,54.644 +test_marginal_opcodes.py::test_dup1[fork_Prague-blockchain_test_from_state_test-op_count_720000],dup1,720000,6255611,140230927,56.926 +test_marginal_opcodes.py::test_dup1[fork_Prague-blockchain_test_from_state_test-op_count_900000],dup1,900000,6795611,149410529,60.716 +test_marginal_opcodes.py::test_dup8[fork_Prague-blockchain_test_from_state_test-op_count_0],dup8,0,4200611,105191199,45.201 +test_marginal_opcodes.py::test_dup8[fork_Prague-blockchain_test_from_state_test-op_count_180000],dup8,180000,4740611,114283728,48.299 +test_marginal_opcodes.py::test_dup8[fork_Prague-blockchain_test_from_state_test-op_count_360000],dup8,360000,5280611,123464117,53.007 +test_marginal_opcodes.py::test_dup8[fork_Prague-blockchain_test_from_state_test-op_count_540000],dup8,540000,5820611,132644434,55.954 +test_marginal_opcodes.py::test_dup8[fork_Prague-blockchain_test_from_state_test-op_count_720000],dup8,720000,6360611,141827321,57.222 +test_marginal_opcodes.py::test_dup8[fork_Prague-blockchain_test_from_state_test-op_count_900000],dup8,900000,6900611,151007563,61.763 +test_marginal_opcodes.py::test_eq[fork_Prague-blockchain_test_from_state_test-op_count_0],eq,0,4763111,181358242,74.08 +test_marginal_opcodes.py::test_eq[fork_Prague-blockchain_test_from_state_test-op_count_150000],eq,150000,5213111,226886624,88.771 +test_marginal_opcodes.py::test_eq[fork_Prague-blockchain_test_from_state_test-op_count_300000],eq,300000,5663111,272488466,105.673 +test_marginal_opcodes.py::test_eq[fork_Prague-blockchain_test_from_state_test-op_count_450000],eq,450000,6113111,318091484,120.784 +test_marginal_opcodes.py::test_exp[fork_Prague-blockchain_test_from_state_test-op_count_0],exp,0,70286,2337654,7.191 +test_marginal_opcodes.py::test_exp[fork_Prague-blockchain_test_from_state_test-op_count_1500],exp,1500,2485286,226920350,86.601 +test_marginal_opcodes.py::test_exp[fork_Prague-blockchain_test_from_state_test-op_count_2250],exp,2250,3692786,339204366,125.777 +test_marginal_opcodes.py::test_exp[fork_Prague-blockchain_test_from_state_test-op_count_750],exp,750,1277786,114620127,48.598 +test_marginal_opcodes.py::test_extcodecopy[fork_Prague-blockchain_test_from_state_test-op_count_0],extcodecopy,0,1592111,43127047,22.676 +test_marginal_opcodes.py::test_extcodecopy[fork_Prague-blockchain_test_from_state_test-op_count_102000],extcodecopy,102000,14282111,246939808,93.146 +test_marginal_opcodes.py::test_extcodecopy[fork_Prague-blockchain_test_from_state_test-op_count_34000],extcodecopy,34000,5850111,111347640,46.955 +test_marginal_opcodes.py::test_extcodecopy[fork_Prague-blockchain_test_from_state_test-op_count_68000],extcodecopy,68000,10066111,179157925,69.79 +test_marginal_opcodes.py::test_extcodehash[fork_Prague-blockchain_test_from_state_test-op_count_0],extcodehash,0,1948111,48954420,26.121 +test_marginal_opcodes.py::test_extcodehash[fork_Prague-blockchain_test_from_state_test-op_count_100000],extcodehash,100000,11948111,275956744,101.649 +test_marginal_opcodes.py::test_extcodehash[fork_Prague-blockchain_test_from_state_test-op_count_150000],extcodehash,150000,16948111,389456520,142.153 +test_marginal_opcodes.py::test_extcodehash[fork_Prague-blockchain_test_from_state_test-op_count_200000],extcodehash,200000,21948111,502957196,178.464 +test_marginal_opcodes.py::test_extcodehash[fork_Prague-blockchain_test_from_state_test-op_count_50000],extcodehash,50000,6948111,162454006,64.826 +test_marginal_opcodes.py::test_extcodesize[fork_Prague-blockchain_test_from_state_test-op_count_0],extcodesize,0,1934111,47556798,25.211 +test_marginal_opcodes.py::test_extcodesize[fork_Prague-blockchain_test_from_state_test-op_count_132000],extcodesize,132000,15134111,272881045,101.789 +test_marginal_opcodes.py::test_extcodesize[fork_Prague-blockchain_test_from_state_test-op_count_198000],extcodesize,198000,21734111,385545218,143.372 +test_marginal_opcodes.py::test_extcodesize[fork_Prague-blockchain_test_from_state_test-op_count_66000],extcodesize,66000,8534111,160219143,63.589 +test_marginal_opcodes.py::test_gas[fork_Prague-blockchain_test_from_state_test-op_count_0],gas,0,5135611,121530370,50.602 +test_marginal_opcodes.py::test_gas[fork_Prague-blockchain_test_from_state_test-op_count_1200000],gas,1200000,7535611,193484498,77.34 +test_marginal_opcodes.py::test_gas[fork_Prague-blockchain_test_from_state_test-op_count_400000],gas,400000,5935611,145474359,58.986 +test_marginal_opcodes.py::test_gas[fork_Prague-blockchain_test_from_state_test-op_count_800000],gas,800000,6735611,169479175,69.714 +test_marginal_opcodes.py::test_gaslimit[fork_Prague-blockchain_test_from_state_test-op_count_0],gaslimit,0,5135611,121530287,51.269 +test_marginal_opcodes.py::test_gaslimit[fork_Prague-blockchain_test_from_state_test-op_count_1200000],gaslimit,1200000,7535611,193484821,76.889 +test_marginal_opcodes.py::test_gaslimit[fork_Prague-blockchain_test_from_state_test-op_count_400000],gaslimit,400000,5935611,145474739,59.015 +test_marginal_opcodes.py::test_gaslimit[fork_Prague-blockchain_test_from_state_test-op_count_800000],gaslimit,800000,6735611,169476986,66.771 +test_marginal_opcodes.py::test_gasprice[fork_Prague-blockchain_test_from_state_test-op_count_0],gasprice,0,5135611,121530303,51.043 +test_marginal_opcodes.py::test_gasprice[fork_Prague-blockchain_test_from_state_test-op_count_1200000],gasprice,1200000,7535611,218684641,85.067 +test_marginal_opcodes.py::test_gasprice[fork_Prague-blockchain_test_from_state_test-op_count_400000],gasprice,400000,5935611,153874936,63.453 +test_marginal_opcodes.py::test_gasprice[fork_Prague-blockchain_test_from_state_test-op_count_800000],gasprice,800000,6735611,186278536,74.465 +test_marginal_opcodes.py::test_gt[fork_Prague-blockchain_test_from_state_test-op_count_0],gt,0,6335611,241277138,94.961 +test_marginal_opcodes.py::test_gt[fork_Prague-blockchain_test_from_state_test-op_count_200000],gt,200000,6935611,257597068,100.571 +test_marginal_opcodes.py::test_gt[fork_Prague-blockchain_test_from_state_test-op_count_400000],gt,400000,7535611,273998392,106.023 +test_marginal_opcodes.py::test_gt[fork_Prague-blockchain_test_from_state_test-op_count_600000],gt,600000,8135611,290402127,112.546 +test_marginal_opcodes.py::test_iszero[fork_Prague-blockchain_test_from_state_test-op_count_0],iszero,0,9930611,335736848,127.292 +test_marginal_opcodes.py::test_iszero[fork_Prague-blockchain_test_from_state_test-op_count_1080000],iszero,1080000,13170611,405933760,154.358 +test_marginal_opcodes.py::test_iszero[fork_Prague-blockchain_test_from_state_test-op_count_1350000],iszero,1350000,13980611,423500043,158.914 +test_marginal_opcodes.py::test_iszero[fork_Prague-blockchain_test_from_state_test-op_count_270000],iszero,270000,10740611,353438245,135.798 +test_marginal_opcodes.py::test_iszero[fork_Prague-blockchain_test_from_state_test-op_count_540000],iszero,540000,11550611,371021942,140.895 +test_marginal_opcodes.py::test_iszero[fork_Prague-blockchain_test_from_state_test-op_count_810000],iszero,810000,12360611,388394983,146.585 +test_marginal_opcodes.py::test_jump[fork_Prague-blockchain_test_from_state_test-op_count_0],jump,0,2880611,73072895,34.27 +test_marginal_opcodes.py::test_jump[fork_Prague-blockchain_test_from_state_test-op_count_120000],jump,120000,3840611,80543763,37.221 +test_marginal_opcodes.py::test_jump[fork_Prague-blockchain_test_from_state_test-op_count_240000],jump,240000,4800611,88104083,39.854 +test_marginal_opcodes.py::test_jump[fork_Prague-blockchain_test_from_state_test-op_count_360000],jump,360000,5760611,95666207,42.815 +test_marginal_opcodes.py::test_jump[fork_Prague-blockchain_test_from_state_test-op_count_480000],jump,480000,6720611,103227291,44.988 +test_marginal_opcodes.py::test_jump[fork_Prague-blockchain_test_from_state_test-op_count_600000],jump,600000,7680611,110878496,47.433 +test_marginal_opcodes.py::test_jumpdest[fork_Prague-blockchain_test_from_state_test-op_count_0],jumpdest,0,625611,33319843,20.911 +test_marginal_opcodes.py::test_jumpdest[fork_Prague-blockchain_test_from_state_test-op_count_1600000],jumpdest,1600000,2225611,74493953,33.458 +test_marginal_opcodes.py::test_jumpdest[fork_Prague-blockchain_test_from_state_test-op_count_2400000],jumpdest,2400000,3025611,95301059,41.42 +test_marginal_opcodes.py::test_jumpdest[fork_Prague-blockchain_test_from_state_test-op_count_800000],jumpdest,800000,1425611,53689147,26.578 +test_marginal_opcodes.py::test_jumpi[fork_Prague-blockchain_test_from_state_test-op_count_0],jumpi,0,7805611,167464413,67.642 +test_marginal_opcodes.py::test_jumpi[fork_Prague-blockchain_test_from_state_test-op_count_1005000],jumpi,1005000,17855611,291083174,113.146 +test_marginal_opcodes.py::test_jumpi[fork_Prague-blockchain_test_from_state_test-op_count_335000],jumpi,335000,11155611,208667864,81.408 +test_marginal_opcodes.py::test_jumpi[fork_Prague-blockchain_test_from_state_test-op_count_670000],jumpi,670000,14505611,249876846,96.233 +test_marginal_opcodes.py::test_keccak256[fork_Prague-blockchain_test_from_state_test-op_count_0],keccak256,0,930611,35194037,21.288 +test_marginal_opcodes.py::test_keccak256[fork_Prague-blockchain_test_from_state_test-op_count_16000],keccak256,16000,25986611,2058025419,2258.543 +test_marginal_opcodes.py::test_keccak256[fork_Prague-blockchain_test_from_state_test-op_count_24000],keccak256,24000,38514611,3069435495,3186.551 +test_marginal_opcodes.py::test_keccak256[fork_Prague-blockchain_test_from_state_test-op_count_8000],keccak256,8000,13458611,1046602324,1152.663 +test_marginal_opcodes.py::test_log0[fork_Prague-blockchain_test_from_state_test-op_count_0],log0,0,957611,22541852,16.176 +test_marginal_opcodes.py::test_log0[fork_Prague-blockchain_test_from_state_test-op_count_120000],log0,120000,45957611,371625478,30.159 +test_marginal_opcodes.py::test_log0[fork_Prague-blockchain_test_from_state_test-op_count_24000],log0,24000,9957611,92708736,20.77 +test_marginal_opcodes.py::test_log0[fork_Prague-blockchain_test_from_state_test-op_count_48000],log0,48000,18957611,163387494,23.096 +test_marginal_opcodes.py::test_log0[fork_Prague-blockchain_test_from_state_test-op_count_72000],log0,72000,27957611,233551784,25.712 +test_marginal_opcodes.py::test_log0[fork_Prague-blockchain_test_from_state_test-op_count_96000],log0,96000,36957611,303451377,28.055 +test_marginal_opcodes.py::test_log1[fork_Prague-blockchain_test_from_state_test-op_count_0],log1,0,934611,20965987,15.811 +test_marginal_opcodes.py::test_log1[fork_Prague-blockchain_test_from_state_test-op_count_27000],log1,27000,28120611,205378042,22.783 +test_marginal_opcodes.py::test_log1[fork_Prague-blockchain_test_from_state_test-op_count_54000],log1,54000,55282611,389564267,29.393 +test_marginal_opcodes.py::test_log1[fork_Prague-blockchain_test_from_state_test-op_count_81000],log1,81000,82444611,571658240,38.139 +test_marginal_opcodes.py::test_log2[fork_Prague-blockchain_test_from_state_test-op_count_0],log2,0,661611,14962636,13.646 +test_marginal_opcodes.py::test_log2[fork_Prague-blockchain_test_from_state_test-op_count_14000],log2,14000,45003111,223918765,20.033 +test_marginal_opcodes.py::test_log2[fork_Prague-blockchain_test_from_state_test-op_count_28000],log2,28000,89313111,432689309,27.573 +test_marginal_opcodes.py::test_log2[fork_Prague-blockchain_test_from_state_test-op_count_42000],log2,42000,133623111,635435877,33.704 +test_marginal_opcodes.py::test_log3[fork_Prague-blockchain_test_from_state_test-op_count_0],log3,0,693111,15427618,13.25 +test_marginal_opcodes.py::test_log3[fork_Prague-blockchain_test_from_state_test-op_count_11900],log3,11900,42850611,227151204,22.347 +test_marginal_opcodes.py::test_log3[fork_Prague-blockchain_test_from_state_test-op_count_23800],log3,23800,84976611,438661869,27.888 +test_marginal_opcodes.py::test_log3[fork_Prague-blockchain_test_from_state_test-op_count_35700],log3,35700,127102611,644155315,34.102 +test_marginal_opcodes.py::test_log4[fork_Prague-blockchain_test_from_state_test-op_count_0],log4,0,649011,14748426,14.07 +test_marginal_opcodes.py::test_log4[fork_Prague-blockchain_test_from_state_test-op_count_18200],log4,18200,71933511,387620404,24.563 +test_marginal_opcodes.py::test_log4[fork_Prague-blockchain_test_from_state_test-op_count_27300],log4,27300,107560011,576670108,29.749 +test_marginal_opcodes.py::test_log4[fork_Prague-blockchain_test_from_state_test-op_count_9100],log4,9100,36307011,201314045,19.885 +test_marginal_opcodes.py::test_lt[fork_Prague-blockchain_test_from_state_test-op_count_0],lt,0,6335611,241292879,94.756 +test_marginal_opcodes.py::test_lt[fork_Prague-blockchain_test_from_state_test-op_count_200000],lt,200000,6935611,257596709,99.549 +test_marginal_opcodes.py::test_lt[fork_Prague-blockchain_test_from_state_test-op_count_400000],lt,400000,7535611,273999545,110.067 +test_marginal_opcodes.py::test_lt[fork_Prague-blockchain_test_from_state_test-op_count_600000],lt,600000,8135611,290387332,112.456 +test_marginal_opcodes.py::test_marginal_call[fork_Prague-blockchain_test_from_state_test-op_count_0],call,0,1208611,25826104,18.266 +test_marginal_opcodes.py::test_marginal_call[fork_Prague-blockchain_test_from_state_test-op_count_16500],call,16500,2861111,142900336,58.452 +test_marginal_opcodes.py::test_marginal_call[fork_Prague-blockchain_test_from_state_test-op_count_33000],call,33000,4511111,259954749,99.935 +test_marginal_opcodes.py::test_marginal_call[fork_Prague-blockchain_test_from_state_test-op_count_49500],call,49500,6161111,375518195,140.435 +test_marginal_opcodes.py::test_marginal_callcode[fork_Prague-blockchain_test_from_state_test-op_count_0],callcode,0,1208611,25784661,18.48 +test_marginal_opcodes.py::test_marginal_callcode[fork_Prague-blockchain_test_from_state_test-op_count_16500],callcode,16500,2861111,141894749,58.747 +test_marginal_opcodes.py::test_marginal_callcode[fork_Prague-blockchain_test_from_state_test-op_count_33000],callcode,33000,4511111,257991596,98.347 +test_marginal_opcodes.py::test_marginal_callcode[fork_Prague-blockchain_test_from_state_test-op_count_49500],callcode,49500,6161111,372601026,139.877 +test_marginal_opcodes.py::test_marginal_create2[fork_Prague-blockchain_test_from_state_test-op_count_0],create2,0,200711,4989082,9.003 +test_marginal_opcodes.py::test_marginal_create2[fork_Prague-blockchain_test_from_state_test-op_count_1400],create2,1400,45028711,65103267,33.984 +test_marginal_opcodes.py::test_marginal_create2[fork_Prague-blockchain_test_from_state_test-op_count_2800],create2,2800,89856711,125161396,59.867 +test_marginal_opcodes.py::test_marginal_create2[fork_Prague-blockchain_test_from_state_test-op_count_4200],create2,4200,134684711,189215410,84.603 +test_marginal_opcodes.py::test_marginal_create[fork_Prague-blockchain_test_from_state_test-op_count_0],create,0,123811,3630778,8.117 +test_marginal_opcodes.py::test_marginal_create[fork_Prague-blockchain_test_from_state_test-op_count_1400],create,1400,44935011,60116313,31.012 +test_marginal_opcodes.py::test_marginal_create[fork_Prague-blockchain_test_from_state_test-op_count_2800],create,2800,89746211,116825773,52.175 +test_marginal_opcodes.py::test_marginal_create[fork_Prague-blockchain_test_from_state_test-op_count_4200],create,4200,134557411,177512031,74.255 +test_marginal_opcodes.py::test_marginal_delegatecall[fork_Prague-blockchain_test_from_state_test-op_count_0],delegatecall,0,1058611,22936695,15.414 +test_marginal_opcodes.py::test_marginal_delegatecall[fork_Prague-blockchain_test_from_state_test-op_count_16500],delegatecall,16500,2711111,121407977,50.904 +test_marginal_opcodes.py::test_marginal_delegatecall[fork_Prague-blockchain_test_from_state_test-op_count_33000],delegatecall,33000,4361111,218247482,85.886 +test_marginal_opcodes.py::test_marginal_delegatecall[fork_Prague-blockchain_test_from_state_test-op_count_49500],delegatecall,49500,6011111,315919108,119.011 +test_marginal_opcodes.py::test_marginal_staticcall[fork_Prague-blockchain_test_from_state_test-op_count_0],staticcall,0,1058611,23481199,18.308 +test_marginal_opcodes.py::test_marginal_staticcall[fork_Prague-blockchain_test_from_state_test-op_count_16500],staticcall,16500,2711111,139617208,57.082 +test_marginal_opcodes.py::test_marginal_staticcall[fork_Prague-blockchain_test_from_state_test-op_count_33000],staticcall,33000,4361111,254112014,96.689 +test_marginal_opcodes.py::test_marginal_staticcall[fork_Prague-blockchain_test_from_state_test-op_count_49500],staticcall,49500,6011111,369460726,137.075 +test_marginal_opcodes.py::test_mcopy[fork_Prague-blockchain_test_from_state_test-op_count_0],mcopy,0,642011,12604148,12.099 +test_marginal_opcodes.py::test_mcopy[fork_Prague-blockchain_test_from_state_test-op_count_20000],mcopy,20000,2644211,42323383,24.074 +test_marginal_opcodes.py::test_mcopy[fork_Prague-blockchain_test_from_state_test-op_count_40000],mcopy,40000,4624211,71946360,33.293 +test_marginal_opcodes.py::test_mcopy[fork_Prague-blockchain_test_from_state_test-op_count_60000],mcopy,60000,6604211,101565697,43.443 +test_marginal_opcodes.py::test_mload[fork_Prague-blockchain_test_from_state_test-op_count_0],mload,0,6371611,162438213,65.366 +test_marginal_opcodes.py::test_mload[fork_Prague-blockchain_test_from_state_test-op_count_1002000],mload,1002000,9377611,332790363,125.178 +test_marginal_opcodes.py::test_mload[fork_Prague-blockchain_test_from_state_test-op_count_334000],mload,334000,7373611,219219700,87.46 +test_marginal_opcodes.py::test_mload[fork_Prague-blockchain_test_from_state_test-op_count_668000],mload,668000,8375611,276065365,106.626 +test_marginal_opcodes.py::test_mod[fork_Prague-blockchain_test_from_state_test-op_count_0],mod,0,2247111,85462149,39.22 +test_marginal_opcodes.py::test_mod[fork_Prague-blockchain_test_from_state_test-op_count_140000],mod,140000,2947111,266016634,105.062 +test_marginal_opcodes.py::test_mod[fork_Prague-blockchain_test_from_state_test-op_count_210000],mod,210000,3297111,356335478,138.49 +test_marginal_opcodes.py::test_mod[fork_Prague-blockchain_test_from_state_test-op_count_70000],mod,70000,2597111,175729533,71.962 +test_marginal_opcodes.py::test_msize[fork_Prague-blockchain_test_from_state_test-op_count_0],msize,0,5159611,122347524,52.066 +test_marginal_opcodes.py::test_msize[fork_Prague-blockchain_test_from_state_test-op_count_1200000],msize,1200000,7559611,194361018,77.566 +test_marginal_opcodes.py::test_msize[fork_Prague-blockchain_test_from_state_test-op_count_300000],msize,300000,5759611,140351487,58.523 +test_marginal_opcodes.py::test_msize[fork_Prague-blockchain_test_from_state_test-op_count_600000],msize,600000,6359611,158355469,64.631 +test_marginal_opcodes.py::test_msize[fork_Prague-blockchain_test_from_state_test-op_count_900000],msize,900000,6959611,176359180,70.914 +test_marginal_opcodes.py::test_mstore8[fork_Prague-blockchain_test_from_state_test-op_count_0],mstore8,0,5369611,121159003,51.939 +test_marginal_opcodes.py::test_mstore8[fork_Prague-blockchain_test_from_state_test-op_count_1002000],mstore8,1002000,8375611,199325622,79.159 +test_marginal_opcodes.py::test_mstore8[fork_Prague-blockchain_test_from_state_test-op_count_334000],mstore8,334000,6371611,147229175,60.288 +test_marginal_opcodes.py::test_mstore8[fork_Prague-blockchain_test_from_state_test-op_count_668000],mstore8,668000,7373611,173267703,69.045 +test_marginal_opcodes.py::test_mstore[fork_Prague-blockchain_test_from_state_test-op_count_0],mstore,0,2707611,110062386,47.81 +test_marginal_opcodes.py::test_mstore[fork_Prague-blockchain_test_from_state_test-op_count_167000],mstore,167000,3208611,141453438,59.971 +test_marginal_opcodes.py::test_mstore[fork_Prague-blockchain_test_from_state_test-op_count_334000],mstore,334000,3709611,172854927,69.023 +test_marginal_opcodes.py::test_mstore[fork_Prague-blockchain_test_from_state_test-op_count_501000],mstore,501000,4210611,204254711,81.772 +test_marginal_opcodes.py::test_mul[fork_Prague-blockchain_test_from_state_test-op_count_0],mul,0,6335611,241293211,95.278 +test_marginal_opcodes.py::test_mul[fork_Prague-blockchain_test_from_state_test-op_count_200000],mul,200000,7335611,301797339,115.628 +test_marginal_opcodes.py::test_mul[fork_Prague-blockchain_test_from_state_test-op_count_400000],mul,400000,8335611,362383881,139.943 +test_marginal_opcodes.py::test_mul[fork_Prague-blockchain_test_from_state_test-op_count_600000],mul,600000,9335611,423002965,157.866 +test_marginal_opcodes.py::test_mulmod[fork_Prague-blockchain_test_from_state_test-op_count_0],mulmod,0,2920611,117843518,49.705 +test_marginal_opcodes.py::test_mulmod[fork_Prague-blockchain_test_from_state_test-op_count_140000],mulmod,140000,4040611,588980156,220.552 +test_marginal_opcodes.py::test_mulmod[fork_Prague-blockchain_test_from_state_test-op_count_210000],mulmod,210000,4600611,824500827,304.946 +test_marginal_opcodes.py::test_mulmod[fork_Prague-blockchain_test_from_state_test-op_count_70000],mulmod,70000,3480611,353398126,135.909 +test_marginal_opcodes.py::test_not[fork_Prague-blockchain_test_from_state_test-op_count_0],not,0,6635611,224315986,89.083 +test_marginal_opcodes.py::test_not[fork_Prague-blockchain_test_from_state_test-op_count_180000],not,180000,7175611,234318054,91.185 +test_marginal_opcodes.py::test_not[fork_Prague-blockchain_test_from_state_test-op_count_360000],not,360000,7715611,244241170,95.105 +test_marginal_opcodes.py::test_not[fork_Prague-blockchain_test_from_state_test-op_count_540000],not,540000,8255611,254022942,98.499 +test_marginal_opcodes.py::test_not[fork_Prague-blockchain_test_from_state_test-op_count_720000],not,720000,8795611,263925024,102.36 +test_marginal_opcodes.py::test_not[fork_Prague-blockchain_test_from_state_test-op_count_900000],not,900000,9335611,273828589,105.885 +test_marginal_opcodes.py::test_number[fork_Prague-blockchain_test_from_state_test-op_count_0],number,0,5135611,121530318,51.474 +test_marginal_opcodes.py::test_number[fork_Prague-blockchain_test_from_state_test-op_count_1200000],number,1200000,7535611,199484512,78.368 +test_marginal_opcodes.py::test_number[fork_Prague-blockchain_test_from_state_test-op_count_400000],number,400000,5935611,147474324,60.582 +test_marginal_opcodes.py::test_number[fork_Prague-blockchain_test_from_state_test-op_count_800000],number,800000,6735611,173478717,69.649 +test_marginal_opcodes.py::test_or[fork_Prague-blockchain_test_from_state_test-op_count_0],or,0,9480611,361163302,136.756 +test_marginal_opcodes.py::test_or[fork_Prague-blockchain_test_from_state_test-op_count_180000],or,180000,10020611,373977062,142.201 +test_marginal_opcodes.py::test_or[fork_Prague-blockchain_test_from_state_test-op_count_360000],or,360000,10560611,386937370,147.127 +test_marginal_opcodes.py::test_or[fork_Prague-blockchain_test_from_state_test-op_count_540000],or,540000,11100611,399900294,155.204 +test_marginal_opcodes.py::test_or[fork_Prague-blockchain_test_from_state_test-op_count_720000],or,720000,11640611,412861776,155.892 +test_marginal_opcodes.py::test_or[fork_Prague-blockchain_test_from_state_test-op_count_900000],or,900000,12180611,425824057,161.209 +test_marginal_opcodes.py::test_origin[fork_Prague-blockchain_test_from_state_test-op_count_0],origin,0,5135611,121529445,50.862 +test_marginal_opcodes.py::test_origin[fork_Prague-blockchain_test_from_state_test-op_count_1200000],origin,1200000,7535611,260683981,101.881 +test_marginal_opcodes.py::test_origin[fork_Prague-blockchain_test_from_state_test-op_count_400000],origin,400000,5935611,167874565,67.135 +test_marginal_opcodes.py::test_origin[fork_Prague-blockchain_test_from_state_test-op_count_800000],origin,800000,6735611,214278351,85.345 +test_marginal_opcodes.py::test_pc[fork_Prague-blockchain_test_from_state_test-op_count_0],pc,0,5135611,121530257,50.94 +test_marginal_opcodes.py::test_pc[fork_Prague-blockchain_test_from_state_test-op_count_1200000],pc,1200000,7535611,198284169,79.025 +test_marginal_opcodes.py::test_pc[fork_Prague-blockchain_test_from_state_test-op_count_400000],pc,400000,5935611,147075136,60.364 +test_marginal_opcodes.py::test_pc[fork_Prague-blockchain_test_from_state_test-op_count_800000],pc,800000,6735611,172678406,69.769 +test_marginal_opcodes.py::test_pop[fork_Prague-blockchain_test_from_state_test-op_count_0],pop,0,4080611,127576343,51.389 +test_marginal_opcodes.py::test_pop[fork_Prague-blockchain_test_from_state_test-op_count_1080000],pop,1080000,6240611,159984759,64.346 +test_marginal_opcodes.py::test_pop[fork_Prague-blockchain_test_from_state_test-op_count_1440000],pop,1440000,6960611,170787540,68.281 +test_marginal_opcodes.py::test_pop[fork_Prague-blockchain_test_from_state_test-op_count_1800000],pop,1800000,7680611,181680979,71.367 +test_marginal_opcodes.py::test_pop[fork_Prague-blockchain_test_from_state_test-op_count_360000],pop,360000,4800611,138379301,56.468 +test_marginal_opcodes.py::test_pop[fork_Prague-blockchain_test_from_state_test-op_count_720000],pop,720000,5520611,149181947,61.715 +test_marginal_opcodes.py::test_prevrandao[fork_Prague-blockchain_test_from_state_test-op_count_0],prevrandao,0,3863111,91454884,40.69 +test_marginal_opcodes.py::test_prevrandao[fork_Prague-blockchain_test_from_state_test-op_count_300000],prevrandao,300000,4463111,138514710,57.795 +test_marginal_opcodes.py::test_prevrandao[fork_Prague-blockchain_test_from_state_test-op_count_600000],prevrandao,600000,5063111,185618650,73.684 +test_marginal_opcodes.py::test_prevrandao[fork_Prague-blockchain_test_from_state_test-op_count_900000],prevrandao,900000,5663111,232724117,90.637 +test_marginal_opcodes.py::test_push0[fork_Prague-blockchain_test_from_state_test-op_count_0],push0,0,5135611,121530245,50.377 +test_marginal_opcodes.py::test_push0[fork_Prague-blockchain_test_from_state_test-op_count_1200000],push0,1200000,7535611,189883112,75.339 +test_marginal_opcodes.py::test_push0[fork_Prague-blockchain_test_from_state_test-op_count_400000],push0,400000,5935611,144274902,59.348 +test_marginal_opcodes.py::test_push0[fork_Prague-blockchain_test_from_state_test-op_count_800000],push0,800000,6735611,167078803,66.92 +test_marginal_opcodes.py::test_push16[fork_Prague-blockchain_test_from_state_test-op_count_0],push16,0,4343611,104297593,43.43 +test_marginal_opcodes.py::test_push16[fork_Prague-blockchain_test_from_state_test-op_count_1002000],push16,1002000,7349611,189560595,76.703 +test_marginal_opcodes.py::test_push16[fork_Prague-blockchain_test_from_state_test-op_count_334000],push16,334000,5345611,132675422,54.35 +test_marginal_opcodes.py::test_push16[fork_Prague-blockchain_test_from_state_test-op_count_668000],push16,668000,6347611,161176558,65.852 +test_marginal_opcodes.py::test_push1[fork_Prague-blockchain_test_from_state_test-op_count_0],push1,0,5135611,121529992,51.559 +test_marginal_opcodes.py::test_push1[fork_Prague-blockchain_test_from_state_test-op_count_1200000],push1,1200000,8735611,176694008,70.965 +test_marginal_opcodes.py::test_push1[fork_Prague-blockchain_test_from_state_test-op_count_240000],push1,240000,5855611,132515059,56.154 +test_marginal_opcodes.py::test_push1[fork_Prague-blockchain_test_from_state_test-op_count_480000],push1,480000,6575611,143559845,59.045 +test_marginal_opcodes.py::test_push1[fork_Prague-blockchain_test_from_state_test-op_count_720000],push1,720000,7295611,154603323,62.107 +test_marginal_opcodes.py::test_push1[fork_Prague-blockchain_test_from_state_test-op_count_960000],push1,960000,8015611,165709156,66.41 +test_marginal_opcodes.py::test_push32[fork_Prague-blockchain_test_from_state_test-op_count_0],push32,0,2363111,58771959,29.639 +test_marginal_opcodes.py::test_push32[fork_Prague-blockchain_test_from_state_test-op_count_105000],push32,105000,2678111,73823315,34.04 +test_marginal_opcodes.py::test_push32[fork_Prague-blockchain_test_from_state_test-op_count_210000],push32,210000,2993111,88881426,38.92 +test_marginal_opcodes.py::test_push32[fork_Prague-blockchain_test_from_state_test-op_count_315000],push32,315000,3308111,103934113,45.453 +test_marginal_opcodes.py::test_push32[fork_Prague-blockchain_test_from_state_test-op_count_420000],push32,420000,3623111,118993401,50.832 +test_marginal_opcodes.py::test_push32[fork_Prague-blockchain_test_from_state_test-op_count_525000],push32,525000,3938111,134046402,54.657 +test_marginal_opcodes.py::test_returndatacopy[fork_Prague-blockchain_test_from_state_test-op_count_0],returndatacopy,0,1674611,37395332,22.746 +test_marginal_opcodes.py::test_returndatacopy[fork_Prague-blockchain_test_from_state_test-op_count_120000],returndatacopy,120000,2758211,66056378,32.297 +test_marginal_opcodes.py::test_returndatacopy[fork_Prague-blockchain_test_from_state_test-op_count_180000],returndatacopy,180000,3298211,80338605,36.147 +test_marginal_opcodes.py::test_returndatacopy[fork_Prague-blockchain_test_from_state_test-op_count_60000],returndatacopy,60000,2218211,51772921,26.47 +test_marginal_opcodes.py::test_returndatasize[fork_Prague-blockchain_test_from_state_test-op_count_0],returndatasize,0,5135611,121530183,51.435 +test_marginal_opcodes.py::test_returndatasize[fork_Prague-blockchain_test_from_state_test-op_count_1200000],returndatasize,1200000,7535611,193483232,76.42 +test_marginal_opcodes.py::test_returndatasize[fork_Prague-blockchain_test_from_state_test-op_count_400000],returndatasize,400000,5935611,145475366,59.327 +test_marginal_opcodes.py::test_returndatasize[fork_Prague-blockchain_test_from_state_test-op_count_800000],returndatasize,800000,6735611,169479166,67.991 +test_marginal_opcodes.py::test_sar[fork_Prague-blockchain_test_from_state_test-op_count_0],sar,0,4763111,137478884,58.094 +test_marginal_opcodes.py::test_sar[fork_Prague-blockchain_test_from_state_test-op_count_150000],sar,150000,5213111,172730898,71.55 +test_marginal_opcodes.py::test_sar[fork_Prague-blockchain_test_from_state_test-op_count_300000],sar,300000,5663111,208065934,84.4 +test_marginal_opcodes.py::test_sar[fork_Prague-blockchain_test_from_state_test-op_count_450000],sar,450000,6113111,243235845,96.967 +test_marginal_opcodes.py::test_sdiv[fork_Prague-blockchain_test_from_state_test-op_count_0],sdiv,0,2247111,85461848,38.62 +test_marginal_opcodes.py::test_sdiv[fork_Prague-blockchain_test_from_state_test-op_count_140000],sdiv,140000,2947111,265472213,103.137 +test_marginal_opcodes.py::test_sdiv[fork_Prague-blockchain_test_from_state_test-op_count_210000],sdiv,210000,3297111,355495181,136.229 +test_marginal_opcodes.py::test_sdiv[fork_Prague-blockchain_test_from_state_test-op_count_70000],sdiv,70000,2597111,175449475,71.008 +test_marginal_opcodes.py::test_selfbalance[fork_Prague-blockchain_test_from_state_test-op_count_0],selfbalance,0,2590611,61379176,29.983 +test_marginal_opcodes.py::test_selfbalance[fork_Prague-blockchain_test_from_state_test-op_count_200000],selfbalance,200000,3590611,303154422,114.767 +test_marginal_opcodes.py::test_selfbalance[fork_Prague-blockchain_test_from_state_test-op_count_400000],selfbalance,400000,4590611,544957936,201.16 +test_marginal_opcodes.py::test_selfbalance[fork_Prague-blockchain_test_from_state_test-op_count_600000],selfbalance,600000,5590611,786763264,283.427 +test_marginal_opcodes.py::test_sgt[fork_Prague-blockchain_test_from_state_test-op_count_0],sgt,0,9480611,361148040,137.7 +test_marginal_opcodes.py::test_sgt[fork_Prague-blockchain_test_from_state_test-op_count_180000],sgt,180000,10020611,381536947,145.983 +test_marginal_opcodes.py::test_sgt[fork_Prague-blockchain_test_from_state_test-op_count_360000],sgt,360000,10560611,402058298,151.088 +test_marginal_opcodes.py::test_sgt[fork_Prague-blockchain_test_from_state_test-op_count_540000],sgt,540000,11100611,422579897,162.537 +test_marginal_opcodes.py::test_sgt[fork_Prague-blockchain_test_from_state_test-op_count_720000],sgt,720000,11640611,443101817,167.923 +test_marginal_opcodes.py::test_sgt[fork_Prague-blockchain_test_from_state_test-op_count_900000],sgt,900000,12180611,463623886,173.94 +test_marginal_opcodes.py::test_shl[fork_Prague-blockchain_test_from_state_test-op_count_0],shl,0,4763111,137479308,56.322 +test_marginal_opcodes.py::test_shl[fork_Prague-blockchain_test_from_state_test-op_count_150000],shl,150000,5213111,160431531,65.631 +test_marginal_opcodes.py::test_shl[fork_Prague-blockchain_test_from_state_test-op_count_300000],shl,300000,5663111,183474143,75.142 +test_marginal_opcodes.py::test_shl[fork_Prague-blockchain_test_from_state_test-op_count_450000],shl,450000,6113111,206326977,83.407 +test_marginal_opcodes.py::test_shr[fork_Prague-blockchain_test_from_state_test-op_count_0],shr,0,6335611,182839622,74.518 +test_marginal_opcodes.py::test_shr[fork_Prague-blockchain_test_from_state_test-op_count_200000],shr,200000,6935611,213641933,84.85 +test_marginal_opcodes.py::test_shr[fork_Prague-blockchain_test_from_state_test-op_count_400000],shr,400000,7535611,244565219,96.104 +test_marginal_opcodes.py::test_shr[fork_Prague-blockchain_test_from_state_test-op_count_600000],shr,600000,8135611,275237855,108.463 +test_marginal_opcodes.py::test_signextend[fork_Prague-blockchain_test_from_state_test-op_count_0],signextend,0,15770611,322858108,123.305 +test_marginal_opcodes.py::test_signextend[fork_Prague-blockchain_test_from_state_test-op_count_1000000],signextend,1000000,20770611,599863804,224.478 +test_marginal_opcodes.py::test_signextend[fork_Prague-blockchain_test_from_state_test-op_count_1500000],signextend,1500000,23270611,738366006,277.022 +test_marginal_opcodes.py::test_signextend[fork_Prague-blockchain_test_from_state_test-op_count_500000],signextend,500000,18270611,461360468,172.389 +test_marginal_opcodes.py::test_sload[fork_Prague-blockchain_test_from_state_test-op_count_0],sload,0,1933611,46649515,25.483 +test_marginal_opcodes.py::test_sload[fork_Prague-blockchain_test_from_state_test-op_count_132000],sload,132000,15133611,251646143,95.959 +test_marginal_opcodes.py::test_sload[fork_Prague-blockchain_test_from_state_test-op_count_198000],sload,198000,21733611,354206253,132.595 +test_marginal_opcodes.py::test_sload[fork_Prague-blockchain_test_from_state_test-op_count_66000],sload,66000,8533611,149208841,61.423 +test_marginal_opcodes.py::test_slt[fork_Prague-blockchain_test_from_state_test-op_count_0],slt,0,22060611,840642707,309.784 +test_marginal_opcodes.py::test_slt[fork_Prague-blockchain_test_from_state_test-op_count_1260000],slt,1260000,25840611,983928703,360.593 +test_marginal_opcodes.py::test_slt[fork_Prague-blockchain_test_from_state_test-op_count_1680000],slt,1680000,27100611,1031810849,381.634 +test_marginal_opcodes.py::test_slt[fork_Prague-blockchain_test_from_state_test-op_count_2100000],slt,2100000,28360611,1079708104,393.851 +test_marginal_opcodes.py::test_slt[fork_Prague-blockchain_test_from_state_test-op_count_420000],slt,420000,23320611,888165845,324.211 +test_marginal_opcodes.py::test_slt[fork_Prague-blockchain_test_from_state_test-op_count_840000],slt,840000,24580611,936062368,342.806 +test_marginal_opcodes.py::test_smod[fork_Prague-blockchain_test_from_state_test-op_count_0],smod,0,6335611,241293356,95.135 +test_marginal_opcodes.py::test_smod[fork_Prague-blockchain_test_from_state_test-op_count_200000],smod,200000,7335611,322181772,125.352 +test_marginal_opcodes.py::test_smod[fork_Prague-blockchain_test_from_state_test-op_count_400000],smod,400000,8335611,403199320,154.555 +test_marginal_opcodes.py::test_smod[fork_Prague-blockchain_test_from_state_test-op_count_600000],smod,600000,9335611,484202259,182.048 +test_marginal_opcodes.py::test_sstore[fork_Prague-blockchain_test_from_state_test-op_count_0],sstore,0,718411,24447683,17.663 +test_marginal_opcodes.py::test_sstore[fork_Prague-blockchain_test_from_state_test-op_count_20400],sstore,20400,2778311,98260815,41.959 +test_marginal_opcodes.py::test_sstore[fork_Prague-blockchain_test_from_state_test-op_count_40800],sstore,40800,4818311,172088693,68.397 +test_marginal_opcodes.py::test_sstore[fork_Prague-blockchain_test_from_state_test-op_count_61200],sstore,61200,6858311,245914583,95.078 +test_marginal_opcodes.py::test_sub[fork_Prague-blockchain_test_from_state_test-op_count_0],sub,0,15770611,600902547,223.722 +test_marginal_opcodes.py::test_sub[fork_Prague-blockchain_test_from_state_test-op_count_1200000],sub,1200000,19370611,735064034,272.036 +test_marginal_opcodes.py::test_sub[fork_Prague-blockchain_test_from_state_test-op_count_1500000],sub,1500000,20270611,768665479,286.515 +test_marginal_opcodes.py::test_sub[fork_Prague-blockchain_test_from_state_test-op_count_300000],sub,300000,16670611,634258612,237.609 +test_marginal_opcodes.py::test_sub[fork_Prague-blockchain_test_from_state_test-op_count_600000],sub,600000,17570611,667860158,249.874 +test_marginal_opcodes.py::test_sub[fork_Prague-blockchain_test_from_state_test-op_count_900000],sub,900000,18470611,701462202,257.138 +test_marginal_opcodes.py::test_swap16[fork_Prague-blockchain_test_from_state_test-op_count_0],swap16,0,275611,10413805,11.928 +test_marginal_opcodes.py::test_swap16[fork_Prague-blockchain_test_from_state_test-op_count_100000],swap16,100000,575611,26416537,17.787 +test_marginal_opcodes.py::test_swap16[fork_Prague-blockchain_test_from_state_test-op_count_200000],swap16,200000,875611,42418439,23.568 +test_marginal_opcodes.py::test_swap16[fork_Prague-blockchain_test_from_state_test-op_count_300000],swap16,300000,1175611,58450252,27.953 +test_marginal_opcodes.py::test_swap1[fork_Prague-blockchain_test_from_state_test-op_count_0],swap1,0,200611,9271058,13.212 +test_marginal_opcodes.py::test_swap1[fork_Prague-blockchain_test_from_state_test-op_count_120000],swap1,120000,560611,28472571,17.624 +test_marginal_opcodes.py::test_swap1[fork_Prague-blockchain_test_from_state_test-op_count_180000],swap1,180000,740611,38105067,21.115 +test_marginal_opcodes.py::test_swap1[fork_Prague-blockchain_test_from_state_test-op_count_240000],swap1,240000,920611,47676442,24.564 +test_marginal_opcodes.py::test_swap1[fork_Prague-blockchain_test_from_state_test-op_count_300000],swap1,300000,1100611,57278073,27.491 +test_marginal_opcodes.py::test_swap1[fork_Prague-blockchain_test_from_state_test-op_count_60000],swap1,60000,380611,18872229,15.284 +test_marginal_opcodes.py::test_swap8[fork_Prague-blockchain_test_from_state_test-op_count_0],swap8,0,235611,9804676,13.71 +test_marginal_opcodes.py::test_swap8[fork_Prague-blockchain_test_from_state_test-op_count_100000],swap8,100000,535611,25806999,17.065 +test_marginal_opcodes.py::test_swap8[fork_Prague-blockchain_test_from_state_test-op_count_200000],swap8,200000,835611,41809940,22.332 +test_marginal_opcodes.py::test_swap8[fork_Prague-blockchain_test_from_state_test-op_count_300000],swap8,300000,1135611,57812914,27.276 +test_marginal_opcodes.py::test_timestamp[fork_Prague-blockchain_test_from_state_test-op_count_0],timestamp,0,5135611,121529474,51.11 +test_marginal_opcodes.py::test_timestamp[fork_Prague-blockchain_test_from_state_test-op_count_1200000],timestamp,1200000,7535611,199484647,78.094 +test_marginal_opcodes.py::test_timestamp[fork_Prague-blockchain_test_from_state_test-op_count_400000],timestamp,400000,5935611,147474946,59.206 +test_marginal_opcodes.py::test_timestamp[fork_Prague-blockchain_test_from_state_test-op_count_800000],timestamp,800000,6735611,173478962,68.806 +test_marginal_opcodes.py::test_tload[fork_Prague-blockchain_test_from_state_test-op_count_0],tload,0,9770611,256824884,98.247 +test_marginal_opcodes.py::test_tload[fork_Prague-blockchain_test_from_state_test-op_count_1000000],tload,1000000,109770611,499830182,184.813 +test_marginal_opcodes.py::test_tload[fork_Prague-blockchain_test_from_state_test-op_count_1500000],tload,1500000,159770611,621483291,228.337 +test_marginal_opcodes.py::test_tload[fork_Prague-blockchain_test_from_state_test-op_count_500000],tload,500000,59770611,378478315,142.734 +test_marginal_opcodes.py::test_tstore[fork_Prague-blockchain_test_from_state_test-op_count_0],tstore,0,1331611,56940535,28.11 +test_marginal_opcodes.py::test_tstore[fork_Prague-blockchain_test_from_state_test-op_count_132000],tstore,132000,14531611,280517380,104.962 +test_marginal_opcodes.py::test_tstore[fork_Prague-blockchain_test_from_state_test-op_count_198000],tstore,198000,21131611,392158977,143.303 +test_marginal_opcodes.py::test_tstore[fork_Prague-blockchain_test_from_state_test-op_count_66000],tstore,66000,7931611,168682260,66.332 +test_marginal_opcodes.py::test_xor[fork_Prague-blockchain_test_from_state_test-op_count_0],xor,0,15770611,600902997,224.356 +test_marginal_opcodes.py::test_xor[fork_Prague-blockchain_test_from_state_test-op_count_1000000],xor,1000000,18770611,672661880,250.071 +test_marginal_opcodes.py::test_xor[fork_Prague-blockchain_test_from_state_test-op_count_1500000],xor,1500000,20270611,708666002,262.956 +test_marginal_opcodes.py::test_xor[fork_Prague-blockchain_test_from_state_test-op_count_500000],xor,500000,17270611,636659254,236.395 +test_marginal_precompiles.py::test_marginal_blake2f[fork_Prague-blockchain_test_from_state_test-op_count_0],blake2f,0,49270,1295610,6.642 +test_marginal_precompiles.py::test_marginal_blake2f[fork_Prague-blockchain_test_from_state_test-op_count_10],blake2f,10,704620,461368864,165.785 +test_marginal_precompiles.py::test_marginal_blake2f[fork_Prague-blockchain_test_from_state_test-op_count_5],blake2f,5,376945,231334419,87.108 +test_marginal_precompiles.py::test_marginal_bls12_g1add[fork_Prague-blockchain_test_from_state_test-op_count_0],bls12_g1add,0,140852,6360126,9.198 +test_marginal_precompiles.py::test_marginal_bls12_g1add[fork_Prague-blockchain_test_from_state_test-op_count_257],bls12_g1add,257,237227,10268531,13.251 +test_marginal_precompiles.py::test_marginal_bls12_g1add[fork_Prague-blockchain_test_from_state_test-op_count_514],bls12_g1add,514,333602,14159341,14.718 +test_marginal_precompiles.py::test_marginal_bls12_g1add[fork_Prague-blockchain_test_from_state_test-op_count_771],bls12_g1add,771,429977,18054432,16.793 +test_marginal_precompiles.py::test_marginal_bls12_g1msm[fork_Prague-blockchain_test_from_state_test-op_count_0],bls12_g1msm,0,54036,1465618,6.043 +test_marginal_precompiles.py::test_marginal_bls12_g1msm[fork_Prague-blockchain_test_from_state_test-op_count_13],bls12_g1msm,13,350124,28088680,20.567 +test_marginal_precompiles.py::test_marginal_bls12_g1msm[fork_Prague-blockchain_test_from_state_test-op_count_26],bls12_g1msm,26,646212,54706576,30.247 +test_marginal_precompiles.py::test_marginal_bls12_g1msm[fork_Prague-blockchain_test_from_state_test-op_count_39],bls12_g1msm,39,942300,81326966,40.069 +test_marginal_precompiles.py::test_marginal_bls12_g2add[fork_Prague-blockchain_test_from_state_test-op_count_0],bls12_g2add,0,106041,4328125,10.422 +test_marginal_precompiles.py::test_marginal_bls12_g2add[fork_Prague-blockchain_test_from_state_test-op_count_150],bls12_g2add,150,196041,9033172,12.441 +test_marginal_precompiles.py::test_marginal_bls12_g2add[fork_Prague-blockchain_test_from_state_test-op_count_300],bls12_g2add,300,286041,13831808,13.357 +test_marginal_precompiles.py::test_marginal_bls12_g2add[fork_Prague-blockchain_test_from_state_test-op_count_450],bls12_g2add,450,376041,18615501,16.201 +test_marginal_precompiles.py::test_marginal_bls12_g2msm[fork_Prague-blockchain_test_from_state_test-op_count_0],bls12_g2msm,0,55639,1371761,7.577 +test_marginal_precompiles.py::test_marginal_bls12_g2msm[fork_Prague-blockchain_test_from_state_test-op_count_16],bls12_g2msm,16,775639,53957670,29.937 +test_marginal_precompiles.py::test_marginal_bls12_g2msm[fork_Prague-blockchain_test_from_state_test-op_count_24],bls12_g2msm,24,1135639,80248480,38.583 +test_marginal_precompiles.py::test_marginal_bls12_g2msm[fork_Prague-blockchain_test_from_state_test-op_count_8],bls12_g2msm,8,415639,27667103,19.094 +test_marginal_precompiles.py::test_marginal_bls12_map_fp2_to_g2[fork_Prague-blockchain_test_from_state_test-op_count_0],bls12_map_fp2_to_g2,0,50640,1370226,6.791 +test_marginal_precompiles.py::test_marginal_bls12_map_fp2_to_g2[fork_Prague-blockchain_test_from_state_test-op_count_18],bls12_map_fp2_to_g2,18,479040,18569755,16.769 +test_marginal_precompiles.py::test_marginal_bls12_map_fp2_to_g2[fork_Prague-blockchain_test_from_state_test-op_count_27],bls12_map_fp2_to_g2,27,693240,27168216,19.567 +test_marginal_precompiles.py::test_marginal_bls12_map_fp2_to_g2[fork_Prague-blockchain_test_from_state_test-op_count_9],bls12_map_fp2_to_g2,9,264840,9972914,13.863 +test_marginal_precompiles.py::test_marginal_bls12_map_fp_to_g1[fork_Prague-blockchain_test_from_state_test-op_count_0],bls12_map_fp_to_g1,0,55508,1682925,5.453 +test_marginal_precompiles.py::test_marginal_bls12_map_fp_to_g1[fork_Prague-blockchain_test_from_state_test-op_count_25],bls12_map_fp_to_g1,25,193008,9356814,11.733 +test_marginal_precompiles.py::test_marginal_bls12_map_fp_to_g1[fork_Prague-blockchain_test_from_state_test-op_count_50],bls12_map_fp_to_g1,50,330508,17023135,14.484 +test_marginal_precompiles.py::test_marginal_bls12_map_fp_to_g1[fork_Prague-blockchain_test_from_state_test-op_count_75],bls12_map_fp_to_g1,75,468008,24692979,18.978 +test_marginal_precompiles.py::test_marginal_bls12_pairing[fork_Prague-blockchain_test_from_state_test-op_count_0],bls12_pairing,0,56915,1286635,7.314 +test_marginal_precompiles.py::test_marginal_bls12_pairing[fork_Prague-blockchain_test_from_state_test-op_count_3],bls12_pairing,3,365615,28515943,20.0 +test_marginal_precompiles.py::test_marginal_bls12_pairing[fork_Prague-blockchain_test_from_state_test-op_count_6],bls12_pairing,6,674315,55738391,30.187 +test_marginal_precompiles.py::test_marginal_bls12_pairing[fork_Prague-blockchain_test_from_state_test-op_count_9],bls12_pairing,9,983015,82964346,41.113 +test_marginal_precompiles.py::test_marginal_bn128_add[fork_Prague-blockchain_test_from_state_test-op_count_0],bn128_add,0,143130,6531786,10.513 +test_marginal_precompiles.py::test_marginal_bn128_add[fork_Prague-blockchain_test_from_state_test-op_count_267],bn128_add,267,183180,9220609,13.382 +test_marginal_precompiles.py::test_marginal_bn128_add[fork_Prague-blockchain_test_from_state_test-op_count_534],bn128_add,534,223230,11927064,14.085 +test_marginal_precompiles.py::test_marginal_bn128_add[fork_Prague-blockchain_test_from_state_test-op_count_801],bn128_add,801,263280,14612379,14.086 +test_marginal_precompiles.py::test_marginal_bn128_mul[fork_Prague-blockchain_test_from_state_test-op_count_0],bn128_mul,0,55849,1664550,8.417 +test_marginal_precompiles.py::test_marginal_bn128_mul[fork_Prague-blockchain_test_from_state_test-op_count_24],bn128_mul,24,199849,34674269,20.498 +test_marginal_precompiles.py::test_marginal_bn128_mul[fork_Prague-blockchain_test_from_state_test-op_count_48],bn128_mul,48,343849,67679656,32.882 +test_marginal_precompiles.py::test_marginal_bn128_mul[fork_Prague-blockchain_test_from_state_test-op_count_72],bn128_mul,72,487849,100681680,45.896 +test_marginal_precompiles.py::test_marginal_bn128_pairing[fork_Prague-blockchain_test_from_state_test-op_count_0],bn128_pairing,0,52883,1260155,6.853 +test_marginal_precompiles.py::test_marginal_bn128_pairing[fork_Prague-blockchain_test_from_state_test-op_count_2],bn128_pairing,2,278883,52329789,29.861 +test_marginal_precompiles.py::test_marginal_bn128_pairing[fork_Prague-blockchain_test_from_state_test-op_count_4],bn128_pairing,4,504883,103397840,45.622 +test_marginal_precompiles.py::test_marginal_bn128_pairing[fork_Prague-blockchain_test_from_state_test-op_count_6],bn128_pairing,6,730883,154461566,64.305 +test_marginal_precompiles.py::test_marginal_bn128_pairing[fork_Prague-blockchain_test_from_state_test-op_count_8],bn128_pairing,8,956883,205528558,81.975 +test_marginal_precompiles.py::test_marginal_ecrecover[fork_Prague-blockchain_test_from_state_test-op_count_0],ecrecover,0,71358,2533685,6.622 +test_marginal_precompiles.py::test_marginal_ecrecover[fork_Prague-blockchain_test_from_state_test-op_count_134],ecrecover,134,473358,80454869,41.985 +test_marginal_precompiles.py::test_marginal_ecrecover[fork_Prague-blockchain_test_from_state_test-op_count_201],ecrecover,201,674358,119413558,56.093 +test_marginal_precompiles.py::test_marginal_ecrecover[fork_Prague-blockchain_test_from_state_test-op_count_67],ecrecover,67,272358,41496817,26.947 +test_marginal_precompiles.py::test_marginal_identity[fork_Prague-blockchain_test_from_state_test-op_count_0],identity,0,219278111,10487847700,3739.279 +test_marginal_precompiles.py::test_marginal_identity[fork_Prague-blockchain_test_from_state_test-op_count_1000000],identity,1000000,246303111,10534284662,3773.872 +test_marginal_precompiles.py::test_marginal_identity[fork_Prague-blockchain_test_from_state_test-op_count_1500000],identity,1500000,259803111,10556833087,3815.498 +test_marginal_precompiles.py::test_marginal_identity[fork_Prague-blockchain_test_from_state_test-op_count_500000],identity,500000,232803111,10511784824,3749.294 +test_marginal_precompiles.py::test_marginal_modexp[fork_Prague-blockchain_test_from_state_test-op_count_0],modexp,0,66977,1492332,7.755 +test_marginal_precompiles.py::test_marginal_modexp[fork_Prague-blockchain_test_from_state_test-op_count_12],modexp,12,83357,65557585,30.981 +test_marginal_precompiles.py::test_marginal_modexp[fork_Prague-blockchain_test_from_state_test-op_count_24],modexp,24,99737,129618194,52.66 +test_marginal_precompiles.py::test_marginal_modexp[fork_Prague-blockchain_test_from_state_test-op_count_36],modexp,36,116117,193677956,74.938 +test_marginal_precompiles.py::test_marginal_point_evaluation[fork_Prague-blockchain_test_from_state_test-op_count_0],point_evaluation,0,49918,1257280,7.535 +test_marginal_precompiles.py::test_marginal_point_evaluation[fork_Prague-blockchain_test_from_state_test-op_count_3],point_evaluation,3,199918,34726648,23.182 +test_marginal_precompiles.py::test_marginal_point_evaluation[fork_Prague-blockchain_test_from_state_test-op_count_6],point_evaluation,6,349918,68186763,34.519 +test_marginal_precompiles.py::test_marginal_point_evaluation[fork_Prague-blockchain_test_from_state_test-op_count_9],point_evaluation,9,499918,101650739,46.524 +test_marginal_precompiles.py::test_marginal_ripemd160[fork_Prague-blockchain_test_from_state_test-op_count_0],ripemd160,0,240817,11303876,13.045 +test_marginal_precompiles.py::test_marginal_ripemd160[fork_Prague-blockchain_test_from_state_test-op_count_1000],ripemd160,1000,4680817,52986276,26.476 +test_marginal_precompiles.py::test_marginal_ripemd160[fork_Prague-blockchain_test_from_state_test-op_count_1500],ripemd160,1500,6900817,73800758,34.28 +test_marginal_precompiles.py::test_marginal_ripemd160[fork_Prague-blockchain_test_from_state_test-op_count_500],ripemd160,500,2460817,32140686,20.305 +test_marginal_precompiles.py::test_marginal_sha256[fork_Prague-blockchain_test_from_state_test-op_count_0],sha256,0,290575,11493758,12.968 +test_marginal_precompiles.py::test_marginal_sha256[fork_Prague-blockchain_test_from_state_test-op_count_1000],sha256,1000,1886575,16946782,13.682 +test_marginal_precompiles.py::test_marginal_sha256[fork_Prague-blockchain_test_from_state_test-op_count_1500],sha256,1500,2684575,19668514,15.533 +test_marginal_precompiles.py::test_marginal_sha256[fork_Prague-blockchain_test_from_state_test-op_count_500],sha256,500,1088575,14223521,13.842 diff --git a/www/docs/public/marginal-gas-benchmark/risc0/regression-risc0-both-20251229-211052.csv b/www/docs/public/marginal-gas-benchmark/risc0/regression-risc0-both-20251229-211052.csv new file mode 100644 index 00000000..98ca89a9 --- /dev/null +++ b/www/docs/public/marginal-gas-benchmark/risc0/regression-risc0-both-20251229-211052.csv @@ -0,0 +1,106 @@ +opcode,n_points,min_op_count,max_op_count,min_gas,max_gas,max_zkcycles,gas_per_op,gas_zkcycles_slope,gas_zkcycles_r2,gas_zkcycles_std_err,gas_proving_slope,gas_proving_r2,gas_proving_std_err,zkcycles_proving_slope,zkcycles_proving_r2,zkcycles_proving_std_err +add,4,0,900000,9480611,12180611,451923532,3.0,33.62032422222222,0.9999985648532934,0.028479696737598016,1.1645222222222221e-05,0.9990985420264965,2.4734398998708085e-07,3.463650344487049e-07,0.9990455029380101,7.570310785618306e-09 +addmod,4,0,201000,2803611,4411611,428759313,8.0,196.2515973880597,0.9999999999686568,0.0007769078777386294,7.099962686567165e-05,0.9999050319522469,4.892720946029474e-07,3.6177860297645165e-07,0.9999050846345716,2.4923943219963646e-09 +address,4,0,900000,3863111,5663111,195823994,2.0,57.98550816666667,0.9999999021021668,0.012828947582829738,2.1497333333333332e-05,0.9968959545886434,8.482203919579336e-07,3.707298113534954e-07,0.9968611030555586,1.4710035329629673e-08 +and,4,0,600000,6335611,8135611,284402859,3.0,23.955384166666665,0.9999971869083313,0.02841061894344719,8.109833333333335e-06,0.9965843384437219,3.3572008015937334e-07,3.385061378971863e-07,0.9963932964987534,1.4400957616663015e-08 +balance,4,0,300000,2398111,32398111,562043337,100.0,17.01023783,0.9999999999998548,4.58357534657642e-06,5.90798e-06,0.9999200892591329,3.7345987736297896e-08,3.4731907109648466e-07,0.9999200900195052,2.1954901765934653e-09 +blobbasefee,4,0,1200000,5135611,7535611,223484141,2.0,42.483209375,0.9999998061143017,0.01322742323245159,1.4609999999999997e-05,0.9997469495931869,1.643590771756251e-07,3.4389982072574824e-07,0.9997427760131528,3.9005742276360956e-09 +blobhash,4,0,1503000,9498611,14007611,363183171,3.0,27.002115435795076,0.999999999861064,0.0002250557672111846,9.5478376580173e-06,0.9980500948789837,2.984149647097469e-07,3.53595729445958e-07,0.9980490593376103,1.105447441335504e-08 +byte,4,0,600000,6335611,8135611,232046423,3.0,27.357208833333335,0.9999924060391061,0.05330802773708748,8.86233333333333e-06,0.996437417839419,3.7470588466157275e-07,3.2393657222916845e-07,0.9963701312685513,1.3825476055658878e-08 +calldatacopy,4,0,600000,4559611,8159611,242352642,6.0,35.66857808333334,0.9999999999893094,8.24652571043396e-05,1.2427166666666667e-05,0.999911789675087,8.253458870876378e-08,3.4840655491284405e-07,0.9999117481654575,2.314474258396036e-09 +calldataload,4,0,501000,3196611,4699611,165980605,3.0,56.34071636726547,0.9999999994251745,0.0009551583741457961,2.0029141716566864e-05,0.9969896044326313,7.782404669954027e-07,3.555007699039369e-07,0.9969922261556966,1.3807093026815244e-08 +calldatasize,6,0,1200000,5135611,7535611,198284695,2.0,31.98890119047619,0.9999995747879241,0.010429709545788172,1.1124345238095233e-05,0.9971956454866443,2.9496516762727485e-07,3.477575726980013e-07,0.9972027734328365,9.209131693243828e-09 +caller,4,0,1200000,5135611,7535611,260683743,2.0,57.983212375,0.9999999022571417,0.012818281746246704,2.135325e-05,0.9997549623579001,2.3638428723172004e-07,3.682644378102743e-07,0.9997461744193008,4.149230897841476e-09 +basefee,4,0,1200000,5135611,7535611,197084614,2.0,31.48355,0.9999996573068304,0.013032312853612952,1.1246375e-05,0.9987462250526988,2.8176028707929153e-07,3.5722151200559994e-07,0.9987867674490325,8.803558277960585e-09 +callvalue,5,0,1200000,5135611,7535611,215084191,2.0,38.98621283333333,0.9999997103691901,0.012113589830104764,1.3385833333333332e-05,0.9978162794674457,3.6154138895281026e-07,3.4335262636995123e-07,0.9978441845336038,9.214126551183216e-09 +chainid,4,0,1200000,5135611,7535611,197083903,2.0,31.48315075,0.9999996566261896,0.013045083086366307,1.0650624999999998e-05,0.9979053476535419,3.4504155093990205e-07,3.3830445416958803e-07,0.9979553734106349,1.082789809081384e-08 +codecopy,4,0,900000,6816611,12216611,362913832,6.0,35.66815533333333,0.9999999999952551,5.493863486919932e-05,1.2703222222222223e-05,0.9997918336440935,1.2961324235042702e-07,3.561502392806556e-07,0.9997918075890714,3.6340918774295473e-09 +codesize,4,0,1200000,5135611,7535611,194683186,2.0,30.483014375,0.9999996553731442,0.012653700379156174,1.0764124999999998e-05,0.9991989690383666,2.155075042197105e-07,3.531128269843549e-07,0.9991655954441436,7.2155276222965085e-09 +coinbase,4,0,1200000,5135611,7535611,260684551,2.0,57.983363875,0.9999998922402475,0.013459121857967347,2.08015e-05,0.9983410993234596,5.995844654842203e-07,3.58751977431982e-07,0.9983552641504877,1.0296386320530672e-08 +div,4,0,210000,2247111,3297111,407575671,5.0,306.7781422857143,0.9999999934946231,0.017496277109848732,0.00011029085714285711,0.9999405704593886,6.012271803977002e-07,3.595132761247998e-07,0.9999398123728724,1.972271121397277e-09 +dup16,6,0,600000,2895611,4695611,102294872,3.0,17.003986666666666,0.9999999975004794,0.00042505890588029376,6.266031746031746e-06,0.9768207927481141,4.826190236916301e-07,3.6850309457246637e-07,0.9768176651112802,2.8384613093115197e-08 +dup1,6,0,900000,4095611,6795611,149410529,3.0,16.97942761904762,0.999989817230617,0.027091198319694313,5.888465608465608e-06,0.9909341113871374,2.816144578554033e-07,3.467038991361611e-07,0.9903950449309282,1.7071519151632375e-08 +dup8,6,0,900000,4200611,6900611,151007563,3.0,16.978461164021166,0.9999974329363862,0.013601512432701003,5.9537566137566136e-06,0.9815552462577186,4.080751393717689e-07,3.50642571400454e-07,0.9814307153891721,2.4115840915775164e-08 +eq,4,0,450000,4763111,6113111,318091484,3.0,101.28923733333333,0.999999840785431,0.028578520420445768,3.4892000000000004e-05,0.9993150465145246,6.459370454359227e-07,3.444809420497104e-07,0.9993273431656955,6.3196510195579354e-09 +exp,4,0,2250,70286,3692786,339204366,1610.0,92.99381855072464,0.9999999990760748,0.0019987454136142966,3.26096066252588e-05,0.9997044639780832,3.9646053067227005e-07,3.5066410188706176e-07,0.9997036824116822,4.268933406801802e-09 +extcodecopy,4,0,102000,1592111,14282111,246939808,124.37058823529412,16.063167608587086,0.9999992109567508,0.010089433186187935,5.539662038105148e-06,0.9999018963468489,3.8800039371751914e-08,3.448642130830915e-07,0.9998844979164251,2.6209161287343785e-09 +extcodehash,5,0,200000,1948111,21948111,502957196,100.0,22.70016132,0.9999999999846878,5.128460977693233e-05,7.64026e-06,0.9997807069055092,6.532924102833544e-08,3.365729281543643e-07,0.99978064543086,2.8783230379016102e-09 +extcodesize,4,0,198000,1934111,21734111,385545218,100.0,17.070108515151514,0.9999999999810338,5.25667360346099e-05,5.949742424242424e-06,0.9995848619601536,8.573725934528567e-08,3.485474590147479e-07,0.9995850379874753,5.021589648017751e-09 +gas,4,0,1200000,5135611,7535611,193484498,2.0,29.9834,0.9999996098497522,0.013242863695305852,1.1367750000000003e-05,0.9960819200424099,5.041370721341517e-07,3.7913630932288334e-07,0.9960903029162896,1.679587289504724e-08 +gaslimit,4,0,1200000,5135611,7535611,193484821,2.0,29.983231125,0.9999996035050451,0.013350033440843456,1.0576999999999997e-05,0.9953202644584871,5.128339156101189e-07,3.527746397226138e-07,0.9953815551423666,1.6991645788825138e-08 +gasprice,4,0,1200000,5135611,7535611,218684641,2.0,40.48332675,0.9999997894739789,0.013134517783626266,1.4135499999999997e-05,0.9986474000282658,3.6785340150662915e-07,3.491625354660155e-07,0.9986138424299441,9.198566455700702e-09 +gt,4,0,600000,6335611,8135611,290402127,3.0,27.2960485,0.9999984582207787,0.023966036272407867,9.701166666666671e-06,0.9983268319063042,2.8082927791335317e-07,3.5541562902295747e-07,0.9983850908926301,1.0107564516054056e-08 +iszero,6,0,1350000,9930611,13980611,423500043,3.0,21.6464042680776,0.9999940996127143,0.026290407028525968,7.74179894179894e-06,0.9937890633724228,3.0601543701727084e-07,3.5767957766855867e-07,0.9939689483470895,1.3930742471802119e-08 +jump,6,0,600000,2880611,7680611,110878496,8.0,7.876211696428571,0.9999891184300409,0.012990788945956415,2.740386904761904e-06,0.9975629853456888,6.772371838114627e-08,3.4788407107520267e-07,0.9972984259345578,9.053164682424405e-09 +jumpdest,4,0,2400000,625611,3025611,95301059,1.0,25.84355675,0.9999731901213614,0.09462165321125734,8.550875e-06,0.9944001244479785,4.537369660662383e-07,3.3098065550779033e-07,0.9950879996955736,1.6443189505293962e-08 +jumpi,4,0,1005000,7805611,17855611,291083174,10.0,12.30045567164179,0.9999999993617121,0.0002197427205796985,4.517522388059702e-06,0.9977965467435578,1.5011228588560925e-07,3.6726485384363195e-07,0.99779772524794,1.2200534770880251e-08 +keccak256,4,0,24000,930611,38514611,3069435495,1566.0,80.73233931194125,0.999999999992274,0.00015867593722425772,8.462379469987228e-05,0.9979577480413286,2.7069241188373877e-06,1.048201963812337e-06,0.9979577930994329,3.352924342792048e-08 +log0,6,0,120000,957611,45957611,371625478,375.0,7.770826485714286,0.999968641247438,0.02175822256264514,2.996380952380952e-07,0.9806985916128604,2.10181146201384e-08,3.857489038219022e-08,0.9815195178933325,2.6465608463489326e-09 +log1,4,0,81000,934611,82444611,571658240,1006.2666666666667,6.7586228413055345,0.9999918875452085,0.013611974294904863,2.708708157832438e-07,0.9959436790117621,1.22235114986773e-08,4.007029597321935e-08,0.9955782390681942,1.8882847417837443e-09 +log2,4,0,42000,661611,133623111,635435877,3165.675,4.671068788103465,0.9999487644037508,0.023642766243758193,1.5278598184227097e-07,0.9984965403637516,4.192191526908186e-09,3.27126838289971e-08,0.9987727291865707,8.108453743505759e-10 +log3,4,0,35700,693111,127102611,644155315,3540.794117647059,4.9784577606894285,0.999950015089463,0.024889154456155218,1.61617809994698e-07,0.987383926061338,1.2917941279337531e-08,3.2475943885235567e-08,0.9881947554292684,2.509938074115916e-09 +log4,4,0,27300,649011,107560011,576670108,3916.0384615384614,5.2533199893871885,0.99998768786145,0.013034316970478941,1.4512148822252878e-07,0.998267881692796,4.2744668407317215e-09,2.7623346430180025e-08,0.9981809775891339,8.338264597674578e-10 +lt,4,0,600000,6335611,8135611,290387332,3.0,27.2810325,0.9999981990804155,0.025887693414258357,1.0603e-05,0.9482602408616911,1.7513066391824142e-06,3.886789202290767e-07,0.9483625199531517,6.413148831761696e-08 +call,4,0,49500,1208611,6161111,375518195,100.04545454545455,70.64252289787422,0.9999914585696327,0.14598840387219927,2.4715393656572427e-05,0.9999628138790861,1.0657394639641031e-07,3.498636764840804e-07,0.9999599552888964,1.5655434875152036e-09 +callcode,4,0,49500,1208611,6161111,372601026,100.04545454545455,70.06189283221882,0.9999913987857189,0.14529431435711807,2.44610256764882e-05,0.9999067996667622,1.6698929738454243e-07,3.4912183441290567e-07,0.999842710062853,3.0963257194687633e-09 +create2,4,0,4200,200711,134684711,189215410,32020.0,1.3668624810386365,0.9997496157838774,0.01529564079409536,5.636722584099224e-07,0.9999295489308245,3.345574893390546e-09,4.1224581606751564e-07,0.9995096532266423,6.456533716490094e-09 +create,4,0,4200,123811,134557411,177512031,32008.0,1.290644345610026,0.999694213907414,0.015961248557351725,4.900047309601171e-07,0.9997856204206071,5.073685455066775e-09,3.795214487193767e-07,0.999366938588827,6.754321971340995e-09 +delegatecall,4,0,49500,1058611,6011111,315919108,100.04545454545455,59.1117727329473,0.9999921346725864,0.11722469106970262,2.094651152309487e-05,0.9997599673662573,2.2950068231554346e-07,3.543560319327694e-07,0.9997775393766544,3.7376593646217e-09 +staticcall,4,0,49500,1058611,6011111,369460726,100.04545454545455,69.81276404348984,0.9999945317233983,0.115437326436621,2.3983444899685466e-05,0.999910751717868,1.602196872308649e-07,3.43533606041142e-07,0.9998816722194351,2.6425504401926413e-09 +mcopy,4,0,60000,642011,6604211,101565697,99.333,14.924851970975277,0.9999963056619406,0.020284492840053157,5.1978971305211745e-06,0.9974398754485905,1.8620865643926712e-07,3.482377821002044e-07,0.9972517595682122,1.2926645741835257e-08 +mload,4,0,1002000,6371611,9377611,332790363,3.0,56.676857784431135,0.9999998445869436,0.01579918015386968,1.9820558882235528e-05,0.9982768420069913,5.822881467270306e-07,3.497133965830009e-07,0.9982868246603251,1.0244022152068145e-08 +mod,4,0,210000,2247111,3297111,356335478,5.0,257.9734537142857,0.9999999835812,0.023373875684063794,9.454571428571429e-05,0.9999785041214336,3.099624730413118e-07,3.664941764812096e-07,0.9999796667825916,1.1685829562053851e-09 +msize,5,0,1200000,5159611,7559611,194361018,2.0,30.005780166666668,0.9999999994315407,0.00041304177283890686,1.0565166666666667e-05,0.9998111307825189,8.383730938217229e-08,3.5210428499371895e-07,0.9998105833507052,2.798084934073587e-09 +mstore8,4,0,1002000,5369611,8375611,199325622,3.0,26.00183483033932,0.9999999505710264,0.004087707428100153,9.02365269461078e-06,0.9979886098552078,2.8645258151020994e-07,3.4703817784060663e-07,0.9979835021481236,1.1030608159598613e-08 +mstore,4,0,501000,2707611,4210611,204254711,3.0,62.67035209580838,0.9999999946373099,0.003245177730804496,2.2143313373253495e-05,0.99611094881446,9.783530001640057e-07,3.5332938621887183e-07,0.9961076852877689,1.561764654071719e-08 +mul,4,0,600000,6335611,9335611,423002965,5.0,60.5715804,0.9999998131284372,0.01851507845725319,2.1207900000000004e-05,0.9969694901085671,8.267983248652982e-07,3.501270871140793e-07,0.9969556683664681,1.3681029192170828e-08 +mulmod,4,0,210000,2920611,4600611,824500827,8.0,420.63463517857144,0.9999999975416174,0.014747376568055826,0.00015185107142857144,0.9999749677336465,5.372276837458568e-07,3.610047124237884e-07,0.9999751556263142,1.272381349520959e-09 +not,6,0,900000,6635611,9335611,273828589,3.0,18.315645343915342,0.9999918969347389,0.026068656990627076,6.398359788359788e-06,0.9948099188860615,2.3107644685479413e-07,3.4928462095962876e-07,0.9945112267167544,1.2974250222126527e-08 +number,4,0,1200000,5135611,7535611,199484512,2.0,32.483371875,0.99999966580271,0.013278457891182151,1.1218625e-05,0.999894379082612,8.15309565440504e-08,3.453635354154587e-07,0.9998852929554425,2.6156608884340773e-09 +or,6,0,900000,9480611,12180611,425824057,3.0,23.96406566137566,0.9999964061285453,0.022714990276195557,9.069576719576721e-06,0.9728153334188328,7.580604255239537e-07,3.7842740747677515e-07,0.9726220187774134,3.174543254559016e-08 +origin,4,0,1200000,5135611,7535611,260683981,2.0,57.98342425,0.9999998999128975,0.01297113387086276,2.1408375e-05,0.9995438809139287,3.2337533822936266e-07,3.692167178485631e-07,0.9995509462033971,5.53366773198603e-09 +pc,4,0,1200000,5135611,7535611,198284169,2.0,31.98312575,0.9999996691627968,0.013008078527024009,1.1707500000000003e-05,0.9999819865902756,3.513589688672474e-08,3.6605161056489833e-07,0.999977994066863,1.2142329035232428e-09 +pop,6,0,1800000,4080611,7680611,181680979,2.0,15.021853531746032,0.9999980887248816,0.010383781609806604,5.4746031746031755e-06,0.986700890614828,3.177906887114438e-07,3.6440877431135535e-07,0.9865196896868513,2.1298837289300022e-08 +prevrandao,4,0,900000,3863111,5663111,232724117,2.0,78.48527316666667,0.9999999448535394,0.013032628338346305,2.762166666666667e-05,0.9998065678154793,2.7166973413382966e-07,3.51933775433157e-07,0.9998031361332237,3.491979688647668e-09 +push0,4,0,1200000,5135611,7535611,189883112,2.0,28.48281275,0.999999590660026,0.01288576018978044,1.0307249999999999e-05,0.9990349482296935,2.2652324659956284e-07,3.6187026407853986e-07,0.9990029788036436,8.083635148823347e-09 +push16,4,0,1002000,4343611,7349611,189560595,3.0,28.372269660678644,0.9999992825159033,0.016993599411920725,1.110988023952096e-05,0.9998754150943676,8.769082346062669e-08,3.915786684709579e-07,0.9998932927657569,2.8603826270059366e-09 +push1,6,0,1200000,5135611,8735611,176694008,3.0,15.335152738095237,0.9999978408049999,0.011266901876393254,5.192857142857144e-06,0.9935425586329859,2.0932127807577763e-07,3.3861370494568764e-07,0.9934818500961065,1.3713766143974001e-08 +push32,6,0,525000,2363111,3938111,134046402,3.0,47.794572335600904,0.9999999958910888,0.0015318349128051701,1.650784580498866e-05,0.9954166097688355,5.600817011281536e-07,3.453920605827816e-07,0.9954190280971293,1.1715429085896598e-08 +returndatacopy,4,0,180000,1674611,3298211,80338605,9.018,26.44955920316303,0.9999999997329849,0.0003056126543613373,8.506458198226514e-06,0.9920299721502851,5.391396805609561e-07,3.2161104394590727e-07,0.9920328060721874,2.0380068198200776e-08 +returndatasize,4,0,1200000,5135611,7535611,193483232,2.0,29.982868375,0.9999996395038405,0.012729418939243923,1.0452375e-05,0.9996488867928858,1.3851596252778844e-07,3.4861521965820604e-07,0.9996701432338889,4.477810220714786e-09 +sar,4,0,450000,4763111,6113111,243235845,3.0,78.35687088888889,0.9999992336470862,0.048503899971024445,2.877088888888889e-05,0.9997580897784587,3.1645934733955616e-07,3.6717962318341137e-07,0.9997697975890485,3.939748523469077e-09 +sdiv,4,0,210000,2247111,3297111,355495181,5.0,257.17792485714284,0.999999990790641,0.017451525438113447,9.284457142857145e-05,0.9999623925193074,4.026120835200263e-07,3.6101308688184415e-07,0.9999629424391421,1.5540121502650274e-09 +selfbalance,4,0,600000,2590611,5590611,786763264,5.0,241.7955778,0.9999999991063993,0.005110991023485387,8.467250000000001e-05,0.9999099498350036,5.681842570851422e-07,3.5018213034369466e-07,0.9999097273393664,2.3527550123514623e-09 +sgt,6,0,900000,9480611,12180611,463623886,3.0,37.96801264550265,0.9999988533738066,0.020328205767617687,1.3675608465608468e-05,0.9895880731063892,7.013826063844346e-07,3.601805132384587e-07,0.9895501062322691,1.8506626485047635e-08 +shl,4,0,450000,4763111,6113111,206326977,3.0,51.01902644444444,0.9999975737966164,0.05619288090027345,2.0170222222222217e-05,0.9990848445337303,4.3166013151075254e-07,3.9536364235643834e-07,0.9991710700755848,8.052314238711638e-09 +shr,4,0,600000,6335611,8135611,275237855,3.0,51.3529975,0.9999976596757006,0.05555067365842156,1.8848166666666663e-05,0.9983936286159689,5.345966028491063e-07,3.6701606105712773e-07,0.9983120828572408,1.0671180607060092e-08 +signextend,4,0,1500000,15770611,23270611,738366006,5.0,55.4010812,0.9999999999976139,6.051273377922628e-05,2.05296e-05,0.9997481399635992,2.3040920120515956e-07,3.705631664892501e-07,0.9997481474070282,4.1588682287741505e-09 +sload,4,0,198000,1933611,21733611,354206253,100.0,15.53193206060606,0.9999999429547134,0.002623133416225975,5.392e-06,0.9998839401177211,4.107723022522201e-08,3.47156579856736e-07,0.9998886007548916,2.591049551703071e-09 +slt,6,0,2100000,22060611,28360611,1079708104,3.0,37.962093696145125,0.99999847410357,0.023446769872276858,1.384106575963719e-05,0.996292110776228,4.2219157841989494e-07,3.6461183043363815e-07,0.9963458481529373,1.1040506499790819e-08 +smod,4,0,600000,6335611,9335611,484202259,5.0,80.9744257,0.9999998684750283,0.020765242906668424,2.89942e-05,0.9995531090204584,4.335048788652086e-07,3.5806386598946705e-07,0.9995405479651223,5.428319230725694e-09 +sstore,4,0,61200,718411,6858311,245914583,100.29264705882353,36.08187360315718,0.9999941096239611,0.06192227053898736,1.2642809323525391e-05,0.9994117404803108,2.168906592066677e-07,3.5041077563603834e-07,0.9995232401513672,5.41147733013269e-09 +sub,6,0,1500000,15770611,20270611,768665479,3.0,37.296284761904765,0.999998541675221,0.02251972177715838,1.347650793650793e-05,0.9926702337335276,5.790151657688331e-07,3.613304369026683e-07,0.9926385247993371,1.5558273940879232e-08 +swap16,4,0,300000,275611,1175611,58450252,3.0,53.370414333333336,0.999999798189674,0.0169534196530432,1.7952e-05,0.9956744921037304,8.366767595672823e-07,3.36356126257229e-07,0.9956154395095953,1.5783436449661105e-08 +swap1,6,0,300000,200611,1100611,57278073,3.0,53.34606507936508,0.999999538359146,0.01812277142483215,1.6305714285714286e-05,0.9913493019967381,7.615914424107264e-07,3.0565533147573897e-07,0.9913248229045686,1.4296613086806806e-08 +swap8,4,0,300000,235611,1135611,57812914,3.0,53.342551666666665,0.9999999999038915,0.0003697767367719853,1.5321666666666666e-05,0.9917293366154475,9.893833657609544e-07,2.8723185680950745e-07,0.9917310837656318,1.854577307062523e-08 +timestamp,4,0,1200000,5135611,7535611,199484647,2.0,32.483691875,0.9999996836650732,0.01291885506234567,1.1318999999999998e-05,0.9987329974101259,2.8507367468778544e-07,3.484585053969227e-07,0.9987719113824869,8.640080019815278e-09 +tload,4,0,1500000,9770611,159770611,621483291,100.0,2.430654176,0.9999997539806369,0.0008524970288170333,8.646979999999999e-07,0.9998957851807572,6.242187757509481e-09,3.5574851435300914e-07,0.9999043847267504,2.4598719264843693e-09 +tstore,4,0,198000,1331611,21131611,392158977,100.0,16.931673424242422,0.9999998939368927,0.003899124312445797,5.8213484848484845e-06,0.9999962293395981,7.9931530615253e-09,3.4381420106864387e-07,0.9999967773129995,4.364340000627031e-10 +xor,4,0,1500000,15770611,20270611,708666002,3.0,23.952776066666665,0.9999971558938839,0.02856369402135994,8.631733333333338e-06,0.9994351948436806,1.4509586103292408e-07,3.6037633474367994e-07,0.9995029512039533,5.682621613165798e-09 +blake2f,3,0,10,49270,704620,461368864,65535.00000000001,702.0267856870374,0.9999999999700087,0.0038446042161006055,0.0002428366521705958,0.9999578782844051,1.5760732915000658e-06,3.459079706722416e-07,0.999957949338277,2.243138647817881e-09 +bls12_g1add,4,0,771,140852,429977,18054432,375.0,40.43966588845655,0.9999991014386223,0.027106074643179642,2.5164202334630345e-05,0.9518321392374163,4.0028255903458816e-06,6.223974665508179e-07,0.9522372539847233,9.85654883742044e-08 +bls12_g1msm,4,0,39,54036,942300,81326966,22776.0,89.90635892032098,0.9999999986682346,0.0023200068658763328,3.774485963632434e-05,0.9892751300184061,2.7789471611314443e-06,4.198255628997243e-07,0.9892818465264561,3.0899670401416e-08 +bls12_g2add,4,0,450,106041,376041,18615501,600.0,52.956404444444445,0.9999812003308888,0.16236135890909423,2.0281111111111107e-05,0.9635874314100276,2.7877693636115952e-06,3.8296829388646063e-07,0.96355924647339,5.2662598559145114e-08 +bls12_g2msm,4,0,24,55639,1135639,80248480,45000.0,73.03353444444444,0.9999999981501457,0.00222114074768364,2.885027777777778e-05,0.9959805945189816,1.2959566453178094e-06,3.9502864817751654e-07,0.9959847808551071,1.7735436036689804e-08 +bls12_map_fp2_to_g2,4,0,27,50640,693240,27168216,23800.0,40.14510317460317,0.9999999803779419,0.003976398152753588,1.9250233426704012e-05,0.9403760889866986,3.427523518174698e-06,4.795326565687046e-07,0.9404400579020259,8.533255791196741e-08 +bls12_map_fp_to_g1,4,0,75,55508,468008,24692979,5500.0,55.77926036363636,0.9999999651805177,0.007359849197034802,3.150981818181818e-05,0.97722770570094,3.4012331842368387e-06,5.649181050622486e-07,0.9772833094362845,6.090217265174819e-08 +bls12_pairing,4,0,9,56915,983015,82964346,102900.0,88.1942277291869,0.9999999977916771,0.0029305993451216633,3.614642047295108e-05,0.9979183518692695,1.1673644246678964e-06,4.09851034158762e-07,0.99792249349858,1.3223116592476128e-08 +bn128_add,4,0,801,143130,263280,14612379,150.0,67.28647690387017,0.9999978452503874,0.06984119555744875,2.8519350811485648e-05,0.7509365490049358,1.1613898254428869e-05,4.2383986139201356e-07,0.750903423066018,1.7261504221529193e-07 +bn128_mul,4,0,72,55849,487849,100681680,6000.0,229.20609513888888,0.999999997273628,0.008462598232342007,8.668125e-05,0.9997138628174026,1.0369539225536058e-06,3.781800603934025e-07,0.9997121333040513,4.537763516204585e-09 +bn128_pairing,5,0,8,52883,956883,205528558,113000.0,225.95955,0.9999999995984474,0.0026142148554852643,8.172035398230089e-05,0.9967788790611877,2.6820922655313013e-06,3.6165945726011303e-07,0.9967802024797975,1.1867350730745938e-08 +ecrecover,4,0,201,71358,674358,119413558,3000.0,193.82968706467662,0.9999999991344062,0.004032388525071734,8.131890547263682e-05,0.9921184193740642,5.125089237233968e-06,4.195390025553099e-07,0.9921234981211693,2.6432678035016884e-08 +identity,4,0,1500000,219278111,259803111,10556833087,27.015,1.698741528530613,0.9997883650267082,0.017476400382717323,1.874559723818671e-06,0.9274263440610377,3.7079517184468727e-07,1.0992859200401862e-06,0.9205528463445665,2.283549742234116e-07 +modexp,4,0,36,66977,116117,193677956,1365.0,3910.9736324786327,0.9999999995975235,0.05548047264242346,0.0013628083028083026,0.9998174384946777,1.3021590192325209e-05,3.4845763638819487e-07,0.9998179159743544,3.3251439750713307e-09 +point_evaluation,4,0,9,49918,499918,101650739,50000.0,223.09366133333333,0.9999999971661615,0.008397688899141232,8.5536e-05,0.9944963930117753,4.4994148755390555e-06,3.83409931545956e-07,0.9945039629311666,2.015440252458184e-08 +ripemd160,4,0,1500,240817,6900817,73800758,4440.0,9.384515135135135,0.99999990591302,0.00203545556533959,3.1475675675675675e-06,0.9981827898548703,9.496369431721402e-08,3.353961946492905e-07,0.9981594781781471,1.0183888857983086e-08 +sha256,4,0,1500,290575,2684575,19668514,1596.0,3.4144773182957393,0.9999995323244167,0.0016511315807913069,9.442355889724308e-07,0.8016874822042277,3.3207629921574666e-07,2.7650626261029833e-07,0.8014989974414407,9.730156708893989e-08 diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/bar_cycles_per_gas.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/bar_cycles_per_gas.png new file mode 100644 index 00000000..b2b8500f Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/bar_cycles_per_gas.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/bar_time_per_cycle.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/bar_time_per_cycle.png new file mode 100644 index 00000000..63c5cc87 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/bar_time_per_cycle.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/bar_time_per_gas.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/bar_time_per_gas.png new file mode 100644 index 00000000..cb77c857 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/bar_time_per_gas.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/combined_zkcycles_proving.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/combined_zkcycles_proving.png new file mode 100644 index 00000000..588d0dc3 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/combined_zkcycles_proving.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/combined_zkcycles_regular.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/combined_zkcycles_regular.png new file mode 100644 index 00000000..397bb3fe Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/combined_zkcycles_regular.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/combined_zkcycles_regular_minimal.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/combined_zkcycles_regular_minimal.png new file mode 100644 index 00000000..f760f103 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/combined_zkcycles_regular_minimal.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/combined_zkcycles_regular_no_outliers.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/combined_zkcycles_regular_no_outliers.png new file mode 100644 index 00000000..b8c9ddac Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/combined_zkcycles_regular_no_outliers.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_add.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_add.png new file mode 100644 index 00000000..b05bc851 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_add.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_addmod.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_addmod.png new file mode 100644 index 00000000..32642517 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_addmod.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_address.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_address.png new file mode 100644 index 00000000..02272333 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_address.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_and.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_and.png new file mode 100644 index 00000000..c46ae80c Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_and.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_balance.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_balance.png new file mode 100644 index 00000000..335aaa38 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_balance.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_basefee.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_basefee.png new file mode 100644 index 00000000..29eff336 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_basefee.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_blake2f.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_blake2f.png new file mode 100644 index 00000000..79668f9c Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_blake2f.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_blobbasefee.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_blobbasefee.png new file mode 100644 index 00000000..838fe019 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_blobbasefee.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_blobhash.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_blobhash.png new file mode 100644 index 00000000..93ae2823 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_blobhash.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_bls12_g1add.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_bls12_g1add.png new file mode 100644 index 00000000..5edae12f Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_bls12_g1add.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_bls12_g1msm.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_bls12_g1msm.png new file mode 100644 index 00000000..70e8bba1 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_bls12_g1msm.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_bls12_g2add.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_bls12_g2add.png new file mode 100644 index 00000000..1796ae8c Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_bls12_g2add.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_bls12_g2msm.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_bls12_g2msm.png new file mode 100644 index 00000000..afce2aef Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_bls12_g2msm.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_bls12_map_fp2_to_g2.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_bls12_map_fp2_to_g2.png new file mode 100644 index 00000000..058cfee0 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_bls12_map_fp2_to_g2.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_bls12_map_fp_to_g1.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_bls12_map_fp_to_g1.png new file mode 100644 index 00000000..a524197f Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_bls12_map_fp_to_g1.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_bls12_pairing.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_bls12_pairing.png new file mode 100644 index 00000000..f787435e Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_bls12_pairing.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_bn128_add.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_bn128_add.png new file mode 100644 index 00000000..757f9433 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_bn128_add.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_bn128_mul.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_bn128_mul.png new file mode 100644 index 00000000..e158b705 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_bn128_mul.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_bn128_pairing.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_bn128_pairing.png new file mode 100644 index 00000000..2a254151 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_bn128_pairing.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_byte.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_byte.png new file mode 100644 index 00000000..8c90ef1d Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_byte.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_call.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_call.png new file mode 100644 index 00000000..886b4c0a Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_call.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_callcode.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_callcode.png new file mode 100644 index 00000000..20e5ca09 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_callcode.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_calldatacopy.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_calldatacopy.png new file mode 100644 index 00000000..4ad35c52 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_calldatacopy.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_calldataload.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_calldataload.png new file mode 100644 index 00000000..606c4c0e Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_calldataload.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_calldatasize.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_calldatasize.png new file mode 100644 index 00000000..868683f0 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_calldatasize.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_caller.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_caller.png new file mode 100644 index 00000000..36b81917 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_caller.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_callvalue.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_callvalue.png new file mode 100644 index 00000000..e3cb0590 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_callvalue.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_chainid.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_chainid.png new file mode 100644 index 00000000..7d784d14 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_chainid.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_codecopy.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_codecopy.png new file mode 100644 index 00000000..88d3982e Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_codecopy.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_codesize.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_codesize.png new file mode 100644 index 00000000..d22a64a6 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_codesize.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_coinbase.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_coinbase.png new file mode 100644 index 00000000..2f49aa41 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_coinbase.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_create.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_create.png new file mode 100644 index 00000000..49ebaca2 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_create.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_create2.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_create2.png new file mode 100644 index 00000000..bec14278 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_create2.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_delegatecall.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_delegatecall.png new file mode 100644 index 00000000..a3fc7957 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_delegatecall.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_div.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_div.png new file mode 100644 index 00000000..995c19ca Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_div.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_dup1.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_dup1.png new file mode 100644 index 00000000..1c851cdc Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_dup1.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_dup16.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_dup16.png new file mode 100644 index 00000000..b1d39690 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_dup16.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_dup8.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_dup8.png new file mode 100644 index 00000000..64d6c5cf Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_dup8.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_ecrecover.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_ecrecover.png new file mode 100644 index 00000000..ea1cbbaa Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_ecrecover.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_eq.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_eq.png new file mode 100644 index 00000000..3f782392 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_eq.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_exp.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_exp.png new file mode 100644 index 00000000..2eef58b8 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_exp.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_extcodecopy.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_extcodecopy.png new file mode 100644 index 00000000..ac5dec0c Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_extcodecopy.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_extcodehash.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_extcodehash.png new file mode 100644 index 00000000..f8f4b938 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_extcodehash.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_extcodesize.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_extcodesize.png new file mode 100644 index 00000000..b9a5a630 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_extcodesize.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_gas.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_gas.png new file mode 100644 index 00000000..ab4e1fa2 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_gas.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_gaslimit.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_gaslimit.png new file mode 100644 index 00000000..67355c80 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_gaslimit.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_gasprice.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_gasprice.png new file mode 100644 index 00000000..bdd22990 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_gasprice.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_gt.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_gt.png new file mode 100644 index 00000000..35a102c9 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_gt.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_identity.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_identity.png new file mode 100644 index 00000000..b4a6f147 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_identity.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_iszero.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_iszero.png new file mode 100644 index 00000000..d87a9c8b Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_iszero.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_jump.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_jump.png new file mode 100644 index 00000000..c63cec77 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_jump.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_jumpdest.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_jumpdest.png new file mode 100644 index 00000000..7793686f Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_jumpdest.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_jumpi.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_jumpi.png new file mode 100644 index 00000000..22dfc448 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_jumpi.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_keccak256.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_keccak256.png new file mode 100644 index 00000000..e33b713f Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_keccak256.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_log0.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_log0.png new file mode 100644 index 00000000..fbda9f2b Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_log0.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_log1.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_log1.png new file mode 100644 index 00000000..88690337 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_log1.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_log2.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_log2.png new file mode 100644 index 00000000..bc31535b Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_log2.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_log3.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_log3.png new file mode 100644 index 00000000..a233d7f5 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_log3.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_log4.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_log4.png new file mode 100644 index 00000000..7fee377c Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_log4.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_lt.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_lt.png new file mode 100644 index 00000000..92d0e500 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_lt.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_mcopy.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_mcopy.png new file mode 100644 index 00000000..00b42d9b Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_mcopy.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_mload.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_mload.png new file mode 100644 index 00000000..52d59be9 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_mload.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_mod.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_mod.png new file mode 100644 index 00000000..ba8e7f22 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_mod.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_modexp.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_modexp.png new file mode 100644 index 00000000..b1681a01 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_modexp.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_msize.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_msize.png new file mode 100644 index 00000000..7bf7c074 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_msize.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_mstore.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_mstore.png new file mode 100644 index 00000000..47c31a74 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_mstore.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_mstore8.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_mstore8.png new file mode 100644 index 00000000..04e17ab7 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_mstore8.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_mul.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_mul.png new file mode 100644 index 00000000..da869767 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_mul.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_mulmod.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_mulmod.png new file mode 100644 index 00000000..f7cf7598 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_mulmod.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_not.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_not.png new file mode 100644 index 00000000..bf1c0750 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_not.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_number.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_number.png new file mode 100644 index 00000000..e492f307 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_number.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_or.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_or.png new file mode 100644 index 00000000..20422251 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_or.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_origin.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_origin.png new file mode 100644 index 00000000..17136ca8 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_origin.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_pc.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_pc.png new file mode 100644 index 00000000..4ff892fe Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_pc.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_point_evaluation.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_point_evaluation.png new file mode 100644 index 00000000..255ecbc6 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_point_evaluation.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_pop.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_pop.png new file mode 100644 index 00000000..fb66e7e8 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_pop.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_prevrandao.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_prevrandao.png new file mode 100644 index 00000000..ac99ffec Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_prevrandao.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_push0.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_push0.png new file mode 100644 index 00000000..5d08413a Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_push0.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_push1.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_push1.png new file mode 100644 index 00000000..a21ee700 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_push1.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_push16.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_push16.png new file mode 100644 index 00000000..11676f77 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_push16.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_push32.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_push32.png new file mode 100644 index 00000000..e05bfc20 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_push32.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_returndatacopy.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_returndatacopy.png new file mode 100644 index 00000000..8f238a56 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_returndatacopy.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_returndatasize.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_returndatasize.png new file mode 100644 index 00000000..90e22dd6 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_returndatasize.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_ripemd160.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_ripemd160.png new file mode 100644 index 00000000..1b6bae58 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_ripemd160.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_sar.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_sar.png new file mode 100644 index 00000000..f7474ea9 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_sar.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_sdiv.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_sdiv.png new file mode 100644 index 00000000..4f1df656 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_sdiv.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_selfbalance.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_selfbalance.png new file mode 100644 index 00000000..646bf871 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_selfbalance.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_sgt.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_sgt.png new file mode 100644 index 00000000..8b0189f7 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_sgt.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_sha256.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_sha256.png new file mode 100644 index 00000000..f3e47172 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_sha256.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_shl.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_shl.png new file mode 100644 index 00000000..e8a78228 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_shl.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_shr.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_shr.png new file mode 100644 index 00000000..90712b14 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_shr.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_signextend.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_signextend.png new file mode 100644 index 00000000..769a01bb Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_signextend.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_sload.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_sload.png new file mode 100644 index 00000000..03d0fb4e Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_sload.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_slt.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_slt.png new file mode 100644 index 00000000..4fdad330 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_slt.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_smod.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_smod.png new file mode 100644 index 00000000..50647763 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_smod.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_sstore.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_sstore.png new file mode 100644 index 00000000..48894eb9 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_sstore.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_staticcall.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_staticcall.png new file mode 100644 index 00000000..874fefe5 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_staticcall.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_sub.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_sub.png new file mode 100644 index 00000000..887a5a61 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_sub.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_swap1.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_swap1.png new file mode 100644 index 00000000..d5b8c08e Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_swap1.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_swap16.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_swap16.png new file mode 100644 index 00000000..fe774e57 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_swap16.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_swap8.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_swap8.png new file mode 100644 index 00000000..283f23c1 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_swap8.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_timestamp.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_timestamp.png new file mode 100644 index 00000000..56b9ea15 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_timestamp.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_tload.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_tload.png new file mode 100644 index 00000000..98adedf4 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_tload.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_tstore.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_tstore.png new file mode 100644 index 00000000..142e3f76 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_tstore.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_xor.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_xor.png new file mode 100644 index 00000000..1c43ca3a Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_proving_xor.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_add.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_add.png new file mode 100644 index 00000000..51739c85 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_add.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_addmod.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_addmod.png new file mode 100644 index 00000000..65311f2a Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_addmod.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_address.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_address.png new file mode 100644 index 00000000..4b98d520 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_address.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_and.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_and.png new file mode 100644 index 00000000..3367459f Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_and.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_balance.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_balance.png new file mode 100644 index 00000000..9224a5d1 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_balance.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_basefee.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_basefee.png new file mode 100644 index 00000000..98343177 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_basefee.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_blake2f.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_blake2f.png new file mode 100644 index 00000000..20feebd2 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_blake2f.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_blobbasefee.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_blobbasefee.png new file mode 100644 index 00000000..3bce46f8 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_blobbasefee.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_blobhash.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_blobhash.png new file mode 100644 index 00000000..818f8f5b Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_blobhash.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_bls12_g1add.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_bls12_g1add.png new file mode 100644 index 00000000..6eca47a5 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_bls12_g1add.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_bls12_g1msm.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_bls12_g1msm.png new file mode 100644 index 00000000..d3970b2a Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_bls12_g1msm.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_bls12_g2add.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_bls12_g2add.png new file mode 100644 index 00000000..78112476 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_bls12_g2add.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_bls12_g2msm.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_bls12_g2msm.png new file mode 100644 index 00000000..56d0950c Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_bls12_g2msm.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_bls12_map_fp2_to_g2.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_bls12_map_fp2_to_g2.png new file mode 100644 index 00000000..91bcaea2 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_bls12_map_fp2_to_g2.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_bls12_map_fp_to_g1.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_bls12_map_fp_to_g1.png new file mode 100644 index 00000000..ce238f79 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_bls12_map_fp_to_g1.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_bls12_pairing.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_bls12_pairing.png new file mode 100644 index 00000000..b4a40ced Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_bls12_pairing.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_bn128_add.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_bn128_add.png new file mode 100644 index 00000000..6724b62a Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_bn128_add.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_bn128_mul.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_bn128_mul.png new file mode 100644 index 00000000..b1badc27 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_bn128_mul.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_bn128_pairing.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_bn128_pairing.png new file mode 100644 index 00000000..4d3be915 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_bn128_pairing.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_byte.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_byte.png new file mode 100644 index 00000000..0d9c0926 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_byte.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_call.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_call.png new file mode 100644 index 00000000..051853a7 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_call.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_callcode.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_callcode.png new file mode 100644 index 00000000..1a7ac7b5 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_callcode.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_calldatacopy.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_calldatacopy.png new file mode 100644 index 00000000..1d1aa194 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_calldatacopy.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_calldataload.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_calldataload.png new file mode 100644 index 00000000..13350cca Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_calldataload.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_calldatasize.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_calldatasize.png new file mode 100644 index 00000000..6859240a Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_calldatasize.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_caller.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_caller.png new file mode 100644 index 00000000..2fd9ac79 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_caller.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_callvalue.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_callvalue.png new file mode 100644 index 00000000..da6339bf Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_callvalue.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_chainid.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_chainid.png new file mode 100644 index 00000000..c6bb1f28 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_chainid.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_codecopy.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_codecopy.png new file mode 100644 index 00000000..843cb877 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_codecopy.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_codesize.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_codesize.png new file mode 100644 index 00000000..75c468e6 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_codesize.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_coinbase.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_coinbase.png new file mode 100644 index 00000000..45a94cd8 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_coinbase.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_create.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_create.png new file mode 100644 index 00000000..1cf178ec Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_create.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_create2.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_create2.png new file mode 100644 index 00000000..e4872947 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_create2.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_delegatecall.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_delegatecall.png new file mode 100644 index 00000000..451c4b2a Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_delegatecall.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_div.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_div.png new file mode 100644 index 00000000..2039f9e7 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_div.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_dup1.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_dup1.png new file mode 100644 index 00000000..bd907d3a Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_dup1.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_dup16.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_dup16.png new file mode 100644 index 00000000..b135ae61 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_dup16.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_dup8.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_dup8.png new file mode 100644 index 00000000..ad83cf66 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_dup8.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_ecrecover.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_ecrecover.png new file mode 100644 index 00000000..74d40e70 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_ecrecover.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_eq.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_eq.png new file mode 100644 index 00000000..9b9e125a Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_eq.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_exp.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_exp.png new file mode 100644 index 00000000..5331d748 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_exp.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_extcodecopy.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_extcodecopy.png new file mode 100644 index 00000000..f6430c43 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_extcodecopy.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_extcodehash.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_extcodehash.png new file mode 100644 index 00000000..93ebd96e Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_extcodehash.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_extcodesize.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_extcodesize.png new file mode 100644 index 00000000..d6d2e21c Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_extcodesize.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_gas.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_gas.png new file mode 100644 index 00000000..6b3d8da3 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_gas.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_gaslimit.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_gaslimit.png new file mode 100644 index 00000000..6a1195e2 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_gaslimit.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_gasprice.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_gasprice.png new file mode 100644 index 00000000..d2e60754 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_gasprice.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_gt.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_gt.png new file mode 100644 index 00000000..86a4dd4c Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_gt.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_identity.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_identity.png new file mode 100644 index 00000000..2c5b0ff3 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_identity.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_iszero.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_iszero.png new file mode 100644 index 00000000..9c999a06 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_iszero.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_jump.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_jump.png new file mode 100644 index 00000000..d1b97a17 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_jump.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_jumpdest.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_jumpdest.png new file mode 100644 index 00000000..1f181e44 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_jumpdest.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_jumpi.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_jumpi.png new file mode 100644 index 00000000..5f98bbf8 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_jumpi.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_keccak256.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_keccak256.png new file mode 100644 index 00000000..9e179d5f Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_keccak256.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_log0.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_log0.png new file mode 100644 index 00000000..84a48eef Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_log0.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_log1.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_log1.png new file mode 100644 index 00000000..a1cfae64 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_log1.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_log2.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_log2.png new file mode 100644 index 00000000..f71d7cca Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_log2.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_log3.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_log3.png new file mode 100644 index 00000000..396cebea Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_log3.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_log4.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_log4.png new file mode 100644 index 00000000..69c9f078 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_log4.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_lt.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_lt.png new file mode 100644 index 00000000..2d1bf590 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_lt.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_mcopy.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_mcopy.png new file mode 100644 index 00000000..30d3496a Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_mcopy.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_mload.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_mload.png new file mode 100644 index 00000000..e7cad38d Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_mload.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_mod.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_mod.png new file mode 100644 index 00000000..a39c24d4 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_mod.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_modexp.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_modexp.png new file mode 100644 index 00000000..422aca09 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_modexp.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_msize.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_msize.png new file mode 100644 index 00000000..2b7ab8b1 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_msize.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_mstore.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_mstore.png new file mode 100644 index 00000000..eb047e26 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_mstore.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_mstore8.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_mstore8.png new file mode 100644 index 00000000..d4db89a5 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_mstore8.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_mul.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_mul.png new file mode 100644 index 00000000..8b08f4b6 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_mul.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_mulmod.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_mulmod.png new file mode 100644 index 00000000..5f971231 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_mulmod.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_not.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_not.png new file mode 100644 index 00000000..f7bdf20b Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_not.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_number.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_number.png new file mode 100644 index 00000000..070657e1 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_number.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_or.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_or.png new file mode 100644 index 00000000..5a446018 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_or.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_origin.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_origin.png new file mode 100644 index 00000000..84b32d0d Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_origin.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_pc.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_pc.png new file mode 100644 index 00000000..88a67ab5 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_pc.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_point_evaluation.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_point_evaluation.png new file mode 100644 index 00000000..8457e560 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_point_evaluation.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_pop.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_pop.png new file mode 100644 index 00000000..e552dc2a Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_pop.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_prevrandao.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_prevrandao.png new file mode 100644 index 00000000..e1dd00a6 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_prevrandao.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_push0.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_push0.png new file mode 100644 index 00000000..d74038f6 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_push0.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_push1.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_push1.png new file mode 100644 index 00000000..a9558fb6 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_push1.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_push16.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_push16.png new file mode 100644 index 00000000..5ef686fd Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_push16.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_push32.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_push32.png new file mode 100644 index 00000000..dcf2cfdf Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_push32.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_returndatacopy.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_returndatacopy.png new file mode 100644 index 00000000..2fccb60b Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_returndatacopy.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_returndatasize.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_returndatasize.png new file mode 100644 index 00000000..070b6124 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_returndatasize.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_ripemd160.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_ripemd160.png new file mode 100644 index 00000000..a50fa3a2 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_ripemd160.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_sar.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_sar.png new file mode 100644 index 00000000..dfe76d36 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_sar.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_sdiv.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_sdiv.png new file mode 100644 index 00000000..574408db Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_sdiv.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_selfbalance.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_selfbalance.png new file mode 100644 index 00000000..4ad908ea Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_selfbalance.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_sgt.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_sgt.png new file mode 100644 index 00000000..21466270 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_sgt.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_sha256.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_sha256.png new file mode 100644 index 00000000..0dfb6c28 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_sha256.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_shl.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_shl.png new file mode 100644 index 00000000..8eb6acfd Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_shl.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_shr.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_shr.png new file mode 100644 index 00000000..8442c157 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_shr.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_signextend.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_signextend.png new file mode 100644 index 00000000..365cfb10 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_signextend.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_sload.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_sload.png new file mode 100644 index 00000000..f6a5b938 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_sload.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_slt.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_slt.png new file mode 100644 index 00000000..ea7e3ca8 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_slt.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_smod.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_smod.png new file mode 100644 index 00000000..0f32e754 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_smod.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_sstore.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_sstore.png new file mode 100644 index 00000000..2946e4a9 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_sstore.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_staticcall.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_staticcall.png new file mode 100644 index 00000000..ecc688d2 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_staticcall.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_sub.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_sub.png new file mode 100644 index 00000000..695ebc65 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_sub.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_swap1.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_swap1.png new file mode 100644 index 00000000..e23f00f0 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_swap1.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_swap16.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_swap16.png new file mode 100644 index 00000000..c14002c6 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_swap16.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_swap8.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_swap8.png new file mode 100644 index 00000000..2670889d Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_swap8.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_timestamp.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_timestamp.png new file mode 100644 index 00000000..b9dcd278 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_timestamp.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_tload.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_tload.png new file mode 100644 index 00000000..ffc74d23 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_tload.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_tstore.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_tstore.png new file mode 100644 index 00000000..5571ae3a Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_tstore.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_xor.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_xor.png new file mode 100644 index 00000000..d2a1d7dd Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/gas_zkcycles_xor.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_add.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_add.png new file mode 100644 index 00000000..b105c8ad Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_add.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_addmod.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_addmod.png new file mode 100644 index 00000000..705ebcbf Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_addmod.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_address.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_address.png new file mode 100644 index 00000000..693e0c5c Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_address.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_and.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_and.png new file mode 100644 index 00000000..5699afce Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_and.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_balance.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_balance.png new file mode 100644 index 00000000..a533e41f Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_balance.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_basefee.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_basefee.png new file mode 100644 index 00000000..e83c72ab Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_basefee.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_blake2f.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_blake2f.png new file mode 100644 index 00000000..98194196 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_blake2f.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_blobbasefee.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_blobbasefee.png new file mode 100644 index 00000000..67da6d6f Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_blobbasefee.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_blobhash.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_blobhash.png new file mode 100644 index 00000000..669d2fc7 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_blobhash.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_bls12_g1add.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_bls12_g1add.png new file mode 100644 index 00000000..a4bb4f96 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_bls12_g1add.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_bls12_g1msm.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_bls12_g1msm.png new file mode 100644 index 00000000..7b304c91 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_bls12_g1msm.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_bls12_g2add.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_bls12_g2add.png new file mode 100644 index 00000000..713a8966 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_bls12_g2add.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_bls12_g2msm.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_bls12_g2msm.png new file mode 100644 index 00000000..989e716a Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_bls12_g2msm.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_bls12_map_fp2_to_g2.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_bls12_map_fp2_to_g2.png new file mode 100644 index 00000000..03c22f33 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_bls12_map_fp2_to_g2.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_bls12_map_fp_to_g1.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_bls12_map_fp_to_g1.png new file mode 100644 index 00000000..4f43b5fe Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_bls12_map_fp_to_g1.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_bls12_pairing.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_bls12_pairing.png new file mode 100644 index 00000000..a3e28369 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_bls12_pairing.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_bn128_add.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_bn128_add.png new file mode 100644 index 00000000..4f1ee54b Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_bn128_add.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_bn128_mul.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_bn128_mul.png new file mode 100644 index 00000000..89f3c4a6 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_bn128_mul.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_bn128_pairing.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_bn128_pairing.png new file mode 100644 index 00000000..ce061477 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_bn128_pairing.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_byte.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_byte.png new file mode 100644 index 00000000..b84d7842 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_byte.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_call.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_call.png new file mode 100644 index 00000000..3bd3e87f Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_call.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_callcode.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_callcode.png new file mode 100644 index 00000000..521506e3 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_callcode.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_calldatacopy.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_calldatacopy.png new file mode 100644 index 00000000..fb188cb2 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_calldatacopy.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_calldataload.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_calldataload.png new file mode 100644 index 00000000..ee22997d Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_calldataload.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_calldatasize.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_calldatasize.png new file mode 100644 index 00000000..a4513aea Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_calldatasize.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_caller.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_caller.png new file mode 100644 index 00000000..1fba8300 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_caller.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_callvalue.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_callvalue.png new file mode 100644 index 00000000..86c3d607 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_callvalue.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_chainid.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_chainid.png new file mode 100644 index 00000000..9af28a98 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_chainid.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_codecopy.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_codecopy.png new file mode 100644 index 00000000..01a2849c Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_codecopy.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_codesize.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_codesize.png new file mode 100644 index 00000000..fd53d18a Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_codesize.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_coinbase.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_coinbase.png new file mode 100644 index 00000000..0573af29 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_coinbase.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_create.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_create.png new file mode 100644 index 00000000..6d7b6298 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_create.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_create2.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_create2.png new file mode 100644 index 00000000..b611fb5d Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_create2.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_delegatecall.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_delegatecall.png new file mode 100644 index 00000000..f6f7991d Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_delegatecall.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_div.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_div.png new file mode 100644 index 00000000..136e6fbf Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_div.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_dup1.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_dup1.png new file mode 100644 index 00000000..02ed11f6 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_dup1.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_dup16.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_dup16.png new file mode 100644 index 00000000..c0e550b3 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_dup16.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_dup8.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_dup8.png new file mode 100644 index 00000000..f043f350 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_dup8.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_ecrecover.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_ecrecover.png new file mode 100644 index 00000000..ce374180 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_ecrecover.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_eq.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_eq.png new file mode 100644 index 00000000..aaffd1e2 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_eq.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_exp.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_exp.png new file mode 100644 index 00000000..6553d3e7 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_exp.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_extcodecopy.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_extcodecopy.png new file mode 100644 index 00000000..b8a76473 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_extcodecopy.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_extcodehash.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_extcodehash.png new file mode 100644 index 00000000..d34e3ede Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_extcodehash.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_extcodesize.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_extcodesize.png new file mode 100644 index 00000000..f8941459 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_extcodesize.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_gas.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_gas.png new file mode 100644 index 00000000..1b1001de Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_gas.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_gaslimit.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_gaslimit.png new file mode 100644 index 00000000..03c20b87 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_gaslimit.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_gasprice.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_gasprice.png new file mode 100644 index 00000000..242c2c2a Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_gasprice.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_gt.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_gt.png new file mode 100644 index 00000000..163e81ad Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_gt.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_identity.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_identity.png new file mode 100644 index 00000000..f355312a Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_identity.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_iszero.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_iszero.png new file mode 100644 index 00000000..1bf5489e Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_iszero.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_jump.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_jump.png new file mode 100644 index 00000000..fa42a3f3 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_jump.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_jumpdest.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_jumpdest.png new file mode 100644 index 00000000..1493c28f Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_jumpdest.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_jumpi.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_jumpi.png new file mode 100644 index 00000000..40c69986 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_jumpi.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_keccak256.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_keccak256.png new file mode 100644 index 00000000..6167ec1e Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_keccak256.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_log0.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_log0.png new file mode 100644 index 00000000..4982205a Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_log0.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_log1.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_log1.png new file mode 100644 index 00000000..239d4682 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_log1.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_log2.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_log2.png new file mode 100644 index 00000000..a67d8cdb Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_log2.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_log3.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_log3.png new file mode 100644 index 00000000..dd44701a Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_log3.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_log4.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_log4.png new file mode 100644 index 00000000..d0755caf Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_log4.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_lt.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_lt.png new file mode 100644 index 00000000..61d3b158 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_lt.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_mcopy.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_mcopy.png new file mode 100644 index 00000000..48d1802b Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_mcopy.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_mload.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_mload.png new file mode 100644 index 00000000..5206e8e5 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_mload.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_mod.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_mod.png new file mode 100644 index 00000000..5a8b3102 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_mod.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_modexp.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_modexp.png new file mode 100644 index 00000000..07377379 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_modexp.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_msize.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_msize.png new file mode 100644 index 00000000..848a28f2 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_msize.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_mstore.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_mstore.png new file mode 100644 index 00000000..8aa56e2d Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_mstore.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_mstore8.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_mstore8.png new file mode 100644 index 00000000..1074248e Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_mstore8.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_mul.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_mul.png new file mode 100644 index 00000000..705ef2eb Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_mul.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_mulmod.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_mulmod.png new file mode 100644 index 00000000..f4178f74 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_mulmod.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_not.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_not.png new file mode 100644 index 00000000..750e5464 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_not.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_number.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_number.png new file mode 100644 index 00000000..c088c21c Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_number.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_or.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_or.png new file mode 100644 index 00000000..2be44b50 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_or.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_origin.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_origin.png new file mode 100644 index 00000000..545bec6d Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_origin.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_pc.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_pc.png new file mode 100644 index 00000000..4466a296 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_pc.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_point_evaluation.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_point_evaluation.png new file mode 100644 index 00000000..40837d05 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_point_evaluation.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_pop.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_pop.png new file mode 100644 index 00000000..12e06df2 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_pop.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_prevrandao.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_prevrandao.png new file mode 100644 index 00000000..dd980679 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_prevrandao.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_push0.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_push0.png new file mode 100644 index 00000000..c077ab4d Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_push0.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_push1.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_push1.png new file mode 100644 index 00000000..e56ed279 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_push1.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_push16.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_push16.png new file mode 100644 index 00000000..2733e395 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_push16.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_push32.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_push32.png new file mode 100644 index 00000000..758820df Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_push32.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_returndatacopy.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_returndatacopy.png new file mode 100644 index 00000000..bb70b4c9 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_returndatacopy.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_returndatasize.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_returndatasize.png new file mode 100644 index 00000000..761670de Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_returndatasize.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_ripemd160.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_ripemd160.png new file mode 100644 index 00000000..653c706a Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_ripemd160.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_sar.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_sar.png new file mode 100644 index 00000000..4a822ac3 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_sar.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_sdiv.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_sdiv.png new file mode 100644 index 00000000..e5f1cc29 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_sdiv.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_selfbalance.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_selfbalance.png new file mode 100644 index 00000000..c7fa4b50 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_selfbalance.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_sgt.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_sgt.png new file mode 100644 index 00000000..f809c7f9 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_sgt.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_sha256.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_sha256.png new file mode 100644 index 00000000..37e81b43 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_sha256.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_shl.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_shl.png new file mode 100644 index 00000000..861c5f64 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_shl.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_shr.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_shr.png new file mode 100644 index 00000000..2ee6ebd6 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_shr.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_signextend.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_signextend.png new file mode 100644 index 00000000..28a02f47 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_signextend.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_sload.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_sload.png new file mode 100644 index 00000000..3b305eec Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_sload.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_slt.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_slt.png new file mode 100644 index 00000000..e3d1485e Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_slt.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_smod.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_smod.png new file mode 100644 index 00000000..86059234 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_smod.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_sstore.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_sstore.png new file mode 100644 index 00000000..315ee1f8 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_sstore.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_staticcall.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_staticcall.png new file mode 100644 index 00000000..fac61300 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_staticcall.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_sub.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_sub.png new file mode 100644 index 00000000..5bfb8a1e Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_sub.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_swap1.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_swap1.png new file mode 100644 index 00000000..55ff70d1 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_swap1.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_swap16.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_swap16.png new file mode 100644 index 00000000..bbb17efe Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_swap16.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_swap8.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_swap8.png new file mode 100644 index 00000000..0add2b97 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_swap8.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_timestamp.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_timestamp.png new file mode 100644 index 00000000..d80e7110 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_timestamp.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_tload.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_tload.png new file mode 100644 index 00000000..d6d86514 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_tload.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_tstore.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_tstore.png new file mode 100644 index 00000000..181b8595 Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_tstore.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_xor.png b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_xor.png new file mode 100644 index 00000000..6545691f Binary files /dev/null and b/www/docs/public/marginal-gas-benchmark/sp1/plots/zkcycles_proving_xor.png differ diff --git a/www/docs/public/marginal-gas-benchmark/sp1/raw-data-sp1-both-20251228-194313.csv b/www/docs/public/marginal-gas-benchmark/sp1/raw-data-sp1-both-20251228-194313.csv new file mode 100644 index 00000000..d7d355ae --- /dev/null +++ b/www/docs/public/marginal-gas-benchmark/sp1/raw-data-sp1-both-20251228-194313.csv @@ -0,0 +1,456 @@ +name,opcode,op_count,gas_used,zk_cycles,proving_time_s +test_marginal_opcodes.py::test_add[fork_Prague-blockchain_test_from_state_test-op_count_0],add,0,9480611,327108334,57.53 +test_marginal_opcodes.py::test_add[fork_Prague-blockchain_test_from_state_test-op_count_300000],add,300000,10380611,356208984,61.061 +test_marginal_opcodes.py::test_add[fork_Prague-blockchain_test_from_state_test-op_count_600000],add,600000,11280611,385310575,64.621 +test_marginal_opcodes.py::test_add[fork_Prague-blockchain_test_from_state_test-op_count_900000],add,900000,12180611,414492906,67.669 +test_marginal_opcodes.py::test_addmod[fork_Prague-blockchain_test_from_state_test-op_count_0],addmod,0,2803611,101449828,22.228 +test_marginal_opcodes.py::test_addmod[fork_Prague-blockchain_test_from_state_test-op_count_134000],addmod,134000,3875611,308348498,48.413 +test_marginal_opcodes.py::test_addmod[fork_Prague-blockchain_test_from_state_test-op_count_201000],addmod,201000,4411611,411794422,61.083 +test_marginal_opcodes.py::test_addmod[fork_Prague-blockchain_test_from_state_test-op_count_67000],addmod,67000,3339611,204899064,35.363 +test_marginal_opcodes.py::test_address[fork_Prague-blockchain_test_from_state_test-op_count_0],address,0,3863111,90594101,20.671 +test_marginal_opcodes.py::test_address[fork_Prague-blockchain_test_from_state_test-op_count_300000],address,300000,4463111,125437656,25.761 +test_marginal_opcodes.py::test_address[fork_Prague-blockchain_test_from_state_test-op_count_600000],address,600000,5063111,160199716,29.3 +test_marginal_opcodes.py::test_address[fork_Prague-blockchain_test_from_state_test-op_count_900000],address,900000,5663111,195002271,34.329 +test_marginal_opcodes.py::test_and[fork_Prague-blockchain_test_from_state_test-op_count_0],and,0,6335611,218399618,39.866 +test_marginal_opcodes.py::test_and[fork_Prague-blockchain_test_from_state_test-op_count_200000],and,200000,6935611,232800587,43.973 +test_marginal_opcodes.py::test_and[fork_Prague-blockchain_test_from_state_test-op_count_400000],and,400000,7535611,247201245,46.429 +test_marginal_opcodes.py::test_and[fork_Prague-blockchain_test_from_state_test-op_count_600000],and,600000,8135611,261656773,49.531 +test_marginal_opcodes.py::test_balance[fork_Prague-blockchain_test_from_state_test-op_count_0],balance,0,2398111,51032272,15.637 +test_marginal_opcodes.py::test_balance[fork_Prague-blockchain_test_from_state_test-op_count_100000],balance,100000,12398111,217033181,38.381 +test_marginal_opcodes.py::test_balance[fork_Prague-blockchain_test_from_state_test-op_count_200000],balance,200000,22398111,383035831,62.688 +test_marginal_opcodes.py::test_balance[fork_Prague-blockchain_test_from_state_test-op_count_300000],balance,300000,32398111,549036232,88.399 +test_marginal_opcodes.py::test_blobbasefee[fork_Prague-blockchain_test_from_state_test-op_count_0],blobbasefee,0,5135611,120498988,24.749 +test_marginal_opcodes.py::test_blobbasefee[fork_Prague-blockchain_test_from_state_test-op_count_1200000],blobbasefee,1200000,7535611,222506569,40.871 +test_marginal_opcodes.py::test_blobbasefee[fork_Prague-blockchain_test_from_state_test-op_count_400000],blobbasefee,400000,5935611,154556232,31.267 +test_marginal_opcodes.py::test_blobbasefee[fork_Prague-blockchain_test_from_state_test-op_count_800000],blobbasefee,800000,6735611,188504068,35.874 +test_marginal_opcodes.py::test_blobhash[fork_Prague-blockchain_test_from_state_test-op_count_0],blobhash,0,9498611,240144501,42.899 +test_marginal_opcodes.py::test_blobhash[fork_Prague-blockchain_test_from_state_test-op_count_1002000],blobhash,1002000,12504611,307362936,47.472 +test_marginal_opcodes.py::test_blobhash[fork_Prague-blockchain_test_from_state_test-op_count_1503000],blobhash,1503000,14007611,340850737,51.548 +test_marginal_opcodes.py::test_blobhash[fork_Prague-blockchain_test_from_state_test-op_count_501000],blobhash,501000,11001611,273711212,44.493 +test_marginal_opcodes.py::test_byte[fork_Prague-blockchain_test_from_state_test-op_count_0],byte,0,6335611,170951453,30.324 +test_marginal_opcodes.py::test_byte[fork_Prague-blockchain_test_from_state_test-op_count_200000],byte,200000,6935611,187352458,33.35 +test_marginal_opcodes.py::test_byte[fork_Prague-blockchain_test_from_state_test-op_count_400000],byte,400000,7535611,203752787,34.806 +test_marginal_opcodes.py::test_byte[fork_Prague-blockchain_test_from_state_test-op_count_600000],byte,600000,8135611,220154993,38.911 +test_marginal_opcodes.py::test_calldatacopy[fork_Prague-blockchain_test_from_state_test-op_count_0],calldatacopy,0,4559611,112974666,25.22 +test_marginal_opcodes.py::test_calldatacopy[fork_Prague-blockchain_test_from_state_test-op_count_200000],calldatacopy,200000,5759611,155377056,29.801 +test_marginal_opcodes.py::test_calldatacopy[fork_Prague-blockchain_test_from_state_test-op_count_400000],calldatacopy,400000,6959611,197777664,36.872 +test_marginal_opcodes.py::test_calldatacopy[fork_Prague-blockchain_test_from_state_test-op_count_600000],calldatacopy,600000,8159611,240179335,39.415 +test_marginal_opcodes.py::test_calldataload[fork_Prague-blockchain_test_from_state_test-op_count_0],calldataload,0,3196611,80638279,20.197 +test_marginal_opcodes.py::test_calldataload[fork_Prague-blockchain_test_from_state_test-op_count_167000],calldataload,167000,3697611,107859082,23.221 +test_marginal_opcodes.py::test_calldataload[fork_Prague-blockchain_test_from_state_test-op_count_334000],calldataload,334000,4198611,135110931,26.242 +test_marginal_opcodes.py::test_calldataload[fork_Prague-blockchain_test_from_state_test-op_count_501000],calldataload,501000,4699611,162306900,29.795 +test_marginal_opcodes.py::test_calldatasize[fork_Prague-blockchain_test_from_state_test-op_count_0],calldatasize,0,5135611,120498918,23.728 +test_marginal_opcodes.py::test_calldatasize[fork_Prague-blockchain_test_from_state_test-op_count_1200000],calldatasize,1200000,7535611,197306616,36.352 +test_marginal_opcodes.py::test_calldatasize[fork_Prague-blockchain_test_from_state_test-op_count_240000],calldatasize,240000,5615611,135860525,25.742 +test_marginal_opcodes.py::test_calldatasize[fork_Prague-blockchain_test_from_state_test-op_count_480000],calldatasize,480000,6095611,151222673,30.325 +test_marginal_opcodes.py::test_calldatasize[fork_Prague-blockchain_test_from_state_test-op_count_720000],calldatasize,720000,6575611,166597863,31.803 +test_marginal_opcodes.py::test_calldatasize[fork_Prague-blockchain_test_from_state_test-op_count_960000],calldatasize,960000,7055611,181945356,34.891 +test_marginal_opcodes.py::test_caller[fork_Prague-blockchain_test_from_state_test-op_count_0],caller,0,5135611,120498719,24.732 +test_marginal_opcodes.py::test_caller[fork_Prague-blockchain_test_from_state_test-op_count_1200000],caller,1200000,7535611,259706778,44.498 +test_marginal_opcodes.py::test_caller[fork_Prague-blockchain_test_from_state_test-op_count_400000],caller,400000,5935611,166955972,29.778 +test_marginal_opcodes.py::test_caller[fork_Prague-blockchain_test_from_state_test-op_count_800000],caller,800000,6735611,213304387,35.85 +test_marginal_opcodes.py::test_caller_basefee[fork_Prague-blockchain_test_from_state_test-op_count_0],basefee,0,5135611,120498468,25.213 +test_marginal_opcodes.py::test_caller_basefee[fork_Prague-blockchain_test_from_state_test-op_count_1200000],basefee,1200000,7535611,196106120,36.844 +test_marginal_opcodes.py::test_caller_basefee[fork_Prague-blockchain_test_from_state_test-op_count_400000],basefee,400000,5935611,145755998,29.291 +test_marginal_opcodes.py::test_caller_basefee[fork_Prague-blockchain_test_from_state_test-op_count_800000],basefee,800000,6735611,170904089,31.873 +test_marginal_opcodes.py::test_callvalue[fork_Prague-blockchain_test_from_state_test-op_count_0],callvalue,0,5135611,120499132,24.244 +test_marginal_opcodes.py::test_callvalue[fork_Prague-blockchain_test_from_state_test-op_count_1200000],callvalue,1200000,7535611,214106666,39.367 +test_marginal_opcodes.py::test_callvalue[fork_Prague-blockchain_test_from_state_test-op_count_300000],callvalue,300000,5735611,143899709,29.254 +test_marginal_opcodes.py::test_callvalue[fork_Prague-blockchain_test_from_state_test-op_count_600000],callvalue,600000,6335611,167303495,33.812 +test_marginal_opcodes.py::test_callvalue[fork_Prague-blockchain_test_from_state_test-op_count_900000],callvalue,900000,6935611,190703229,36.847 +test_marginal_opcodes.py::test_chainid[fork_Prague-blockchain_test_from_state_test-op_count_0],chainid,0,5135611,120498624,24.748 +test_marginal_opcodes.py::test_chainid[fork_Prague-blockchain_test_from_state_test-op_count_1200000],chainid,1200000,7535611,196106598,36.848 +test_marginal_opcodes.py::test_chainid[fork_Prague-blockchain_test_from_state_test-op_count_400000],chainid,400000,5935611,145755772,28.797 +test_marginal_opcodes.py::test_chainid[fork_Prague-blockchain_test_from_state_test-op_count_800000],chainid,800000,6735611,170904033,32.82 +test_marginal_opcodes.py::test_codecopy[fork_Prague-blockchain_test_from_state_test-op_count_0],codecopy,0,6816611,169023010,32.312 +test_marginal_opcodes.py::test_codecopy[fork_Prague-blockchain_test_from_state_test-op_count_300000],codecopy,300000,8616611,232625312,42.417 +test_marginal_opcodes.py::test_codecopy[fork_Prague-blockchain_test_from_state_test-op_count_600000],codecopy,600000,10416611,334625874,57.064 +test_marginal_opcodes.py::test_codecopy[fork_Prague-blockchain_test_from_state_test-op_count_900000],codecopy,900000,12216611,417427357,70.219 +test_marginal_opcodes.py::test_codesize[fork_Prague-blockchain_test_from_state_test-op_count_0],codesize,0,5135611,120499062,24.227 +test_marginal_opcodes.py::test_codesize[fork_Prague-blockchain_test_from_state_test-op_count_1200000],codesize,1200000,7535611,193706816,37.363 +test_marginal_opcodes.py::test_codesize[fork_Prague-blockchain_test_from_state_test-op_count_400000],codesize,400000,5935611,144956022,28.787 +test_marginal_opcodes.py::test_codesize[fork_Prague-blockchain_test_from_state_test-op_count_800000],codesize,800000,6735611,169304223,34.442 +test_marginal_opcodes.py::test_coinbase[fork_Prague-blockchain_test_from_state_test-op_count_0],coinbase,0,5135611,120498775,24.231 +test_marginal_opcodes.py::test_coinbase[fork_Prague-blockchain_test_from_state_test-op_count_1200000],coinbase,1200000,7535611,259706902,43.875 +test_marginal_opcodes.py::test_coinbase[fork_Prague-blockchain_test_from_state_test-op_count_400000],coinbase,400000,5935611,166955710,28.781 +test_marginal_opcodes.py::test_coinbase[fork_Prague-blockchain_test_from_state_test-op_count_800000],coinbase,800000,6735611,213303768,35.832 +test_marginal_opcodes.py::test_div[fork_Prague-blockchain_test_from_state_test-op_count_0],div,0,2247111,77077871,19.681 +test_marginal_opcodes.py::test_div[fork_Prague-blockchain_test_from_state_test-op_count_140000],div,140000,2947111,291279896,45.391 +test_marginal_opcodes.py::test_div[fork_Prague-blockchain_test_from_state_test-op_count_210000],div,210000,3297111,398399962,61.137 +test_marginal_opcodes.py::test_div[fork_Prague-blockchain_test_from_state_test-op_count_70000],div,70000,2597111,184178585,33.335 +test_marginal_opcodes.py::test_dup16[fork_Prague-blockchain_test_from_state_test-op_count_0],dup16,0,2895611,70724252,16.649 +test_marginal_opcodes.py::test_dup16[fork_Prague-blockchain_test_from_state_test-op_count_120000],dup16,120000,3255611,76845258,17.662 +test_marginal_opcodes.py::test_dup16[fork_Prague-blockchain_test_from_state_test-op_count_240000],dup16,240000,3615611,83074071,20.174 +test_marginal_opcodes.py::test_dup16[fork_Prague-blockchain_test_from_state_test-op_count_360000],dup16,360000,3975611,89087184,21.193 +test_marginal_opcodes.py::test_dup16[fork_Prague-blockchain_test_from_state_test-op_count_480000],dup16,480000,4335611,95207611,21.217 +test_marginal_opcodes.py::test_dup16[fork_Prague-blockchain_test_from_state_test-op_count_600000],dup16,600000,4695611,101327887,23.237 +test_marginal_opcodes.py::test_dup1[fork_Prague-blockchain_test_from_state_test-op_count_0],dup1,0,4095611,102229169,20.699 +test_marginal_opcodes.py::test_dup1[fork_Prague-blockchain_test_from_state_test-op_count_180000],dup1,180000,4635611,111410025,23.228 +test_marginal_opcodes.py::test_dup1[fork_Prague-blockchain_test_from_state_test-op_count_360000],dup1,360000,5175611,120591042,26.752 +test_marginal_opcodes.py::test_dup1[fork_Prague-blockchain_test_from_state_test-op_count_540000],dup1,540000,5715611,129771396,27.758 +test_marginal_opcodes.py::test_dup1[fork_Prague-blockchain_test_from_state_test-op_count_720000],dup1,720000,6255611,138952263,27.793 +test_marginal_opcodes.py::test_dup1[fork_Prague-blockchain_test_from_state_test-op_count_900000],dup1,900000,6795611,148132282,29.273 +test_marginal_opcodes.py::test_dup8[fork_Prague-blockchain_test_from_state_test-op_count_0],dup8,0,4200611,103825556,21.219 +test_marginal_opcodes.py::test_dup8[fork_Prague-blockchain_test_from_state_test-op_count_180000],dup8,180000,4740611,113005539,24.22 +test_marginal_opcodes.py::test_dup8[fork_Prague-blockchain_test_from_state_test-op_count_360000],dup8,360000,5280611,122186694,27.274 +test_marginal_opcodes.py::test_dup8[fork_Prague-blockchain_test_from_state_test-op_count_540000],dup8,540000,5820611,131367403,27.739 +test_marginal_opcodes.py::test_dup8[fork_Prague-blockchain_test_from_state_test-op_count_720000],dup8,720000,6360611,140548329,28.274 +test_marginal_opcodes.py::test_dup8[fork_Prague-blockchain_test_from_state_test-op_count_900000],dup8,900000,6900611,149809820,30.822 +test_marginal_opcodes.py::test_eq[fork_Prague-blockchain_test_from_state_test-op_count_0],eq,0,4763111,164044613,30.823 +test_marginal_opcodes.py::test_eq[fork_Prague-blockchain_test_from_state_test-op_count_150000],eq,150000,5213111,208596016,35.307 +test_marginal_opcodes.py::test_eq[fork_Prague-blockchain_test_from_state_test-op_count_300000],eq,300000,5663111,253146990,43.899 +test_marginal_opcodes.py::test_eq[fork_Prague-blockchain_test_from_state_test-op_count_450000],eq,450000,6113111,297738989,49.976 +test_marginal_opcodes.py::test_exp[fork_Prague-blockchain_test_from_state_test-op_count_0],exp,0,70286,1796382,7.065 +test_marginal_opcodes.py::test_exp[fork_Prague-blockchain_test_from_state_test-op_count_1500],exp,1500,2485286,213295956,35.311 +test_marginal_opcodes.py::test_exp[fork_Prague-blockchain_test_from_state_test-op_count_2250],exp,2250,3692786,319045626,51.455 +test_marginal_opcodes.py::test_exp[fork_Prague-blockchain_test_from_state_test-op_count_750],exp,750,1277786,107545955,23.24 +test_marginal_opcodes.py::test_extcodecopy[fork_Prague-blockchain_test_from_state_test-op_count_0],extcodecopy,0,1592111,42136161,13.61 +test_marginal_opcodes.py::test_extcodecopy[fork_Prague-blockchain_test_from_state_test-op_count_102000],extcodecopy,102000,14282111,241916048,43.379 +test_marginal_opcodes.py::test_extcodecopy[fork_Prague-blockchain_test_from_state_test-op_count_34000],extcodecopy,34000,5850111,108976440,24.751 +test_marginal_opcodes.py::test_extcodecopy[fork_Prague-blockchain_test_from_state_test-op_count_68000],extcodecopy,68000,10066111,175459797,32.821 +test_marginal_opcodes.py::test_extcodehash[fork_Prague-blockchain_test_from_state_test-op_count_0],extcodehash,0,1948111,47988645,13.628 +test_marginal_opcodes.py::test_extcodehash[fork_Prague-blockchain_test_from_state_test-op_count_100000],extcodehash,100000,11948111,269382348,44.446 +test_marginal_opcodes.py::test_extcodehash[fork_Prague-blockchain_test_from_state_test-op_count_150000],extcodehash,150000,16948111,380132227,63.622 +test_marginal_opcodes.py::test_extcodehash[fork_Prague-blockchain_test_from_state_test-op_count_200000],extcodehash,200000,21948111,490882382,77.763 +test_marginal_opcodes.py::test_extcodehash[fork_Prague-blockchain_test_from_state_test-op_count_50000],extcodehash,50000,6948111,158629070,29.802 +test_marginal_opcodes.py::test_extcodesize[fork_Prague-blockchain_test_from_state_test-op_count_0],extcodesize,0,1934111,46510756,14.658 +test_marginal_opcodes.py::test_extcodesize[fork_Prague-blockchain_test_from_state_test-op_count_132000],extcodesize,132000,15134111,266422201,45.932 +test_marginal_opcodes.py::test_extcodesize[fork_Prague-blockchain_test_from_state_test-op_count_198000],extcodesize,198000,21734111,376380558,59.04 +test_marginal_opcodes.py::test_extcodesize[fork_Prague-blockchain_test_from_state_test-op_count_66000],extcodesize,66000,8534111,156466910,30.825 +test_marginal_opcodes.py::test_gas[fork_Prague-blockchain_test_from_state_test-op_count_0],gas,0,5135611,120499134,24.219 +test_marginal_opcodes.py::test_gas[fork_Prague-blockchain_test_from_state_test-op_count_1200000],gas,1200000,7535611,192506753,37.894 +test_marginal_opcodes.py::test_gas[fork_Prague-blockchain_test_from_state_test-op_count_400000],gas,400000,5935611,144555565,28.774 +test_marginal_opcodes.py::test_gas[fork_Prague-blockchain_test_from_state_test-op_count_800000],gas,800000,6735611,168504088,31.814 +test_marginal_opcodes.py::test_gaslimit[fork_Prague-blockchain_test_from_state_test-op_count_0],gaslimit,0,5135611,120498540,24.231 +test_marginal_opcodes.py::test_gaslimit[fork_Prague-blockchain_test_from_state_test-op_count_1200000],gaslimit,1200000,7535611,192506450,35.813 +test_marginal_opcodes.py::test_gaslimit[fork_Prague-blockchain_test_from_state_test-op_count_400000],gaslimit,400000,5935611,144555917,28.754 +test_marginal_opcodes.py::test_gaslimit[fork_Prague-blockchain_test_from_state_test-op_count_800000],gaslimit,800000,6735611,168504599,32.307 +test_marginal_opcodes.py::test_gasprice[fork_Prague-blockchain_test_from_state_test-op_count_0],gasprice,0,5135611,120499064,24.248 +test_marginal_opcodes.py::test_gasprice[fork_Prague-blockchain_test_from_state_test-op_count_1200000],gasprice,1200000,7535611,217706736,39.888 +test_marginal_opcodes.py::test_gasprice[fork_Prague-blockchain_test_from_state_test-op_count_400000],gasprice,400000,5935611,152956002,29.781 +test_marginal_opcodes.py::test_gasprice[fork_Prague-blockchain_test_from_state_test-op_count_800000],gasprice,800000,6735611,185304491,34.845 +test_marginal_opcodes.py::test_gt[fork_Prague-blockchain_test_from_state_test-op_count_0],gt,0,6335611,218399670,40.437 +test_marginal_opcodes.py::test_gt[fork_Prague-blockchain_test_from_state_test-op_count_200000],gt,200000,6935611,234800175,43.422 +test_marginal_opcodes.py::test_gt[fork_Prague-blockchain_test_from_state_test-op_count_400000],gt,400000,7535611,251201845,45.421 +test_marginal_opcodes.py::test_gt[fork_Prague-blockchain_test_from_state_test-op_count_600000],gt,600000,8135611,267656911,47.454 +test_marginal_opcodes.py::test_iszero[fork_Prague-blockchain_test_from_state_test-op_count_0],iszero,0,9930611,309983191,52.534 +test_marginal_opcodes.py::test_iszero[fork_Prague-blockchain_test_from_state_test-op_count_1080000],iszero,1080000,13170611,372627805,57.568 +test_marginal_opcodes.py::test_iszero[fork_Prague-blockchain_test_from_state_test-op_count_1350000],iszero,1350000,13980611,388290438,61.086 +test_marginal_opcodes.py::test_iszero[fork_Prague-blockchain_test_from_state_test-op_count_270000],iszero,270000,10740611,325645823,51.472 +test_marginal_opcodes.py::test_iszero[fork_Prague-blockchain_test_from_state_test-op_count_540000],iszero,540000,11550611,341305216,52.569 +test_marginal_opcodes.py::test_iszero[fork_Prague-blockchain_test_from_state_test-op_count_810000],iszero,810000,12360611,356968381,56.601 +test_marginal_opcodes.py::test_jump[fork_Prague-blockchain_test_from_state_test-op_count_0],jump,0,2880611,71702921,18.173 +test_marginal_opcodes.py::test_jump[fork_Prague-blockchain_test_from_state_test-op_count_120000],jump,120000,3840611,79263293,18.661 +test_marginal_opcodes.py::test_jump[fork_Prague-blockchain_test_from_state_test-op_count_240000],jump,240000,4800611,86824153,19.18 +test_marginal_opcodes.py::test_jump[fork_Prague-blockchain_test_from_state_test-op_count_360000],jump,360000,5760611,94384421,20.205 +test_marginal_opcodes.py::test_jump[fork_Prague-blockchain_test_from_state_test-op_count_480000],jump,480000,6720611,101945045,22.261 +test_marginal_opcodes.py::test_jump[fork_Prague-blockchain_test_from_state_test-op_count_600000],jump,600000,7680611,109504936,21.72 +test_marginal_opcodes.py::test_jumpdest[fork_Prague-blockchain_test_from_state_test-op_count_0],jumpdest,0,625611,31302230,11.114 +test_marginal_opcodes.py::test_jumpdest[fork_Prague-blockchain_test_from_state_test-op_count_1600000],jumpdest,1600000,2225611,72909237,17.674 +test_marginal_opcodes.py::test_jumpdest[fork_Prague-blockchain_test_from_state_test-op_count_2400000],jumpdest,2400000,3025611,93712846,21.198 +test_marginal_opcodes.py::test_jumpdest[fork_Prague-blockchain_test_from_state_test-op_count_800000],jumpdest,800000,1425611,52106113,15.147 +test_marginal_opcodes.py::test_jumpi[fork_Prague-blockchain_test_from_state_test-op_count_0],jumpi,0,7805611,165554848,29.824 +test_marginal_opcodes.py::test_jumpi[fork_Prague-blockchain_test_from_state_test-op_count_1005000],jumpi,1005000,17855611,282137245,50.968 +test_marginal_opcodes.py::test_jumpi[fork_Prague-blockchain_test_from_state_test-op_count_335000],jumpi,335000,11155611,204413169,37.874 +test_marginal_opcodes.py::test_jumpi[fork_Prague-blockchain_test_from_state_test-op_count_670000],jumpi,670000,14505611,243275988,44.418 +test_marginal_opcodes.py::test_keccak256[fork_Prague-blockchain_test_from_state_test-op_count_0],keccak256,0,930611,33755857,11.602 +test_marginal_opcodes.py::test_keccak256[fork_Prague-blockchain_test_from_state_test-op_count_16000],keccak256,16000,25986611,479165020,184.269 +test_marginal_opcodes.py::test_keccak256[fork_Prague-blockchain_test_from_state_test-op_count_24000],keccak256,24000,38514611,701869291,260.758 +test_marginal_opcodes.py::test_keccak256[fork_Prague-blockchain_test_from_state_test-op_count_8000],keccak256,8000,13458611,256461006,94.907 +test_marginal_opcodes.py::test_log0[fork_Prague-blockchain_test_from_state_test-op_count_0],log0,0,957611,21963764,11.096 +test_marginal_opcodes.py::test_log0[fork_Prague-blockchain_test_from_state_test-op_count_120000],log0,120000,45957611,46485358,16.663 +test_marginal_opcodes.py::test_log0[fork_Prague-blockchain_test_from_state_test-op_count_24000],log0,24000,9957611,27105263,11.11 +test_marginal_opcodes.py::test_log0[fork_Prague-blockchain_test_from_state_test-op_count_48000],log0,48000,18957611,32367743,12.622 +test_marginal_opcodes.py::test_log0[fork_Prague-blockchain_test_from_state_test-op_count_72000],log0,72000,27957611,38564302,15.149 +test_marginal_opcodes.py::test_log0[fork_Prague-blockchain_test_from_state_test-op_count_96000],log0,96000,36957611,42524403,16.64 +test_marginal_opcodes.py::test_log1[fork_Prague-blockchain_test_from_state_test-op_count_0],log1,0,934611,20427984,9.577 +test_marginal_opcodes.py::test_log1[fork_Prague-blockchain_test_from_state_test-op_count_27000],log1,27000,28120611,35525638,13.147 +test_marginal_opcodes.py::test_log1[fork_Prague-blockchain_test_from_state_test-op_count_54000],log1,54000,55282611,50392605,17.133 +test_marginal_opcodes.py::test_log1[fork_Prague-blockchain_test_from_state_test-op_count_81000],log1,81000,82444611,66442856,20.701 +test_marginal_opcodes.py::test_log2[fork_Prague-blockchain_test_from_state_test-op_count_0],log2,0,661611,14461939,9.583 +test_marginal_opcodes.py::test_log2[fork_Prague-blockchain_test_from_state_test-op_count_14000],log2,14000,45003111,28076413,11.598 +test_marginal_opcodes.py::test_log2[fork_Prague-blockchain_test_from_state_test-op_count_28000],log2,28000,89313111,41477130,16.668 +test_marginal_opcodes.py::test_log2[fork_Prague-blockchain_test_from_state_test-op_count_42000],log2,42000,133623111,55466713,19.666 +test_marginal_opcodes.py::test_log3[fork_Prague-blockchain_test_from_state_test-op_count_0],log3,0,693111,14948295,9.6 +test_marginal_opcodes.py::test_log3[fork_Prague-blockchain_test_from_state_test-op_count_11900],log3,11900,42850611,28296309,12.11 +test_marginal_opcodes.py::test_log3[fork_Prague-blockchain_test_from_state_test-op_count_23800],log3,23800,84976611,41284717,15.128 +test_marginal_opcodes.py::test_log3[fork_Prague-blockchain_test_from_state_test-op_count_35700],log3,35700,127102611,55007279,18.185 +test_marginal_opcodes.py::test_log4[fork_Prague-blockchain_test_from_state_test-op_count_0],log4,0,649011,14307046,9.076 +test_marginal_opcodes.py::test_log4[fork_Prague-blockchain_test_from_state_test-op_count_18200],log4,18200,71933511,37052623,14.667 +test_marginal_opcodes.py::test_log4[fork_Prague-blockchain_test_from_state_test-op_count_27300],log4,27300,107560011,47815613,17.168 +test_marginal_opcodes.py::test_log4[fork_Prague-blockchain_test_from_state_test-op_count_9100],log4,9100,36307011,25840501,11.097 +test_marginal_opcodes.py::test_lt[fork_Prague-blockchain_test_from_state_test-op_count_0],lt,0,6335611,218399451,40.396 +test_marginal_opcodes.py::test_lt[fork_Prague-blockchain_test_from_state_test-op_count_200000],lt,200000,6935611,234800488,42.888 +test_marginal_opcodes.py::test_lt[fork_Prague-blockchain_test_from_state_test-op_count_400000],lt,400000,7535611,251201293,45.445 +test_marginal_opcodes.py::test_lt[fork_Prague-blockchain_test_from_state_test-op_count_600000],lt,600000,8135611,267656406,47.441 +test_marginal_opcodes.py::test_marginal_call[fork_Prague-blockchain_test_from_state_test-op_count_0],call,0,1208611,25362457,11.098 +test_marginal_opcodes.py::test_marginal_call[fork_Prague-blockchain_test_from_state_test-op_count_16500],call,16500,2861111,139498711,26.259 +test_marginal_opcodes.py::test_marginal_call[fork_Prague-blockchain_test_from_state_test-op_count_33000],call,33000,4511111,252723347,44.497 +test_marginal_opcodes.py::test_marginal_call[fork_Prague-blockchain_test_from_state_test-op_count_49500],call,49500,6161111,366392108,56.029 +test_marginal_opcodes.py::test_marginal_callcode[fork_Prague-blockchain_test_from_state_test-op_count_0],callcode,0,1208611,25254270,11.133 +test_marginal_opcodes.py::test_marginal_callcode[fork_Prague-blockchain_test_from_state_test-op_count_16500],callcode,16500,2861111,136198265,25.725 +test_marginal_opcodes.py::test_marginal_callcode[fork_Prague-blockchain_test_from_state_test-op_count_33000],callcode,33000,4511111,246238887,42.391 +test_marginal_opcodes.py::test_marginal_callcode[fork_Prague-blockchain_test_from_state_test-op_count_49500],callcode,49500,6161111,356722458,56.542 +test_marginal_opcodes.py::test_marginal_create2[fork_Prague-blockchain_test_from_state_test-op_count_0],create2,0,200711,4554044,8.069 +test_marginal_opcodes.py::test_marginal_create2[fork_Prague-blockchain_test_from_state_test-op_count_1400],create2,1400,45028711,41328057,15.125 +test_marginal_opcodes.py::test_marginal_create2[fork_Prague-blockchain_test_from_state_test-op_count_2800],create2,2800,89856711,78154047,21.705 +test_marginal_opcodes.py::test_marginal_create2[fork_Prague-blockchain_test_from_state_test-op_count_4200],create2,4200,134684711,117657462,28.259 +test_marginal_opcodes.py::test_marginal_create[fork_Prague-blockchain_test_from_state_test-op_count_0],create,0,123811,3249183,7.072 +test_marginal_opcodes.py::test_marginal_create[fork_Prague-blockchain_test_from_state_test-op_count_1400],create,1400,44935011,38358188,13.631 +test_marginal_opcodes.py::test_marginal_create[fork_Prague-blockchain_test_from_state_test-op_count_2800],create,2800,89746211,73639709,20.737 +test_marginal_opcodes.py::test_marginal_create[fork_Prague-blockchain_test_from_state_test-op_count_4200],create,4200,134557411,111696632,27.246 +test_marginal_opcodes.py::test_marginal_delegatecall[fork_Prague-blockchain_test_from_state_test-op_count_0],delegatecall,0,1058611,22428506,11.619 +test_marginal_opcodes.py::test_marginal_delegatecall[fork_Prague-blockchain_test_from_state_test-op_count_16500],delegatecall,16500,2711111,115681979,24.266 +test_marginal_opcodes.py::test_marginal_delegatecall[fork_Prague-blockchain_test_from_state_test-op_count_33000],delegatecall,33000,4361111,208896612,36.83 +test_marginal_opcodes.py::test_marginal_delegatecall[fork_Prague-blockchain_test_from_state_test-op_count_49500],delegatecall,49500,6011111,302121319,48.978 +test_marginal_opcodes.py::test_marginal_staticcall[fork_Prague-blockchain_test_from_state_test-op_count_0],staticcall,0,1058611,22956836,11.102 +test_marginal_opcodes.py::test_marginal_staticcall[fork_Prague-blockchain_test_from_state_test-op_count_16500],staticcall,16500,2711111,133261999,26.249 +test_marginal_opcodes.py::test_marginal_staticcall[fork_Prague-blockchain_test_from_state_test-op_count_33000],staticcall,33000,4361111,243520694,40.885 +test_marginal_opcodes.py::test_marginal_staticcall[fork_Prague-blockchain_test_from_state_test-op_count_49500],staticcall,49500,6011111,353790851,55.601 +test_marginal_opcodes.py::test_mcopy[fork_Prague-blockchain_test_from_state_test-op_count_0],mcopy,0,642011,12180088,9.074 +test_marginal_opcodes.py::test_mcopy[fork_Prague-blockchain_test_from_state_test-op_count_20000],mcopy,20000,2644211,41658820,14.131 +test_marginal_opcodes.py::test_mcopy[fork_Prague-blockchain_test_from_state_test-op_count_40000],mcopy,40000,4624211,71044942,17.678 +test_marginal_opcodes.py::test_mcopy[fork_Prague-blockchain_test_from_state_test-op_count_60000],mcopy,60000,6604211,100426617,21.72 +test_marginal_opcodes.py::test_mload[fork_Prague-blockchain_test_from_state_test-op_count_0],mload,0,6371611,161427395,31.804 +test_marginal_opcodes.py::test_mload[fork_Prague-blockchain_test_from_state_test-op_count_1002000],mload,1002000,9377611,323757292,50.983 +test_marginal_opcodes.py::test_mload[fork_Prague-blockchain_test_from_state_test-op_count_334000],mload,334000,7373611,215535981,35.319 +test_marginal_opcodes.py::test_mload[fork_Prague-blockchain_test_from_state_test-op_count_668000],mload,668000,8375611,269700804,43.413 +test_marginal_opcodes.py::test_mod[fork_Prague-blockchain_test_from_state_test-op_count_0],mod,0,2247111,77077162,19.17 +test_marginal_opcodes.py::test_mod[fork_Prague-blockchain_test_from_state_test-op_count_140000],mod,140000,2947111,255859485,41.907 +test_marginal_opcodes.py::test_mod[fork_Prague-blockchain_test_from_state_test-op_count_210000],mod,210000,3297111,345269919,52.49 +test_marginal_opcodes.py::test_mod[fork_Prague-blockchain_test_from_state_test-op_count_70000],mod,70000,2597111,166468274,30.327 +test_marginal_opcodes.py::test_msize[fork_Prague-blockchain_test_from_state_test-op_count_0],msize,0,5159611,121376767,26.751 +test_marginal_opcodes.py::test_msize[fork_Prague-blockchain_test_from_state_test-op_count_1200000],msize,1200000,7559611,193384132,36.347 +test_marginal_opcodes.py::test_msize[fork_Prague-blockchain_test_from_state_test-op_count_300000],msize,300000,5759611,139378896,29.266 +test_marginal_opcodes.py::test_msize[fork_Prague-blockchain_test_from_state_test-op_count_600000],msize,600000,6359611,157381211,30.802 +test_marginal_opcodes.py::test_msize[fork_Prague-blockchain_test_from_state_test-op_count_900000],msize,900000,6959611,175382505,33.862 +test_marginal_opcodes.py::test_mstore8[fork_Prague-blockchain_test_from_state_test-op_count_0],mstore8,0,5369611,120184324,26.753 +test_marginal_opcodes.py::test_mstore8[fork_Prague-blockchain_test_from_state_test-op_count_1002000],mstore8,1002000,8375611,198346244,36.318 +test_marginal_opcodes.py::test_mstore8[fork_Prague-blockchain_test_from_state_test-op_count_334000],mstore8,334000,6371611,146252292,28.783 +test_marginal_opcodes.py::test_mstore8[fork_Prague-blockchain_test_from_state_test-op_count_668000],mstore8,668000,7373611,172344341,33.788 +test_marginal_opcodes.py::test_mstore[fork_Prague-blockchain_test_from_state_test-op_count_0],mstore,0,2707611,100199555,22.189 +test_marginal_opcodes.py::test_mstore[fork_Prague-blockchain_test_from_state_test-op_count_167000],mstore,167000,3208611,131588144,27.801 +test_marginal_opcodes.py::test_mstore[fork_Prague-blockchain_test_from_state_test-op_count_334000],mstore,334000,3709611,163063581,32.823 +test_marginal_opcodes.py::test_mstore[fork_Prague-blockchain_test_from_state_test-op_count_501000],mstore,501000,4210611,194412769,36.828 +test_marginal_opcodes.py::test_mul[fork_Prague-blockchain_test_from_state_test-op_count_0],mul,0,6335611,218399287,39.878 +test_marginal_opcodes.py::test_mul[fork_Prague-blockchain_test_from_state_test-op_count_200000],mul,200000,7335611,279000081,45.455 +test_marginal_opcodes.py::test_mul[fork_Prague-blockchain_test_from_state_test-op_count_400000],mul,400000,8335611,339601281,55.07 +test_marginal_opcodes.py::test_mul[fork_Prague-blockchain_test_from_state_test-op_count_600000],mul,600000,9335611,400256656,61.123 +test_marginal_opcodes.py::test_mulmod[fork_Prague-blockchain_test_from_state_test-op_count_0],mulmod,0,2920611,105611290,24.232 +test_marginal_opcodes.py::test_mulmod[fork_Prague-blockchain_test_from_state_test-op_count_140000],mulmod,140000,4040611,578533255,82.8 +test_marginal_opcodes.py::test_mulmod[fork_Prague-blockchain_test_from_state_test-op_count_210000],mulmod,210000,4600611,814995628,112.628 +test_marginal_opcodes.py::test_mulmod[fork_Prague-blockchain_test_from_state_test-op_count_70000],mulmod,70000,3480611,342074217,52.984 +test_marginal_opcodes.py::test_not[fork_Prague-blockchain_test_from_state_test-op_count_0],not,0,6635611,206973924,37.375 +test_marginal_opcodes.py::test_not[fork_Prague-blockchain_test_from_state_test-op_count_180000],not,180000,7175611,216877403,38.369 +test_marginal_opcodes.py::test_not[fork_Prague-blockchain_test_from_state_test-op_count_360000],not,360000,7715611,226776358,38.373 +test_marginal_opcodes.py::test_not[fork_Prague-blockchain_test_from_state_test-op_count_540000],not,540000,8255611,236679598,39.444 +test_marginal_opcodes.py::test_not[fork_Prague-blockchain_test_from_state_test-op_count_720000],not,720000,8795611,246577705,41.467 +test_marginal_opcodes.py::test_not[fork_Prague-blockchain_test_from_state_test-op_count_900000],not,900000,9335611,256481833,42.43 +test_marginal_opcodes.py::test_number[fork_Prague-blockchain_test_from_state_test-op_count_0],number,0,5135611,120498553,25.264 +test_marginal_opcodes.py::test_number[fork_Prague-blockchain_test_from_state_test-op_count_1200000],number,1200000,7535611,198506894,36.851 +test_marginal_opcodes.py::test_number[fork_Prague-blockchain_test_from_state_test-op_count_400000],number,400000,5935611,146555505,30.326 +test_marginal_opcodes.py::test_number[fork_Prague-blockchain_test_from_state_test-op_count_800000],number,800000,6735611,172504304,32.818 +test_marginal_opcodes.py::test_or[fork_Prague-blockchain_test_from_state_test-op_count_0],or,0,9480611,327108222,57.537 +test_marginal_opcodes.py::test_or[fork_Prague-blockchain_test_from_state_test-op_count_180000],or,180000,10020611,340068788,61.175 +test_marginal_opcodes.py::test_or[fork_Prague-blockchain_test_from_state_test-op_count_360000],or,360000,10560611,353029626,59.576 +test_marginal_opcodes.py::test_or[fork_Prague-blockchain_test_from_state_test-op_count_540000],or,540000,11100611,365990433,62.565 +test_marginal_opcodes.py::test_or[fork_Prague-blockchain_test_from_state_test-op_count_720000],or,720000,11640611,378951026,64.118 +test_marginal_opcodes.py::test_or[fork_Prague-blockchain_test_from_state_test-op_count_900000],or,900000,12180611,391992349,66.604 +test_marginal_opcodes.py::test_origin[fork_Prague-blockchain_test_from_state_test-op_count_0],origin,0,5135611,120499188,24.735 +test_marginal_opcodes.py::test_origin[fork_Prague-blockchain_test_from_state_test-op_count_1200000],origin,1200000,7535611,259706612,44.477 +test_marginal_opcodes.py::test_origin[fork_Prague-blockchain_test_from_state_test-op_count_400000],origin,400000,5935611,166955864,29.273 +test_marginal_opcodes.py::test_origin[fork_Prague-blockchain_test_from_state_test-op_count_800000],origin,800000,6735611,213304514,34.837 +test_marginal_opcodes.py::test_pc[fork_Prague-blockchain_test_from_state_test-op_count_0],pc,0,5135611,120499137,23.739 +test_marginal_opcodes.py::test_pc[fork_Prague-blockchain_test_from_state_test-op_count_1200000],pc,1200000,7535611,197306746,35.841 +test_marginal_opcodes.py::test_pc[fork_Prague-blockchain_test_from_state_test-op_count_400000],pc,400000,5935611,146155890,26.218 +test_marginal_opcodes.py::test_pc[fork_Prague-blockchain_test_from_state_test-op_count_800000],pc,800000,6735611,171704378,33.337 +test_marginal_opcodes.py::test_pop[fork_Prague-blockchain_test_from_state_test-op_count_0],pop,0,4080611,126300565,27.757 +test_marginal_opcodes.py::test_pop[fork_Prague-blockchain_test_from_state_test-op_count_1080000],pop,1080000,6240611,158705645,30.792 +test_marginal_opcodes.py::test_pop[fork_Prague-blockchain_test_from_state_test-op_count_1440000],pop,1440000,6960611,169506839,29.297 +test_marginal_opcodes.py::test_pop[fork_Prague-blockchain_test_from_state_test-op_count_1800000],pop,1800000,7680611,180307995,31.788 +test_marginal_opcodes.py::test_pop[fork_Prague-blockchain_test_from_state_test-op_count_360000],pop,360000,4800611,137102997,28.301 +test_marginal_opcodes.py::test_pop[fork_Prague-blockchain_test_from_state_test-op_count_720000],pop,720000,5520611,147904540,29.84 +test_marginal_opcodes.py::test_prevrandao[fork_Prague-blockchain_test_from_state_test-op_count_0],prevrandao,0,3863111,90594483,19.667 +test_marginal_opcodes.py::test_prevrandao[fork_Prague-blockchain_test_from_state_test-op_count_300000],prevrandao,300000,4463111,137737563,26.235 +test_marginal_opcodes.py::test_prevrandao[fork_Prague-blockchain_test_from_state_test-op_count_600000],prevrandao,600000,5063111,184799607,33.861 +test_marginal_opcodes.py::test_prevrandao[fork_Prague-blockchain_test_from_state_test-op_count_900000],prevrandao,900000,5663111,231902154,38.341 +test_marginal_opcodes.py::test_push0[fork_Prague-blockchain_test_from_state_test-op_count_0],push0,0,5135611,120498688,25.236 +test_marginal_opcodes.py::test_push0[fork_Prague-blockchain_test_from_state_test-op_count_1200000],push0,1200000,7535611,188906121,36.336 +test_marginal_opcodes.py::test_push0[fork_Prague-blockchain_test_from_state_test-op_count_400000],push0,400000,5935611,143355863,26.265 +test_marginal_opcodes.py::test_push0[fork_Prague-blockchain_test_from_state_test-op_count_800000],push0,800000,6735611,166104139,32.319 +test_marginal_opcodes.py::test_push16[fork_Prague-blockchain_test_from_state_test-op_count_0],push16,0,4343611,103268986,21.719 +test_marginal_opcodes.py::test_push16[fork_Prague-blockchain_test_from_state_test-op_count_1002000],push16,1002000,7349611,188488780,32.828 +test_marginal_opcodes.py::test_push16[fork_Prague-blockchain_test_from_state_test-op_count_334000],push16,334000,5345611,131676450,25.743 +test_marginal_opcodes.py::test_push16[fork_Prague-blockchain_test_from_state_test-op_count_668000],push16,668000,6347611,160136988,29.771 +test_marginal_opcodes.py::test_push1[fork_Prague-blockchain_test_from_state_test-op_count_0],push1,0,5135611,120499065,24.735 +test_marginal_opcodes.py::test_push1[fork_Prague-blockchain_test_from_state_test-op_count_1200000],push1,1200000,8735611,175710571,33.325 +test_marginal_opcodes.py::test_push1[fork_Prague-blockchain_test_from_state_test-op_count_240000],push1,240000,5855611,131541966,25.236 +test_marginal_opcodes.py::test_push1[fork_Prague-blockchain_test_from_state_test-op_count_480000],push1,480000,6575611,142584158,28.281 +test_marginal_opcodes.py::test_push1[fork_Prague-blockchain_test_from_state_test-op_count_720000],push1,720000,7295611,153625556,30.309 +test_marginal_opcodes.py::test_push1[fork_Prague-blockchain_test_from_state_test-op_count_960000],push1,960000,8015611,164667919,33.306 +test_marginal_opcodes.py::test_push32[fork_Prague-blockchain_test_from_state_test-op_count_0],push32,0,2363111,57963867,16.143 +test_marginal_opcodes.py::test_push32[fork_Prague-blockchain_test_from_state_test-op_count_105000],push32,105000,2678111,71100049,17.685 +test_marginal_opcodes.py::test_push32[fork_Prague-blockchain_test_from_state_test-op_count_210000],push32,210000,2993111,84238868,18.167 +test_marginal_opcodes.py::test_push32[fork_Prague-blockchain_test_from_state_test-op_count_315000],push32,315000,3308111,97374675,20.693 +test_marginal_opcodes.py::test_push32[fork_Prague-blockchain_test_from_state_test-op_count_420000],push32,420000,3623111,110513498,24.228 +test_marginal_opcodes.py::test_push32[fork_Prague-blockchain_test_from_state_test-op_count_525000],push32,525000,3938111,123649737,28.302 +test_marginal_opcodes.py::test_returndatacopy[fork_Prague-blockchain_test_from_state_test-op_count_0],returndatacopy,0,1674611,36697690,12.112 +test_marginal_opcodes.py::test_returndatacopy[fork_Prague-blockchain_test_from_state_test-op_count_120000],returndatacopy,120000,2758211,65356609,16.639 +test_marginal_opcodes.py::test_returndatacopy[fork_Prague-blockchain_test_from_state_test-op_count_180000],returndatacopy,180000,3298211,79637301,19.187 +test_marginal_opcodes.py::test_returndatacopy[fork_Prague-blockchain_test_from_state_test-op_count_60000],returndatacopy,60000,2218211,51074730,15.132 +test_marginal_opcodes.py::test_returndatasize[fork_Prague-blockchain_test_from_state_test-op_count_0],returndatasize,0,5135611,120498579,24.265 +test_marginal_opcodes.py::test_returndatasize[fork_Prague-blockchain_test_from_state_test-op_count_1200000],returndatasize,1200000,7535611,192506180,35.814 +test_marginal_opcodes.py::test_returndatasize[fork_Prague-blockchain_test_from_state_test-op_count_400000],returndatasize,400000,5935611,144555995,28.796 +test_marginal_opcodes.py::test_returndatasize[fork_Prague-blockchain_test_from_state_test-op_count_800000],returndatasize,800000,6735611,168504298,31.777 +test_marginal_opcodes.py::test_sar[fork_Prague-blockchain_test_from_state_test-op_count_0],sar,0,4763111,128447158,26.22 +test_marginal_opcodes.py::test_sar[fork_Prague-blockchain_test_from_state_test-op_count_150000],sar,150000,5213111,163698393,29.276 +test_marginal_opcodes.py::test_sar[fork_Prague-blockchain_test_from_state_test-op_count_300000],sar,300000,5663111,198948623,35.341 +test_marginal_opcodes.py::test_sar[fork_Prague-blockchain_test_from_state_test-op_count_450000],sar,450000,6113111,234200489,38.891 +test_marginal_opcodes.py::test_sdiv[fork_Prague-blockchain_test_from_state_test-op_count_0],sdiv,0,2247111,77077480,18.661 +test_marginal_opcodes.py::test_sdiv[fork_Prague-blockchain_test_from_state_test-op_count_140000],sdiv,140000,2947111,259359913,43.435 +test_marginal_opcodes.py::test_sdiv[fork_Prague-blockchain_test_from_state_test-op_count_210000],sdiv,210000,3297111,350520174,52.493 +test_marginal_opcodes.py::test_sdiv[fork_Prague-blockchain_test_from_state_test-op_count_70000],sdiv,70000,2597111,168218509,30.796 +test_marginal_opcodes.py::test_selfbalance[fork_Prague-blockchain_test_from_state_test-op_count_0],selfbalance,0,2590611,60689537,16.163 +test_marginal_opcodes.py::test_selfbalance[fork_Prague-blockchain_test_from_state_test-op_count_200000],selfbalance,200000,3590611,294719307,46.442 +test_marginal_opcodes.py::test_selfbalance[fork_Prague-blockchain_test_from_state_test-op_count_400000],selfbalance,400000,4590611,528694977,81.375 +test_marginal_opcodes.py::test_selfbalance[fork_Prague-blockchain_test_from_state_test-op_count_600000],selfbalance,600000,5590611,762697588,108.631 +test_marginal_opcodes.py::test_sgt[fork_Prague-blockchain_test_from_state_test-op_count_0],sgt,0,9480611,327108284,56.463 +test_marginal_opcodes.py::test_sgt[fork_Prague-blockchain_test_from_state_test-op_count_180000],sgt,180000,10020611,347628347,60.077 +test_marginal_opcodes.py::test_sgt[fork_Prague-blockchain_test_from_state_test-op_count_360000],sgt,360000,10560611,368149358,64.095 +test_marginal_opcodes.py::test_sgt[fork_Prague-blockchain_test_from_state_test-op_count_540000],sgt,540000,11100611,388670638,64.12 +test_marginal_opcodes.py::test_sgt[fork_Prague-blockchain_test_from_state_test-op_count_720000],sgt,720000,11640611,409190754,67.13 +test_marginal_opcodes.py::test_sgt[fork_Prague-blockchain_test_from_state_test-op_count_900000],sgt,900000,12180611,429792758,65.635 +test_marginal_opcodes.py::test_shl[fork_Prague-blockchain_test_from_state_test-op_count_0],shl,0,4763111,128446383,25.762 +test_marginal_opcodes.py::test_shl[fork_Prague-blockchain_test_from_state_test-op_count_150000],shl,150000,5213111,151098237,28.298 +test_marginal_opcodes.py::test_shl[fork_Prague-blockchain_test_from_state_test-op_count_300000],shl,300000,5663111,173748829,30.749 +test_marginal_opcodes.py::test_shl[fork_Prague-blockchain_test_from_state_test-op_count_450000],shl,450000,6113111,196400109,34.334 +test_marginal_opcodes.py::test_shr[fork_Prague-blockchain_test_from_state_test-op_count_0],shr,0,6335611,170950732,29.811 +test_marginal_opcodes.py::test_shr[fork_Prague-blockchain_test_from_state_test-op_count_200000],shr,200000,6935611,201752311,34.304 +test_marginal_opcodes.py::test_shr[fork_Prague-blockchain_test_from_state_test-op_count_400000],shr,400000,7535611,232553051,38.873 +test_marginal_opcodes.py::test_shr[fork_Prague-blockchain_test_from_state_test-op_count_600000],shr,600000,8135611,263355025,42.461 +test_marginal_opcodes.py::test_signextend[fork_Prague-blockchain_test_from_state_test-op_count_0],signextend,0,15770611,320934097,57.121 +test_marginal_opcodes.py::test_signextend[fork_Prague-blockchain_test_from_state_test-op_count_1000000],signextend,1000000,20770611,587937626,84.341 +test_marginal_opcodes.py::test_signextend[fork_Prague-blockchain_test_from_state_test-op_count_1500000],signextend,1500000,23270611,721573681,100.983 +test_marginal_opcodes.py::test_signextend[fork_Prague-blockchain_test_from_state_test-op_count_500000],signextend,500000,18270611,454436297,68.149 +test_marginal_opcodes.py::test_sload[fork_Prague-blockchain_test_from_state_test-op_count_0],sload,0,1933611,45579749,13.63 +test_marginal_opcodes.py::test_sload[fork_Prague-blockchain_test_from_state_test-op_count_132000],sload,132000,15133611,243633256,39.866 +test_marginal_opcodes.py::test_sload[fork_Prague-blockchain_test_from_state_test-op_count_198000],sload,198000,21733611,342582271,55.572 +test_marginal_opcodes.py::test_sload[fork_Prague-blockchain_test_from_state_test-op_count_66000],sload,66000,8533611,144581319,26.79 +test_marginal_opcodes.py::test_slt[fork_Prague-blockchain_test_from_state_test-op_count_0],slt,0,22060611,761944653,120.151 +test_marginal_opcodes.py::test_slt[fork_Prague-blockchain_test_from_state_test-op_count_1260000],slt,1260000,25840611,905586244,139.362 +test_marginal_opcodes.py::test_slt[fork_Prague-blockchain_test_from_state_test-op_count_1680000],slt,1680000,27100611,953467082,147.439 +test_marginal_opcodes.py::test_slt[fork_Prague-blockchain_test_from_state_test-op_count_2100000],slt,2100000,28360611,1001536992,142.008 +test_marginal_opcodes.py::test_slt[fork_Prague-blockchain_test_from_state_test-op_count_420000],slt,420000,23320611,809824404,129.19 +test_marginal_opcodes.py::test_slt[fork_Prague-blockchain_test_from_state_test-op_count_840000],slt,840000,24580611,857705866,136.305 +test_marginal_opcodes.py::test_smod[fork_Prague-blockchain_test_from_state_test-op_count_0],smod,0,6335611,218399446,39.372 +test_marginal_opcodes.py::test_smod[fork_Prague-blockchain_test_from_state_test-op_count_200000],smod,200000,7335611,298000064,47.47 +test_marginal_opcodes.py::test_smod[fork_Prague-blockchain_test_from_state_test-op_count_400000],smod,400000,8335611,377601450,58.065 +test_marginal_opcodes.py::test_smod[fork_Prague-blockchain_test_from_state_test-op_count_600000],smod,600000,9335611,457256662,68.209 +test_marginal_opcodes.py::test_sstore[fork_Prague-blockchain_test_from_state_test-op_count_0],sstore,0,718411,22672357,11.099 +test_marginal_opcodes.py::test_sstore[fork_Prague-blockchain_test_from_state_test-op_count_20400],sstore,20400,2778311,94077171,20.202 +test_marginal_opcodes.py::test_sstore[fork_Prague-blockchain_test_from_state_test-op_count_40800],sstore,40800,4818311,165476768,29.79 +test_marginal_opcodes.py::test_sstore[fork_Prague-blockchain_test_from_state_test-op_count_61200],sstore,61200,6858311,236875454,39.365 +test_marginal_opcodes.py::test_sub[fork_Prague-blockchain_test_from_state_test-op_count_0],sub,0,15770611,544526419,93.486 +test_marginal_opcodes.py::test_sub[fork_Prague-blockchain_test_from_state_test-op_count_1200000],sub,1200000,19370611,678929260,105.522 +test_marginal_opcodes.py::test_sub[fork_Prague-blockchain_test_from_state_test-op_count_1500000],sub,1500000,20270611,712665219,101.93 +test_marginal_opcodes.py::test_sub[fork_Prague-blockchain_test_from_state_test-op_count_300000],sub,300000,16670611,578126620,93.386 +test_marginal_opcodes.py::test_sub[fork_Prague-blockchain_test_from_state_test-op_count_600000],sub,600000,17570611,611727603,98.475 +test_marginal_opcodes.py::test_sub[fork_Prague-blockchain_test_from_state_test-op_count_900000],sub,900000,18470611,645328291,101.465 +test_marginal_opcodes.py::test_swap16[fork_Prague-blockchain_test_from_state_test-op_count_0],swap16,0,275611,9768258,7.563 +test_marginal_opcodes.py::test_swap16[fork_Prague-blockchain_test_from_state_test-op_count_100000],swap16,100000,575611,25769333,11.621 +test_marginal_opcodes.py::test_swap16[fork_Prague-blockchain_test_from_state_test-op_count_200000],swap16,200000,875611,41770605,13.641 +test_marginal_opcodes.py::test_swap16[fork_Prague-blockchain_test_from_state_test-op_count_300000],swap16,300000,1175611,57772381,17.679 +test_marginal_opcodes.py::test_swap1[fork_Prague-blockchain_test_from_state_test-op_count_0],swap1,0,200611,8626162,8.57 +test_marginal_opcodes.py::test_swap1[fork_Prague-blockchain_test_from_state_test-op_count_120000],swap1,120000,560611,27827991,11.099 +test_marginal_opcodes.py::test_swap1[fork_Prague-blockchain_test_from_state_test-op_count_180000],swap1,180000,740611,37427364,12.616 +test_marginal_opcodes.py::test_swap1[fork_Prague-blockchain_test_from_state_test-op_count_240000],swap1,240000,920611,47028668,15.147 +test_marginal_opcodes.py::test_swap1[fork_Prague-blockchain_test_from_state_test-op_count_300000],swap1,300000,1100611,56683434,17.18 +test_marginal_opcodes.py::test_swap1[fork_Prague-blockchain_test_from_state_test-op_count_60000],swap1,60000,380611,18253985,10.082 +test_marginal_opcodes.py::test_swap8[fork_Prague-blockchain_test_from_state_test-op_count_0],swap8,0,235611,9159839,8.578 +test_marginal_opcodes.py::test_swap8[fork_Prague-blockchain_test_from_state_test-op_count_100000],swap8,100000,535611,25161293,11.097 +test_marginal_opcodes.py::test_swap8[fork_Prague-blockchain_test_from_state_test-op_count_200000],swap8,200000,835611,41189234,13.628 +test_marginal_opcodes.py::test_swap8[fork_Prague-blockchain_test_from_state_test-op_count_300000],swap8,300000,1135611,57191415,17.669 +test_marginal_opcodes.py::test_timestamp[fork_Prague-blockchain_test_from_state_test-op_count_0],timestamp,0,5135611,120498958,26.308 +test_marginal_opcodes.py::test_timestamp[fork_Prague-blockchain_test_from_state_test-op_count_1200000],timestamp,1200000,7535611,198506116,36.342 +test_marginal_opcodes.py::test_timestamp[fork_Prague-blockchain_test_from_state_test-op_count_400000],timestamp,400000,5935611,146556162,29.305 +test_marginal_opcodes.py::test_timestamp[fork_Prague-blockchain_test_from_state_test-op_count_800000],timestamp,800000,6735611,172504303,33.831 +test_marginal_opcodes.py::test_tload[fork_Prague-blockchain_test_from_state_test-op_count_0],tload,0,9770611,254921878,48.001 +test_marginal_opcodes.py::test_tload[fork_Prague-blockchain_test_from_state_test-op_count_1000000],tload,1000000,109770611,499690565,82.257 +test_marginal_opcodes.py::test_tload[fork_Prague-blockchain_test_from_state_test-op_count_1500000],tload,1500000,159770611,619426017,99.452 +test_marginal_opcodes.py::test_tload[fork_Prague-blockchain_test_from_state_test-op_count_500000],tload,500000,59770611,376423803,63.148 +test_marginal_opcodes.py::test_tstore[fork_Prague-blockchain_test_from_state_test-op_count_0],tstore,0,1331611,52696934,15.638 +test_marginal_opcodes.py::test_tstore[fork_Prague-blockchain_test_from_state_test-op_count_132000],tstore,132000,14531611,262654110,43.418 +test_marginal_opcodes.py::test_tstore[fork_Prague-blockchain_test_from_state_test-op_count_198000],tstore,198000,21131611,367663625,56.511 +test_marginal_opcodes.py::test_tstore[fork_Prague-blockchain_test_from_state_test-op_count_66000],tstore,66000,7931611,157851872,28.76 +test_marginal_opcodes.py::test_xor[fork_Prague-blockchain_test_from_state_test-op_count_0],xor,0,15770611,544526509,85.81 +test_marginal_opcodes.py::test_xor[fork_Prague-blockchain_test_from_state_test-op_count_1000000],xor,1000000,18770611,616529147,100.499 +test_marginal_opcodes.py::test_xor[fork_Prague-blockchain_test_from_state_test-op_count_1500000],xor,1500000,20270611,652664871,109.068 +test_marginal_opcodes.py::test_xor[fork_Prague-blockchain_test_from_state_test-op_count_500000],xor,500000,17270611,580527847,96.578 +test_marginal_precompiles.py::test_marginal_blake2f[fork_Prague-blockchain_test_from_state_test-op_count_0],blake2f,0,49270,956693,6.569 +test_marginal_precompiles.py::test_marginal_blake2f[fork_Prague-blockchain_test_from_state_test-op_count_10],blake2f,10,704620,392214720,60.045 +test_marginal_precompiles.py::test_marginal_blake2f[fork_Prague-blockchain_test_from_state_test-op_count_5],blake2f,5,376945,196587333,34.315 +test_marginal_precompiles.py::test_marginal_bls12_g1add[fork_Prague-blockchain_test_from_state_test-op_count_0],bls12_g1add,0,140852,5646418,8.072 +test_marginal_precompiles.py::test_marginal_bls12_g1add[fork_Prague-blockchain_test_from_state_test-op_count_257],bls12_g1add,257,237227,84362700,19.169 +test_marginal_precompiles.py::test_marginal_bls12_g1add[fork_Prague-blockchain_test_from_state_test-op_count_514],bls12_g1add,514,333602,163043851,30.31 +test_marginal_precompiles.py::test_marginal_bls12_g1add[fork_Prague-blockchain_test_from_state_test-op_count_771],bls12_g1add,771,429977,241742874,40.399 +test_marginal_precompiles.py::test_marginal_bls12_g1msm[fork_Prague-blockchain_test_from_state_test-op_count_0],bls12_g1msm,0,54036,1105423,6.548 +test_marginal_precompiles.py::test_marginal_bls12_g1msm[fork_Prague-blockchain_test_from_state_test-op_count_13],bls12_g1msm,13,350124,111134594,24.229 +test_marginal_precompiles.py::test_marginal_bls12_g1msm[fork_Prague-blockchain_test_from_state_test-op_count_26],bls12_g1msm,26,646212,221157621,38.403 +test_marginal_precompiles.py::test_marginal_bls12_g1msm[fork_Prague-blockchain_test_from_state_test-op_count_39],bls12_g1msm,39,942300,331183342,53.066 +test_marginal_precompiles.py::test_marginal_bls12_g2add[fork_Prague-blockchain_test_from_state_test-op_count_0],bls12_g2add,0,106041,3665459,7.572 +test_marginal_precompiles.py::test_marginal_bls12_g2add[fork_Prague-blockchain_test_from_state_test-op_count_150],bls12_g2add,150,196041,76591591,17.704 +test_marginal_precompiles.py::test_marginal_bls12_g2add[fork_Prague-blockchain_test_from_state_test-op_count_300],bls12_g2add,300,286041,149515618,26.758 +test_marginal_precompiles.py::test_marginal_bls12_g2add[fork_Prague-blockchain_test_from_state_test-op_count_450],bls12_g2add,450,376041,222437843,37.848 +test_marginal_precompiles.py::test_marginal_bls12_g2msm[fork_Prague-blockchain_test_from_state_test-op_count_0],bls12_g2msm,0,55639,1015276,7.059 +test_marginal_precompiles.py::test_marginal_bls12_g2msm[fork_Prague-blockchain_test_from_state_test-op_count_16],bls12_g2msm,16,775639,203011126,37.391 +test_marginal_precompiles.py::test_marginal_bls12_g2msm[fork_Prague-blockchain_test_from_state_test-op_count_24],bls12_g2msm,24,1135639,304008054,49.451 +test_marginal_precompiles.py::test_marginal_bls12_g2msm[fork_Prague-blockchain_test_from_state_test-op_count_8],bls12_g2msm,8,415639,102014311,22.728 +test_marginal_precompiles.py::test_marginal_bls12_map_fp2_to_g2[fork_Prague-blockchain_test_from_state_test-op_count_0],bls12_map_fp2_to_g2,0,50640,1026852,7.071 +test_marginal_precompiles.py::test_marginal_bls12_map_fp2_to_g2[fork_Prague-blockchain_test_from_state_test-op_count_18],bls12_map_fp2_to_g2,18,479040,356622848,55.519 +test_marginal_precompiles.py::test_marginal_bls12_map_fp2_to_g2[fork_Prague-blockchain_test_from_state_test-op_count_27],bls12_map_fp2_to_g2,27,693240,534421958,79.201 +test_marginal_precompiles.py::test_marginal_bls12_map_fp2_to_g2[fork_Prague-blockchain_test_from_state_test-op_count_9],bls12_map_fp2_to_g2,9,264840,178828099,31.799 +test_marginal_precompiles.py::test_marginal_bls12_map_fp_to_g1[fork_Prague-blockchain_test_from_state_test-op_count_0],bls12_map_fp_to_g1,0,55508,1324525,6.554 +test_marginal_precompiles.py::test_marginal_bls12_map_fp_to_g1[fork_Prague-blockchain_test_from_state_test-op_count_25],bls12_map_fp_to_g1,25,193008,161297663,30.256 +test_marginal_precompiles.py::test_marginal_bls12_map_fp_to_g1[fork_Prague-blockchain_test_from_state_test-op_count_50],bls12_map_fp_to_g1,50,330508,321264024,50.957 +test_marginal_precompiles.py::test_marginal_bls12_map_fp_to_g1[fork_Prague-blockchain_test_from_state_test-op_count_75],bls12_map_fp_to_g1,75,468008,481232626,72.69 +test_marginal_precompiles.py::test_marginal_bls12_pairing[fork_Prague-blockchain_test_from_state_test-op_count_0],bls12_pairing,0,56915,927554,7.064 +test_marginal_precompiles.py::test_marginal_bls12_pairing[fork_Prague-blockchain_test_from_state_test-op_count_3],bls12_pairing,3,365615,308265945,48.993 +test_marginal_precompiles.py::test_marginal_bls12_pairing[fork_Prague-blockchain_test_from_state_test-op_count_6],bls12_pairing,6,674315,615598440,89.841 +test_marginal_precompiles.py::test_marginal_bls12_pairing[fork_Prague-blockchain_test_from_state_test-op_count_9],bls12_pairing,9,983015,922934573,131.263 +test_marginal_precompiles.py::test_marginal_bn128_add[fork_Prague-blockchain_test_from_state_test-op_count_0],bn128_add,0,143130,5815543,8.07 +test_marginal_precompiles.py::test_marginal_bn128_add[fork_Prague-blockchain_test_from_state_test-op_count_267],bn128_add,267,183180,7442871,8.588 +test_marginal_precompiles.py::test_marginal_bn128_add[fork_Prague-blockchain_test_from_state_test-op_count_534],bn128_add,534,223230,9064437,10.096 +test_marginal_precompiles.py::test_marginal_bn128_add[fork_Prague-blockchain_test_from_state_test-op_count_801],bn128_add,801,263280,10688648,12.618 +test_marginal_precompiles.py::test_marginal_bn128_mul[fork_Prague-blockchain_test_from_state_test-op_count_0],bn128_mul,0,55849,1305693,7.066 +test_marginal_precompiles.py::test_marginal_bn128_mul[fork_Prague-blockchain_test_from_state_test-op_count_24],bn128_mul,24,199849,12466747,13.62 +test_marginal_precompiles.py::test_marginal_bn128_mul[fork_Prague-blockchain_test_from_state_test-op_count_48],bn128_mul,48,343849,23624500,18.66 +test_marginal_precompiles.py::test_marginal_bn128_mul[fork_Prague-blockchain_test_from_state_test-op_count_72],bn128_mul,72,487849,34781700,24.717 +test_marginal_precompiles.py::test_marginal_bn128_pairing[fork_Prague-blockchain_test_from_state_test-op_count_0],bn128_pairing,0,52883,905555,7.061 +test_marginal_precompiles.py::test_marginal_bn128_pairing[fork_Prague-blockchain_test_from_state_test-op_count_2],bn128_pairing,2,278883,13151958,14.117 +test_marginal_precompiles.py::test_marginal_bn128_pairing[fork_Prague-blockchain_test_from_state_test-op_count_4],bn128_pairing,4,504883,25396888,17.664 +test_marginal_precompiles.py::test_marginal_bn128_pairing[fork_Prague-blockchain_test_from_state_test-op_count_6],bn128_pairing,6,730883,37639650,22.676 +test_marginal_precompiles.py::test_marginal_bn128_pairing[fork_Prague-blockchain_test_from_state_test-op_count_8],bn128_pairing,8,956883,49885324,27.762 +test_marginal_precompiles.py::test_marginal_ecrecover[fork_Prague-blockchain_test_from_state_test-op_count_0],ecrecover,0,71358,2100787,7.063 +test_marginal_precompiles.py::test_marginal_ecrecover[fork_Prague-blockchain_test_from_state_test-op_count_134],ecrecover,134,473358,6391982,12.111 +test_marginal_precompiles.py::test_marginal_ecrecover[fork_Prague-blockchain_test_from_state_test-op_count_201],ecrecover,201,674358,8538758,12.617 +test_marginal_precompiles.py::test_marginal_ecrecover[fork_Prague-blockchain_test_from_state_test-op_count_67],ecrecover,67,272358,4250337,9.576 +test_marginal_precompiles.py::test_marginal_identity[fork_Prague-blockchain_test_from_state_test-op_count_0],identity,0,219278111,10011517701,1389.967 +test_marginal_precompiles.py::test_marginal_identity[fork_Prague-blockchain_test_from_state_test-op_count_1000000],identity,1000000,246303111,10137952093,1401.576 +test_marginal_precompiles.py::test_marginal_identity[fork_Prague-blockchain_test_from_state_test-op_count_1500000],identity,1500000,259803111,10200500155,1478.596 +test_marginal_precompiles.py::test_marginal_identity[fork_Prague-blockchain_test_from_state_test-op_count_500000],identity,500000,232803111,10075452045,1388.871 +test_marginal_precompiles.py::test_marginal_modexp[fork_Prague-blockchain_test_from_state_test-op_count_0],modexp,0,66977,1099112,7.061 +test_marginal_precompiles.py::test_marginal_modexp[fork_Prague-blockchain_test_from_state_test-op_count_12],modexp,12,83357,63221488,16.152 +test_marginal_precompiles.py::test_marginal_modexp[fork_Prague-blockchain_test_from_state_test-op_count_24],modexp,24,99737,125326375,26.748 +test_marginal_precompiles.py::test_marginal_modexp[fork_Prague-blockchain_test_from_state_test-op_count_36],modexp,36,116117,187438664,33.827 +test_marginal_precompiles.py::test_marginal_point_evaluation[fork_Prague-blockchain_test_from_state_test-op_count_0],point_evaluation,0,49918,917485,6.564 +test_marginal_precompiles.py::test_marginal_point_evaluation[fork_Prague-blockchain_test_from_state_test-op_count_3],point_evaluation,3,199918,444186275,67.146 +test_marginal_precompiles.py::test_marginal_point_evaluation[fork_Prague-blockchain_test_from_state_test-op_count_6],point_evaluation,6,349918,887448591,126.724 +test_marginal_precompiles.py::test_marginal_point_evaluation[fork_Prague-blockchain_test_from_state_test-op_count_9],point_evaluation,9,499918,1330714918,185.819 +test_marginal_precompiles.py::test_marginal_ripemd160[fork_Prague-blockchain_test_from_state_test-op_count_0],ripemd160,0,240817,10189247,8.579 +test_marginal_precompiles.py::test_marginal_ripemd160[fork_Prague-blockchain_test_from_state_test-op_count_1000],ripemd160,1000,4680817,50215504,16.651 +test_marginal_precompiles.py::test_marginal_ripemd160[fork_Prague-blockchain_test_from_state_test-op_count_1500],ripemd160,1500,6900817,70227143,18.177 +test_marginal_precompiles.py::test_marginal_ripemd160[fork_Prague-blockchain_test_from_state_test-op_count_500],ripemd160,500,2460817,30406564,11.112 +test_marginal_precompiles.py::test_marginal_sha256[fork_Prague-blockchain_test_from_state_test-op_count_0],sha256,0,290575,10247319,8.069 +test_marginal_precompiles.py::test_marginal_sha256[fork_Prague-blockchain_test_from_state_test-op_count_1000],sha256,1000,1886575,30039977,23.722 +test_marginal_precompiles.py::test_marginal_sha256[fork_Prague-blockchain_test_from_state_test-op_count_1500],sha256,1500,2684575,39934103,31.26 +test_marginal_precompiles.py::test_marginal_sha256[fork_Prague-blockchain_test_from_state_test-op_count_500],sha256,500,1088575,20146074,16.626 diff --git a/www/docs/public/marginal-gas-benchmark/sp1/raw-data-sp1-both-20251229-210808.csv b/www/docs/public/marginal-gas-benchmark/sp1/raw-data-sp1-both-20251229-210808.csv new file mode 100644 index 00000000..d7d355ae --- /dev/null +++ b/www/docs/public/marginal-gas-benchmark/sp1/raw-data-sp1-both-20251229-210808.csv @@ -0,0 +1,456 @@ +name,opcode,op_count,gas_used,zk_cycles,proving_time_s +test_marginal_opcodes.py::test_add[fork_Prague-blockchain_test_from_state_test-op_count_0],add,0,9480611,327108334,57.53 +test_marginal_opcodes.py::test_add[fork_Prague-blockchain_test_from_state_test-op_count_300000],add,300000,10380611,356208984,61.061 +test_marginal_opcodes.py::test_add[fork_Prague-blockchain_test_from_state_test-op_count_600000],add,600000,11280611,385310575,64.621 +test_marginal_opcodes.py::test_add[fork_Prague-blockchain_test_from_state_test-op_count_900000],add,900000,12180611,414492906,67.669 +test_marginal_opcodes.py::test_addmod[fork_Prague-blockchain_test_from_state_test-op_count_0],addmod,0,2803611,101449828,22.228 +test_marginal_opcodes.py::test_addmod[fork_Prague-blockchain_test_from_state_test-op_count_134000],addmod,134000,3875611,308348498,48.413 +test_marginal_opcodes.py::test_addmod[fork_Prague-blockchain_test_from_state_test-op_count_201000],addmod,201000,4411611,411794422,61.083 +test_marginal_opcodes.py::test_addmod[fork_Prague-blockchain_test_from_state_test-op_count_67000],addmod,67000,3339611,204899064,35.363 +test_marginal_opcodes.py::test_address[fork_Prague-blockchain_test_from_state_test-op_count_0],address,0,3863111,90594101,20.671 +test_marginal_opcodes.py::test_address[fork_Prague-blockchain_test_from_state_test-op_count_300000],address,300000,4463111,125437656,25.761 +test_marginal_opcodes.py::test_address[fork_Prague-blockchain_test_from_state_test-op_count_600000],address,600000,5063111,160199716,29.3 +test_marginal_opcodes.py::test_address[fork_Prague-blockchain_test_from_state_test-op_count_900000],address,900000,5663111,195002271,34.329 +test_marginal_opcodes.py::test_and[fork_Prague-blockchain_test_from_state_test-op_count_0],and,0,6335611,218399618,39.866 +test_marginal_opcodes.py::test_and[fork_Prague-blockchain_test_from_state_test-op_count_200000],and,200000,6935611,232800587,43.973 +test_marginal_opcodes.py::test_and[fork_Prague-blockchain_test_from_state_test-op_count_400000],and,400000,7535611,247201245,46.429 +test_marginal_opcodes.py::test_and[fork_Prague-blockchain_test_from_state_test-op_count_600000],and,600000,8135611,261656773,49.531 +test_marginal_opcodes.py::test_balance[fork_Prague-blockchain_test_from_state_test-op_count_0],balance,0,2398111,51032272,15.637 +test_marginal_opcodes.py::test_balance[fork_Prague-blockchain_test_from_state_test-op_count_100000],balance,100000,12398111,217033181,38.381 +test_marginal_opcodes.py::test_balance[fork_Prague-blockchain_test_from_state_test-op_count_200000],balance,200000,22398111,383035831,62.688 +test_marginal_opcodes.py::test_balance[fork_Prague-blockchain_test_from_state_test-op_count_300000],balance,300000,32398111,549036232,88.399 +test_marginal_opcodes.py::test_blobbasefee[fork_Prague-blockchain_test_from_state_test-op_count_0],blobbasefee,0,5135611,120498988,24.749 +test_marginal_opcodes.py::test_blobbasefee[fork_Prague-blockchain_test_from_state_test-op_count_1200000],blobbasefee,1200000,7535611,222506569,40.871 +test_marginal_opcodes.py::test_blobbasefee[fork_Prague-blockchain_test_from_state_test-op_count_400000],blobbasefee,400000,5935611,154556232,31.267 +test_marginal_opcodes.py::test_blobbasefee[fork_Prague-blockchain_test_from_state_test-op_count_800000],blobbasefee,800000,6735611,188504068,35.874 +test_marginal_opcodes.py::test_blobhash[fork_Prague-blockchain_test_from_state_test-op_count_0],blobhash,0,9498611,240144501,42.899 +test_marginal_opcodes.py::test_blobhash[fork_Prague-blockchain_test_from_state_test-op_count_1002000],blobhash,1002000,12504611,307362936,47.472 +test_marginal_opcodes.py::test_blobhash[fork_Prague-blockchain_test_from_state_test-op_count_1503000],blobhash,1503000,14007611,340850737,51.548 +test_marginal_opcodes.py::test_blobhash[fork_Prague-blockchain_test_from_state_test-op_count_501000],blobhash,501000,11001611,273711212,44.493 +test_marginal_opcodes.py::test_byte[fork_Prague-blockchain_test_from_state_test-op_count_0],byte,0,6335611,170951453,30.324 +test_marginal_opcodes.py::test_byte[fork_Prague-blockchain_test_from_state_test-op_count_200000],byte,200000,6935611,187352458,33.35 +test_marginal_opcodes.py::test_byte[fork_Prague-blockchain_test_from_state_test-op_count_400000],byte,400000,7535611,203752787,34.806 +test_marginal_opcodes.py::test_byte[fork_Prague-blockchain_test_from_state_test-op_count_600000],byte,600000,8135611,220154993,38.911 +test_marginal_opcodes.py::test_calldatacopy[fork_Prague-blockchain_test_from_state_test-op_count_0],calldatacopy,0,4559611,112974666,25.22 +test_marginal_opcodes.py::test_calldatacopy[fork_Prague-blockchain_test_from_state_test-op_count_200000],calldatacopy,200000,5759611,155377056,29.801 +test_marginal_opcodes.py::test_calldatacopy[fork_Prague-blockchain_test_from_state_test-op_count_400000],calldatacopy,400000,6959611,197777664,36.872 +test_marginal_opcodes.py::test_calldatacopy[fork_Prague-blockchain_test_from_state_test-op_count_600000],calldatacopy,600000,8159611,240179335,39.415 +test_marginal_opcodes.py::test_calldataload[fork_Prague-blockchain_test_from_state_test-op_count_0],calldataload,0,3196611,80638279,20.197 +test_marginal_opcodes.py::test_calldataload[fork_Prague-blockchain_test_from_state_test-op_count_167000],calldataload,167000,3697611,107859082,23.221 +test_marginal_opcodes.py::test_calldataload[fork_Prague-blockchain_test_from_state_test-op_count_334000],calldataload,334000,4198611,135110931,26.242 +test_marginal_opcodes.py::test_calldataload[fork_Prague-blockchain_test_from_state_test-op_count_501000],calldataload,501000,4699611,162306900,29.795 +test_marginal_opcodes.py::test_calldatasize[fork_Prague-blockchain_test_from_state_test-op_count_0],calldatasize,0,5135611,120498918,23.728 +test_marginal_opcodes.py::test_calldatasize[fork_Prague-blockchain_test_from_state_test-op_count_1200000],calldatasize,1200000,7535611,197306616,36.352 +test_marginal_opcodes.py::test_calldatasize[fork_Prague-blockchain_test_from_state_test-op_count_240000],calldatasize,240000,5615611,135860525,25.742 +test_marginal_opcodes.py::test_calldatasize[fork_Prague-blockchain_test_from_state_test-op_count_480000],calldatasize,480000,6095611,151222673,30.325 +test_marginal_opcodes.py::test_calldatasize[fork_Prague-blockchain_test_from_state_test-op_count_720000],calldatasize,720000,6575611,166597863,31.803 +test_marginal_opcodes.py::test_calldatasize[fork_Prague-blockchain_test_from_state_test-op_count_960000],calldatasize,960000,7055611,181945356,34.891 +test_marginal_opcodes.py::test_caller[fork_Prague-blockchain_test_from_state_test-op_count_0],caller,0,5135611,120498719,24.732 +test_marginal_opcodes.py::test_caller[fork_Prague-blockchain_test_from_state_test-op_count_1200000],caller,1200000,7535611,259706778,44.498 +test_marginal_opcodes.py::test_caller[fork_Prague-blockchain_test_from_state_test-op_count_400000],caller,400000,5935611,166955972,29.778 +test_marginal_opcodes.py::test_caller[fork_Prague-blockchain_test_from_state_test-op_count_800000],caller,800000,6735611,213304387,35.85 +test_marginal_opcodes.py::test_caller_basefee[fork_Prague-blockchain_test_from_state_test-op_count_0],basefee,0,5135611,120498468,25.213 +test_marginal_opcodes.py::test_caller_basefee[fork_Prague-blockchain_test_from_state_test-op_count_1200000],basefee,1200000,7535611,196106120,36.844 +test_marginal_opcodes.py::test_caller_basefee[fork_Prague-blockchain_test_from_state_test-op_count_400000],basefee,400000,5935611,145755998,29.291 +test_marginal_opcodes.py::test_caller_basefee[fork_Prague-blockchain_test_from_state_test-op_count_800000],basefee,800000,6735611,170904089,31.873 +test_marginal_opcodes.py::test_callvalue[fork_Prague-blockchain_test_from_state_test-op_count_0],callvalue,0,5135611,120499132,24.244 +test_marginal_opcodes.py::test_callvalue[fork_Prague-blockchain_test_from_state_test-op_count_1200000],callvalue,1200000,7535611,214106666,39.367 +test_marginal_opcodes.py::test_callvalue[fork_Prague-blockchain_test_from_state_test-op_count_300000],callvalue,300000,5735611,143899709,29.254 +test_marginal_opcodes.py::test_callvalue[fork_Prague-blockchain_test_from_state_test-op_count_600000],callvalue,600000,6335611,167303495,33.812 +test_marginal_opcodes.py::test_callvalue[fork_Prague-blockchain_test_from_state_test-op_count_900000],callvalue,900000,6935611,190703229,36.847 +test_marginal_opcodes.py::test_chainid[fork_Prague-blockchain_test_from_state_test-op_count_0],chainid,0,5135611,120498624,24.748 +test_marginal_opcodes.py::test_chainid[fork_Prague-blockchain_test_from_state_test-op_count_1200000],chainid,1200000,7535611,196106598,36.848 +test_marginal_opcodes.py::test_chainid[fork_Prague-blockchain_test_from_state_test-op_count_400000],chainid,400000,5935611,145755772,28.797 +test_marginal_opcodes.py::test_chainid[fork_Prague-blockchain_test_from_state_test-op_count_800000],chainid,800000,6735611,170904033,32.82 +test_marginal_opcodes.py::test_codecopy[fork_Prague-blockchain_test_from_state_test-op_count_0],codecopy,0,6816611,169023010,32.312 +test_marginal_opcodes.py::test_codecopy[fork_Prague-blockchain_test_from_state_test-op_count_300000],codecopy,300000,8616611,232625312,42.417 +test_marginal_opcodes.py::test_codecopy[fork_Prague-blockchain_test_from_state_test-op_count_600000],codecopy,600000,10416611,334625874,57.064 +test_marginal_opcodes.py::test_codecopy[fork_Prague-blockchain_test_from_state_test-op_count_900000],codecopy,900000,12216611,417427357,70.219 +test_marginal_opcodes.py::test_codesize[fork_Prague-blockchain_test_from_state_test-op_count_0],codesize,0,5135611,120499062,24.227 +test_marginal_opcodes.py::test_codesize[fork_Prague-blockchain_test_from_state_test-op_count_1200000],codesize,1200000,7535611,193706816,37.363 +test_marginal_opcodes.py::test_codesize[fork_Prague-blockchain_test_from_state_test-op_count_400000],codesize,400000,5935611,144956022,28.787 +test_marginal_opcodes.py::test_codesize[fork_Prague-blockchain_test_from_state_test-op_count_800000],codesize,800000,6735611,169304223,34.442 +test_marginal_opcodes.py::test_coinbase[fork_Prague-blockchain_test_from_state_test-op_count_0],coinbase,0,5135611,120498775,24.231 +test_marginal_opcodes.py::test_coinbase[fork_Prague-blockchain_test_from_state_test-op_count_1200000],coinbase,1200000,7535611,259706902,43.875 +test_marginal_opcodes.py::test_coinbase[fork_Prague-blockchain_test_from_state_test-op_count_400000],coinbase,400000,5935611,166955710,28.781 +test_marginal_opcodes.py::test_coinbase[fork_Prague-blockchain_test_from_state_test-op_count_800000],coinbase,800000,6735611,213303768,35.832 +test_marginal_opcodes.py::test_div[fork_Prague-blockchain_test_from_state_test-op_count_0],div,0,2247111,77077871,19.681 +test_marginal_opcodes.py::test_div[fork_Prague-blockchain_test_from_state_test-op_count_140000],div,140000,2947111,291279896,45.391 +test_marginal_opcodes.py::test_div[fork_Prague-blockchain_test_from_state_test-op_count_210000],div,210000,3297111,398399962,61.137 +test_marginal_opcodes.py::test_div[fork_Prague-blockchain_test_from_state_test-op_count_70000],div,70000,2597111,184178585,33.335 +test_marginal_opcodes.py::test_dup16[fork_Prague-blockchain_test_from_state_test-op_count_0],dup16,0,2895611,70724252,16.649 +test_marginal_opcodes.py::test_dup16[fork_Prague-blockchain_test_from_state_test-op_count_120000],dup16,120000,3255611,76845258,17.662 +test_marginal_opcodes.py::test_dup16[fork_Prague-blockchain_test_from_state_test-op_count_240000],dup16,240000,3615611,83074071,20.174 +test_marginal_opcodes.py::test_dup16[fork_Prague-blockchain_test_from_state_test-op_count_360000],dup16,360000,3975611,89087184,21.193 +test_marginal_opcodes.py::test_dup16[fork_Prague-blockchain_test_from_state_test-op_count_480000],dup16,480000,4335611,95207611,21.217 +test_marginal_opcodes.py::test_dup16[fork_Prague-blockchain_test_from_state_test-op_count_600000],dup16,600000,4695611,101327887,23.237 +test_marginal_opcodes.py::test_dup1[fork_Prague-blockchain_test_from_state_test-op_count_0],dup1,0,4095611,102229169,20.699 +test_marginal_opcodes.py::test_dup1[fork_Prague-blockchain_test_from_state_test-op_count_180000],dup1,180000,4635611,111410025,23.228 +test_marginal_opcodes.py::test_dup1[fork_Prague-blockchain_test_from_state_test-op_count_360000],dup1,360000,5175611,120591042,26.752 +test_marginal_opcodes.py::test_dup1[fork_Prague-blockchain_test_from_state_test-op_count_540000],dup1,540000,5715611,129771396,27.758 +test_marginal_opcodes.py::test_dup1[fork_Prague-blockchain_test_from_state_test-op_count_720000],dup1,720000,6255611,138952263,27.793 +test_marginal_opcodes.py::test_dup1[fork_Prague-blockchain_test_from_state_test-op_count_900000],dup1,900000,6795611,148132282,29.273 +test_marginal_opcodes.py::test_dup8[fork_Prague-blockchain_test_from_state_test-op_count_0],dup8,0,4200611,103825556,21.219 +test_marginal_opcodes.py::test_dup8[fork_Prague-blockchain_test_from_state_test-op_count_180000],dup8,180000,4740611,113005539,24.22 +test_marginal_opcodes.py::test_dup8[fork_Prague-blockchain_test_from_state_test-op_count_360000],dup8,360000,5280611,122186694,27.274 +test_marginal_opcodes.py::test_dup8[fork_Prague-blockchain_test_from_state_test-op_count_540000],dup8,540000,5820611,131367403,27.739 +test_marginal_opcodes.py::test_dup8[fork_Prague-blockchain_test_from_state_test-op_count_720000],dup8,720000,6360611,140548329,28.274 +test_marginal_opcodes.py::test_dup8[fork_Prague-blockchain_test_from_state_test-op_count_900000],dup8,900000,6900611,149809820,30.822 +test_marginal_opcodes.py::test_eq[fork_Prague-blockchain_test_from_state_test-op_count_0],eq,0,4763111,164044613,30.823 +test_marginal_opcodes.py::test_eq[fork_Prague-blockchain_test_from_state_test-op_count_150000],eq,150000,5213111,208596016,35.307 +test_marginal_opcodes.py::test_eq[fork_Prague-blockchain_test_from_state_test-op_count_300000],eq,300000,5663111,253146990,43.899 +test_marginal_opcodes.py::test_eq[fork_Prague-blockchain_test_from_state_test-op_count_450000],eq,450000,6113111,297738989,49.976 +test_marginal_opcodes.py::test_exp[fork_Prague-blockchain_test_from_state_test-op_count_0],exp,0,70286,1796382,7.065 +test_marginal_opcodes.py::test_exp[fork_Prague-blockchain_test_from_state_test-op_count_1500],exp,1500,2485286,213295956,35.311 +test_marginal_opcodes.py::test_exp[fork_Prague-blockchain_test_from_state_test-op_count_2250],exp,2250,3692786,319045626,51.455 +test_marginal_opcodes.py::test_exp[fork_Prague-blockchain_test_from_state_test-op_count_750],exp,750,1277786,107545955,23.24 +test_marginal_opcodes.py::test_extcodecopy[fork_Prague-blockchain_test_from_state_test-op_count_0],extcodecopy,0,1592111,42136161,13.61 +test_marginal_opcodes.py::test_extcodecopy[fork_Prague-blockchain_test_from_state_test-op_count_102000],extcodecopy,102000,14282111,241916048,43.379 +test_marginal_opcodes.py::test_extcodecopy[fork_Prague-blockchain_test_from_state_test-op_count_34000],extcodecopy,34000,5850111,108976440,24.751 +test_marginal_opcodes.py::test_extcodecopy[fork_Prague-blockchain_test_from_state_test-op_count_68000],extcodecopy,68000,10066111,175459797,32.821 +test_marginal_opcodes.py::test_extcodehash[fork_Prague-blockchain_test_from_state_test-op_count_0],extcodehash,0,1948111,47988645,13.628 +test_marginal_opcodes.py::test_extcodehash[fork_Prague-blockchain_test_from_state_test-op_count_100000],extcodehash,100000,11948111,269382348,44.446 +test_marginal_opcodes.py::test_extcodehash[fork_Prague-blockchain_test_from_state_test-op_count_150000],extcodehash,150000,16948111,380132227,63.622 +test_marginal_opcodes.py::test_extcodehash[fork_Prague-blockchain_test_from_state_test-op_count_200000],extcodehash,200000,21948111,490882382,77.763 +test_marginal_opcodes.py::test_extcodehash[fork_Prague-blockchain_test_from_state_test-op_count_50000],extcodehash,50000,6948111,158629070,29.802 +test_marginal_opcodes.py::test_extcodesize[fork_Prague-blockchain_test_from_state_test-op_count_0],extcodesize,0,1934111,46510756,14.658 +test_marginal_opcodes.py::test_extcodesize[fork_Prague-blockchain_test_from_state_test-op_count_132000],extcodesize,132000,15134111,266422201,45.932 +test_marginal_opcodes.py::test_extcodesize[fork_Prague-blockchain_test_from_state_test-op_count_198000],extcodesize,198000,21734111,376380558,59.04 +test_marginal_opcodes.py::test_extcodesize[fork_Prague-blockchain_test_from_state_test-op_count_66000],extcodesize,66000,8534111,156466910,30.825 +test_marginal_opcodes.py::test_gas[fork_Prague-blockchain_test_from_state_test-op_count_0],gas,0,5135611,120499134,24.219 +test_marginal_opcodes.py::test_gas[fork_Prague-blockchain_test_from_state_test-op_count_1200000],gas,1200000,7535611,192506753,37.894 +test_marginal_opcodes.py::test_gas[fork_Prague-blockchain_test_from_state_test-op_count_400000],gas,400000,5935611,144555565,28.774 +test_marginal_opcodes.py::test_gas[fork_Prague-blockchain_test_from_state_test-op_count_800000],gas,800000,6735611,168504088,31.814 +test_marginal_opcodes.py::test_gaslimit[fork_Prague-blockchain_test_from_state_test-op_count_0],gaslimit,0,5135611,120498540,24.231 +test_marginal_opcodes.py::test_gaslimit[fork_Prague-blockchain_test_from_state_test-op_count_1200000],gaslimit,1200000,7535611,192506450,35.813 +test_marginal_opcodes.py::test_gaslimit[fork_Prague-blockchain_test_from_state_test-op_count_400000],gaslimit,400000,5935611,144555917,28.754 +test_marginal_opcodes.py::test_gaslimit[fork_Prague-blockchain_test_from_state_test-op_count_800000],gaslimit,800000,6735611,168504599,32.307 +test_marginal_opcodes.py::test_gasprice[fork_Prague-blockchain_test_from_state_test-op_count_0],gasprice,0,5135611,120499064,24.248 +test_marginal_opcodes.py::test_gasprice[fork_Prague-blockchain_test_from_state_test-op_count_1200000],gasprice,1200000,7535611,217706736,39.888 +test_marginal_opcodes.py::test_gasprice[fork_Prague-blockchain_test_from_state_test-op_count_400000],gasprice,400000,5935611,152956002,29.781 +test_marginal_opcodes.py::test_gasprice[fork_Prague-blockchain_test_from_state_test-op_count_800000],gasprice,800000,6735611,185304491,34.845 +test_marginal_opcodes.py::test_gt[fork_Prague-blockchain_test_from_state_test-op_count_0],gt,0,6335611,218399670,40.437 +test_marginal_opcodes.py::test_gt[fork_Prague-blockchain_test_from_state_test-op_count_200000],gt,200000,6935611,234800175,43.422 +test_marginal_opcodes.py::test_gt[fork_Prague-blockchain_test_from_state_test-op_count_400000],gt,400000,7535611,251201845,45.421 +test_marginal_opcodes.py::test_gt[fork_Prague-blockchain_test_from_state_test-op_count_600000],gt,600000,8135611,267656911,47.454 +test_marginal_opcodes.py::test_iszero[fork_Prague-blockchain_test_from_state_test-op_count_0],iszero,0,9930611,309983191,52.534 +test_marginal_opcodes.py::test_iszero[fork_Prague-blockchain_test_from_state_test-op_count_1080000],iszero,1080000,13170611,372627805,57.568 +test_marginal_opcodes.py::test_iszero[fork_Prague-blockchain_test_from_state_test-op_count_1350000],iszero,1350000,13980611,388290438,61.086 +test_marginal_opcodes.py::test_iszero[fork_Prague-blockchain_test_from_state_test-op_count_270000],iszero,270000,10740611,325645823,51.472 +test_marginal_opcodes.py::test_iszero[fork_Prague-blockchain_test_from_state_test-op_count_540000],iszero,540000,11550611,341305216,52.569 +test_marginal_opcodes.py::test_iszero[fork_Prague-blockchain_test_from_state_test-op_count_810000],iszero,810000,12360611,356968381,56.601 +test_marginal_opcodes.py::test_jump[fork_Prague-blockchain_test_from_state_test-op_count_0],jump,0,2880611,71702921,18.173 +test_marginal_opcodes.py::test_jump[fork_Prague-blockchain_test_from_state_test-op_count_120000],jump,120000,3840611,79263293,18.661 +test_marginal_opcodes.py::test_jump[fork_Prague-blockchain_test_from_state_test-op_count_240000],jump,240000,4800611,86824153,19.18 +test_marginal_opcodes.py::test_jump[fork_Prague-blockchain_test_from_state_test-op_count_360000],jump,360000,5760611,94384421,20.205 +test_marginal_opcodes.py::test_jump[fork_Prague-blockchain_test_from_state_test-op_count_480000],jump,480000,6720611,101945045,22.261 +test_marginal_opcodes.py::test_jump[fork_Prague-blockchain_test_from_state_test-op_count_600000],jump,600000,7680611,109504936,21.72 +test_marginal_opcodes.py::test_jumpdest[fork_Prague-blockchain_test_from_state_test-op_count_0],jumpdest,0,625611,31302230,11.114 +test_marginal_opcodes.py::test_jumpdest[fork_Prague-blockchain_test_from_state_test-op_count_1600000],jumpdest,1600000,2225611,72909237,17.674 +test_marginal_opcodes.py::test_jumpdest[fork_Prague-blockchain_test_from_state_test-op_count_2400000],jumpdest,2400000,3025611,93712846,21.198 +test_marginal_opcodes.py::test_jumpdest[fork_Prague-blockchain_test_from_state_test-op_count_800000],jumpdest,800000,1425611,52106113,15.147 +test_marginal_opcodes.py::test_jumpi[fork_Prague-blockchain_test_from_state_test-op_count_0],jumpi,0,7805611,165554848,29.824 +test_marginal_opcodes.py::test_jumpi[fork_Prague-blockchain_test_from_state_test-op_count_1005000],jumpi,1005000,17855611,282137245,50.968 +test_marginal_opcodes.py::test_jumpi[fork_Prague-blockchain_test_from_state_test-op_count_335000],jumpi,335000,11155611,204413169,37.874 +test_marginal_opcodes.py::test_jumpi[fork_Prague-blockchain_test_from_state_test-op_count_670000],jumpi,670000,14505611,243275988,44.418 +test_marginal_opcodes.py::test_keccak256[fork_Prague-blockchain_test_from_state_test-op_count_0],keccak256,0,930611,33755857,11.602 +test_marginal_opcodes.py::test_keccak256[fork_Prague-blockchain_test_from_state_test-op_count_16000],keccak256,16000,25986611,479165020,184.269 +test_marginal_opcodes.py::test_keccak256[fork_Prague-blockchain_test_from_state_test-op_count_24000],keccak256,24000,38514611,701869291,260.758 +test_marginal_opcodes.py::test_keccak256[fork_Prague-blockchain_test_from_state_test-op_count_8000],keccak256,8000,13458611,256461006,94.907 +test_marginal_opcodes.py::test_log0[fork_Prague-blockchain_test_from_state_test-op_count_0],log0,0,957611,21963764,11.096 +test_marginal_opcodes.py::test_log0[fork_Prague-blockchain_test_from_state_test-op_count_120000],log0,120000,45957611,46485358,16.663 +test_marginal_opcodes.py::test_log0[fork_Prague-blockchain_test_from_state_test-op_count_24000],log0,24000,9957611,27105263,11.11 +test_marginal_opcodes.py::test_log0[fork_Prague-blockchain_test_from_state_test-op_count_48000],log0,48000,18957611,32367743,12.622 +test_marginal_opcodes.py::test_log0[fork_Prague-blockchain_test_from_state_test-op_count_72000],log0,72000,27957611,38564302,15.149 +test_marginal_opcodes.py::test_log0[fork_Prague-blockchain_test_from_state_test-op_count_96000],log0,96000,36957611,42524403,16.64 +test_marginal_opcodes.py::test_log1[fork_Prague-blockchain_test_from_state_test-op_count_0],log1,0,934611,20427984,9.577 +test_marginal_opcodes.py::test_log1[fork_Prague-blockchain_test_from_state_test-op_count_27000],log1,27000,28120611,35525638,13.147 +test_marginal_opcodes.py::test_log1[fork_Prague-blockchain_test_from_state_test-op_count_54000],log1,54000,55282611,50392605,17.133 +test_marginal_opcodes.py::test_log1[fork_Prague-blockchain_test_from_state_test-op_count_81000],log1,81000,82444611,66442856,20.701 +test_marginal_opcodes.py::test_log2[fork_Prague-blockchain_test_from_state_test-op_count_0],log2,0,661611,14461939,9.583 +test_marginal_opcodes.py::test_log2[fork_Prague-blockchain_test_from_state_test-op_count_14000],log2,14000,45003111,28076413,11.598 +test_marginal_opcodes.py::test_log2[fork_Prague-blockchain_test_from_state_test-op_count_28000],log2,28000,89313111,41477130,16.668 +test_marginal_opcodes.py::test_log2[fork_Prague-blockchain_test_from_state_test-op_count_42000],log2,42000,133623111,55466713,19.666 +test_marginal_opcodes.py::test_log3[fork_Prague-blockchain_test_from_state_test-op_count_0],log3,0,693111,14948295,9.6 +test_marginal_opcodes.py::test_log3[fork_Prague-blockchain_test_from_state_test-op_count_11900],log3,11900,42850611,28296309,12.11 +test_marginal_opcodes.py::test_log3[fork_Prague-blockchain_test_from_state_test-op_count_23800],log3,23800,84976611,41284717,15.128 +test_marginal_opcodes.py::test_log3[fork_Prague-blockchain_test_from_state_test-op_count_35700],log3,35700,127102611,55007279,18.185 +test_marginal_opcodes.py::test_log4[fork_Prague-blockchain_test_from_state_test-op_count_0],log4,0,649011,14307046,9.076 +test_marginal_opcodes.py::test_log4[fork_Prague-blockchain_test_from_state_test-op_count_18200],log4,18200,71933511,37052623,14.667 +test_marginal_opcodes.py::test_log4[fork_Prague-blockchain_test_from_state_test-op_count_27300],log4,27300,107560011,47815613,17.168 +test_marginal_opcodes.py::test_log4[fork_Prague-blockchain_test_from_state_test-op_count_9100],log4,9100,36307011,25840501,11.097 +test_marginal_opcodes.py::test_lt[fork_Prague-blockchain_test_from_state_test-op_count_0],lt,0,6335611,218399451,40.396 +test_marginal_opcodes.py::test_lt[fork_Prague-blockchain_test_from_state_test-op_count_200000],lt,200000,6935611,234800488,42.888 +test_marginal_opcodes.py::test_lt[fork_Prague-blockchain_test_from_state_test-op_count_400000],lt,400000,7535611,251201293,45.445 +test_marginal_opcodes.py::test_lt[fork_Prague-blockchain_test_from_state_test-op_count_600000],lt,600000,8135611,267656406,47.441 +test_marginal_opcodes.py::test_marginal_call[fork_Prague-blockchain_test_from_state_test-op_count_0],call,0,1208611,25362457,11.098 +test_marginal_opcodes.py::test_marginal_call[fork_Prague-blockchain_test_from_state_test-op_count_16500],call,16500,2861111,139498711,26.259 +test_marginal_opcodes.py::test_marginal_call[fork_Prague-blockchain_test_from_state_test-op_count_33000],call,33000,4511111,252723347,44.497 +test_marginal_opcodes.py::test_marginal_call[fork_Prague-blockchain_test_from_state_test-op_count_49500],call,49500,6161111,366392108,56.029 +test_marginal_opcodes.py::test_marginal_callcode[fork_Prague-blockchain_test_from_state_test-op_count_0],callcode,0,1208611,25254270,11.133 +test_marginal_opcodes.py::test_marginal_callcode[fork_Prague-blockchain_test_from_state_test-op_count_16500],callcode,16500,2861111,136198265,25.725 +test_marginal_opcodes.py::test_marginal_callcode[fork_Prague-blockchain_test_from_state_test-op_count_33000],callcode,33000,4511111,246238887,42.391 +test_marginal_opcodes.py::test_marginal_callcode[fork_Prague-blockchain_test_from_state_test-op_count_49500],callcode,49500,6161111,356722458,56.542 +test_marginal_opcodes.py::test_marginal_create2[fork_Prague-blockchain_test_from_state_test-op_count_0],create2,0,200711,4554044,8.069 +test_marginal_opcodes.py::test_marginal_create2[fork_Prague-blockchain_test_from_state_test-op_count_1400],create2,1400,45028711,41328057,15.125 +test_marginal_opcodes.py::test_marginal_create2[fork_Prague-blockchain_test_from_state_test-op_count_2800],create2,2800,89856711,78154047,21.705 +test_marginal_opcodes.py::test_marginal_create2[fork_Prague-blockchain_test_from_state_test-op_count_4200],create2,4200,134684711,117657462,28.259 +test_marginal_opcodes.py::test_marginal_create[fork_Prague-blockchain_test_from_state_test-op_count_0],create,0,123811,3249183,7.072 +test_marginal_opcodes.py::test_marginal_create[fork_Prague-blockchain_test_from_state_test-op_count_1400],create,1400,44935011,38358188,13.631 +test_marginal_opcodes.py::test_marginal_create[fork_Prague-blockchain_test_from_state_test-op_count_2800],create,2800,89746211,73639709,20.737 +test_marginal_opcodes.py::test_marginal_create[fork_Prague-blockchain_test_from_state_test-op_count_4200],create,4200,134557411,111696632,27.246 +test_marginal_opcodes.py::test_marginal_delegatecall[fork_Prague-blockchain_test_from_state_test-op_count_0],delegatecall,0,1058611,22428506,11.619 +test_marginal_opcodes.py::test_marginal_delegatecall[fork_Prague-blockchain_test_from_state_test-op_count_16500],delegatecall,16500,2711111,115681979,24.266 +test_marginal_opcodes.py::test_marginal_delegatecall[fork_Prague-blockchain_test_from_state_test-op_count_33000],delegatecall,33000,4361111,208896612,36.83 +test_marginal_opcodes.py::test_marginal_delegatecall[fork_Prague-blockchain_test_from_state_test-op_count_49500],delegatecall,49500,6011111,302121319,48.978 +test_marginal_opcodes.py::test_marginal_staticcall[fork_Prague-blockchain_test_from_state_test-op_count_0],staticcall,0,1058611,22956836,11.102 +test_marginal_opcodes.py::test_marginal_staticcall[fork_Prague-blockchain_test_from_state_test-op_count_16500],staticcall,16500,2711111,133261999,26.249 +test_marginal_opcodes.py::test_marginal_staticcall[fork_Prague-blockchain_test_from_state_test-op_count_33000],staticcall,33000,4361111,243520694,40.885 +test_marginal_opcodes.py::test_marginal_staticcall[fork_Prague-blockchain_test_from_state_test-op_count_49500],staticcall,49500,6011111,353790851,55.601 +test_marginal_opcodes.py::test_mcopy[fork_Prague-blockchain_test_from_state_test-op_count_0],mcopy,0,642011,12180088,9.074 +test_marginal_opcodes.py::test_mcopy[fork_Prague-blockchain_test_from_state_test-op_count_20000],mcopy,20000,2644211,41658820,14.131 +test_marginal_opcodes.py::test_mcopy[fork_Prague-blockchain_test_from_state_test-op_count_40000],mcopy,40000,4624211,71044942,17.678 +test_marginal_opcodes.py::test_mcopy[fork_Prague-blockchain_test_from_state_test-op_count_60000],mcopy,60000,6604211,100426617,21.72 +test_marginal_opcodes.py::test_mload[fork_Prague-blockchain_test_from_state_test-op_count_0],mload,0,6371611,161427395,31.804 +test_marginal_opcodes.py::test_mload[fork_Prague-blockchain_test_from_state_test-op_count_1002000],mload,1002000,9377611,323757292,50.983 +test_marginal_opcodes.py::test_mload[fork_Prague-blockchain_test_from_state_test-op_count_334000],mload,334000,7373611,215535981,35.319 +test_marginal_opcodes.py::test_mload[fork_Prague-blockchain_test_from_state_test-op_count_668000],mload,668000,8375611,269700804,43.413 +test_marginal_opcodes.py::test_mod[fork_Prague-blockchain_test_from_state_test-op_count_0],mod,0,2247111,77077162,19.17 +test_marginal_opcodes.py::test_mod[fork_Prague-blockchain_test_from_state_test-op_count_140000],mod,140000,2947111,255859485,41.907 +test_marginal_opcodes.py::test_mod[fork_Prague-blockchain_test_from_state_test-op_count_210000],mod,210000,3297111,345269919,52.49 +test_marginal_opcodes.py::test_mod[fork_Prague-blockchain_test_from_state_test-op_count_70000],mod,70000,2597111,166468274,30.327 +test_marginal_opcodes.py::test_msize[fork_Prague-blockchain_test_from_state_test-op_count_0],msize,0,5159611,121376767,26.751 +test_marginal_opcodes.py::test_msize[fork_Prague-blockchain_test_from_state_test-op_count_1200000],msize,1200000,7559611,193384132,36.347 +test_marginal_opcodes.py::test_msize[fork_Prague-blockchain_test_from_state_test-op_count_300000],msize,300000,5759611,139378896,29.266 +test_marginal_opcodes.py::test_msize[fork_Prague-blockchain_test_from_state_test-op_count_600000],msize,600000,6359611,157381211,30.802 +test_marginal_opcodes.py::test_msize[fork_Prague-blockchain_test_from_state_test-op_count_900000],msize,900000,6959611,175382505,33.862 +test_marginal_opcodes.py::test_mstore8[fork_Prague-blockchain_test_from_state_test-op_count_0],mstore8,0,5369611,120184324,26.753 +test_marginal_opcodes.py::test_mstore8[fork_Prague-blockchain_test_from_state_test-op_count_1002000],mstore8,1002000,8375611,198346244,36.318 +test_marginal_opcodes.py::test_mstore8[fork_Prague-blockchain_test_from_state_test-op_count_334000],mstore8,334000,6371611,146252292,28.783 +test_marginal_opcodes.py::test_mstore8[fork_Prague-blockchain_test_from_state_test-op_count_668000],mstore8,668000,7373611,172344341,33.788 +test_marginal_opcodes.py::test_mstore[fork_Prague-blockchain_test_from_state_test-op_count_0],mstore,0,2707611,100199555,22.189 +test_marginal_opcodes.py::test_mstore[fork_Prague-blockchain_test_from_state_test-op_count_167000],mstore,167000,3208611,131588144,27.801 +test_marginal_opcodes.py::test_mstore[fork_Prague-blockchain_test_from_state_test-op_count_334000],mstore,334000,3709611,163063581,32.823 +test_marginal_opcodes.py::test_mstore[fork_Prague-blockchain_test_from_state_test-op_count_501000],mstore,501000,4210611,194412769,36.828 +test_marginal_opcodes.py::test_mul[fork_Prague-blockchain_test_from_state_test-op_count_0],mul,0,6335611,218399287,39.878 +test_marginal_opcodes.py::test_mul[fork_Prague-blockchain_test_from_state_test-op_count_200000],mul,200000,7335611,279000081,45.455 +test_marginal_opcodes.py::test_mul[fork_Prague-blockchain_test_from_state_test-op_count_400000],mul,400000,8335611,339601281,55.07 +test_marginal_opcodes.py::test_mul[fork_Prague-blockchain_test_from_state_test-op_count_600000],mul,600000,9335611,400256656,61.123 +test_marginal_opcodes.py::test_mulmod[fork_Prague-blockchain_test_from_state_test-op_count_0],mulmod,0,2920611,105611290,24.232 +test_marginal_opcodes.py::test_mulmod[fork_Prague-blockchain_test_from_state_test-op_count_140000],mulmod,140000,4040611,578533255,82.8 +test_marginal_opcodes.py::test_mulmod[fork_Prague-blockchain_test_from_state_test-op_count_210000],mulmod,210000,4600611,814995628,112.628 +test_marginal_opcodes.py::test_mulmod[fork_Prague-blockchain_test_from_state_test-op_count_70000],mulmod,70000,3480611,342074217,52.984 +test_marginal_opcodes.py::test_not[fork_Prague-blockchain_test_from_state_test-op_count_0],not,0,6635611,206973924,37.375 +test_marginal_opcodes.py::test_not[fork_Prague-blockchain_test_from_state_test-op_count_180000],not,180000,7175611,216877403,38.369 +test_marginal_opcodes.py::test_not[fork_Prague-blockchain_test_from_state_test-op_count_360000],not,360000,7715611,226776358,38.373 +test_marginal_opcodes.py::test_not[fork_Prague-blockchain_test_from_state_test-op_count_540000],not,540000,8255611,236679598,39.444 +test_marginal_opcodes.py::test_not[fork_Prague-blockchain_test_from_state_test-op_count_720000],not,720000,8795611,246577705,41.467 +test_marginal_opcodes.py::test_not[fork_Prague-blockchain_test_from_state_test-op_count_900000],not,900000,9335611,256481833,42.43 +test_marginal_opcodes.py::test_number[fork_Prague-blockchain_test_from_state_test-op_count_0],number,0,5135611,120498553,25.264 +test_marginal_opcodes.py::test_number[fork_Prague-blockchain_test_from_state_test-op_count_1200000],number,1200000,7535611,198506894,36.851 +test_marginal_opcodes.py::test_number[fork_Prague-blockchain_test_from_state_test-op_count_400000],number,400000,5935611,146555505,30.326 +test_marginal_opcodes.py::test_number[fork_Prague-blockchain_test_from_state_test-op_count_800000],number,800000,6735611,172504304,32.818 +test_marginal_opcodes.py::test_or[fork_Prague-blockchain_test_from_state_test-op_count_0],or,0,9480611,327108222,57.537 +test_marginal_opcodes.py::test_or[fork_Prague-blockchain_test_from_state_test-op_count_180000],or,180000,10020611,340068788,61.175 +test_marginal_opcodes.py::test_or[fork_Prague-blockchain_test_from_state_test-op_count_360000],or,360000,10560611,353029626,59.576 +test_marginal_opcodes.py::test_or[fork_Prague-blockchain_test_from_state_test-op_count_540000],or,540000,11100611,365990433,62.565 +test_marginal_opcodes.py::test_or[fork_Prague-blockchain_test_from_state_test-op_count_720000],or,720000,11640611,378951026,64.118 +test_marginal_opcodes.py::test_or[fork_Prague-blockchain_test_from_state_test-op_count_900000],or,900000,12180611,391992349,66.604 +test_marginal_opcodes.py::test_origin[fork_Prague-blockchain_test_from_state_test-op_count_0],origin,0,5135611,120499188,24.735 +test_marginal_opcodes.py::test_origin[fork_Prague-blockchain_test_from_state_test-op_count_1200000],origin,1200000,7535611,259706612,44.477 +test_marginal_opcodes.py::test_origin[fork_Prague-blockchain_test_from_state_test-op_count_400000],origin,400000,5935611,166955864,29.273 +test_marginal_opcodes.py::test_origin[fork_Prague-blockchain_test_from_state_test-op_count_800000],origin,800000,6735611,213304514,34.837 +test_marginal_opcodes.py::test_pc[fork_Prague-blockchain_test_from_state_test-op_count_0],pc,0,5135611,120499137,23.739 +test_marginal_opcodes.py::test_pc[fork_Prague-blockchain_test_from_state_test-op_count_1200000],pc,1200000,7535611,197306746,35.841 +test_marginal_opcodes.py::test_pc[fork_Prague-blockchain_test_from_state_test-op_count_400000],pc,400000,5935611,146155890,26.218 +test_marginal_opcodes.py::test_pc[fork_Prague-blockchain_test_from_state_test-op_count_800000],pc,800000,6735611,171704378,33.337 +test_marginal_opcodes.py::test_pop[fork_Prague-blockchain_test_from_state_test-op_count_0],pop,0,4080611,126300565,27.757 +test_marginal_opcodes.py::test_pop[fork_Prague-blockchain_test_from_state_test-op_count_1080000],pop,1080000,6240611,158705645,30.792 +test_marginal_opcodes.py::test_pop[fork_Prague-blockchain_test_from_state_test-op_count_1440000],pop,1440000,6960611,169506839,29.297 +test_marginal_opcodes.py::test_pop[fork_Prague-blockchain_test_from_state_test-op_count_1800000],pop,1800000,7680611,180307995,31.788 +test_marginal_opcodes.py::test_pop[fork_Prague-blockchain_test_from_state_test-op_count_360000],pop,360000,4800611,137102997,28.301 +test_marginal_opcodes.py::test_pop[fork_Prague-blockchain_test_from_state_test-op_count_720000],pop,720000,5520611,147904540,29.84 +test_marginal_opcodes.py::test_prevrandao[fork_Prague-blockchain_test_from_state_test-op_count_0],prevrandao,0,3863111,90594483,19.667 +test_marginal_opcodes.py::test_prevrandao[fork_Prague-blockchain_test_from_state_test-op_count_300000],prevrandao,300000,4463111,137737563,26.235 +test_marginal_opcodes.py::test_prevrandao[fork_Prague-blockchain_test_from_state_test-op_count_600000],prevrandao,600000,5063111,184799607,33.861 +test_marginal_opcodes.py::test_prevrandao[fork_Prague-blockchain_test_from_state_test-op_count_900000],prevrandao,900000,5663111,231902154,38.341 +test_marginal_opcodes.py::test_push0[fork_Prague-blockchain_test_from_state_test-op_count_0],push0,0,5135611,120498688,25.236 +test_marginal_opcodes.py::test_push0[fork_Prague-blockchain_test_from_state_test-op_count_1200000],push0,1200000,7535611,188906121,36.336 +test_marginal_opcodes.py::test_push0[fork_Prague-blockchain_test_from_state_test-op_count_400000],push0,400000,5935611,143355863,26.265 +test_marginal_opcodes.py::test_push0[fork_Prague-blockchain_test_from_state_test-op_count_800000],push0,800000,6735611,166104139,32.319 +test_marginal_opcodes.py::test_push16[fork_Prague-blockchain_test_from_state_test-op_count_0],push16,0,4343611,103268986,21.719 +test_marginal_opcodes.py::test_push16[fork_Prague-blockchain_test_from_state_test-op_count_1002000],push16,1002000,7349611,188488780,32.828 +test_marginal_opcodes.py::test_push16[fork_Prague-blockchain_test_from_state_test-op_count_334000],push16,334000,5345611,131676450,25.743 +test_marginal_opcodes.py::test_push16[fork_Prague-blockchain_test_from_state_test-op_count_668000],push16,668000,6347611,160136988,29.771 +test_marginal_opcodes.py::test_push1[fork_Prague-blockchain_test_from_state_test-op_count_0],push1,0,5135611,120499065,24.735 +test_marginal_opcodes.py::test_push1[fork_Prague-blockchain_test_from_state_test-op_count_1200000],push1,1200000,8735611,175710571,33.325 +test_marginal_opcodes.py::test_push1[fork_Prague-blockchain_test_from_state_test-op_count_240000],push1,240000,5855611,131541966,25.236 +test_marginal_opcodes.py::test_push1[fork_Prague-blockchain_test_from_state_test-op_count_480000],push1,480000,6575611,142584158,28.281 +test_marginal_opcodes.py::test_push1[fork_Prague-blockchain_test_from_state_test-op_count_720000],push1,720000,7295611,153625556,30.309 +test_marginal_opcodes.py::test_push1[fork_Prague-blockchain_test_from_state_test-op_count_960000],push1,960000,8015611,164667919,33.306 +test_marginal_opcodes.py::test_push32[fork_Prague-blockchain_test_from_state_test-op_count_0],push32,0,2363111,57963867,16.143 +test_marginal_opcodes.py::test_push32[fork_Prague-blockchain_test_from_state_test-op_count_105000],push32,105000,2678111,71100049,17.685 +test_marginal_opcodes.py::test_push32[fork_Prague-blockchain_test_from_state_test-op_count_210000],push32,210000,2993111,84238868,18.167 +test_marginal_opcodes.py::test_push32[fork_Prague-blockchain_test_from_state_test-op_count_315000],push32,315000,3308111,97374675,20.693 +test_marginal_opcodes.py::test_push32[fork_Prague-blockchain_test_from_state_test-op_count_420000],push32,420000,3623111,110513498,24.228 +test_marginal_opcodes.py::test_push32[fork_Prague-blockchain_test_from_state_test-op_count_525000],push32,525000,3938111,123649737,28.302 +test_marginal_opcodes.py::test_returndatacopy[fork_Prague-blockchain_test_from_state_test-op_count_0],returndatacopy,0,1674611,36697690,12.112 +test_marginal_opcodes.py::test_returndatacopy[fork_Prague-blockchain_test_from_state_test-op_count_120000],returndatacopy,120000,2758211,65356609,16.639 +test_marginal_opcodes.py::test_returndatacopy[fork_Prague-blockchain_test_from_state_test-op_count_180000],returndatacopy,180000,3298211,79637301,19.187 +test_marginal_opcodes.py::test_returndatacopy[fork_Prague-blockchain_test_from_state_test-op_count_60000],returndatacopy,60000,2218211,51074730,15.132 +test_marginal_opcodes.py::test_returndatasize[fork_Prague-blockchain_test_from_state_test-op_count_0],returndatasize,0,5135611,120498579,24.265 +test_marginal_opcodes.py::test_returndatasize[fork_Prague-blockchain_test_from_state_test-op_count_1200000],returndatasize,1200000,7535611,192506180,35.814 +test_marginal_opcodes.py::test_returndatasize[fork_Prague-blockchain_test_from_state_test-op_count_400000],returndatasize,400000,5935611,144555995,28.796 +test_marginal_opcodes.py::test_returndatasize[fork_Prague-blockchain_test_from_state_test-op_count_800000],returndatasize,800000,6735611,168504298,31.777 +test_marginal_opcodes.py::test_sar[fork_Prague-blockchain_test_from_state_test-op_count_0],sar,0,4763111,128447158,26.22 +test_marginal_opcodes.py::test_sar[fork_Prague-blockchain_test_from_state_test-op_count_150000],sar,150000,5213111,163698393,29.276 +test_marginal_opcodes.py::test_sar[fork_Prague-blockchain_test_from_state_test-op_count_300000],sar,300000,5663111,198948623,35.341 +test_marginal_opcodes.py::test_sar[fork_Prague-blockchain_test_from_state_test-op_count_450000],sar,450000,6113111,234200489,38.891 +test_marginal_opcodes.py::test_sdiv[fork_Prague-blockchain_test_from_state_test-op_count_0],sdiv,0,2247111,77077480,18.661 +test_marginal_opcodes.py::test_sdiv[fork_Prague-blockchain_test_from_state_test-op_count_140000],sdiv,140000,2947111,259359913,43.435 +test_marginal_opcodes.py::test_sdiv[fork_Prague-blockchain_test_from_state_test-op_count_210000],sdiv,210000,3297111,350520174,52.493 +test_marginal_opcodes.py::test_sdiv[fork_Prague-blockchain_test_from_state_test-op_count_70000],sdiv,70000,2597111,168218509,30.796 +test_marginal_opcodes.py::test_selfbalance[fork_Prague-blockchain_test_from_state_test-op_count_0],selfbalance,0,2590611,60689537,16.163 +test_marginal_opcodes.py::test_selfbalance[fork_Prague-blockchain_test_from_state_test-op_count_200000],selfbalance,200000,3590611,294719307,46.442 +test_marginal_opcodes.py::test_selfbalance[fork_Prague-blockchain_test_from_state_test-op_count_400000],selfbalance,400000,4590611,528694977,81.375 +test_marginal_opcodes.py::test_selfbalance[fork_Prague-blockchain_test_from_state_test-op_count_600000],selfbalance,600000,5590611,762697588,108.631 +test_marginal_opcodes.py::test_sgt[fork_Prague-blockchain_test_from_state_test-op_count_0],sgt,0,9480611,327108284,56.463 +test_marginal_opcodes.py::test_sgt[fork_Prague-blockchain_test_from_state_test-op_count_180000],sgt,180000,10020611,347628347,60.077 +test_marginal_opcodes.py::test_sgt[fork_Prague-blockchain_test_from_state_test-op_count_360000],sgt,360000,10560611,368149358,64.095 +test_marginal_opcodes.py::test_sgt[fork_Prague-blockchain_test_from_state_test-op_count_540000],sgt,540000,11100611,388670638,64.12 +test_marginal_opcodes.py::test_sgt[fork_Prague-blockchain_test_from_state_test-op_count_720000],sgt,720000,11640611,409190754,67.13 +test_marginal_opcodes.py::test_sgt[fork_Prague-blockchain_test_from_state_test-op_count_900000],sgt,900000,12180611,429792758,65.635 +test_marginal_opcodes.py::test_shl[fork_Prague-blockchain_test_from_state_test-op_count_0],shl,0,4763111,128446383,25.762 +test_marginal_opcodes.py::test_shl[fork_Prague-blockchain_test_from_state_test-op_count_150000],shl,150000,5213111,151098237,28.298 +test_marginal_opcodes.py::test_shl[fork_Prague-blockchain_test_from_state_test-op_count_300000],shl,300000,5663111,173748829,30.749 +test_marginal_opcodes.py::test_shl[fork_Prague-blockchain_test_from_state_test-op_count_450000],shl,450000,6113111,196400109,34.334 +test_marginal_opcodes.py::test_shr[fork_Prague-blockchain_test_from_state_test-op_count_0],shr,0,6335611,170950732,29.811 +test_marginal_opcodes.py::test_shr[fork_Prague-blockchain_test_from_state_test-op_count_200000],shr,200000,6935611,201752311,34.304 +test_marginal_opcodes.py::test_shr[fork_Prague-blockchain_test_from_state_test-op_count_400000],shr,400000,7535611,232553051,38.873 +test_marginal_opcodes.py::test_shr[fork_Prague-blockchain_test_from_state_test-op_count_600000],shr,600000,8135611,263355025,42.461 +test_marginal_opcodes.py::test_signextend[fork_Prague-blockchain_test_from_state_test-op_count_0],signextend,0,15770611,320934097,57.121 +test_marginal_opcodes.py::test_signextend[fork_Prague-blockchain_test_from_state_test-op_count_1000000],signextend,1000000,20770611,587937626,84.341 +test_marginal_opcodes.py::test_signextend[fork_Prague-blockchain_test_from_state_test-op_count_1500000],signextend,1500000,23270611,721573681,100.983 +test_marginal_opcodes.py::test_signextend[fork_Prague-blockchain_test_from_state_test-op_count_500000],signextend,500000,18270611,454436297,68.149 +test_marginal_opcodes.py::test_sload[fork_Prague-blockchain_test_from_state_test-op_count_0],sload,0,1933611,45579749,13.63 +test_marginal_opcodes.py::test_sload[fork_Prague-blockchain_test_from_state_test-op_count_132000],sload,132000,15133611,243633256,39.866 +test_marginal_opcodes.py::test_sload[fork_Prague-blockchain_test_from_state_test-op_count_198000],sload,198000,21733611,342582271,55.572 +test_marginal_opcodes.py::test_sload[fork_Prague-blockchain_test_from_state_test-op_count_66000],sload,66000,8533611,144581319,26.79 +test_marginal_opcodes.py::test_slt[fork_Prague-blockchain_test_from_state_test-op_count_0],slt,0,22060611,761944653,120.151 +test_marginal_opcodes.py::test_slt[fork_Prague-blockchain_test_from_state_test-op_count_1260000],slt,1260000,25840611,905586244,139.362 +test_marginal_opcodes.py::test_slt[fork_Prague-blockchain_test_from_state_test-op_count_1680000],slt,1680000,27100611,953467082,147.439 +test_marginal_opcodes.py::test_slt[fork_Prague-blockchain_test_from_state_test-op_count_2100000],slt,2100000,28360611,1001536992,142.008 +test_marginal_opcodes.py::test_slt[fork_Prague-blockchain_test_from_state_test-op_count_420000],slt,420000,23320611,809824404,129.19 +test_marginal_opcodes.py::test_slt[fork_Prague-blockchain_test_from_state_test-op_count_840000],slt,840000,24580611,857705866,136.305 +test_marginal_opcodes.py::test_smod[fork_Prague-blockchain_test_from_state_test-op_count_0],smod,0,6335611,218399446,39.372 +test_marginal_opcodes.py::test_smod[fork_Prague-blockchain_test_from_state_test-op_count_200000],smod,200000,7335611,298000064,47.47 +test_marginal_opcodes.py::test_smod[fork_Prague-blockchain_test_from_state_test-op_count_400000],smod,400000,8335611,377601450,58.065 +test_marginal_opcodes.py::test_smod[fork_Prague-blockchain_test_from_state_test-op_count_600000],smod,600000,9335611,457256662,68.209 +test_marginal_opcodes.py::test_sstore[fork_Prague-blockchain_test_from_state_test-op_count_0],sstore,0,718411,22672357,11.099 +test_marginal_opcodes.py::test_sstore[fork_Prague-blockchain_test_from_state_test-op_count_20400],sstore,20400,2778311,94077171,20.202 +test_marginal_opcodes.py::test_sstore[fork_Prague-blockchain_test_from_state_test-op_count_40800],sstore,40800,4818311,165476768,29.79 +test_marginal_opcodes.py::test_sstore[fork_Prague-blockchain_test_from_state_test-op_count_61200],sstore,61200,6858311,236875454,39.365 +test_marginal_opcodes.py::test_sub[fork_Prague-blockchain_test_from_state_test-op_count_0],sub,0,15770611,544526419,93.486 +test_marginal_opcodes.py::test_sub[fork_Prague-blockchain_test_from_state_test-op_count_1200000],sub,1200000,19370611,678929260,105.522 +test_marginal_opcodes.py::test_sub[fork_Prague-blockchain_test_from_state_test-op_count_1500000],sub,1500000,20270611,712665219,101.93 +test_marginal_opcodes.py::test_sub[fork_Prague-blockchain_test_from_state_test-op_count_300000],sub,300000,16670611,578126620,93.386 +test_marginal_opcodes.py::test_sub[fork_Prague-blockchain_test_from_state_test-op_count_600000],sub,600000,17570611,611727603,98.475 +test_marginal_opcodes.py::test_sub[fork_Prague-blockchain_test_from_state_test-op_count_900000],sub,900000,18470611,645328291,101.465 +test_marginal_opcodes.py::test_swap16[fork_Prague-blockchain_test_from_state_test-op_count_0],swap16,0,275611,9768258,7.563 +test_marginal_opcodes.py::test_swap16[fork_Prague-blockchain_test_from_state_test-op_count_100000],swap16,100000,575611,25769333,11.621 +test_marginal_opcodes.py::test_swap16[fork_Prague-blockchain_test_from_state_test-op_count_200000],swap16,200000,875611,41770605,13.641 +test_marginal_opcodes.py::test_swap16[fork_Prague-blockchain_test_from_state_test-op_count_300000],swap16,300000,1175611,57772381,17.679 +test_marginal_opcodes.py::test_swap1[fork_Prague-blockchain_test_from_state_test-op_count_0],swap1,0,200611,8626162,8.57 +test_marginal_opcodes.py::test_swap1[fork_Prague-blockchain_test_from_state_test-op_count_120000],swap1,120000,560611,27827991,11.099 +test_marginal_opcodes.py::test_swap1[fork_Prague-blockchain_test_from_state_test-op_count_180000],swap1,180000,740611,37427364,12.616 +test_marginal_opcodes.py::test_swap1[fork_Prague-blockchain_test_from_state_test-op_count_240000],swap1,240000,920611,47028668,15.147 +test_marginal_opcodes.py::test_swap1[fork_Prague-blockchain_test_from_state_test-op_count_300000],swap1,300000,1100611,56683434,17.18 +test_marginal_opcodes.py::test_swap1[fork_Prague-blockchain_test_from_state_test-op_count_60000],swap1,60000,380611,18253985,10.082 +test_marginal_opcodes.py::test_swap8[fork_Prague-blockchain_test_from_state_test-op_count_0],swap8,0,235611,9159839,8.578 +test_marginal_opcodes.py::test_swap8[fork_Prague-blockchain_test_from_state_test-op_count_100000],swap8,100000,535611,25161293,11.097 +test_marginal_opcodes.py::test_swap8[fork_Prague-blockchain_test_from_state_test-op_count_200000],swap8,200000,835611,41189234,13.628 +test_marginal_opcodes.py::test_swap8[fork_Prague-blockchain_test_from_state_test-op_count_300000],swap8,300000,1135611,57191415,17.669 +test_marginal_opcodes.py::test_timestamp[fork_Prague-blockchain_test_from_state_test-op_count_0],timestamp,0,5135611,120498958,26.308 +test_marginal_opcodes.py::test_timestamp[fork_Prague-blockchain_test_from_state_test-op_count_1200000],timestamp,1200000,7535611,198506116,36.342 +test_marginal_opcodes.py::test_timestamp[fork_Prague-blockchain_test_from_state_test-op_count_400000],timestamp,400000,5935611,146556162,29.305 +test_marginal_opcodes.py::test_timestamp[fork_Prague-blockchain_test_from_state_test-op_count_800000],timestamp,800000,6735611,172504303,33.831 +test_marginal_opcodes.py::test_tload[fork_Prague-blockchain_test_from_state_test-op_count_0],tload,0,9770611,254921878,48.001 +test_marginal_opcodes.py::test_tload[fork_Prague-blockchain_test_from_state_test-op_count_1000000],tload,1000000,109770611,499690565,82.257 +test_marginal_opcodes.py::test_tload[fork_Prague-blockchain_test_from_state_test-op_count_1500000],tload,1500000,159770611,619426017,99.452 +test_marginal_opcodes.py::test_tload[fork_Prague-blockchain_test_from_state_test-op_count_500000],tload,500000,59770611,376423803,63.148 +test_marginal_opcodes.py::test_tstore[fork_Prague-blockchain_test_from_state_test-op_count_0],tstore,0,1331611,52696934,15.638 +test_marginal_opcodes.py::test_tstore[fork_Prague-blockchain_test_from_state_test-op_count_132000],tstore,132000,14531611,262654110,43.418 +test_marginal_opcodes.py::test_tstore[fork_Prague-blockchain_test_from_state_test-op_count_198000],tstore,198000,21131611,367663625,56.511 +test_marginal_opcodes.py::test_tstore[fork_Prague-blockchain_test_from_state_test-op_count_66000],tstore,66000,7931611,157851872,28.76 +test_marginal_opcodes.py::test_xor[fork_Prague-blockchain_test_from_state_test-op_count_0],xor,0,15770611,544526509,85.81 +test_marginal_opcodes.py::test_xor[fork_Prague-blockchain_test_from_state_test-op_count_1000000],xor,1000000,18770611,616529147,100.499 +test_marginal_opcodes.py::test_xor[fork_Prague-blockchain_test_from_state_test-op_count_1500000],xor,1500000,20270611,652664871,109.068 +test_marginal_opcodes.py::test_xor[fork_Prague-blockchain_test_from_state_test-op_count_500000],xor,500000,17270611,580527847,96.578 +test_marginal_precompiles.py::test_marginal_blake2f[fork_Prague-blockchain_test_from_state_test-op_count_0],blake2f,0,49270,956693,6.569 +test_marginal_precompiles.py::test_marginal_blake2f[fork_Prague-blockchain_test_from_state_test-op_count_10],blake2f,10,704620,392214720,60.045 +test_marginal_precompiles.py::test_marginal_blake2f[fork_Prague-blockchain_test_from_state_test-op_count_5],blake2f,5,376945,196587333,34.315 +test_marginal_precompiles.py::test_marginal_bls12_g1add[fork_Prague-blockchain_test_from_state_test-op_count_0],bls12_g1add,0,140852,5646418,8.072 +test_marginal_precompiles.py::test_marginal_bls12_g1add[fork_Prague-blockchain_test_from_state_test-op_count_257],bls12_g1add,257,237227,84362700,19.169 +test_marginal_precompiles.py::test_marginal_bls12_g1add[fork_Prague-blockchain_test_from_state_test-op_count_514],bls12_g1add,514,333602,163043851,30.31 +test_marginal_precompiles.py::test_marginal_bls12_g1add[fork_Prague-blockchain_test_from_state_test-op_count_771],bls12_g1add,771,429977,241742874,40.399 +test_marginal_precompiles.py::test_marginal_bls12_g1msm[fork_Prague-blockchain_test_from_state_test-op_count_0],bls12_g1msm,0,54036,1105423,6.548 +test_marginal_precompiles.py::test_marginal_bls12_g1msm[fork_Prague-blockchain_test_from_state_test-op_count_13],bls12_g1msm,13,350124,111134594,24.229 +test_marginal_precompiles.py::test_marginal_bls12_g1msm[fork_Prague-blockchain_test_from_state_test-op_count_26],bls12_g1msm,26,646212,221157621,38.403 +test_marginal_precompiles.py::test_marginal_bls12_g1msm[fork_Prague-blockchain_test_from_state_test-op_count_39],bls12_g1msm,39,942300,331183342,53.066 +test_marginal_precompiles.py::test_marginal_bls12_g2add[fork_Prague-blockchain_test_from_state_test-op_count_0],bls12_g2add,0,106041,3665459,7.572 +test_marginal_precompiles.py::test_marginal_bls12_g2add[fork_Prague-blockchain_test_from_state_test-op_count_150],bls12_g2add,150,196041,76591591,17.704 +test_marginal_precompiles.py::test_marginal_bls12_g2add[fork_Prague-blockchain_test_from_state_test-op_count_300],bls12_g2add,300,286041,149515618,26.758 +test_marginal_precompiles.py::test_marginal_bls12_g2add[fork_Prague-blockchain_test_from_state_test-op_count_450],bls12_g2add,450,376041,222437843,37.848 +test_marginal_precompiles.py::test_marginal_bls12_g2msm[fork_Prague-blockchain_test_from_state_test-op_count_0],bls12_g2msm,0,55639,1015276,7.059 +test_marginal_precompiles.py::test_marginal_bls12_g2msm[fork_Prague-blockchain_test_from_state_test-op_count_16],bls12_g2msm,16,775639,203011126,37.391 +test_marginal_precompiles.py::test_marginal_bls12_g2msm[fork_Prague-blockchain_test_from_state_test-op_count_24],bls12_g2msm,24,1135639,304008054,49.451 +test_marginal_precompiles.py::test_marginal_bls12_g2msm[fork_Prague-blockchain_test_from_state_test-op_count_8],bls12_g2msm,8,415639,102014311,22.728 +test_marginal_precompiles.py::test_marginal_bls12_map_fp2_to_g2[fork_Prague-blockchain_test_from_state_test-op_count_0],bls12_map_fp2_to_g2,0,50640,1026852,7.071 +test_marginal_precompiles.py::test_marginal_bls12_map_fp2_to_g2[fork_Prague-blockchain_test_from_state_test-op_count_18],bls12_map_fp2_to_g2,18,479040,356622848,55.519 +test_marginal_precompiles.py::test_marginal_bls12_map_fp2_to_g2[fork_Prague-blockchain_test_from_state_test-op_count_27],bls12_map_fp2_to_g2,27,693240,534421958,79.201 +test_marginal_precompiles.py::test_marginal_bls12_map_fp2_to_g2[fork_Prague-blockchain_test_from_state_test-op_count_9],bls12_map_fp2_to_g2,9,264840,178828099,31.799 +test_marginal_precompiles.py::test_marginal_bls12_map_fp_to_g1[fork_Prague-blockchain_test_from_state_test-op_count_0],bls12_map_fp_to_g1,0,55508,1324525,6.554 +test_marginal_precompiles.py::test_marginal_bls12_map_fp_to_g1[fork_Prague-blockchain_test_from_state_test-op_count_25],bls12_map_fp_to_g1,25,193008,161297663,30.256 +test_marginal_precompiles.py::test_marginal_bls12_map_fp_to_g1[fork_Prague-blockchain_test_from_state_test-op_count_50],bls12_map_fp_to_g1,50,330508,321264024,50.957 +test_marginal_precompiles.py::test_marginal_bls12_map_fp_to_g1[fork_Prague-blockchain_test_from_state_test-op_count_75],bls12_map_fp_to_g1,75,468008,481232626,72.69 +test_marginal_precompiles.py::test_marginal_bls12_pairing[fork_Prague-blockchain_test_from_state_test-op_count_0],bls12_pairing,0,56915,927554,7.064 +test_marginal_precompiles.py::test_marginal_bls12_pairing[fork_Prague-blockchain_test_from_state_test-op_count_3],bls12_pairing,3,365615,308265945,48.993 +test_marginal_precompiles.py::test_marginal_bls12_pairing[fork_Prague-blockchain_test_from_state_test-op_count_6],bls12_pairing,6,674315,615598440,89.841 +test_marginal_precompiles.py::test_marginal_bls12_pairing[fork_Prague-blockchain_test_from_state_test-op_count_9],bls12_pairing,9,983015,922934573,131.263 +test_marginal_precompiles.py::test_marginal_bn128_add[fork_Prague-blockchain_test_from_state_test-op_count_0],bn128_add,0,143130,5815543,8.07 +test_marginal_precompiles.py::test_marginal_bn128_add[fork_Prague-blockchain_test_from_state_test-op_count_267],bn128_add,267,183180,7442871,8.588 +test_marginal_precompiles.py::test_marginal_bn128_add[fork_Prague-blockchain_test_from_state_test-op_count_534],bn128_add,534,223230,9064437,10.096 +test_marginal_precompiles.py::test_marginal_bn128_add[fork_Prague-blockchain_test_from_state_test-op_count_801],bn128_add,801,263280,10688648,12.618 +test_marginal_precompiles.py::test_marginal_bn128_mul[fork_Prague-blockchain_test_from_state_test-op_count_0],bn128_mul,0,55849,1305693,7.066 +test_marginal_precompiles.py::test_marginal_bn128_mul[fork_Prague-blockchain_test_from_state_test-op_count_24],bn128_mul,24,199849,12466747,13.62 +test_marginal_precompiles.py::test_marginal_bn128_mul[fork_Prague-blockchain_test_from_state_test-op_count_48],bn128_mul,48,343849,23624500,18.66 +test_marginal_precompiles.py::test_marginal_bn128_mul[fork_Prague-blockchain_test_from_state_test-op_count_72],bn128_mul,72,487849,34781700,24.717 +test_marginal_precompiles.py::test_marginal_bn128_pairing[fork_Prague-blockchain_test_from_state_test-op_count_0],bn128_pairing,0,52883,905555,7.061 +test_marginal_precompiles.py::test_marginal_bn128_pairing[fork_Prague-blockchain_test_from_state_test-op_count_2],bn128_pairing,2,278883,13151958,14.117 +test_marginal_precompiles.py::test_marginal_bn128_pairing[fork_Prague-blockchain_test_from_state_test-op_count_4],bn128_pairing,4,504883,25396888,17.664 +test_marginal_precompiles.py::test_marginal_bn128_pairing[fork_Prague-blockchain_test_from_state_test-op_count_6],bn128_pairing,6,730883,37639650,22.676 +test_marginal_precompiles.py::test_marginal_bn128_pairing[fork_Prague-blockchain_test_from_state_test-op_count_8],bn128_pairing,8,956883,49885324,27.762 +test_marginal_precompiles.py::test_marginal_ecrecover[fork_Prague-blockchain_test_from_state_test-op_count_0],ecrecover,0,71358,2100787,7.063 +test_marginal_precompiles.py::test_marginal_ecrecover[fork_Prague-blockchain_test_from_state_test-op_count_134],ecrecover,134,473358,6391982,12.111 +test_marginal_precompiles.py::test_marginal_ecrecover[fork_Prague-blockchain_test_from_state_test-op_count_201],ecrecover,201,674358,8538758,12.617 +test_marginal_precompiles.py::test_marginal_ecrecover[fork_Prague-blockchain_test_from_state_test-op_count_67],ecrecover,67,272358,4250337,9.576 +test_marginal_precompiles.py::test_marginal_identity[fork_Prague-blockchain_test_from_state_test-op_count_0],identity,0,219278111,10011517701,1389.967 +test_marginal_precompiles.py::test_marginal_identity[fork_Prague-blockchain_test_from_state_test-op_count_1000000],identity,1000000,246303111,10137952093,1401.576 +test_marginal_precompiles.py::test_marginal_identity[fork_Prague-blockchain_test_from_state_test-op_count_1500000],identity,1500000,259803111,10200500155,1478.596 +test_marginal_precompiles.py::test_marginal_identity[fork_Prague-blockchain_test_from_state_test-op_count_500000],identity,500000,232803111,10075452045,1388.871 +test_marginal_precompiles.py::test_marginal_modexp[fork_Prague-blockchain_test_from_state_test-op_count_0],modexp,0,66977,1099112,7.061 +test_marginal_precompiles.py::test_marginal_modexp[fork_Prague-blockchain_test_from_state_test-op_count_12],modexp,12,83357,63221488,16.152 +test_marginal_precompiles.py::test_marginal_modexp[fork_Prague-blockchain_test_from_state_test-op_count_24],modexp,24,99737,125326375,26.748 +test_marginal_precompiles.py::test_marginal_modexp[fork_Prague-blockchain_test_from_state_test-op_count_36],modexp,36,116117,187438664,33.827 +test_marginal_precompiles.py::test_marginal_point_evaluation[fork_Prague-blockchain_test_from_state_test-op_count_0],point_evaluation,0,49918,917485,6.564 +test_marginal_precompiles.py::test_marginal_point_evaluation[fork_Prague-blockchain_test_from_state_test-op_count_3],point_evaluation,3,199918,444186275,67.146 +test_marginal_precompiles.py::test_marginal_point_evaluation[fork_Prague-blockchain_test_from_state_test-op_count_6],point_evaluation,6,349918,887448591,126.724 +test_marginal_precompiles.py::test_marginal_point_evaluation[fork_Prague-blockchain_test_from_state_test-op_count_9],point_evaluation,9,499918,1330714918,185.819 +test_marginal_precompiles.py::test_marginal_ripemd160[fork_Prague-blockchain_test_from_state_test-op_count_0],ripemd160,0,240817,10189247,8.579 +test_marginal_precompiles.py::test_marginal_ripemd160[fork_Prague-blockchain_test_from_state_test-op_count_1000],ripemd160,1000,4680817,50215504,16.651 +test_marginal_precompiles.py::test_marginal_ripemd160[fork_Prague-blockchain_test_from_state_test-op_count_1500],ripemd160,1500,6900817,70227143,18.177 +test_marginal_precompiles.py::test_marginal_ripemd160[fork_Prague-blockchain_test_from_state_test-op_count_500],ripemd160,500,2460817,30406564,11.112 +test_marginal_precompiles.py::test_marginal_sha256[fork_Prague-blockchain_test_from_state_test-op_count_0],sha256,0,290575,10247319,8.069 +test_marginal_precompiles.py::test_marginal_sha256[fork_Prague-blockchain_test_from_state_test-op_count_1000],sha256,1000,1886575,30039977,23.722 +test_marginal_precompiles.py::test_marginal_sha256[fork_Prague-blockchain_test_from_state_test-op_count_1500],sha256,1500,2684575,39934103,31.26 +test_marginal_precompiles.py::test_marginal_sha256[fork_Prague-blockchain_test_from_state_test-op_count_500],sha256,500,1088575,20146074,16.626 diff --git a/www/docs/public/marginal-gas-benchmark/sp1/regression-sp1-both-20251228-194313.csv b/www/docs/public/marginal-gas-benchmark/sp1/regression-sp1-both-20251228-194313.csv new file mode 100644 index 00000000..d575c5d8 --- /dev/null +++ b/www/docs/public/marginal-gas-benchmark/sp1/regression-sp1-both-20251228-194313.csv @@ -0,0 +1,106 @@ +opcode,n_points,min_op_count,max_op_count,min_gas,max_gas,max_zkcycles,gas_per_op,gas_zkcycles_slope,gas_zkcycles_r2,gas_zkcycles_std_err,gas_proving_slope,gas_proving_r2,gas_proving_std_err,zkcycles_proving_slope,zkcycles_proving_r2,zkcycles_proving_std_err +add,4,0,900000,9480611,12180611,414492906,3.0,32.36170077777778,0.9999995316874608,0.015659732350432734,3.7752222222222206e-06,0.9987376663337316,9.490495570455183e-08,1.1665421289591385e-07,0.9986886689462686,2.989004312217839e-09 +addmod,4,0,201000,2803611,4411611,411794422,8.0,193.0006,0.9999999999359008,0.0010926218111422315,2.418190298507462e-05,0.9999304722959377,1.425835814182285e-07,1.2529445281285843e-07,0.99993060339758,7.380758918631357e-10 +address,4,0,900000,3863111,5663111,195002271,2.0,57.99776166666667,0.999999807699555,0.017984005285310932,7.418833333333334e-06,0.9953451501667813,3.5874561553650054e-07,1.279189982149896e-07,0.9953942419162912,6.152803582599097e-09 +and,4,0,600000,6335611,8135611,261656773,3.0,24.028687166666668,0.9999991374630132,0.01577989454063041,5.241833333333333e-06,0.9896684148168567,3.7871005473258505e-07,2.1814168906411204e-07,0.9896032156859683,1.5810392149794514e-08 +balance,4,0,300000,2398111,32398111,549036232,100.0,16.6001453,0.9999999999937546,2.9334501401115713e-05,2.42593e-06,0.9992522213495711,4.6925859608535215e-08,1.4613907978313207e-07,0.9992521870921582,2.8268990202985618e-09 +blobbasefee,4,0,1200000,5135611,7535611,222506569,2.0,42.496322375,0.9999996374466489,0.0180934919134651,6.621625000000001e-06,0.9940269915676795,3.6295021611097386e-07,1.5582323626872431e-07,0.9941142669673937,8.47811588316776e-09 +blobhash,4,0,1503000,9498611,14007611,340850737,3.0,22.340015435795078,0.9999991741926266,0.014355159703664085,1.924550898203593e-06,0.9644022201802117,2.614548840321815e-07,8.614002420139285e-08,0.9642211961244919,1.1733148390620173e-08 +byte,4,0,600000,6335611,8135611,220154993,3.0,27.335158166666666,0.9999999994895905,0.00043668267776665744,4.536166666666666e-06,0.9690978666276512,5.727754795729328e-07,1.659468793456829e-07,0.9691053562243761,2.0951262156718798e-08 +calldatacopy,4,0,600000,4559611,8159611,240179335,6.0,35.33455125,0.9999999999406033,0.0001925598666266084,4.138e-06,0.9723869156381413,4.930754675165551e-07,1.1710910056178313e-07,0.9723857480995949,1.3954780068674372e-08 +calldataload,4,0,501000,3196611,4699611,162306900,3.0,54.342856686626746,0.9999998564604156,0.014558389693522559,6.350299401197607e-06,0.998337642942446,1.8323255449621602e-07,1.1685466362700148e-07,0.9983116382561777,3.398057599732399e-09 +calldatasize,6,0,1200000,5135611,7535611,197306616,2.0,32.00405791666667,0.9999999603860854,0.0031849230289227575,5.478869047619046e-06,0.9780447438716847,4.104410754508303e-07,1.7119320258245403e-07,0.9780476826443639,1.2823798723460771e-08 +caller,4,0,1200000,5135611,7535611,259706778,2.0,57.996574,0.9999998069518445,0.018018565455736126,8.17125e-06,0.9845007849328504,7.249704735366748e-07,1.4088849825949833e-07,0.9844528339902521,1.2519549549134753e-08 +basefee,4,0,1200000,5135611,7535611,196106120,2.0,31.496380875,0.9999993370017817,0.01813434945141512,4.684375e-06,0.9865956736797001,3.8609088551142745e-07,1.4873340088061156e-07,0.9866758754517593,1.2221530547147066e-08 +callvalue,5,0,1200000,5135611,7535611,214106666,2.0,39.003098,0.9999999993710766,0.0005647254227982734,6.306499999999999e-06,0.9789228141125272,5.342688583128957e-07,1.616922233228126e-07,0.978922079615755,1.3698352042488532e-08 +chainid,4,0,1200000,5135611,7535611,196106598,2.0,31.496522875,0.9999993459157791,0.018012110059020536,5.040374999999999e-06,0.9999980528276533,4.97336656558068e-09,1.6002963489053445e-07,0.9999995227254778,7.817531610126485e-11 +codecopy,4,0,900000,6816611,12216611,417427357,6.0,47.067422388888886,0.9928617067677515,2.822007924725558,7.131555555555555e-06,0.9949930361237839,3.577226838187899e-07,1.5132203119765081e-07,0.9995577607513219,2.250670188134151e-09 +codesize,4,0,1200000,5135611,7535611,193706816,2.0,30.496432875,0.9999993045088965,0.0179837388021263,5.632875e-06,0.9863545274795972,4.6848197337250665e-07,1.8470288994498458e-07,0.986321693063052,1.5380327131135882e-08 +coinbase,4,0,1200000,5135611,7535611,259706902,2.0,57.996554875,0.9999998079006142,0.017974227255122283,8.247875e-06,0.985673132721752,7.031309777523735e-07,1.4220764716232517e-07,0.9855965078312611,1.2156044342247941e-08 +div,4,0,210000,2247111,3297111,398399962,5.0,306.0193097142857,0.9999999980803349,0.009480834548964558,3.897828571428571e-05,0.9973289576649047,1.4263592014035398e-06,1.2737224094471306e-07,0.9973330297437226,4.657456172920174e-09 +dup16,6,0,600000,2895611,4695611,101327887,3.0,16.993519603174605,0.9999853900861461,0.03247733172848941,3.5415873015873006e-06,0.9449213207034647,4.2752536947763616e-07,2.0853561444885786e-07,0.9460917063834021,2.488922737397041e-08 +dup1,6,0,900000,4095611,6795611,148132282,3.0,17.001197513227513,0.9999999997441706,0.0001359642425124317,3.046084656084655e-06,0.8878988039584207,5.411720531415183e-07,1.7916950555183306e-07,0.8879055061900751,3.1830456342401125e-08 +dup8,6,0,900000,4200611,6900611,149809820,3.0,17.022772433862436,0.9999978925509531,0.012356039755350623,3.208571428571428e-06,0.9216952264014266,4.6760825156071744e-07,1.884806825009138e-07,0.9216353155964264,2.7480048227386382e-08 +eq,4,0,450000,4763111,6113111,297738989,3.0,99.02980044444445,0.9999999498533558,0.01568093138786335,1.4677999999999997e-05,0.9872032809093597,1.1816746225506655e-06,1.4821824876538496e-07,0.9872065046220763,1.1931012040918102e-08 +exp,4,0,2250,70286,3692786,319045626,1610.0,87.57745200828157,0.9999999999994429,4.622189547980292e-05,1.202824016563147e-05,0.9968401514633416,4.788587910911056e-07,1.3734402409050526e-07,0.9968400707070421,5.4679018305702775e-09 +extcodecopy,4,0,102000,1592111,14282111,241916048,124.37058823529412,15.745667872747745,0.9999988849045525,0.011757157936722126,2.303004310043846e-06,0.9967399692714106,9.313215726495891e-08,1.46256957841777e-07,0.9966624616849442,5.98467564129571e-09 +extcodehash,5,0,200000,1948111,21948111,490882382,100.0,22.14581262,0.9999999607918993,0.002531738840254469,3.2418e-06,0.9982015834799919,7.944409187179273e-08,1.4638448893845913e-07,0.9982037549394602,3.58515244659014e-09 +extcodesize,4,0,198000,1934111,21734111,376380558,100.0,16.66007116666667,0.9999999999671616,6.750762665926769e-05,2.2462575757575756e-06,0.9978358402903544,7.397068854622778e-08,1.3482877942563325e-07,0.9978353825869567,4.440467841449484e-09 +gas,4,0,1200000,5135611,7535611,192506753,2.0,29.9964225,0.9999992929895913,0.017834770349393108,5.508124999999999e-06,0.983599542145875,5.029300864682875e-07,1.8363163303487569e-07,0.9836598991736338,1.6735449481287464e-08 +gaslimit,4,0,1200000,5135611,7535611,192506450,2.0,29.9965515,0.999999277340679,0.01803114447289288,4.787375e-06,0.9959103587700681,2.1692765931296068e-07,1.5960489444710117e-07,0.9960032106348509,7.149183902815958e-09 +gasprice,4,0,1200000,5135611,7535611,217706736,2.0,40.496438125,0.9999996068213051,0.017955475155980335,6.497999999999999e-06,0.9994817529361745,1.0462746412869185e-07,1.604604623296073e-07,0.9995058900564829,2.5227380600477452e-09 +gt,4,0,600000,6335611,8135611,267656911,3.0,27.362232166666665,0.999999346542394,0.015640310702518756,3.841666666666668e-06,0.9896215580544888,2.7818658806236094e-07,1.4039258797341242e-07,0.9895129431207514,1.0219867238270273e-08 +iszero,6,0,1350000,9930611,13980611,388290438,3.0,19.334932839506173,0.9999999991013113,0.00028981262984715487,2.295590828924161e-06,0.8634217014774269,4.5650322955216167e-07,1.1872793088856874e-07,0.8634260208738591,2.360990929949597e-08 +jump,6,0,600000,2880611,7680611,109504936,8.0,7.875464255952381,0.9999999997419038,6.326113559475258e-05,8.797619047619046e-07,0.8974512649307723,1.486944892674608e-07,1.1170945036762575e-07,0.8974550980357288,1.8880373957740498e-08 +jumpdest,4,0,2400000,625611,3025611,93712846,1.0,26.0043715,0.9999999999555691,0.00012256710711588484,4.097374999999999e-06,0.9930127065522265,2.430344304311641e-07,1.5756494209962417e-07,0.9930138164465341,9.345164419662449e-09 +jumpi,4,0,1005000,7805611,17855611,282137245,10.0,11.60029880597015,0.9999999994714257,0.00018858502262183736,2.0888358208955223e-06,0.9972432470821537,7.765826401710012e-08,1.800672085655558e-07,0.9972409594729688,6.6972825279269156e-09 +keccak256,4,0,24000,930611,38514611,701869291,1566.0,17.776535089399744,0.999999999998832,1.3584545145774077e-05,6.679677522349935e-06,0.9991572903727656,1.371710760290379e-07,3.7575812730382977e-07,0.9991572942013479,7.716394884731425e-09 +log0,6,0,120000,957611,45957611,46485358,375.0,0.5557522190476191,0.994411250284305,0.020831738999577513,1.4905396825396827e-07,0.9268242464007048,2.0941050086736248e-08,2.696681295316431e-07,0.942249528438275,3.338062240679955e-08 +log1,4,0,81000,934611,82444611,66442856,1006.2666666666667,0.562811124378543,0.9997166089917173,0.006700423523569958,1.3750101387837457e-07,0.9994979074098097,2.179173776738972e-09,2.441920127758315e-07,0.9988066748285487,5.968361765500893e-09 +log2,4,0,42000,661611,133623111,55466713,3165.675,0.30779930393421445,0.9999264332757148,0.001866849553452308,7.96902605864258e-08,0.9756223501195828,8.907283933806997e-09,2.58767604746703e-07,0.9746715199931792,2.9496489643086497e-08 +log3,4,0,35700,693111,127102611,55007279,3540.794117647059,0.316040999440685,0.9998920859217976,0.002321618821105207,6.828634678786847e-08,0.9979148814438621,2.2071787614348197e-09,2.1607542050364163e-07,0.9980911307001195,6.681798389554871e-09 +log4,4,0,27300,649011,107560011,47815613,3916.0384615384614,0.3135545621400139,0.9997668682207741,0.003385707964107944,7.813894433590374e-08,0.9897490361121377,5.623055237715712e-09,2.490275321784854e-07,0.9885809690063594,1.892521709168957e-08 +lt,4,0,600000,6335611,8135611,267656406,3.0,27.361945,0.9999993471560984,0.01563280048942135,3.9486666666666674e-06,0.9971187396748334,1.5009052823768875e-07,1.4430601630879288e-07,0.9970318258877725,5.567492179657779e-09 +call,4,0,49500,1208611,6161111,366392108,100.04545454545455,68.83622547011024,0.9999985770369577,0.058062959713617926,9.27046768646925e-06,0.9931649435415396,5.438097739824293e-07,1.3466920316000327e-07,0.9930917825705328,7.942214232018646e-09 +callcode,4,0,49500,1208611,6161111,356722458,100.04545454545455,66.90568448001204,0.9999985080441935,0.057786491051561126,9.262009263155192e-06,0.9990535660499479,2.0157700181314656e-07,1.384296542009279e-07,0.998994976940148,3.1047061161495063e-09 +create2,4,0,4200,200711,134684711,117657462,32020.0,0.8390654144730971,0.9996880982341579,0.010479908198260399,1.497947711251896e-07,0.9996757582456567,1.907596626790555e-09,1.7842999439190255e-07,0.998915370485806,4.157470967392177e-09 +create,4,0,4200,123811,134557411,111696632,32008.0,0.8047628003713357,0.9996139416195039,0.011183126442926412,1.5091762773592316e-07,0.9997111968892336,1.8137967833385833e-09,1.8742962102756587e-07,0.9990208502449799,4.1491631568892485e-09 +delegatecall,4,0,49500,1058611,6011111,302121319,100.04545454545455,56.47693308447793,0.9999999174917785,0.011471091335964533,7.550586719630437e-06,0.9999178456607319,4.8394810757070845e-08,1.3369300096630956e-07,0.9999136771392086,8.783656264663616e-10 +staticcall,4,0,49500,1058611,6011111,353790851,100.04545454545455,66.80361190510513,0.9999999185726719,0.01347938433318753,8.97370258888754e-06,0.9999472356010137,4.6093387845636675e-08,1.343293181614338e-07,0.9999430935867059,7.165537559309391e-10 +mcopy,4,0,60000,642011,6604211,100426617,99.333,14.804956367004586,0.9999962308507353,0.02032425432226991,2.0885607350416806e-06,0.9950712750952573,1.039375093906267e-07,1.410527814420891e-07,0.9948077982609744,7.205644723623509e-09 +mload,4,0,1002000,6371611,9377611,323757292,3.0,54.00743652694611,0.9999998611739994,0.014228987648300617,6.549999999999998e-06,0.9754838125703289,7.342479372707298e-07,1.2127883841780835e-07,0.9754717858790609,1.3598645079783784e-08 +mod,4,0,210000,2247111,3297111,345269919,5.0,255.419852,0.9999999972066096,0.009545649207051358,3.1868571428571426e-05,0.9997055983556128,3.867066599068754e-07,1.2476925613899556e-07,0.9997039390975863,1.518264423651748e-09 +msize,5,0,1200000,5159611,7559611,193384132,2.0,30.0030565,0.9999999998800371,0.00018972667776476516,3.964666666666667e-06,0.9917284918913518,2.0904606970536226e-07,1.321419769969329e-07,0.9917267586261036,6.968222420190934e-09 +mstore8,4,0,1002000,5369611,8375611,198346244,3.0,26.005769361277444,0.9999994864462047,0.013177948070243651,3.363273453093811e-06,0.9734687361381057,3.9261342591657684e-07,1.29334643092641e-07,0.9735696431901678,1.5068425398846777e-08 +mstore,4,0,501000,2707611,4210611,194412769,3.0,62.697620558882235,0.9999994610983871,0.03254549790610252,9.768263473053896e-06,0.9945623256333216,5.107318752712866e-07,1.5580363518362148e-07,0.9946145291526082,8.10675463692777e-09 +mul,4,0,600000,6335611,9335611,400256656,5.0,60.6173307,0.9999999515941701,0.009430411766148217,7.335e-06,0.989172342212752,5.426457407922665e-07,1.2100423387876358e-07,0.9891598919385413,8.95713510730474e-09 +mulmod,4,0,210000,2920611,4600611,814995628,8.0,422.25215214285714,0.9999999999903921,0.0009254872376711245,5.2679285714285715e-05,0.9999207716093799,3.3157555238425715e-07,1.2475788376079362e-07,0.999920741267822,7.854052021738358e-10 +not,6,0,900000,6635611,9335611,256481833,3.0,18.335645026455026,0.9999999944642679,0.000682108921892628,1.8857142857142858e-06,0.9311734774709063,2.563353550805108e-07,1.0284393731514932e-07,0.9311691786529456,1.3980602213226807e-08 +number,4,0,1200000,5135611,7535611,198506894,2.0,32.49672775,0.9999993933398336,0.01789771160807525,4.656625e-06,0.9842589841142738,4.1640693362983e-07,1.4330909859136552e-07,0.9844505657614281,1.2735591077801569e-08 +or,6,0,900000,9480611,12180611,391992349,3.0,24.022653756613757,0.9999989507200574,0.012303733042710423,3.0239682539682532e-06,0.8897385936082842,5.322648429410705e-07,1.258958611737569e-07,0.8899657616351933,2.213394001350579e-08 +origin,4,0,1200000,5135611,7535611,259706612,2.0,57.99636525,0.9999998096909815,0.01789021272281251,8.09875e-06,0.9678468679398408,1.043785628134438e-06,1.396381654023367e-07,0.9677887446108497,1.801368974946327e-08 +pc,4,0,1200000,5135611,7535611,197306746,2.0,31.996414375,0.9999993730343028,0.017914650546194347,5.428125e-06,0.9565493366472069,8.180490797470541e-07,1.6962480206374443e-07,0.9562893073589738,2.5643278576350472e-08 +pop,6,0,1800000,4080611,7680611,180307995,2.0,15.001975436507937,0.9999999995478863,0.00015949323921999884,9.561507936507936e-07,0.7252041837353649,2.942871519002803e-07,6.373515712269956e-08,0.7252079277551933,1.961642640200089e-08 +prevrandao,4,0,900000,3863111,5663111,231902154,2.0,78.4975095,0.9999998963771115,0.01786770402132145,1.0608e-05,0.9903503367076032,7.40423452416851e-07,1.3513763562513242e-07,0.9903444338074465,9.435329227212471e-09 +push0,4,0,1200000,5135611,7535611,188906121,2.0,28.496321875,0.9999991981677636,0.018043290446968844,4.9192499999999995e-06,0.9424843627555902,8.592900594386037e-07,1.725894417070335e-07,0.9420691367296377,3.02630599509572e-08 +push16,4,0,1002000,4343611,7349611,188488780,3.0,28.355281437125747,0.9999994836420119,0.014407695672234513,3.7280439121756494e-06,0.9959843102974048,1.673862756210122e-07,1.3148139495590427e-07,0.9960639298970205,5.84436203535093e-09 +push1,6,0,1200000,5135611,8735611,175710571,3.0,15.336380436507936,0.9999999996838951,0.00013633535876361028,2.745555555555556e-06,0.9551194498381818,2.9757776786035275e-07,1.7902191941886067e-07,0.9551143760802592,1.9404486553537595e-08 +push32,6,0,525000,2363111,3938111,123649737,3.0,41.705714648526076,0.999999999167686,0.0006016018605106801,7.5238095238095236e-06,0.9243788772105892,1.0759803762389108e-06,1.8040217532053252e-07,0.9243769422113374,2.5799681192525547e-08 +returndatacopy,4,0,180000,1674611,3298211,79637301,9.018,26.447237924739568,0.9999999996092162,0.0003696865310021514,4.20182026237099e-06,0.9857173309720243,3.5764401619934547e-07,1.588755535437042e-07,0.9857170041583202,1.3523079759778505e-08 +returndatasize,4,0,1200000,5135611,7535611,192506180,2.0,29.99638825,0.9999992725890604,0.018090227992418512,4.7035e-06,0.994373522784048,2.5017831141007977e-07,1.5681184138137594e-07,0.9944963934174941,8.248708211999267e-09 +sar,4,0,450000,4763111,6113111,234200489,3.0,78.33560511111111,0.9999999999278493,0.0004705053531684294,9.795111111111111e-06,0.983928553522638,8.851972787024497e-07,1.2504024041442332e-07,0.9839269031829495,1.1300643247465179e-08 +sdiv,4,0,210000,2247111,3297111,350520174,5.0,260.41985314285716,0.9999999973627889,0.009456524264167602,3.261e-05,0.9951090271594526,1.6165833206652596e-06,1.2522042042717899e-07,0.9951019195811913,6.212112804584442e-09 +selfbalance,4,0,600000,2590611,5590611,762697588,5.0,233.9999823,0.9999999981270178,0.007160900738530316,3.12337e-05,0.9979770653586543,9.94349551214246e-07,1.334772527405901e-07,0.9979754554931994,4.2510478717306566e-09 +sgt,6,0,900000,9480611,12180611,429792758,3.0,38.02279740740741,0.9999995752760598,0.01238989234415101,3.547301587301587e-06,0.8265108877510282,8.126058423910353e-07,9.32711217515801e-08,0.8261046523642338,2.1396545020399005e-08 +shl,4,0,450000,4763111,6113111,196400109,3.0,50.335948888888886,0.9999999998937801,0.00036683118666610534,6.2593333333333355e-06,0.9912690571512269,4.1538219794590714e-07,1.2435114166425336e-07,0.9912688601704608,8.25229071532861e-09 +shr,4,0,600000,6335611,8135611,263355025,3.0,51.335603166666665,0.9999999999464813,0.0002655563138664201,7.086499999999998e-06,0.9971251238160508,2.690614861575965e-07,1.3804255545262398e-07,0.9971245179338799,5.241778035245843e-09 +signextend,4,0,1500000,15770611,23270611,721573681,5.0,53.41680324,0.9999999394552168,0.00929397015061443,5.91112e-06,0.9918336997201026,3.792695885514674e-07,1.1066205164962346e-07,0.9918649822965538,7.086579966061538e-09 +sload,4,0,198000,1933611,21733611,342582271,100.0,15.00090156060606,0.9999999619394223,0.002069379104293995,2.1045757575757577e-06,0.997942623444729,6.756996170280091e-08,1.4029550582235057e-07,0.9979268378618168,4.521640649721006e-09 +slt,6,0,2100000,22060611,28360611,1001536992,3.0,38.02199789115646,0.9999995749928722,0.01239376156758804,3.788866213151928e-06,0.8387572242377838,8.306178707892926e-07,9.962253626410985e-08,0.8383067685467147,2.187620741411662e-08 +smod,4,0,600000,6335611,9335611,457256662,5.0,79.6173034,0.9999999720493569,0.009412139926416678,9.710600000000002e-06,0.9968685200759525,3.848459691876736e-07,1.2196658032469066e-07,0.9968788610416324,4.825709876293264e-09 +sstore,4,0,61200,718411,6858311,236875454,100.29264705882353,34.898110389910705,0.9999944186203729,0.05829870497714829,4.61310207127213e-06,0.9997825796790982,4.810335303115512e-08,1.3219159913837927e-07,0.9998466547727569,1.1575967298742521e-09 +sub,6,0,1500000,15770611,20270611,712665219,3.0,37.35563834920635,0.9999995588081119,0.012406235525744408,2.5910476190476205e-06,0.7971353334466066,6.535556519332132e-07,6.934149353951217e-08,0.7966731305332009,1.751541767626339e-08 +swap16,4,0,300000,275611,1175611,57772381,3.0,53.33788033333333,0.9999999999003588,0.00037647851346749565,1.0789333333333332e-05,0.9845385688522201,9.560664783952558e-07,2.0228280000499278e-07,0.9845390155012543,1.7924459368712178e-08 +swap1,6,0,300000,200611,1100611,56683434,3.0,53.36663206349206,0.9999987196365584,0.030193030836373733,9.486031746031744e-06,0.9781465622773284,7.089449184917571e-07,1.7777076910815205e-07,0.9783531224869807,1.3221482906085333e-08 +swap8,4,0,300000,235611,1135611,57191415,3.0,53.374223,0.9999998934294365,0.01232069543824304,9.934666666666668e-06,0.9846731517369979,8.764329219436342e-07,1.8612943922058802e-07,0.9846430326488457,1.6436653330825372e-08 +timestamp,4,0,1200000,5135611,7535611,198506116,2.0,32.496201875,0.9999993811650016,0.018076118271360353,4.3285e-06,0.9886704561766756,3.276444814887026e-07,1.3319355749654445e-07,0.9885727322708647,1.0125934378750583e-08 +tload,4,0,1500000,9770611,159770611,619426017,100.0,2.433558358,0.9999705177305026,0.009343586821380995,3.46924e-07,0.9981589086717582,1.0535548965289109e-08,1.425629222102414e-07,0.9982527366005837,4.217455667292012e-09 +tstore,4,0,198000,1331611,21131611,367663625,100.0,15.90458046969697,0.9999996194547041,0.006937619573955418,2.0799545454545456e-06,0.9994897580175488,3.323056817384702e-08,1.3077547047591225e-07,0.9994655814637471,2.13829750103165e-09 +xor,4,0,1500000,15770611,20270611,652664871,3.0,24.02775906666667,0.9999991656816941,0.01551902161930924,4.9129999999999985e-06,0.9720233422820242,5.893744895131516e-07,2.044721889261266e-07,0.9720275132454514,2.4527060816611545e-08 +blake2f,3,0,10,49270,704620,392214720,65535.00000000001,597.021480125124,0.999999999976958,0.002865828273814117,8.159914549477378e-05,0.9995264822353969,1.7760557605654742e-06,1.3667708237437523e-07,0.9995266910724676,2.9742046587224985e-09 +bls12_g1add,4,0,771,140852,429977,241742874,375.0,816.5712259403372,0.9999999930590562,0.04810479194177447,0.00011218884565499352,0.9994629627415954,1.8388806279165722e-06,1.3739019868557753e-07,0.9994636345905537,2.2505446641720497e-09 +bls12_g1msm,4,0,39,54036,942300,331183342,22776.0,371.5978979222393,0.9999999998863154,0.002801619185522887,5.191969954878279e-05,0.9974039784155215,1.8729913608857234e-06,1.3972018317294527e-07,0.9974050088117205,5.039370853584816e-09 +bls12_g2add,4,0,450,106041,376041,222437843,600.0,810.2679766666666,0.9999999998563065,0.006868030912609007,0.00011098,0.9985700885451692,2.969579926230739e-06,1.369669987005728e-07,0.9985696011406783,3.665560134414787e-09 +bls12_g2msm,4,0,24,55639,1135639,304008054,45000.0,280.5486525,0.999999999972903,0.001032651369534824,3.939972222222222e-05,0.9966474342614964,1.6158313754690852e-06,1.4043814255518032e-07,0.9966479114298767,5.759130784882332e-09 +bls12_map_fp2_to_g2,4,0,27,50640,693240,534421958,23800.0,830.0560536881419,0.9999999999554754,0.0039164489237462135,0.00011209617180205416,0.999888803913721,8.358814388197018e-07,1.3504651523162917e-07,0.9998889055641074,1.0065576721051898e-09 +bls12_map_fp_to_g1,4,0,75,55508,468008,481232626,5500.0,1163.411392,0.9999999999280187,0.006979562277205852,0.00015935199999999997,0.9992579803015778,3.0705164289572594e-06,1.3696963767214446e-07,0.9992584422260581,2.6384136920980922e-09 +bls12_pairing,4,0,9,56915,983015,922934573,102900.0,995.5793819241983,0.9999999999876779,0.002471177970589259,0.0001339310009718173,0.9999764581060732,4.595067847351805e-07,1.3452568993319389e-07,0.9999764919379723,4.6121534584595904e-10 +bn128_add,4,0,801,143130,263280,10688648,150.0,40.55151310861423,0.9999995478721952,0.019280698883440327,3.7832709113607995e-05,0.919569199790951,7.911729490809753e-06,9.328362484994597e-07,0.9193368859933163,1.953847057502196e-07 +bn128_mul,4,0,72,55849,487849,34781700,6000.0,77.49012083333334,0.9999999934289974,0.004441678931878957,4.027291666666667e-05,0.9977331968262626,1.3573685436998979e-06,5.19718111893017e-07,0.997738288223901,1.7496982784994374e-08 +bn128_pairing,5,0,8,52883,956883,49885324,113000.0,54.18019026548673,0.9999999977734131,0.0014760454323717747,2.2106637168141594e-05,0.9908693912354802,1.225190770599027e-06,4.0802178756619594e-07,0.9908748541143689,2.2606494923386518e-08 +ecrecover,4,0,201,71358,674358,8538758,3000.0,10.67440696517413,0.9999995472647545,0.0050786818743850885,9.550746268656719e-06,0.9380284994090501,1.7358424271681829e-06,8.947351818779787e-07,0.9380330862126616,1.6261116891721124e-07 +identity,4,0,1500000,219278111,259803111,10200500155,27.015,4.659995097973224,0.9999749450392473,0.016493877551106397,2.062032223096305e-06,0.7009525255013414,9.523711193540234e-07,4.4140696813280767e-07,0.6975219519949675,2.0553802435684043e-07 +modexp,4,0,36,66977,116117,187438664,1365.0,3791.963021978022,0.9999999970753866,0.1450051183592468,0.0005549084249084249,0.9945274808548635,2.9106606291275555e-05,1.4633797556023816e-07,0.994526649036809,7.676450979376507e-09 +point_evaluation,4,0,9,49918,499918,1330714918,50000.0,2955.1030766666668,0.9999999999928613,0.005583007838561766,0.0003982286666666667,0.9999682557901107,1.5865606407187934e-06,1.3475965470848195e-07,0.9999682737406723,5.367366064155423e-10 +ripemd160,4,0,1500,240817,6900817,70227143,4440.0,9.005523783783783,0.9999853656163727,0.024360397763036667,1.5465315315315315e-06,0.9559346518726902,2.3478928951280816e-07,1.7164752221801169e-07,0.9550146519667906,2.634226205773875e-08 +sha256,4,0,1500,290575,2684575,39934103,1596.0,12.400282581453634,0.9999999864282496,0.0010214909398766246,9.60764411027569e-06,0.9985029232736955,2.6305664002611595e-07,7.747957366493862e-07,0.998511659951401,2.1151771109452608e-08 diff --git a/www/docs/public/marginal-gas-benchmark/sp1/regression-sp1-both-20251229-210808.csv b/www/docs/public/marginal-gas-benchmark/sp1/regression-sp1-both-20251229-210808.csv new file mode 100644 index 00000000..d575c5d8 --- /dev/null +++ b/www/docs/public/marginal-gas-benchmark/sp1/regression-sp1-both-20251229-210808.csv @@ -0,0 +1,106 @@ +opcode,n_points,min_op_count,max_op_count,min_gas,max_gas,max_zkcycles,gas_per_op,gas_zkcycles_slope,gas_zkcycles_r2,gas_zkcycles_std_err,gas_proving_slope,gas_proving_r2,gas_proving_std_err,zkcycles_proving_slope,zkcycles_proving_r2,zkcycles_proving_std_err +add,4,0,900000,9480611,12180611,414492906,3.0,32.36170077777778,0.9999995316874608,0.015659732350432734,3.7752222222222206e-06,0.9987376663337316,9.490495570455183e-08,1.1665421289591385e-07,0.9986886689462686,2.989004312217839e-09 +addmod,4,0,201000,2803611,4411611,411794422,8.0,193.0006,0.9999999999359008,0.0010926218111422315,2.418190298507462e-05,0.9999304722959377,1.425835814182285e-07,1.2529445281285843e-07,0.99993060339758,7.380758918631357e-10 +address,4,0,900000,3863111,5663111,195002271,2.0,57.99776166666667,0.999999807699555,0.017984005285310932,7.418833333333334e-06,0.9953451501667813,3.5874561553650054e-07,1.279189982149896e-07,0.9953942419162912,6.152803582599097e-09 +and,4,0,600000,6335611,8135611,261656773,3.0,24.028687166666668,0.9999991374630132,0.01577989454063041,5.241833333333333e-06,0.9896684148168567,3.7871005473258505e-07,2.1814168906411204e-07,0.9896032156859683,1.5810392149794514e-08 +balance,4,0,300000,2398111,32398111,549036232,100.0,16.6001453,0.9999999999937546,2.9334501401115713e-05,2.42593e-06,0.9992522213495711,4.6925859608535215e-08,1.4613907978313207e-07,0.9992521870921582,2.8268990202985618e-09 +blobbasefee,4,0,1200000,5135611,7535611,222506569,2.0,42.496322375,0.9999996374466489,0.0180934919134651,6.621625000000001e-06,0.9940269915676795,3.6295021611097386e-07,1.5582323626872431e-07,0.9941142669673937,8.47811588316776e-09 +blobhash,4,0,1503000,9498611,14007611,340850737,3.0,22.340015435795078,0.9999991741926266,0.014355159703664085,1.924550898203593e-06,0.9644022201802117,2.614548840321815e-07,8.614002420139285e-08,0.9642211961244919,1.1733148390620173e-08 +byte,4,0,600000,6335611,8135611,220154993,3.0,27.335158166666666,0.9999999994895905,0.00043668267776665744,4.536166666666666e-06,0.9690978666276512,5.727754795729328e-07,1.659468793456829e-07,0.9691053562243761,2.0951262156718798e-08 +calldatacopy,4,0,600000,4559611,8159611,240179335,6.0,35.33455125,0.9999999999406033,0.0001925598666266084,4.138e-06,0.9723869156381413,4.930754675165551e-07,1.1710910056178313e-07,0.9723857480995949,1.3954780068674372e-08 +calldataload,4,0,501000,3196611,4699611,162306900,3.0,54.342856686626746,0.9999998564604156,0.014558389693522559,6.350299401197607e-06,0.998337642942446,1.8323255449621602e-07,1.1685466362700148e-07,0.9983116382561777,3.398057599732399e-09 +calldatasize,6,0,1200000,5135611,7535611,197306616,2.0,32.00405791666667,0.9999999603860854,0.0031849230289227575,5.478869047619046e-06,0.9780447438716847,4.104410754508303e-07,1.7119320258245403e-07,0.9780476826443639,1.2823798723460771e-08 +caller,4,0,1200000,5135611,7535611,259706778,2.0,57.996574,0.9999998069518445,0.018018565455736126,8.17125e-06,0.9845007849328504,7.249704735366748e-07,1.4088849825949833e-07,0.9844528339902521,1.2519549549134753e-08 +basefee,4,0,1200000,5135611,7535611,196106120,2.0,31.496380875,0.9999993370017817,0.01813434945141512,4.684375e-06,0.9865956736797001,3.8609088551142745e-07,1.4873340088061156e-07,0.9866758754517593,1.2221530547147066e-08 +callvalue,5,0,1200000,5135611,7535611,214106666,2.0,39.003098,0.9999999993710766,0.0005647254227982734,6.306499999999999e-06,0.9789228141125272,5.342688583128957e-07,1.616922233228126e-07,0.978922079615755,1.3698352042488532e-08 +chainid,4,0,1200000,5135611,7535611,196106598,2.0,31.496522875,0.9999993459157791,0.018012110059020536,5.040374999999999e-06,0.9999980528276533,4.97336656558068e-09,1.6002963489053445e-07,0.9999995227254778,7.817531610126485e-11 +codecopy,4,0,900000,6816611,12216611,417427357,6.0,47.067422388888886,0.9928617067677515,2.822007924725558,7.131555555555555e-06,0.9949930361237839,3.577226838187899e-07,1.5132203119765081e-07,0.9995577607513219,2.250670188134151e-09 +codesize,4,0,1200000,5135611,7535611,193706816,2.0,30.496432875,0.9999993045088965,0.0179837388021263,5.632875e-06,0.9863545274795972,4.6848197337250665e-07,1.8470288994498458e-07,0.986321693063052,1.5380327131135882e-08 +coinbase,4,0,1200000,5135611,7535611,259706902,2.0,57.996554875,0.9999998079006142,0.017974227255122283,8.247875e-06,0.985673132721752,7.031309777523735e-07,1.4220764716232517e-07,0.9855965078312611,1.2156044342247941e-08 +div,4,0,210000,2247111,3297111,398399962,5.0,306.0193097142857,0.9999999980803349,0.009480834548964558,3.897828571428571e-05,0.9973289576649047,1.4263592014035398e-06,1.2737224094471306e-07,0.9973330297437226,4.657456172920174e-09 +dup16,6,0,600000,2895611,4695611,101327887,3.0,16.993519603174605,0.9999853900861461,0.03247733172848941,3.5415873015873006e-06,0.9449213207034647,4.2752536947763616e-07,2.0853561444885786e-07,0.9460917063834021,2.488922737397041e-08 +dup1,6,0,900000,4095611,6795611,148132282,3.0,17.001197513227513,0.9999999997441706,0.0001359642425124317,3.046084656084655e-06,0.8878988039584207,5.411720531415183e-07,1.7916950555183306e-07,0.8879055061900751,3.1830456342401125e-08 +dup8,6,0,900000,4200611,6900611,149809820,3.0,17.022772433862436,0.9999978925509531,0.012356039755350623,3.208571428571428e-06,0.9216952264014266,4.6760825156071744e-07,1.884806825009138e-07,0.9216353155964264,2.7480048227386382e-08 +eq,4,0,450000,4763111,6113111,297738989,3.0,99.02980044444445,0.9999999498533558,0.01568093138786335,1.4677999999999997e-05,0.9872032809093597,1.1816746225506655e-06,1.4821824876538496e-07,0.9872065046220763,1.1931012040918102e-08 +exp,4,0,2250,70286,3692786,319045626,1610.0,87.57745200828157,0.9999999999994429,4.622189547980292e-05,1.202824016563147e-05,0.9968401514633416,4.788587910911056e-07,1.3734402409050526e-07,0.9968400707070421,5.4679018305702775e-09 +extcodecopy,4,0,102000,1592111,14282111,241916048,124.37058823529412,15.745667872747745,0.9999988849045525,0.011757157936722126,2.303004310043846e-06,0.9967399692714106,9.313215726495891e-08,1.46256957841777e-07,0.9966624616849442,5.98467564129571e-09 +extcodehash,5,0,200000,1948111,21948111,490882382,100.0,22.14581262,0.9999999607918993,0.002531738840254469,3.2418e-06,0.9982015834799919,7.944409187179273e-08,1.4638448893845913e-07,0.9982037549394602,3.58515244659014e-09 +extcodesize,4,0,198000,1934111,21734111,376380558,100.0,16.66007116666667,0.9999999999671616,6.750762665926769e-05,2.2462575757575756e-06,0.9978358402903544,7.397068854622778e-08,1.3482877942563325e-07,0.9978353825869567,4.440467841449484e-09 +gas,4,0,1200000,5135611,7535611,192506753,2.0,29.9964225,0.9999992929895913,0.017834770349393108,5.508124999999999e-06,0.983599542145875,5.029300864682875e-07,1.8363163303487569e-07,0.9836598991736338,1.6735449481287464e-08 +gaslimit,4,0,1200000,5135611,7535611,192506450,2.0,29.9965515,0.999999277340679,0.01803114447289288,4.787375e-06,0.9959103587700681,2.1692765931296068e-07,1.5960489444710117e-07,0.9960032106348509,7.149183902815958e-09 +gasprice,4,0,1200000,5135611,7535611,217706736,2.0,40.496438125,0.9999996068213051,0.017955475155980335,6.497999999999999e-06,0.9994817529361745,1.0462746412869185e-07,1.604604623296073e-07,0.9995058900564829,2.5227380600477452e-09 +gt,4,0,600000,6335611,8135611,267656911,3.0,27.362232166666665,0.999999346542394,0.015640310702518756,3.841666666666668e-06,0.9896215580544888,2.7818658806236094e-07,1.4039258797341242e-07,0.9895129431207514,1.0219867238270273e-08 +iszero,6,0,1350000,9930611,13980611,388290438,3.0,19.334932839506173,0.9999999991013113,0.00028981262984715487,2.295590828924161e-06,0.8634217014774269,4.5650322955216167e-07,1.1872793088856874e-07,0.8634260208738591,2.360990929949597e-08 +jump,6,0,600000,2880611,7680611,109504936,8.0,7.875464255952381,0.9999999997419038,6.326113559475258e-05,8.797619047619046e-07,0.8974512649307723,1.486944892674608e-07,1.1170945036762575e-07,0.8974550980357288,1.8880373957740498e-08 +jumpdest,4,0,2400000,625611,3025611,93712846,1.0,26.0043715,0.9999999999555691,0.00012256710711588484,4.097374999999999e-06,0.9930127065522265,2.430344304311641e-07,1.5756494209962417e-07,0.9930138164465341,9.345164419662449e-09 +jumpi,4,0,1005000,7805611,17855611,282137245,10.0,11.60029880597015,0.9999999994714257,0.00018858502262183736,2.0888358208955223e-06,0.9972432470821537,7.765826401710012e-08,1.800672085655558e-07,0.9972409594729688,6.6972825279269156e-09 +keccak256,4,0,24000,930611,38514611,701869291,1566.0,17.776535089399744,0.999999999998832,1.3584545145774077e-05,6.679677522349935e-06,0.9991572903727656,1.371710760290379e-07,3.7575812730382977e-07,0.9991572942013479,7.716394884731425e-09 +log0,6,0,120000,957611,45957611,46485358,375.0,0.5557522190476191,0.994411250284305,0.020831738999577513,1.4905396825396827e-07,0.9268242464007048,2.0941050086736248e-08,2.696681295316431e-07,0.942249528438275,3.338062240679955e-08 +log1,4,0,81000,934611,82444611,66442856,1006.2666666666667,0.562811124378543,0.9997166089917173,0.006700423523569958,1.3750101387837457e-07,0.9994979074098097,2.179173776738972e-09,2.441920127758315e-07,0.9988066748285487,5.968361765500893e-09 +log2,4,0,42000,661611,133623111,55466713,3165.675,0.30779930393421445,0.9999264332757148,0.001866849553452308,7.96902605864258e-08,0.9756223501195828,8.907283933806997e-09,2.58767604746703e-07,0.9746715199931792,2.9496489643086497e-08 +log3,4,0,35700,693111,127102611,55007279,3540.794117647059,0.316040999440685,0.9998920859217976,0.002321618821105207,6.828634678786847e-08,0.9979148814438621,2.2071787614348197e-09,2.1607542050364163e-07,0.9980911307001195,6.681798389554871e-09 +log4,4,0,27300,649011,107560011,47815613,3916.0384615384614,0.3135545621400139,0.9997668682207741,0.003385707964107944,7.813894433590374e-08,0.9897490361121377,5.623055237715712e-09,2.490275321784854e-07,0.9885809690063594,1.892521709168957e-08 +lt,4,0,600000,6335611,8135611,267656406,3.0,27.361945,0.9999993471560984,0.01563280048942135,3.9486666666666674e-06,0.9971187396748334,1.5009052823768875e-07,1.4430601630879288e-07,0.9970318258877725,5.567492179657779e-09 +call,4,0,49500,1208611,6161111,366392108,100.04545454545455,68.83622547011024,0.9999985770369577,0.058062959713617926,9.27046768646925e-06,0.9931649435415396,5.438097739824293e-07,1.3466920316000327e-07,0.9930917825705328,7.942214232018646e-09 +callcode,4,0,49500,1208611,6161111,356722458,100.04545454545455,66.90568448001204,0.9999985080441935,0.057786491051561126,9.262009263155192e-06,0.9990535660499479,2.0157700181314656e-07,1.384296542009279e-07,0.998994976940148,3.1047061161495063e-09 +create2,4,0,4200,200711,134684711,117657462,32020.0,0.8390654144730971,0.9996880982341579,0.010479908198260399,1.497947711251896e-07,0.9996757582456567,1.907596626790555e-09,1.7842999439190255e-07,0.998915370485806,4.157470967392177e-09 +create,4,0,4200,123811,134557411,111696632,32008.0,0.8047628003713357,0.9996139416195039,0.011183126442926412,1.5091762773592316e-07,0.9997111968892336,1.8137967833385833e-09,1.8742962102756587e-07,0.9990208502449799,4.1491631568892485e-09 +delegatecall,4,0,49500,1058611,6011111,302121319,100.04545454545455,56.47693308447793,0.9999999174917785,0.011471091335964533,7.550586719630437e-06,0.9999178456607319,4.8394810757070845e-08,1.3369300096630956e-07,0.9999136771392086,8.783656264663616e-10 +staticcall,4,0,49500,1058611,6011111,353790851,100.04545454545455,66.80361190510513,0.9999999185726719,0.01347938433318753,8.97370258888754e-06,0.9999472356010137,4.6093387845636675e-08,1.343293181614338e-07,0.9999430935867059,7.165537559309391e-10 +mcopy,4,0,60000,642011,6604211,100426617,99.333,14.804956367004586,0.9999962308507353,0.02032425432226991,2.0885607350416806e-06,0.9950712750952573,1.039375093906267e-07,1.410527814420891e-07,0.9948077982609744,7.205644723623509e-09 +mload,4,0,1002000,6371611,9377611,323757292,3.0,54.00743652694611,0.9999998611739994,0.014228987648300617,6.549999999999998e-06,0.9754838125703289,7.342479372707298e-07,1.2127883841780835e-07,0.9754717858790609,1.3598645079783784e-08 +mod,4,0,210000,2247111,3297111,345269919,5.0,255.419852,0.9999999972066096,0.009545649207051358,3.1868571428571426e-05,0.9997055983556128,3.867066599068754e-07,1.2476925613899556e-07,0.9997039390975863,1.518264423651748e-09 +msize,5,0,1200000,5159611,7559611,193384132,2.0,30.0030565,0.9999999998800371,0.00018972667776476516,3.964666666666667e-06,0.9917284918913518,2.0904606970536226e-07,1.321419769969329e-07,0.9917267586261036,6.968222420190934e-09 +mstore8,4,0,1002000,5369611,8375611,198346244,3.0,26.005769361277444,0.9999994864462047,0.013177948070243651,3.363273453093811e-06,0.9734687361381057,3.9261342591657684e-07,1.29334643092641e-07,0.9735696431901678,1.5068425398846777e-08 +mstore,4,0,501000,2707611,4210611,194412769,3.0,62.697620558882235,0.9999994610983871,0.03254549790610252,9.768263473053896e-06,0.9945623256333216,5.107318752712866e-07,1.5580363518362148e-07,0.9946145291526082,8.10675463692777e-09 +mul,4,0,600000,6335611,9335611,400256656,5.0,60.6173307,0.9999999515941701,0.009430411766148217,7.335e-06,0.989172342212752,5.426457407922665e-07,1.2100423387876358e-07,0.9891598919385413,8.95713510730474e-09 +mulmod,4,0,210000,2920611,4600611,814995628,8.0,422.25215214285714,0.9999999999903921,0.0009254872376711245,5.2679285714285715e-05,0.9999207716093799,3.3157555238425715e-07,1.2475788376079362e-07,0.999920741267822,7.854052021738358e-10 +not,6,0,900000,6635611,9335611,256481833,3.0,18.335645026455026,0.9999999944642679,0.000682108921892628,1.8857142857142858e-06,0.9311734774709063,2.563353550805108e-07,1.0284393731514932e-07,0.9311691786529456,1.3980602213226807e-08 +number,4,0,1200000,5135611,7535611,198506894,2.0,32.49672775,0.9999993933398336,0.01789771160807525,4.656625e-06,0.9842589841142738,4.1640693362983e-07,1.4330909859136552e-07,0.9844505657614281,1.2735591077801569e-08 +or,6,0,900000,9480611,12180611,391992349,3.0,24.022653756613757,0.9999989507200574,0.012303733042710423,3.0239682539682532e-06,0.8897385936082842,5.322648429410705e-07,1.258958611737569e-07,0.8899657616351933,2.213394001350579e-08 +origin,4,0,1200000,5135611,7535611,259706612,2.0,57.99636525,0.9999998096909815,0.01789021272281251,8.09875e-06,0.9678468679398408,1.043785628134438e-06,1.396381654023367e-07,0.9677887446108497,1.801368974946327e-08 +pc,4,0,1200000,5135611,7535611,197306746,2.0,31.996414375,0.9999993730343028,0.017914650546194347,5.428125e-06,0.9565493366472069,8.180490797470541e-07,1.6962480206374443e-07,0.9562893073589738,2.5643278576350472e-08 +pop,6,0,1800000,4080611,7680611,180307995,2.0,15.001975436507937,0.9999999995478863,0.00015949323921999884,9.561507936507936e-07,0.7252041837353649,2.942871519002803e-07,6.373515712269956e-08,0.7252079277551933,1.961642640200089e-08 +prevrandao,4,0,900000,3863111,5663111,231902154,2.0,78.4975095,0.9999998963771115,0.01786770402132145,1.0608e-05,0.9903503367076032,7.40423452416851e-07,1.3513763562513242e-07,0.9903444338074465,9.435329227212471e-09 +push0,4,0,1200000,5135611,7535611,188906121,2.0,28.496321875,0.9999991981677636,0.018043290446968844,4.9192499999999995e-06,0.9424843627555902,8.592900594386037e-07,1.725894417070335e-07,0.9420691367296377,3.02630599509572e-08 +push16,4,0,1002000,4343611,7349611,188488780,3.0,28.355281437125747,0.9999994836420119,0.014407695672234513,3.7280439121756494e-06,0.9959843102974048,1.673862756210122e-07,1.3148139495590427e-07,0.9960639298970205,5.84436203535093e-09 +push1,6,0,1200000,5135611,8735611,175710571,3.0,15.336380436507936,0.9999999996838951,0.00013633535876361028,2.745555555555556e-06,0.9551194498381818,2.9757776786035275e-07,1.7902191941886067e-07,0.9551143760802592,1.9404486553537595e-08 +push32,6,0,525000,2363111,3938111,123649737,3.0,41.705714648526076,0.999999999167686,0.0006016018605106801,7.5238095238095236e-06,0.9243788772105892,1.0759803762389108e-06,1.8040217532053252e-07,0.9243769422113374,2.5799681192525547e-08 +returndatacopy,4,0,180000,1674611,3298211,79637301,9.018,26.447237924739568,0.9999999996092162,0.0003696865310021514,4.20182026237099e-06,0.9857173309720243,3.5764401619934547e-07,1.588755535437042e-07,0.9857170041583202,1.3523079759778505e-08 +returndatasize,4,0,1200000,5135611,7535611,192506180,2.0,29.99638825,0.9999992725890604,0.018090227992418512,4.7035e-06,0.994373522784048,2.5017831141007977e-07,1.5681184138137594e-07,0.9944963934174941,8.248708211999267e-09 +sar,4,0,450000,4763111,6113111,234200489,3.0,78.33560511111111,0.9999999999278493,0.0004705053531684294,9.795111111111111e-06,0.983928553522638,8.851972787024497e-07,1.2504024041442332e-07,0.9839269031829495,1.1300643247465179e-08 +sdiv,4,0,210000,2247111,3297111,350520174,5.0,260.41985314285716,0.9999999973627889,0.009456524264167602,3.261e-05,0.9951090271594526,1.6165833206652596e-06,1.2522042042717899e-07,0.9951019195811913,6.212112804584442e-09 +selfbalance,4,0,600000,2590611,5590611,762697588,5.0,233.9999823,0.9999999981270178,0.007160900738530316,3.12337e-05,0.9979770653586543,9.94349551214246e-07,1.334772527405901e-07,0.9979754554931994,4.2510478717306566e-09 +sgt,6,0,900000,9480611,12180611,429792758,3.0,38.02279740740741,0.9999995752760598,0.01238989234415101,3.547301587301587e-06,0.8265108877510282,8.126058423910353e-07,9.32711217515801e-08,0.8261046523642338,2.1396545020399005e-08 +shl,4,0,450000,4763111,6113111,196400109,3.0,50.335948888888886,0.9999999998937801,0.00036683118666610534,6.2593333333333355e-06,0.9912690571512269,4.1538219794590714e-07,1.2435114166425336e-07,0.9912688601704608,8.25229071532861e-09 +shr,4,0,600000,6335611,8135611,263355025,3.0,51.335603166666665,0.9999999999464813,0.0002655563138664201,7.086499999999998e-06,0.9971251238160508,2.690614861575965e-07,1.3804255545262398e-07,0.9971245179338799,5.241778035245843e-09 +signextend,4,0,1500000,15770611,23270611,721573681,5.0,53.41680324,0.9999999394552168,0.00929397015061443,5.91112e-06,0.9918336997201026,3.792695885514674e-07,1.1066205164962346e-07,0.9918649822965538,7.086579966061538e-09 +sload,4,0,198000,1933611,21733611,342582271,100.0,15.00090156060606,0.9999999619394223,0.002069379104293995,2.1045757575757577e-06,0.997942623444729,6.756996170280091e-08,1.4029550582235057e-07,0.9979268378618168,4.521640649721006e-09 +slt,6,0,2100000,22060611,28360611,1001536992,3.0,38.02199789115646,0.9999995749928722,0.01239376156758804,3.788866213151928e-06,0.8387572242377838,8.306178707892926e-07,9.962253626410985e-08,0.8383067685467147,2.187620741411662e-08 +smod,4,0,600000,6335611,9335611,457256662,5.0,79.6173034,0.9999999720493569,0.009412139926416678,9.710600000000002e-06,0.9968685200759525,3.848459691876736e-07,1.2196658032469066e-07,0.9968788610416324,4.825709876293264e-09 +sstore,4,0,61200,718411,6858311,236875454,100.29264705882353,34.898110389910705,0.9999944186203729,0.05829870497714829,4.61310207127213e-06,0.9997825796790982,4.810335303115512e-08,1.3219159913837927e-07,0.9998466547727569,1.1575967298742521e-09 +sub,6,0,1500000,15770611,20270611,712665219,3.0,37.35563834920635,0.9999995588081119,0.012406235525744408,2.5910476190476205e-06,0.7971353334466066,6.535556519332132e-07,6.934149353951217e-08,0.7966731305332009,1.751541767626339e-08 +swap16,4,0,300000,275611,1175611,57772381,3.0,53.33788033333333,0.9999999999003588,0.00037647851346749565,1.0789333333333332e-05,0.9845385688522201,9.560664783952558e-07,2.0228280000499278e-07,0.9845390155012543,1.7924459368712178e-08 +swap1,6,0,300000,200611,1100611,56683434,3.0,53.36663206349206,0.9999987196365584,0.030193030836373733,9.486031746031744e-06,0.9781465622773284,7.089449184917571e-07,1.7777076910815205e-07,0.9783531224869807,1.3221482906085333e-08 +swap8,4,0,300000,235611,1135611,57191415,3.0,53.374223,0.9999998934294365,0.01232069543824304,9.934666666666668e-06,0.9846731517369979,8.764329219436342e-07,1.8612943922058802e-07,0.9846430326488457,1.6436653330825372e-08 +timestamp,4,0,1200000,5135611,7535611,198506116,2.0,32.496201875,0.9999993811650016,0.018076118271360353,4.3285e-06,0.9886704561766756,3.276444814887026e-07,1.3319355749654445e-07,0.9885727322708647,1.0125934378750583e-08 +tload,4,0,1500000,9770611,159770611,619426017,100.0,2.433558358,0.9999705177305026,0.009343586821380995,3.46924e-07,0.9981589086717582,1.0535548965289109e-08,1.425629222102414e-07,0.9982527366005837,4.217455667292012e-09 +tstore,4,0,198000,1331611,21131611,367663625,100.0,15.90458046969697,0.9999996194547041,0.006937619573955418,2.0799545454545456e-06,0.9994897580175488,3.323056817384702e-08,1.3077547047591225e-07,0.9994655814637471,2.13829750103165e-09 +xor,4,0,1500000,15770611,20270611,652664871,3.0,24.02775906666667,0.9999991656816941,0.01551902161930924,4.9129999999999985e-06,0.9720233422820242,5.893744895131516e-07,2.044721889261266e-07,0.9720275132454514,2.4527060816611545e-08 +blake2f,3,0,10,49270,704620,392214720,65535.00000000001,597.021480125124,0.999999999976958,0.002865828273814117,8.159914549477378e-05,0.9995264822353969,1.7760557605654742e-06,1.3667708237437523e-07,0.9995266910724676,2.9742046587224985e-09 +bls12_g1add,4,0,771,140852,429977,241742874,375.0,816.5712259403372,0.9999999930590562,0.04810479194177447,0.00011218884565499352,0.9994629627415954,1.8388806279165722e-06,1.3739019868557753e-07,0.9994636345905537,2.2505446641720497e-09 +bls12_g1msm,4,0,39,54036,942300,331183342,22776.0,371.5978979222393,0.9999999998863154,0.002801619185522887,5.191969954878279e-05,0.9974039784155215,1.8729913608857234e-06,1.3972018317294527e-07,0.9974050088117205,5.039370853584816e-09 +bls12_g2add,4,0,450,106041,376041,222437843,600.0,810.2679766666666,0.9999999998563065,0.006868030912609007,0.00011098,0.9985700885451692,2.969579926230739e-06,1.369669987005728e-07,0.9985696011406783,3.665560134414787e-09 +bls12_g2msm,4,0,24,55639,1135639,304008054,45000.0,280.5486525,0.999999999972903,0.001032651369534824,3.939972222222222e-05,0.9966474342614964,1.6158313754690852e-06,1.4043814255518032e-07,0.9966479114298767,5.759130784882332e-09 +bls12_map_fp2_to_g2,4,0,27,50640,693240,534421958,23800.0,830.0560536881419,0.9999999999554754,0.0039164489237462135,0.00011209617180205416,0.999888803913721,8.358814388197018e-07,1.3504651523162917e-07,0.9998889055641074,1.0065576721051898e-09 +bls12_map_fp_to_g1,4,0,75,55508,468008,481232626,5500.0,1163.411392,0.9999999999280187,0.006979562277205852,0.00015935199999999997,0.9992579803015778,3.0705164289572594e-06,1.3696963767214446e-07,0.9992584422260581,2.6384136920980922e-09 +bls12_pairing,4,0,9,56915,983015,922934573,102900.0,995.5793819241983,0.9999999999876779,0.002471177970589259,0.0001339310009718173,0.9999764581060732,4.595067847351805e-07,1.3452568993319389e-07,0.9999764919379723,4.6121534584595904e-10 +bn128_add,4,0,801,143130,263280,10688648,150.0,40.55151310861423,0.9999995478721952,0.019280698883440327,3.7832709113607995e-05,0.919569199790951,7.911729490809753e-06,9.328362484994597e-07,0.9193368859933163,1.953847057502196e-07 +bn128_mul,4,0,72,55849,487849,34781700,6000.0,77.49012083333334,0.9999999934289974,0.004441678931878957,4.027291666666667e-05,0.9977331968262626,1.3573685436998979e-06,5.19718111893017e-07,0.997738288223901,1.7496982784994374e-08 +bn128_pairing,5,0,8,52883,956883,49885324,113000.0,54.18019026548673,0.9999999977734131,0.0014760454323717747,2.2106637168141594e-05,0.9908693912354802,1.225190770599027e-06,4.0802178756619594e-07,0.9908748541143689,2.2606494923386518e-08 +ecrecover,4,0,201,71358,674358,8538758,3000.0,10.67440696517413,0.9999995472647545,0.0050786818743850885,9.550746268656719e-06,0.9380284994090501,1.7358424271681829e-06,8.947351818779787e-07,0.9380330862126616,1.6261116891721124e-07 +identity,4,0,1500000,219278111,259803111,10200500155,27.015,4.659995097973224,0.9999749450392473,0.016493877551106397,2.062032223096305e-06,0.7009525255013414,9.523711193540234e-07,4.4140696813280767e-07,0.6975219519949675,2.0553802435684043e-07 +modexp,4,0,36,66977,116117,187438664,1365.0,3791.963021978022,0.9999999970753866,0.1450051183592468,0.0005549084249084249,0.9945274808548635,2.9106606291275555e-05,1.4633797556023816e-07,0.994526649036809,7.676450979376507e-09 +point_evaluation,4,0,9,49918,499918,1330714918,50000.0,2955.1030766666668,0.9999999999928613,0.005583007838561766,0.0003982286666666667,0.9999682557901107,1.5865606407187934e-06,1.3475965470848195e-07,0.9999682737406723,5.367366064155423e-10 +ripemd160,4,0,1500,240817,6900817,70227143,4440.0,9.005523783783783,0.9999853656163727,0.024360397763036667,1.5465315315315315e-06,0.9559346518726902,2.3478928951280816e-07,1.7164752221801169e-07,0.9550146519667906,2.634226205773875e-08 +sha256,4,0,1500,290575,2684575,39934103,1596.0,12.400282581453634,0.9999999864282496,0.0010214909398766246,9.60764411027569e-06,0.9985029232736955,2.6305664002611595e-07,7.747957366493862e-07,0.998511659951401,2.1151771109452608e-08 diff --git a/www/package-lock.json b/www/package-lock.json new file mode 100644 index 00000000..0bdbff41 --- /dev/null +++ b/www/package-lock.json @@ -0,0 +1,9979 @@ +{ + "name": "www", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "www", + "version": "0.0.0", + "dependencies": { + "react": "latest", + "react-dom": "latest", + "vocs": "latest" + }, + "devDependencies": { + "@types/react": "latest", + "typescript": "latest" + } + }, + "node_modules/@antfu/install-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-1.1.0.tgz", + "integrity": "sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==", + "license": "MIT", + "dependencies": { + "package-manager-detector": "^1.3.0", + "tinyexec": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz", + "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", + "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.5", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helpers": "^7.28.4", + "@babel/parser": "^7.28.5", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz", + "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", + "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.28.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", + "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", + "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.5" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", + "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", + "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz", + "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.5", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.5", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.5", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", + "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@braintree/sanitize-url": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-7.1.1.tgz", + "integrity": "sha512-i1L7noDNxtFyL5DmZafWy1wRVhGehQmzZaz1HiN5e7iylJMSZR7ekOV7NsIqa5qBldlLrsKv4HbgFUVlQrz8Mw==", + "license": "MIT" + }, + "node_modules/@chevrotain/cst-dts-gen": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.0.3.tgz", + "integrity": "sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==", + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/gast": "11.0.3", + "@chevrotain/types": "11.0.3", + "lodash-es": "4.17.21" + } + }, + "node_modules/@chevrotain/cst-dts-gen/node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "license": "MIT" + }, + "node_modules/@chevrotain/gast": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.0.3.tgz", + "integrity": "sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==", + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/types": "11.0.3", + "lodash-es": "4.17.21" + } + }, + "node_modules/@chevrotain/gast/node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "license": "MIT" + }, + "node_modules/@chevrotain/regexp-to-ast": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.0.3.tgz", + "integrity": "sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA==", + "license": "Apache-2.0" + }, + "node_modules/@chevrotain/types": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.0.3.tgz", + "integrity": "sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==", + "license": "Apache-2.0" + }, + "node_modules/@chevrotain/utils": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.0.3.tgz", + "integrity": "sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==", + "license": "Apache-2.0" + }, + "node_modules/@clack/core": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@clack/core/-/core-0.3.5.tgz", + "integrity": "sha512-5cfhQNH+1VQ2xLQlmzXMqUoiaH0lRBq9/CLW9lTyMbuKLC3+xEK01tHVvyut++mLOn5urSHmkm6I0Lg9MaJSTQ==", + "license": "MIT", + "dependencies": { + "picocolors": "^1.0.0", + "sisteransi": "^1.0.5" + } + }, + "node_modules/@clack/prompts": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@clack/prompts/-/prompts-0.7.0.tgz", + "integrity": "sha512-0MhX9/B4iL6Re04jPrttDm+BsP8y6mS7byuv0BvXgdXhbV5PdlsHt55dvNsuBCPZ7xq1oTAOOuotR9NFbQyMSA==", + "bundleDependencies": [ + "is-unicode-supported" + ], + "license": "MIT", + "dependencies": { + "@clack/core": "^0.3.3", + "is-unicode-supported": "*", + "picocolors": "^1.0.0", + "sisteransi": "^1.0.5" + } + }, + "node_modules/@clack/prompts/node_modules/is-unicode-supported": { + "version": "1.3.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@emotion/hash": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz", + "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==", + "license": "MIT" + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz", + "integrity": "sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.2.tgz", + "integrity": "sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.2.tgz", + "integrity": "sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.2.tgz", + "integrity": "sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.2.tgz", + "integrity": "sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.2.tgz", + "integrity": "sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.2.tgz", + "integrity": "sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.2.tgz", + "integrity": "sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.2.tgz", + "integrity": "sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.2.tgz", + "integrity": "sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.2.tgz", + "integrity": "sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.2.tgz", + "integrity": "sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.2.tgz", + "integrity": "sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.2.tgz", + "integrity": "sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.2.tgz", + "integrity": "sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.2.tgz", + "integrity": "sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz", + "integrity": "sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.2.tgz", + "integrity": "sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.2.tgz", + "integrity": "sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.2.tgz", + "integrity": "sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.2.tgz", + "integrity": "sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.2.tgz", + "integrity": "sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.2.tgz", + "integrity": "sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.2.tgz", + "integrity": "sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.2.tgz", + "integrity": "sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.2.tgz", + "integrity": "sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.3.tgz", + "integrity": "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.10" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.4.tgz", + "integrity": "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.7.3", + "@floating-ui/utils": "^0.2.10" + } + }, + "node_modules/@floating-ui/react": { + "version": "0.27.16", + "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.27.16.tgz", + "integrity": "sha512-9O8N4SeG2z++TSM8QA/KTeKFBVCNEz/AGS7gWPJf6KFRzmRWixFRnCnkPHRDwSVZW6QPDO6uT0P2SpWNKCc9/g==", + "license": "MIT", + "dependencies": { + "@floating-ui/react-dom": "^2.1.6", + "@floating-ui/utils": "^0.2.10", + "tabbable": "^6.0.0" + }, + "peerDependencies": { + "react": ">=17.0.0", + "react-dom": ">=17.0.0" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.6.tgz", + "integrity": "sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.7.4" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz", + "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==", + "license": "MIT" + }, + "node_modules/@fortawesome/fontawesome-free": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.7.2.tgz", + "integrity": "sha512-JUOtgFW6k9u4Y+xeIaEiLr3+cjoUPiAuLXoyKOJSia6Duzb7pq+A76P9ZdPDoAoxHdHzq6gE9/jKBGXlZT8FbA==", + "license": "(CC-BY-4.0 AND OFL-1.1 AND MIT)", + "engines": { + "node": ">=6" + } + }, + "node_modules/@hono/node-server": { + "version": "1.19.7", + "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.7.tgz", + "integrity": "sha512-vUcD0uauS7EU2caukW8z5lJKtoGMokxNbJtBiwHgpqxEXokaHCBkQUmCHhjFB1VUTWdqj25QoMkMKzgjq+uhrw==", + "license": "MIT", + "engines": { + "node": ">=18.14.1" + }, + "peerDependencies": { + "hono": "^4" + } + }, + "node_modules/@iconify/types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", + "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", + "license": "MIT" + }, + "node_modules/@iconify/utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-3.1.0.tgz", + "integrity": "sha512-Zlzem1ZXhI1iHeeERabLNzBHdOa4VhQbqAcOQaMKuTuyZCpwKbC2R4Dd0Zo3g9EAc+Y4fiarO8HIHRAth7+skw==", + "license": "MIT", + "dependencies": { + "@antfu/install-pkg": "^1.1.0", + "@iconify/types": "^2.0.0", + "mlly": "^1.8.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@mdx-js/mdx": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.1.tgz", + "integrity": "sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdx": "^2.0.0", + "acorn": "^8.0.0", + "collapse-white-space": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-util-scope": "^1.0.0", + "estree-walker": "^3.0.0", + "hast-util-to-jsx-runtime": "^2.0.0", + "markdown-extensions": "^2.0.0", + "recma-build-jsx": "^1.0.0", + "recma-jsx": "^1.0.0", + "recma-stringify": "^1.0.0", + "rehype-recma": "^1.0.0", + "remark-mdx": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "source-map": "^0.7.0", + "unified": "^11.0.0", + "unist-util-position-from-estree": "^2.0.0", + "unist-util-stringify-position": "^4.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/react": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.1.1.tgz", + "integrity": "sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==", + "license": "MIT", + "dependencies": { + "@types/mdx": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "@types/react": ">=16", + "react": ">=16" + } + }, + "node_modules/@mdx-js/rollup": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@mdx-js/rollup/-/rollup-3.1.1.tgz", + "integrity": "sha512-v8satFmBB+DqDzYohnm1u2JOvxx6Hl3pUvqzJvfs2Zk/ngZ1aRUhsWpXvwPkNeGN9c2NCm/38H29ZqXQUjf8dw==", + "license": "MIT", + "dependencies": { + "@mdx-js/mdx": "^3.0.0", + "@rollup/pluginutils": "^5.0.0", + "source-map": "^0.7.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "rollup": ">=2" + } + }, + "node_modules/@mermaid-js/parser": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-0.6.3.tgz", + "integrity": "sha512-lnjOhe7zyHjc+If7yT4zoedx2vo4sHaTmtkl1+or8BRTnCtDmcTpAjpzDSfCZrshM5bCoz0GyidzadJAH1xobA==", + "license": "MIT", + "dependencies": { + "langium": "3.3.1" + } + }, + "node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@radix-ui/colors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/colors/-/colors-3.0.0.tgz", + "integrity": "sha512-FUOsGBkHrYJwCSEtWRCIfQbZG7q1e6DgxCIOe1SUQzDe/7rXXeA47s8yCn6fuTNQAj1Zq4oTFi9Yjp3wzElcxg==", + "license": "MIT" + }, + "node_modules/@radix-ui/number": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.1.tgz", + "integrity": "sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==", + "license": "MIT" + }, + "node_modules/@radix-ui/primitive": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz", + "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-accessible-icon": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-accessible-icon/-/react-accessible-icon-1.1.7.tgz", + "integrity": "sha512-XM+E4WXl0OqUJFovy6GjmxxFyx9opfCAIUku4dlKRd5YEPqt4kALOkQOp0Of6reHuUkJuiPBEc5k0o4z4lTC8A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-visually-hidden": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-accordion": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@radix-ui/react-accordion/-/react-accordion-1.2.12.tgz", + "integrity": "sha512-T4nygeh9YE9dLRPhAHSeOZi7HBXo+0kYIPJXayZfvWOWA0+n3dESrZbjfDPUABkUNym6Hd+f2IR113To8D2GPA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collapsible": "1.1.12", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-alert-dialog": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-alert-dialog/-/react-alert-dialog-1.1.15.tgz", + "integrity": "sha512-oTVLkEw5GpdRe29BqJ0LSDFWI3qu0vR1M0mUkOQWDIUnY/QIkLpgDMWuKxP94c2NAC2LGcgVhG1ImF3jkZ5wXw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dialog": "1.1.15", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-arrow": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.7.tgz", + "integrity": "sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-aspect-ratio": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-aspect-ratio/-/react-aspect-ratio-1.1.7.tgz", + "integrity": "sha512-Yq6lvO9HQyPwev1onK1daHCHqXVLzPhSVjmsNjCa2Zcxy2f7uJD2itDtxknv6FzAKCwD1qQkeVDmX/cev13n/g==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-avatar": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-avatar/-/react-avatar-1.1.10.tgz", + "integrity": "sha512-V8piFfWapM5OmNCXTzVQY+E1rDa53zY+MQ4Y7356v4fFz6vqCyUtIz2rUD44ZEdwg78/jKmMJHj07+C/Z/rcog==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-is-hydrated": "0.1.0", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-checkbox": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-checkbox/-/react-checkbox-1.3.3.tgz", + "integrity": "sha512-wBbpv+NQftHDdG86Qc0pIyXk5IR3tM8Vd0nWLKDcX8nNn4nXFOFwsKuqw2okA/1D/mpaAkmuyndrPJTYDNZtFw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-use-size": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collapsible": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collapsible/-/react-collapsible-1.1.12.tgz", + "integrity": "sha512-Uu+mSh4agx2ib1uIGPP4/CKNULyajb3p92LsVXmH2EHVMTfZWpll88XJ0j4W0z3f8NK1eYl1+Mf/szHPmcHzyA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collection": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.7.tgz", + "integrity": "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", + "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz", + "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context-menu": { + "version": "2.2.16", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context-menu/-/react-context-menu-2.2.16.tgz", + "integrity": "sha512-O8morBEW+HsVG28gYDZPTrT9UUovQUlJue5YO836tiTJhuIWBm/zQHc7j388sHWtdH/xUZurK9olD2+pcqx5ww==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-menu": "2.1.16", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.15.tgz", + "integrity": "sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-direction": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.1.tgz", + "integrity": "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.11.tgz", + "integrity": "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-escape-keydown": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dropdown-menu": { + "version": "2.1.16", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.16.tgz", + "integrity": "sha512-1PLGQEynI/3OX/ftV54COn+3Sud/Mn8vALg2rWnBLnRaGtJDduNW/22XjlGgPdpcIbiQxjKtb7BkcjP00nqfJw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-menu": "2.1.16", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.3.tgz", + "integrity": "sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.7.tgz", + "integrity": "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-form": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-form/-/react-form-0.1.8.tgz", + "integrity": "sha512-QM70k4Zwjttifr5a4sZFts9fn8FzHYvQ5PiB19O2HsYibaHSVt9fH9rzB0XZo/YcM+b7t/p7lYCT/F5eOeF5yQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-label": "2.1.7", + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-form/node_modules/@radix-ui/react-label": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.7.tgz", + "integrity": "sha512-YT1GqPSL8kJn20djelMX7/cTRp/Y9w5IZHvfxQTVHrOqa2yMl7i/UfMqKRU5V7mEyKTrUVgJXhNQPVCG8PBLoQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-hover-card": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-hover-card/-/react-hover-card-1.1.15.tgz", + "integrity": "sha512-qgTkjNT1CfKMoP0rcasmlH2r1DAiYicWsDsufxl940sT2wHNEWWv6FMWIQXWhVdmC1d/HYfbhQx60KYyAtKxjg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-icons": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-icons/-/react-icons-1.3.2.tgz", + "integrity": "sha512-fyQIhGDhzfc9pK2kH6Pl9c4BDJGfMkPqkyIgYDthyNYoNg3wVhoJMMh19WS4Up/1KMPFVpNsT2q3WmXn2N1m6g==", + "license": "MIT", + "peerDependencies": { + "react": "^16.x || ^17.x || ^18.x || ^19.0.0 || ^19.0.0-rc" + } + }, + "node_modules/@radix-ui/react-id": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz", + "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-label": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.8.tgz", + "integrity": "sha512-FmXs37I6hSBVDlO4y764TNz1rLgKwjJMQ0EGte6F3Cb3f4bIuHB/iLa/8I9VKkmOy+gNHq8rql3j686ACVV21A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.4" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-primitive": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.4.tgz", + "integrity": "sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.4" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-slot": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.4.tgz", + "integrity": "sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menu": { + "version": "2.1.16", + "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.16.tgz", + "integrity": "sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menubar": { + "version": "1.1.16", + "resolved": "https://registry.npmjs.org/@radix-ui/react-menubar/-/react-menubar-1.1.16.tgz", + "integrity": "sha512-EB1FktTz5xRRi2Er974AUQZWg2yVBb1yjip38/lgwtCVRd3a+maUoGHN/xs9Yv8SY8QwbSEb+YrxGadVWbEutA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-menu": "2.1.16", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-navigation-menu": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/@radix-ui/react-navigation-menu/-/react-navigation-menu-1.2.14.tgz", + "integrity": "sha512-YB9mTFQvCOAQMHU+C/jVl96WmuWeltyUEpRJJky51huhds5W2FQr1J8D/16sQlf0ozxkPK8uF3niQMdUwZPv5w==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-visually-hidden": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-one-time-password-field": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-one-time-password-field/-/react-one-time-password-field-0.1.8.tgz", + "integrity": "sha512-ycS4rbwURavDPVjCb5iS3aG4lURFDILi6sKI/WITUMZ13gMmn/xGjpLoqBAalhJaDk8I3UbCM5GzKHrnzwHbvg==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.1", + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-is-hydrated": "0.1.0", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-password-toggle-field": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-password-toggle-field/-/react-password-toggle-field-0.1.3.tgz", + "integrity": "sha512-/UuCrDBWravcaMix4TdT+qlNdVwOM1Nck9kWx/vafXsdfj1ChfhOdfi3cy9SGBpWgTXwYCuboT/oYpJy3clqfw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-is-hydrated": "0.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.1.15.tgz", + "integrity": "sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popper": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.8.tgz", + "integrity": "sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==", + "license": "MIT", + "dependencies": { + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-rect": "1.1.1", + "@radix-ui/react-use-size": "1.1.1", + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-portal": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.9.tgz", + "integrity": "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-presence": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.5.tgz", + "integrity": "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-progress": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-progress/-/react-progress-1.1.7.tgz", + "integrity": "sha512-vPdg/tF6YC/ynuBIJlk1mm7Le0VgW6ub6J2UWnTQ7/D23KXcPI1qy+0vBkgKgd38RCMJavBXpB83HPNFMTb0Fg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-radio-group/-/react-radio-group-1.3.8.tgz", + "integrity": "sha512-VBKYIYImA5zsxACdisNQ3BjCBfmbGH3kQlnFVqlWU4tXwjy7cGX8ta80BcrO+WJXIn5iBylEH3K6ZTlee//lgQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-use-size": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-roving-focus": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.11.tgz", + "integrity": "sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-scroll-area": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.10.tgz", + "integrity": "sha512-tAXIa1g3sM5CGpVT0uIbUx/U3Gs5N8T52IICuCtObaos1S8fzsrPXG5WObkQN3S6NVl6wKgPhAIiBGbWnvc97A==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.1", + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.2.6.tgz", + "integrity": "sha512-I30RydO+bnn2PQztvo25tswPH+wFBjehVGtmagkU78yMdwTwVf12wnAOF+AeP8S2N8xD+5UPbGhkUfPyvT+mwQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.1", + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-visually-hidden": "1.2.3", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-separator": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-separator/-/react-separator-1.1.7.tgz", + "integrity": "sha512-0HEb8R9E8A+jZjvmFCy/J4xhbXy3TV+9XSnGJ3KvTtjlIUy/YQ/p6UYZvi7YbeoeXdyU9+Y3scizK6hkY37baA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slider": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slider/-/react-slider-1.3.6.tgz", + "integrity": "sha512-JPYb1GuM1bxfjMRlNLE+BcmBC8onfCi60Blk7OBqi2MLTFdS+8401U4uFjnwkOr49BLmXxLC6JHkvAsx5OJvHw==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.1", + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-use-size": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-switch": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-switch/-/react-switch-1.2.6.tgz", + "integrity": "sha512-bByzr1+ep1zk4VubeEVViV592vu2lHE2BZY5OnzehZqOOgogN80+mNtCqPkhn2gklJqOpxWgPoYTSnhBCqpOXQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-use-size": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tabs": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.13.tgz", + "integrity": "sha512-7xdcatg7/U+7+Udyoj2zodtI9H/IIopqo+YOIcZOq1nJwXWBZ9p8xiu5llXlekDbZkca79a/fozEYQXIA4sW6A==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toast": { + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toast/-/react-toast-1.2.15.tgz", + "integrity": "sha512-3OSz3TacUWy4WtOXV38DggwxoqJK4+eDkNMl5Z/MJZaoUPaP4/9lf81xXMe1I2ReTAptverZUpbPY4wWwWyL5g==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-visually-hidden": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-1.1.10.tgz", + "integrity": "sha512-lS1odchhFTeZv3xwHH31YPObmJn8gOg7Lq12inrr0+BH/l3Tsq32VfjqH1oh80ARM3mlkfMic15n0kg4sD1poQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle-group": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle-group/-/react-toggle-group-1.1.11.tgz", + "integrity": "sha512-5umnS0T8JQzQT6HbPyO7Hh9dgd82NmS36DQr+X/YJ9ctFNCiiQd6IJAYYZ33LUwm8M+taCz5t2ui29fHZc4Y6Q==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-toggle": "1.1.10", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toolbar": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toolbar/-/react-toolbar-1.1.11.tgz", + "integrity": "sha512-4ol06/1bLoFu1nwUqzdD4Y5RZ9oDdKeiHIsntug54Hcr1pgaHiPqHFEaXI1IFP/EsOfROQZ8Mig9VTIRza6Tjg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-separator": "1.1.7", + "@radix-ui/react-toggle-group": "1.1.11" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tooltip": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.2.8.tgz", + "integrity": "sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-visually-hidden": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz", + "integrity": "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-effect-event": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz", + "integrity": "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.1.tgz", + "integrity": "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-is-hydrated": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-is-hydrated/-/react-use-is-hydrated-0.1.0.tgz", + "integrity": "sha512-U+UORVEq+cTnRIaostJv9AGdV3G6Y+zbVd+12e18jQ5A3c0xL03IhnHuiU4UV69wolOQp5GfR58NW/EgdQhwOA==", + "license": "MIT", + "dependencies": { + "use-sync-external-store": "^1.5.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", + "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-previous": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.1.tgz", + "integrity": "sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-rect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.1.tgz", + "integrity": "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==", + "license": "MIT", + "dependencies": { + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-size": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.1.tgz", + "integrity": "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-visually-hidden": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.3.tgz", + "integrity": "sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/rect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.1.tgz", + "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==", + "license": "MIT" + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.53", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.53.tgz", + "integrity": "sha512-vENRlFU4YbrwVqNDZ7fLvy+JR1CRkyr01jhSiDpE1u6py3OMzQfztQU2jxykW3ALNxO4kSlqIDeYyD0Y9RcQeQ==", + "license": "MIT" + }, + "node_modules/@rollup/pluginutils": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz", + "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.54.0.tgz", + "integrity": "sha512-OywsdRHrFvCdvsewAInDKCNyR3laPA2mc9bRYJ6LBp5IyvF3fvXbbNR0bSzHlZVFtn6E0xw2oZlyjg4rKCVcng==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.54.0.tgz", + "integrity": "sha512-Skx39Uv+u7H224Af+bDgNinitlmHyQX1K/atIA32JP3JQw6hVODX5tkbi2zof/E69M1qH2UoN3Xdxgs90mmNYw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.54.0.tgz", + "integrity": "sha512-k43D4qta/+6Fq+nCDhhv9yP2HdeKeP56QrUUTW7E6PhZP1US6NDqpJj4MY0jBHlJivVJD5P8NxrjuobZBJTCRw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.54.0.tgz", + "integrity": "sha512-cOo7biqwkpawslEfox5Vs8/qj83M/aZCSSNIWpVzfU2CYHa2G3P1UN5WF01RdTHSgCkri7XOlTdtk17BezlV3A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.54.0.tgz", + "integrity": "sha512-miSvuFkmvFbgJ1BevMa4CPCFt5MPGw094knM64W9I0giUIMMmRYcGW/JWZDriaw/k1kOBtsWh1z6nIFV1vPNtA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.54.0.tgz", + "integrity": "sha512-KGXIs55+b/ZfZsq9aR026tmr/+7tq6VG6MsnrvF4H8VhwflTIuYh+LFUlIsRdQSgrgmtM3fVATzEAj4hBQlaqQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.54.0.tgz", + "integrity": "sha512-EHMUcDwhtdRGlXZsGSIuXSYwD5kOT9NVnx9sqzYiwAc91wfYOE1g1djOEDseZJKKqtHAHGwnGPQu3kytmfaXLQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.54.0.tgz", + "integrity": "sha512-+pBrqEjaakN2ySv5RVrj/qLytYhPKEUwk+e3SFU5jTLHIcAtqh2rLrd/OkbNuHJpsBgxsD8ccJt5ga/SeG0JmA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.54.0.tgz", + "integrity": "sha512-NSqc7rE9wuUaRBsBp5ckQ5CVz5aIRKCwsoa6WMF7G01sX3/qHUw/z4pv+D+ahL1EIKy6Enpcnz1RY8pf7bjwng==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.54.0.tgz", + "integrity": "sha512-gr5vDbg3Bakga5kbdpqx81m2n9IX8M6gIMlQQIXiLTNeQW6CucvuInJ91EuCJ/JYvc+rcLLsDFcfAD1K7fMofg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.54.0.tgz", + "integrity": "sha512-gsrtB1NA3ZYj2vq0Rzkylo9ylCtW/PhpLEivlgWe0bpgtX5+9j9EZa0wtZiCjgu6zmSeZWyI/e2YRX1URozpIw==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.54.0.tgz", + "integrity": "sha512-y3qNOfTBStmFNq+t4s7Tmc9hW2ENtPg8FeUD/VShI7rKxNW7O4fFeaYbMsd3tpFlIg1Q8IapFgy7Q9i2BqeBvA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.54.0.tgz", + "integrity": "sha512-89sepv7h2lIVPsFma8iwmccN7Yjjtgz0Rj/Ou6fEqg3HDhpCa+Et+YSufy27i6b0Wav69Qv4WBNl3Rs6pwhebQ==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.54.0.tgz", + "integrity": "sha512-ZcU77ieh0M2Q8Ur7D5X7KvK+UxbXeDHwiOt/CPSBTI1fBmeDMivW0dPkdqkT4rOgDjrDDBUed9x4EgraIKoR2A==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.54.0.tgz", + "integrity": "sha512-2AdWy5RdDF5+4YfG/YesGDDtbyJlC9LHmL6rZw6FurBJ5n4vFGupsOBGfwMRjBYH7qRQowT8D/U4LoSvVwOhSQ==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.54.0.tgz", + "integrity": "sha512-WGt5J8Ij/rvyqpFexxk3ffKqqbLf9AqrTBbWDk7ApGUzaIs6V+s2s84kAxklFwmMF/vBNGrVdYgbblCOFFezMQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.54.0.tgz", + "integrity": "sha512-JzQmb38ATzHjxlPHuTH6tE7ojnMKM2kYNzt44LO/jJi8BpceEC8QuXYA908n8r3CNuG/B3BV8VR3Hi1rYtmPiw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.54.0.tgz", + "integrity": "sha512-huT3fd0iC7jigGh7n3q/+lfPcXxBi+om/Rs3yiFxjvSxbSB6aohDFXbWvlspaqjeOh+hx7DDHS+5Es5qRkWkZg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.54.0.tgz", + "integrity": "sha512-c2V0W1bsKIKfbLMBu/WGBz6Yci8nJ/ZJdheE0EwB73N3MvHYKiKGs3mVilX4Gs70eGeDaMqEob25Tw2Gb9Nqyw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.54.0.tgz", + "integrity": "sha512-woEHgqQqDCkAzrDhvDipnSirm5vxUXtSKDYTVpZG3nUdW/VVB5VdCYA2iReSj/u3yCZzXID4kuKG7OynPnB3WQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.54.0.tgz", + "integrity": "sha512-dzAc53LOuFvHwbCEOS0rPbXp6SIhAf2txMP5p6mGyOXXw5mWY8NGGbPMPrs4P1WItkfApDathBj/NzMLUZ9rtQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.54.0.tgz", + "integrity": "sha512-hYT5d3YNdSh3mbCU1gwQyPgQd3T2ne0A3KG8KSBdav5TiBg6eInVmV+TeR5uHufiIgSFg0XsOWGW5/RhNcSvPg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@shikijs/core": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.29.2.tgz", + "integrity": "sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ==", + "license": "MIT", + "dependencies": { + "@shikijs/engine-javascript": "1.29.2", + "@shikijs/engine-oniguruma": "1.29.2", + "@shikijs/types": "1.29.2", + "@shikijs/vscode-textmate": "^10.0.1", + "@types/hast": "^3.0.4", + "hast-util-to-html": "^9.0.4" + } + }, + "node_modules/@shikijs/engine-javascript": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.29.2.tgz", + "integrity": "sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "1.29.2", + "@shikijs/vscode-textmate": "^10.0.1", + "oniguruma-to-es": "^2.2.0" + } + }, + "node_modules/@shikijs/engine-oniguruma": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.29.2.tgz", + "integrity": "sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "1.29.2", + "@shikijs/vscode-textmate": "^10.0.1" + } + }, + "node_modules/@shikijs/langs": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-1.29.2.tgz", + "integrity": "sha512-FIBA7N3LZ+223U7cJDUYd5shmciFQlYkFXlkKVaHsCPgfVLiO+e12FmQE6Tf9vuyEsFe3dIl8qGWKXgEHL9wmQ==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "1.29.2" + } + }, + "node_modules/@shikijs/rehype": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/rehype/-/rehype-1.29.2.tgz", + "integrity": "sha512-sxi53HZe5XDz0s2UqF+BVN/kgHPMS9l6dcacM4Ra3ZDzCJa5rDGJ+Ukpk4LxdD1+MITBM6hoLbPfGv9StV8a5Q==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "1.29.2", + "@types/hast": "^3.0.4", + "hast-util-to-string": "^3.0.1", + "shiki": "1.29.2", + "unified": "^11.0.5", + "unist-util-visit": "^5.0.0" + } + }, + "node_modules/@shikijs/themes": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-1.29.2.tgz", + "integrity": "sha512-i9TNZlsq4uoyqSbluIcZkmPL9Bfi3djVxRnofUHwvx/h6SRW3cwgBC5SML7vsDcWyukY0eCzVN980rqP6qNl9g==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "1.29.2" + } + }, + "node_modules/@shikijs/transformers": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/transformers/-/transformers-1.29.2.tgz", + "integrity": "sha512-NHQuA+gM7zGuxGWP9/Ub4vpbwrYCrho9nQCLcCPfOe3Yc7LOYwmSuhElI688oiqIXk9dlZwDiyAG9vPBTuPJMA==", + "license": "MIT", + "dependencies": { + "@shikijs/core": "1.29.2", + "@shikijs/types": "1.29.2" + } + }, + "node_modules/@shikijs/twoslash": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/twoslash/-/twoslash-1.29.2.tgz", + "integrity": "sha512-2S04ppAEa477tiaLfGEn1QJWbZUmbk8UoPbAEw4PifsrxkBXtAtOflIZJNtuCwz8ptc/TPxy7CO7gW4Uoi6o/g==", + "license": "MIT", + "dependencies": { + "@shikijs/core": "1.29.2", + "@shikijs/types": "1.29.2", + "twoslash": "^0.2.12" + } + }, + "node_modules/@shikijs/twoslash/node_modules/twoslash": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/twoslash/-/twoslash-0.2.12.tgz", + "integrity": "sha512-tEHPASMqi7kqwfJbkk7hc/4EhlrKCSLcur+TcvYki3vhIfaRMXnXjaYFgXpoZRbT6GdprD4tGuVBEmTpUgLBsw==", + "license": "MIT", + "dependencies": { + "@typescript/vfs": "^1.6.0", + "twoslash-protocol": "0.2.12" + }, + "peerDependencies": { + "typescript": "*" + } + }, + "node_modules/@shikijs/twoslash/node_modules/twoslash-protocol": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/twoslash-protocol/-/twoslash-protocol-0.2.12.tgz", + "integrity": "sha512-5qZLXVYfZ9ABdjqbvPc4RWMr7PrpPaaDSeaYY55vl/w1j6H6kzsWK/urAEIXlzYlyrFmyz1UbwIt+AA0ck+wbg==", + "license": "MIT" + }, + "node_modules/@shikijs/types": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.29.2.tgz", + "integrity": "sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw==", + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.1", + "@types/hast": "^3.0.4" + } + }, + "node_modules/@shikijs/vscode-textmate": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", + "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", + "license": "MIT" + }, + "node_modules/@standard-schema/spec": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz", + "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==", + "license": "MIT" + }, + "node_modules/@tailwindcss/node": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.15.tgz", + "integrity": "sha512-HF4+7QxATZWY3Jr8OlZrBSXmwT3Watj0OogeDvdUY/ByXJHQ+LBtqA2brDb3sBxYslIFx6UP94BJ4X6a4L9Bmw==", + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.4", + "enhanced-resolve": "^5.18.3", + "jiti": "^2.6.0", + "lightningcss": "1.30.2", + "magic-string": "^0.30.19", + "source-map-js": "^1.2.1", + "tailwindcss": "4.1.15" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.15.tgz", + "integrity": "sha512-krhX+UOOgnsUuks2SR7hFafXmLQrKxB4YyRTERuCE59JlYL+FawgaAlSkOYmDRJdf1Q+IFNDMl9iRnBW7QBDfQ==", + "license": "MIT", + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.1.15", + "@tailwindcss/oxide-darwin-arm64": "4.1.15", + "@tailwindcss/oxide-darwin-x64": "4.1.15", + "@tailwindcss/oxide-freebsd-x64": "4.1.15", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.15", + "@tailwindcss/oxide-linux-arm64-gnu": "4.1.15", + "@tailwindcss/oxide-linux-arm64-musl": "4.1.15", + "@tailwindcss/oxide-linux-x64-gnu": "4.1.15", + "@tailwindcss/oxide-linux-x64-musl": "4.1.15", + "@tailwindcss/oxide-wasm32-wasi": "4.1.15", + "@tailwindcss/oxide-win32-arm64-msvc": "4.1.15", + "@tailwindcss/oxide-win32-x64-msvc": "4.1.15" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.15.tgz", + "integrity": "sha512-TkUkUgAw8At4cBjCeVCRMc/guVLKOU1D+sBPrHt5uVcGhlbVKxrCaCW9OKUIBv1oWkjh4GbunD/u/Mf0ql6kEA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.15.tgz", + "integrity": "sha512-xt5XEJpn2piMSfvd1UFN6jrWXyaKCwikP4Pidcf+yfHTSzSpYhG3dcMktjNkQO3JiLCp+0bG0HoWGvz97K162w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.15.tgz", + "integrity": "sha512-TnWaxP6Bx2CojZEXAV2M01Yl13nYPpp0EtGpUrY+LMciKfIXiLL2r/SiSRpagE5Fp2gX+rflp/Os1VJDAyqymg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.15.tgz", + "integrity": "sha512-quISQDWqiB6Cqhjc3iWptXVZHNVENsWoI77L1qgGEHNIdLDLFnw3/AfY7DidAiiCIkGX/MjIdB3bbBZR/G2aJg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.15.tgz", + "integrity": "sha512-ObG76+vPlab65xzVUQbExmDU9FIeYLQ5k2LrQdR2Ud6hboR+ZobXpDoKEYXf/uOezOfIYmy2Ta3w0ejkTg9yxg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.15.tgz", + "integrity": "sha512-4WbBacRmk43pkb8/xts3wnOZMDKsPFyEH/oisCm2q3aLZND25ufvJKcDUpAu0cS+CBOL05dYa8D4U5OWECuH/Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.15.tgz", + "integrity": "sha512-AbvmEiteEj1nf42nE8skdHv73NoR+EwXVSgPY6l39X12Ex8pzOwwfi3Kc8GAmjsnsaDEbk+aj9NyL3UeyHcTLg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.15.tgz", + "integrity": "sha512-+rzMVlvVgrXtFiS+ES78yWgKqpThgV19ISKD58Ck+YO5pO5KjyxLt7AWKsWMbY0R9yBDC82w6QVGz837AKQcHg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.15.tgz", + "integrity": "sha512-fPdEy7a8eQN9qOIK3Em9D3TO1z41JScJn8yxl/76mp4sAXFDfV4YXxsiptJcOwy6bGR+70ZSwFIZhTXzQeqwQg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.15.tgz", + "integrity": "sha512-sJ4yd6iXXdlgIMfIBXuVGp/NvmviEoMVWMOAGxtxhzLPp9LOj5k0pMEMZdjeMCl4C6Up+RM8T3Zgk+BMQ0bGcQ==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.5.0", + "@emnapi/runtime": "^1.5.0", + "@emnapi/wasi-threads": "^1.1.0", + "@napi-rs/wasm-runtime": "^1.0.7", + "@tybys/wasm-util": "^0.10.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.15.tgz", + "integrity": "sha512-sJGE5faXnNQ1iXeqmRin7Ds/ru2fgCiaQZQQz3ZGIDtvbkeV85rAZ0QJFMDg0FrqsffZG96H1U9AQlNBRLsHVg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.15.tgz", + "integrity": "sha512-NLeHE7jUV6HcFKS504bpOohyi01zPXi2PXmjFfkzTph8xRxDdxkRsXm/xDO5uV5K3brrE1cCwbUYmFUSHR3u1w==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/vite": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.1.15.tgz", + "integrity": "sha512-B6s60MZRTUil+xKoZoGe6i0Iar5VuW+pmcGlda2FX+guDuQ1G1sjiIy1W0frneVpeL/ZjZ4KEgWZHNrIm++2qA==", + "license": "MIT", + "dependencies": { + "@tailwindcss/node": "4.1.15", + "@tailwindcss/oxide": "4.1.15", + "tailwindcss": "4.1.15" + }, + "peerDependencies": { + "vite": "^5.2.0 || ^6 || ^7" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/d3": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz", + "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==", + "license": "MIT", + "dependencies": { + "@types/d3-array": "*", + "@types/d3-axis": "*", + "@types/d3-brush": "*", + "@types/d3-chord": "*", + "@types/d3-color": "*", + "@types/d3-contour": "*", + "@types/d3-delaunay": "*", + "@types/d3-dispatch": "*", + "@types/d3-drag": "*", + "@types/d3-dsv": "*", + "@types/d3-ease": "*", + "@types/d3-fetch": "*", + "@types/d3-force": "*", + "@types/d3-format": "*", + "@types/d3-geo": "*", + "@types/d3-hierarchy": "*", + "@types/d3-interpolate": "*", + "@types/d3-path": "*", + "@types/d3-polygon": "*", + "@types/d3-quadtree": "*", + "@types/d3-random": "*", + "@types/d3-scale": "*", + "@types/d3-scale-chromatic": "*", + "@types/d3-selection": "*", + "@types/d3-shape": "*", + "@types/d3-time": "*", + "@types/d3-time-format": "*", + "@types/d3-timer": "*", + "@types/d3-transition": "*", + "@types/d3-zoom": "*" + } + }, + "node_modules/@types/d3-array": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.2.tgz", + "integrity": "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==", + "license": "MIT" + }, + "node_modules/@types/d3-axis": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz", + "integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-brush": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz", + "integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-chord": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz", + "integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==", + "license": "MIT" + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", + "license": "MIT" + }, + "node_modules/@types/d3-contour": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz", + "integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==", + "license": "MIT", + "dependencies": { + "@types/d3-array": "*", + "@types/geojson": "*" + } + }, + "node_modules/@types/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==", + "license": "MIT" + }, + "node_modules/@types/d3-dispatch": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.7.tgz", + "integrity": "sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA==", + "license": "MIT" + }, + "node_modules/@types/d3-drag": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz", + "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-dsv": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz", + "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==", + "license": "MIT" + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", + "license": "MIT" + }, + "node_modules/@types/d3-fetch": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz", + "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==", + "license": "MIT", + "dependencies": { + "@types/d3-dsv": "*" + } + }, + "node_modules/@types/d3-force": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.10.tgz", + "integrity": "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==", + "license": "MIT" + }, + "node_modules/@types/d3-format": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz", + "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==", + "license": "MIT" + }, + "node_modules/@types/d3-geo": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz", + "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==", + "license": "MIT", + "dependencies": { + "@types/geojson": "*" + } + }, + "node_modules/@types/d3-hierarchy": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz", + "integrity": "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==", + "license": "MIT" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "license": "MIT", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", + "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", + "license": "MIT" + }, + "node_modules/@types/d3-polygon": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz", + "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==", + "license": "MIT" + }, + "node_modules/@types/d3-quadtree": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz", + "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==", + "license": "MIT" + }, + "node_modules/@types/d3-random": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz", + "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==", + "license": "MIT" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", + "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", + "license": "MIT", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==", + "license": "MIT" + }, + "node_modules/@types/d3-selection": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.11.tgz", + "integrity": "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==", + "license": "MIT" + }, + "node_modules/@types/d3-shape": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.7.tgz", + "integrity": "sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==", + "license": "MIT", + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", + "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==", + "license": "MIT" + }, + "node_modules/@types/d3-time-format": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz", + "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==", + "license": "MIT" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", + "license": "MIT" + }, + "node_modules/@types/d3-transition": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.9.tgz", + "integrity": "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-zoom": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz", + "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==", + "license": "MIT", + "dependencies": { + "@types/d3-interpolate": "*", + "@types/d3-selection": "*" + } + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "license": "MIT", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "license": "MIT" + }, + "node_modules/@types/estree-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", + "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", + "license": "MIT", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/geojson": { + "version": "7946.0.16", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz", + "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==", + "license": "MIT" + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdx": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz", + "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==", + "license": "MIT" + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "25.0.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.3.tgz", + "integrity": "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA==", + "license": "MIT", + "dependencies": { + "undici-types": "~7.16.0" + } + }, + "node_modules/@types/react": { + "version": "19.2.7", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.7.tgz", + "integrity": "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==", + "license": "MIT", + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT", + "optional": true + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "license": "MIT" + }, + "node_modules/@typescript/vfs": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@typescript/vfs/-/vfs-1.6.2.tgz", + "integrity": "sha512-hoBwJwcbKHmvd2QVebiytN1aELvpk9B74B4L1mFm/XT1Q/VOYAWl2vQ9AWRFtQq8zmz6enTpfTV8WRc4ATjW/g==", + "license": "MIT", + "dependencies": { + "debug": "^4.1.1" + }, + "peerDependencies": { + "typescript": "*" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "license": "ISC" + }, + "node_modules/@vanilla-extract/babel-plugin-debug-ids": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@vanilla-extract/babel-plugin-debug-ids/-/babel-plugin-debug-ids-1.2.2.tgz", + "integrity": "sha512-MeDWGICAF9zA/OZLOKwhoRlsUW+fiMwnfuOAqFVohL31Agj7Q/RBWAYweqjHLgFBCsdnr6XIfwjJnmb2znEWxw==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.23.9" + } + }, + "node_modules/@vanilla-extract/compiler": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@vanilla-extract/compiler/-/compiler-0.3.4.tgz", + "integrity": "sha512-W9HXf9EAccpE1vEIATvSoBVj/bQnmHfYHfDJjUN8dcOHW6oMcnoGTqweDM9I66BHqlNH4d0IsaeZKSViOv7K4w==", + "license": "MIT", + "dependencies": { + "@vanilla-extract/css": "^1.18.0", + "@vanilla-extract/integration": "^8.0.7", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0", + "vite-node": "^3.2.2" + } + }, + "node_modules/@vanilla-extract/css": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/@vanilla-extract/css/-/css-1.18.0.tgz", + "integrity": "sha512-/p0dwOjr0o8gE5BRQ5O9P0u/2DjUd6Zfga2JGmE4KaY7ZITWMszTzk4x4CPlM5cKkRr2ZGzbE6XkuPNfp9shSQ==", + "license": "MIT", + "dependencies": { + "@emotion/hash": "^0.9.0", + "@vanilla-extract/private": "^1.0.9", + "css-what": "^6.1.0", + "cssesc": "^3.0.0", + "csstype": "^3.2.3", + "dedent": "^1.5.3", + "deep-object-diff": "^1.1.9", + "deepmerge": "^4.2.2", + "lru-cache": "^10.4.3", + "media-query-parser": "^2.0.2", + "modern-ahocorasick": "^1.0.0", + "picocolors": "^1.0.0" + } + }, + "node_modules/@vanilla-extract/dynamic": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@vanilla-extract/dynamic/-/dynamic-2.1.5.tgz", + "integrity": "sha512-QGIFGb1qyXQkbzx6X6i3+3LMc/iv/ZMBttMBL+Wm/DetQd36KsKsFg5CtH3qy+1hCA/5w93mEIIAiL4fkM8ycw==", + "license": "MIT", + "dependencies": { + "@vanilla-extract/private": "^1.0.9" + } + }, + "node_modules/@vanilla-extract/integration": { + "version": "8.0.7", + "resolved": "https://registry.npmjs.org/@vanilla-extract/integration/-/integration-8.0.7.tgz", + "integrity": "sha512-ILob4F9cEHXpbWAVt3Y2iaQJpqYq/c/5TJC8Fz58C2XmX3QW2Y589krvViiyJhQfydCGK3EbwPQhVFjQaBeKfg==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.23.9", + "@babel/plugin-syntax-typescript": "^7.23.3", + "@vanilla-extract/babel-plugin-debug-ids": "^1.2.2", + "@vanilla-extract/css": "^1.18.0", + "dedent": "^1.5.3", + "esbuild": "npm:esbuild@>=0.17.6 <0.28.0", + "eval": "0.1.8", + "find-up": "^5.0.0", + "javascript-stringify": "^2.0.1", + "mlly": "^1.4.2" + } + }, + "node_modules/@vanilla-extract/private": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@vanilla-extract/private/-/private-1.0.9.tgz", + "integrity": "sha512-gT2jbfZuaaCLrAxwXbRgIhGhcXbRZCG3v4TTUnjw0EJ7ArdBRxkq4msNJkbuRkCgfIK5ATmprB5t9ljvLeFDEA==", + "license": "MIT" + }, + "node_modules/@vanilla-extract/vite-plugin": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@vanilla-extract/vite-plugin/-/vite-plugin-5.1.4.tgz", + "integrity": "sha512-fTYNKUK3n4ApkUf2FEcO7mpqNKEHf9kDGg8DXlkqHtPxgwPhjuaajmDfQCSBsNgnA2SLI+CB5EO6kLQuKsw2Rw==", + "license": "MIT", + "dependencies": { + "@vanilla-extract/compiler": "^0.3.4", + "@vanilla-extract/integration": "^8.0.7" + }, + "peerDependencies": { + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-5.1.2.tgz", + "integrity": "sha512-EcA07pHJouywpzsoTUqNh5NwGayl2PPVEJKUSinGGSxFGYn+shYbqMGBg6FXDqgXum9Ou/ecb+411ssw8HImJQ==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.28.5", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-beta.53", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.18.0" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" + } + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/aria-hidden": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.6.tgz", + "integrity": "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/astring": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz", + "integrity": "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==", + "license": "MIT", + "bin": { + "astring": "bin/astring" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.23", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.23.tgz", + "integrity": "sha512-YYTXSFulfwytnjAPlw8QHncHJmlvFKtczb8InXaAx9Q0LbfDnfEYDE55omerIJKihhmU61Ft+cAOSzQVaBUmeA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.1", + "caniuse-lite": "^1.0.30001760", + "fraction.js": "^5.3.4", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.9.11", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.11.tgz", + "integrity": "sha512-Sg0xJUNDU1sJNGdfGWhVHX0kkZ+HWcvmVymJbj6NSgZZmW/8S9Y2HQ5euytnIgakgxN6papOAWiwDo1ctFDcoQ==", + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, + "node_modules/bcp-47-match": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/bcp-47-match/-/bcp-47-match-2.0.3.tgz", + "integrity": "sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/bl": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz", + "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==", + "license": "MIT", + "dependencies": { + "buffer": "^6.0.3", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "license": "ISC" + }, + "node_modules/browserslist": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001761", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001761.tgz", + "integrity": "sha512-JF9ptu1vP2coz98+5051jZ4PwQgd2ni8A+gYSN7EA7dPKIMf0pDlSUxhdmVOaV3/fYK5uWBkgSXJaRLr4+3A6g==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chevrotain": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.0.3.tgz", + "integrity": "sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==", + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/cst-dts-gen": "11.0.3", + "@chevrotain/gast": "11.0.3", + "@chevrotain/regexp-to-ast": "11.0.3", + "@chevrotain/types": "11.0.3", + "@chevrotain/utils": "11.0.3", + "lodash-es": "4.17.21" + } + }, + "node_modules/chevrotain-allstar": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/chevrotain-allstar/-/chevrotain-allstar-0.3.1.tgz", + "integrity": "sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==", + "license": "MIT", + "dependencies": { + "lodash-es": "^4.17.21" + }, + "peerDependencies": { + "chevrotain": "^11.0.0" + } + }, + "node_modules/chevrotain/node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "license": "MIT" + }, + "node_modules/chroma-js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-3.2.0.tgz", + "integrity": "sha512-os/OippSlX1RlWWr+QDPcGUZs0uoqr32urfxESG9U93lhUfbnlyckte84Q8P1UQY/qth983AS1JONKmLS4T0nw==", + "license": "(BSD-3-Clause AND Apache-2.0)" + }, + "node_modules/cli-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", + "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", + "license": "MIT", + "dependencies": { + "restore-cursor": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/collapse-white-space": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", + "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "license": "MIT", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", + "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "compressible": "~2.0.18", + "debug": "2.6.9", + "negotiator": "~0.6.4", + "on-headers": "~1.1.0", + "safe-buffer": "5.2.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/confbox": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", + "license": "MIT" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "license": "MIT" + }, + "node_modules/cookie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/cose-base": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz", + "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==", + "license": "MIT", + "dependencies": { + "layout-base": "^1.0.0" + } + }, + "node_modules/create-vocs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/create-vocs/-/create-vocs-1.0.0.tgz", + "integrity": "sha512-Lv1Bd3WZEgwG4nrogkM54m8viW+TWPlGivLyEi7aNb3cuKPsEfMDZ/kTbo87fzOGtsZ2yh7scO54ZmVhhgBgTw==", + "dependencies": { + "@clack/prompts": "^0.7.0", + "cac": "^6.7.14", + "detect-package-manager": "^3.0.2", + "fs-extra": "^11.3.0", + "picocolors": "^1.1.1" + }, + "bin": { + "create-vocs": "_lib/bin.js" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-selector-parser": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-3.3.0.tgz", + "integrity": "sha512-Y2asgMGFqJKF4fq4xHDSlFYIkeVfRsm69lQC1q9kbEsH5XtnINTMrweLkjYMeaUgiXBy/uvKeO/a1JHTNnmB2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ], + "license": "MIT" + }, + "node_modules/css-what": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", + "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "license": "MIT" + }, + "node_modules/cytoscape": { + "version": "3.33.1", + "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.33.1.tgz", + "integrity": "sha512-iJc4TwyANnOGR1OmWhsS9ayRS3s+XQ185FmuHObThD+5AeJCakAAbWv8KimMTt08xCCLNgneQwFp+JRJOr9qGQ==", + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/cytoscape-cose-bilkent": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz", + "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==", + "license": "MIT", + "dependencies": { + "cose-base": "^1.0.0" + }, + "peerDependencies": { + "cytoscape": "^3.2.0" + } + }, + "node_modules/cytoscape-fcose": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz", + "integrity": "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==", + "license": "MIT", + "dependencies": { + "cose-base": "^2.2.0" + }, + "peerDependencies": { + "cytoscape": "^3.2.0" + } + }, + "node_modules/cytoscape-fcose/node_modules/cose-base": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-2.2.0.tgz", + "integrity": "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==", + "license": "MIT", + "dependencies": { + "layout-base": "^2.0.0" + } + }, + "node_modules/cytoscape-fcose/node_modules/layout-base": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-2.0.1.tgz", + "integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==", + "license": "MIT" + }, + "node_modules/d3": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", + "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", + "license": "ISC", + "dependencies": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "license": "ISC", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "license": "ISC", + "dependencies": { + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "license": "ISC", + "dependencies": { + "d3-array": "^3.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "license": "ISC", + "dependencies": { + "delaunator": "5" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "license": "ISC", + "dependencies": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "license": "ISC", + "dependencies": { + "d3-dsv": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-geo": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", + "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", + "license": "ISC", + "dependencies": { + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-sankey": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz", + "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", + "license": "BSD-3-Clause", + "dependencies": { + "d3-array": "1 - 2", + "d3-shape": "^1.2.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "license": "BSD-3-Clause", + "dependencies": { + "internmap": "^1.0.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==", + "license": "BSD-3-Clause" + }, + "node_modules/d3-sankey/node_modules/d3-shape": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "license": "BSD-3-Clause", + "dependencies": { + "d3-path": "1" + } + }, + "node_modules/d3-sankey/node_modules/internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", + "license": "ISC" + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "license": "ISC", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "license": "ISC", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "license": "ISC", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "license": "ISC", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" + } + }, + "node_modules/d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/dagre-d3-es": { + "version": "7.0.13", + "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.13.tgz", + "integrity": "sha512-efEhnxpSuwpYOKRm/L5KbqoZmNNukHa/Flty4Wp62JRvgH2ojwVgPgdYyr4twpieZnyRDdIH7PY2mopX26+j2Q==", + "license": "MIT", + "dependencies": { + "d3": "^7.9.0", + "lodash-es": "^4.17.21" + } + }, + "node_modules/dayjs": { + "version": "1.11.19", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz", + "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decode-named-character-reference": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz", + "integrity": "sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==", + "license": "MIT", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/dedent": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.1.tgz", + "integrity": "sha512-9JmrhGZpOlEgOLdQgSm0zxFaYoQon408V1v49aqTWuXENVlnCuY9JBZcXZiCsZQWDjTm5Qf/nIvAy77mXDAjEg==", + "license": "MIT", + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/deep-object-diff": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/deep-object-diff/-/deep-object-diff-1.1.9.tgz", + "integrity": "sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA==", + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/delaunator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", + "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", + "license": "ISC", + "dependencies": { + "robust-predicates": "^3.0.2" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", + "license": "MIT" + }, + "node_modules/detect-package-manager": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/detect-package-manager/-/detect-package-manager-3.0.2.tgz", + "integrity": "sha512-8JFjJHutStYrfWwzfretQoyNGoZVW1Fsrp4JO9spa7h/fBfwgTMEIy4/LBzRDGsxwVPHU0q+T9YvwLDJoOApLQ==", + "license": "MIT", + "dependencies": { + "execa": "^5.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "license": "MIT", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/direction": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/direction/-/direction-2.0.1.tgz", + "integrity": "sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==", + "license": "MIT", + "bin": { + "direction": "cli.js" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/dompurify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.1.tgz", + "integrity": "sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==", + "license": "(MPL-2.0 OR Apache-2.0)", + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "license": "MIT" + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.267", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz", + "integrity": "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==", + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "license": "MIT" + }, + "node_modules/emoji-regex-xs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz", + "integrity": "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==", + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.18.4", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.4.tgz", + "integrity": "sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "license": "MIT" + }, + "node_modules/esast-util-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/esast-util-from-estree/-/esast-util-from-estree-2.0.0.tgz", + "integrity": "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/esast-util-from-js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esast-util-from-js/-/esast-util-from-js-2.0.1.tgz", + "integrity": "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "acorn": "^8.0.0", + "esast-util-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/esbuild": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.2.tgz", + "integrity": "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.2", + "@esbuild/android-arm": "0.27.2", + "@esbuild/android-arm64": "0.27.2", + "@esbuild/android-x64": "0.27.2", + "@esbuild/darwin-arm64": "0.27.2", + "@esbuild/darwin-x64": "0.27.2", + "@esbuild/freebsd-arm64": "0.27.2", + "@esbuild/freebsd-x64": "0.27.2", + "@esbuild/linux-arm": "0.27.2", + "@esbuild/linux-arm64": "0.27.2", + "@esbuild/linux-ia32": "0.27.2", + "@esbuild/linux-loong64": "0.27.2", + "@esbuild/linux-mips64el": "0.27.2", + "@esbuild/linux-ppc64": "0.27.2", + "@esbuild/linux-riscv64": "0.27.2", + "@esbuild/linux-s390x": "0.27.2", + "@esbuild/linux-x64": "0.27.2", + "@esbuild/netbsd-arm64": "0.27.2", + "@esbuild/netbsd-x64": "0.27.2", + "@esbuild/openbsd-arm64": "0.27.2", + "@esbuild/openbsd-x64": "0.27.2", + "@esbuild/openharmony-arm64": "0.27.2", + "@esbuild/sunos-x64": "0.27.2", + "@esbuild/win32-arm64": "0.27.2", + "@esbuild/win32-ia32": "0.27.2", + "@esbuild/win32-x64": "0.27.2" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/estree-util-attach-comments": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz", + "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-build-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz", + "integrity": "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-walker": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-scope": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/estree-util-scope/-/estree-util-scope-1.0.0.tgz", + "integrity": "sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-to-js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz", + "integrity": "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "astring": "^1.8.0", + "source-map": "^0.7.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-value-to-estree": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/estree-util-value-to-estree/-/estree-util-value-to-estree-3.5.0.tgz", + "integrity": "sha512-aMV56R27Gv3QmfmF1MY12GWkGzzeAezAX+UplqHVASfjc9wNzI/X6hC0S9oxq61WT4aQesLGslWP9tKk6ghRZQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/remcohaszing" + } + }, + "node_modules/estree-util-visit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", + "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eval": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eval/-/eval-0.1.8.tgz", + "integrity": "sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==", + "dependencies": { + "@types/node": "*", + "require-like": ">= 0.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" + }, + "node_modules/fault": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fault/-/fault-2.0.1.tgz", + "integrity": "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==", + "license": "MIT", + "dependencies": { + "format": "^0.2.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/format": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", + "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/fraction.js": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", + "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "11.3.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.3.tgz", + "integrity": "sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/github-slugger": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", + "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==", + "license": "ISC" + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/hachure-fill": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/hachure-fill/-/hachure-fill-0.5.2.tgz", + "integrity": "sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==", + "license": "MIT" + }, + "node_modules/hast-util-classnames": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-classnames/-/hast-util-classnames-3.0.0.tgz", + "integrity": "sha512-tI3JjoGDEBVorMAWK4jNRsfLMYmih1BUOG3VV36pH36njs1IEl7xkNrVTD2mD2yYHmQCa5R/fj61a8IAF4bRaQ==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-dom": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/hast-util-from-dom/-/hast-util-from-dom-5.0.1.tgz", + "integrity": "sha512-N+LqofjR2zuzTjCPzyDUdSshy4Ma6li7p/c3pA78uTwzFgENbgbUrm2ugwsOdcjI1muO+o6Dgzp9p8WHtn/39Q==", + "license": "ISC", + "dependencies": { + "@types/hast": "^3.0.0", + "hastscript": "^9.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-dom/node_modules/hastscript": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.1.tgz", + "integrity": "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^4.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-html": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.3.tgz", + "integrity": "sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "devlop": "^1.1.0", + "hast-util-from-parse5": "^8.0.0", + "parse5": "^7.0.0", + "vfile": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-html-isomorphic": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hast-util-from-html-isomorphic/-/hast-util-from-html-isomorphic-2.0.0.tgz", + "integrity": "sha512-zJfpXq44yff2hmE0XmwEOzdWin5xwH+QIhMLOScpX91e/NSGPsAzNCvLQDIEPyO2TXi+lBmU6hjLIhV8MwP2kw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-from-dom": "^5.0.0", + "hast-util-from-html": "^2.0.0", + "unist-util-remove-position": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-parse5": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz", + "integrity": "sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "hastscript": "^9.0.0", + "property-information": "^7.0.0", + "vfile": "^6.0.0", + "vfile-location": "^5.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-parse5/node_modules/hastscript": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.1.tgz", + "integrity": "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^4.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-has-property": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-has-property/-/hast-util-has-property-3.0.0.tgz", + "integrity": "sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-heading-rank": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-heading-rank/-/hast-util-heading-rank-3.0.0.tgz", + "integrity": "sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-is-element": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", + "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-parse-selector": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", + "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-select": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/hast-util-select/-/hast-util-select-6.0.4.tgz", + "integrity": "sha512-RqGS1ZgI0MwxLaKLDxjprynNzINEkRHY2i8ln4DDjgv9ZhcYVIHN9rlpiYsqtFwrgpYU361SyWDQcGNIBVu3lw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "bcp-47-match": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "css-selector-parser": "^3.0.0", + "devlop": "^1.0.0", + "direction": "^2.0.0", + "hast-util-has-property": "^3.0.0", + "hast-util-to-string": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "nth-check": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-estree": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz", + "integrity": "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-attach-comments": "^3.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-html": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", + "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-jsx-runtime": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", + "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-string": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.1.tgz", + "integrity": "sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-text": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-4.0.2.tgz", + "integrity": "sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "hast-util-is-element": "^3.0.0", + "unist-util-find-after": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-8.0.0.tgz", + "integrity": "sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^4.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript/node_modules/property-information": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", + "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/hono": { + "version": "4.11.3", + "resolved": "https://registry.npmjs.org/hono/-/hono-4.11.3.tgz", + "integrity": "sha512-PmQi306+M/ct/m5s66Hrg+adPnkD5jiO6IjA7WhWw0gSBSo1EcRegwuI1deZ+wd5pzCGynCcn2DprnE4/yEV4w==", + "license": "MIT", + "engines": { + "node": ">=16.9.0" + } + }, + "node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/inline-style-parser": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.7.tgz", + "integrity": "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==", + "license": "MIT" + }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "license": "MIT", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-interactive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", + "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/javascript-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.1.0.tgz", + "integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==", + "license": "MIT" + }, + "node_modules/jiti": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/katex": { + "version": "0.16.27", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.27.tgz", + "integrity": "sha512-aeQoDkuRWSqQN6nSvVCEFvfXdqo1OQiCmmW1kc9xSdjutPv7BGO7pqY9sQRJpMOGrEdfDgF2TfRXe5eUAD2Waw==", + "funding": [ + "https://opencollective.com/katex", + "https://github.com/sponsors/katex" + ], + "license": "MIT", + "dependencies": { + "commander": "^8.3.0" + }, + "bin": { + "katex": "cli.js" + } + }, + "node_modules/katex/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/khroma": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/khroma/-/khroma-2.1.0.tgz", + "integrity": "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==" + }, + "node_modules/langium": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/langium/-/langium-3.3.1.tgz", + "integrity": "sha512-QJv/h939gDpvT+9SiLVlY7tZC3xB2qK57v0J04Sh9wpMb6MP1q8gB21L3WIo8T5P1MSMg3Ep14L7KkDCFG3y4w==", + "license": "MIT", + "dependencies": { + "chevrotain": "~11.0.3", + "chevrotain-allstar": "~0.3.0", + "vscode-languageserver": "~9.0.1", + "vscode-languageserver-textdocument": "~1.0.11", + "vscode-uri": "~3.0.8" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/layout-base": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz", + "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==", + "license": "MIT" + }, + "node_modules/lightningcss": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.2.tgz", + "integrity": "sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==", + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.30.2", + "lightningcss-darwin-arm64": "1.30.2", + "lightningcss-darwin-x64": "1.30.2", + "lightningcss-freebsd-x64": "1.30.2", + "lightningcss-linux-arm-gnueabihf": "1.30.2", + "lightningcss-linux-arm64-gnu": "1.30.2", + "lightningcss-linux-arm64-musl": "1.30.2", + "lightningcss-linux-x64-gnu": "1.30.2", + "lightningcss-linux-x64-musl": "1.30.2", + "lightningcss-win32-arm64-msvc": "1.30.2", + "lightningcss-win32-x64-msvc": "1.30.2" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.30.2.tgz", + "integrity": "sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.2.tgz", + "integrity": "sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.2.tgz", + "integrity": "sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.2.tgz", + "integrity": "sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.2.tgz", + "integrity": "sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==", + "cpu": [ + "arm" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.2.tgz", + "integrity": "sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.2.tgz", + "integrity": "sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.2.tgz", + "integrity": "sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.2.tgz", + "integrity": "sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.2.tgz", + "integrity": "sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.2.tgz", + "integrity": "sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash-es": { + "version": "4.17.22", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.22.tgz", + "integrity": "sha512-XEawp1t0gxSi9x01glktRZ5HDy0HXqrM0x5pXQM98EaI0NxO6jVM7omDOxsuEo5UIASAnm2bRp1Jt/e0a2XU8Q==", + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-5.1.0.tgz", + "integrity": "sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==", + "license": "MIT", + "dependencies": { + "chalk": "^5.0.0", + "is-unicode-supported": "^1.1.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/mark.js": { + "version": "8.11.1", + "resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz", + "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==", + "license": "MIT" + }, + "node_modules/markdown-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", + "integrity": "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/markdown-table": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", + "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/marked": { + "version": "16.4.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-16.4.2.tgz", + "integrity": "sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 20" + } + }, + "node_modules/mdast-util-directive": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-directive/-/mdast-util-directive-3.1.0.tgz", + "integrity": "sha512-I3fNFt+DHmpWCYAT7quoM6lHf9wuqtI+oCOfvILnoicNIqjh5E3dEJWiXuYME2gNe8vl1iMQwyUHa7bgFmak6Q==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-find-and-replace": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", + "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz", + "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-frontmatter": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-2.0.1.tgz", + "integrity": "sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "escape-string-regexp": "^5.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-extension-frontmatter": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz", + "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==", + "license": "MIT", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-gfm-autolink-literal": "^2.0.0", + "mdast-util-gfm-footnote": "^2.0.0", + "mdast-util-gfm-strikethrough": "^2.0.0", + "mdast-util-gfm-table": "^2.0.0", + "mdast-util-gfm-task-list-item": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz", + "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-find-and-replace": "^3.0.0", + "micromark-util-character": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-strikethrough": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", + "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", + "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-task-list-item": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", + "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", + "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", + "license": "MIT", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-expression": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", + "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz", + "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdxjs-esm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz", + "integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", + "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/media-query-parser": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/media-query-parser/-/media-query-parser-2.0.2.tgz", + "integrity": "sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "license": "MIT" + }, + "node_modules/mermaid": { + "version": "11.12.2", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.12.2.tgz", + "integrity": "sha512-n34QPDPEKmaeCG4WDMGy0OT6PSyxKCfy2pJgShP+Qow2KLrvWjclwbc3yXfSIf4BanqWEhQEpngWwNp/XhZt6w==", + "license": "MIT", + "dependencies": { + "@braintree/sanitize-url": "^7.1.1", + "@iconify/utils": "^3.0.1", + "@mermaid-js/parser": "^0.6.3", + "@types/d3": "^7.4.3", + "cytoscape": "^3.29.3", + "cytoscape-cose-bilkent": "^4.1.0", + "cytoscape-fcose": "^2.2.0", + "d3": "^7.9.0", + "d3-sankey": "^0.12.3", + "dagre-d3-es": "7.0.13", + "dayjs": "^1.11.18", + "dompurify": "^3.2.5", + "katex": "^0.16.22", + "khroma": "^2.1.0", + "lodash-es": "^4.17.21", + "marked": "^16.2.1", + "roughjs": "^4.6.6", + "stylis": "^4.3.6", + "ts-dedent": "^2.2.0", + "uuid": "^11.1.0" + } + }, + "node_modules/mermaid-isomorphic": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/mermaid-isomorphic/-/mermaid-isomorphic-3.0.4.tgz", + "integrity": "sha512-XQTy7H1XwHK3DPEHf+ZNWiqUEd9BwX3Xws38R9Fj2gx718srmgjlZoUzHr+Tca+O+dqJOJsAJaKzCoP65QDfDg==", + "license": "MIT", + "dependencies": { + "@fortawesome/fontawesome-free": "^6.0.0", + "mermaid": "^11.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/remcohaszing" + }, + "peerDependencies": { + "playwright": "1" + }, + "peerDependenciesMeta": { + "playwright": { + "optional": true + } + } + }, + "node_modules/micromark": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", + "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", + "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-directive": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-3.0.2.tgz", + "integrity": "sha512-wjcXHgk+PPdmvR58Le9d7zQYWy+vKEU9Se44p2CrCDPiLr2FMyiT4Fyb5UFKFC66wGB3kPlgD7q3TnoqPS7SZA==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "parse-entities": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-frontmatter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-2.0.0.tgz", + "integrity": "sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==", + "license": "MIT", + "dependencies": { + "fault": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", + "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", + "license": "MIT", + "dependencies": { + "micromark-extension-gfm-autolink-literal": "^2.0.0", + "micromark-extension-gfm-footnote": "^2.0.0", + "micromark-extension-gfm-strikethrough": "^2.0.0", + "micromark-extension-gfm-table": "^2.0.0", + "micromark-extension-gfm-tagfilter": "^2.0.0", + "micromark-extension-gfm-task-list-item": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", + "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", + "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-table": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz", + "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", + "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", + "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-expression": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.1.tgz", + "integrity": "sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-jsx": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.2.tgz", + "integrity": "sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-md": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz", + "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==", + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz", + "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==", + "license": "MIT", + "dependencies": { + "acorn": "^8.0.0", + "acorn-jsx": "^5.0.0", + "micromark-extension-mdx-expression": "^3.0.0", + "micromark-extension-mdx-jsx": "^3.0.0", + "micromark-extension-mdx-md": "^2.0.0", + "micromark-extension-mdxjs-esm": "^3.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs-esm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz", + "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-factory-destination": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", + "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", + "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-mdx-expression": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.3.tgz", + "integrity": "sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", + "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", + "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", + "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", + "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", + "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", + "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", + "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-events-to-acorn": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.3.tgz", + "integrity": "sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", + "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", + "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", + "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", + "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/mini-svg-data-uri": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz", + "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==", + "license": "MIT", + "bin": { + "mini-svg-data-uri": "cli.js" + } + }, + "node_modules/minisearch": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/minisearch/-/minisearch-7.2.0.tgz", + "integrity": "sha512-dqT2XBYUOZOiC5t2HRnwADjhNS2cecp9u+TJRiJ1Qp/f5qjkeT5APcGPjHw+bz89Ms8Jp+cG4AlE+QZ/QnDglg==", + "license": "MIT" + }, + "node_modules/mlly": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.0.tgz", + "integrity": "sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==", + "license": "MIT", + "dependencies": { + "acorn": "^8.15.0", + "pathe": "^2.0.3", + "pkg-types": "^1.3.1", + "ufo": "^1.6.1" + } + }, + "node_modules/modern-ahocorasick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/modern-ahocorasick/-/modern-ahocorasick-1.1.0.tgz", + "integrity": "sha512-sEKPVl2rM+MNVkGQt3ChdmD8YsigmXdn5NifZn6jiwn9LRJpWm8F3guhaqrJT/JOat6pwpbXEk6kv+b9DMIjsQ==", + "license": "MIT" + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/negotiator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/node-releases": { + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "license": "MIT" + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/nuqs": { + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/nuqs/-/nuqs-2.8.6.tgz", + "integrity": "sha512-aRxeX68b4ULmhio8AADL2be1FWDy0EPqaByPvIYWrA7Pm07UjlrICp/VPlSnXJNAG0+3MQwv3OporO2sOXMVGA==", + "license": "MIT", + "dependencies": { + "@standard-schema/spec": "1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/franky47" + }, + "peerDependencies": { + "@remix-run/react": ">=2", + "@tanstack/react-router": "^1", + "next": ">=14.2.0", + "react": ">=18.2.0 || ^19.0.0-0", + "react-router": "^5 || ^6 || ^7", + "react-router-dom": "^5 || ^6 || ^7" + }, + "peerDependenciesMeta": { + "@remix-run/react": { + "optional": true + }, + "@tanstack/react-router": { + "optional": true + }, + "next": { + "optional": true + }, + "react-router": { + "optional": true + }, + "react-router-dom": { + "optional": true + } + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", + "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/oniguruma-to-es": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-2.3.0.tgz", + "integrity": "sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g==", + "license": "MIT", + "dependencies": { + "emoji-regex-xs": "^1.0.0", + "regex": "^5.1.1", + "regex-recursion": "^5.1.1" + } + }, + "node_modules/ora": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-7.0.1.tgz", + "integrity": "sha512-0TUxTiFJWv+JnjWm4o9yvuskpEJLXTcng8MJuKd+SzAzp2o+OP3HWqNhB4OdJRt1Vsd9/mR0oyaEYlOnL7XIRw==", + "license": "MIT", + "dependencies": { + "chalk": "^5.3.0", + "cli-cursor": "^4.0.0", + "cli-spinners": "^2.9.0", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^1.3.0", + "log-symbols": "^5.1.0", + "stdin-discarder": "^0.1.0", + "string-width": "^6.1.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-limit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz", + "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate/node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/package-manager-detector": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.6.0.tgz", + "integrity": "sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==", + "license": "MIT" + }, + "node_modules/parse-entities": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", + "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-entities/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "license": "MIT" + }, + "node_modules/parse5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "license": "MIT", + "dependencies": { + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-data-parser": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/path-data-parser/-/path-data-parser-0.1.0.tgz", + "integrity": "sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==", + "license": "MIT" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkg-types": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", + "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", + "license": "MIT", + "dependencies": { + "confbox": "^0.1.8", + "mlly": "^1.7.4", + "pathe": "^2.0.1" + } + }, + "node_modules/playwright": { + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.57.0.tgz", + "integrity": "sha512-ilYQj1s8sr2ppEJ2YVadYBN0Mb3mdo9J0wQ+UuDhzYqURwSoW4n1Xs5vs7ORwgDGmyEh33tRMeS8KhdkMoLXQw==", + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.57.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.57.0.tgz", + "integrity": "sha512-agTcKlMw/mjBWOnD6kFZttAAGHgi/Nw0CZ2o6JqWSbMlI219lAFLZZCyqByTsvVAJq5XA5H8cA6PrvBRpBWEuQ==", + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/points-on-curve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/points-on-curve/-/points-on-curve-0.2.0.tgz", + "integrity": "sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==", + "license": "MIT" + }, + "node_modules/points-on-path": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/points-on-path/-/points-on-path-0.2.1.tgz", + "integrity": "sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==", + "license": "MIT", + "dependencies": { + "path-data-parser": "0.1.0", + "points-on-curve": "0.2.0" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "license": "MIT" + }, + "node_modules/property-information": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz", + "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/radix-ui": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/radix-ui/-/radix-ui-1.4.3.tgz", + "integrity": "sha512-aWizCQiyeAenIdUbqEpXgRA1ya65P13NKn/W8rWkcN0OPkRDxdBVLWnIEDsS2RpwCK2nobI7oMUSmexzTDyAmA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-accessible-icon": "1.1.7", + "@radix-ui/react-accordion": "1.2.12", + "@radix-ui/react-alert-dialog": "1.1.15", + "@radix-ui/react-arrow": "1.1.7", + "@radix-ui/react-aspect-ratio": "1.1.7", + "@radix-ui/react-avatar": "1.1.10", + "@radix-ui/react-checkbox": "1.3.3", + "@radix-ui/react-collapsible": "1.1.12", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-context-menu": "2.2.16", + "@radix-ui/react-dialog": "1.1.15", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-dropdown-menu": "2.1.16", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-form": "0.1.8", + "@radix-ui/react-hover-card": "1.1.15", + "@radix-ui/react-label": "2.1.7", + "@radix-ui/react-menu": "2.1.16", + "@radix-ui/react-menubar": "1.1.16", + "@radix-ui/react-navigation-menu": "1.2.14", + "@radix-ui/react-one-time-password-field": "0.1.8", + "@radix-ui/react-password-toggle-field": "0.1.3", + "@radix-ui/react-popover": "1.1.15", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-progress": "1.1.7", + "@radix-ui/react-radio-group": "1.3.8", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-scroll-area": "1.2.10", + "@radix-ui/react-select": "2.2.6", + "@radix-ui/react-separator": "1.1.7", + "@radix-ui/react-slider": "1.3.6", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-switch": "1.2.6", + "@radix-ui/react-tabs": "1.1.13", + "@radix-ui/react-toast": "1.2.15", + "@radix-ui/react-toggle": "1.1.10", + "@radix-ui/react-toggle-group": "1.1.11", + "@radix-ui/react-toolbar": "1.1.11", + "@radix-ui/react-tooltip": "1.2.8", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-escape-keydown": "1.1.1", + "@radix-ui/react-use-is-hydrated": "0.1.0", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-size": "1.1.1", + "@radix-ui/react-visually-hidden": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/radix-ui/node_modules/@radix-ui/react-label": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.7.tgz", + "integrity": "sha512-YT1GqPSL8kJn20djelMX7/cTRp/Y9w5IZHvfxQTVHrOqa2yMl7i/UfMqKRU5V7mEyKTrUVgJXhNQPVCG8PBLoQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/react": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.3.tgz", + "integrity": "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.3" + } + }, + "node_modules/react-intersection-observer": { + "version": "9.16.0", + "resolved": "https://registry.npmjs.org/react-intersection-observer/-/react-intersection-observer-9.16.0.tgz", + "integrity": "sha512-w9nJSEp+DrW9KmQmeWHQyfaP6b03v+TdXynaoA964Wxt7mdR3An11z4NNCQgL4gKSK7y1ver2Fq+JKH6CWEzUA==", + "license": "MIT", + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, + "node_modules/react-refresh": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.18.0.tgz", + "integrity": "sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-remove-scroll": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.7.2.tgz", + "integrity": "sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q==", + "license": "MIT", + "dependencies": { + "react-remove-scroll-bar": "^2.3.7", + "react-style-singleton": "^2.2.3", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.3", + "use-sidecar": "^1.1.3" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", + "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==", + "license": "MIT", + "dependencies": { + "react-style-singleton": "^2.2.2", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-router": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.11.0.tgz", + "integrity": "sha512-uI4JkMmjbWCZc01WVP2cH7ZfSzH91JAZUDd7/nIprDgWxBV1TkkmLToFh7EbMTcMak8URFRa2YoBL/W8GWnCTQ==", + "license": "MIT", + "dependencies": { + "cookie": "^1.0.1", + "set-cookie-parser": "^2.6.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, + "node_modules/react-style-singleton": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", + "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==", + "license": "MIT", + "dependencies": { + "get-nonce": "^1.0.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/recma-build-jsx": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-build-jsx/-/recma-build-jsx-1.0.0.tgz", + "integrity": "sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-util-build-jsx": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/recma-jsx": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/recma-jsx/-/recma-jsx-1.0.1.tgz", + "integrity": "sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w==", + "license": "MIT", + "dependencies": { + "acorn-jsx": "^5.0.0", + "estree-util-to-js": "^2.0.0", + "recma-parse": "^1.0.0", + "recma-stringify": "^1.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/recma-parse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-parse/-/recma-parse-1.0.0.tgz", + "integrity": "sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "esast-util-from-js": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/recma-stringify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-stringify/-/recma-stringify-1.0.0.tgz", + "integrity": "sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-util-to-js": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/regex": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/regex/-/regex-5.1.1.tgz", + "integrity": "sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==", + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-recursion": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-5.1.1.tgz", + "integrity": "sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==", + "license": "MIT", + "dependencies": { + "regex": "^5.1.1", + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-utilities": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz", + "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==", + "license": "MIT" + }, + "node_modules/rehype-autolink-headings": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/rehype-autolink-headings/-/rehype-autolink-headings-7.1.0.tgz", + "integrity": "sha512-rItO/pSdvnvsP4QRB1pmPiNHUskikqtPojZKJPPPAVx9Hj8i8TwMBhofrrAYRhYOOBZH9tgmG5lPqDLuIWPWmw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "hast-util-heading-rank": "^3.0.0", + "hast-util-is-element": "^3.0.0", + "unified": "^11.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-class-names": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/rehype-class-names/-/rehype-class-names-2.0.0.tgz", + "integrity": "sha512-jldCIiAEvXKdq8hqr5f5PzNdIDkvHC6zfKhwta9oRoMu7bn0W7qLES/JrrjBvr9rKz3nJ8x4vY1EWI+dhjHVZQ==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-classnames": "^3.0.0", + "hast-util-select": "^6.0.0", + "unified": "^11.0.4" + } + }, + "node_modules/rehype-mermaid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/rehype-mermaid/-/rehype-mermaid-3.0.0.tgz", + "integrity": "sha512-fxrD5E4Fa1WXUjmjNDvLOMT4XB1WaxcfycFIWiYU0yEMQhcTDElc9aDFnbDFRLxG1Cfo1I3mfD5kg4sjlWaB+Q==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-from-html-isomorphic": "^2.0.0", + "hast-util-to-text": "^4.0.0", + "mermaid-isomorphic": "^3.0.0", + "mini-svg-data-uri": "^1.0.0", + "space-separated-tokens": "^2.0.0", + "unified": "^11.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/remcohaszing" + }, + "peerDependencies": { + "playwright": "1" + }, + "peerDependenciesMeta": { + "playwright": { + "optional": true + } + } + }, + "node_modules/rehype-recma": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rehype-recma/-/rehype-recma-1.0.0.tgz", + "integrity": "sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "hast-util-to-estree": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-slug": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/rehype-slug/-/rehype-slug-6.0.0.tgz", + "integrity": "sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "github-slugger": "^2.0.0", + "hast-util-heading-rank": "^3.0.0", + "hast-util-to-string": "^3.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-directive": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/remark-directive/-/remark-directive-3.0.1.tgz", + "integrity": "sha512-gwglrEQEZcZYgVyG1tQuA+h58EZfq5CSULw7J90AFuCTyib1thgHPoqQ+h9iFvU6R+vnZ5oNFQR5QKgGpk741A==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-directive": "^3.0.0", + "micromark-extension-directive": "^3.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-frontmatter": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-5.0.0.tgz", + "integrity": "sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-frontmatter": "^2.0.0", + "micromark-extension-frontmatter": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-gfm": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz", + "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-gfm": "^3.0.0", + "micromark-extension-gfm": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-mdx": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.1.tgz", + "integrity": "sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==", + "license": "MIT", + "dependencies": { + "mdast-util-mdx": "^3.0.0", + "micromark-extension-mdxjs": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-mdx-frontmatter": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/remark-mdx-frontmatter/-/remark-mdx-frontmatter-5.2.0.tgz", + "integrity": "sha512-U/hjUYTkQqNjjMRYyilJgLXSPF65qbLPdoESOkXyrwz2tVyhAnm4GUKhfXqOOS9W34M3545xEMq+aMpHgVjEeQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "estree-util-value-to-estree": "^3.0.0", + "toml": "^3.0.0", + "unified": "^11.0.0", + "unist-util-mdx-define": "^1.0.0", + "yaml": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/remcohaszing" + } + }, + "node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-rehype": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.2.tgz", + "integrity": "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "mdast-util-to-hast": "^13.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-stringify": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", + "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-to-markdown": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/require-like": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz", + "integrity": "sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==", + "engines": { + "node": "*" + } + }, + "node_modules/restore-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", + "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/robust-predicates": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==", + "license": "Unlicense" + }, + "node_modules/rollup": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.54.0.tgz", + "integrity": "sha512-3nk8Y3a9Ea8szgKhinMlGMhGMw89mqule3KWczxhIzqudyHdCIOHw8WJlj/r329fACjKLEh13ZSk7oE22kyeIw==", + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.54.0", + "@rollup/rollup-android-arm64": "4.54.0", + "@rollup/rollup-darwin-arm64": "4.54.0", + "@rollup/rollup-darwin-x64": "4.54.0", + "@rollup/rollup-freebsd-arm64": "4.54.0", + "@rollup/rollup-freebsd-x64": "4.54.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.54.0", + "@rollup/rollup-linux-arm-musleabihf": "4.54.0", + "@rollup/rollup-linux-arm64-gnu": "4.54.0", + "@rollup/rollup-linux-arm64-musl": "4.54.0", + "@rollup/rollup-linux-loong64-gnu": "4.54.0", + "@rollup/rollup-linux-ppc64-gnu": "4.54.0", + "@rollup/rollup-linux-riscv64-gnu": "4.54.0", + "@rollup/rollup-linux-riscv64-musl": "4.54.0", + "@rollup/rollup-linux-s390x-gnu": "4.54.0", + "@rollup/rollup-linux-x64-gnu": "4.54.0", + "@rollup/rollup-linux-x64-musl": "4.54.0", + "@rollup/rollup-openharmony-arm64": "4.54.0", + "@rollup/rollup-win32-arm64-msvc": "4.54.0", + "@rollup/rollup-win32-ia32-msvc": "4.54.0", + "@rollup/rollup-win32-x64-gnu": "4.54.0", + "@rollup/rollup-win32-x64-msvc": "4.54.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/roughjs": { + "version": "4.6.6", + "resolved": "https://registry.npmjs.org/roughjs/-/roughjs-4.6.6.tgz", + "integrity": "sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==", + "license": "MIT", + "dependencies": { + "hachure-fill": "^0.5.2", + "path-data-parser": "^0.1.0", + "points-on-curve": "^0.2.0", + "points-on-path": "^0.2.1" + } + }, + "node_modules/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", + "license": "BSD-3-Clause" + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/send": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.4.1", + "range-parser": "~1.2.1", + "statuses": "~2.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/serve-static": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "~0.19.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-cookie-parser": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz", + "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==", + "license": "MIT" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shiki": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.29.2.tgz", + "integrity": "sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg==", + "license": "MIT", + "dependencies": { + "@shikijs/core": "1.29.2", + "@shikijs/engine-javascript": "1.29.2", + "@shikijs/engine-oniguruma": "1.29.2", + "@shikijs/langs": "1.29.2", + "@shikijs/themes": "1.29.2", + "@shikijs/types": "1.29.2", + "@shikijs/vscode-textmate": "^10.0.1", + "@types/hast": "^3.0.4" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "license": "MIT" + }, + "node_modules/source-map": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", + "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 12" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/stdin-discarder": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.1.0.tgz", + "integrity": "sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==", + "license": "MIT", + "dependencies": { + "bl": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-6.1.0.tgz", + "integrity": "sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ==", + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^10.2.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "license": "MIT", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/style-to-js": { + "version": "1.1.21", + "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.21.tgz", + "integrity": "sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==", + "license": "MIT", + "dependencies": { + "style-to-object": "1.0.14" + } + }, + "node_modules/style-to-object": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.14.tgz", + "integrity": "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==", + "license": "MIT", + "dependencies": { + "inline-style-parser": "0.2.7" + } + }, + "node_modules/stylis": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz", + "integrity": "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==", + "license": "MIT" + }, + "node_modules/tabbable": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.3.0.tgz", + "integrity": "sha512-EIHvdY5bPLuWForiR/AN2Bxngzpuwn1is4asboytXtpTgsArc+WmSJKVLlhdh71u7jFcryDqB2A8lQvj78MkyQ==", + "license": "MIT" + }, + "node_modules/tailwindcss": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.15.tgz", + "integrity": "sha512-k2WLnWkYFkdpRv+Oby3EBXIyQC8/s1HOFMBUViwtAh6Z5uAozeUSMQlIsn/c6Q2iJzqG6aJT3wdPaRNj70iYxQ==", + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", + "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/tinyexec": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz", + "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/toml": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz", + "integrity": "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==", + "license": "MIT" + }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/ts-dedent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", + "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", + "license": "MIT", + "engines": { + "node": ">=6.10" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/twoslash": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/twoslash/-/twoslash-0.3.6.tgz", + "integrity": "sha512-VuI5OKl+MaUO9UIW3rXKoPgHI3X40ZgB/j12VY6h98Ae1mCBihjPvhOPeJWlxCYcmSbmeZt5ZKkK0dsVtp+6pA==", + "license": "MIT", + "dependencies": { + "@typescript/vfs": "^1.6.2", + "twoslash-protocol": "0.3.6" + }, + "peerDependencies": { + "typescript": "^5.5.0" + } + }, + "node_modules/twoslash-protocol": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/twoslash-protocol/-/twoslash-protocol-0.3.6.tgz", + "integrity": "sha512-FHGsJ9Q+EsNr5bEbgG3hnbkvEBdW5STgPU824AHUjB4kw0Dn4p8tABT7Ncg1Ie6V0+mDg3Qpy41VafZXcQhWMA==", + "license": "MIT" + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/ua-parser-js": { + "version": "1.0.41", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.41.tgz", + "integrity": "sha512-LbBDqdIC5s8iROCUjMbW1f5dJQTEFB1+KO9ogbvlb3nm9n4YHa5p4KTvFPWvh2Hs8gZMBuiB1/8+pdfe/tDPug==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + } + ], + "license": "MIT", + "bin": { + "ua-parser-js": "script/cli.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ufo": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz", + "integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==", + "license": "MIT" + }, + "node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "license": "MIT" + }, + "node_modules/unified": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", + "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-find-after": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-5.0.0.tgz", + "integrity": "sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.1.tgz", + "integrity": "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-mdx-define": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/unist-util-mdx-define/-/unist-util-mdx-define-1.1.2.tgz", + "integrity": "sha512-9ncH7i7TN5Xn7/tzX5bE3rXgz1X/u877gYVAUB3mLeTKYJmQHmqKTDBi6BTGXV7AeolBCI9ErcVsOt2qryoD0g==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-util-scope": "^1.0.0", + "estree-walker": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/remcohaszing" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", + "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", + "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz", + "integrity": "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/use-callback-ref": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", + "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sidecar": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", + "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", + "license": "MIT", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sync-external-store": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", + "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/uuid": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", + "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/esm/bin/uuid" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-location": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz", + "integrity": "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-matter": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/vfile-matter/-/vfile-matter-5.0.1.tgz", + "integrity": "sha512-o6roP82AiX0XfkyTHyRCMXgHfltUNlXSEqCIS80f+mbAyiQBE2fxtDVMtseyytGx75sihiJFo/zR6r/4LTs2Cw==", + "license": "MIT", + "dependencies": { + "vfile": "^6.0.0", + "yaml": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz", + "integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vite": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.0.tgz", + "integrity": "sha512-dZwN5L1VlUBewiP6H9s2+B3e3Jg96D0vzN+Ry73sOefebhYr9f94wwkMNN/9ouoU8pV1BqA1d1zGk8928cx0rg==", + "license": "MIT", + "dependencies": { + "esbuild": "^0.27.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite-node": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz", + "integrity": "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==", + "license": "MIT", + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.4.1", + "es-module-lexer": "^1.7.0", + "pathe": "^2.0.3", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vite/node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/vocs": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/vocs/-/vocs-1.4.0.tgz", + "integrity": "sha512-mXjO0ZSaafnWXXz9EbsTyy6NhII7OXV3NGb66BPxyH0dtEi29JsQfRzhpLwOczRAJA3/1ca/6PYgF+9/S2yZCQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], + "license": "MIT", + "dependencies": { + "@floating-ui/react": "^0.27.16", + "@hono/node-server": "^1.19.5", + "@mdx-js/mdx": "^3.1.1", + "@mdx-js/react": "^3.1.1", + "@mdx-js/rollup": "^3.1.1", + "@noble/hashes": "^1.7.1", + "@radix-ui/colors": "^3.0.0", + "@radix-ui/react-accordion": "^1.2.3", + "@radix-ui/react-dialog": "^1.1.6", + "@radix-ui/react-icons": "^1.3.2", + "@radix-ui/react-label": "^2.1.2", + "@radix-ui/react-navigation-menu": "^1.2.5", + "@radix-ui/react-popover": "^1.1.6", + "@radix-ui/react-tabs": "^1.1.3", + "@shikijs/rehype": "^1", + "@shikijs/transformers": "^1", + "@shikijs/twoslash": "^1", + "@tailwindcss/vite": "4.1.15", + "@vanilla-extract/css": "^1.17.4", + "@vanilla-extract/dynamic": "^2.1.5", + "@vanilla-extract/vite-plugin": "^5.1.1", + "@vitejs/plugin-react": "^5.0.4", + "autoprefixer": "^10.4.21", + "cac": "^6.7.14", + "chroma-js": "^3.1.2", + "clsx": "^2.1.1", + "compression": "^1.8.1", + "create-vocs": "^1.0.0-alpha.5", + "cross-spawn": "^7.0.6", + "fs-extra": "^11.3.2", + "hastscript": "^8.0.0", + "hono": "^4.10.3", + "mark.js": "^8.11.1", + "mdast-util-directive": "^3.1.0", + "mdast-util-from-markdown": "^2.0.2", + "mdast-util-frontmatter": "^2.0.1", + "mdast-util-gfm": "^3.1.0", + "mdast-util-mdx": "^3.0.0", + "mdast-util-mdx-jsx": "^3.2.0", + "mdast-util-to-hast": "^13.2.0", + "mdast-util-to-markdown": "^2.1.2", + "minisearch": "^7.2.0", + "nuqs": "^2.7.2", + "ora": "^7.0.1", + "p-limit": "^5.0.0", + "picomatch": "^4.0.3", + "playwright": "^1.52.0", + "postcss": "^8.5.2", + "radix-ui": "^1.1.3", + "react-intersection-observer": "^9.15.1", + "react-router": "^7.9.4", + "rehype-autolink-headings": "^7.1.0", + "rehype-class-names": "^2.0.0", + "rehype-mermaid": "^3.0.0", + "rehype-slug": "^6.0.0", + "remark-directive": "^3.0.1", + "remark-frontmatter": "^5.0.0", + "remark-gfm": "^4.0.1", + "remark-mdx": "^3.1.1", + "remark-mdx-frontmatter": "^5.2.0", + "remark-parse": "^11.0.0", + "serve-static": "^1.16.2", + "shiki": "^1", + "toml": "^3.0.0", + "twoslash": "~0.3.4", + "ua-parser-js": "^1.0.40", + "unified": "^11.0.5", + "unist-util-visit": "^5.0.0", + "vfile-matter": "^5.0.1", + "vite": "^7.1.11", + "yaml": "^2.8.1" + }, + "bin": { + "vocs": "_lib/cli/index.js" + }, + "engines": { + "node": ">=22" + }, + "peerDependencies": { + "react": "^19", + "react-dom": "^19" + } + }, + "node_modules/vscode-jsonrpc": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", + "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/vscode-languageserver": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz", + "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==", + "license": "MIT", + "dependencies": { + "vscode-languageserver-protocol": "3.17.5" + }, + "bin": { + "installServerIntoExtension": "bin/installServerIntoExtension" + } + }, + "node_modules/vscode-languageserver-protocol": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", + "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", + "license": "MIT", + "dependencies": { + "vscode-jsonrpc": "8.2.0", + "vscode-languageserver-types": "3.17.5" + } + }, + "node_modules/vscode-languageserver-textdocument": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz", + "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==", + "license": "MIT" + }, + "node_modules/vscode-languageserver-types": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", + "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", + "license": "MIT" + }, + "node_modules/vscode-uri": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz", + "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==", + "license": "MIT" + }, + "node_modules/web-namespaces": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", + "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "license": "ISC" + }, + "node_modules/yaml": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", + "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" + } + }, + "node_modules/yocto-queue": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", + "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + } +} diff --git a/www/package.json b/www/package.json new file mode 100644 index 00000000..3bb70fd3 --- /dev/null +++ b/www/package.json @@ -0,0 +1,21 @@ +{ + "name": "www", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vocs dev", + "build": "vocs build", + "preview": "vocs preview" + }, + "dependencies": { + "react": "latest", + "react-dom": "latest", + "vocs": "latest" + }, + "devDependencies": { + "@types/react": "latest", + "typescript": "latest" + }, + "packageManager": "pnpm@9.11.0+sha512.0a203ffaed5a3f63242cd064c8fb5892366c103e328079318f78062f24ea8c9d50bc6a47aa3567cabefd824d170e78fa2745ed1f16b132e16436146b7688f19b" +} diff --git a/www/pnpm-lock.yaml b/www/pnpm-lock.yaml new file mode 100644 index 00000000..0130e6e8 --- /dev/null +++ b/www/pnpm-lock.yaml @@ -0,0 +1,7199 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + react: + specifier: latest + version: 19.1.1 + react-dom: + specifier: latest + version: 19.1.1(react@19.1.1) + vocs: + specifier: latest + version: 1.0.13(@types/node@24.5.2)(@types/react@19.1.15)(jiti@2.6.0)(lightningcss@1.30.1)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(rollup@4.52.3)(typescript@5.9.2)(yaml@2.8.1) + devDependencies: + '@types/react': + specifier: latest + version: 19.1.15 + typescript: + specifier: latest + version: 5.9.2 + +packages: + + '@antfu/install-pkg@1.1.0': + resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} + + '@antfu/utils@9.2.1': + resolution: {integrity: sha512-TMilPqXyii1AsiEii6l6ubRzbo76p6oshUSYPaKsmXDavyMLqjzVDkcp3pHp5ELMUNJHATcEOGxKTTsX9yYhGg==} + + '@babel/code-frame@7.27.1': + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.28.4': + resolution: {integrity: sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.28.4': + resolution: {integrity: sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.28.3': + resolution: {integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.27.2': + resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-globals@7.28.0': + resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.27.1': + resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.28.3': + resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-plugin-utils@7.27.1': + resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.27.1': + resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.27.1': + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.28.4': + resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.28.4': + resolution: {integrity: sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-syntax-typescript@7.27.1': + resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-self@7.27.1': + resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-source@7.27.1': + resolution: {integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/runtime@7.28.4': + resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.27.2': + resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.28.4': + resolution: {integrity: sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.28.4': + resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==} + engines: {node: '>=6.9.0'} + + '@braintree/sanitize-url@7.1.1': + resolution: {integrity: sha512-i1L7noDNxtFyL5DmZafWy1wRVhGehQmzZaz1HiN5e7iylJMSZR7ekOV7NsIqa5qBldlLrsKv4HbgFUVlQrz8Mw==} + + '@chevrotain/cst-dts-gen@11.0.3': + resolution: {integrity: sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==} + + '@chevrotain/gast@11.0.3': + resolution: {integrity: sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==} + + '@chevrotain/regexp-to-ast@11.0.3': + resolution: {integrity: sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA==} + + '@chevrotain/types@11.0.3': + resolution: {integrity: sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==} + + '@chevrotain/utils@11.0.3': + resolution: {integrity: sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==} + + '@clack/core@0.3.5': + resolution: {integrity: sha512-5cfhQNH+1VQ2xLQlmzXMqUoiaH0lRBq9/CLW9lTyMbuKLC3+xEK01tHVvyut++mLOn5urSHmkm6I0Lg9MaJSTQ==} + + '@clack/prompts@0.7.0': + resolution: {integrity: sha512-0MhX9/B4iL6Re04jPrttDm+BsP8y6mS7byuv0BvXgdXhbV5PdlsHt55dvNsuBCPZ7xq1oTAOOuotR9NFbQyMSA==} + bundledDependencies: + - is-unicode-supported + + '@emotion/hash@0.9.2': + resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} + + '@esbuild/aix-ppc64@0.25.10': + resolution: {integrity: sha512-0NFWnA+7l41irNuaSVlLfgNT12caWJVLzp5eAVhZ0z1qpxbockccEt3s+149rE64VUI3Ml2zt8Nv5JVc4QXTsw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.25.10': + resolution: {integrity: sha512-LSQa7eDahypv/VO6WKohZGPSJDq5OVOo3UoFR1E4t4Gj1W7zEQMUhI+lo81H+DtB+kP+tDgBp+M4oNCwp6kffg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.25.10': + resolution: {integrity: sha512-dQAxF1dW1C3zpeCDc5KqIYuZ1tgAdRXNoZP7vkBIRtKZPYe2xVr/d3SkirklCHudW1B45tGiUlz2pUWDfbDD4w==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.25.10': + resolution: {integrity: sha512-MiC9CWdPrfhibcXwr39p9ha1x0lZJ9KaVfvzA0Wxwz9ETX4v5CHfF09bx935nHlhi+MxhA63dKRRQLiVgSUtEg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.25.10': + resolution: {integrity: sha512-JC74bdXcQEpW9KkV326WpZZjLguSZ3DfS8wrrvPMHgQOIEIG/sPXEN/V8IssoJhbefLRcRqw6RQH2NnpdprtMA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.25.10': + resolution: {integrity: sha512-tguWg1olF6DGqzws97pKZ8G2L7Ig1vjDmGTwcTuYHbuU6TTjJe5FXbgs5C1BBzHbJ2bo1m3WkQDbWO2PvamRcg==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.25.10': + resolution: {integrity: sha512-3ZioSQSg1HT2N05YxeJWYR+Libe3bREVSdWhEEgExWaDtyFbbXWb49QgPvFH8u03vUPX10JhJPcz7s9t9+boWg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.25.10': + resolution: {integrity: sha512-LLgJfHJk014Aa4anGDbh8bmI5Lk+QidDmGzuC2D+vP7mv/GeSN+H39zOf7pN5N8p059FcOfs2bVlrRr4SK9WxA==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.25.10': + resolution: {integrity: sha512-5luJWN6YKBsawd5f9i4+c+geYiVEw20FVW5x0v1kEMWNq8UctFjDiMATBxLvmmHA4bf7F6hTRaJgtghFr9iziQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.25.10': + resolution: {integrity: sha512-oR31GtBTFYCqEBALI9r6WxoU/ZofZl962pouZRTEYECvNF/dtXKku8YXcJkhgK/beU+zedXfIzHijSRapJY3vg==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.25.10': + resolution: {integrity: sha512-NrSCx2Kim3EnnWgS4Txn0QGt0Xipoumb6z6sUtl5bOEZIVKhzfyp/Lyw4C1DIYvzeW/5mWYPBFJU3a/8Yr75DQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.25.10': + resolution: {integrity: sha512-xoSphrd4AZda8+rUDDfD9J6FUMjrkTz8itpTITM4/xgerAZZcFW7Dv+sun7333IfKxGG8gAq+3NbfEMJfiY+Eg==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.25.10': + resolution: {integrity: sha512-ab6eiuCwoMmYDyTnyptoKkVS3k8fy/1Uvq7Dj5czXI6DF2GqD2ToInBI0SHOp5/X1BdZ26RKc5+qjQNGRBelRA==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.25.10': + resolution: {integrity: sha512-NLinzzOgZQsGpsTkEbdJTCanwA5/wozN9dSgEl12haXJBzMTpssebuXR42bthOF3z7zXFWH1AmvWunUCkBE4EA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.25.10': + resolution: {integrity: sha512-FE557XdZDrtX8NMIeA8LBJX3dC2M8VGXwfrQWU7LB5SLOajfJIxmSdyL/gU1m64Zs9CBKvm4UAuBp5aJ8OgnrA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.25.10': + resolution: {integrity: sha512-3BBSbgzuB9ajLoVZk0mGu+EHlBwkusRmeNYdqmznmMc9zGASFjSsxgkNsqmXugpPk00gJ0JNKh/97nxmjctdew==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.25.10': + resolution: {integrity: sha512-QSX81KhFoZGwenVyPoberggdW1nrQZSvfVDAIUXr3WqLRZGZqWk/P4T8p2SP+de2Sr5HPcvjhcJzEiulKgnxtA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.10': + resolution: {integrity: sha512-AKQM3gfYfSW8XRk8DdMCzaLUFB15dTrZfnX8WXQoOUpUBQ+NaAFCP1kPS/ykbbGYz7rxn0WS48/81l9hFl3u4A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.10': + resolution: {integrity: sha512-7RTytDPGU6fek/hWuN9qQpeGPBZFfB4zZgcz2VK2Z5VpdUxEI8JKYsg3JfO0n/Z1E/6l05n0unDCNc4HnhQGig==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.25.10': + resolution: {integrity: sha512-5Se0VM9Wtq797YFn+dLimf2Zx6McttsH2olUBsDml+lm0GOCRVebRWUvDtkY4BWYv/3NgzS8b/UM3jQNh5hYyw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.10': + resolution: {integrity: sha512-XkA4frq1TLj4bEMB+2HnI0+4RnjbuGZfet2gs/LNs5Hc7D89ZQBHQ0gL2ND6Lzu1+QVkjp3x1gIcPKzRNP8bXw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.25.10': + resolution: {integrity: sha512-AVTSBhTX8Y/Fz6OmIVBip9tJzZEUcY8WLh7I59+upa5/GPhh2/aM6bvOMQySspnCCHvFi79kMtdJS1w0DXAeag==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.25.10': + resolution: {integrity: sha512-fswk3XT0Uf2pGJmOpDB7yknqhVkJQkAQOcW/ccVOtfx05LkbWOaRAtn5SaqXypeKQra1QaEa841PgrSL9ubSPQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.25.10': + resolution: {integrity: sha512-ah+9b59KDTSfpaCg6VdJoOQvKjI33nTaQr4UluQwW7aEwZQsbMCfTmfEO4VyewOxx4RaDT/xCy9ra2GPWmO7Kw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.25.10': + resolution: {integrity: sha512-QHPDbKkrGO8/cz9LKVnJU22HOi4pxZnZhhA2HYHez5Pz4JeffhDjf85E57Oyco163GnzNCVkZK0b/n4Y0UHcSw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.25.10': + resolution: {integrity: sha512-9KpxSVFCu0iK1owoez6aC/s/EdUQLDN3adTxGCqxMVhrPDj6bt5dbrHDXUuq+Bs2vATFBBrQS5vdQ/Ed2P+nbw==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@floating-ui/core@1.7.3': + resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==} + + '@floating-ui/dom@1.7.4': + resolution: {integrity: sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==} + + '@floating-ui/react-dom@2.1.6': + resolution: {integrity: sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/react@0.27.16': + resolution: {integrity: sha512-9O8N4SeG2z++TSM8QA/KTeKFBVCNEz/AGS7gWPJf6KFRzmRWixFRnCnkPHRDwSVZW6QPDO6uT0P2SpWNKCc9/g==} + peerDependencies: + react: '>=17.0.0' + react-dom: '>=17.0.0' + + '@floating-ui/utils@0.2.10': + resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==} + + '@fortawesome/fontawesome-free@6.7.2': + resolution: {integrity: sha512-JUOtgFW6k9u4Y+xeIaEiLr3+cjoUPiAuLXoyKOJSia6Duzb7pq+A76P9ZdPDoAoxHdHzq6gE9/jKBGXlZT8FbA==} + engines: {node: '>=6'} + + '@hono/node-server@1.19.5': + resolution: {integrity: sha512-iBuhh+uaaggeAuf+TftcjZyWh2GEgZcVGXkNtskLVoWaXhnJtC5HLHrU8W1KHDoucqO1MswwglmkWLFyiDn4WQ==} + engines: {node: '>=18.14.1'} + peerDependencies: + hono: ^4 + + '@iconify/types@2.0.0': + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + + '@iconify/utils@3.0.2': + resolution: {integrity: sha512-EfJS0rLfVuRuJRn4psJHtK2A9TqVnkxPpHY6lYHiB9+8eSuudsxbwMiavocG45ujOo6FJ+CIRlRnlOGinzkaGQ==} + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + + '@mdx-js/mdx@3.1.1': + resolution: {integrity: sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==} + + '@mdx-js/react@3.1.1': + resolution: {integrity: sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==} + peerDependencies: + '@types/react': '>=16' + react: '>=16' + + '@mdx-js/rollup@3.1.1': + resolution: {integrity: sha512-v8satFmBB+DqDzYohnm1u2JOvxx6Hl3pUvqzJvfs2Zk/ngZ1aRUhsWpXvwPkNeGN9c2NCm/38H29ZqXQUjf8dw==} + peerDependencies: + rollup: '>=2' + + '@mermaid-js/parser@0.6.2': + resolution: {integrity: sha512-+PO02uGF6L6Cs0Bw8RpGhikVvMWEysfAyl27qTlroUB8jSWr1lL0Sf6zi78ZxlSnmgSY2AMMKVgghnN9jTtwkQ==} + + '@noble/hashes@1.8.0': + resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} + engines: {node: ^14.21.3 || >=16} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@radix-ui/colors@3.0.0': + resolution: {integrity: sha512-FUOsGBkHrYJwCSEtWRCIfQbZG7q1e6DgxCIOe1SUQzDe/7rXXeA47s8yCn6fuTNQAj1Zq4oTFi9Yjp3wzElcxg==} + + '@radix-ui/number@1.1.1': + resolution: {integrity: sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==} + + '@radix-ui/primitive@1.1.3': + resolution: {integrity: sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==} + + '@radix-ui/react-accessible-icon@1.1.7': + resolution: {integrity: sha512-XM+E4WXl0OqUJFovy6GjmxxFyx9opfCAIUku4dlKRd5YEPqt4kALOkQOp0Of6reHuUkJuiPBEc5k0o4z4lTC8A==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-accordion@1.2.12': + resolution: {integrity: sha512-T4nygeh9YE9dLRPhAHSeOZi7HBXo+0kYIPJXayZfvWOWA0+n3dESrZbjfDPUABkUNym6Hd+f2IR113To8D2GPA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-alert-dialog@1.1.15': + resolution: {integrity: sha512-oTVLkEw5GpdRe29BqJ0LSDFWI3qu0vR1M0mUkOQWDIUnY/QIkLpgDMWuKxP94c2NAC2LGcgVhG1ImF3jkZ5wXw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-arrow@1.1.7': + resolution: {integrity: sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-aspect-ratio@1.1.7': + resolution: {integrity: sha512-Yq6lvO9HQyPwev1onK1daHCHqXVLzPhSVjmsNjCa2Zcxy2f7uJD2itDtxknv6FzAKCwD1qQkeVDmX/cev13n/g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-avatar@1.1.10': + resolution: {integrity: sha512-V8piFfWapM5OmNCXTzVQY+E1rDa53zY+MQ4Y7356v4fFz6vqCyUtIz2rUD44ZEdwg78/jKmMJHj07+C/Z/rcog==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-checkbox@1.3.3': + resolution: {integrity: sha512-wBbpv+NQftHDdG86Qc0pIyXk5IR3tM8Vd0nWLKDcX8nNn4nXFOFwsKuqw2okA/1D/mpaAkmuyndrPJTYDNZtFw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-collapsible@1.1.12': + resolution: {integrity: sha512-Uu+mSh4agx2ib1uIGPP4/CKNULyajb3p92LsVXmH2EHVMTfZWpll88XJ0j4W0z3f8NK1eYl1+Mf/szHPmcHzyA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-collection@1.1.7': + resolution: {integrity: sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-compose-refs@1.1.2': + resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-context-menu@2.2.16': + resolution: {integrity: sha512-O8morBEW+HsVG28gYDZPTrT9UUovQUlJue5YO836tiTJhuIWBm/zQHc7j388sHWtdH/xUZurK9olD2+pcqx5ww==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-context@1.1.2': + resolution: {integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dialog@1.1.15': + resolution: {integrity: sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-direction@1.1.1': + resolution: {integrity: sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dismissable-layer@1.1.11': + resolution: {integrity: sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-dropdown-menu@2.1.16': + resolution: {integrity: sha512-1PLGQEynI/3OX/ftV54COn+3Sud/Mn8vALg2rWnBLnRaGtJDduNW/22XjlGgPdpcIbiQxjKtb7BkcjP00nqfJw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-focus-guards@1.1.3': + resolution: {integrity: sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-focus-scope@1.1.7': + resolution: {integrity: sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-form@0.1.8': + resolution: {integrity: sha512-QM70k4Zwjttifr5a4sZFts9fn8FzHYvQ5PiB19O2HsYibaHSVt9fH9rzB0XZo/YcM+b7t/p7lYCT/F5eOeF5yQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-hover-card@1.1.15': + resolution: {integrity: sha512-qgTkjNT1CfKMoP0rcasmlH2r1DAiYicWsDsufxl940sT2wHNEWWv6FMWIQXWhVdmC1d/HYfbhQx60KYyAtKxjg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-icons@1.3.2': + resolution: {integrity: sha512-fyQIhGDhzfc9pK2kH6Pl9c4BDJGfMkPqkyIgYDthyNYoNg3wVhoJMMh19WS4Up/1KMPFVpNsT2q3WmXn2N1m6g==} + peerDependencies: + react: ^16.x || ^17.x || ^18.x || ^19.0.0 || ^19.0.0-rc + + '@radix-ui/react-id@1.1.1': + resolution: {integrity: sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-label@2.1.7': + resolution: {integrity: sha512-YT1GqPSL8kJn20djelMX7/cTRp/Y9w5IZHvfxQTVHrOqa2yMl7i/UfMqKRU5V7mEyKTrUVgJXhNQPVCG8PBLoQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-menu@2.1.16': + resolution: {integrity: sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-menubar@1.1.16': + resolution: {integrity: sha512-EB1FktTz5xRRi2Er974AUQZWg2yVBb1yjip38/lgwtCVRd3a+maUoGHN/xs9Yv8SY8QwbSEb+YrxGadVWbEutA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-navigation-menu@1.2.14': + resolution: {integrity: sha512-YB9mTFQvCOAQMHU+C/jVl96WmuWeltyUEpRJJky51huhds5W2FQr1J8D/16sQlf0ozxkPK8uF3niQMdUwZPv5w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-one-time-password-field@0.1.8': + resolution: {integrity: sha512-ycS4rbwURavDPVjCb5iS3aG4lURFDILi6sKI/WITUMZ13gMmn/xGjpLoqBAalhJaDk8I3UbCM5GzKHrnzwHbvg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-password-toggle-field@0.1.3': + resolution: {integrity: sha512-/UuCrDBWravcaMix4TdT+qlNdVwOM1Nck9kWx/vafXsdfj1ChfhOdfi3cy9SGBpWgTXwYCuboT/oYpJy3clqfw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-popover@1.1.15': + resolution: {integrity: sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-popper@1.2.8': + resolution: {integrity: sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-portal@1.1.9': + resolution: {integrity: sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-presence@1.1.5': + resolution: {integrity: sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-primitive@2.1.3': + resolution: {integrity: sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-progress@1.1.7': + resolution: {integrity: sha512-vPdg/tF6YC/ynuBIJlk1mm7Le0VgW6ub6J2UWnTQ7/D23KXcPI1qy+0vBkgKgd38RCMJavBXpB83HPNFMTb0Fg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-radio-group@1.3.8': + resolution: {integrity: sha512-VBKYIYImA5zsxACdisNQ3BjCBfmbGH3kQlnFVqlWU4tXwjy7cGX8ta80BcrO+WJXIn5iBylEH3K6ZTlee//lgQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-roving-focus@1.1.11': + resolution: {integrity: sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-scroll-area@1.2.10': + resolution: {integrity: sha512-tAXIa1g3sM5CGpVT0uIbUx/U3Gs5N8T52IICuCtObaos1S8fzsrPXG5WObkQN3S6NVl6wKgPhAIiBGbWnvc97A==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-select@2.2.6': + resolution: {integrity: sha512-I30RydO+bnn2PQztvo25tswPH+wFBjehVGtmagkU78yMdwTwVf12wnAOF+AeP8S2N8xD+5UPbGhkUfPyvT+mwQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-separator@1.1.7': + resolution: {integrity: sha512-0HEb8R9E8A+jZjvmFCy/J4xhbXy3TV+9XSnGJ3KvTtjlIUy/YQ/p6UYZvi7YbeoeXdyU9+Y3scizK6hkY37baA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-slider@1.3.6': + resolution: {integrity: sha512-JPYb1GuM1bxfjMRlNLE+BcmBC8onfCi60Blk7OBqi2MLTFdS+8401U4uFjnwkOr49BLmXxLC6JHkvAsx5OJvHw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-slot@1.2.3': + resolution: {integrity: sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-switch@1.2.6': + resolution: {integrity: sha512-bByzr1+ep1zk4VubeEVViV592vu2lHE2BZY5OnzehZqOOgogN80+mNtCqPkhn2gklJqOpxWgPoYTSnhBCqpOXQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-tabs@1.1.13': + resolution: {integrity: sha512-7xdcatg7/U+7+Udyoj2zodtI9H/IIopqo+YOIcZOq1nJwXWBZ9p8xiu5llXlekDbZkca79a/fozEYQXIA4sW6A==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-toast@1.2.15': + resolution: {integrity: sha512-3OSz3TacUWy4WtOXV38DggwxoqJK4+eDkNMl5Z/MJZaoUPaP4/9lf81xXMe1I2ReTAptverZUpbPY4wWwWyL5g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-toggle-group@1.1.11': + resolution: {integrity: sha512-5umnS0T8JQzQT6HbPyO7Hh9dgd82NmS36DQr+X/YJ9ctFNCiiQd6IJAYYZ33LUwm8M+taCz5t2ui29fHZc4Y6Q==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-toggle@1.1.10': + resolution: {integrity: sha512-lS1odchhFTeZv3xwHH31YPObmJn8gOg7Lq12inrr0+BH/l3Tsq32VfjqH1oh80ARM3mlkfMic15n0kg4sD1poQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-toolbar@1.1.11': + resolution: {integrity: sha512-4ol06/1bLoFu1nwUqzdD4Y5RZ9oDdKeiHIsntug54Hcr1pgaHiPqHFEaXI1IFP/EsOfROQZ8Mig9VTIRza6Tjg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-tooltip@1.2.8': + resolution: {integrity: sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-use-callback-ref@1.1.1': + resolution: {integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-controllable-state@1.2.2': + resolution: {integrity: sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-effect-event@0.0.2': + resolution: {integrity: sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-escape-keydown@1.1.1': + resolution: {integrity: sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-is-hydrated@0.1.0': + resolution: {integrity: sha512-U+UORVEq+cTnRIaostJv9AGdV3G6Y+zbVd+12e18jQ5A3c0xL03IhnHuiU4UV69wolOQp5GfR58NW/EgdQhwOA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-layout-effect@1.1.1': + resolution: {integrity: sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-previous@1.1.1': + resolution: {integrity: sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-rect@1.1.1': + resolution: {integrity: sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-size@1.1.1': + resolution: {integrity: sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-visually-hidden@1.2.3': + resolution: {integrity: sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/rect@1.1.1': + resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==} + + '@rolldown/pluginutils@1.0.0-beta.27': + resolution: {integrity: sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==} + + '@rollup/pluginutils@5.3.0': + resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/rollup-android-arm-eabi@4.52.3': + resolution: {integrity: sha512-h6cqHGZ6VdnwliFG1NXvMPTy/9PS3h8oLh7ImwR+kl+oYnQizgjxsONmmPSb2C66RksfkfIxEVtDSEcJiO0tqw==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.52.3': + resolution: {integrity: sha512-wd+u7SLT/u6knklV/ifG7gr5Qy4GUbH2hMWcDauPFJzmCZUAJ8L2bTkVXC2niOIxp8lk3iH/QX8kSrUxVZrOVw==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.52.3': + resolution: {integrity: sha512-lj9ViATR1SsqycwFkJCtYfQTheBdvlWJqzqxwc9f2qrcVrQaF/gCuBRTiTolkRWS6KvNxSk4KHZWG7tDktLgjg==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.52.3': + resolution: {integrity: sha512-+Dyo7O1KUmIsbzx1l+4V4tvEVnVQqMOIYtrxK7ncLSknl1xnMHLgn7gddJVrYPNZfEB8CIi3hK8gq8bDhb3h5A==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.52.3': + resolution: {integrity: sha512-u9Xg2FavYbD30g3DSfNhxgNrxhi6xVG4Y6i9Ur1C7xUuGDW3banRbXj+qgnIrwRN4KeJ396jchwy9bCIzbyBEQ==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.52.3': + resolution: {integrity: sha512-5M8kyi/OX96wtD5qJR89a/3x5x8x5inXBZO04JWhkQb2JWavOWfjgkdvUqibGJeNNaz1/Z1PPza5/tAPXICI6A==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.52.3': + resolution: {integrity: sha512-IoerZJ4l1wRMopEHRKOO16e04iXRDyZFZnNZKrWeNquh5d6bucjezgd+OxG03mOMTnS1x7hilzb3uURPkJ0OfA==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.52.3': + resolution: {integrity: sha512-ZYdtqgHTDfvrJHSh3W22TvjWxwOgc3ThK/XjgcNGP2DIwFIPeAPNsQxrJO5XqleSlgDux2VAoWQ5iJrtaC1TbA==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.52.3': + resolution: {integrity: sha512-NcViG7A0YtuFDA6xWSgmFb6iPFzHlf5vcqb2p0lGEbT+gjrEEz8nC/EeDHvx6mnGXnGCC1SeVV+8u+smj0CeGQ==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.52.3': + resolution: {integrity: sha512-d3pY7LWno6SYNXRm6Ebsq0DJGoiLXTb83AIPCXl9fmtIQs/rXoS8SJxxUNtFbJ5MiOvs+7y34np77+9l4nfFMw==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loong64-gnu@4.52.3': + resolution: {integrity: sha512-3y5GA0JkBuirLqmjwAKwB0keDlI6JfGYduMlJD/Rl7fvb4Ni8iKdQs1eiunMZJhwDWdCvrcqXRY++VEBbvk6Eg==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-ppc64-gnu@4.52.3': + resolution: {integrity: sha512-AUUH65a0p3Q0Yfm5oD2KVgzTKgwPyp9DSXc3UA7DtxhEb/WSPfbG4wqXeSN62OG5gSo18em4xv6dbfcUGXcagw==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.52.3': + resolution: {integrity: sha512-1makPhFFVBqZE+XFg3Dkq+IkQ7JvmUrwwqaYBL2CE+ZpxPaqkGaiWFEWVGyvTwZace6WLJHwjVh/+CXbKDGPmg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.52.3': + resolution: {integrity: sha512-OOFJa28dxfl8kLOPMUOQBCO6z3X2SAfzIE276fwT52uXDWUS178KWq0pL7d6p1kz7pkzA0yQwtqL0dEPoVcRWg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.52.3': + resolution: {integrity: sha512-jMdsML2VI5l+V7cKfZx3ak+SLlJ8fKvLJ0Eoa4b9/vCUrzXKgoKxvHqvJ/mkWhFiyp88nCkM5S2v6nIwRtPcgg==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.52.3': + resolution: {integrity: sha512-tPgGd6bY2M2LJTA1uGq8fkSPK8ZLYjDjY+ZLK9WHncCnfIz29LIXIqUgzCR0hIefzy6Hpbe8Th5WOSwTM8E7LA==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.52.3': + resolution: {integrity: sha512-BCFkJjgk+WFzP+tcSMXq77ymAPIxsX9lFJWs+2JzuZTLtksJ2o5hvgTdIcZ5+oKzUDMwI0PfWzRBYAydAHF2Mw==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-openharmony-arm64@4.52.3': + resolution: {integrity: sha512-KTD/EqjZF3yvRaWUJdD1cW+IQBk4fbQaHYJUmP8N4XoKFZilVL8cobFSTDnjTtxWJQ3JYaMgF4nObY/+nYkumA==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.52.3': + resolution: {integrity: sha512-+zteHZdoUYLkyYKObGHieibUFLbttX2r+58l27XZauq0tcWYYuKUwY2wjeCN9oK1Um2YgH2ibd6cnX/wFD7DuA==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.52.3': + resolution: {integrity: sha512-of1iHkTQSo3kr6dTIRX6t81uj/c/b15HXVsPcEElN5sS859qHrOepM5p9G41Hah+CTqSh2r8Bm56dL2z9UQQ7g==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-gnu@4.52.3': + resolution: {integrity: sha512-s0hybmlHb56mWVZQj8ra9048/WZTPLILKxcvcq+8awSZmyiSUZjjem1AhU3Tf4ZKpYhK4mg36HtHDOe8QJS5PQ==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.52.3': + resolution: {integrity: sha512-zGIbEVVXVtauFgl3MRwGWEN36P5ZGenHRMgNw88X5wEhEBpq0XrMEZwOn07+ICrwM17XO5xfMZqh0OldCH5VTA==} + cpu: [x64] + os: [win32] + + '@shikijs/core@1.29.2': + resolution: {integrity: sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ==} + + '@shikijs/engine-javascript@1.29.2': + resolution: {integrity: sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A==} + + '@shikijs/engine-oniguruma@1.29.2': + resolution: {integrity: sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA==} + + '@shikijs/langs@1.29.2': + resolution: {integrity: sha512-FIBA7N3LZ+223U7cJDUYd5shmciFQlYkFXlkKVaHsCPgfVLiO+e12FmQE6Tf9vuyEsFe3dIl8qGWKXgEHL9wmQ==} + + '@shikijs/rehype@1.29.2': + resolution: {integrity: sha512-sxi53HZe5XDz0s2UqF+BVN/kgHPMS9l6dcacM4Ra3ZDzCJa5rDGJ+Ukpk4LxdD1+MITBM6hoLbPfGv9StV8a5Q==} + + '@shikijs/themes@1.29.2': + resolution: {integrity: sha512-i9TNZlsq4uoyqSbluIcZkmPL9Bfi3djVxRnofUHwvx/h6SRW3cwgBC5SML7vsDcWyukY0eCzVN980rqP6qNl9g==} + + '@shikijs/transformers@1.29.2': + resolution: {integrity: sha512-NHQuA+gM7zGuxGWP9/Ub4vpbwrYCrho9nQCLcCPfOe3Yc7LOYwmSuhElI688oiqIXk9dlZwDiyAG9vPBTuPJMA==} + + '@shikijs/twoslash@1.29.2': + resolution: {integrity: sha512-2S04ppAEa477tiaLfGEn1QJWbZUmbk8UoPbAEw4PifsrxkBXtAtOflIZJNtuCwz8ptc/TPxy7CO7gW4Uoi6o/g==} + + '@shikijs/types@1.29.2': + resolution: {integrity: sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw==} + + '@shikijs/vscode-textmate@10.0.2': + resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} + + '@sindresorhus/merge-streams@2.3.0': + resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} + engines: {node: '>=18'} + + '@tailwindcss/node@4.0.7': + resolution: {integrity: sha512-dkFXufkbRB2mu3FPsW5xLAUWJyexpJA+/VtQj18k3SUiJVLdpgzBd1v1gRRcIpEJj7K5KpxBKfOXlZxT3ZZRuA==} + + '@tailwindcss/oxide-android-arm64@4.0.7': + resolution: {integrity: sha512-5iQXXcAeOHBZy8ASfHFm1k0O/9wR2E3tKh6+P+ilZZbQiMgu+qrnfpBWYPc3FPuQdWiWb73069WT5D+CAfx/tg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@tailwindcss/oxide-darwin-arm64@4.0.7': + resolution: {integrity: sha512-7yGZtEc5IgVYylqK/2B0yVqoofk4UAbkn1ygNpIJZyrOhbymsfr8uUFCueTu2fUxmAYIfMZ8waWo2dLg/NgLgg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@tailwindcss/oxide-darwin-x64@4.0.7': + resolution: {integrity: sha512-tPQDV20fBjb26yWbPqT1ZSoDChomMCiXTKn4jupMSoMCFyU7+OJvIY1ryjqBuY622dEBJ8LnCDDWsnj1lX9nNQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@tailwindcss/oxide-freebsd-x64@4.0.7': + resolution: {integrity: sha512-sZqJpTyTZiknU9LLHuByg5GKTW+u3FqM7q7myequAXxKOpAFiOfXpY710FuMY+gjzSapyRbDXJlsTQtCyiTo5w==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.0.7': + resolution: {integrity: sha512-PBgvULgeSswjd8cbZ91gdIcIDMdc3TUHV5XemEpxlqt9M8KoydJzkuB/Dt910jYdofOIaTWRL6adG9nJICvU4A==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-gnu@4.0.7': + resolution: {integrity: sha512-By/a2yeh+e9b+C67F88ndSwVJl2A3tcUDb29FbedDi+DZ4Mr07Oqw9Y1DrDrtHIDhIZ3bmmiL1dkH2YxrtV+zw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-musl@4.0.7': + resolution: {integrity: sha512-WHYs3cpPEJb/ccyT20NOzopYQkl7JKncNBUbb77YFlwlXMVJLLV3nrXQKhr7DmZxz2ZXqjyUwsj2rdzd9stYdw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-gnu@4.0.7': + resolution: {integrity: sha512-7bP1UyuX9kFxbOwkeIJhBZNevKYPXB6xZI37v09fqi6rqRJR8elybwjMUHm54GVP+UTtJ14ueB1K54Dy1tIO6w==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-musl@4.0.7': + resolution: {integrity: sha512-gBQIV8nL/LuhARNGeroqzXymMzzW5wQzqlteVqOVoqwEfpHOP3GMird5pGFbnpY+NP0fOlsZGrxxOPQ4W/84bQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-win32-arm64-msvc@4.0.7': + resolution: {integrity: sha512-aH530NFfx0kpQpvYMfWoeG03zGnRCMVlQG8do/5XeahYydz+6SIBxA1tl/cyITSJyWZHyVt6GVNkXeAD30v0Xg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@tailwindcss/oxide-win32-x64-msvc@4.0.7': + resolution: {integrity: sha512-8Cva6bbJN7ZJx320k7vxGGdU0ewmpfS5A4PudyzUuofdi8MgeINuiiWiPQ0VZCda/GX88K6qp+6UpDZNVr8HMQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@tailwindcss/oxide@4.0.7': + resolution: {integrity: sha512-yr6w5YMgjy+B+zkJiJtIYGXW+HNYOPfRPtSs+aqLnKwdEzNrGv4ZuJh9hYJ3mcA+HMq/K1rtFV+KsEr65S558g==} + engines: {node: '>= 10'} + + '@tailwindcss/vite@4.0.7': + resolution: {integrity: sha512-GYx5sxArfIMtdZCsxfya3S/efMmf4RvfqdiLUozkhmSFBNUFnYVodatpoO/en4/BsOIGvq/RB6HwcTLn9prFnQ==} + peerDependencies: + vite: ^5.2.0 || ^6 + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.28.0': + resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} + + '@types/d3-array@3.2.2': + resolution: {integrity: sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==} + + '@types/d3-axis@3.0.6': + resolution: {integrity: sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==} + + '@types/d3-brush@3.0.6': + resolution: {integrity: sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==} + + '@types/d3-chord@3.0.6': + resolution: {integrity: sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==} + + '@types/d3-color@3.1.3': + resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==} + + '@types/d3-contour@3.0.6': + resolution: {integrity: sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==} + + '@types/d3-delaunay@6.0.4': + resolution: {integrity: sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==} + + '@types/d3-dispatch@3.0.7': + resolution: {integrity: sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA==} + + '@types/d3-drag@3.0.7': + resolution: {integrity: sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==} + + '@types/d3-dsv@3.0.7': + resolution: {integrity: sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==} + + '@types/d3-ease@3.0.2': + resolution: {integrity: sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==} + + '@types/d3-fetch@3.0.7': + resolution: {integrity: sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==} + + '@types/d3-force@3.0.10': + resolution: {integrity: sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==} + + '@types/d3-format@3.0.4': + resolution: {integrity: sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==} + + '@types/d3-geo@3.1.0': + resolution: {integrity: sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==} + + '@types/d3-hierarchy@3.1.7': + resolution: {integrity: sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==} + + '@types/d3-interpolate@3.0.4': + resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==} + + '@types/d3-path@3.1.1': + resolution: {integrity: sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==} + + '@types/d3-polygon@3.0.2': + resolution: {integrity: sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==} + + '@types/d3-quadtree@3.0.6': + resolution: {integrity: sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==} + + '@types/d3-random@3.0.3': + resolution: {integrity: sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==} + + '@types/d3-scale-chromatic@3.1.0': + resolution: {integrity: sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==} + + '@types/d3-scale@4.0.9': + resolution: {integrity: sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==} + + '@types/d3-selection@3.0.11': + resolution: {integrity: sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==} + + '@types/d3-shape@3.1.7': + resolution: {integrity: sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==} + + '@types/d3-time-format@4.0.3': + resolution: {integrity: sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==} + + '@types/d3-time@3.0.4': + resolution: {integrity: sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==} + + '@types/d3-timer@3.0.2': + resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==} + + '@types/d3-transition@3.0.9': + resolution: {integrity: sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==} + + '@types/d3-zoom@3.0.8': + resolution: {integrity: sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==} + + '@types/d3@7.4.3': + resolution: {integrity: sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==} + + '@types/debug@4.1.12': + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + + '@types/estree-jsx@1.0.5': + resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} + + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + + '@types/geojson@7946.0.16': + resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==} + + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + + '@types/mdx@2.0.13': + resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} + + '@types/ms@2.1.0': + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + + '@types/node@24.5.2': + resolution: {integrity: sha512-FYxk1I7wPv3K2XBaoyH2cTnocQEu8AOZ60hPbsyukMPLv5/5qr7V1i8PLHdl6Zf87I+xZXFvPCXYjiTFq+YSDQ==} + + '@types/react@19.1.15': + resolution: {integrity: sha512-+kLxJpaJzXybyDyFXYADyP1cznTO8HSuBpenGlnKOAkH4hyNINiywvXS/tGJhsrGGP/gM185RA3xpjY0Yg4erA==} + + '@types/trusted-types@2.0.7': + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + + '@types/unist@2.0.11': + resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} + + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + + '@typescript/vfs@1.6.1': + resolution: {integrity: sha512-JwoxboBh7Oz1v38tPbkrZ62ZXNHAk9bJ7c9x0eI5zBfBnBYGhURdbnh7Z4smN/MV48Y5OCcZb58n972UtbazsA==} + peerDependencies: + typescript: '*' + + '@ungap/structured-clone@1.3.0': + resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + + '@vanilla-extract/babel-plugin-debug-ids@1.2.2': + resolution: {integrity: sha512-MeDWGICAF9zA/OZLOKwhoRlsUW+fiMwnfuOAqFVohL31Agj7Q/RBWAYweqjHLgFBCsdnr6XIfwjJnmb2znEWxw==} + + '@vanilla-extract/compiler@0.3.1': + resolution: {integrity: sha512-KZ67DZQu58dMo7Jv4PNMPG5TbMOXB68xxVYV2cRJvUdPeiOmX0FOaPgEsYBAZUgd/oLEx4IyV0AvlvsxJ1akfQ==} + + '@vanilla-extract/css@1.17.4': + resolution: {integrity: sha512-m3g9nQDWPtL+sTFdtCGRMI1Vrp86Ay4PBYq1Bo7Bnchj5ElNtAJpOqD+zg+apthVA4fB7oVpMWNjwpa6ElDWFQ==} + + '@vanilla-extract/dynamic@2.1.5': + resolution: {integrity: sha512-QGIFGb1qyXQkbzx6X6i3+3LMc/iv/ZMBttMBL+Wm/DetQd36KsKsFg5CtH3qy+1hCA/5w93mEIIAiL4fkM8ycw==} + + '@vanilla-extract/integration@8.0.4': + resolution: {integrity: sha512-cmOb7tR+g3ulKvFtSbmdw3YUyIS1d7MQqN+FcbwNhdieyno5xzUyfDCMjeWJhmCSMvZ6WlinkrOkgs6SHB+FRg==} + + '@vanilla-extract/private@1.0.9': + resolution: {integrity: sha512-gT2jbfZuaaCLrAxwXbRgIhGhcXbRZCG3v4TTUnjw0EJ7ArdBRxkq4msNJkbuRkCgfIK5ATmprB5t9ljvLeFDEA==} + + '@vanilla-extract/vite-plugin@5.1.1': + resolution: {integrity: sha512-Nd1worqkHrd8XED4ZAA7Wmkd3pCqCwpmzCBVF8v6T1BSLHGXQE5HYflVgygw0CsIAbFRMS6zQBIk4F4/r/YKIw==} + peerDependencies: + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 + + '@vitejs/plugin-react@4.7.0': + resolution: {integrity: sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.15.0: + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} + engines: {node: '>=0.4.0'} + hasBin: true + + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} + engines: {node: '>=12'} + + aria-hidden@1.2.6: + resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==} + engines: {node: '>=10'} + + astring@1.9.0: + resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} + hasBin: true + + autoprefixer@10.4.21: + resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + + bail@2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + baseline-browser-mapping@2.8.9: + resolution: {integrity: sha512-hY/u2lxLrbecMEWSB0IpGzGyDyeoMFQhCvZd2jGFSE5I17Fh01sYUBPCJtkWERw7zrac9+cIghxm/ytJa2X8iA==} + hasBin: true + + bcp-47-match@2.0.3: + resolution: {integrity: sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==} + + bl@5.1.0: + resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + brace-expansion@2.0.2: + resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.26.2: + resolution: {integrity: sha512-ECFzp6uFOSB+dcZ5BK/IBaGWssbSYBHvuMeMt3MMFyhI0Z8SqGgEkBLARgpRH3hutIgPVsALcMwbDrJqPxQ65A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + + caniuse-lite@1.0.30001745: + resolution: {integrity: sha512-ywt6i8FzvdgrrrGbr1jZVObnVv6adj+0if2/omv9cmR2oiZs30zL4DIyaptKcbOrBdOIc74QTMoJvSE2QHh5UQ==} + + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + + chalk@5.6.2: + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + + character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + + character-reference-invalid@2.0.1: + resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + + chevrotain-allstar@0.3.1: + resolution: {integrity: sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==} + peerDependencies: + chevrotain: ^11.0.0 + + chevrotain@11.0.3: + resolution: {integrity: sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==} + + chroma-js@3.1.2: + resolution: {integrity: sha512-IJnETTalXbsLx1eKEgx19d5L6SRM7cH4vINw/99p/M11HCuXGRWL+6YmCm7FWFGIo6dtWuQoQi1dc5yQ7ESIHg==} + + cli-cursor@4.0.0: + resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + + collapse-white-space@2.1.0: + resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} + + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + + commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + + compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + + compression@1.8.1: + resolution: {integrity: sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==} + engines: {node: '>= 0.8.0'} + + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + + confbox@0.2.2: + resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cookie@1.0.2: + resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} + engines: {node: '>=18'} + + cose-base@1.0.3: + resolution: {integrity: sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==} + + cose-base@2.2.0: + resolution: {integrity: sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==} + + create-vocs@1.0.0: + resolution: {integrity: sha512-Lv1Bd3WZEgwG4nrogkM54m8viW+TWPlGivLyEi7aNb3cuKPsEfMDZ/kTbo87fzOGtsZ2yh7scO54ZmVhhgBgTw==} + hasBin: true + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + css-selector-parser@3.1.3: + resolution: {integrity: sha512-gJMigczVZqYAk0hPVzx/M4Hm1D9QOtqkdQk9005TNzDIUGzo5cnHEDiKUT7jGPximL/oYb+LIitcHFQ4aKupxg==} + + css-what@6.2.2: + resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} + engines: {node: '>= 6'} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + cytoscape-cose-bilkent@4.1.0: + resolution: {integrity: sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==} + peerDependencies: + cytoscape: ^3.2.0 + + cytoscape-fcose@2.2.0: + resolution: {integrity: sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==} + peerDependencies: + cytoscape: ^3.2.0 + + cytoscape@3.33.1: + resolution: {integrity: sha512-iJc4TwyANnOGR1OmWhsS9ayRS3s+XQ185FmuHObThD+5AeJCakAAbWv8KimMTt08xCCLNgneQwFp+JRJOr9qGQ==} + engines: {node: '>=0.10'} + + d3-array@2.12.1: + resolution: {integrity: sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==} + + d3-array@3.2.4: + resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} + engines: {node: '>=12'} + + d3-axis@3.0.0: + resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==} + engines: {node: '>=12'} + + d3-brush@3.0.0: + resolution: {integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==} + engines: {node: '>=12'} + + d3-chord@3.0.1: + resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==} + engines: {node: '>=12'} + + d3-color@3.1.0: + resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} + engines: {node: '>=12'} + + d3-contour@4.0.2: + resolution: {integrity: sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==} + engines: {node: '>=12'} + + d3-delaunay@6.0.4: + resolution: {integrity: sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==} + engines: {node: '>=12'} + + d3-dispatch@3.0.1: + resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} + engines: {node: '>=12'} + + d3-drag@3.0.0: + resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} + engines: {node: '>=12'} + + d3-dsv@3.0.1: + resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==} + engines: {node: '>=12'} + hasBin: true + + d3-ease@3.0.1: + resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} + engines: {node: '>=12'} + + d3-fetch@3.0.1: + resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==} + engines: {node: '>=12'} + + d3-force@3.0.0: + resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==} + engines: {node: '>=12'} + + d3-format@3.1.0: + resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==} + engines: {node: '>=12'} + + d3-geo@3.1.1: + resolution: {integrity: sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==} + engines: {node: '>=12'} + + d3-hierarchy@3.1.2: + resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==} + engines: {node: '>=12'} + + d3-interpolate@3.0.1: + resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} + engines: {node: '>=12'} + + d3-path@1.0.9: + resolution: {integrity: sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==} + + d3-path@3.1.0: + resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} + engines: {node: '>=12'} + + d3-polygon@3.0.1: + resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==} + engines: {node: '>=12'} + + d3-quadtree@3.0.1: + resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==} + engines: {node: '>=12'} + + d3-random@3.0.1: + resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==} + engines: {node: '>=12'} + + d3-sankey@0.12.3: + resolution: {integrity: sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==} + + d3-scale-chromatic@3.1.0: + resolution: {integrity: sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==} + engines: {node: '>=12'} + + d3-scale@4.0.2: + resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} + engines: {node: '>=12'} + + d3-selection@3.0.0: + resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} + engines: {node: '>=12'} + + d3-shape@1.3.7: + resolution: {integrity: sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==} + + d3-shape@3.2.0: + resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} + engines: {node: '>=12'} + + d3-time-format@4.1.0: + resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} + engines: {node: '>=12'} + + d3-time@3.1.0: + resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} + engines: {node: '>=12'} + + d3-timer@3.0.1: + resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} + engines: {node: '>=12'} + + d3-transition@3.0.1: + resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} + engines: {node: '>=12'} + peerDependencies: + d3-selection: 2 - 3 + + d3-zoom@3.0.0: + resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} + engines: {node: '>=12'} + + d3@7.9.0: + resolution: {integrity: sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==} + engines: {node: '>=12'} + + dagre-d3-es@7.0.11: + resolution: {integrity: sha512-tvlJLyQf834SylNKax8Wkzco/1ias1OPw8DcUMDE7oUIoSEW25riQVuiu/0OWEFqT0cxHT3Pa9/D82Jr47IONw==} + + dayjs@1.11.18: + resolution: {integrity: sha512-zFBQ7WFRvVRhKcWoUh+ZA1g2HVgUbsZm9sbddh8EC5iv93sui8DVVz1Npvz+r6meo9VKfa8NyLWBsQK1VvIKPA==} + + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decode-named-character-reference@1.2.0: + resolution: {integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==} + + dedent@1.7.0: + resolution: {integrity: sha512-HGFtf8yhuhGhqO07SV79tRp+br4MnbdjeVxotpn1QBl30pcLLCQjX5b2295ll0fv8RKDKsmWYrl05usHM9CewQ==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + + deep-object-diff@1.1.9: + resolution: {integrity: sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA==} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + delaunator@5.0.1: + resolution: {integrity: sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + detect-libc@2.1.1: + resolution: {integrity: sha512-ecqj/sy1jcK1uWrwpR67UhYrIFQ+5WlGxth34WquCbamhFA6hkkwiu37o6J5xCHdo1oixJRfVRw+ywV+Hq/0Aw==} + engines: {node: '>=8'} + + detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + + detect-package-manager@3.0.2: + resolution: {integrity: sha512-8JFjJHutStYrfWwzfretQoyNGoZVW1Fsrp4JO9spa7h/fBfwgTMEIy4/LBzRDGsxwVPHU0q+T9YvwLDJoOApLQ==} + engines: {node: '>=12'} + + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + + direction@2.0.1: + resolution: {integrity: sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==} + hasBin: true + + dompurify@3.2.7: + resolution: {integrity: sha512-WhL/YuveyGXJaerVlMYGWhvQswa7myDG17P7Vu65EWC05o8vfeNbvNf4d/BOvH99+ZW+LlQsc1GDKMa1vNK6dw==} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + electron-to-chromium@1.5.227: + resolution: {integrity: sha512-ITxuoPfJu3lsNWUi2lBM2PaBPYgH3uqmxut5vmBxgYvyI4AlJ6P3Cai1O76mOrkJCBzq0IxWg/NtqOrpu/0gKA==} + + emoji-regex-xs@1.0.0: + resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} + + emoji-regex@10.5.0: + resolution: {integrity: sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg==} + + encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + + enhanced-resolve@5.18.3: + resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==} + engines: {node: '>=10.13.0'} + + entities@6.0.1: + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} + engines: {node: '>=0.12'} + + es-module-lexer@1.7.0: + resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + + esast-util-from-estree@2.0.0: + resolution: {integrity: sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==} + + esast-util-from-js@2.0.1: + resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==} + + esbuild@0.25.10: + resolution: {integrity: sha512-9RiGKvCwaqxO2owP61uQ4BgNborAQskMR6QusfWzQqv7AZOg5oGehdY2pRJMTKuwxd1IDBP4rSbI5lHzU7SMsQ==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + + estree-util-attach-comments@3.0.0: + resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} + + estree-util-build-jsx@3.0.1: + resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==} + + estree-util-is-identifier-name@3.0.0: + resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} + + estree-util-scope@1.0.0: + resolution: {integrity: sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==} + + estree-util-to-js@2.0.0: + resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} + + estree-util-value-to-estree@3.4.0: + resolution: {integrity: sha512-Zlp+gxis+gCfK12d3Srl2PdX2ybsEA8ZYy6vQGVQTNNYLEGRQQ56XB64bjemN8kxIKXP1nC9ip4Z+ILy9LGzvQ==} + + estree-util-visit@2.0.0: + resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + eval@0.1.8: + resolution: {integrity: sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==} + engines: {node: '>= 0.8'} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + exsolve@1.0.7: + resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fastq@1.19.1: + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + + fault@2.0.1: + resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==} + + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + format@0.2.2: + resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} + engines: {node: '>=0.4.x'} + + fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + + fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + + fs-extra@11.3.2: + resolution: {integrity: sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==} + engines: {node: '>=14.14'} + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + github-slugger@2.0.0: + resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + globals@15.15.0: + resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} + engines: {node: '>=18'} + + globby@14.1.0: + resolution: {integrity: sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==} + engines: {node: '>=18'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + hachure-fill@0.5.2: + resolution: {integrity: sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==} + + hast-util-classnames@3.0.0: + resolution: {integrity: sha512-tI3JjoGDEBVorMAWK4jNRsfLMYmih1BUOG3VV36pH36njs1IEl7xkNrVTD2mD2yYHmQCa5R/fj61a8IAF4bRaQ==} + + hast-util-from-dom@5.0.1: + resolution: {integrity: sha512-N+LqofjR2zuzTjCPzyDUdSshy4Ma6li7p/c3pA78uTwzFgENbgbUrm2ugwsOdcjI1muO+o6Dgzp9p8WHtn/39Q==} + + hast-util-from-html-isomorphic@2.0.0: + resolution: {integrity: sha512-zJfpXq44yff2hmE0XmwEOzdWin5xwH+QIhMLOScpX91e/NSGPsAzNCvLQDIEPyO2TXi+lBmU6hjLIhV8MwP2kw==} + + hast-util-from-html@2.0.3: + resolution: {integrity: sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==} + + hast-util-from-parse5@8.0.3: + resolution: {integrity: sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==} + + hast-util-has-property@3.0.0: + resolution: {integrity: sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==} + + hast-util-heading-rank@3.0.0: + resolution: {integrity: sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==} + + hast-util-is-element@3.0.0: + resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} + + hast-util-parse-selector@4.0.0: + resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} + + hast-util-select@6.0.4: + resolution: {integrity: sha512-RqGS1ZgI0MwxLaKLDxjprynNzINEkRHY2i8ln4DDjgv9ZhcYVIHN9rlpiYsqtFwrgpYU361SyWDQcGNIBVu3lw==} + + hast-util-to-estree@3.1.3: + resolution: {integrity: sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==} + + hast-util-to-html@9.0.5: + resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} + + hast-util-to-jsx-runtime@2.3.6: + resolution: {integrity: sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==} + + hast-util-to-string@3.0.1: + resolution: {integrity: sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==} + + hast-util-to-text@4.0.2: + resolution: {integrity: sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==} + + hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + + hastscript@8.0.0: + resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==} + + hastscript@9.0.1: + resolution: {integrity: sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==} + + hono@4.9.9: + resolution: {integrity: sha512-Hxw4wT6zjJGZJdkJzAx9PyBdf7ZpxaTSA0NfxqjLghwMrLBX8p33hJBzoETRakF3UJu6OdNQBZAlNSkGqKFukw==} + engines: {node: '>=16.9.0'} + + html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@7.0.5: + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} + engines: {node: '>= 4'} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + inline-style-parser@0.2.4: + resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} + + internmap@1.0.1: + resolution: {integrity: sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==} + + internmap@2.0.3: + resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} + engines: {node: '>=12'} + + is-alphabetical@2.0.1: + resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} + + is-alphanumerical@2.0.1: + resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} + + is-decimal@2.0.1: + resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-hexadecimal@2.0.1: + resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + + is-interactive@2.0.0: + resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} + engines: {node: '>=12'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-unicode-supported@1.3.0: + resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} + engines: {node: '>=12'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + javascript-stringify@2.1.0: + resolution: {integrity: sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==} + + jiti@2.6.0: + resolution: {integrity: sha512-VXe6RjJkBPj0ohtqaO8vSWP3ZhAKo66fKrFNCll4BTcwljPLz03pCbaNKfzGP5MbrCYcbJ7v0nOYYwUzTEIdXQ==} + hasBin: true + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonfile@6.2.0: + resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} + + katex@0.16.22: + resolution: {integrity: sha512-XCHRdUw4lf3SKBaJe4EvgqIuWwkPSo9XoeO8GjQW94Bp7TWv9hNhzZjZ+OH9yf1UmLygb7DIT5GSFQiyt16zYg==} + hasBin: true + + khroma@2.1.0: + resolution: {integrity: sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==} + + kolorist@1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + + langium@3.3.1: + resolution: {integrity: sha512-QJv/h939gDpvT+9SiLVlY7tZC3xB2qK57v0J04Sh9wpMb6MP1q8gB21L3WIo8T5P1MSMg3Ep14L7KkDCFG3y4w==} + engines: {node: '>=16.0.0'} + + layout-base@1.0.2: + resolution: {integrity: sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==} + + layout-base@2.0.1: + resolution: {integrity: sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==} + + lightningcss-darwin-arm64@1.30.1: + resolution: {integrity: sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.30.1: + resolution: {integrity: sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.30.1: + resolution: {integrity: sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.30.1: + resolution: {integrity: sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.30.1: + resolution: {integrity: sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.30.1: + resolution: {integrity: sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.30.1: + resolution: {integrity: sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.30.1: + resolution: {integrity: sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-win32-arm64-msvc@1.30.1: + resolution: {integrity: sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.30.1: + resolution: {integrity: sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.30.1: + resolution: {integrity: sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==} + engines: {node: '>= 12.0.0'} + + local-pkg@1.1.2: + resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==} + engines: {node: '>=14'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + + log-symbols@5.1.0: + resolution: {integrity: sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==} + engines: {node: '>=12'} + + longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + mark.js@8.11.1: + resolution: {integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==} + + markdown-extensions@2.0.0: + resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} + engines: {node: '>=16'} + + markdown-table@3.0.4: + resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} + + marked@16.3.0: + resolution: {integrity: sha512-K3UxuKu6l6bmA5FUwYho8CfJBlsUWAooKtdGgMcERSpF7gcBUrCGsLH7wDaaNOzwq18JzSUDyoEb/YsrqMac3w==} + engines: {node: '>= 20'} + hasBin: true + + mdast-util-directive@3.1.0: + resolution: {integrity: sha512-I3fNFt+DHmpWCYAT7quoM6lHf9wuqtI+oCOfvILnoicNIqjh5E3dEJWiXuYME2gNe8vl1iMQwyUHa7bgFmak6Q==} + + mdast-util-find-and-replace@3.0.2: + resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} + + mdast-util-from-markdown@2.0.2: + resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} + + mdast-util-frontmatter@2.0.1: + resolution: {integrity: sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==} + + mdast-util-gfm-autolink-literal@2.0.1: + resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} + + mdast-util-gfm-footnote@2.1.0: + resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==} + + mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} + + mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} + + mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} + + mdast-util-gfm@3.1.0: + resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==} + + mdast-util-mdx-expression@2.0.1: + resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} + + mdast-util-mdx-jsx@3.2.0: + resolution: {integrity: sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==} + + mdast-util-mdx@3.0.0: + resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} + + mdast-util-mdxjs-esm@2.0.1: + resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} + + mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + + mdast-util-to-hast@13.2.0: + resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} + + mdast-util-to-markdown@2.1.2: + resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} + + mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + + media-query-parser@2.0.2: + resolution: {integrity: sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w==} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + mermaid-isomorphic@3.0.4: + resolution: {integrity: sha512-XQTy7H1XwHK3DPEHf+ZNWiqUEd9BwX3Xws38R9Fj2gx718srmgjlZoUzHr+Tca+O+dqJOJsAJaKzCoP65QDfDg==} + peerDependencies: + playwright: '1' + peerDependenciesMeta: + playwright: + optional: true + + mermaid@11.12.0: + resolution: {integrity: sha512-ZudVx73BwrMJfCFmSSJT84y6u5brEoV8DOItdHomNLz32uBjNrelm7mg95X7g+C6UoQH/W6mBLGDEDv73JdxBg==} + + micromark-core-commonmark@2.0.3: + resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} + + micromark-extension-directive@3.0.2: + resolution: {integrity: sha512-wjcXHgk+PPdmvR58Le9d7zQYWy+vKEU9Se44p2CrCDPiLr2FMyiT4Fyb5UFKFC66wGB3kPlgD7q3TnoqPS7SZA==} + + micromark-extension-frontmatter@2.0.0: + resolution: {integrity: sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==} + + micromark-extension-gfm-autolink-literal@2.1.0: + resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} + + micromark-extension-gfm-footnote@2.1.0: + resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} + + micromark-extension-gfm-strikethrough@2.1.0: + resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} + + micromark-extension-gfm-table@2.1.1: + resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==} + + micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} + + micromark-extension-gfm-task-list-item@2.1.0: + resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} + + micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + + micromark-extension-mdx-expression@3.0.1: + resolution: {integrity: sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==} + + micromark-extension-mdx-jsx@3.0.2: + resolution: {integrity: sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==} + + micromark-extension-mdx-md@2.0.0: + resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} + + micromark-extension-mdxjs-esm@3.0.0: + resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==} + + micromark-extension-mdxjs@3.0.0: + resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} + + micromark-factory-destination@2.0.1: + resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} + + micromark-factory-label@2.0.1: + resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} + + micromark-factory-mdx-expression@2.0.3: + resolution: {integrity: sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==} + + micromark-factory-space@2.0.1: + resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} + + micromark-factory-title@2.0.1: + resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} + + micromark-factory-whitespace@2.0.1: + resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} + + micromark-util-character@2.1.1: + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} + + micromark-util-chunked@2.0.1: + resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} + + micromark-util-classify-character@2.0.1: + resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} + + micromark-util-combine-extensions@2.0.1: + resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} + + micromark-util-decode-numeric-character-reference@2.0.2: + resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} + + micromark-util-decode-string@2.0.1: + resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} + + micromark-util-encode@2.0.1: + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} + + micromark-util-events-to-acorn@2.0.3: + resolution: {integrity: sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==} + + micromark-util-html-tag-name@2.0.1: + resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} + + micromark-util-normalize-identifier@2.0.1: + resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} + + micromark-util-resolve-all@2.0.1: + resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} + + micromark-util-sanitize-uri@2.0.1: + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} + + micromark-util-subtokenize@2.1.0: + resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==} + + micromark-util-symbol@2.0.1: + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} + + micromark-util-types@2.0.2: + resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} + + micromark@4.0.2: + resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.54.0: + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} + engines: {node: '>= 0.6'} + + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + mini-svg-data-uri@1.4.4: + resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==} + hasBin: true + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minisearch@6.3.0: + resolution: {integrity: sha512-ihFnidEeU8iXzcVHy74dhkxh/dn8Dc08ERl0xwoMMGqp4+LvRSCgicb+zGqWthVokQKvCSxITlh3P08OzdTYCQ==} + + mlly@1.8.0: + resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} + + modern-ahocorasick@1.1.0: + resolution: {integrity: sha512-sEKPVl2rM+MNVkGQt3ChdmD8YsigmXdn5NifZn6jiwn9LRJpWm8F3guhaqrJT/JOat6pwpbXEk6kv+b9DMIjsQ==} + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + negotiator@0.6.4: + resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} + engines: {node: '>= 0.6'} + + node-releases@2.0.21: + resolution: {integrity: sha512-5b0pgg78U3hwXkCM8Z9b2FJdPZlr9Psr9V2gQPESdGHqbntyFJKFW4r5TeWGFzafGY3hzs1JC62VEQMbl1JFkw==} + + normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + on-headers@1.1.0: + resolution: {integrity: sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==} + engines: {node: '>= 0.8'} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + oniguruma-to-es@2.3.0: + resolution: {integrity: sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g==} + + ora@7.0.1: + resolution: {integrity: sha512-0TUxTiFJWv+JnjWm4o9yvuskpEJLXTcng8MJuKd+SzAzp2o+OP3HWqNhB4OdJRt1Vsd9/mR0oyaEYlOnL7XIRw==} + engines: {node: '>=16'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-limit@5.0.0: + resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} + engines: {node: '>=18'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + package-manager-detector@1.3.0: + resolution: {integrity: sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==} + + parse-entities@4.0.2: + resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} + + parse5@7.3.0: + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + path-data-parser@0.1.0: + resolution: {integrity: sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-type@6.0.0: + resolution: {integrity: sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==} + engines: {node: '>=18'} + + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + picomatch@4.0.3: + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + engines: {node: '>=12'} + + pkg-types@1.3.1: + resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + + pkg-types@2.3.0: + resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} + + playwright-core@1.55.1: + resolution: {integrity: sha512-Z6Mh9mkwX+zxSlHqdr5AOcJnfp+xUWLCt9uKV18fhzA8eyxUd8NUWzAjxUh55RZKSYwDGX0cfaySdhZJGMoJ+w==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.55.1: + resolution: {integrity: sha512-cJW4Xd/G3v5ovXtJJ52MAOclqeac9S/aGGgRzLabuF8TnIb6xHvMzKIa6JmrRzUkeXJgfL1MhukP0NK6l39h3A==} + engines: {node: '>=18'} + hasBin: true + + points-on-curve@0.2.0: + resolution: {integrity: sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==} + + points-on-path@0.2.1: + resolution: {integrity: sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.5.6: + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + engines: {node: ^10 || ^12 || >=14} + + property-information@6.5.0: + resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} + + property-information@7.1.0: + resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} + + quansync@0.2.11: + resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + radix-ui@1.4.3: + resolution: {integrity: sha512-aWizCQiyeAenIdUbqEpXgRA1ya65P13NKn/W8rWkcN0OPkRDxdBVLWnIEDsS2RpwCK2nobI7oMUSmexzTDyAmA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + react-dom@19.1.1: + resolution: {integrity: sha512-Dlq/5LAZgF0Gaz6yiqZCf6VCcZs1ghAJyrsu84Q/GT0gV+mCxbfmKNoGRKBYMJ8IEdGPqu49YWXD02GCknEDkw==} + peerDependencies: + react: ^19.1.1 + + react-intersection-observer@9.16.0: + resolution: {integrity: sha512-w9nJSEp+DrW9KmQmeWHQyfaP6b03v+TdXynaoA964Wxt7mdR3An11z4NNCQgL4gKSK7y1ver2Fq+JKH6CWEzUA==} + peerDependencies: + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + react-dom: + optional: true + + react-refresh@0.17.0: + resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} + engines: {node: '>=0.10.0'} + + react-remove-scroll-bar@2.3.8: + resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.7.1: + resolution: {integrity: sha512-HpMh8+oahmIdOuS5aFKKY6Pyog+FNaZV/XyJOq7b4YFwsFHe5yYfdbIalI4k3vU2nSDql7YskmUseHsRrJqIPA==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + react-router@7.9.3: + resolution: {integrity: sha512-4o2iWCFIwhI/eYAIL43+cjORXYn/aRQPgtFRRZb3VzoyQ5Uej0Bmqj7437L97N9NJW4wnicSwLOLS+yCXfAPgg==} + engines: {node: '>=20.0.0'} + peerDependencies: + react: '>=18' + react-dom: '>=18' + peerDependenciesMeta: + react-dom: + optional: true + + react-style-singleton@2.2.3: + resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + react@19.1.1: + resolution: {integrity: sha512-w8nqGImo45dmMIfljjMwOGtbmC/mk4CMYhWIicdSflH91J9TyCyczcPFXJzrZ/ZXcgGRFeP6BU0BEJTw6tZdfQ==} + engines: {node: '>=0.10.0'} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + recma-build-jsx@1.0.0: + resolution: {integrity: sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==} + + recma-jsx@1.0.1: + resolution: {integrity: sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + recma-parse@1.0.0: + resolution: {integrity: sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==} + + recma-stringify@1.0.0: + resolution: {integrity: sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==} + + regex-recursion@5.1.1: + resolution: {integrity: sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==} + + regex-utilities@2.3.0: + resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} + + regex@5.1.1: + resolution: {integrity: sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==} + + rehype-autolink-headings@7.1.0: + resolution: {integrity: sha512-rItO/pSdvnvsP4QRB1pmPiNHUskikqtPojZKJPPPAVx9Hj8i8TwMBhofrrAYRhYOOBZH9tgmG5lPqDLuIWPWmw==} + + rehype-class-names@2.0.0: + resolution: {integrity: sha512-jldCIiAEvXKdq8hqr5f5PzNdIDkvHC6zfKhwta9oRoMu7bn0W7qLES/JrrjBvr9rKz3nJ8x4vY1EWI+dhjHVZQ==} + + rehype-mermaid@3.0.0: + resolution: {integrity: sha512-fxrD5E4Fa1WXUjmjNDvLOMT4XB1WaxcfycFIWiYU0yEMQhcTDElc9aDFnbDFRLxG1Cfo1I3mfD5kg4sjlWaB+Q==} + peerDependencies: + playwright: '1' + peerDependenciesMeta: + playwright: + optional: true + + rehype-recma@1.0.0: + resolution: {integrity: sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==} + + rehype-slug@6.0.0: + resolution: {integrity: sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==} + + remark-directive@3.0.1: + resolution: {integrity: sha512-gwglrEQEZcZYgVyG1tQuA+h58EZfq5CSULw7J90AFuCTyib1thgHPoqQ+h9iFvU6R+vnZ5oNFQR5QKgGpk741A==} + + remark-frontmatter@5.0.0: + resolution: {integrity: sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ==} + + remark-gfm@4.0.1: + resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==} + + remark-mdx-frontmatter@5.2.0: + resolution: {integrity: sha512-U/hjUYTkQqNjjMRYyilJgLXSPF65qbLPdoESOkXyrwz2tVyhAnm4GUKhfXqOOS9W34M3545xEMq+aMpHgVjEeQ==} + + remark-mdx@3.1.1: + resolution: {integrity: sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==} + + remark-parse@11.0.0: + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} + + remark-rehype@11.1.2: + resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==} + + remark-stringify@11.0.0: + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + + require-like@0.1.2: + resolution: {integrity: sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==} + + restore-cursor@4.0.0: + resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + robust-predicates@3.0.2: + resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} + + rollup@4.52.3: + resolution: {integrity: sha512-RIDh866U8agLgiIcdpB+COKnlCreHJLfIhWC3LVflku5YHfpnsIKigRZeFfMfCc4dVcqNVfQQ5gO/afOck064A==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + roughjs@4.6.6: + resolution: {integrity: sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + rw@1.3.3: + resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + scheduler@0.26.0: + resolution: {integrity: sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + send@0.19.0: + resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} + engines: {node: '>= 0.8.0'} + + serve-static@1.16.2: + resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} + engines: {node: '>= 0.8.0'} + + set-cookie-parser@2.7.1: + resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shiki@1.29.2: + resolution: {integrity: sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg==} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + slash@5.1.0: + resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} + engines: {node: '>=14.16'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map@0.7.6: + resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} + engines: {node: '>= 12'} + + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + + stdin-discarder@0.1.0: + resolution: {integrity: sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + string-width@6.1.0: + resolution: {integrity: sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ==} + engines: {node: '>=16'} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + + strip-ansi@7.1.2: + resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} + engines: {node: '>=12'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + style-to-js@1.1.17: + resolution: {integrity: sha512-xQcBGDxJb6jjFCTzvQtfiPn6YvvP2O8U1MDIPNfJQlWMYfktPy+iGsHE7cssjs7y84d9fQaK4UF3RIJaAHSoYA==} + + style-to-object@1.0.9: + resolution: {integrity: sha512-G4qppLgKu/k6FwRpHiGiKPaPTFcG3g4wNVX/Qsfu+RqQM30E7Tyu/TEgxcL9PNLF5pdRLwQdE3YKKf+KF2Dzlw==} + + stylis@4.3.6: + resolution: {integrity: sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==} + + tabbable@6.2.0: + resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} + + tailwindcss@4.0.7: + resolution: {integrity: sha512-yH5bPPyapavo7L+547h3c4jcBXcrKwybQRjwdEIVAd9iXRvy/3T1CC6XSQEgZtRySjKfqvo3Cc0ZF1DTheuIdA==} + + tapable@2.2.3: + resolution: {integrity: sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg==} + engines: {node: '>=6'} + + tinyexec@1.0.1: + resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==} + + tinyglobby@0.2.15: + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} + engines: {node: '>=12.0.0'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + toml@3.0.0: + resolution: {integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==} + + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + + trough@2.2.0: + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + + ts-dedent@2.2.0: + resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} + engines: {node: '>=6.10'} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + twoslash-protocol@0.2.12: + resolution: {integrity: sha512-5qZLXVYfZ9ABdjqbvPc4RWMr7PrpPaaDSeaYY55vl/w1j6H6kzsWK/urAEIXlzYlyrFmyz1UbwIt+AA0ck+wbg==} + + twoslash@0.2.12: + resolution: {integrity: sha512-tEHPASMqi7kqwfJbkk7hc/4EhlrKCSLcur+TcvYki3vhIfaRMXnXjaYFgXpoZRbT6GdprD4tGuVBEmTpUgLBsw==} + peerDependencies: + typescript: '*' + + typescript@5.9.2: + resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==} + engines: {node: '>=14.17'} + hasBin: true + + ua-parser-js@1.0.41: + resolution: {integrity: sha512-LbBDqdIC5s8iROCUjMbW1f5dJQTEFB1+KO9ogbvlb3nm9n4YHa5p4KTvFPWvh2Hs8gZMBuiB1/8+pdfe/tDPug==} + hasBin: true + + ufo@1.6.1: + resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} + + undici-types@7.12.0: + resolution: {integrity: sha512-goOacqME2GYyOZZfb5Lgtu+1IDmAlAEu5xnD3+xTzS10hT0vzpf0SPjkXwAw9Jm+4n/mQGDP3LO8CPbYROeBfQ==} + + unicorn-magic@0.3.0: + resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} + engines: {node: '>=18'} + + unified@11.0.5: + resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} + + unist-util-find-after@5.0.0: + resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==} + + unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + + unist-util-mdx-define@1.1.2: + resolution: {integrity: sha512-9ncH7i7TN5Xn7/tzX5bE3rXgz1X/u877gYVAUB3mLeTKYJmQHmqKTDBi6BTGXV7AeolBCI9ErcVsOt2qryoD0g==} + + unist-util-position-from-estree@2.0.0: + resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} + + unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + + unist-util-remove-position@5.0.0: + resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + + unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + update-browserslist-db@1.1.3: + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + use-callback-ref@1.3.3: + resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + use-sidecar@1.1.3: + resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + use-sync-external-store@1.5.0: + resolution: {integrity: sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + uuid@11.1.0: + resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} + hasBin: true + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + vfile-location@5.0.3: + resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} + + vfile-message@4.0.3: + resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} + + vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + + vite-node@3.2.4: + resolution: {integrity: sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + + vite@6.3.6: + resolution: {integrity: sha512-0msEVHJEScQbhkbVTb/4iHZdJ6SXp/AvxL2sjwYQFfBqleHtnCqv1J3sa9zbWz/6kW1m9Tfzn92vW+kZ1WV6QA==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vocs@1.0.13: + resolution: {integrity: sha512-V/ogXG5xw7jMFXI2Wv0d0ZdCeeT5jzaX0PKdRKcqhnd21UtLZrqa5pKZkStNIZyVpvfsLW0WB7wjB4iBOpueiw==} + hasBin: true + peerDependencies: + react: ^19 + react-dom: ^19 + + vscode-jsonrpc@8.2.0: + resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==} + engines: {node: '>=14.0.0'} + + vscode-languageserver-protocol@3.17.5: + resolution: {integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==} + + vscode-languageserver-textdocument@1.0.12: + resolution: {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==} + + vscode-languageserver-types@3.17.5: + resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} + + vscode-languageserver@9.0.1: + resolution: {integrity: sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==} + hasBin: true + + vscode-uri@3.0.8: + resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} + + web-namespaces@2.0.1: + resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yaml@2.8.1: + resolution: {integrity: sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==} + engines: {node: '>= 14.6'} + hasBin: true + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + yocto-queue@1.2.1: + resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} + engines: {node: '>=12.20'} + + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + +snapshots: + + '@antfu/install-pkg@1.1.0': + dependencies: + package-manager-detector: 1.3.0 + tinyexec: 1.0.1 + + '@antfu/utils@9.2.1': {} + + '@babel/code-frame@7.27.1': + dependencies: + '@babel/helper-validator-identifier': 7.27.1 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.28.4': {} + + '@babel/core@7.28.4': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.3 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) + '@babel/helpers': 7.28.4 + '@babel/parser': 7.28.4 + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.3 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.28.3': + dependencies: + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + + '@babel/helper-compilation-targets@7.27.2': + dependencies: + '@babel/compat-data': 7.28.4 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.26.2 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-globals@7.28.0': {} + + '@babel/helper-module-imports@7.27.1': + dependencies: + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.28.4 + transitivePeerDependencies: + - supports-color + + '@babel/helper-plugin-utils@7.27.1': {} + + '@babel/helper-string-parser@7.27.1': {} + + '@babel/helper-validator-identifier@7.27.1': {} + + '@babel/helper-validator-option@7.27.1': {} + + '@babel/helpers@7.28.4': + dependencies: + '@babel/template': 7.27.2 + '@babel/types': 7.28.4 + + '@babel/parser@7.28.4': + dependencies: + '@babel/types': 7.28.4 + + '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/runtime@7.28.4': {} + + '@babel/template@7.27.2': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 + + '@babel/traverse@7.28.4': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.3 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.28.4 + '@babel/template': 7.27.2 + '@babel/types': 7.28.4 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.28.4': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + + '@braintree/sanitize-url@7.1.1': {} + + '@chevrotain/cst-dts-gen@11.0.3': + dependencies: + '@chevrotain/gast': 11.0.3 + '@chevrotain/types': 11.0.3 + lodash-es: 4.17.21 + + '@chevrotain/gast@11.0.3': + dependencies: + '@chevrotain/types': 11.0.3 + lodash-es: 4.17.21 + + '@chevrotain/regexp-to-ast@11.0.3': {} + + '@chevrotain/types@11.0.3': {} + + '@chevrotain/utils@11.0.3': {} + + '@clack/core@0.3.5': + dependencies: + picocolors: 1.1.1 + sisteransi: 1.0.5 + + '@clack/prompts@0.7.0': + dependencies: + '@clack/core': 0.3.5 + picocolors: 1.1.1 + sisteransi: 1.0.5 + + '@emotion/hash@0.9.2': {} + + '@esbuild/aix-ppc64@0.25.10': + optional: true + + '@esbuild/android-arm64@0.25.10': + optional: true + + '@esbuild/android-arm@0.25.10': + optional: true + + '@esbuild/android-x64@0.25.10': + optional: true + + '@esbuild/darwin-arm64@0.25.10': + optional: true + + '@esbuild/darwin-x64@0.25.10': + optional: true + + '@esbuild/freebsd-arm64@0.25.10': + optional: true + + '@esbuild/freebsd-x64@0.25.10': + optional: true + + '@esbuild/linux-arm64@0.25.10': + optional: true + + '@esbuild/linux-arm@0.25.10': + optional: true + + '@esbuild/linux-ia32@0.25.10': + optional: true + + '@esbuild/linux-loong64@0.25.10': + optional: true + + '@esbuild/linux-mips64el@0.25.10': + optional: true + + '@esbuild/linux-ppc64@0.25.10': + optional: true + + '@esbuild/linux-riscv64@0.25.10': + optional: true + + '@esbuild/linux-s390x@0.25.10': + optional: true + + '@esbuild/linux-x64@0.25.10': + optional: true + + '@esbuild/netbsd-arm64@0.25.10': + optional: true + + '@esbuild/netbsd-x64@0.25.10': + optional: true + + '@esbuild/openbsd-arm64@0.25.10': + optional: true + + '@esbuild/openbsd-x64@0.25.10': + optional: true + + '@esbuild/openharmony-arm64@0.25.10': + optional: true + + '@esbuild/sunos-x64@0.25.10': + optional: true + + '@esbuild/win32-arm64@0.25.10': + optional: true + + '@esbuild/win32-ia32@0.25.10': + optional: true + + '@esbuild/win32-x64@0.25.10': + optional: true + + '@floating-ui/core@1.7.3': + dependencies: + '@floating-ui/utils': 0.2.10 + + '@floating-ui/dom@1.7.4': + dependencies: + '@floating-ui/core': 1.7.3 + '@floating-ui/utils': 0.2.10 + + '@floating-ui/react-dom@2.1.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@floating-ui/dom': 1.7.4 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@floating-ui/react@0.27.16(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@floating-ui/react-dom': 2.1.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@floating-ui/utils': 0.2.10 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + tabbable: 6.2.0 + + '@floating-ui/utils@0.2.10': {} + + '@fortawesome/fontawesome-free@6.7.2': {} + + '@hono/node-server@1.19.5(hono@4.9.9)': + dependencies: + hono: 4.9.9 + + '@iconify/types@2.0.0': {} + + '@iconify/utils@3.0.2': + dependencies: + '@antfu/install-pkg': 1.1.0 + '@antfu/utils': 9.2.1 + '@iconify/types': 2.0.0 + debug: 4.4.3 + globals: 15.15.0 + kolorist: 1.8.0 + local-pkg: 1.1.2 + mlly: 1.8.0 + transitivePeerDependencies: + - supports-color + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@mdx-js/mdx@3.1.1': + dependencies: + '@types/estree': 1.0.8 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdx': 2.0.13 + acorn: 8.15.0 + collapse-white-space: 2.1.0 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + estree-util-scope: 1.0.0 + estree-walker: 3.0.3 + hast-util-to-jsx-runtime: 2.3.6 + markdown-extensions: 2.0.0 + recma-build-jsx: 1.0.0 + recma-jsx: 1.0.1(acorn@8.15.0) + recma-stringify: 1.0.0 + rehype-recma: 1.0.0 + remark-mdx: 3.1.1 + remark-parse: 11.0.0 + remark-rehype: 11.1.2 + source-map: 0.7.6 + unified: 11.0.5 + unist-util-position-from-estree: 2.0.0 + unist-util-stringify-position: 4.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@mdx-js/react@3.1.1(@types/react@19.1.15)(react@19.1.1)': + dependencies: + '@types/mdx': 2.0.13 + '@types/react': 19.1.15 + react: 19.1.1 + + '@mdx-js/rollup@3.1.1(rollup@4.52.3)': + dependencies: + '@mdx-js/mdx': 3.1.1 + '@rollup/pluginutils': 5.3.0(rollup@4.52.3) + rollup: 4.52.3 + source-map: 0.7.6 + vfile: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@mermaid-js/parser@0.6.2': + dependencies: + langium: 3.3.1 + + '@noble/hashes@1.8.0': {} + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.19.1 + + '@radix-ui/colors@3.0.0': {} + + '@radix-ui/number@1.1.1': {} + + '@radix-ui/primitive@1.1.3': {} + + '@radix-ui/react-accessible-icon@1.1.7(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/react-visually-hidden': 1.2.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-accordion@1.2.12(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collapsible': 1.1.12(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-collection': 1.1.7(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-direction': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.15)(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-alert-dialog@1.1.15(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-dialog': 1.1.15(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.15)(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-arrow@1.1.7(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-aspect-ratio@1.1.7(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-avatar@1.1.10(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/react-context': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.15)(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-checkbox@1.3.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-presence': 1.1.5(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.1.15)(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-collapsible@1.1.12(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-presence': 1.1.5(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.15)(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-collection@1.1.7(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.15)(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-compose-refs@1.1.2(@types/react@19.1.15)(react@19.1.1)': + dependencies: + react: 19.1.1 + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-context-menu@2.2.16(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-context': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-menu': 2.1.16(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.15)(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-context@1.1.2(@types/react@19.1.15)(react@19.1.1)': + dependencies: + react: 19.1.1 + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-dialog@1.1.15(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-focus-scope': 1.1.7(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-portal': 1.1.9(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-presence': 1.1.5(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.15)(react@19.1.1) + aria-hidden: 1.2.6 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + react-remove-scroll: 2.7.1(@types/react@19.1.15)(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-direction@1.1.1(@types/react@19.1.15)(react@19.1.1)': + dependencies: + react: 19.1.1 + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-dismissable-layer@1.1.11(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.1.15)(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-dropdown-menu@2.1.16(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-menu': 2.1.16(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.15)(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-focus-guards@1.1.3(@types/react@19.1.15)(react@19.1.1)': + dependencies: + react: 19.1.1 + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-focus-scope@1.1.7(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.15)(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-form@0.1.8(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-label': 2.1.7(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-hover-card@1.1.15(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-popper': 1.2.8(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-portal': 1.1.9(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-presence': 1.1.5(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.15)(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-icons@1.3.2(react@19.1.1)': + dependencies: + react: 19.1.1 + + '@radix-ui/react-id@1.1.1(@types/react@19.1.15)(react@19.1.1)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.15)(react@19.1.1) + react: 19.1.1 + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-label@2.1.7(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-menu@2.1.16(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-direction': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-focus-scope': 1.1.7(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-popper': 1.2.8(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-portal': 1.1.9(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-presence': 1.1.5(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-roving-focus': 1.1.11(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.15)(react@19.1.1) + aria-hidden: 1.2.6 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + react-remove-scroll: 2.7.1(@types/react@19.1.15)(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-menubar@1.1.16(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-direction': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-menu': 2.1.16(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-roving-focus': 1.1.11(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.15)(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-navigation-menu@1.2.14(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-direction': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-presence': 1.1.5(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-one-time-password-field@0.1.8(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/number': 1.1.1 + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-direction': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-roving-focus': 1.1.11(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.15)(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-password-toggle-field@0.1.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.1.15)(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-popover@1.1.15(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-focus-scope': 1.1.7(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-popper': 1.2.8(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-portal': 1.1.9(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-presence': 1.1.5(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.15)(react@19.1.1) + aria-hidden: 1.2.6 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + react-remove-scroll: 2.7.1(@types/react@19.1.15)(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-popper@1.2.8(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@floating-ui/react-dom': 2.1.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-arrow': 1.1.7(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-use-rect': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/rect': 1.1.1 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-portal@1.1.9(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.15)(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-presence@1.1.5(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.15)(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-primitive@2.1.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.15)(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-progress@1.1.7(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/react-context': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-radio-group@1.3.8(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-direction': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-presence': 1.1.5(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-roving-focus': 1.1.11(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.1.15)(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-roving-focus@1.1.11(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-direction': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.15)(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-scroll-area@1.2.10(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/number': 1.1.1 + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-direction': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-presence': 1.1.5(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.15)(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-select@2.2.6(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/number': 1.1.1 + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-direction': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-focus-scope': 1.1.7(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-popper': 1.2.8(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-portal': 1.1.9(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + aria-hidden: 1.2.6 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + react-remove-scroll: 2.7.1(@types/react@19.1.15)(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-separator@1.1.7(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-slider@1.3.6(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/number': 1.1.1 + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-direction': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.1.15)(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-slot@1.2.3(@types/react@19.1.15)(react@19.1.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.15)(react@19.1.1) + react: 19.1.1 + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-switch@1.2.6(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.1.15)(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-tabs@1.1.13(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-context': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-direction': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-presence': 1.1.5(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-roving-focus': 1.1.11(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.15)(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-toast@1.2.15(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-portal': 1.1.9(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-presence': 1.1.5(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-toggle-group@1.1.11(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-context': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-direction': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-roving-focus': 1.1.11(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-toggle': 1.1.10(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.15)(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-toggle@1.1.10(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.15)(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-toolbar@1.1.11(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-context': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-direction': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-roving-focus': 1.1.11(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-separator': 1.1.7(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-toggle-group': 1.1.11(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-tooltip@1.2.8(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-popper': 1.2.8(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-portal': 1.1.9(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-presence': 1.1.5(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.1.15)(react@19.1.1)': + dependencies: + react: 19.1.1 + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.1.15)(react@19.1.1)': + dependencies: + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.15)(react@19.1.1) + react: 19.1.1 + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.1.15)(react@19.1.1)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.15)(react@19.1.1) + react: 19.1.1 + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.1.15)(react@19.1.1)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.15)(react@19.1.1) + react: 19.1.1 + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-use-is-hydrated@0.1.0(@types/react@19.1.15)(react@19.1.1)': + dependencies: + react: 19.1.1 + use-sync-external-store: 1.5.0(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.1.15)(react@19.1.1)': + dependencies: + react: 19.1.1 + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-use-previous@1.1.1(@types/react@19.1.15)(react@19.1.1)': + dependencies: + react: 19.1.1 + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-use-rect@1.1.1(@types/react@19.1.15)(react@19.1.1)': + dependencies: + '@radix-ui/rect': 1.1.1 + react: 19.1.1 + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-use-size@1.1.1(@types/react@19.1.15)(react@19.1.1)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.15)(react@19.1.1) + react: 19.1.1 + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/react-visually-hidden@1.2.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.15 + + '@radix-ui/rect@1.1.1': {} + + '@rolldown/pluginutils@1.0.0-beta.27': {} + + '@rollup/pluginutils@5.3.0(rollup@4.52.3)': + dependencies: + '@types/estree': 1.0.8 + estree-walker: 2.0.2 + picomatch: 4.0.3 + optionalDependencies: + rollup: 4.52.3 + + '@rollup/rollup-android-arm-eabi@4.52.3': + optional: true + + '@rollup/rollup-android-arm64@4.52.3': + optional: true + + '@rollup/rollup-darwin-arm64@4.52.3': + optional: true + + '@rollup/rollup-darwin-x64@4.52.3': + optional: true + + '@rollup/rollup-freebsd-arm64@4.52.3': + optional: true + + '@rollup/rollup-freebsd-x64@4.52.3': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.52.3': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.52.3': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.52.3': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.52.3': + optional: true + + '@rollup/rollup-linux-loong64-gnu@4.52.3': + optional: true + + '@rollup/rollup-linux-ppc64-gnu@4.52.3': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.52.3': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.52.3': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.52.3': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.52.3': + optional: true + + '@rollup/rollup-linux-x64-musl@4.52.3': + optional: true + + '@rollup/rollup-openharmony-arm64@4.52.3': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.52.3': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.52.3': + optional: true + + '@rollup/rollup-win32-x64-gnu@4.52.3': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.52.3': + optional: true + + '@shikijs/core@1.29.2': + dependencies: + '@shikijs/engine-javascript': 1.29.2 + '@shikijs/engine-oniguruma': 1.29.2 + '@shikijs/types': 1.29.2 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.5 + + '@shikijs/engine-javascript@1.29.2': + dependencies: + '@shikijs/types': 1.29.2 + '@shikijs/vscode-textmate': 10.0.2 + oniguruma-to-es: 2.3.0 + + '@shikijs/engine-oniguruma@1.29.2': + dependencies: + '@shikijs/types': 1.29.2 + '@shikijs/vscode-textmate': 10.0.2 + + '@shikijs/langs@1.29.2': + dependencies: + '@shikijs/types': 1.29.2 + + '@shikijs/rehype@1.29.2': + dependencies: + '@shikijs/types': 1.29.2 + '@types/hast': 3.0.4 + hast-util-to-string: 3.0.1 + shiki: 1.29.2 + unified: 11.0.5 + unist-util-visit: 5.0.0 + + '@shikijs/themes@1.29.2': + dependencies: + '@shikijs/types': 1.29.2 + + '@shikijs/transformers@1.29.2': + dependencies: + '@shikijs/core': 1.29.2 + '@shikijs/types': 1.29.2 + + '@shikijs/twoslash@1.29.2(typescript@5.9.2)': + dependencies: + '@shikijs/core': 1.29.2 + '@shikijs/types': 1.29.2 + twoslash: 0.2.12(typescript@5.9.2) + transitivePeerDependencies: + - supports-color + - typescript + + '@shikijs/types@1.29.2': + dependencies: + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + + '@shikijs/vscode-textmate@10.0.2': {} + + '@sindresorhus/merge-streams@2.3.0': {} + + '@tailwindcss/node@4.0.7': + dependencies: + enhanced-resolve: 5.18.3 + jiti: 2.6.0 + tailwindcss: 4.0.7 + + '@tailwindcss/oxide-android-arm64@4.0.7': + optional: true + + '@tailwindcss/oxide-darwin-arm64@4.0.7': + optional: true + + '@tailwindcss/oxide-darwin-x64@4.0.7': + optional: true + + '@tailwindcss/oxide-freebsd-x64@4.0.7': + optional: true + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.0.7': + optional: true + + '@tailwindcss/oxide-linux-arm64-gnu@4.0.7': + optional: true + + '@tailwindcss/oxide-linux-arm64-musl@4.0.7': + optional: true + + '@tailwindcss/oxide-linux-x64-gnu@4.0.7': + optional: true + + '@tailwindcss/oxide-linux-x64-musl@4.0.7': + optional: true + + '@tailwindcss/oxide-win32-arm64-msvc@4.0.7': + optional: true + + '@tailwindcss/oxide-win32-x64-msvc@4.0.7': + optional: true + + '@tailwindcss/oxide@4.0.7': + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.0.7 + '@tailwindcss/oxide-darwin-arm64': 4.0.7 + '@tailwindcss/oxide-darwin-x64': 4.0.7 + '@tailwindcss/oxide-freebsd-x64': 4.0.7 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.0.7 + '@tailwindcss/oxide-linux-arm64-gnu': 4.0.7 + '@tailwindcss/oxide-linux-arm64-musl': 4.0.7 + '@tailwindcss/oxide-linux-x64-gnu': 4.0.7 + '@tailwindcss/oxide-linux-x64-musl': 4.0.7 + '@tailwindcss/oxide-win32-arm64-msvc': 4.0.7 + '@tailwindcss/oxide-win32-x64-msvc': 4.0.7 + + '@tailwindcss/vite@4.0.7(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(yaml@2.8.1))': + dependencies: + '@tailwindcss/node': 4.0.7 + '@tailwindcss/oxide': 4.0.7 + lightningcss: 1.30.1 + tailwindcss: 4.0.7 + vite: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(yaml@2.8.1) + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 + '@types/babel__generator': 7.27.0 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.28.0 + + '@types/babel__generator@7.27.0': + dependencies: + '@babel/types': 7.28.4 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 + + '@types/babel__traverse@7.28.0': + dependencies: + '@babel/types': 7.28.4 + + '@types/d3-array@3.2.2': {} + + '@types/d3-axis@3.0.6': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-brush@3.0.6': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-chord@3.0.6': {} + + '@types/d3-color@3.1.3': {} + + '@types/d3-contour@3.0.6': + dependencies: + '@types/d3-array': 3.2.2 + '@types/geojson': 7946.0.16 + + '@types/d3-delaunay@6.0.4': {} + + '@types/d3-dispatch@3.0.7': {} + + '@types/d3-drag@3.0.7': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-dsv@3.0.7': {} + + '@types/d3-ease@3.0.2': {} + + '@types/d3-fetch@3.0.7': + dependencies: + '@types/d3-dsv': 3.0.7 + + '@types/d3-force@3.0.10': {} + + '@types/d3-format@3.0.4': {} + + '@types/d3-geo@3.1.0': + dependencies: + '@types/geojson': 7946.0.16 + + '@types/d3-hierarchy@3.1.7': {} + + '@types/d3-interpolate@3.0.4': + dependencies: + '@types/d3-color': 3.1.3 + + '@types/d3-path@3.1.1': {} + + '@types/d3-polygon@3.0.2': {} + + '@types/d3-quadtree@3.0.6': {} + + '@types/d3-random@3.0.3': {} + + '@types/d3-scale-chromatic@3.1.0': {} + + '@types/d3-scale@4.0.9': + dependencies: + '@types/d3-time': 3.0.4 + + '@types/d3-selection@3.0.11': {} + + '@types/d3-shape@3.1.7': + dependencies: + '@types/d3-path': 3.1.1 + + '@types/d3-time-format@4.0.3': {} + + '@types/d3-time@3.0.4': {} + + '@types/d3-timer@3.0.2': {} + + '@types/d3-transition@3.0.9': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-zoom@3.0.8': + dependencies: + '@types/d3-interpolate': 3.0.4 + '@types/d3-selection': 3.0.11 + + '@types/d3@7.4.3': + dependencies: + '@types/d3-array': 3.2.2 + '@types/d3-axis': 3.0.6 + '@types/d3-brush': 3.0.6 + '@types/d3-chord': 3.0.6 + '@types/d3-color': 3.1.3 + '@types/d3-contour': 3.0.6 + '@types/d3-delaunay': 6.0.4 + '@types/d3-dispatch': 3.0.7 + '@types/d3-drag': 3.0.7 + '@types/d3-dsv': 3.0.7 + '@types/d3-ease': 3.0.2 + '@types/d3-fetch': 3.0.7 + '@types/d3-force': 3.0.10 + '@types/d3-format': 3.0.4 + '@types/d3-geo': 3.1.0 + '@types/d3-hierarchy': 3.1.7 + '@types/d3-interpolate': 3.0.4 + '@types/d3-path': 3.1.1 + '@types/d3-polygon': 3.0.2 + '@types/d3-quadtree': 3.0.6 + '@types/d3-random': 3.0.3 + '@types/d3-scale': 4.0.9 + '@types/d3-scale-chromatic': 3.1.0 + '@types/d3-selection': 3.0.11 + '@types/d3-shape': 3.1.7 + '@types/d3-time': 3.0.4 + '@types/d3-time-format': 4.0.3 + '@types/d3-timer': 3.0.2 + '@types/d3-transition': 3.0.9 + '@types/d3-zoom': 3.0.8 + + '@types/debug@4.1.12': + dependencies: + '@types/ms': 2.1.0 + + '@types/estree-jsx@1.0.5': + dependencies: + '@types/estree': 1.0.8 + + '@types/estree@1.0.8': {} + + '@types/geojson@7946.0.16': {} + + '@types/hast@3.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/mdx@2.0.13': {} + + '@types/ms@2.1.0': {} + + '@types/node@24.5.2': + dependencies: + undici-types: 7.12.0 + + '@types/react@19.1.15': + dependencies: + csstype: 3.1.3 + + '@types/trusted-types@2.0.7': + optional: true + + '@types/unist@2.0.11': {} + + '@types/unist@3.0.3': {} + + '@typescript/vfs@1.6.1(typescript@5.9.2)': + dependencies: + debug: 4.4.3 + typescript: 5.9.2 + transitivePeerDependencies: + - supports-color + + '@ungap/structured-clone@1.3.0': {} + + '@vanilla-extract/babel-plugin-debug-ids@1.2.2': + dependencies: + '@babel/core': 7.28.4 + transitivePeerDependencies: + - supports-color + + '@vanilla-extract/compiler@0.3.1(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(yaml@2.8.1)': + dependencies: + '@vanilla-extract/css': 1.17.4 + '@vanilla-extract/integration': 8.0.4 + vite: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(yaml@2.8.1) + vite-node: 3.2.4(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(yaml@2.8.1) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - jiti + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + '@vanilla-extract/css@1.17.4': + dependencies: + '@emotion/hash': 0.9.2 + '@vanilla-extract/private': 1.0.9 + css-what: 6.2.2 + cssesc: 3.0.0 + csstype: 3.1.3 + dedent: 1.7.0 + deep-object-diff: 1.1.9 + deepmerge: 4.3.1 + lru-cache: 10.4.3 + media-query-parser: 2.0.2 + modern-ahocorasick: 1.1.0 + picocolors: 1.1.1 + transitivePeerDependencies: + - babel-plugin-macros + + '@vanilla-extract/dynamic@2.1.5': + dependencies: + '@vanilla-extract/private': 1.0.9 + + '@vanilla-extract/integration@8.0.4': + dependencies: + '@babel/core': 7.28.4 + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.4) + '@vanilla-extract/babel-plugin-debug-ids': 1.2.2 + '@vanilla-extract/css': 1.17.4 + dedent: 1.7.0 + esbuild: 0.25.10 + eval: 0.1.8 + find-up: 5.0.0 + javascript-stringify: 2.1.0 + mlly: 1.8.0 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + '@vanilla-extract/private@1.0.9': {} + + '@vanilla-extract/vite-plugin@5.1.1(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(yaml@2.8.1))(yaml@2.8.1)': + dependencies: + '@vanilla-extract/compiler': 0.3.1(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(yaml@2.8.1) + '@vanilla-extract/integration': 8.0.4 + vite: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(yaml@2.8.1) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - jiti + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + '@vitejs/plugin-react@4.7.0(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(yaml@2.8.1))': + dependencies: + '@babel/core': 7.28.4 + '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.4) + '@rolldown/pluginutils': 1.0.0-beta.27 + '@types/babel__core': 7.20.5 + react-refresh: 0.17.0 + vite: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(yaml@2.8.1) + transitivePeerDependencies: + - supports-color + + acorn-jsx@5.3.2(acorn@8.15.0): + dependencies: + acorn: 8.15.0 + + acorn@8.15.0: {} + + ansi-regex@6.2.2: {} + + aria-hidden@1.2.6: + dependencies: + tslib: 2.8.1 + + astring@1.9.0: {} + + autoprefixer@10.4.21(postcss@8.5.6): + dependencies: + browserslist: 4.26.2 + caniuse-lite: 1.0.30001745 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.1.1 + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + bail@2.0.2: {} + + balanced-match@1.0.2: {} + + base64-js@1.5.1: {} + + baseline-browser-mapping@2.8.9: {} + + bcp-47-match@2.0.3: {} + + bl@5.1.0: + dependencies: + buffer: 6.0.3 + inherits: 2.0.4 + readable-stream: 3.6.2 + + boolbase@1.0.0: {} + + brace-expansion@2.0.2: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.26.2: + dependencies: + baseline-browser-mapping: 2.8.9 + caniuse-lite: 1.0.30001745 + electron-to-chromium: 1.5.227 + node-releases: 2.0.21 + update-browserslist-db: 1.1.3(browserslist@4.26.2) + + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + bytes@3.1.2: {} + + cac@6.7.14: {} + + caniuse-lite@1.0.30001745: {} + + ccount@2.0.1: {} + + chalk@5.6.2: {} + + character-entities-html4@2.1.0: {} + + character-entities-legacy@3.0.0: {} + + character-entities@2.0.2: {} + + character-reference-invalid@2.0.1: {} + + chevrotain-allstar@0.3.1(chevrotain@11.0.3): + dependencies: + chevrotain: 11.0.3 + lodash-es: 4.17.21 + + chevrotain@11.0.3: + dependencies: + '@chevrotain/cst-dts-gen': 11.0.3 + '@chevrotain/gast': 11.0.3 + '@chevrotain/regexp-to-ast': 11.0.3 + '@chevrotain/types': 11.0.3 + '@chevrotain/utils': 11.0.3 + lodash-es: 4.17.21 + + chroma-js@3.1.2: {} + + cli-cursor@4.0.0: + dependencies: + restore-cursor: 4.0.0 + + cli-spinners@2.9.2: {} + + clsx@2.1.1: {} + + collapse-white-space@2.1.0: {} + + comma-separated-tokens@2.0.3: {} + + commander@7.2.0: {} + + commander@8.3.0: {} + + compressible@2.0.18: + dependencies: + mime-db: 1.54.0 + + compression@1.8.1: + dependencies: + bytes: 3.1.2 + compressible: 2.0.18 + debug: 2.6.9 + negotiator: 0.6.4 + on-headers: 1.1.0 + safe-buffer: 5.2.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + confbox@0.1.8: {} + + confbox@0.2.2: {} + + convert-source-map@2.0.0: {} + + cookie@1.0.2: {} + + cose-base@1.0.3: + dependencies: + layout-base: 1.0.2 + + cose-base@2.2.0: + dependencies: + layout-base: 2.0.1 + + create-vocs@1.0.0: + dependencies: + '@clack/prompts': 0.7.0 + cac: 6.7.14 + detect-package-manager: 3.0.2 + fs-extra: 11.3.2 + picocolors: 1.1.1 + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + css-selector-parser@3.1.3: {} + + css-what@6.2.2: {} + + cssesc@3.0.0: {} + + csstype@3.1.3: {} + + cytoscape-cose-bilkent@4.1.0(cytoscape@3.33.1): + dependencies: + cose-base: 1.0.3 + cytoscape: 3.33.1 + + cytoscape-fcose@2.2.0(cytoscape@3.33.1): + dependencies: + cose-base: 2.2.0 + cytoscape: 3.33.1 + + cytoscape@3.33.1: {} + + d3-array@2.12.1: + dependencies: + internmap: 1.0.1 + + d3-array@3.2.4: + dependencies: + internmap: 2.0.3 + + d3-axis@3.0.0: {} + + d3-brush@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + + d3-chord@3.0.1: + dependencies: + d3-path: 3.1.0 + + d3-color@3.1.0: {} + + d3-contour@4.0.2: + dependencies: + d3-array: 3.2.4 + + d3-delaunay@6.0.4: + dependencies: + delaunator: 5.0.1 + + d3-dispatch@3.0.1: {} + + d3-drag@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-selection: 3.0.0 + + d3-dsv@3.0.1: + dependencies: + commander: 7.2.0 + iconv-lite: 0.6.3 + rw: 1.3.3 + + d3-ease@3.0.1: {} + + d3-fetch@3.0.1: + dependencies: + d3-dsv: 3.0.1 + + d3-force@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-quadtree: 3.0.1 + d3-timer: 3.0.1 + + d3-format@3.1.0: {} + + d3-geo@3.1.1: + dependencies: + d3-array: 3.2.4 + + d3-hierarchy@3.1.2: {} + + d3-interpolate@3.0.1: + dependencies: + d3-color: 3.1.0 + + d3-path@1.0.9: {} + + d3-path@3.1.0: {} + + d3-polygon@3.0.1: {} + + d3-quadtree@3.0.1: {} + + d3-random@3.0.1: {} + + d3-sankey@0.12.3: + dependencies: + d3-array: 2.12.1 + d3-shape: 1.3.7 + + d3-scale-chromatic@3.1.0: + dependencies: + d3-color: 3.1.0 + d3-interpolate: 3.0.1 + + d3-scale@4.0.2: + dependencies: + d3-array: 3.2.4 + d3-format: 3.1.0 + d3-interpolate: 3.0.1 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + + d3-selection@3.0.0: {} + + d3-shape@1.3.7: + dependencies: + d3-path: 1.0.9 + + d3-shape@3.2.0: + dependencies: + d3-path: 3.1.0 + + d3-time-format@4.1.0: + dependencies: + d3-time: 3.1.0 + + d3-time@3.1.0: + dependencies: + d3-array: 3.2.4 + + d3-timer@3.0.1: {} + + d3-transition@3.0.1(d3-selection@3.0.0): + dependencies: + d3-color: 3.1.0 + d3-dispatch: 3.0.1 + d3-ease: 3.0.1 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-timer: 3.0.1 + + d3-zoom@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + + d3@7.9.0: + dependencies: + d3-array: 3.2.4 + d3-axis: 3.0.0 + d3-brush: 3.0.0 + d3-chord: 3.0.1 + d3-color: 3.1.0 + d3-contour: 4.0.2 + d3-delaunay: 6.0.4 + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-dsv: 3.0.1 + d3-ease: 3.0.1 + d3-fetch: 3.0.1 + d3-force: 3.0.0 + d3-format: 3.1.0 + d3-geo: 3.1.1 + d3-hierarchy: 3.1.2 + d3-interpolate: 3.0.1 + d3-path: 3.1.0 + d3-polygon: 3.0.1 + d3-quadtree: 3.0.1 + d3-random: 3.0.1 + d3-scale: 4.0.2 + d3-scale-chromatic: 3.1.0 + d3-selection: 3.0.0 + d3-shape: 3.2.0 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + d3-timer: 3.0.1 + d3-transition: 3.0.1(d3-selection@3.0.0) + d3-zoom: 3.0.0 + + dagre-d3-es@7.0.11: + dependencies: + d3: 7.9.0 + lodash-es: 4.17.21 + + dayjs@1.11.18: {} + + debug@2.6.9: + dependencies: + ms: 2.0.0 + + debug@4.4.3: + dependencies: + ms: 2.1.3 + + decode-named-character-reference@1.2.0: + dependencies: + character-entities: 2.0.2 + + dedent@1.7.0: {} + + deep-object-diff@1.1.9: {} + + deepmerge@4.3.1: {} + + delaunator@5.0.1: + dependencies: + robust-predicates: 3.0.2 + + depd@2.0.0: {} + + dequal@2.0.3: {} + + destroy@1.2.0: {} + + detect-libc@2.1.1: {} + + detect-node-es@1.1.0: {} + + detect-package-manager@3.0.2: + dependencies: + execa: 5.1.1 + + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + + direction@2.0.1: {} + + dompurify@3.2.7: + optionalDependencies: + '@types/trusted-types': 2.0.7 + + eastasianwidth@0.2.0: {} + + ee-first@1.1.1: {} + + electron-to-chromium@1.5.227: {} + + emoji-regex-xs@1.0.0: {} + + emoji-regex@10.5.0: {} + + encodeurl@1.0.2: {} + + encodeurl@2.0.0: {} + + enhanced-resolve@5.18.3: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.3 + + entities@6.0.1: {} + + es-module-lexer@1.7.0: {} + + esast-util-from-estree@2.0.0: + dependencies: + '@types/estree-jsx': 1.0.5 + devlop: 1.1.0 + estree-util-visit: 2.0.0 + unist-util-position-from-estree: 2.0.0 + + esast-util-from-js@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + acorn: 8.15.0 + esast-util-from-estree: 2.0.0 + vfile-message: 4.0.3 + + esbuild@0.25.10: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.10 + '@esbuild/android-arm': 0.25.10 + '@esbuild/android-arm64': 0.25.10 + '@esbuild/android-x64': 0.25.10 + '@esbuild/darwin-arm64': 0.25.10 + '@esbuild/darwin-x64': 0.25.10 + '@esbuild/freebsd-arm64': 0.25.10 + '@esbuild/freebsd-x64': 0.25.10 + '@esbuild/linux-arm': 0.25.10 + '@esbuild/linux-arm64': 0.25.10 + '@esbuild/linux-ia32': 0.25.10 + '@esbuild/linux-loong64': 0.25.10 + '@esbuild/linux-mips64el': 0.25.10 + '@esbuild/linux-ppc64': 0.25.10 + '@esbuild/linux-riscv64': 0.25.10 + '@esbuild/linux-s390x': 0.25.10 + '@esbuild/linux-x64': 0.25.10 + '@esbuild/netbsd-arm64': 0.25.10 + '@esbuild/netbsd-x64': 0.25.10 + '@esbuild/openbsd-arm64': 0.25.10 + '@esbuild/openbsd-x64': 0.25.10 + '@esbuild/openharmony-arm64': 0.25.10 + '@esbuild/sunos-x64': 0.25.10 + '@esbuild/win32-arm64': 0.25.10 + '@esbuild/win32-ia32': 0.25.10 + '@esbuild/win32-x64': 0.25.10 + + escalade@3.2.0: {} + + escape-html@1.0.3: {} + + escape-string-regexp@5.0.0: {} + + estree-util-attach-comments@3.0.0: + dependencies: + '@types/estree': 1.0.8 + + estree-util-build-jsx@3.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + estree-walker: 3.0.3 + + estree-util-is-identifier-name@3.0.0: {} + + estree-util-scope@1.0.0: + dependencies: + '@types/estree': 1.0.8 + devlop: 1.1.0 + + estree-util-to-js@2.0.0: + dependencies: + '@types/estree-jsx': 1.0.5 + astring: 1.9.0 + source-map: 0.7.6 + + estree-util-value-to-estree@3.4.0: + dependencies: + '@types/estree': 1.0.8 + + estree-util-visit@2.0.0: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/unist': 3.0.3 + + estree-walker@2.0.2: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.8 + + etag@1.8.1: {} + + eval@0.1.8: + dependencies: + '@types/node': 24.5.2 + require-like: 0.1.2 + + execa@5.1.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + exsolve@1.0.7: {} + + extend@3.0.2: {} + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fastq@1.19.1: + dependencies: + reusify: 1.1.0 + + fault@2.0.1: + dependencies: + format: 0.2.2 + + fdir@6.5.0(picomatch@4.0.3): + optionalDependencies: + picomatch: 4.0.3 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + format@0.2.2: {} + + fraction.js@4.3.7: {} + + fresh@0.5.2: {} + + fs-extra@11.3.2: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.2.0 + universalify: 2.0.1 + + fsevents@2.3.2: + optional: true + + fsevents@2.3.3: + optional: true + + gensync@1.0.0-beta.2: {} + + get-nonce@1.0.1: {} + + get-stream@6.0.1: {} + + github-slugger@2.0.0: {} + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + globals@15.15.0: {} + + globby@14.1.0: + dependencies: + '@sindresorhus/merge-streams': 2.3.0 + fast-glob: 3.3.3 + ignore: 7.0.5 + path-type: 6.0.0 + slash: 5.1.0 + unicorn-magic: 0.3.0 + + graceful-fs@4.2.11: {} + + hachure-fill@0.5.2: {} + + hast-util-classnames@3.0.0: + dependencies: + '@types/hast': 3.0.4 + space-separated-tokens: 2.0.2 + + hast-util-from-dom@5.0.1: + dependencies: + '@types/hast': 3.0.4 + hastscript: 9.0.1 + web-namespaces: 2.0.1 + + hast-util-from-html-isomorphic@2.0.0: + dependencies: + '@types/hast': 3.0.4 + hast-util-from-dom: 5.0.1 + hast-util-from-html: 2.0.3 + unist-util-remove-position: 5.0.0 + + hast-util-from-html@2.0.3: + dependencies: + '@types/hast': 3.0.4 + devlop: 1.1.0 + hast-util-from-parse5: 8.0.3 + parse5: 7.3.0 + vfile: 6.0.3 + vfile-message: 4.0.3 + + hast-util-from-parse5@8.0.3: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + devlop: 1.1.0 + hastscript: 9.0.1 + property-information: 7.1.0 + vfile: 6.0.3 + vfile-location: 5.0.3 + web-namespaces: 2.0.1 + + hast-util-has-property@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + hast-util-heading-rank@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + hast-util-is-element@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + hast-util-parse-selector@4.0.0: + dependencies: + '@types/hast': 3.0.4 + + hast-util-select@6.0.4: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + bcp-47-match: 2.0.3 + comma-separated-tokens: 2.0.3 + css-selector-parser: 3.1.3 + devlop: 1.1.0 + direction: 2.0.1 + hast-util-has-property: 3.0.0 + hast-util-to-string: 3.0.1 + hast-util-whitespace: 3.0.0 + nth-check: 2.1.1 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + unist-util-visit: 5.0.0 + zwitch: 2.0.4 + + hast-util-to-estree@3.1.3: + dependencies: + '@types/estree': 1.0.8 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-attach-comments: 3.0.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.2.0 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + style-to-js: 1.1.17 + unist-util-position: 5.0.0 + zwitch: 2.0.4 + transitivePeerDependencies: + - supports-color + + hast-util-to-html@9.0.5: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-whitespace: 3.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.0 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.4 + zwitch: 2.0.4 + + hast-util-to-jsx-runtime@2.3.6: + dependencies: + '@types/estree': 1.0.8 + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.2.0 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + style-to-js: 1.1.17 + unist-util-position: 5.0.0 + vfile-message: 4.0.3 + transitivePeerDependencies: + - supports-color + + hast-util-to-string@3.0.1: + dependencies: + '@types/hast': 3.0.4 + + hast-util-to-text@4.0.2: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + hast-util-is-element: 3.0.0 + unist-util-find-after: 5.0.0 + + hast-util-whitespace@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + hastscript@8.0.0: + dependencies: + '@types/hast': 3.0.4 + comma-separated-tokens: 2.0.3 + hast-util-parse-selector: 4.0.0 + property-information: 6.5.0 + space-separated-tokens: 2.0.2 + + hastscript@9.0.1: + dependencies: + '@types/hast': 3.0.4 + comma-separated-tokens: 2.0.3 + hast-util-parse-selector: 4.0.0 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + + hono@4.9.9: {} + + html-void-elements@3.0.0: {} + + http-errors@2.0.0: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + + human-signals@2.1.0: {} + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + + ieee754@1.2.1: {} + + ignore@7.0.5: {} + + inherits@2.0.4: {} + + inline-style-parser@0.2.4: {} + + internmap@1.0.1: {} + + internmap@2.0.3: {} + + is-alphabetical@2.0.1: {} + + is-alphanumerical@2.0.1: + dependencies: + is-alphabetical: 2.0.1 + is-decimal: 2.0.1 + + is-decimal@2.0.1: {} + + is-extglob@2.1.1: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-hexadecimal@2.0.1: {} + + is-interactive@2.0.0: {} + + is-number@7.0.0: {} + + is-plain-obj@4.1.0: {} + + is-stream@2.0.1: {} + + is-unicode-supported@1.3.0: {} + + isexe@2.0.0: {} + + javascript-stringify@2.1.0: {} + + jiti@2.6.0: {} + + js-tokens@4.0.0: {} + + jsesc@3.1.0: {} + + json5@2.2.3: {} + + jsonfile@6.2.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + katex@0.16.22: + dependencies: + commander: 8.3.0 + + khroma@2.1.0: {} + + kolorist@1.8.0: {} + + langium@3.3.1: + dependencies: + chevrotain: 11.0.3 + chevrotain-allstar: 0.3.1(chevrotain@11.0.3) + vscode-languageserver: 9.0.1 + vscode-languageserver-textdocument: 1.0.12 + vscode-uri: 3.0.8 + + layout-base@1.0.2: {} + + layout-base@2.0.1: {} + + lightningcss-darwin-arm64@1.30.1: + optional: true + + lightningcss-darwin-x64@1.30.1: + optional: true + + lightningcss-freebsd-x64@1.30.1: + optional: true + + lightningcss-linux-arm-gnueabihf@1.30.1: + optional: true + + lightningcss-linux-arm64-gnu@1.30.1: + optional: true + + lightningcss-linux-arm64-musl@1.30.1: + optional: true + + lightningcss-linux-x64-gnu@1.30.1: + optional: true + + lightningcss-linux-x64-musl@1.30.1: + optional: true + + lightningcss-win32-arm64-msvc@1.30.1: + optional: true + + lightningcss-win32-x64-msvc@1.30.1: + optional: true + + lightningcss@1.30.1: + dependencies: + detect-libc: 2.1.1 + optionalDependencies: + lightningcss-darwin-arm64: 1.30.1 + lightningcss-darwin-x64: 1.30.1 + lightningcss-freebsd-x64: 1.30.1 + lightningcss-linux-arm-gnueabihf: 1.30.1 + lightningcss-linux-arm64-gnu: 1.30.1 + lightningcss-linux-arm64-musl: 1.30.1 + lightningcss-linux-x64-gnu: 1.30.1 + lightningcss-linux-x64-musl: 1.30.1 + lightningcss-win32-arm64-msvc: 1.30.1 + lightningcss-win32-x64-msvc: 1.30.1 + + local-pkg@1.1.2: + dependencies: + mlly: 1.8.0 + pkg-types: 2.3.0 + quansync: 0.2.11 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash-es@4.17.21: {} + + log-symbols@5.1.0: + dependencies: + chalk: 5.6.2 + is-unicode-supported: 1.3.0 + + longest-streak@3.1.0: {} + + lru-cache@10.4.3: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + mark.js@8.11.1: {} + + markdown-extensions@2.0.0: {} + + markdown-table@3.0.4: {} + + marked@16.3.0: {} + + mdast-util-directive@3.1.0: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + parse-entities: 4.0.2 + stringify-entities: 4.0.4 + unist-util-visit-parents: 6.0.1 + transitivePeerDependencies: + - supports-color + + mdast-util-find-and-replace@3.0.2: + dependencies: + '@types/mdast': 4.0.4 + escape-string-regexp: 5.0.0 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + + mdast-util-from-markdown@2.0.2: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + decode-named-character-reference: 1.2.0 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.2 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-decode-string: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color + + mdast-util-frontmatter@2.0.1: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + escape-string-regexp: 5.0.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + micromark-extension-frontmatter: 2.0.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-autolink-literal@2.0.1: + dependencies: + '@types/mdast': 4.0.4 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-find-and-replace: 3.0.2 + micromark-util-character: 2.1.1 + + mdast-util-gfm-footnote@2.1.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + micromark-util-normalize-identifier: 2.0.1 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-strikethrough@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-table@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + markdown-table: 3.0.4 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-task-list-item@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm@3.1.0: + dependencies: + mdast-util-from-markdown: 2.0.2 + mdast-util-gfm-autolink-literal: 2.0.1 + mdast-util-gfm-footnote: 2.1.0 + mdast-util-gfm-strikethrough: 2.0.0 + mdast-util-gfm-table: 2.0.0 + mdast-util-gfm-task-list-item: 2.0.0 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx-expression@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx-jsx@3.2.0: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + parse-entities: 4.0.2 + stringify-entities: 4.0.4 + unist-util-stringify-position: 4.0.0 + vfile-message: 4.0.3 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx@3.0.0: + dependencies: + mdast-util-from-markdown: 2.0.2 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.2.0 + mdast-util-mdxjs-esm: 2.0.1 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-mdxjs-esm@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-phrasing@4.1.0: + dependencies: + '@types/mdast': 4.0.4 + unist-util-is: 6.0.0 + + mdast-util-to-hast@13.2.0: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.3.0 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.1 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + + mdast-util-to-markdown@2.1.2: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.1.0 + mdast-util-to-string: 4.0.0 + micromark-util-classify-character: 2.0.1 + micromark-util-decode-string: 2.0.1 + unist-util-visit: 5.0.0 + zwitch: 2.0.4 + + mdast-util-to-string@4.0.0: + dependencies: + '@types/mdast': 4.0.4 + + media-query-parser@2.0.2: + dependencies: + '@babel/runtime': 7.28.4 + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + mermaid-isomorphic@3.0.4(playwright@1.55.1): + dependencies: + '@fortawesome/fontawesome-free': 6.7.2 + mermaid: 11.12.0 + optionalDependencies: + playwright: 1.55.1 + transitivePeerDependencies: + - supports-color + + mermaid@11.12.0: + dependencies: + '@braintree/sanitize-url': 7.1.1 + '@iconify/utils': 3.0.2 + '@mermaid-js/parser': 0.6.2 + '@types/d3': 7.4.3 + cytoscape: 3.33.1 + cytoscape-cose-bilkent: 4.1.0(cytoscape@3.33.1) + cytoscape-fcose: 2.2.0(cytoscape@3.33.1) + d3: 7.9.0 + d3-sankey: 0.12.3 + dagre-d3-es: 7.0.11 + dayjs: 1.11.18 + dompurify: 3.2.7 + katex: 0.16.22 + khroma: 2.1.0 + lodash-es: 4.17.21 + marked: 16.3.0 + roughjs: 4.6.6 + stylis: 4.3.6 + ts-dedent: 2.2.0 + uuid: 11.1.0 + transitivePeerDependencies: + - supports-color + + micromark-core-commonmark@2.0.3: + dependencies: + decode-named-character-reference: 1.2.0 + devlop: 1.1.0 + micromark-factory-destination: 2.0.1 + micromark-factory-label: 2.0.1 + micromark-factory-space: 2.0.1 + micromark-factory-title: 2.0.1 + micromark-factory-whitespace: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-html-tag-name: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-directive@3.0.2: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-factory-whitespace: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + parse-entities: 4.0.2 + + micromark-extension-frontmatter@2.0.0: + dependencies: + fault: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-autolink-literal@2.1.0: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-footnote@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-strikethrough@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-table@2.1.1: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-tagfilter@2.0.0: + dependencies: + micromark-util-types: 2.0.2 + + micromark-extension-gfm-task-list-item@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm@3.0.0: + dependencies: + micromark-extension-gfm-autolink-literal: 2.1.0 + micromark-extension-gfm-footnote: 2.1.0 + micromark-extension-gfm-strikethrough: 2.1.0 + micromark-extension-gfm-table: 2.1.1 + micromark-extension-gfm-tagfilter: 2.0.0 + micromark-extension-gfm-task-list-item: 2.1.0 + micromark-util-combine-extensions: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-mdx-expression@3.0.1: + dependencies: + '@types/estree': 1.0.8 + devlop: 1.1.0 + micromark-factory-mdx-expression: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-mdx-jsx@3.0.2: + dependencies: + '@types/estree': 1.0.8 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + micromark-factory-mdx-expression: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + vfile-message: 4.0.3 + + micromark-extension-mdx-md@2.0.0: + dependencies: + micromark-util-types: 2.0.2 + + micromark-extension-mdxjs-esm@3.0.0: + dependencies: + '@types/estree': 1.0.8 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.3 + + micromark-extension-mdxjs@3.0.0: + dependencies: + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) + micromark-extension-mdx-expression: 3.0.1 + micromark-extension-mdx-jsx: 3.0.2 + micromark-extension-mdx-md: 2.0.0 + micromark-extension-mdxjs-esm: 3.0.0 + micromark-util-combine-extensions: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-destination@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-label@2.0.1: + dependencies: + devlop: 1.1.0 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-mdx-expression@2.0.3: + dependencies: + '@types/estree': 1.0.8 + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.3 + + micromark-factory-space@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-types: 2.0.2 + + micromark-factory-title@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-whitespace@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-character@2.1.1: + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-chunked@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-classify-character@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-combine-extensions@2.0.1: + dependencies: + micromark-util-chunked: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-decode-numeric-character-reference@2.0.2: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-decode-string@2.0.1: + dependencies: + decode-named-character-reference: 1.2.0 + micromark-util-character: 2.1.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-symbol: 2.0.1 + + micromark-util-encode@2.0.1: {} + + micromark-util-events-to-acorn@2.0.3: + dependencies: + '@types/estree': 1.0.8 + '@types/unist': 3.0.3 + devlop: 1.1.0 + estree-util-visit: 2.0.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + vfile-message: 4.0.3 + + micromark-util-html-tag-name@2.0.1: {} + + micromark-util-normalize-identifier@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-resolve-all@2.0.1: + dependencies: + micromark-util-types: 2.0.2 + + micromark-util-sanitize-uri@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-encode: 2.0.1 + micromark-util-symbol: 2.0.1 + + micromark-util-subtokenize@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-symbol@2.0.1: {} + + micromark-util-types@2.0.2: {} + + micromark@4.0.2: + dependencies: + '@types/debug': 4.1.12 + debug: 4.4.3 + decode-named-character-reference: 1.2.0 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-combine-extensions: 2.0.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-encode: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + transitivePeerDependencies: + - supports-color + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.54.0: {} + + mime@1.6.0: {} + + mimic-fn@2.1.0: {} + + mini-svg-data-uri@1.4.4: {} + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.2 + + minisearch@6.3.0: {} + + mlly@1.8.0: + dependencies: + acorn: 8.15.0 + pathe: 2.0.3 + pkg-types: 1.3.1 + ufo: 1.6.1 + + modern-ahocorasick@1.1.0: {} + + ms@2.0.0: {} + + ms@2.1.3: {} + + nanoid@3.3.11: {} + + negotiator@0.6.4: {} + + node-releases@2.0.21: {} + + normalize-range@0.1.2: {} + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + + on-headers@1.1.0: {} + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + oniguruma-to-es@2.3.0: + dependencies: + emoji-regex-xs: 1.0.0 + regex: 5.1.1 + regex-recursion: 5.1.1 + + ora@7.0.1: + dependencies: + chalk: 5.6.2 + cli-cursor: 4.0.0 + cli-spinners: 2.9.2 + is-interactive: 2.0.0 + is-unicode-supported: 1.3.0 + log-symbols: 5.1.0 + stdin-discarder: 0.1.0 + string-width: 6.1.0 + strip-ansi: 7.1.2 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-limit@5.0.0: + dependencies: + yocto-queue: 1.2.1 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + package-manager-detector@1.3.0: {} + + parse-entities@4.0.2: + dependencies: + '@types/unist': 2.0.11 + character-entities-legacy: 3.0.0 + character-reference-invalid: 2.0.1 + decode-named-character-reference: 1.2.0 + is-alphanumerical: 2.0.1 + is-decimal: 2.0.1 + is-hexadecimal: 2.0.1 + + parse5@7.3.0: + dependencies: + entities: 6.0.1 + + parseurl@1.3.3: {} + + path-data-parser@0.1.0: {} + + path-exists@4.0.0: {} + + path-key@3.1.1: {} + + path-type@6.0.0: {} + + pathe@2.0.3: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + picomatch@4.0.3: {} + + pkg-types@1.3.1: + dependencies: + confbox: 0.1.8 + mlly: 1.8.0 + pathe: 2.0.3 + + pkg-types@2.3.0: + dependencies: + confbox: 0.2.2 + exsolve: 1.0.7 + pathe: 2.0.3 + + playwright-core@1.55.1: {} + + playwright@1.55.1: + dependencies: + playwright-core: 1.55.1 + optionalDependencies: + fsevents: 2.3.2 + + points-on-curve@0.2.0: {} + + points-on-path@0.2.1: + dependencies: + path-data-parser: 0.1.0 + points-on-curve: 0.2.0 + + postcss-value-parser@4.2.0: {} + + postcss@8.5.6: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + property-information@6.5.0: {} + + property-information@7.1.0: {} + + quansync@0.2.11: {} + + queue-microtask@1.2.3: {} + + radix-ui@1.4.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1): + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-accessible-icon': 1.1.7(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-accordion': 1.2.12(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-alert-dialog': 1.1.15(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-arrow': 1.1.7(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-aspect-ratio': 1.1.7(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-avatar': 1.1.10(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-checkbox': 1.3.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-collapsible': 1.1.12(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-collection': 1.1.7(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-context-menu': 2.2.16(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-dialog': 1.1.15(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-direction': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-dropdown-menu': 2.1.16(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-focus-scope': 1.1.7(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-form': 0.1.8(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-hover-card': 1.1.15(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-label': 2.1.7(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-menu': 2.1.16(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-menubar': 1.1.16(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-navigation-menu': 1.2.14(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-one-time-password-field': 0.1.8(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-password-toggle-field': 0.1.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-popover': 1.1.15(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-popper': 1.2.8(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-portal': 1.1.9(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-presence': 1.1.5(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-progress': 1.1.7(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-radio-group': 1.3.8(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-roving-focus': 1.1.11(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-scroll-area': 1.2.10(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-select': 2.2.6(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-separator': 1.1.7(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-slider': 1.3.6(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-switch': 1.2.6(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-tabs': 1.1.13(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-toast': 1.2.15(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-toggle': 1.1.10(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-toggle-group': 1.1.11(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-toolbar': 1.1.11(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-tooltip': 1.2.8(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.1.15)(react@19.1.1) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.15 + + range-parser@1.2.1: {} + + react-dom@19.1.1(react@19.1.1): + dependencies: + react: 19.1.1 + scheduler: 0.26.0 + + react-intersection-observer@9.16.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1): + dependencies: + react: 19.1.1 + optionalDependencies: + react-dom: 19.1.1(react@19.1.1) + + react-refresh@0.17.0: {} + + react-remove-scroll-bar@2.3.8(@types/react@19.1.15)(react@19.1.1): + dependencies: + react: 19.1.1 + react-style-singleton: 2.2.3(@types/react@19.1.15)(react@19.1.1) + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.1.15 + + react-remove-scroll@2.7.1(@types/react@19.1.15)(react@19.1.1): + dependencies: + react: 19.1.1 + react-remove-scroll-bar: 2.3.8(@types/react@19.1.15)(react@19.1.1) + react-style-singleton: 2.2.3(@types/react@19.1.15)(react@19.1.1) + tslib: 2.8.1 + use-callback-ref: 1.3.3(@types/react@19.1.15)(react@19.1.1) + use-sidecar: 1.1.3(@types/react@19.1.15)(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.15 + + react-router@7.9.3(react-dom@19.1.1(react@19.1.1))(react@19.1.1): + dependencies: + cookie: 1.0.2 + react: 19.1.1 + set-cookie-parser: 2.7.1 + optionalDependencies: + react-dom: 19.1.1(react@19.1.1) + + react-style-singleton@2.2.3(@types/react@19.1.15)(react@19.1.1): + dependencies: + get-nonce: 1.0.1 + react: 19.1.1 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.1.15 + + react@19.1.1: {} + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + recma-build-jsx@1.0.0: + dependencies: + '@types/estree': 1.0.8 + estree-util-build-jsx: 3.0.1 + vfile: 6.0.3 + + recma-jsx@1.0.1(acorn@8.15.0): + dependencies: + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) + estree-util-to-js: 2.0.0 + recma-parse: 1.0.0 + recma-stringify: 1.0.0 + unified: 11.0.5 + + recma-parse@1.0.0: + dependencies: + '@types/estree': 1.0.8 + esast-util-from-js: 2.0.1 + unified: 11.0.5 + vfile: 6.0.3 + + recma-stringify@1.0.0: + dependencies: + '@types/estree': 1.0.8 + estree-util-to-js: 2.0.0 + unified: 11.0.5 + vfile: 6.0.3 + + regex-recursion@5.1.1: + dependencies: + regex: 5.1.1 + regex-utilities: 2.3.0 + + regex-utilities@2.3.0: {} + + regex@5.1.1: + dependencies: + regex-utilities: 2.3.0 + + rehype-autolink-headings@7.1.0: + dependencies: + '@types/hast': 3.0.4 + '@ungap/structured-clone': 1.3.0 + hast-util-heading-rank: 3.0.0 + hast-util-is-element: 3.0.0 + unified: 11.0.5 + unist-util-visit: 5.0.0 + + rehype-class-names@2.0.0: + dependencies: + '@types/hast': 3.0.4 + hast-util-classnames: 3.0.0 + hast-util-select: 6.0.4 + unified: 11.0.5 + + rehype-mermaid@3.0.0(playwright@1.55.1): + dependencies: + '@types/hast': 3.0.4 + hast-util-from-html-isomorphic: 2.0.0 + hast-util-to-text: 4.0.2 + mermaid-isomorphic: 3.0.4(playwright@1.55.1) + mini-svg-data-uri: 1.4.4 + space-separated-tokens: 2.0.2 + unified: 11.0.5 + unist-util-visit-parents: 6.0.1 + vfile: 6.0.3 + optionalDependencies: + playwright: 1.55.1 + transitivePeerDependencies: + - supports-color + + rehype-recma@1.0.0: + dependencies: + '@types/estree': 1.0.8 + '@types/hast': 3.0.4 + hast-util-to-estree: 3.1.3 + transitivePeerDependencies: + - supports-color + + rehype-slug@6.0.0: + dependencies: + '@types/hast': 3.0.4 + github-slugger: 2.0.0 + hast-util-heading-rank: 3.0.0 + hast-util-to-string: 3.0.1 + unist-util-visit: 5.0.0 + + remark-directive@3.0.1: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-directive: 3.1.0 + micromark-extension-directive: 3.0.2 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-frontmatter@5.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-frontmatter: 2.0.1 + micromark-extension-frontmatter: 2.0.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-gfm@4.0.1: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-gfm: 3.1.0 + micromark-extension-gfm: 3.0.0 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-mdx-frontmatter@5.2.0: + dependencies: + '@types/mdast': 4.0.4 + estree-util-value-to-estree: 3.4.0 + toml: 3.0.0 + unified: 11.0.5 + unist-util-mdx-define: 1.1.2 + yaml: 2.8.1 + + remark-mdx@3.1.1: + dependencies: + mdast-util-mdx: 3.0.0 + micromark-extension-mdxjs: 3.0.0 + transitivePeerDependencies: + - supports-color + + remark-parse@11.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.2 + micromark-util-types: 2.0.2 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-rehype@11.1.2: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + mdast-util-to-hast: 13.2.0 + unified: 11.0.5 + vfile: 6.0.3 + + remark-stringify@11.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-to-markdown: 2.1.2 + unified: 11.0.5 + + require-like@0.1.2: {} + + restore-cursor@4.0.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + + reusify@1.1.0: {} + + robust-predicates@3.0.2: {} + + rollup@4.52.3: + dependencies: + '@types/estree': 1.0.8 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.52.3 + '@rollup/rollup-android-arm64': 4.52.3 + '@rollup/rollup-darwin-arm64': 4.52.3 + '@rollup/rollup-darwin-x64': 4.52.3 + '@rollup/rollup-freebsd-arm64': 4.52.3 + '@rollup/rollup-freebsd-x64': 4.52.3 + '@rollup/rollup-linux-arm-gnueabihf': 4.52.3 + '@rollup/rollup-linux-arm-musleabihf': 4.52.3 + '@rollup/rollup-linux-arm64-gnu': 4.52.3 + '@rollup/rollup-linux-arm64-musl': 4.52.3 + '@rollup/rollup-linux-loong64-gnu': 4.52.3 + '@rollup/rollup-linux-ppc64-gnu': 4.52.3 + '@rollup/rollup-linux-riscv64-gnu': 4.52.3 + '@rollup/rollup-linux-riscv64-musl': 4.52.3 + '@rollup/rollup-linux-s390x-gnu': 4.52.3 + '@rollup/rollup-linux-x64-gnu': 4.52.3 + '@rollup/rollup-linux-x64-musl': 4.52.3 + '@rollup/rollup-openharmony-arm64': 4.52.3 + '@rollup/rollup-win32-arm64-msvc': 4.52.3 + '@rollup/rollup-win32-ia32-msvc': 4.52.3 + '@rollup/rollup-win32-x64-gnu': 4.52.3 + '@rollup/rollup-win32-x64-msvc': 4.52.3 + fsevents: 2.3.3 + + roughjs@4.6.6: + dependencies: + hachure-fill: 0.5.2 + path-data-parser: 0.1.0 + points-on-curve: 0.2.0 + points-on-path: 0.2.1 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + rw@1.3.3: {} + + safe-buffer@5.2.1: {} + + safer-buffer@2.1.2: {} + + scheduler@0.26.0: {} + + semver@6.3.1: {} + + send@0.19.0: + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + + serve-static@1.16.2: + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.19.0 + transitivePeerDependencies: + - supports-color + + set-cookie-parser@2.7.1: {} + + setprototypeof@1.2.0: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + shiki@1.29.2: + dependencies: + '@shikijs/core': 1.29.2 + '@shikijs/engine-javascript': 1.29.2 + '@shikijs/engine-oniguruma': 1.29.2 + '@shikijs/langs': 1.29.2 + '@shikijs/themes': 1.29.2 + '@shikijs/types': 1.29.2 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + + signal-exit@3.0.7: {} + + sisteransi@1.0.5: {} + + slash@5.1.0: {} + + source-map-js@1.2.1: {} + + source-map@0.7.6: {} + + space-separated-tokens@2.0.2: {} + + statuses@2.0.1: {} + + stdin-discarder@0.1.0: + dependencies: + bl: 5.1.0 + + string-width@6.1.0: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 10.5.0 + strip-ansi: 7.1.2 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + stringify-entities@4.0.4: + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + + strip-ansi@7.1.2: + dependencies: + ansi-regex: 6.2.2 + + strip-final-newline@2.0.0: {} + + style-to-js@1.1.17: + dependencies: + style-to-object: 1.0.9 + + style-to-object@1.0.9: + dependencies: + inline-style-parser: 0.2.4 + + stylis@4.3.6: {} + + tabbable@6.2.0: {} + + tailwindcss@4.0.7: {} + + tapable@2.2.3: {} + + tinyexec@1.0.1: {} + + tinyglobby@0.2.15: + dependencies: + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toidentifier@1.0.1: {} + + toml@3.0.0: {} + + trim-lines@3.0.1: {} + + trough@2.2.0: {} + + ts-dedent@2.2.0: {} + + tslib@2.8.1: {} + + twoslash-protocol@0.2.12: {} + + twoslash@0.2.12(typescript@5.9.2): + dependencies: + '@typescript/vfs': 1.6.1(typescript@5.9.2) + twoslash-protocol: 0.2.12 + typescript: 5.9.2 + transitivePeerDependencies: + - supports-color + + typescript@5.9.2: {} + + ua-parser-js@1.0.41: {} + + ufo@1.6.1: {} + + undici-types@7.12.0: {} + + unicorn-magic@0.3.0: {} + + unified@11.0.5: + dependencies: + '@types/unist': 3.0.3 + bail: 2.0.2 + devlop: 1.1.0 + extend: 3.0.2 + is-plain-obj: 4.1.0 + trough: 2.2.0 + vfile: 6.0.3 + + unist-util-find-after@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + + unist-util-is@6.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-mdx-define@1.1.2: + dependencies: + '@types/estree': 1.0.8 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + estree-util-is-identifier-name: 3.0.0 + estree-util-scope: 1.0.0 + estree-walker: 3.0.3 + vfile: 6.0.3 + + unist-util-position-from-estree@2.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-remove-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-visit: 5.0.0 + + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-parents@6.0.1: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + + unist-util-visit@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + + universalify@2.0.1: {} + + update-browserslist-db@1.1.3(browserslist@4.26.2): + dependencies: + browserslist: 4.26.2 + escalade: 3.2.0 + picocolors: 1.1.1 + + use-callback-ref@1.3.3(@types/react@19.1.15)(react@19.1.1): + dependencies: + react: 19.1.1 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.1.15 + + use-sidecar@1.1.3(@types/react@19.1.15)(react@19.1.1): + dependencies: + detect-node-es: 1.1.0 + react: 19.1.1 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.1.15 + + use-sync-external-store@1.5.0(react@19.1.1): + dependencies: + react: 19.1.1 + + util-deprecate@1.0.2: {} + + uuid@11.1.0: {} + + vary@1.1.2: {} + + vfile-location@5.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile: 6.0.3 + + vfile-message@4.0.3: + dependencies: + '@types/unist': 3.0.3 + unist-util-stringify-position: 4.0.0 + + vfile@6.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile-message: 4.0.3 + + vite-node@3.2.4(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(yaml@2.8.1): + dependencies: + cac: 6.7.14 + debug: 4.4.3 + es-module-lexer: 1.7.0 + pathe: 2.0.3 + vite: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(yaml@2.8.1) + transitivePeerDependencies: + - '@types/node' + - jiti + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(yaml@2.8.1): + dependencies: + esbuild: 0.25.10 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.52.3 + tinyglobby: 0.2.15 + optionalDependencies: + '@types/node': 24.5.2 + fsevents: 2.3.3 + jiti: 2.6.0 + lightningcss: 1.30.1 + yaml: 2.8.1 + + vocs@1.0.13(@types/node@24.5.2)(@types/react@19.1.15)(jiti@2.6.0)(lightningcss@1.30.1)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(rollup@4.52.3)(typescript@5.9.2)(yaml@2.8.1): + dependencies: + '@floating-ui/react': 0.27.16(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@hono/node-server': 1.19.5(hono@4.9.9) + '@mdx-js/react': 3.1.1(@types/react@19.1.15)(react@19.1.1) + '@mdx-js/rollup': 3.1.1(rollup@4.52.3) + '@noble/hashes': 1.8.0 + '@radix-ui/colors': 3.0.0 + '@radix-ui/react-accordion': 1.2.12(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-dialog': 1.1.15(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-icons': 1.3.2(react@19.1.1) + '@radix-ui/react-label': 2.1.7(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-navigation-menu': 1.2.14(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-popover': 1.1.15(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-tabs': 1.1.13(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@shikijs/rehype': 1.29.2 + '@shikijs/transformers': 1.29.2 + '@shikijs/twoslash': 1.29.2(typescript@5.9.2) + '@tailwindcss/vite': 4.0.7(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(yaml@2.8.1)) + '@vanilla-extract/css': 1.17.4 + '@vanilla-extract/dynamic': 2.1.5 + '@vanilla-extract/vite-plugin': 5.1.1(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(yaml@2.8.1))(yaml@2.8.1) + '@vitejs/plugin-react': 4.7.0(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(yaml@2.8.1)) + autoprefixer: 10.4.21(postcss@8.5.6) + cac: 6.7.14 + chroma-js: 3.1.2 + clsx: 2.1.1 + compression: 1.8.1 + create-vocs: 1.0.0 + cross-spawn: 7.0.6 + fs-extra: 11.3.2 + globby: 14.1.0 + hastscript: 8.0.0 + hono: 4.9.9 + mark.js: 8.11.1 + mdast-util-directive: 3.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-frontmatter: 2.0.1 + mdast-util-gfm: 3.1.0 + mdast-util-mdx: 3.0.0 + mdast-util-mdx-jsx: 3.2.0 + mdast-util-to-hast: 13.2.0 + mdast-util-to-markdown: 2.1.2 + minimatch: 9.0.5 + minisearch: 6.3.0 + ora: 7.0.1 + p-limit: 5.0.0 + playwright: 1.55.1 + postcss: 8.5.6 + radix-ui: 1.4.3(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + react-intersection-observer: 9.16.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + react-router: 7.9.3(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + rehype-autolink-headings: 7.1.0 + rehype-class-names: 2.0.0 + rehype-mermaid: 3.0.0(playwright@1.55.1) + rehype-slug: 6.0.0 + remark-directive: 3.0.1 + remark-frontmatter: 5.0.0 + remark-gfm: 4.0.1 + remark-mdx: 3.1.1 + remark-mdx-frontmatter: 5.2.0 + remark-parse: 11.0.0 + serve-static: 1.16.2 + shiki: 1.29.2 + toml: 3.0.0 + twoslash: 0.2.12(typescript@5.9.2) + ua-parser-js: 1.0.41 + unified: 11.0.5 + unist-util-visit: 5.0.0 + vite: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(yaml@2.8.1) + transitivePeerDependencies: + - '@types/node' + - '@types/react' + - '@types/react-dom' + - babel-plugin-macros + - jiti + - less + - lightningcss + - rollup + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - typescript + - yaml + + vscode-jsonrpc@8.2.0: {} + + vscode-languageserver-protocol@3.17.5: + dependencies: + vscode-jsonrpc: 8.2.0 + vscode-languageserver-types: 3.17.5 + + vscode-languageserver-textdocument@1.0.12: {} + + vscode-languageserver-types@3.17.5: {} + + vscode-languageserver@9.0.1: + dependencies: + vscode-languageserver-protocol: 3.17.5 + + vscode-uri@3.0.8: {} + + web-namespaces@2.0.1: {} + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + yallist@3.1.1: {} + + yaml@2.8.1: {} + + yocto-queue@0.1.0: {} + + yocto-queue@1.2.1: {} + + zwitch@2.0.4: {} diff --git a/www/tsconfig.json b/www/tsconfig.json new file mode 100644 index 00000000..d2636aac --- /dev/null +++ b/www/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["**/*.ts", "**/*.tsx"] +} diff --git a/www/vocs.config.ts b/www/vocs.config.ts new file mode 100644 index 00000000..dea292a2 --- /dev/null +++ b/www/vocs.config.ts @@ -0,0 +1,200 @@ +import type { Plugin } from 'vite'; +import { defineConfig } from 'vocs'; + +// Plugin to serve public assets at basePath in dev mode +function servePublicAtBasePath(): Plugin { + return { + name: 'serve-public-at-basepath', + configureServer(server) { + server.middlewares.use((req, res, next) => { + // Rewrite requests from basePath to root for public assets + if (req.url?.startsWith('/zkevm-benchmark-workload/marginal-gas-benchmark/')) { + req.url = req.url.replace('/zkevm-benchmark-workload', ''); + } + next(); + }); + }, + }; +} + +export default defineConfig({ + basePath: '/zkevm-benchmark-workload', + rootDir: './docs', + vite: { + plugins: [servePublicAtBasePath()], + }, + title: 'zkGas profiling', + description: 'Comprehensive profiling framework for measuring and comparing the resources needed for proving different OPCODEs in zk environments across various gas categories.', + sidebar: [ + { + text: 'Getting Started', + link: '/getting-started', + }, + { + text: 'Stateless Executor', + items: [ + { + text: 'Guide', + link: '/stateless-executor-guide', + }, + { + text: 'Architecture', + link: '/stateless-executor-architecture', + }, + { + text: 'API Reference', + link: '/stateless-executor-api', + }, + ], + }, + { + text: 'Executor vs Validator', + link: '/executor-vs-validator', + }, + { + text: 'Download Fixtures', + link: '/download-fixtures', + }, + { + text: 'Gas Categorized Fixtures', + link: '/gas-categorized-fixtures', + }, + { + text: 'Gas Categorized Benchmarks', + link: '/gas-categorized-benchmarks', + }, + { + text: 'SP1 Cluster Setup', + link: '/sp1-cluster', + }, + { + text: 'Marginal Gas Benchmark', + items: [ + { + text: 'Overview', + link: '/marginal-gas-benchmark', + }, + { + text: 'SP1 v5.2.3', + link: '/marginal-gas-benchmark/sp1', + }, + { + text: 'RISC0 v3.0.4', + link: '/marginal-gas-benchmark/risc0', + }, + ], + }, + { + text: 'Benchmark Results', + items: [ + { + text: '1M, 1GPU', + link: '/benchmark-results/gas-categorized/1m/1M-1', + items: [ + { + text: 'sp1', + link: '/benchmark-results/gas-categorized/1m/sp1-1M-1', + }, + { + text: 'risc0', + link: '/benchmark-results/gas-categorized/1m/risc0-1M-1', + }, + ], + }, + { + text: '1M, 4GPU', + link: '/benchmark-results/gas-categorized/1m/1M-4', + items: [ + { + text: 'sp1', + link: '/benchmark-results/gas-categorized/1m/sp1-1M-4', + }, + { + text: 'risc0', + link: '/benchmark-results/gas-categorized/1m/risc0-1M-4', + }, + { + text: 'zisk', + link: '/benchmark-results/gas-categorized/1m/zisk-1M-4', + }, + { + text: 'airbender', + link: '/benchmark-results/gas-categorized/1m/airbender-1M-4', + }, + ], + }, + { + text: '0.8M, 4GPU', + link: '/benchmark-results/gas-categorized/0.8m/0.8M-4', + items: [ + { + text: 'sp1', + link: '/benchmark-results/gas-categorized/0.8m/sp1-0.8M-4', + }, + { + text: 'risc0', + link: '/benchmark-results/gas-categorized/0.8m/risc0-0.8M-4', + }, + ], + }, + { + text: '0.6M, 4GPU', + link: '/benchmark-results/gas-categorized/0.6m/0.6M-4', + items: [ + { + text: 'sp1', + link: '/benchmark-results/gas-categorized/0.6m/sp1-0.6M-4', + }, + { + text: 'risc0', + link: '/benchmark-results/gas-categorized/0.6m/risc0-0.6M-4', + }, + ], + }, + { + text: '0.4M, 4GPU', + link: '/benchmark-results/gas-categorized/0.4m/0.4M-4', + items: [ + { + text: 'sp1', + link: '/benchmark-results/gas-categorized/0.4m/sp1-0.4M-4', + }, + { + text: 'risc0', + link: '/benchmark-results/gas-categorized/0.4m/risc0-0.4M-4', + }, + ], + }, + { + text: '0.2M, 4GPU', + link: '/benchmark-results/gas-categorized/0.2m/0.2M-4', + items: [ + { + text: 'sp1', + link: '/benchmark-results/gas-categorized/0.2m/sp1-0.2M-4', + }, + { + text: 'risc0', + link: '/benchmark-results/gas-categorized/0.2m/risc0-0.2M-4', + }, + ], + }, + { + text: '0.1M, 4GPU', + link: '/benchmark-results/gas-categorized/0.1m/0.1M-4', + items: [ + { + text: 'sp1', + link: '/benchmark-results/gas-categorized/0.1m/sp1-0.1M-4', + }, + { + text: 'risc0', + link: '/benchmark-results/gas-categorized/0.1m/risc0-0.1M-4', + }, + ], + }, + ], + }, + + ], +})