diff --git a/.env b/.env new file mode 100644 index 000000000..ced6e8378 --- /dev/null +++ b/.env @@ -0,0 +1,2 @@ +# options: devnet,hoodi,sepolia,mainnet +ETH_CHAIN=hoodi \ No newline at end of file diff --git a/.env copy.devnet b/.env copy.devnet deleted file mode 100644 index e69de29bb..000000000 diff --git a/.env.devnet b/.env.devnet new file mode 100644 index 000000000..83e84457a --- /dev/null +++ b/.env.devnet @@ -0,0 +1,29 @@ +MINA_RPC_URL=https://api.minascan.io/node/devnet/v1/graphql +#MINA_RPC_URL=https://mina-node.devnet.nori.it.com/graphql +STATE_SETTLEMENT_ETH_ADDR=0xf56AA3aCedDf88Ab12E494d0B96DA3C09a5d264e +ACCOUNT_VALIDATION_ETH_ADDR=0xDFD787c807DEA8d7e53311b779BC0c6a4704D286 +NORI_TOKEN_BRIDGE_ETH_ADDRESS=0x4C073a92B1C8Fb55313102Ab412fb7F1704bcBdD +SAVE_PROOF=true/false # also false if other than "true" or variable were to be not defined + +BATCHER_ADDR=ws://localhost:8080 +BATCHER_PAYEMENT_SERVICE_ADDRESS=0x7bc06c482DEAd17c0e297aFbC32f6e63d3846650 +ETH_RPC_URL=http://localhost:8545 +PROOF_GENERATOR_ADDR=0x66f9664f97F2b50F62D13eA064982f936dE76657 +ALIGNED_SERVICE_MANAGER_ADDR=0x851356ae760d987E095750cCeb3bC6014560891C + +# 0: Default; 1: Instant; 2: Custom-(require BATCH_MAX_FEE's value) +BATCHER_FEE_ESTM_TYPE=1 +BATCHER_MAX_FEE=691654288189150 + +NORI_STORAGE_ZKAPP_ACCT_VK_HASH_KECCAK256=0x1234567890123456789012345678901234567890123456789012345678901234 +NORI_STORAGE_ZKAPP_TOKEN_ID=0x1234567890123456789012345678901234567890123456789012345678901234 + +# if keystore instead of PRIVATE_KEY, then uncomment it +# KEYSTORE_PATH= + +# optional: default, polling +ALIGNED_SUBMISSION_MODE=polling +# seconds +ALIGNED_POLL_INTERVAL_SECS=10 +# seconds +ALIGNED_POLL_TIMEOUT_SECS=600 diff --git a/.env.hoodi b/.env.hoodi new file mode 100644 index 000000000..03470369a --- /dev/null +++ b/.env.hoodi @@ -0,0 +1,30 @@ +#MINA_RPC_URL=https://api.minascan.io/node/devnet/v1/graphql +MINA_RPC_URL=https://mina-node.devnet.nori.it.com/graphql +STATE_SETTLEMENT_ETH_ADDR=0xC38d0E13c69124Bb10944E6E3612D6cf5366410B +ACCOUNT_VALIDATION_ETH_ADDR=0xEe6A1D89694e741564363224C084b38AB5e38Bd4 +NORI_TOKEN_BRIDGE_ETH_ADDRESS=0xcAF8ECC34fFF8a39899D0CA820c5f828B0441BE4 + +SAVE_PROOF=true/false # also false if other than "true" or variable were to be not defined + +BATCHER_ADDR=wss://hoodi.batcher.alignedlayer.com +BATCHER_PAYEMENT_SERVICE_ADDRESS=0x041af25Fce2413570aaa0029D36DeA1eFdeff083 +ETH_RPC_URL=https://ethereum-hoodi-rpc.publicnode.com +PROOF_GENERATOR_ADDR=0x66f9664f97F2b50F62D13eA064982f936dE76657 +ALIGNED_SERVICE_MANAGER_ADDR=0x87CD431F160e88EC34fA48EC6F6cF7F2C0E8248c + +# 0: Default; 1: Instant; 2: Custom-(require BATCH_MAX_FEE's value) +BATCHER_FEE_ESTM_TYPE=1 +BATCHER_MAX_FEE=691654288189150 + +NORI_STORAGE_ZKAPP_ACCT_VK_HASH_KECCAK256=0x1234567890123456789012345678901234567890123456789012345678901234 +NORI_STORAGE_ZKAPP_TOKEN_ID=0x1234567890123456789012345678901234567890123456789012345678901234 + +# if keystore instead of PRIVATE_KEY, then uncomment it +# KEYSTORE_PATH= + +# optional: default, polling +ALIGNED_SUBMISSION_MODE=default +# seconds +ALIGNED_POLL_INTERVAL_SECS=10 +# seconds +ALIGNED_POLL_TIMEOUT_SECS=1000 diff --git a/.env.mainnet b/.env.mainnet new file mode 100644 index 000000000..52f735567 --- /dev/null +++ b/.env.mainnet @@ -0,0 +1,29 @@ +MINA_RPC_URL=https://api.minascan.io/node/devnet/v1/graphql +#MINA_RPC_URL=https://mina-node.devnet.nori.it.com/graphql +STATE_SETTLEMENT_ETH_ADDR=0xf56AA3aCedDf88Ab12E494d0B96DA3C09a5d264e +ACCOUNT_VALIDATION_ETH_ADDR=0xDFD787c807DEA8d7e53311b779BC0c6a4704D286 +NORI_TOKEN_BRIDGE_ETH_ADDRESS=0x4C073a92B1C8Fb55313102Ab412fb7F1704bcBdD +SAVE_PROOF=true/false # also false if other than "true" or variable were to be not defined + +BATCHER_ADDR=wss://mainnet.batcher.alignedlayer.com +BATCHER_PAYEMENT_SERVICE_ADDRESS=0xb0567184A52cB40956df6333510d6eF35B89C8de +ETH_RPC_URL=https://ethereum-rpc.publicnode.com +PROOF_GENERATOR_ADDR=0x66f9664f97F2b50F62D13eA064982f936dE76657 +ALIGNED_SERVICE_MANAGER_ADDR=0xeF2A435e5EE44B2041100EF8cbC8ae035166606c + +# 0: Default; 1: Instant; 2: Custom-(require BATCH_MAX_FEE's value) +BATCHER_FEE_ESTM_TYPE=1 +BATCHER_MAX_FEE=691654288189150 + +NORI_STORAGE_ZKAPP_ACCT_VK_HASH_KECCAK256=0x1234567890123456789012345678901234567890123456789012345678901234 +NORI_STORAGE_ZKAPP_TOKEN_ID=0x1234567890123456789012345678901234567890123456789012345678901234 + +# if keystore instead of PRIVATE_KEY, then uncomment it +# KEYSTORE_PATH= + +# optional: default, polling +ALIGNED_SUBMISSION_MODE=polling +# seconds +ALIGNED_POLL_INTERVAL_SECS=10 +# seconds +ALIGNED_POLL_TIMEOUT_SECS=1000 diff --git a/.env.sepolia b/.env.sepolia new file mode 100644 index 000000000..f168c6480 --- /dev/null +++ b/.env.sepolia @@ -0,0 +1,30 @@ +MINA_RPC_URL=https://api.minascan.io/node/devnet/v1/graphql +#MINA_RPC_URL=https://mina-node.devnet.nori.it.com/graphql +STATE_SETTLEMENT_ETH_ADDR=0x9BE7c134F06A638Ec1E06ae46bAA862f72Edf3E6 +ACCOUNT_VALIDATION_ETH_ADDR=0xf00D03ed0DA24bD83ED968E632546Fc4096837AA +NORI_TOKEN_BRIDGE_ETH_ADDRESS=0xE185126CA39e2D0FE3943E74b22a7A0F569D2264 + +SAVE_PROOF=true/false # also false if other than "true" or variable were to be not defined + +BATCHER_ADDR=wss://sepolia.batcher.alignedlayer.com +BATCHER_PAYEMENT_SERVICE_ADDRESS=0x403dE630751e148bD71BFFcE762E5667C0825399 +ETH_RPC_URL=https://ethereum-sepolia-rpc.publicnode.com +PROOF_GENERATOR_ADDR=0x66f9664f97F2b50F62D13eA064982f936dE76657 +ALIGNED_SERVICE_MANAGER_ADDR=0xFf731AB7b3653dc66878DC77E851D174f472d137 + +# 0: Default; 1: Instant; 2: Custom-(require BATCH_MAX_FEE's value > 0) +BATCHER_FEE_ESTM_TYPE=1 +BATCHER_MAX_FEE=691654288189150 + +NORI_STORAGE_ZKAPP_ACCT_VK_HASH_KECCAK256=0x1234567890123456789012345678901234567890123456789012345678901234 +NORI_STORAGE_ZKAPP_TOKEN_ID=0x1234567890123456789012345678901234567890123456789012345678901234 + +# if keystore instead of PRIVATE_KEY, then uncomment it +# KEYSTORE_PATH= + +# optional: default, polling +ALIGNED_SUBMISSION_MODE=polling +# seconds +ALIGNED_POLL_INTERVAL_SECS=10 +# seconds +ALIGNED_POLL_TIMEOUT_SECS=1000 diff --git a/.env.template b/.env.template deleted file mode 100644 index 01b248e69..000000000 --- a/.env.template +++ /dev/null @@ -1,23 +0,0 @@ -ETH_CHAIN= -MINA_RPC_URL= -STATE_SETTLEMENT_ETH_ADDR=
-ACCOUNT_VALIDATION_ETH_ADDR=
-SAVE_PROOF=true/false # also false if other than "true" or variable were to be not defined - -## These are necessary for running the Sudoku example -#FEEPAYER_KEY= -#SUDOKU_VALIDITY_HOLESKY_ADDRESS= - -## These can be skipped if using devnet with Anvil. -# BATCHER_ADDR= -# BATCHER_ETH_ADDR= -# ETH_RPC_URL= -# PROOF_GENERATOR_ADDR= -# BRIDGE_HOLESKY_ETH_ADDR= -# BRIDGE_ACCOUNT_HOLESKY_ETH_ADDR= -# ALIGNED_SERVICE_MANAGER_ADDR= - -## You can choose to use a keystore or private key for your signing wallet. -## Leave empty if choosing Anvil Devnet. -# KEYSTORE_PATH= -# PRIVATE_KEY= diff --git a/.gitignore b/.gitignore index 4facfbb2c..54948429d 100644 --- a/.gitignore +++ b/.gitignore @@ -5,5 +5,5 @@ mina_state.proof mina_account.pub mina_account.proof aligned_verification_data -.env nonce_*.bin +.generated.contract.addresses.* diff --git a/Makefile b/Makefile index 5f56a2ae5..df0d77431 100644 --- a/Makefile +++ b/Makefile @@ -1,29 +1,23 @@ -.PHONY: submit_mainnet_state submit_devnet_state submit_account gen_contract_abi deploy_example_bridge_contracts - submit_mainnet_state: @cargo run --manifest-path core/Cargo.toml --release -- submit-state submit_devnet_state: - @cargo run --manifest-path core/Cargo.toml --release -- submit-state --devnet + @cargo run --manifest-path core/Cargo.toml -- submit-state --devnet submit_account: - @cargo run --manifest-path core/Cargo.toml --release -- submit-account $(PUBLIC_KEY) $(STATE_HASH) + @cargo run --manifest-path core/Cargo.toml --release -- submit-account $(PUBLIC_KEY) $(TOKEN_ID) $(STATE_HASH) gen_contract_abis: forge build --root contract/ - forge build --root example/eth_contract cp contract/out/MinaStateSettlementExample.sol/MinaStateSettlementExample.json core/abi/MinaStateSettlementExample.json cp contract/out/MinaAccountValidationExample.sol/MinaAccountValidationExample.json core/abi/MinaAccountValidationExample.json - cp example/eth_contract/out/SudokuValidity.sol/SudokuValidity.json example/app/abi/SudokuValidity.json + cp contract/out/NoriTokenBridge.sol/NoriTokenBridge.json core/abi/NoriTokenBridge.json -deploy_example_bridge_contracts: - @cargo run --manifest-path contract_deployer/Cargo.toml --release +deploy_all_bridge_contracts: + @cargo run --manifest-path contract_deployer/Cargo.toml --release -- deploy-all-contracts ${NORI_TOKEN_BRIDGE_INITIAL_BALANCE} -deploy_example_app_contracts: - @cargo run --manifest-path example/app/Cargo.toml --release -- deploy-contract +deploy_nori_token_bridge_contract: + @cargo run --manifest-path contract_deployer/Cargo.toml --release -- deploy-nori-bridge ${NORI_TOKEN_BRIDGE_INITIAL_BALANCE} -execute_example: - cd example/mina_zkapp; \ - npm run build; \ - node build/src/run.js - cargo run --manifest-path example/app/Cargo.toml --release -- validate-solution +unlock_nori_token: + @cargo run --manifest-path core/Cargo.toml --release -- unlock-nori-token --to-unlock-amount $(TO_UNLOCK_AMOUNT) $(PUBLIC_KEY) $(TOKEN_ID) \ No newline at end of file diff --git a/README.md b/README.md index e7024ed0d..4917bcced 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,6 @@ Docs and utils for the Zero-knowledge state bridge from Mina to Ethereum - [About](#about) - [Usage](#usage) -- [Example use case](#example-use-case) - [Table of Contents](#table-of-contents) - [Specification](#specification) - [core](#core) @@ -132,73 +131,58 @@ git checkout staging 1. Setup the `.env` file of the Bridge. A template is available in `.env.template`. 1. Set `ETH_CHAIN` to `devnet`. - 1. Set `MINA_RPC_URL` to the URL of the Mina node GraphQL API (See [Mina node section](#mina-node)). + 2. Set `MINA_RPC_URL` to the URL of the Mina node GraphQL API (See [Mina node section](#mina-node)). 2. In the root folder, deploy the example Bridge's contracts with: ```sh - make deploy_example_bridge_contracts - ``` - - In the `.env` file, set `STATE_SETTLEMENT_ETH_ADDR` and `ACCOUNT_VALIDATION_ETH_ADDR` to the corresponding deployed contract addresses. - -3. Submit a Mina state proof to verify: - - - Run `make submit_devnet_state` if you are using Mina Devnet or `make submit_mainnet_state` if you are using Mina Mainnet. - -4. Submit an account to verify: + gen_contract_abis - ```sh - make submit_account PUBLIC_KEY= STATE_HASH= + make deploy_all_bridge_contracts NORI_TOKEN_BRIDGE_INITIAL_BALANCE= ``` Where: - - `PUBLIC_KEY` is the public key of the Mina account you want to verify - - `STATE_HASH` is the hash of a Mina state that was verified in Ethereum + - NORI_TOKEN_BRIDGE_INITIAL_BALANCE is expressed in **ether** (e.g., `1` means 1 $ETH, `1.123` means 1.123 $ETH). -## Example use case - -The `example/` folder contains a project that uses the Sudoku zkApp example from Mina and bridges its state to a SudokuValidity Ethereum smart contract. - -For running the example you need to: - -1. [Setup Aligned Devnet locally](https://github.com/yetanotherco/aligned_layer/blob/staging/docs/3_guides/6_setup_aligned.md#booting-devnet-with-default-configs) - -2. Deploy the example bridge smart contracts by executing + In the `.env` file, set `STATE_SETTLEMENT_ETH_ADDR`, `ACCOUNT_VALIDATION_ETH_ADDR` and `NORI_TOKEN_BRIDGE_ETH_ADDRESS` to the corresponding deployed contract addresses. + If you expect to re-deploy NoriTokenBridge contract only, kindly re-exec + ```sh - make deploy_example_bridge_contracts + make deploy_nori_token_bridge_contract NORI_TOKEN_BRIDGE_INITIAL_BALANCE= ``` + + and later update `NORI_TOKEN_BRIDGE_ETH_ADDRESS` in `.env`. -3. Deploy the SudokuValidity smart contract by executing +3. Submit a Mina state proof to verify: - ```sh - make deploy_example_app_contracts - ``` + - Run `make submit_devnet_state` if you are using Mina Devnet or `make submit_mainnet_state` if you are using Mina Mainnet. -4. Install `zkapp-cli`: +4. Submit an account to verify: ```sh - npm install -g zkapp-cli + make submit_account PUBLIC_KEY= TOKEN_ID= STATE_HASH= ``` -5. Inside the `example/mina_zkapp` directory, configure the zkApp and deploy the contract following [this guide](https://docs.minaprotocol.com/zkapps/writing-a-zkapp/introduction-to-zkapps/how-to-deploy-a-zkapp) on the Mina Protocol documentation - -6. After deployment, set the `zkappAddress` field on `example/mina_zkapp/config.json` - -7. Set the environment variables in a `.env` file accordingly. A template can be found in `.env.template`. + Where: + - `PUBLIC_KEY` is the public key of the Mina account you want to verify + - `TOKEN_ID` is the token id of the fungible token owned by `NoriBridgeController` Mina Contract. + - `STATE_HASH` is the hash of a Mina state that was verified in Ethereum -8. Run the example by executing from the root folder: +5. Unlock $ETH from NoriTokenBridge smart contract - ```sh - make execute_example - ``` + You first need trigger `NoriBridgeController.alignedLock()` to burn $ETH fungible token on Mina side. - this will upload a new Sudoku, submit a solution to it and run the example Rust app that will bridge the new state of the zkApp and update the SudokuValidty smart contract on Ethereum. + and then: - The zkApp will wait until both Mina transactions are included in a block, so this may take a while. Below is a diagram explaining the execution flow: + ```sh + make unlock_nori_token PUBLIC_KEY= TOKEN_ID= TO_UNLOCK_AMOUNT= + ``` -![Example diagram](/img/example_diagram.png) + Where: + - `PUBLIC_KEY` is the public key of the Mina account you want to verify + - `TOKEN_ID` is the token id of the fungible token owned by `NoriBridgeController` Mina Contract. + - `TO_UNLOCK_AMOUNT` is expressed in **ether** (e.g., `1` means 1 $ETH, `1.123` means 1.123 $ETH). ## Specification diff --git a/contract/foundry.toml b/contract/foundry.toml index 25b918f9c..e68dc2b3f 100644 --- a/contract/foundry.toml +++ b/contract/foundry.toml @@ -3,4 +3,8 @@ src = "src" out = "out" libs = ["lib"] +optimizer = true +optimizer_runs = 200 +via_ir = true + # See more config options https://github.com/foundry-rs/foundry/blob/master/crates/config/README.md#all-options diff --git a/contract/src/MinaStateSettlementExample.sol b/contract/src/MinaStateSettlementExample.sol index 0cce922d4..761e00049 100644 --- a/contract/src/MinaStateSettlementExample.sol +++ b/contract/src/MinaStateSettlementExample.sol @@ -60,10 +60,8 @@ contract MinaStateSettlementExample { /// @notice Returns true if this snarked ledger hash was bridged. function isLedgerVerified(bytes32 ledgerHash) external view returns (bool) { - for (uint256 i = 0; i < BRIDGE_TRANSITION_FRONTIER_LEN; i++) { - if (chainLedgerHashes[BRIDGE_TRANSITION_FRONTIER_LEN - 1 - i] == ledgerHash) { - return true; - } + if (chainLedgerHashes[0] == ledgerHash) { + return true; } return false; } diff --git a/contract/src/NoriTokenBridge.sol b/contract/src/NoriTokenBridge.sol new file mode 100644 index 000000000..fbd9648fc --- /dev/null +++ b/contract/src/NoriTokenBridge.sol @@ -0,0 +1,219 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.28; + +import "./MinaStateSettlementExample.sol"; +import "./MinaAccountValidationExample.sol"; + +/// @title NoriTokenBridge +/// @notice Lock ETH for Mina accounts with bridge unit validation and depositor binding +contract NoriTokenBridge { + // ------------------------------- + // Constants (these should be slotless and converted to bytecode) + // ------------------------------- + uint8 public constant DECIMALS = 6; + uint64 public constant MAX_MAGNITUDE = (1 << 64) - 1; // 64-bit magnitude + uint256 public constant WEI_PER_BRIDGE_UNIT = 10 ** (18 - DECIMALS); // smallest bridge unit in wei + + // ------------------------------- + // Custom Errors + // ------------------------------- + error AlignedContractsNotConfigured(); + error ZeroAddress(); + error NotBridgeOperator(); + + // ------------------------------- + // State Variables + // ------------------------------- + address public bridgeOperator; + + // ETH locked per ETH address per Mina account (attestationHash) + mapping(address => mapping(uint256 => uint256)) public lockedTokens; + + // Total locked supply in bridge units + uint256 public totalLocked; + + // Mina account (attestationHash) -> ETH depositor + mapping(uint256 => address) public codeChallengeToEthAddress; + + /// NoriStorage zkApp verification key hash (keccak256(abi.encode(verificationKey))). Settable by bridge operator for upgrades. + bytes32 public noriStorageZkappAcctVk; + + /// NoriStorage zkApp token ID (tokenIdKeyHash). Settable by bridge operator for upgrades. + bytes32 public noriStorageZkappTokenId; + + /// @notice Mina bridge contract that validates and stores Mina states. + MinaStateSettlementExample stateSettlement; + /// @notice Mina bridge contract that validates accounts + MinaAccountValidationExample accountValidation; + + // Hash(publicKey, tokenId) -> burnSoFar + mapping(uint256 => uint256) public burnSoFarSet; + + + // ------------------------------- + // Events + // ------------------------------- + event TokensLocked(address indexed user, uint256 attestationHash, uint256 amount, uint256 when); + event TokensUnlocked(uint256 indexed pubKeyTokenIdHash, uint256 amount, address receiver, uint256 when); + event StateSettlementAddrSet(address indexed newAddress); + event AccountValidationAddrSet(address indexed newAddress); + event NoriStorageZkappAcctVkSet(bytes32 indexed previousVk, bytes32 indexed newVk); + event NoriStorageZkappTokenIdSet(bytes32 indexed previousTokenId, bytes32 indexed newTokenId); + + // ------------------------------- + // Modifiers + // ------------------------------- + modifier onlyBridgeOperator() { + if (msg.sender != bridgeOperator) revert NotBridgeOperator(); + _; + } + + modifier onlyConfigured() { + if (!isConfigured()) revert AlignedContractsNotConfigured(); + _; + } + + // ------------------------------- + // Constructor + // ------------------------------- + constructor() payable /*TODO Keep Payable for TEST(Mina->ETHEREUM)*/{ + bridgeOperator = msg.sender; + } + + // ------------------------------- + // Configuration + // ------------------------------- + function setAlignedContracts(address _stateSettlementAddr, address _accountValidationAddr) external onlyBridgeOperator { + if (_stateSettlementAddr == address(0) || _accountValidationAddr == address(0)) revert ZeroAddress(); + + stateSettlement = MinaStateSettlementExample(_stateSettlementAddr); + accountValidation = MinaAccountValidationExample(_accountValidationAddr); + + emit StateSettlementAddrSet(_stateSettlementAddr); + emit AccountValidationAddrSet(_accountValidationAddr); + } + + /// @notice Set the NoriStorage zkApp verification key hash and token ID (e.g. when upgrading the circuit). + function setNoriStorageZkappParams(bytes32 _noriStorageZkappAcctVk, bytes32 _noriStorageZkappTokenId) external onlyBridgeOperator { + bytes32 previousVk = noriStorageZkappAcctVk; + noriStorageZkappAcctVk = _noriStorageZkappAcctVk; + emit NoriStorageZkappAcctVkSet(previousVk, _noriStorageZkappAcctVk); + + bytes32 previousTokenId = noriStorageZkappTokenId; + noriStorageZkappTokenId = _noriStorageZkappTokenId; + emit NoriStorageZkappTokenIdSet(previousTokenId, _noriStorageZkappTokenId); + } + + function isConfigured() public view returns (bool) { + return address(stateSettlement) != address(0) && address(accountValidation) != address(0); + } + + // ------------------------------- + // Lock ETH for a Mina account + // ------------------------------- + function lockTokens(uint256 attestationHash) public payable onlyConfigured { + // =============================== + // VALIDATION + // =============================== + require(msg.value > 0, "You must send some Ether to lock"); + + // Convert wei to bridge units + uint256 bridgeAmount = msg.value / WEI_PER_BRIDGE_UNIT; + + // Ensure deposit is a whole multiple of bridge unit + require(msg.value % WEI_PER_BRIDGE_UNIT == 0, "Must be multiple of smallest bridge unit"); + + // Ensure total locked supply does not exceed MAX_MAGNITUDE + require(totalLocked + bridgeAmount <= MAX_MAGNITUDE, "Total locked exceeds maximum allowed"); + + // Enforce one ETH depositor per Mina account + address linkedEth = codeChallengeToEthAddress[attestationHash]; + if (linkedEth == address(0)) { + // First deposit: bind Mina account to sender + codeChallengeToEthAddress[attestationHash] = msg.sender; + } else { + require(linkedEth == msg.sender, "This Mina account is already linked to a different ETH address"); + } + + // =============================== + // LOCK LOGIC + // =============================== + lockedTokens[msg.sender][attestationHash] += msg.value; + totalLocked += bridgeAmount; + + emit TokensLocked(msg.sender, attestationHash, msg.value, block.timestamp); + } + + /// @notice unlock the tokens by bridging from Mina + function unlockTokens( + uint256 toUnlockAmount, // token to unlock + bytes32 proofCommitment, + bytes32 provingSystemAuxDataCommitment, + bytes20 proofGeneratorAddr, + bytes32 batchMerkleRoot, + bytes memory merkleProof, + uint256 verificationDataBatchIndex, + bytes calldata pubInput, + address batcherPaymentService + ) external onlyConfigured { + bytes32 ledgerHash = bytes32(pubInput[:32]); + require(stateSettlement.isLedgerVerified(ledgerHash), "Invalid Ledger"); + + MinaAccountValidationExample.AlignedArgs memory args = MinaAccountValidationExample.AlignedArgs( + proofCommitment, + provingSystemAuxDataCommitment, + proofGeneratorAddr, + batchMerkleRoot, + merkleProof, + verificationDataBatchIndex, + pubInput, + batcherPaymentService + ); + require(accountValidation.validateAccount(args), "Invalid Zkapp Account"); + + bytes calldata encodedAccount = pubInput[32 + 8:]; + MinaAccountValidationExample.Account memory account = abi.decode(encodedAccount, (MinaAccountValidationExample.Account)); + + // check that this account represents the circuit we expect + // VerificationKey is ABI-encoded then hashed with keccak256 (Solidity has no Poseidon). + bytes32 verificationKeyHash = keccak256( + abi.encode(account.zkapp.verificationKey) + ); + require(verificationKeyHash == noriStorageZkappAcctVk, "Incorrect Zkapp Account"); + + // check if the tokenId is aligned + require(account.tokenIdKeyHash == noriStorageZkappTokenId, "Incorrect Token Holder Account"); + + // check if burnedSoFar at Mina account is greater than the existing burnSoFar + uint256 pubKeyTokenIdHash = uint256(keccak256(abi.encode(account.publicKey, account.tokenIdKeyHash))); + uint256 burnSoFar0 = burnSoFarSet[pubKeyTokenIdHash]; + uint256 bridgeAmount = uint256(account.zkapp.appState[2]) - burnSoFar0; + require(bridgeAmount > 0, "Burn so far is greater than the amount to burn"); + + // =============================== + // UNLOCK LOGIC + // =============================== + require(toUnlockAmount <= bridgeAmount, "To unlock amount is greater than the amount to unlock"); + burnSoFarSet[pubKeyTokenIdHash] = burnSoFar0 + toUnlockAmount; + + // transfer the tokens to the user + address receiver = address(uint160(uint256(account.zkapp.appState[3]))); + + // TODO FOR TEST-ALIGN + // totalLocked -= toUnlockAmount; + payable(receiver).transfer(toUnlockAmount); + + emit TokensUnlocked(pubKeyTokenIdHash, toUnlockAmount, receiver, block.timestamp); + } + + // ------------------------------- + // Admin-only withdraw all ETH + // ------------------------------- + function withdraw() public onlyBridgeOperator onlyConfigured { + + uint256 balance = address(this).balance; + require(balance > 0, "No ETH to withdraw"); + + payable(bridgeOperator).transfer(balance); + } +} \ No newline at end of file diff --git a/contract_deployer/Cargo.lock b/contract_deployer/Cargo.lock index 3ce8fccbb..16e6fc10a 100644 --- a/contract_deployer/Cargo.lock +++ b/contract_deployer/Cargo.lock @@ -674,12 +674,6 @@ dependencies = [ "ws_stream_wasm", ] -[[package]] -name = "android-tzdata" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" - [[package]] name = "android_system_properties" version = "0.1.5" @@ -1236,6 +1230,29 @@ dependencies = [ "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 3.2.0", + "proc-macro2", + "quote", + "syn 2.0.98", +] + [[package]] name = "bs58" version = "0.4.0" @@ -1267,6 +1284,28 @@ version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" +[[package]] +name = "bytecheck" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23cdc57ce23ac53c931e88a43d06d070a6fd142f2617be5855eb75efc9beb1c2" +dependencies = [ + "bytecheck_derive", + "ptr_meta", + "simdutf8", +] + +[[package]] +name = "bytecheck_derive" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3db406d29fbcd95542e92559bed4d8ad92636d1ca8b3b72ede10b4bcc010e659" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "byteorder" version = "1.5.0" @@ -1367,19 +1406,24 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[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.39" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" +checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" dependencies = [ - "android-tzdata", "iana-time-zone", "js-sys", "num-traits", "serde", "wasm-bindgen", - "windows-targets 0.52.6", + "windows-link", ] [[package]] @@ -1611,10 +1655,14 @@ name = "contract_deployer" version = "0.1.0" dependencies = [ "aligned-sdk", + "alloy", "bincode", + "chrono", + "clap", "env_logger", "log", "mina_bridge_core", + "rust_decimal", "tokio", ] @@ -2922,6 +2970,9 @@ name = "hashbrown" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash 0.7.8", +] [[package]] name = "hashbrown" @@ -3868,6 +3919,34 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "mina-state-verifier" +version = "0.1.0" +dependencies = [ + "ark-ec", + "ark-ff 0.3.0", + "ark-poly", + "ark-serialize 0.3.0", + "base64 0.22.1", + "bincode", + "blake2", + "bs58 0.5.1", + "hex", + "kimchi", + "lazy_static", + "log", + "mina-curves", + "mina-p2p-messages", + "mina-tree", + "o1-utils 0.1.0 (git+https://github.com/lambdaclass/proof-systems?rev=5bdeab3c2a43a671645952f63b9354b7a20b2326)", + "once_cell", + "poly-commitment", + "rmp-serde", + "serde", + "serde_json", + "serde_with 3.12.0", +] + [[package]] name = "mina-tree" version = "0.6.0" @@ -3945,6 +4024,7 @@ dependencies = [ "mina-curves", "mina-p2p-messages", "mina-signer", + "mina-state-verifier", "mina-tree", "num-bigint", "num-traits", @@ -4107,7 +4187,7 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" dependencies = [ - "proc-macro-crate 1.1.3", + "proc-macro-crate 3.2.0", "proc-macro2", "quote", "syn 2.0.98", @@ -4722,6 +4802,26 @@ dependencies = [ "unarray", ] +[[package]] +name = "ptr_meta" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" +dependencies = [ + "ptr_meta_derive", +] + +[[package]] +name = "ptr_meta_derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "quick-error" version = "1.2.3" @@ -4897,6 +4997,15 @@ version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +[[package]] +name = "rend" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71fe3824f5629716b1589be05dacd749f6aa084c87e00e016714a8cdfccc997c" +dependencies = [ + "bytecheck", +] + [[package]] name = "reqwest" version = "0.11.27" @@ -5034,6 +5143,35 @@ dependencies = [ "digest 0.10.7", ] +[[package]] +name = "rkyv" +version = "0.7.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9008cd6385b9e161d8229e1f6549dd23c3d022f132a2ea37ac3a10ac4935779b" +dependencies = [ + "bitvec", + "bytecheck", + "bytes", + "hashbrown 0.12.3", + "ptr_meta", + "rend", + "rkyv_derive", + "seahash", + "tinyvec", + "uuid 1.13.1", +] + +[[package]] +name = "rkyv_derive" +version = "0.7.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "503d1d27590a2b0a3a4ca4c94755aa2875657196ecbf401a42eff41d7de532c0" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "rlp" version = "0.5.2" @@ -5135,6 +5273,22 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" +[[package]] +name = "rust_decimal" +version = "1.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35affe401787a9bd846712274d97654355d21b2a2c092a3139aabe31e9022282" +dependencies = [ + "arrayvec", + "borsh", + "bytes", + "num-traits", + "rand", + "rkyv", + "serde", + "serde_json", +] + [[package]] name = "rustc-demangle" version = "0.1.24" @@ -5358,6 +5512,12 @@ dependencies = [ "untrusted 0.9.0", ] +[[package]] +name = "seahash" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" + [[package]] name = "sec1" version = "0.7.3" @@ -5636,6 +5796,12 @@ dependencies = [ "rand_core", ] +[[package]] +name = "simdutf8" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" + [[package]] name = "simple_asn1" version = "0.6.3" @@ -6720,6 +6886,12 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + [[package]] name = "windows-registry" version = "0.2.0" diff --git a/contract_deployer/Cargo.toml b/contract_deployer/Cargo.toml index e768c6b6a..aea8da311 100644 --- a/contract_deployer/Cargo.toml +++ b/contract_deployer/Cargo.toml @@ -10,6 +10,10 @@ tokio = "1.39.1" env_logger = "0.11.5" bincode = "1.3.3" log = "0.4.22" +alloy = { version = "0.3.1", features = ["full", "signer-keystore"] } +clap = { version = "4.5.4", features = ["derive"] } +rust_decimal = "1.36" +chrono = "0.4.42" [patch.crates-io] ark-ff = { git = "https://github.com/lambdaclass/openmina_algebra", rev = "017531e7aaa15a2c856532b0843876e371b01122" } diff --git a/contract_deployer/src/main.rs b/contract_deployer/src/main.rs index beb869ef6..864270805 100644 --- a/contract_deployer/src/main.rs +++ b/contract_deployer/src/main.rs @@ -1,105 +1,340 @@ use aligned_sdk::common::types::Network; +use alloy::primitives::{Address, FixedBytes}; +use chrono::Local; +use clap::{Parser, Subcommand}; use log::{debug, error, info}; use mina_bridge_core::{ eth::{ - deploy_mina_account_validation_example_contract, deploy_mina_bridge_example_contract, - MinaAccountValidationExampleConstructorArgs, MinaStateSettlementExampleConstructorArgs, - SolStateHash, + configure_nori_token_bridge_contract, deploy_mina_account_validation_example_contract, + deploy_mina_bridge_example_contract, deploy_nori_token_bridge_contract, + MinaAccountValidationExampleConstructorArgs, + MinaStateSettlementExampleConstructorArgs, SolStateHash, }, mina::query_root, utils::{ - constants::{ALIGNED_SM_DEVNET_ETH_ADDR, BRIDGE_TRANSITION_FRONTIER_LEN}, - env::EnvironmentVariables, - wallet_alloy::get_wallet, + constants::BRIDGE_TRANSITION_FRONTIER_LEN, env::EnvironmentVariables, wallet::get_wallet, }, }; -use std::process; +use rust_decimal::{prelude::ToPrimitive, Decimal}; +use std::{fs, process, str::FromStr}; + +#[derive(Parser, Debug)] +#[command(version, about)] +struct Cli { + #[command(subcommand)] + command: Command, +} + +#[derive(Subcommand, Debug)] +enum Command { + /// Deploy Mina example contracts and NoriTokenBridge + DeployAllContracts { + /// Initial balance (in ether, supports decimals). Example: 1.25 + #[arg(value_name = "NORI_TOKEN_BRIDGE_INITIAL_BALANCE")] + initial_balance: Option, + }, + /// Deploy only NoriTokenBridge using existing state/account contracts + DeployNoriBridge { + /// Initial balance (in ether, supports decimals). Example: 1.25 + #[arg(value_name = "NORI_TOKEN_BRIDGE_INITIAL_BALANCE")] + initial_balance: Option, + }, +} #[tokio::main] async fn main() { + let cli = Cli::parse(); env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("info")).init(); - debug!("Reading env. variables"); - let EnvironmentVariables { - rpc_url, - eth_rpc_url, - network, - private_key, - keystore_path, - .. - } = EnvironmentVariables::new().unwrap_or_else(|err| { - error!("{}", err); - process::exit(1); - }); - - let root_hash = query_root(&rpc_url, BRIDGE_TRANSITION_FRONTIER_LEN) - .await - .unwrap_or_else(|err| { - error!("Failed to query root state hash: {err}"); - process::exit(1); - }); - info!( - "Queried root state hash {root_hash} for chain of length {BRIDGE_TRANSITION_FRONTIER_LEN}" - ); - let root_hash = bincode::serialize(&SolStateHash(root_hash)).unwrap_or_else(|err| { - error!("Failed to serialize root state hash: {err}"); - process::exit(1); - }); - - let aligned_sm_addr = match network { - Network::Devnet => Ok(ALIGNED_SM_DEVNET_ETH_ADDR.to_owned()), - Network::Holesky => std::env::var("ALIGNED_SERVICE_MANAGER_ADDR") - .map_err(|err| format!("Error getting Aligned SM contract address: {err}")), - _ => Err("Unimplemented Ethereum contract on selected chain".to_owned()), - } - .unwrap_or_else(|err| { - error!("{err}"); - process::exit(1); - }); - - let bridge_constructor_args = - MinaStateSettlementExampleConstructorArgs::new(&aligned_sm_addr, root_hash).unwrap_or_else( - |err| { - error!("Failed to make constructor args for bridge contract call: {err}"); + match cli.command { + Command::DeployAllContracts { initial_balance } => { + debug!("Received initial balance arg: {:?}", initial_balance); + info!("Reading env. variables"); + let env_vars = EnvironmentVariables::new().unwrap_or_else(|err| { + error!("{}", err); + process::exit(1); + }); + + let root_hash = query_root(&env_vars.mina_rpc_url, BRIDGE_TRANSITION_FRONTIER_LEN) + .await + .unwrap_or_else(|err| { + error!("Failed to query root state hash: {err}"); + process::exit(1); + }); + info!( + "Queried root state hash {root_hash} for chain of length {BRIDGE_TRANSITION_FRONTIER_LEN}" + ); + let root_hash = bincode::serialize(&SolStateHash(root_hash)).unwrap_or_else(|err| { + error!("Failed to serialize root state hash: {err}"); + process::exit(1); + }); + + let aligned_sm_addr = std::env::var("ALIGNED_SERVICE_MANAGER_ADDR") + .map_err(|err| format!("Error getting ALIGNED_SERVICE_MANAGER_ADDR: {err}")) + .unwrap(); + + let bridge_constructor_args = + MinaStateSettlementExampleConstructorArgs::new(&aligned_sm_addr, root_hash) + .unwrap_or_else(|err| { + error!("Failed to make constructor args for bridge contract call: {err}"); + process::exit(1); + }); + let account_constructor_args = MinaAccountValidationExampleConstructorArgs::new( + &aligned_sm_addr, + ) + .unwrap_or_else(|err| { + error!("Failed to make constructor args for account contract call: {err}"); + process::exit(1); + }); + + let wallet_data = get_wallet( + &env_vars.eth_network, + env_vars.keystore_path.as_deref(), + env_vars.private_key.as_deref(), + ) + .unwrap_or_else(|err| { + error!("Failed to get wallet: {err}"); + process::exit(1); + }); + + // Contract for Devnet state proofs + let is_state_proof_from_devnet = match env_vars.eth_network { + Network::Devnet => true, + Network::Hoodi => true, + Network::Sepolia => true, + Network::Mainnet => false, + _ => { + error!( + "Unrecognized chain, possible values for ETH_CHAIN are \"devnet\", \"sepolia\" and \"hoodi\"." + ); + process::exit(1); + } + }; + + let state_settlement_addr = deploy_mina_bridge_example_contract( + &env_vars.eth_rpc_url, + &bridge_constructor_args, + &wallet_data.wallet, + is_state_proof_from_devnet, + ) + .await + .unwrap_or_else(|err| { + error!("Failed to deploy contract: {err}"); + process::exit(1); + }); + + let account_validation_addr = deploy_mina_account_validation_example_contract( + &env_vars.eth_rpc_url, + account_constructor_args, + &wallet_data.wallet, + ) + .await + .unwrap_or_else(|err| { + error!("Failed to deploy contract: {err}"); + process::exit(1); + }); + + let nori_storage_zkapp_acct_vk = + parse_hex_bytes32(&env_vars.nori_storage_zkapp_acct_vk).unwrap_or_else(|e| { + error!("Invalid NORI_STORAGE_ZKAPP_ACCT_VK_HASH_KECCAK256: {e}"); + process::exit(1); + }); + let nori_storage_zkapp_token_id = + parse_hex_bytes32(&env_vars.nori_storage_zkapp_token_id).unwrap_or_else(|e| { + error!("Invalid NORI_STORAGE_ZKAPP_TOKEN_ID: {e}"); + process::exit(1); + }); + + info!( + "Setting NoriStorage zkApp params: vk={}, tokenId={}", + env_vars.nori_storage_zkapp_acct_vk, env_vars.nori_storage_zkapp_token_id + ); + + let initial_balance_wei = parse_initial_balance(initial_balance.as_deref()) + .unwrap_or_else(|err| { + error!("Invalid initial balance: {err}"); + process::exit(1); + }); + + let nori_token_bridge_addr = deploy_nori_token_bridge_contract( + &env_vars.eth_rpc_url, + &wallet_data.wallet, + initial_balance_wei, + ) + .await + .unwrap_or_else(|err| { + error!("Failed to deploy NoriTokenBridge: {err}"); + process::exit(1); + }); + + configure_nori_token_bridge_contract( + &env_vars.eth_rpc_url, + nori_token_bridge_addr, + state_settlement_addr, + account_validation_addr, + nori_storage_zkapp_acct_vk, + nori_storage_zkapp_token_id, + &wallet_data.wallet, + ) + .await + .unwrap_or_else(|err| { + error!("Failed to configure NoriTokenBridge: {err}"); + process::exit(1); + }); + + // log in local filesystem + let ts = Local::now().format("%Y%m%d%H%M%S"); + let filename = format!(".generated.contract.addresses.{}", ts); + let generated_addresses = format!( + "STATE_SETTLEMENT_ETH_ADDR={}\nACCOUNT_VALIDATION_ETH_ADDR={}\nNORI_TOKEN_BRIDGE_ETH_ADDRESS={}\n", + state_settlement_addr, account_validation_addr, nori_token_bridge_addr + ); + + fs::write(&filename, generated_addresses).unwrap_or_else(|err| { + error!("Failed to write {filename}: {err}"); + process::exit(1); + }); + + info!( + "deployed contract addresses are saved into {} file", + filename + ); + } + + Command::DeployNoriBridge { initial_balance } => { + debug!("Received initial balance arg: {:?}", initial_balance); + info!("Reading env. variables"); + let env_vars = EnvironmentVariables::new().unwrap_or_else(|err| { + error!("{}", err); + process::exit(1); + }); + + let wallet_data = get_wallet( + &env_vars.eth_network, + env_vars.keystore_path.as_deref(), + env_vars.private_key.as_deref(), + ) + .unwrap_or_else(|err| { + error!("Failed to get wallet: {err}"); + process::exit(1); + }); + + let state_settlement_addr = env_vars + .state_settlement_addr + .as_ref() + .ok_or("STATE_SETTLEMENT_ETH_ADDR is not set".to_string()) + .and_then(|addr| Address::from_str(addr).map_err(|e| e.to_string())) + .unwrap_or_else(|err| { + error!("{}", err); + process::exit(1); + }); + + let account_validation_addr = env_vars + .account_validation_addr + .as_ref() + .ok_or("ACCOUNT_VALIDATION_ETH_ADDR is not set".to_string()) + .and_then(|addr| Address::from_str(addr).map_err(|e| e.to_string())) + .unwrap_or_else(|err| { + error!("{}", err); + process::exit(1); + }); + + let nori_storage_zkapp_acct_vk = + parse_hex_bytes32(&env_vars.nori_storage_zkapp_acct_vk).unwrap_or_else(|e| { + error!("Invalid NORI_STORAGE_ZKAPP_ACCT_VK_HASH_KECCAK256: {e}"); + process::exit(1); + }); + let nori_storage_zkapp_token_id = + parse_hex_bytes32(&env_vars.nori_storage_zkapp_token_id).unwrap_or_else(|e| { + error!("Invalid NORI_STORAGE_ZKAPP_TOKEN_ID: {e}"); + process::exit(1); + }); + + let initial_balance_wei = parse_initial_balance(initial_balance.as_deref()) + .unwrap_or_else(|err| { + error!("Invalid initial balance: {err}"); + process::exit(1); + }); + + info!("Deploying Nori Token Bridge..."); + info!("State Settlement Address: {}", state_settlement_addr); + info!("Account Validation Address: {}", account_validation_addr); + info!( + "NoriStorage ZkApp Account Verification Key: {}", + nori_storage_zkapp_acct_vk + ); + info!( + "NoriStorage ZkApp Token ID: {}", + nori_storage_zkapp_token_id + ); + + let nori_token_bridge_addr = deploy_nori_token_bridge_contract( + &env_vars.eth_rpc_url, + &wallet_data.wallet, + initial_balance_wei, + ) + .await + .unwrap_or_else(|err| { + error!("Failed to deploy NoriTokenBridge: {err}"); process::exit(1); - }, - ); - let account_constructor_args = - MinaAccountValidationExampleConstructorArgs::new(&aligned_sm_addr).unwrap_or_else(|err| { - error!("Failed to make constructor args for account contract call: {err}"); - process::exit(1); - }); - - let wallet = get_wallet(&network, keystore_path.as_deref(), private_key.as_deref()) - .unwrap_or_else(|err| { - error!("Failed to get wallet: {err}"); - process::exit(1); - }); - - // Contract for Devnet state proofs - deploy_mina_bridge_example_contract(ð_rpc_url, &bridge_constructor_args, &wallet, true) - .await - .unwrap_or_else(|err| { - error!("Failed to deploy contract: {err}"); - process::exit(1); - }); - - // Contract for Mainnet state proofs - deploy_mina_bridge_example_contract(ð_rpc_url, &bridge_constructor_args, &wallet, false) - .await - .unwrap_or_else(|err| { - error!("Failed to deploy contract: {err}"); - process::exit(1); - }); - - deploy_mina_account_validation_example_contract( - ð_rpc_url, - account_constructor_args, - &wallet, - ) - .await - .unwrap_or_else(|err| { - error!("Failed to deploy contract: {err}"); - process::exit(1); - }); + }); + + configure_nori_token_bridge_contract( + &env_vars.eth_rpc_url, + nori_token_bridge_addr, + state_settlement_addr, + account_validation_addr, + nori_storage_zkapp_acct_vk, + nori_storage_zkapp_token_id, + &wallet_data.wallet, + ) + .await + .unwrap_or_else(|err| { + error!("Failed to configure NoriTokenBridge: {err}"); + process::exit(1); + }); + + // log in local filesystem + let ts = Local::now().format("%Y%m%d%H%M%S"); + let filename = format!(".generated.contract.addresses.{}", ts); + let generated_addresses = format!( + "STATE_SETTLEMENT_ETH_ADDR={}\nACCOUNT_VALIDATION_ETH_ADDR={}\nNORI_TOKEN_BRIDGE_ETH_ADDRESS={}\n", + state_settlement_addr, account_validation_addr, nori_token_bridge_addr + ); + + fs::write(&filename, generated_addresses).unwrap_or_else(|err| { + error!("Failed to write {filename}: {err}"); + process::exit(1); + }); + + info!( + "deployed contract addresses are saved into {} file", + filename + ); + } + } +} + +fn parse_hex_bytes32(hex: &str) -> Result, String> { + let hex = hex.trim_start_matches("0x"); + let bytes = alloy::hex::decode(hex).map_err(|e| format!("invalid hex: {e}"))?; + if bytes.len() != 32 { + return Err(format!("expected 32 bytes, got {}", bytes.len())); + } + Ok(FixedBytes::from_slice(&bytes)) +} + +fn parse_initial_balance(raw: Option<&str>) -> Result, String> { + let Some(raw) = raw else { + return Ok(None); + }; + let dec = Decimal::from_str(raw).map_err(|e| format!("failed to parse decimal: {e}"))?; + if dec.is_sign_negative() { + return Err("initial balance must be non-negative".to_string()); + } + // Scale to wei (18 decimals) and round to nearest integer + let wei = (dec * Decimal::from(10u128.pow(18))).round(); + wei.to_u128() + .ok_or_else(|| "initial balance too large".to_string()) + .map(Some) } diff --git a/core/Cargo.lock b/core/Cargo.lock index 41ad08fc4..bf4258a3d 100644 --- a/core/Cargo.lock +++ b/core/Cargo.lock @@ -3856,6 +3856,34 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "mina-state-verifier" +version = "0.1.0" +dependencies = [ + "ark-ec", + "ark-ff 0.3.0", + "ark-poly", + "ark-serialize 0.3.0", + "base64 0.22.1", + "bincode", + "blake2", + "bs58 0.5.1", + "hex", + "kimchi", + "lazy_static", + "log", + "mina-curves", + "mina-p2p-messages", + "mina-tree", + "o1-utils 0.1.0 (git+https://github.com/lambdaclass/proof-systems?rev=5bdeab3c2a43a671645952f63b9354b7a20b2326)", + "once_cell", + "poly-commitment", + "rmp-serde", + "serde", + "serde_json", + "serde_with 3.12.0", +] + [[package]] name = "mina-tree" version = "0.6.0" @@ -3933,6 +3961,7 @@ dependencies = [ "mina-curves", "mina-p2p-messages", "mina-signer", + "mina-state-verifier", "mina-tree", "num-bigint", "num-traits", diff --git a/core/Cargo.toml b/core/Cargo.toml index 9a7152232..10992bf27 100644 --- a/core/Cargo.toml +++ b/core/Cargo.toml @@ -34,6 +34,7 @@ graphql_client = { version = "0.14.0", features = [ "reqwest", "reqwest-blocking", ] } +mina-state-verifier = { path = "../mina_state_verifier" } alloy = { version = "0.3.1", features = ["full", "signer-keystore"] } clap = { version = "4.5.4", features = ["derive"] } sha3 = "0.10.8" @@ -44,6 +45,10 @@ alloy-sol-types = "0.8.2" alloy-contract = "0.3.1" zeroize = "1.8.1" +[[bin]] +name = "compute_vk_hash" +path = "src/bin/compute_vk_hash.rs" + [patch.crates-io] ark-ff = { git = "https://github.com/lambdaclass/openmina_algebra", rev = "017531e7aaa15a2c856532b0843876e371b01122" } ark-ec = { git = "https://github.com/lambdaclass/openmina_algebra", rev = "017531e7aaa15a2c856532b0843876e371b01122" } diff --git a/core/abi/MinaAccountValidationExample.json b/core/abi/MinaAccountValidationExample.json index 2b8f12474..b9461d032 100644 --- a/core/abi/MinaAccountValidationExample.json +++ b/core/abi/MinaAccountValidationExample.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_alignedServiceAddr","type":"address","internalType":"address payable"}],"stateMutability":"nonpayable"},{"type":"function","name":"validateAccount","inputs":[{"name":"args","type":"tuple","internalType":"struct MinaAccountValidationExample.AlignedArgs","components":[{"name":"proofCommitment","type":"bytes32","internalType":"bytes32"},{"name":"provingSystemAuxDataCommitment","type":"bytes32","internalType":"bytes32"},{"name":"proofGeneratorAddr","type":"bytes20","internalType":"bytes20"},{"name":"batchMerkleRoot","type":"bytes32","internalType":"bytes32"},{"name":"merkleProof","type":"bytes","internalType":"bytes"},{"name":"verificationDataBatchIndex","type":"uint256","internalType":"uint256"},{"name":"pubInput","type":"bytes","internalType":"bytes"},{"name":"batcherPaymentService","type":"address","internalType":"address"}]}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"validateAccountAndReturn","inputs":[{"name":"args","type":"tuple","internalType":"struct MinaAccountValidationExample.AlignedArgs","components":[{"name":"proofCommitment","type":"bytes32","internalType":"bytes32"},{"name":"provingSystemAuxDataCommitment","type":"bytes32","internalType":"bytes32"},{"name":"proofGeneratorAddr","type":"bytes20","internalType":"bytes20"},{"name":"batchMerkleRoot","type":"bytes32","internalType":"bytes32"},{"name":"merkleProof","type":"bytes","internalType":"bytes"},{"name":"verificationDataBatchIndex","type":"uint256","internalType":"uint256"},{"name":"pubInput","type":"bytes","internalType":"bytes"},{"name":"batcherPaymentService","type":"address","internalType":"address"}]}],"outputs":[{"name":"","type":"tuple","internalType":"struct MinaAccountValidationExample.Account","components":[{"name":"publicKey","type":"tuple","internalType":"struct MinaAccountValidationExample.CompressedECPoint","components":[{"name":"x","type":"bytes32","internalType":"bytes32"},{"name":"isOdd","type":"bool","internalType":"bool"}]},{"name":"tokenIdKeyHash","type":"bytes32","internalType":"bytes32"},{"name":"tokenSymbol","type":"string","internalType":"string"},{"name":"balance","type":"uint64","internalType":"uint64"},{"name":"nonce","type":"uint32","internalType":"uint32"},{"name":"receiptChainHash","type":"bytes32","internalType":"bytes32"},{"name":"delegate","type":"tuple","internalType":"struct MinaAccountValidationExample.CompressedECPoint","components":[{"name":"x","type":"bytes32","internalType":"bytes32"},{"name":"isOdd","type":"bool","internalType":"bool"}]},{"name":"votingFor","type":"bytes32","internalType":"bytes32"},{"name":"timing","type":"tuple","internalType":"struct MinaAccountValidationExample.Timing","components":[{"name":"initialMinimumBalance","type":"uint64","internalType":"uint64"},{"name":"cliffTime","type":"uint32","internalType":"uint32"},{"name":"cliffAmount","type":"uint64","internalType":"uint64"},{"name":"vestingPeriod","type":"uint32","internalType":"uint32"},{"name":"vestingIncrement","type":"uint64","internalType":"uint64"}]},{"name":"permissions","type":"tuple","internalType":"struct MinaAccountValidationExample.Permissions","components":[{"name":"editState","type":"uint8","internalType":"enum MinaAccountValidationExample.AuthRequired"},{"name":"access","type":"uint8","internalType":"enum MinaAccountValidationExample.AuthRequired"},{"name":"send","type":"uint8","internalType":"enum MinaAccountValidationExample.AuthRequired"},{"name":"rreceive","type":"uint8","internalType":"enum MinaAccountValidationExample.AuthRequired"},{"name":"setDelegate","type":"uint8","internalType":"enum MinaAccountValidationExample.AuthRequired"},{"name":"setPermissions","type":"uint8","internalType":"enum MinaAccountValidationExample.AuthRequired"},{"name":"setVerificationKeyAuth","type":"uint8","internalType":"enum MinaAccountValidationExample.AuthRequired"},{"name":"setVerificationKeyUint","type":"uint32","internalType":"uint32"},{"name":"setZkappUri","type":"uint8","internalType":"enum MinaAccountValidationExample.AuthRequired"},{"name":"editActionState","type":"uint8","internalType":"enum MinaAccountValidationExample.AuthRequired"},{"name":"setTokenSymbol","type":"uint8","internalType":"enum MinaAccountValidationExample.AuthRequired"},{"name":"incrementNonce","type":"uint8","internalType":"enum MinaAccountValidationExample.AuthRequired"},{"name":"setVotingFor","type":"uint8","internalType":"enum MinaAccountValidationExample.AuthRequired"},{"name":"setTiming","type":"uint8","internalType":"enum MinaAccountValidationExample.AuthRequired"}]},{"name":"zkapp","type":"tuple","internalType":"struct MinaAccountValidationExample.ZkappAccount","components":[{"name":"appState","type":"bytes32[8]","internalType":"bytes32[8]"},{"name":"verificationKey","type":"tuple","internalType":"struct MinaAccountValidationExample.VerificationKey","components":[{"name":"maxProofsVerified","type":"uint8","internalType":"enum MinaAccountValidationExample.ProofsVerified"},{"name":"actualWrapDomainSize","type":"uint8","internalType":"enum MinaAccountValidationExample.ProofsVerified"},{"name":"wrapIndex","type":"tuple","internalType":"struct MinaAccountValidationExample.WrapIndex","components":[{"name":"sigmaComm","type":"tuple[7]","internalType":"struct MinaAccountValidationExample.Commitment[7]","components":[{"name":"x","type":"bytes32","internalType":"bytes32"},{"name":"y","type":"bytes32","internalType":"bytes32"}]},{"name":"coefficientsComm","type":"tuple[15]","internalType":"struct MinaAccountValidationExample.Commitment[15]","components":[{"name":"x","type":"bytes32","internalType":"bytes32"},{"name":"y","type":"bytes32","internalType":"bytes32"}]},{"name":"genericComm","type":"tuple","internalType":"struct MinaAccountValidationExample.Commitment","components":[{"name":"x","type":"bytes32","internalType":"bytes32"},{"name":"y","type":"bytes32","internalType":"bytes32"}]},{"name":"psmComm","type":"tuple","internalType":"struct MinaAccountValidationExample.Commitment","components":[{"name":"x","type":"bytes32","internalType":"bytes32"},{"name":"y","type":"bytes32","internalType":"bytes32"}]},{"name":"completeAddComm","type":"tuple","internalType":"struct MinaAccountValidationExample.Commitment","components":[{"name":"x","type":"bytes32","internalType":"bytes32"},{"name":"y","type":"bytes32","internalType":"bytes32"}]},{"name":"mulComm","type":"tuple","internalType":"struct MinaAccountValidationExample.Commitment","components":[{"name":"x","type":"bytes32","internalType":"bytes32"},{"name":"y","type":"bytes32","internalType":"bytes32"}]},{"name":"emulComm","type":"tuple","internalType":"struct MinaAccountValidationExample.Commitment","components":[{"name":"x","type":"bytes32","internalType":"bytes32"},{"name":"y","type":"bytes32","internalType":"bytes32"}]},{"name":"endomulScalarComm","type":"tuple","internalType":"struct MinaAccountValidationExample.Commitment","components":[{"name":"x","type":"bytes32","internalType":"bytes32"},{"name":"y","type":"bytes32","internalType":"bytes32"}]}]}]},{"name":"zkappVersion","type":"uint32","internalType":"uint32"},{"name":"actionState","type":"bytes32[5]","internalType":"bytes32[5]"},{"name":"lastActionSlot","type":"uint32","internalType":"uint32"},{"name":"provedState","type":"bool","internalType":"bool"},{"name":"zkappUri","type":"bytes","internalType":"bytes"}]}]}],"stateMutability":"view"},{"type":"error","name":"MinaAccountProvingSystemIdIsNotValid","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}]}],"bytecode":{"object":"0x608060405234801561000f575f5ffd5b5060405161214a38038061214a833981810160405281019061003191906100d4565b805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506100ff565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6100a38261007a565b9050919050565b6100b381610099565b81146100bd575f5ffd5b50565b5f815190506100ce816100aa565b92915050565b5f602082840312156100e9576100e8610076565b5b5f6100f6848285016100c0565b91505092915050565b61203e8061010c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c80639029ad1514610038578063c647871314610068575b5f5ffd5b610052600480360381019061004d9190610838565b610098565b60405161005f9190610899565b60405180910390f35b610082600480360381019061007d9190610838565b610221565b60405161008f9190611118565b60405180910390f35b5f7fee2a4bc7db81da2b7164e56b3649b1e2a09c58c455b15dabddd9146c7582cebc5f1b8260200135146101075781602001356040517f182f5efc0000000000000000000000000000000000000000000000000000000081526004016100fe9190611147565b60405180910390fd5b5f828060c00190610118919061116c565b60405161012692919061120a565b604051809103902090505f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306045a91845f01358386602001358760400160208101906101899190611277565b886060013589806080019061019e919061116c565b8b60a001358c60e00160208101906101b691906112fc565b6040518a63ffffffff1660e01b81526004016101da99989796959493929190611399565b602060405180830381865afa1580156101f5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102199190611448565b915050919050565b6102296103f2565b7fee2a4bc7db81da2b7164e56b3649b1e2a09c58c455b15dabddd9146c7582cebc5f1b8260200135146102975781602001356040517f182f5efc00000000000000000000000000000000000000000000000000000000815260040161028e9190611147565b60405180910390fd5b5f828060c001906102a8919061116c565b6040516102b692919061120a565b604051809103902090505f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306045a91855f013584876020013588604001602081019061031a9190611277565b89606001358a806080019061032f919061116c565b8c60a001358d60e001602081019061034791906112fc565b6040518a63ffffffff1660e01b815260040161036b99989796959493929190611399565b602060405180830381865afa158015610386573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103aa9190611448565b905080156103e957838060c001906103c2919061116c565b60289080926103d39392919061147b565b8101906103e09190611fc1565b925050506103ed565b5f5ffd5b919050565b604051806101600160405280610406610475565b81526020015f8152602001606081526020015f67ffffffffffffffff1681526020015f63ffffffff1681526020015f8152602001610442610475565b81526020015f815260200161045561048f565b81526020016104626104e3565b815260200161046f610634565b81525090565b60405180604001604052805f81526020015f151581525090565b6040518060a001604052805f67ffffffffffffffff1681526020015f63ffffffff1681526020015f67ffffffffffffffff1681526020015f63ffffffff1681526020015f67ffffffffffffffff1681525090565b604051806101c001604052805f600481111561050257610501610a1c565b5b81526020015f600481111561051a57610519610a1c565b5b81526020015f600481111561053257610531610a1c565b5b81526020015f600481111561054a57610549610a1c565b5b81526020015f600481111561056257610561610a1c565b5b81526020015f600481111561057a57610579610a1c565b5b81526020015f600481111561059257610591610a1c565b5b81526020015f63ffffffff1681526020015f60048111156105b6576105b5610a1c565b5b81526020015f60048111156105ce576105cd610a1c565b5b81526020015f60048111156105e6576105e5610a1c565b5b81526020015f60048111156105fe576105fd610a1c565b5b81526020015f600481111561061657610615610a1c565b5b81526020015f600481111561062e5761062d610a1c565b5b81525090565b6040518060e0016040528061064761068e565b81526020016106546106b1565b81526020015f63ffffffff16815260200161066d6106fa565b81526020015f63ffffffff1681526020015f15158152602001606081525090565b604051806101000160405280600890602082028036833780820191505090505090565b60405180606001604052805f60028111156106cf576106ce610a1c565b5b81526020015f60028111156106e7576106e6610a1c565b5b81526020016106f461071c565b81525090565b6040518060a00160405280600590602082028036833780820191505090505090565b604051806101000160405280610730610791565b815260200161073d6107be565b815260200161074a6107ec565b81526020016107576107ec565b81526020016107646107ec565b81526020016107716107ec565b815260200161077e6107ec565b815260200161078b6107ec565b81525090565b6040518060e001604052806007905b6107a86107ec565b8152602001906001900390816107a05790505090565b604051806101e00160405280600f905b6107d66107ec565b8152602001906001900390816107ce5790505090565b60405180604001604052805f81526020015f81525090565b5f604051905090565b5f5ffd5b5f5ffd5b5f5ffd5b5f610100828403121561082f5761082e610815565b5b81905092915050565b5f6020828403121561084d5761084c61080d565b5b5f82013567ffffffffffffffff81111561086a57610869610811565b5b61087684828501610819565b91505092915050565b5f8115159050919050565b6108938161087f565b82525050565b5f6020820190506108ac5f83018461088a565b92915050565b5f819050919050565b6108c4816108b2565b82525050565b6108d38161087f565b82525050565b604082015f8201516108ed5f8501826108bb565b50602082015161090060208501826108ca565b50505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61094882610906565b6109528185610910565b9350610962818560208601610920565b61096b8161092e565b840191505092915050565b5f67ffffffffffffffff82169050919050565b61099281610976565b82525050565b5f63ffffffff82169050919050565b6109b081610998565b82525050565b60a082015f8201516109ca5f850182610989565b5060208201516109dd60208501826109a7565b5060408201516109f06040850182610989565b506060820151610a0360608501826109a7565b506080820151610a166080850182610989565b50505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60058110610a5a57610a59610a1c565b5b50565b5f819050610a6a82610a49565b919050565b5f610a7982610a5d565b9050919050565b610a8981610a6f565b82525050565b6101c082015f820151610aa45f850182610a80565b506020820151610ab76020850182610a80565b506040820151610aca6040850182610a80565b506060820151610add6060850182610a80565b506080820151610af06080850182610a80565b5060a0820151610b0360a0850182610a80565b5060c0820151610b1660c0850182610a80565b5060e0820151610b2960e08501826109a7565b50610100820151610b3e610100850182610a80565b50610120820151610b53610120850182610a80565b50610140820151610b68610140850182610a80565b50610160820151610b7d610160850182610a80565b50610180820151610b92610180850182610a80565b506101a0820151610ba76101a0850182610a80565b50505050565b5f60089050919050565b5f81905092915050565b5f819050919050565b5f610bd583836108bb565b60208301905092915050565b5f602082019050919050565b610bf681610bad565b610c008184610bb7565b9250610c0b82610bc1565b805f5b83811015610c3b578151610c228782610bca565b9650610c2d83610be1565b925050600181019050610c0e565b505050505050565b60038110610c5457610c53610a1c565b5b50565b5f819050610c6482610c43565b919050565b5f610c7382610c57565b9050919050565b610c8381610c69565b82525050565b5f60079050919050565b5f81905092915050565b5f819050919050565b604082015f820151610cba5f8501826108bb565b506020820151610ccd60208501826108bb565b50505050565b5f610cde8383610ca6565b60408301905092915050565b5f602082019050919050565b610cff81610c89565b610d098184610c93565b9250610d1482610c9d565b805f5b83811015610d44578151610d2b8782610cd3565b9650610d3683610cea565b925050600181019050610d17565b505050505050565b5f600f9050919050565b5f81905092915050565b5f819050919050565b5f602082019050919050565b610d7e81610d4c565b610d888184610d56565b9250610d9382610d60565b805f5b83811015610dc3578151610daa8782610cd3565b9650610db583610d69565b925050600181019050610d96565b505050505050565b61070082015f820151610de05f850182610cf6565b506020820151610df46101c0850182610d75565b506040820151610e08610580850182610ca6565b506060820151610e1c6105c0850182610ca6565b506080820151610e30610600850182610ca6565b5060a0820151610e44610640850182610ca6565b5060c0820151610e58610680850182610ca6565b5060e0820151610e6c6106c0850182610ca6565b50505050565b61074082015f820151610e875f850182610c7a565b506020820151610e9a6020850182610c7a565b506040820151610ead6040850182610dcb565b50505050565b5f60059050919050565b5f81905092915050565b5f819050919050565b5f602082019050919050565b610ee581610eb3565b610eef8184610ebd565b9250610efa82610ec7565b805f5b83811015610f2a578151610f118782610bca565b9650610f1c83610ed0565b925050600181019050610efd565b505050505050565b5f81519050919050565b5f82825260208201905092915050565b5f610f5682610f32565b610f608185610f3c565b9350610f70818560208601610920565b610f798161092e565b840191505092915050565b5f61096083015f830151610f9a5f860182610bed565b506020830151610fae610100860182610e72565b506040830151610fc26108408601826109a7565b506060830151610fd6610860860182610edc565b506080830151610fea6109008601826109a7565b5060a0830151610ffe6109208601826108ca565b5060c08301518482036109408601526110178282610f4c565b9150508091505092915050565b5f6103c083015f83015161103a5f8601826108d9565b50602083015161104d60408601826108bb565b5060408301518482036060860152611065828261093e565b915050606083015161107a6080860182610989565b50608083015161108d60a08601826109a7565b5060a08301516110a060c08601826108bb565b5060c08301516110b360e08601826108d9565b5060e08301516110c76101208601826108bb565b506101008301516110dc6101408601826109b6565b506101208301516110f16101e0860182610a8f565b506101408301518482036103a086015261110b8282610f84565b9150508091505092915050565b5f6020820190508181035f8301526111308184611024565b905092915050565b611141816108b2565b82525050565b5f60208201905061115a5f830184611138565b92915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f8335600160200384360303811261118857611187611160565b5b80840192508235915067ffffffffffffffff8211156111aa576111a9611164565b5b6020830192506001820236038313156111c6576111c5611168565b5b509250929050565b5f81905092915050565b828183375f83830152505050565b5f6111f183856111ce565b93506111fe8385846111d8565b82840190509392505050565b5f6112168284866111e6565b91508190509392505050565b5f7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b61125681611222565b8114611260575f5ffd5b50565b5f813590506112718161124d565b92915050565b5f6020828403121561128c5761128b61080d565b5b5f61129984828501611263565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6112cb826112a2565b9050919050565b6112db816112c1565b81146112e5575f5ffd5b50565b5f813590506112f6816112d2565b92915050565b5f602082840312156113115761131061080d565b5b5f61131e848285016112e8565b91505092915050565b61133081611222565b82525050565b5f82825260208201905092915050565b5f6113518385611336565b935061135e8385846111d8565b6113678361092e565b840190509392505050565b5f819050919050565b61138481611372565b82525050565b611393816112c1565b82525050565b5f610100820190506113ad5f83018c611138565b6113ba602083018b611138565b6113c7604083018a611138565b6113d46060830189611327565b6113e16080830188611138565b81810360a08301526113f4818688611346565b905061140360c083018561137b565b61141060e083018461138a565b9a9950505050505050505050565b6114278161087f565b8114611431575f5ffd5b50565b5f815190506114428161141e565b92915050565b5f6020828403121561145d5761145c61080d565b5b5f61146a84828501611434565b91505092915050565b5f5ffd5b5f5ffd5b5f5f8585111561148e5761148d611473565b5b8386111561149f5761149e611477565b5b6001850283019150848603905094509492505050565b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6114ef8261092e565b810181811067ffffffffffffffff8211171561150e5761150d6114b9565b5b80604052505050565b5f611520610804565b905061152c82826114e6565b919050565b5f5ffd5b61153e816108b2565b8114611548575f5ffd5b50565b5f8135905061155981611535565b92915050565b5f8135905061156d8161141e565b92915050565b5f60408284031215611588576115876114b5565b5b6115926040611517565b90505f6115a18482850161154b565b5f8301525060206115b48482850161155f565b60208301525092915050565b5f5ffd5b5f5ffd5b5f67ffffffffffffffff8211156115e2576115e16114b9565b5b6115eb8261092e565b9050602081019050919050565b5f61160a611605846115c8565b611517565b905082815260208101848484011115611626576116256115c4565b5b6116318482856111d8565b509392505050565b5f82601f83011261164d5761164c6115c0565b5b813561165d8482602086016115f8565b91505092915050565b61166f81610976565b8114611679575f5ffd5b50565b5f8135905061168a81611666565b92915050565b61169981610998565b81146116a3575f5ffd5b50565b5f813590506116b481611690565b92915050565b5f60a082840312156116cf576116ce6114b5565b5b6116d960a0611517565b90505f6116e88482850161167c565b5f8301525060206116fb848285016116a6565b602083015250604061170f8482850161167c565b6040830152506060611723848285016116a6565b60608301525060806117378482850161167c565b60808301525092915050565b6005811061174f575f5ffd5b50565b5f8135905061176081611743565b92915050565b5f6101c0828403121561177c5761177b6114b5565b5b6117876101c0611517565b90505f61179684828501611752565b5f8301525060206117a984828501611752565b60208301525060406117bd84828501611752565b60408301525060606117d184828501611752565b60608301525060806117e584828501611752565b60808301525060a06117f984828501611752565b60a08301525060c061180d84828501611752565b60c08301525060e0611821848285016116a6565b60e08301525061010061183684828501611752565b6101008301525061012061184c84828501611752565b6101208301525061014061186284828501611752565b6101408301525061016061187884828501611752565b6101608301525061018061188e84828501611752565b610180830152506101a06118a484828501611752565b6101a08301525092915050565b5f67ffffffffffffffff8211156118cb576118ca6114b9565b5b602082029050919050565b5f5ffd5b5f6118ec6118e7846118b1565b611517565b90508060208402830185811115611906576119056118d6565b5b835b8181101561192f578061191b888261154b565b845260208401935050602081019050611908565b5050509392505050565b5f82601f83011261194d5761194c6115c0565b5b600861195a8482856118da565b91505092915050565b6003811061196f575f5ffd5b50565b5f8135905061198081611963565b92915050565b5f67ffffffffffffffff8211156119a05761199f6114b9565b5b602082029050919050565b5f604082840312156119c0576119bf6114b5565b5b6119ca6040611517565b90505f6119d98482850161154b565b5f8301525060206119ec8482850161154b565b60208301525092915050565b5f611a0a611a0584611986565b611517565b90508060408402830185811115611a2457611a236118d6565b5b835b81811015611a4d5780611a3988826119ab565b845260208401935050604081019050611a26565b5050509392505050565b5f82601f830112611a6b57611a6a6115c0565b5b6007611a788482856119f8565b91505092915050565b5f67ffffffffffffffff821115611a9b57611a9a6114b9565b5b602082029050919050565b5f611ab8611ab384611a81565b611517565b90508060408402830185811115611ad257611ad16118d6565b5b835b81811015611afb5780611ae788826119ab565b845260208401935050604081019050611ad4565b5050509392505050565b5f82601f830112611b1957611b186115c0565b5b600f611b26848285611aa6565b91505092915050565b5f6107008284031215611b4557611b446114b5565b5b611b50610100611517565b90505f611b5f84828501611a57565b5f830152506101c0611b7384828501611b05565b602083015250610580611b88848285016119ab565b6040830152506105c0611b9d848285016119ab565b606083015250610600611bb2848285016119ab565b608083015250610640611bc7848285016119ab565b60a083015250610680611bdc848285016119ab565b60c0830152506106c0611bf1848285016119ab565b60e08301525092915050565b5f6107408284031215611c1357611c126114b5565b5b611c1d6060611517565b90505f611c2c84828501611972565b5f830152506020611c3f84828501611972565b6020830152506040611c5384828501611b2f565b60408301525092915050565b5f67ffffffffffffffff821115611c7957611c786114b9565b5b602082029050919050565b5f611c96611c9184611c5f565b611517565b90508060208402830185811115611cb057611caf6118d6565b5b835b81811015611cd95780611cc5888261154b565b845260208401935050602081019050611cb2565b5050509392505050565b5f82601f830112611cf757611cf66115c0565b5b6005611d04848285611c84565b91505092915050565b5f67ffffffffffffffff821115611d2757611d266114b9565b5b611d308261092e565b9050602081019050919050565b5f611d4f611d4a84611d0d565b611517565b905082815260208101848484011115611d6b57611d6a6115c4565b5b611d768482856111d8565b509392505050565b5f82601f830112611d9257611d916115c0565b5b8135611da2848260208601611d3d565b91505092915050565b5f6109608284031215611dc157611dc06114b5565b5b611dcb60e0611517565b90505f611dda84828501611939565b5f83015250610100611dee84828501611bfd565b602083015250610840611e03848285016116a6565b604083015250610860611e1884828501611ce3565b606083015250610900611e2d848285016116a6565b608083015250610920611e428482850161155f565b60a08301525061094082013567ffffffffffffffff811115611e6757611e66611531565b5b611e7384828501611d7e565b60c08301525092915050565b5f6103c08284031215611e9557611e946114b5565b5b611ea0610160611517565b90505f611eaf84828501611573565b5f830152506040611ec28482850161154b565b602083015250606082013567ffffffffffffffff811115611ee657611ee5611531565b5b611ef284828501611639565b6040830152506080611f068482850161167c565b60608301525060a0611f1a848285016116a6565b60808301525060c0611f2e8482850161154b565b60a08301525060e0611f4284828501611573565b60c083015250610120611f578482850161154b565b60e083015250610140611f6c848285016116ba565b610100830152506101e0611f8284828501611766565b610120830152506103a082013567ffffffffffffffff811115611fa857611fa7611531565b5b611fb484828501611dab565b6101408301525092915050565b5f60208284031215611fd657611fd561080d565b5b5f82013567ffffffffffffffff811115611ff357611ff2610811565b5b611fff84828501611e7f565b9150509291505056fea2646970667358221220c3d4b57cad12413f000b4d57dbee680929e8a94338fdd5794252be60d659d82664736f6c634300081c0033","sourceMap":"350:4428:39:-:0;;;1002:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1098:19;1061:7;;:57;;;;;;;;;;;;;;;;;;1002:123;350:4428;;88:117:40;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:104::-;511:7;540:24;558:5;540:24;:::i;:::-;529:35;;466:104;;;:::o;576:138::-;657:32;683:5;657:32;:::i;:::-;650:5;647:43;637:71;;704:1;701;694:12;637:71;576:138;:::o;720:159::-;785:5;816:6;810:13;801:22;;832:41;867:5;832:41;:::i;:::-;720:159;;;;:::o;885:367::-;963:6;1012:2;1000:9;991:7;987:23;983:32;980:119;;;1018:79;;:::i;:::-;980:119;1138:1;1163:72;1227:7;1218:6;1207:9;1203:22;1163:72;:::i;:::-;1153:82;;1109:136;885:367;;;;:::o;350:4428:39:-;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f5ffd5b5060043610610034575f3560e01c80639029ad1514610038578063c647871314610068575b5f5ffd5b610052600480360381019061004d9190610838565b610098565b60405161005f9190610899565b60405180910390f35b610082600480360381019061007d9190610838565b610221565b60405161008f9190611118565b60405180910390f35b5f7fee2a4bc7db81da2b7164e56b3649b1e2a09c58c455b15dabddd9146c7582cebc5f1b8260200135146101075781602001356040517f182f5efc0000000000000000000000000000000000000000000000000000000081526004016100fe9190611147565b60405180910390fd5b5f828060c00190610118919061116c565b60405161012692919061120a565b604051809103902090505f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306045a91845f01358386602001358760400160208101906101899190611277565b886060013589806080019061019e919061116c565b8b60a001358c60e00160208101906101b691906112fc565b6040518a63ffffffff1660e01b81526004016101da99989796959493929190611399565b602060405180830381865afa1580156101f5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102199190611448565b915050919050565b6102296103f2565b7fee2a4bc7db81da2b7164e56b3649b1e2a09c58c455b15dabddd9146c7582cebc5f1b8260200135146102975781602001356040517f182f5efc00000000000000000000000000000000000000000000000000000000815260040161028e9190611147565b60405180910390fd5b5f828060c001906102a8919061116c565b6040516102b692919061120a565b604051809103902090505f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306045a91855f013584876020013588604001602081019061031a9190611277565b89606001358a806080019061032f919061116c565b8c60a001358d60e001602081019061034791906112fc565b6040518a63ffffffff1660e01b815260040161036b99989796959493929190611399565b602060405180830381865afa158015610386573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103aa9190611448565b905080156103e957838060c001906103c2919061116c565b60289080926103d39392919061147b565b8101906103e09190611fc1565b925050506103ed565b5f5ffd5b919050565b604051806101600160405280610406610475565b81526020015f8152602001606081526020015f67ffffffffffffffff1681526020015f63ffffffff1681526020015f8152602001610442610475565b81526020015f815260200161045561048f565b81526020016104626104e3565b815260200161046f610634565b81525090565b60405180604001604052805f81526020015f151581525090565b6040518060a001604052805f67ffffffffffffffff1681526020015f63ffffffff1681526020015f67ffffffffffffffff1681526020015f63ffffffff1681526020015f67ffffffffffffffff1681525090565b604051806101c001604052805f600481111561050257610501610a1c565b5b81526020015f600481111561051a57610519610a1c565b5b81526020015f600481111561053257610531610a1c565b5b81526020015f600481111561054a57610549610a1c565b5b81526020015f600481111561056257610561610a1c565b5b81526020015f600481111561057a57610579610a1c565b5b81526020015f600481111561059257610591610a1c565b5b81526020015f63ffffffff1681526020015f60048111156105b6576105b5610a1c565b5b81526020015f60048111156105ce576105cd610a1c565b5b81526020015f60048111156105e6576105e5610a1c565b5b81526020015f60048111156105fe576105fd610a1c565b5b81526020015f600481111561061657610615610a1c565b5b81526020015f600481111561062e5761062d610a1c565b5b81525090565b6040518060e0016040528061064761068e565b81526020016106546106b1565b81526020015f63ffffffff16815260200161066d6106fa565b81526020015f63ffffffff1681526020015f15158152602001606081525090565b604051806101000160405280600890602082028036833780820191505090505090565b60405180606001604052805f60028111156106cf576106ce610a1c565b5b81526020015f60028111156106e7576106e6610a1c565b5b81526020016106f461071c565b81525090565b6040518060a00160405280600590602082028036833780820191505090505090565b604051806101000160405280610730610791565b815260200161073d6107be565b815260200161074a6107ec565b81526020016107576107ec565b81526020016107646107ec565b81526020016107716107ec565b815260200161077e6107ec565b815260200161078b6107ec565b81525090565b6040518060e001604052806007905b6107a86107ec565b8152602001906001900390816107a05790505090565b604051806101e00160405280600f905b6107d66107ec565b8152602001906001900390816107ce5790505090565b60405180604001604052805f81526020015f81525090565b5f604051905090565b5f5ffd5b5f5ffd5b5f5ffd5b5f610100828403121561082f5761082e610815565b5b81905092915050565b5f6020828403121561084d5761084c61080d565b5b5f82013567ffffffffffffffff81111561086a57610869610811565b5b61087684828501610819565b91505092915050565b5f8115159050919050565b6108938161087f565b82525050565b5f6020820190506108ac5f83018461088a565b92915050565b5f819050919050565b6108c4816108b2565b82525050565b6108d38161087f565b82525050565b604082015f8201516108ed5f8501826108bb565b50602082015161090060208501826108ca565b50505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61094882610906565b6109528185610910565b9350610962818560208601610920565b61096b8161092e565b840191505092915050565b5f67ffffffffffffffff82169050919050565b61099281610976565b82525050565b5f63ffffffff82169050919050565b6109b081610998565b82525050565b60a082015f8201516109ca5f850182610989565b5060208201516109dd60208501826109a7565b5060408201516109f06040850182610989565b506060820151610a0360608501826109a7565b506080820151610a166080850182610989565b50505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60058110610a5a57610a59610a1c565b5b50565b5f819050610a6a82610a49565b919050565b5f610a7982610a5d565b9050919050565b610a8981610a6f565b82525050565b6101c082015f820151610aa45f850182610a80565b506020820151610ab76020850182610a80565b506040820151610aca6040850182610a80565b506060820151610add6060850182610a80565b506080820151610af06080850182610a80565b5060a0820151610b0360a0850182610a80565b5060c0820151610b1660c0850182610a80565b5060e0820151610b2960e08501826109a7565b50610100820151610b3e610100850182610a80565b50610120820151610b53610120850182610a80565b50610140820151610b68610140850182610a80565b50610160820151610b7d610160850182610a80565b50610180820151610b92610180850182610a80565b506101a0820151610ba76101a0850182610a80565b50505050565b5f60089050919050565b5f81905092915050565b5f819050919050565b5f610bd583836108bb565b60208301905092915050565b5f602082019050919050565b610bf681610bad565b610c008184610bb7565b9250610c0b82610bc1565b805f5b83811015610c3b578151610c228782610bca565b9650610c2d83610be1565b925050600181019050610c0e565b505050505050565b60038110610c5457610c53610a1c565b5b50565b5f819050610c6482610c43565b919050565b5f610c7382610c57565b9050919050565b610c8381610c69565b82525050565b5f60079050919050565b5f81905092915050565b5f819050919050565b604082015f820151610cba5f8501826108bb565b506020820151610ccd60208501826108bb565b50505050565b5f610cde8383610ca6565b60408301905092915050565b5f602082019050919050565b610cff81610c89565b610d098184610c93565b9250610d1482610c9d565b805f5b83811015610d44578151610d2b8782610cd3565b9650610d3683610cea565b925050600181019050610d17565b505050505050565b5f600f9050919050565b5f81905092915050565b5f819050919050565b5f602082019050919050565b610d7e81610d4c565b610d888184610d56565b9250610d9382610d60565b805f5b83811015610dc3578151610daa8782610cd3565b9650610db583610d69565b925050600181019050610d96565b505050505050565b61070082015f820151610de05f850182610cf6565b506020820151610df46101c0850182610d75565b506040820151610e08610580850182610ca6565b506060820151610e1c6105c0850182610ca6565b506080820151610e30610600850182610ca6565b5060a0820151610e44610640850182610ca6565b5060c0820151610e58610680850182610ca6565b5060e0820151610e6c6106c0850182610ca6565b50505050565b61074082015f820151610e875f850182610c7a565b506020820151610e9a6020850182610c7a565b506040820151610ead6040850182610dcb565b50505050565b5f60059050919050565b5f81905092915050565b5f819050919050565b5f602082019050919050565b610ee581610eb3565b610eef8184610ebd565b9250610efa82610ec7565b805f5b83811015610f2a578151610f118782610bca565b9650610f1c83610ed0565b925050600181019050610efd565b505050505050565b5f81519050919050565b5f82825260208201905092915050565b5f610f5682610f32565b610f608185610f3c565b9350610f70818560208601610920565b610f798161092e565b840191505092915050565b5f61096083015f830151610f9a5f860182610bed565b506020830151610fae610100860182610e72565b506040830151610fc26108408601826109a7565b506060830151610fd6610860860182610edc565b506080830151610fea6109008601826109a7565b5060a0830151610ffe6109208601826108ca565b5060c08301518482036109408601526110178282610f4c565b9150508091505092915050565b5f6103c083015f83015161103a5f8601826108d9565b50602083015161104d60408601826108bb565b5060408301518482036060860152611065828261093e565b915050606083015161107a6080860182610989565b50608083015161108d60a08601826109a7565b5060a08301516110a060c08601826108bb565b5060c08301516110b360e08601826108d9565b5060e08301516110c76101208601826108bb565b506101008301516110dc6101408601826109b6565b506101208301516110f16101e0860182610a8f565b506101408301518482036103a086015261110b8282610f84565b9150508091505092915050565b5f6020820190508181035f8301526111308184611024565b905092915050565b611141816108b2565b82525050565b5f60208201905061115a5f830184611138565b92915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f8335600160200384360303811261118857611187611160565b5b80840192508235915067ffffffffffffffff8211156111aa576111a9611164565b5b6020830192506001820236038313156111c6576111c5611168565b5b509250929050565b5f81905092915050565b828183375f83830152505050565b5f6111f183856111ce565b93506111fe8385846111d8565b82840190509392505050565b5f6112168284866111e6565b91508190509392505050565b5f7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b61125681611222565b8114611260575f5ffd5b50565b5f813590506112718161124d565b92915050565b5f6020828403121561128c5761128b61080d565b5b5f61129984828501611263565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6112cb826112a2565b9050919050565b6112db816112c1565b81146112e5575f5ffd5b50565b5f813590506112f6816112d2565b92915050565b5f602082840312156113115761131061080d565b5b5f61131e848285016112e8565b91505092915050565b61133081611222565b82525050565b5f82825260208201905092915050565b5f6113518385611336565b935061135e8385846111d8565b6113678361092e565b840190509392505050565b5f819050919050565b61138481611372565b82525050565b611393816112c1565b82525050565b5f610100820190506113ad5f83018c611138565b6113ba602083018b611138565b6113c7604083018a611138565b6113d46060830189611327565b6113e16080830188611138565b81810360a08301526113f4818688611346565b905061140360c083018561137b565b61141060e083018461138a565b9a9950505050505050505050565b6114278161087f565b8114611431575f5ffd5b50565b5f815190506114428161141e565b92915050565b5f6020828403121561145d5761145c61080d565b5b5f61146a84828501611434565b91505092915050565b5f5ffd5b5f5ffd5b5f5f8585111561148e5761148d611473565b5b8386111561149f5761149e611477565b5b6001850283019150848603905094509492505050565b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6114ef8261092e565b810181811067ffffffffffffffff8211171561150e5761150d6114b9565b5b80604052505050565b5f611520610804565b905061152c82826114e6565b919050565b5f5ffd5b61153e816108b2565b8114611548575f5ffd5b50565b5f8135905061155981611535565b92915050565b5f8135905061156d8161141e565b92915050565b5f60408284031215611588576115876114b5565b5b6115926040611517565b90505f6115a18482850161154b565b5f8301525060206115b48482850161155f565b60208301525092915050565b5f5ffd5b5f5ffd5b5f67ffffffffffffffff8211156115e2576115e16114b9565b5b6115eb8261092e565b9050602081019050919050565b5f61160a611605846115c8565b611517565b905082815260208101848484011115611626576116256115c4565b5b6116318482856111d8565b509392505050565b5f82601f83011261164d5761164c6115c0565b5b813561165d8482602086016115f8565b91505092915050565b61166f81610976565b8114611679575f5ffd5b50565b5f8135905061168a81611666565b92915050565b61169981610998565b81146116a3575f5ffd5b50565b5f813590506116b481611690565b92915050565b5f60a082840312156116cf576116ce6114b5565b5b6116d960a0611517565b90505f6116e88482850161167c565b5f8301525060206116fb848285016116a6565b602083015250604061170f8482850161167c565b6040830152506060611723848285016116a6565b60608301525060806117378482850161167c565b60808301525092915050565b6005811061174f575f5ffd5b50565b5f8135905061176081611743565b92915050565b5f6101c0828403121561177c5761177b6114b5565b5b6117876101c0611517565b90505f61179684828501611752565b5f8301525060206117a984828501611752565b60208301525060406117bd84828501611752565b60408301525060606117d184828501611752565b60608301525060806117e584828501611752565b60808301525060a06117f984828501611752565b60a08301525060c061180d84828501611752565b60c08301525060e0611821848285016116a6565b60e08301525061010061183684828501611752565b6101008301525061012061184c84828501611752565b6101208301525061014061186284828501611752565b6101408301525061016061187884828501611752565b6101608301525061018061188e84828501611752565b610180830152506101a06118a484828501611752565b6101a08301525092915050565b5f67ffffffffffffffff8211156118cb576118ca6114b9565b5b602082029050919050565b5f5ffd5b5f6118ec6118e7846118b1565b611517565b90508060208402830185811115611906576119056118d6565b5b835b8181101561192f578061191b888261154b565b845260208401935050602081019050611908565b5050509392505050565b5f82601f83011261194d5761194c6115c0565b5b600861195a8482856118da565b91505092915050565b6003811061196f575f5ffd5b50565b5f8135905061198081611963565b92915050565b5f67ffffffffffffffff8211156119a05761199f6114b9565b5b602082029050919050565b5f604082840312156119c0576119bf6114b5565b5b6119ca6040611517565b90505f6119d98482850161154b565b5f8301525060206119ec8482850161154b565b60208301525092915050565b5f611a0a611a0584611986565b611517565b90508060408402830185811115611a2457611a236118d6565b5b835b81811015611a4d5780611a3988826119ab565b845260208401935050604081019050611a26565b5050509392505050565b5f82601f830112611a6b57611a6a6115c0565b5b6007611a788482856119f8565b91505092915050565b5f67ffffffffffffffff821115611a9b57611a9a6114b9565b5b602082029050919050565b5f611ab8611ab384611a81565b611517565b90508060408402830185811115611ad257611ad16118d6565b5b835b81811015611afb5780611ae788826119ab565b845260208401935050604081019050611ad4565b5050509392505050565b5f82601f830112611b1957611b186115c0565b5b600f611b26848285611aa6565b91505092915050565b5f6107008284031215611b4557611b446114b5565b5b611b50610100611517565b90505f611b5f84828501611a57565b5f830152506101c0611b7384828501611b05565b602083015250610580611b88848285016119ab565b6040830152506105c0611b9d848285016119ab565b606083015250610600611bb2848285016119ab565b608083015250610640611bc7848285016119ab565b60a083015250610680611bdc848285016119ab565b60c0830152506106c0611bf1848285016119ab565b60e08301525092915050565b5f6107408284031215611c1357611c126114b5565b5b611c1d6060611517565b90505f611c2c84828501611972565b5f830152506020611c3f84828501611972565b6020830152506040611c5384828501611b2f565b60408301525092915050565b5f67ffffffffffffffff821115611c7957611c786114b9565b5b602082029050919050565b5f611c96611c9184611c5f565b611517565b90508060208402830185811115611cb057611caf6118d6565b5b835b81811015611cd95780611cc5888261154b565b845260208401935050602081019050611cb2565b5050509392505050565b5f82601f830112611cf757611cf66115c0565b5b6005611d04848285611c84565b91505092915050565b5f67ffffffffffffffff821115611d2757611d266114b9565b5b611d308261092e565b9050602081019050919050565b5f611d4f611d4a84611d0d565b611517565b905082815260208101848484011115611d6b57611d6a6115c4565b5b611d768482856111d8565b509392505050565b5f82601f830112611d9257611d916115c0565b5b8135611da2848260208601611d3d565b91505092915050565b5f6109608284031215611dc157611dc06114b5565b5b611dcb60e0611517565b90505f611dda84828501611939565b5f83015250610100611dee84828501611bfd565b602083015250610840611e03848285016116a6565b604083015250610860611e1884828501611ce3565b606083015250610900611e2d848285016116a6565b608083015250610920611e428482850161155f565b60a08301525061094082013567ffffffffffffffff811115611e6757611e66611531565b5b611e7384828501611d7e565b60c08301525092915050565b5f6103c08284031215611e9557611e946114b5565b5b611ea0610160611517565b90505f611eaf84828501611573565b5f830152506040611ec28482850161154b565b602083015250606082013567ffffffffffffffff811115611ee657611ee5611531565b5b611ef284828501611639565b6040830152506080611f068482850161167c565b60608301525060a0611f1a848285016116a6565b60808301525060c0611f2e8482850161154b565b60a08301525060e0611f4284828501611573565b60c083015250610120611f578482850161154b565b60e083015250610140611f6c848285016116ba565b610100830152506101e0611f8284828501611766565b610120830152506103a082013567ffffffffffffffff811115611fa857611fa7611531565b5b611fb484828501611dab565b6101408301525092915050565b5f60208284031215611fd657611fd561080d565b5b5f82013567ffffffffffffffff811115611ff357611ff2610811565b5b611fff84828501611e7f565b9150509291505056fea2646970667358221220c3d4b57cad12413f000b4d57dbee680929e8a94338fdd5794252be60d659d82664736f6c634300081c0033","sourceMap":"350:4428:39:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1131:690;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1827:876;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1131:690;1206:4;502:66;1265:22;;1226:4;:35;;;:61;1222:172;;1347:4;:35;;;1310:73;;;;;;;;;;;:::i;:::-;;;;;;;;1222:172;1404:26;1443:4;:13;;;;;;;;:::i;:::-;1433:24;;;;;;;:::i;:::-;;;;;;;;1404:53;;1475:7;;;;;;;;;;;:28;;;1517:4;:20;;;1551:18;1583:4;:35;;;1632:4;:23;;;;;;;;;;:::i;:::-;1669:4;:20;;;1703:4;:16;;;;;;;;:::i;:::-;1733:4;:31;;;1778:4;:26;;;;;;;;;;:::i;:::-;1475:339;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1468:346;;;1131:690;;;:::o;1827:876::-;1911:14;;:::i;:::-;502:66;1980:22;;1941:4;:35;;;:61;1937:172;;2062:4;:35;;;2025:73;;;;;;;;;;;:::i;:::-;;;;;;;;1937:172;2119:26;2158:4;:13;;;;;;;;:::i;:::-;2148:24;;;;;;;:::i;:::-;;;;;;;;2119:53;;2183:22;2208:7;;;;;;;;;;;:28;;;2250:4;:20;;;2284:18;2316:4;:35;;;2365:4;:23;;;;;;;;;;:::i;:::-;2402:4;:20;;;2436:4;:16;;;;;;;;:::i;:::-;2466:4;:31;;;2511:4;:26;;;;;;;;;;:::i;:::-;2208:339;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2183:364;;2562:17;2558:139;;;2613:4;:13;;;;;;;;:::i;:::-;2627:6;2613:22;;;;;;;;;:::i;:::-;2602:45;;;;;;;:::i;:::-;2595:52;;;;;;2558:139;2678:8;;;1827:876;;;;:::o;-1:-1:-1:-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;7:75:40:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;512:236;589:5;630:3;621:6;616:3;612:16;608:26;605:113;;;637:79;;:::i;:::-;605:113;736:6;727:15;;512:236;;;;:::o;754:551::-;844:6;893:2;881:9;872:7;868:23;864:32;861:119;;;899:79;;:::i;:::-;861:119;1047:1;1036:9;1032:17;1019:31;1077:18;1069:6;1066:30;1063:117;;;1099:79;;:::i;:::-;1063:117;1204:84;1280:7;1271:6;1260:9;1256:22;1204:84;:::i;:::-;1194:94;;990:308;754:551;;;;:::o;1311:90::-;1345:7;1388:5;1381:13;1374:21;1363:32;;1311:90;;;:::o;1407:109::-;1488:21;1503:5;1488:21;:::i;:::-;1483:3;1476:34;1407:109;;:::o;1522:210::-;1609:4;1647:2;1636:9;1632:18;1624:26;;1660:65;1722:1;1711:9;1707:17;1698:6;1660:65;:::i;:::-;1522:210;;;;:::o;1738:77::-;1775:7;1804:5;1793:16;;1738:77;;;:::o;1821:108::-;1898:24;1916:5;1898:24;:::i;:::-;1893:3;1886:37;1821:108;;:::o;1935:99::-;2006:21;2021:5;2006:21;:::i;:::-;2001:3;1994:34;1935:99;;:::o;2158:509::-;2315:4;2310:3;2306:14;2399:4;2392:5;2388:16;2382:23;2418:63;2475:4;2470:3;2466:14;2452:12;2418:63;:::i;:::-;2330:161;2574:4;2567:5;2563:16;2557:23;2593:57;2644:4;2639:3;2635:14;2621:12;2593:57;:::i;:::-;2501:159;2284:383;2158:509;;:::o;2673:99::-;2725:6;2759:5;2753:12;2743:22;;2673:99;;;:::o;2778:159::-;2852:11;2886:6;2881:3;2874:19;2926:4;2921:3;2917:14;2902:29;;2778:159;;;;:::o;2943:139::-;3032:6;3027:3;3022;3016:23;3073:1;3064:6;3059:3;3055:16;3048:27;2943:139;;;:::o;3088:102::-;3129:6;3180:2;3176:7;3171:2;3164:5;3160:14;3156:28;3146:38;;3088:102;;;:::o;3196:357::-;3274:3;3302:39;3335:5;3302:39;:::i;:::-;3357:61;3411:6;3406:3;3357:61;:::i;:::-;3350:68;;3427:65;3485:6;3480:3;3473:4;3466:5;3462:16;3427:65;:::i;:::-;3517:29;3539:6;3517:29;:::i;:::-;3512:3;3508:39;3501:46;;3278:275;3196:357;;;;:::o;3559:101::-;3595:7;3635:18;3628:5;3624:30;3613:41;;3559:101;;;:::o;3666:105::-;3741:23;3758:5;3741:23;:::i;:::-;3736:3;3729:36;3666:105;;:::o;3777:93::-;3813:7;3853:10;3846:5;3842:22;3831:33;;3777:93;;;:::o;3876:105::-;3951:23;3968:5;3951:23;:::i;:::-;3946:3;3939:36;3876:105;;:::o;4083:1057::-;4218:4;4213:3;4209:14;4322:4;4315:5;4311:16;4305:23;4341:61;4396:4;4391:3;4387:14;4373:12;4341:61;:::i;:::-;4233:179;4499:4;4492:5;4488:16;4482:23;4518:61;4573:4;4568:3;4564:14;4550:12;4518:61;:::i;:::-;4422:167;4678:4;4671:5;4667:16;4661:23;4697:61;4752:4;4747:3;4743:14;4729:12;4697:61;:::i;:::-;4599:169;4859:4;4852:5;4848:16;4842:23;4878:61;4933:4;4928:3;4924:14;4910:12;4878:61;:::i;:::-;4778:171;5043:4;5036:5;5032:16;5026:23;5062:61;5117:4;5112:3;5108:14;5094:12;5062:61;:::i;:::-;4959:174;4187:953;4083:1057;;:::o;5146:180::-;5194:77;5191:1;5184:88;5291:4;5288:1;5281:15;5315:4;5312:1;5305:15;5332:122;5422:1;5415:5;5412:12;5402:46;;5428:18;;:::i;:::-;5402:46;5332:122;:::o;5460:145::-;5514:7;5543:5;5532:16;;5549:50;5593:5;5549:50;:::i;:::-;5460:145;;;:::o;5611:::-;5676:9;5709:41;5744:5;5709:41;:::i;:::-;5696:54;;5611:145;;;:::o;5762:151::-;5854:52;5900:5;5854:52;:::i;:::-;5849:3;5842:65;5762:151;;:::o;6025:2927::-;6170:6;6165:3;6161:16;6264:4;6257:5;6253:16;6247:23;6283:78;6355:4;6350:3;6346:14;6332:12;6283:78;:::i;:::-;6187:184;6455:4;6448:5;6444:16;6438:23;6474:78;6546:4;6541:3;6537:14;6523:12;6474:78;:::i;:::-;6381:181;6644:4;6637:5;6633:16;6627:23;6663:78;6735:4;6730:3;6726:14;6712:12;6663:78;:::i;:::-;6572:179;6837:4;6830:5;6826:16;6820:23;6856:78;6928:4;6923:3;6919:14;6905:12;6856:78;:::i;:::-;6761:183;7033:4;7026:5;7022:16;7016:23;7052:78;7124:4;7119:3;7115:14;7101:12;7052:78;:::i;:::-;6954:186;7232:4;7225:5;7221:16;7215:23;7251:78;7323:4;7318:3;7314:14;7300:12;7251:78;:::i;:::-;7150:189;7439:4;7432:5;7428:16;7422:23;7458:78;7530:4;7525:3;7521:14;7507:12;7458:78;:::i;:::-;7349:197;7646:4;7639:5;7635:16;7629:23;7665:61;7720:4;7715:3;7711:14;7697:12;7665:61;:::i;:::-;7556:180;7825:6;7818:5;7814:18;7808:25;7846:80;7918:6;7913:3;7909:16;7895:12;7846:80;:::i;:::-;7746:190;8029:6;8022:5;8018:18;8012:25;8050:80;8122:6;8117:3;8113:16;8099:12;8050:80;:::i;:::-;7946:194;8232:6;8225:5;8221:18;8215:25;8253:80;8325:6;8320:3;8316:16;8302:12;8253:80;:::i;:::-;8150:193;8435:6;8428:5;8424:18;8418:25;8456:80;8528:6;8523:3;8519:16;8505:12;8456:80;:::i;:::-;8353:193;8636:6;8629:5;8625:18;8619:25;8657:80;8729:6;8724:3;8720:16;8706:12;8657:80;:::i;:::-;8556:191;8834:6;8827:5;8823:18;8817:25;8855:80;8927:6;8922:3;8918:16;8904:12;8855:80;:::i;:::-;8757:188;6139:2813;6025:2927;;:::o;8958:104::-;9023:6;9051:4;9041:14;;8958:104;;;:::o;9068:133::-;9155:11;9192:3;9177:18;;9068:133;;;;:::o;9207:98::-;9272:4;9295:3;9287:11;;9207:98;;;:::o;9311:179::-;9380:10;9401:46;9443:3;9435:6;9401:46;:::i;:::-;9479:4;9474:3;9470:14;9456:28;;9311:179;;;;:::o;9496:111::-;9564:4;9596;9591:3;9587:14;9579:22;;9496:111;;;:::o;9645:674::-;9771:52;9817:5;9771:52;:::i;:::-;9839:74;9906:6;9901:3;9839:74;:::i;:::-;9832:81;;9937:54;9985:5;9937:54;:::i;:::-;10014:7;10045:1;10030:282;10055:6;10052:1;10049:13;10030:282;;;10131:6;10125:13;10158:63;10217:3;10202:13;10158:63;:::i;:::-;10151:70;;10244:58;10295:6;10244:58;:::i;:::-;10234:68;;10090:222;10077:1;10074;10070:9;10065:14;;10030:282;;;10034:14;9747:572;;;9645:674;;:::o;10325:124::-;10417:1;10410:5;10407:12;10397:46;;10423:18;;:::i;:::-;10397:46;10325:124;:::o;10455:149::-;10511:7;10540:5;10529:16;;10546:52;10592:5;10546:52;:::i;:::-;10455:149;;;:::o;10610:::-;10677:9;10710:43;10747:5;10710:43;:::i;:::-;10697:56;;10610:149;;;:::o;10765:155::-;10859:54;10907:5;10859:54;:::i;:::-;10854:3;10847:67;10765:155;;:::o;10926:132::-;11019:6;11047:4;11037:14;;10926:132;;;:::o;11064:161::-;11179:11;11216:3;11201:18;;11064:161;;;;:::o;11231:126::-;11324:4;11347:3;11339:11;;11231:126;;;:::o;11467:497::-;11610:4;11605:3;11601:14;11694:4;11687:5;11683:16;11677:23;11713:63;11770:4;11765:3;11761:14;11747:12;11713:63;:::i;:::-;11625:161;11865:4;11858:5;11854:16;11848:23;11884:63;11941:4;11936:3;11932:14;11918:12;11884:63;:::i;:::-;11796:161;11579:385;11467:497;;:::o;11970:291::-;12095:10;12116:102;12214:3;12206:6;12116:102;:::i;:::-;12250:4;12245:3;12241:14;12227:28;;11970:291;;;;:::o;12267:139::-;12363:4;12395;12390:3;12386:14;12378:22;;12267:139;;;:::o;12522:898::-;12704:80;12778:5;12704:80;:::i;:::-;12800:102;12895:6;12890:3;12800:102;:::i;:::-;12793:109;;12926:82;13002:5;12926:82;:::i;:::-;13031:7;13062:1;13047:366;13072:6;13069:1;13066:13;13047:366;;;13148:6;13142:13;13175:119;13290:3;13275:13;13175:119;:::i;:::-;13168:126;;13317:86;13396:6;13317:86;:::i;:::-;13307:96;;13107:306;13094:1;13091;13087:9;13082:14;;13047:366;;;13051:14;12680:740;;;12522:898;;:::o;13426:133::-;13520:6;13548:4;13538:14;;13426:133;;;:::o;13565:162::-;13681:11;13718:3;13703:18;;13565:162;;;;:::o;13733:127::-;13827:4;13850:3;13842:11;;13733:127;;;:::o;13866:140::-;13963:4;13995;13990:3;13986:14;13978:22;;13866:140;;;:::o;14124:904::-;14308:81;14383:5;14308:81;:::i;:::-;14405:103;14501:6;14496:3;14405:103;:::i;:::-;14398:110;;14532:83;14609:5;14532:83;:::i;:::-;14638:7;14669:1;14654:367;14679:6;14676:1;14673:13;14654:367;;;14755:6;14749:13;14782:119;14897:3;14882:13;14782:119;:::i;:::-;14775:126;;14924:87;15004:6;14924:87;:::i;:::-;14914:97;;14714:307;14701:1;14698;14694:9;14689:14;;14654:367;;;14658:14;14284:744;;;14124:904;;:::o;15136:2161::-;15277:6;15272:3;15268:16;15371:4;15364:5;15360:16;15354:23;15390:165;15549:4;15544:3;15540:14;15526:12;15390:165;:::i;:::-;15294:271;15659:4;15652:5;15648:16;15642:23;15678:169;15839:6;15834:3;15830:16;15816:12;15678:169;:::i;:::-;15575:282;15946:4;15939:5;15935:16;15929:23;15965:121;16078:6;16073:3;16069:16;16055:12;15965:121;:::i;:::-;15867:229;16181:4;16174:5;16170:16;16164:23;16200:121;16313:6;16308:3;16304:16;16290:12;16200:121;:::i;:::-;16106:225;16424:4;16417:5;16413:16;16407:23;16443:121;16556:6;16551:3;16547:16;16533:12;16443:121;:::i;:::-;16341:233;16659:4;16652:5;16648:16;16642:23;16678:121;16791:6;16786:3;16782:16;16768:12;16678:121;:::i;:::-;16584:225;16895:4;16888:5;16884:16;16878:23;16914:121;17027:6;17022:3;17018:16;17004:12;16914:121;:::i;:::-;16819:226;17140:4;17133:5;17129:16;17123:23;17159:121;17272:6;17267:3;17263:16;17249:12;17159:121;:::i;:::-;17055:235;15246:2051;15136:2161;;:::o;17417:811::-;17570:6;17565:3;17561:16;17672:4;17665:5;17661:16;17655:23;17691:80;17765:4;17760:3;17756:14;17742:12;17691:80;:::i;:::-;17587:194;17879:4;17872:5;17868:16;17862:23;17898:80;17972:4;17967:3;17963:14;17949:12;17898:80;:::i;:::-;17791:197;18075:4;18068:5;18064:16;18058:23;18094:117;18205:4;18200:3;18196:14;18182:12;18094:117;:::i;:::-;17998:223;17539:689;17417:811;;:::o;18234:104::-;18299:6;18327:4;18317:14;;18234:104;;;:::o;18344:133::-;18431:11;18468:3;18453:18;;18344:133;;;;:::o;18483:98::-;18548:4;18571:3;18563:11;;18483:98;;;:::o;18587:111::-;18655:4;18687;18682:3;18678:14;18670:22;;18587:111;;;:::o;18736:674::-;18862:52;18908:5;18862:52;:::i;:::-;18930:74;18997:6;18992:3;18930:74;:::i;:::-;18923:81;;19028:54;19076:5;19028:54;:::i;:::-;19105:7;19136:1;19121:282;19146:6;19143:1;19140:13;19121:282;;;19222:6;19216:13;19249:63;19308:3;19293:13;19249:63;:::i;:::-;19242:70;;19335:58;19386:6;19335:58;:::i;:::-;19325:68;;19181:222;19168:1;19165;19161:9;19156:14;;19121:282;;;19125:14;18838:572;;;18736:674;;:::o;19416:98::-;19467:6;19501:5;19495:12;19485:22;;19416:98;;;:::o;19520:158::-;19593:11;19627:6;19622:3;19615:19;19667:4;19662:3;19658:14;19643:29;;19520:158;;;;:::o;19684:353::-;19760:3;19788:38;19820:5;19788:38;:::i;:::-;19842:60;19895:6;19890:3;19842:60;:::i;:::-;19835:67;;19911:65;19969:6;19964:3;19957:4;19950:5;19946:16;19911:65;:::i;:::-;20001:29;20023:6;20001:29;:::i;:::-;19996:3;19992:39;19985:46;;19764:273;19684:353;;;;:::o;20151:1687::-;20270:3;20306:6;20301:3;20297:16;20399:4;20392:5;20388:16;20382:23;20418:109;20521:4;20516:3;20512:14;20498:12;20418:109;:::i;:::-;20323:214;20630:4;20623:5;20619:16;20613:23;20649:131;20772:6;20767:3;20763:16;20749:12;20649:131;:::i;:::-;20547:243;20880:4;20873:5;20869:16;20863:23;20899:63;20954:6;20949:3;20945:16;20931:12;20899:63;:::i;:::-;20800:172;21061:4;21054:5;21050:16;21044:23;21080:111;21183:6;21178:3;21174:16;21160:12;21080:111;:::i;:::-;20982:219;21293:4;21286:5;21282:16;21276:23;21312:63;21367:6;21362:3;21358:16;21344:12;21312:63;:::i;:::-;21211:174;21474:4;21467:5;21463:16;21457:23;21493:59;21544:6;21539:3;21535:16;21521:12;21493:59;:::i;:::-;21395:167;21648:4;21641:5;21637:16;21631:23;21703:3;21697:4;21693:14;21684:6;21679:3;21675:16;21668:40;21729:71;21795:4;21781:12;21729:71;:::i;:::-;21721:79;;21572:239;21828:4;21821:11;;20275:1563;20151:1687;;;;:::o;21942:2598::-;22061:3;22097:6;22092:3;22088:16;22191:4;22184:5;22180:16;22174:23;22210:133;22337:4;22332:3;22328:14;22314:12;22210:133;:::i;:::-;22114:239;22445:4;22438:5;22434:16;22428:23;22464:63;22521:4;22516:3;22512:14;22498:12;22464:63;:::i;:::-;22363:174;22626:4;22619:5;22615:16;22609:23;22679:3;22673:4;22669:14;22662:4;22657:3;22653:14;22646:38;22705:73;22773:4;22759:12;22705:73;:::i;:::-;22697:81;;22547:242;22874:4;22867:5;22863:16;22857:23;22893:61;22948:4;22943:3;22939:14;22925:12;22893:61;:::i;:::-;22799:165;23047:4;23040:5;23036:16;23030:23;23066:61;23121:4;23116:3;23112:14;23098:12;23066:61;:::i;:::-;22974:163;23231:4;23224:5;23220:16;23214:23;23250:63;23307:4;23302:3;23298:14;23284:12;23250:63;:::i;:::-;23147:176;23409:4;23402:5;23398:16;23392:23;23428:133;23555:4;23550:3;23546:14;23532:12;23428:133;:::i;:::-;23333:238;23658:4;23651:5;23647:16;23641:23;23677:65;23734:6;23729:3;23725:16;23711:12;23677:65;:::i;:::-;23581:171;23836:6;23829:5;23825:18;23819:25;23857:113;23962:6;23957:3;23953:16;23939:12;23857:113;:::i;:::-;23762:218;24069:6;24062:5;24058:18;24052:25;24090:123;24205:6;24200:3;24196:16;24182:12;24090:123;:::i;:::-;23990:233;24306:6;24299:5;24295:18;24289:25;24363:3;24357:4;24353:14;24344:6;24339:3;24335:16;24328:40;24389:113;24497:4;24483:12;24389:113;:::i;:::-;24381:121;;24233:280;24530:4;24523:11;;22066:2474;21942:2598;;;;:::o;24546:373::-;24689:4;24727:2;24716:9;24712:18;24704:26;;24776:9;24770:4;24766:20;24762:1;24751:9;24747:17;24740:47;24804:108;24907:4;24898:6;24804:108;:::i;:::-;24796:116;;24546:373;;;;:::o;24925:118::-;25012:24;25030:5;25012:24;:::i;:::-;25007:3;25000:37;24925:118;;:::o;25049:222::-;25142:4;25180:2;25169:9;25165:18;25157:26;;25193:71;25261:1;25250:9;25246:17;25237:6;25193:71;:::i;:::-;25049:222;;;;:::o;25277:117::-;25386:1;25383;25376:12;25400:117;25509:1;25506;25499:12;25523:117;25632:1;25629;25622:12;25646:724;25723:4;25729:6;25785:11;25772:25;25885:1;25879:4;25875:12;25864:8;25848:14;25844:29;25840:48;25820:18;25816:73;25806:168;;25893:79;;:::i;:::-;25806:168;26005:18;25995:8;25991:33;25983:41;;26057:4;26044:18;26034:28;;26085:18;26077:6;26074:30;26071:117;;;26107:79;;:::i;:::-;26071:117;26215:2;26209:4;26205:13;26197:21;;26272:4;26264:6;26260:17;26244:14;26240:38;26234:4;26230:49;26227:136;;;26282:79;;:::i;:::-;26227:136;25736:634;25646:724;;;;;:::o;26376:147::-;26477:11;26514:3;26499:18;;26376:147;;;;:::o;26529:148::-;26627:6;26622:3;26617;26604:30;26668:1;26659:6;26654:3;26650:16;26643:27;26529:148;;;:::o;26705:327::-;26819:3;26840:88;26921:6;26916:3;26840:88;:::i;:::-;26833:95;;26938:56;26987:6;26982:3;26975:5;26938:56;:::i;:::-;27019:6;27014:3;27010:16;27003:23;;26705:327;;;;;:::o;27038:291::-;27178:3;27200:103;27299:3;27290:6;27282;27200:103;:::i;:::-;27193:110;;27320:3;27313:10;;27038:291;;;;;:::o;27335:150::-;27372:7;27412:66;27405:5;27401:78;27390:89;;27335:150;;;:::o;27491:122::-;27564:24;27582:5;27564:24;:::i;:::-;27557:5;27554:35;27544:63;;27603:1;27600;27593:12;27544:63;27491:122;:::o;27619:139::-;27665:5;27703:6;27690:20;27681:29;;27719:33;27746:5;27719:33;:::i;:::-;27619:139;;;;:::o;27764:329::-;27823:6;27872:2;27860:9;27851:7;27847:23;27843:32;27840:119;;;27878:79;;:::i;:::-;27840:119;27998:1;28023:53;28068:7;28059:6;28048:9;28044:22;28023:53;:::i;:::-;28013:63;;27969:117;27764:329;;;;:::o;28099:126::-;28136:7;28176:42;28169:5;28165:54;28154:65;;28099:126;;;:::o;28231:96::-;28268:7;28297:24;28315:5;28297:24;:::i;:::-;28286:35;;28231:96;;;:::o;28333:122::-;28406:24;28424:5;28406:24;:::i;:::-;28399:5;28396:35;28386:63;;28445:1;28442;28435:12;28386:63;28333:122;:::o;28461:139::-;28507:5;28545:6;28532:20;28523:29;;28561:33;28588:5;28561:33;:::i;:::-;28461:139;;;;:::o;28606:329::-;28665:6;28714:2;28702:9;28693:7;28689:23;28685:32;28682:119;;;28720:79;;:::i;:::-;28682:119;28840:1;28865:53;28910:7;28901:6;28890:9;28886:22;28865:53;:::i;:::-;28855:63;;28811:117;28606:329;;;;:::o;28941:118::-;29028:24;29046:5;29028:24;:::i;:::-;29023:3;29016:37;28941:118;;:::o;29065:168::-;29148:11;29182:6;29177:3;29170:19;29222:4;29217:3;29213:14;29198:29;;29065:168;;;;:::o;29261:314::-;29357:3;29378:70;29441:6;29436:3;29378:70;:::i;:::-;29371:77;;29458:56;29507:6;29502:3;29495:5;29458:56;:::i;:::-;29539:29;29561:6;29539:29;:::i;:::-;29534:3;29530:39;29523:46;;29261:314;;;;;:::o;29581:77::-;29618:7;29647:5;29636:16;;29581:77;;;:::o;29664:118::-;29751:24;29769:5;29751:24;:::i;:::-;29746:3;29739:37;29664:118;;:::o;29788:::-;29875:24;29893:5;29875:24;:::i;:::-;29870:3;29863:37;29788:118;;:::o;29912:1104::-;30229:4;30267:3;30256:9;30252:19;30244:27;;30281:71;30349:1;30338:9;30334:17;30325:6;30281:71;:::i;:::-;30362:72;30430:2;30419:9;30415:18;30406:6;30362:72;:::i;:::-;30444;30512:2;30501:9;30497:18;30488:6;30444:72;:::i;:::-;30526;30594:2;30583:9;30579:18;30570:6;30526:72;:::i;:::-;30608:73;30676:3;30665:9;30661:19;30652:6;30608:73;:::i;:::-;30729:9;30723:4;30719:20;30713:3;30702:9;30698:19;30691:49;30757:86;30838:4;30829:6;30821;30757:86;:::i;:::-;30749:94;;30853:73;30921:3;30910:9;30906:19;30897:6;30853:73;:::i;:::-;30936;31004:3;30993:9;30989:19;30980:6;30936:73;:::i;:::-;29912:1104;;;;;;;;;;;;:::o;31022:116::-;31092:21;31107:5;31092:21;:::i;:::-;31085:5;31082:32;31072:60;;31128:1;31125;31118:12;31072:60;31022:116;:::o;31144:137::-;31198:5;31229:6;31223:13;31214:22;;31245:30;31269:5;31245:30;:::i;:::-;31144:137;;;;:::o;31287:345::-;31354:6;31403:2;31391:9;31382:7;31378:23;31374:32;31371:119;;;31409:79;;:::i;:::-;31371:119;31529:1;31554:61;31607:7;31598:6;31587:9;31583:22;31554:61;:::i;:::-;31544:71;;31500:125;31287:345;;;;:::o;31638:117::-;31747:1;31744;31737:12;31761:117;31870:1;31867;31860:12;31884:469;31989:9;32000;32038:8;32026:10;32023:24;32020:111;;;32050:79;;:::i;:::-;32020:111;32156:6;32146:8;32143:20;32140:107;;;32166:79;;:::i;:::-;32140:107;32297:1;32285:10;32281:18;32273:6;32269:31;32256:44;;32336:10;32326:8;32322:25;32309:38;;31884:469;;;;;;;:::o;32359:117::-;32468:1;32465;32458:12;32482:180;32530:77;32527:1;32520:88;32627:4;32624:1;32617:15;32651:4;32648:1;32641:15;32668:281;32751:27;32773:4;32751:27;:::i;:::-;32743:6;32739:40;32881:6;32869:10;32866:22;32845:18;32833:10;32830:34;32827:62;32824:88;;;32892:18;;:::i;:::-;32824:88;32932:10;32928:2;32921:22;32711:238;32668:281;;:::o;32955:129::-;32989:6;33016:20;;:::i;:::-;33006:30;;33045:33;33073:4;33065:6;33045:33;:::i;:::-;32955:129;;;:::o;33090:117::-;33199:1;33196;33189:12;33213:122;33286:24;33304:5;33286:24;:::i;:::-;33279:5;33276:35;33266:63;;33325:1;33322;33315:12;33266:63;33213:122;:::o;33341:139::-;33387:5;33425:6;33412:20;33403:29;;33441:33;33468:5;33441:33;:::i;:::-;33341:139;;;;:::o;33486:133::-;33529:5;33567:6;33554:20;33545:29;;33583:30;33607:5;33583:30;:::i;:::-;33486:133;;;;:::o;33686:579::-;33770:5;33814:4;33802:9;33797:3;33793:19;33789:30;33786:117;;;33822:79;;:::i;:::-;33786:117;33921:21;33937:4;33921:21;:::i;:::-;33912:30;;33998:1;34038:49;34083:3;34074:6;34063:9;34059:22;34038:49;:::i;:::-;34031:4;34024:5;34020:16;34013:75;33952:147;34159:2;34200:46;34242:3;34233:6;34222:9;34218:22;34200:46;:::i;:::-;34193:4;34186:5;34182:16;34175:72;34109:149;33686:579;;;;:::o;34271:117::-;34380:1;34377;34370:12;34394:117;34503:1;34500;34493:12;34517:308;34579:4;34669:18;34661:6;34658:30;34655:56;;;34691:18;;:::i;:::-;34655:56;34729:29;34751:6;34729:29;:::i;:::-;34721:37;;34813:4;34807;34803:15;34795:23;;34517:308;;;:::o;34831:425::-;34909:5;34934:66;34950:49;34992:6;34950:49;:::i;:::-;34934:66;:::i;:::-;34925:75;;35023:6;35016:5;35009:21;35061:4;35054:5;35050:16;35099:3;35090:6;35085:3;35081:16;35078:25;35075:112;;;35106:79;;:::i;:::-;35075:112;35196:54;35243:6;35238:3;35233;35196:54;:::i;:::-;34915:341;34831:425;;;;;:::o;35276:340::-;35332:5;35381:3;35374:4;35366:6;35362:17;35358:27;35348:122;;35389:79;;:::i;:::-;35348:122;35506:6;35493:20;35531:79;35606:3;35598:6;35591:4;35583:6;35579:17;35531:79;:::i;:::-;35522:88;;35338:278;35276:340;;;;:::o;35622:120::-;35694:23;35711:5;35694:23;:::i;:::-;35687:5;35684:34;35674:62;;35732:1;35729;35722:12;35674:62;35622:120;:::o;35748:137::-;35793:5;35831:6;35818:20;35809:29;;35847:32;35873:5;35847:32;:::i;:::-;35748:137;;;;:::o;35891:120::-;35963:23;35980:5;35963:23;:::i;:::-;35956:5;35953:34;35943:62;;36001:1;35998;35991:12;35943:62;35891:120;:::o;36017:137::-;36062:5;36100:6;36087:20;36078:29;;36116:32;36142:5;36116:32;:::i;:::-;36017:137;;;;:::o;36210:1102::-;36283:5;36327:4;36315:9;36310:3;36306:19;36302:30;36299:117;;;36335:79;;:::i;:::-;36299:117;36434:21;36450:4;36434:21;:::i;:::-;36425:30;;36531:1;36571:48;36615:3;36606:6;36595:9;36591:22;36571:48;:::i;:::-;36564:4;36557:5;36553:16;36546:74;36465:166;36695:2;36736:48;36780:3;36771:6;36760:9;36756:22;36736:48;:::i;:::-;36729:4;36722:5;36718:16;36711:74;36641:155;36862:2;36903:48;36947:3;36938:6;36927:9;36923:22;36903:48;:::i;:::-;36896:4;36889:5;36885:16;36878:74;36806:157;37031:2;37072:48;37116:3;37107:6;37096:9;37092:22;37072:48;:::i;:::-;37065:4;37058:5;37054:16;37047:74;36973:159;37203:3;37245:48;37289:3;37280:6;37269:9;37265:22;37245:48;:::i;:::-;37238:4;37231:5;37227:16;37220:74;37142:163;36210:1102;;;;:::o;37318:116::-;37408:1;37401:5;37398:12;37388:40;;37424:1;37421;37414:12;37388:40;37318:116;:::o;37440:173::-;37503:5;37541:6;37528:20;37519:29;;37557:50;37601:5;37557:50;:::i;:::-;37440:173;;;;:::o;37674:2871::-;37752:5;37796:6;37784:9;37779:3;37775:19;37771:32;37768:119;;;37806:79;;:::i;:::-;37768:119;37905:23;37921:6;37905:23;:::i;:::-;37896:32;;37992:1;38032:66;38094:3;38085:6;38074:9;38070:22;38032:66;:::i;:::-;38025:4;38018:5;38014:16;38007:92;37938:172;38171:2;38212:66;38274:3;38265:6;38254:9;38250:22;38212:66;:::i;:::-;38205:4;38198:5;38194:16;38187:92;38120:170;38349:2;38390:66;38452:3;38443:6;38432:9;38428:22;38390:66;:::i;:::-;38383:4;38376:5;38372:16;38365:92;38300:168;38531:2;38572:66;38634:3;38625:6;38614:9;38610:22;38572:66;:::i;:::-;38565:4;38558:5;38554:16;38547:92;38478:172;38716:3;38758:66;38820:3;38811:6;38800:9;38796:22;38758:66;:::i;:::-;38751:4;38744:5;38740:16;38733:92;38660:176;38905:3;38947:66;39009:3;39000:6;38989:9;38985:22;38947:66;:::i;:::-;38940:4;38933:5;38929:16;38922:92;38846:179;39102:3;39144:66;39206:3;39197:6;39186:9;39182:22;39144:66;:::i;:::-;39137:4;39130:5;39126:16;39119:92;39035:187;39299:3;39341:48;39385:3;39376:6;39365:9;39361:22;39341:48;:::i;:::-;39334:4;39327:5;39323:16;39316:74;39232:169;39467:3;39511:66;39573:3;39564:6;39553:9;39549:22;39511:66;:::i;:::-;39502:6;39495:5;39491:18;39484:94;39411:178;39659:3;39703:66;39765:3;39756:6;39745:9;39741:22;39703:66;:::i;:::-;39694:6;39687:5;39683:18;39676:94;39599:182;39850:3;39894:66;39956:3;39947:6;39936:9;39932:22;39894:66;:::i;:::-;39885:6;39878:5;39874:18;39867:94;39791:181;40041:3;40085:66;40147:3;40138:6;40127:9;40123:22;40085:66;:::i;:::-;40076:6;40069:5;40065:18;40058:94;39982:181;40230:3;40274:66;40336:3;40327:6;40316:9;40312:22;40274:66;:::i;:::-;40265:6;40258:5;40254:18;40247:94;40173:179;40416:3;40460:66;40522:3;40513:6;40502:9;40498:22;40460:66;:::i;:::-;40451:6;40444:5;40440:18;40433:94;40362:176;37674:2871;;;;:::o;40551:249::-;40626:4;40716:18;40708:6;40705:30;40702:56;;;40738:18;;:::i;:::-;40702:56;40788:4;40780:6;40776:17;40768:25;;40551:249;;;:::o;40806:117::-;40915:1;40912;40905:12;40947:643;41041:5;41066:79;41082:62;41137:6;41082:62;:::i;:::-;41066:79;:::i;:::-;41057:88;;41165:5;41218:4;41210:6;41206:17;41198:6;41194:30;41247:3;41239:6;41236:15;41233:122;;;41266:79;;:::i;:::-;41233:122;41381:6;41364:220;41398:6;41393:3;41390:15;41364:220;;;41473:3;41502:37;41535:3;41523:10;41502:37;:::i;:::-;41497:3;41490:50;41569:4;41564:3;41560:14;41553:21;;41440:144;41424:4;41419:3;41415:14;41408:21;;41364:220;;;41368:21;41047:543;;40947:643;;;;;:::o;41614:339::-;41683:5;41732:3;41725:4;41717:6;41713:17;41709:27;41699:122;;41740:79;;:::i;:::-;41699:122;41844:4;41866:81;41943:3;41935:6;41927;41866:81;:::i;:::-;41857:90;;41689:264;41614:339;;;;:::o;41959:118::-;42051:1;42044:5;42041:12;42031:40;;42067:1;42064;42057:12;42031:40;41959:118;:::o;42083:177::-;42148:5;42186:6;42173:20;42164:29;;42202:52;42248:5;42202:52;:::i;:::-;42083:177;;;;:::o;42266:277::-;42369:4;42459:18;42451:6;42448:30;42445:56;;;42481:18;;:::i;:::-;42445:56;42531:4;42523:6;42519:17;42511:25;;42266:277;;;:::o;42603:571::-;42680:5;42724:4;42712:9;42707:3;42703:19;42699:30;42696:117;;;42732:79;;:::i;:::-;42696:117;42831:21;42847:4;42831:21;:::i;:::-;42822:30;;42908:1;42948:49;42993:3;42984:6;42973:9;42969:22;42948:49;:::i;:::-;42941:4;42934:5;42930:16;42923:75;42862:147;43065:2;43106:49;43151:3;43142:6;43131:9;43127:22;43106:49;:::i;:::-;43099:4;43092:5;43088:16;43081:75;43019:148;42603:571;;;;:::o;43237:727::-;43359:5;43384:107;43400:90;43483:6;43400:90;:::i;:::-;43384:107;:::i;:::-;43375:116;;43511:5;43564:4;43556:6;43552:17;43544:6;43540:30;43593:3;43585:6;43582:15;43579:122;;;43612:79;;:::i;:::-;43579:122;43727:6;43710:248;43744:6;43739:3;43736:15;43710:248;;;43819:3;43848:65;43909:3;43897:10;43848:65;:::i;:::-;43843:3;43836:78;43943:4;43938:3;43934:14;43927:21;;43786:172;43770:4;43765:3;43761:14;43754:21;;43710:248;;;43714:21;43365:599;;43237:727;;;;;:::o;44027:395::-;44124:5;44173:3;44166:4;44158:6;44154:17;44150:27;44140:122;;44181:79;;:::i;:::-;44140:122;44285:4;44307:109;44412:3;44404:6;44396;44307:109;:::i;:::-;44298:118;;44130:292;44027:395;;;;:::o;44428:278::-;44532:4;44622:18;44614:6;44611:30;44608:56;;;44644:18;;:::i;:::-;44608:56;44694:4;44686:6;44682:17;44674:25;;44428:278;;;:::o;44770:729::-;44893:5;44918:108;44934:91;45018:6;44934:91;:::i;:::-;44918:108;:::i;:::-;44909:117;;45046:5;45099:4;45091:6;45087:17;45079:6;45075:30;45128:3;45120:6;45117:15;45114:122;;;45147:79;;:::i;:::-;45114:122;45262:6;45245:248;45279:6;45274:3;45271:15;45245:248;;;45354:3;45383:65;45444:3;45432:10;45383:65;:::i;:::-;45378:3;45371:78;45478:4;45473:3;45469:14;45462:21;;45321:172;45305:4;45300:3;45296:14;45289:21;;45245:248;;;45249:21;44899:600;;44770:729;;;;;:::o;45563:397::-;45661:5;45710:3;45703:4;45695:6;45691:17;45687:27;45677:122;;45718:79;;:::i;:::-;45677:122;45822:4;45844:110;45950:3;45942:6;45934;45844:110;:::i;:::-;45835:119;;45667:293;45563:397;;;;:::o;46019:1888::-;46095:5;46139:6;46127:9;46122:3;46118:19;46114:32;46111:119;;;46149:79;;:::i;:::-;46111:119;46248:23;46264:6;46248:23;:::i;:::-;46239:32;;46335:1;46375:100;46471:3;46462:6;46451:9;46447:22;46375:100;:::i;:::-;46368:4;46361:5;46357:16;46350:126;46281:206;46558:3;46600:101;46697:3;46688:6;46677:9;46673:22;46600:101;:::i;:::-;46593:4;46586:5;46582:16;46575:127;46497:216;46779:4;46822:77;46895:3;46886:6;46875:9;46871:22;46822:77;:::i;:::-;46815:4;46808:5;46804:16;46797:103;46723:188;46973:4;47016:77;47089:3;47080:6;47069:9;47065:22;47016:77;:::i;:::-;47009:4;47002:5;46998:16;46991:103;46921:184;47175:4;47218:77;47291:3;47282:6;47271:9;47267:22;47218:77;:::i;:::-;47211:4;47204:5;47200:16;47193:103;47115:192;47369:4;47412:77;47485:3;47476:6;47465:9;47461:22;47412:77;:::i;:::-;47405:4;47398:5;47394:16;47387:103;47317:184;47564:4;47607:77;47680:3;47671:6;47660:9;47656:22;47607:77;:::i;:::-;47600:4;47593:5;47589:16;47582:103;47511:185;47768:4;47811:77;47884:3;47875:6;47864:9;47860:22;47811:77;:::i;:::-;47804:4;47797:5;47793:16;47786:103;47706:194;46019:1888;;;;:::o;47972:844::-;48054:5;48098:6;48086:9;48081:3;48077:19;48073:32;48070:119;;;48108:79;;:::i;:::-;48070:119;48207:21;48223:4;48207:21;:::i;:::-;48198:30;;48300:1;48340:68;48404:3;48395:6;48384:9;48380:22;48340:68;:::i;:::-;48333:4;48326:5;48322:16;48315:94;48238:182;48495:2;48536:68;48600:3;48591:6;48580:9;48576:22;48536:68;:::i;:::-;48529:4;48522:5;48518:16;48511:94;48430:186;48680:2;48721:76;48793:3;48784:6;48773:9;48769:22;48721:76;:::i;:::-;48714:4;48707:5;48703:16;48696:102;48626:183;47972:844;;;;:::o;48822:249::-;48897:4;48987:18;48979:6;48976:30;48973:56;;;49009:18;;:::i;:::-;48973:56;49059:4;49051:6;49047:17;49039:25;;48822:249;;;:::o;49095:643::-;49189:5;49214:79;49230:62;49285:6;49230:62;:::i;:::-;49214:79;:::i;:::-;49205:88;;49313:5;49366:4;49358:6;49354:17;49346:6;49342:30;49395:3;49387:6;49384:15;49381:122;;;49414:79;;:::i;:::-;49381:122;49529:6;49512:220;49546:6;49541:3;49538:15;49512:220;;;49621:3;49650:37;49683:3;49671:10;49650:37;:::i;:::-;49645:3;49638:50;49717:4;49712:3;49708:14;49701:21;;49588:144;49572:4;49567:3;49563:14;49556:21;;49512:220;;;49516:21;49195:543;;49095:643;;;;;:::o;49762:339::-;49831:5;49880:3;49873:4;49865:6;49861:17;49857:27;49847:122;;49888:79;;:::i;:::-;49847:122;49992:4;50014:81;50091:3;50083:6;50075;50014:81;:::i;:::-;50005:90;;49837:264;49762:339;;;;:::o;50107:307::-;50168:4;50258:18;50250:6;50247:30;50244:56;;;50280:18;;:::i;:::-;50244:56;50318:29;50340:6;50318:29;:::i;:::-;50310:37;;50402:4;50396;50392:15;50384:23;;50107:307;;;:::o;50420:423::-;50497:5;50522:65;50538:48;50579:6;50538:48;:::i;:::-;50522:65;:::i;:::-;50513:74;;50610:6;50603:5;50596:21;50648:4;50641:5;50637:16;50686:3;50677:6;50672:3;50668:16;50665:25;50662:112;;;50693:79;;:::i;:::-;50662:112;50783:54;50830:6;50825:3;50820;50783:54;:::i;:::-;50503:340;50420:423;;;;;:::o;50862:338::-;50917:5;50966:3;50959:4;50951:6;50947:17;50943:27;50933:122;;50974:79;;:::i;:::-;50933:122;51091:6;51078:20;51116:78;51190:3;51182:6;51175:4;51167:6;51163:17;51116:78;:::i;:::-;51107:87;;50923:277;50862:338;;;;:::o;51262:1691::-;51341:5;51385:6;51373:9;51368:3;51364:19;51360:32;51357:119;;;51395:79;;:::i;:::-;51357:119;51494:21;51510:4;51494:21;:::i;:::-;51485:30;;51578:1;51618:72;51686:3;51677:6;51666:9;51662:22;51618:72;:::i;:::-;51611:4;51604:5;51600:16;51593:98;51525:177;51772:3;51814:82;51892:3;51883:6;51872:9;51868:22;51814:82;:::i;:::-;51807:4;51800:5;51796:16;51789:108;51712:196;51975:4;52018:48;52062:3;52053:6;52042:9;52038:22;52018:48;:::i;:::-;52011:4;52004:5;52000:16;51993:74;51918:160;52144:4;52187:72;52255:3;52246:6;52235:9;52231:22;52187:72;:::i;:::-;52180:4;52173:5;52169:16;52162:98;52088:183;52340:4;52383:48;52427:3;52418:6;52407:9;52403:22;52383:48;:::i;:::-;52376:4;52369:5;52365:16;52358:74;52281:162;52509:4;52552:46;52594:3;52585:6;52574:9;52570:22;52552:46;:::i;:::-;52545:4;52538:5;52534:16;52527:72;52453:157;52701:4;52690:9;52686:20;52673:34;52734:18;52726:6;52723:30;52720:117;;;52756:79;;:::i;:::-;52720:117;52876:58;52930:3;52921:6;52910:9;52906:22;52876:58;:::i;:::-;52869:4;52862:5;52858:16;52851:84;52620:326;51262:1691;;;;:::o;53010:2579::-;53084:5;53128:6;53116:9;53111:3;53107:19;53103:32;53100:119;;;53138:79;;:::i;:::-;53100:119;53237:23;53253:6;53237:23;:::i;:::-;53228:32;;53324:1;53364:84;53444:3;53435:6;53424:9;53420:22;53364:84;:::i;:::-;53357:4;53350:5;53346:16;53339:110;53270:190;53529:2;53570:49;53615:3;53606:6;53595:9;53591:22;53570:49;:::i;:::-;53563:4;53556:5;53552:16;53545:75;53470:161;53725:2;53714:9;53710:18;53697:32;53756:18;53748:6;53745:30;53742:117;;;53778:79;;:::i;:::-;53742:117;53898:59;53953:3;53944:6;53933:9;53929:22;53898:59;:::i;:::-;53891:4;53884:5;53880:16;53873:85;53641:328;54031:3;54073:48;54117:3;54108:6;54097:9;54093:22;54073:48;:::i;:::-;54066:4;54059:5;54055:16;54048:74;53979:154;54193:3;54235:48;54279:3;54270:6;54259:9;54255:22;54235:48;:::i;:::-;54228:4;54221:5;54217:16;54210:74;54143:152;54366:3;54408:49;54453:3;54444:6;54433:9;54429:22;54408:49;:::i;:::-;54401:4;54394:5;54390:16;54383:75;54305:164;54532:3;54574:84;54654:3;54645:6;54634:9;54630:22;54574:84;:::i;:::-;54567:4;54560:5;54556:16;54549:110;54479:191;54734:3;54776:49;54821:3;54812:6;54801:9;54797:22;54776:49;:::i;:::-;54769:4;54762:5;54758:16;54751:75;54680:157;54898:3;54942:73;55011:3;55002:6;54991:9;54987:22;54942:73;:::i;:::-;54933:6;54926:5;54922:18;54915:101;54847:180;55093:3;55137:78;55211:3;55202:6;55191:9;55187:22;55137:78;:::i;:::-;55128:6;55121:5;55117:18;55110:106;55037:190;55315:3;55304:9;55300:19;55287:33;55347:18;55339:6;55336:30;55333:117;;;55369:79;;:::i;:::-;55333:117;55491:79;55566:3;55557:6;55546:9;55542:22;55491:79;:::i;:::-;55482:6;55475:5;55471:18;55464:107;55237:345;53010:2579;;;;:::o;55595:539::-;55679:6;55728:2;55716:9;55707:7;55703:23;55699:32;55696:119;;;55734:79;;:::i;:::-;55696:119;55882:1;55871:9;55867:17;55854:31;55912:18;55904:6;55901:30;55898:117;;;55934:79;;:::i;:::-;55898:117;56039:78;56109:7;56100:6;56089:9;56085:22;56039:78;:::i;:::-;56029:88;;55825:302;55595:539;;;;:::o","linkReferences":{}},"methodIdentifiers":{"validateAccount((bytes32,bytes32,bytes20,bytes32,bytes,uint256,bytes,address))":"9029ad15","validateAccountAndReturn((bytes32,bytes32,bytes20,bytes32,bytes,uint256,bytes,address))":"c6478713"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"_alignedServiceAddr\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"MinaAccountProvingSystemIdIsNotValid\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"proofCommitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"provingSystemAuxDataCommitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes20\",\"name\":\"proofGeneratorAddr\",\"type\":\"bytes20\"},{\"internalType\":\"bytes32\",\"name\":\"batchMerkleRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"merkleProof\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"verificationDataBatchIndex\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"pubInput\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"batcherPaymentService\",\"type\":\"address\"}],\"internalType\":\"struct MinaAccountValidationExample.AlignedArgs\",\"name\":\"args\",\"type\":\"tuple\"}],\"name\":\"validateAccount\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"proofCommitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"provingSystemAuxDataCommitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes20\",\"name\":\"proofGeneratorAddr\",\"type\":\"bytes20\"},{\"internalType\":\"bytes32\",\"name\":\"batchMerkleRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"merkleProof\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"verificationDataBatchIndex\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"pubInput\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"batcherPaymentService\",\"type\":\"address\"}],\"internalType\":\"struct MinaAccountValidationExample.AlignedArgs\",\"name\":\"args\",\"type\":\"tuple\"}],\"name\":\"validateAccountAndReturn\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"isOdd\",\"type\":\"bool\"}],\"internalType\":\"struct MinaAccountValidationExample.CompressedECPoint\",\"name\":\"publicKey\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"tokenIdKeyHash\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"tokenSymbol\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"balance\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"receiptChainHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"isOdd\",\"type\":\"bool\"}],\"internalType\":\"struct MinaAccountValidationExample.CompressedECPoint\",\"name\":\"delegate\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"votingFor\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"initialMinimumBalance\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"cliffTime\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"cliffAmount\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"vestingPeriod\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"vestingIncrement\",\"type\":\"uint64\"}],\"internalType\":\"struct MinaAccountValidationExample.Timing\",\"name\":\"timing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum MinaAccountValidationExample.AuthRequired\",\"name\":\"editState\",\"type\":\"uint8\"},{\"internalType\":\"enum MinaAccountValidationExample.AuthRequired\",\"name\":\"access\",\"type\":\"uint8\"},{\"internalType\":\"enum MinaAccountValidationExample.AuthRequired\",\"name\":\"send\",\"type\":\"uint8\"},{\"internalType\":\"enum MinaAccountValidationExample.AuthRequired\",\"name\":\"rreceive\",\"type\":\"uint8\"},{\"internalType\":\"enum MinaAccountValidationExample.AuthRequired\",\"name\":\"setDelegate\",\"type\":\"uint8\"},{\"internalType\":\"enum MinaAccountValidationExample.AuthRequired\",\"name\":\"setPermissions\",\"type\":\"uint8\"},{\"internalType\":\"enum MinaAccountValidationExample.AuthRequired\",\"name\":\"setVerificationKeyAuth\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"setVerificationKeyUint\",\"type\":\"uint32\"},{\"internalType\":\"enum MinaAccountValidationExample.AuthRequired\",\"name\":\"setZkappUri\",\"type\":\"uint8\"},{\"internalType\":\"enum MinaAccountValidationExample.AuthRequired\",\"name\":\"editActionState\",\"type\":\"uint8\"},{\"internalType\":\"enum MinaAccountValidationExample.AuthRequired\",\"name\":\"setTokenSymbol\",\"type\":\"uint8\"},{\"internalType\":\"enum MinaAccountValidationExample.AuthRequired\",\"name\":\"incrementNonce\",\"type\":\"uint8\"},{\"internalType\":\"enum MinaAccountValidationExample.AuthRequired\",\"name\":\"setVotingFor\",\"type\":\"uint8\"},{\"internalType\":\"enum MinaAccountValidationExample.AuthRequired\",\"name\":\"setTiming\",\"type\":\"uint8\"}],\"internalType\":\"struct MinaAccountValidationExample.Permissions\",\"name\":\"permissions\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32[8]\",\"name\":\"appState\",\"type\":\"bytes32[8]\"},{\"components\":[{\"internalType\":\"enum MinaAccountValidationExample.ProofsVerified\",\"name\":\"maxProofsVerified\",\"type\":\"uint8\"},{\"internalType\":\"enum MinaAccountValidationExample.ProofsVerified\",\"name\":\"actualWrapDomainSize\",\"type\":\"uint8\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"internalType\":\"struct MinaAccountValidationExample.Commitment[7]\",\"name\":\"sigmaComm\",\"type\":\"tuple[7]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"internalType\":\"struct MinaAccountValidationExample.Commitment[15]\",\"name\":\"coefficientsComm\",\"type\":\"tuple[15]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"internalType\":\"struct MinaAccountValidationExample.Commitment\",\"name\":\"genericComm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"internalType\":\"struct MinaAccountValidationExample.Commitment\",\"name\":\"psmComm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"internalType\":\"struct MinaAccountValidationExample.Commitment\",\"name\":\"completeAddComm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"internalType\":\"struct MinaAccountValidationExample.Commitment\",\"name\":\"mulComm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"internalType\":\"struct MinaAccountValidationExample.Commitment\",\"name\":\"emulComm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"internalType\":\"struct MinaAccountValidationExample.Commitment\",\"name\":\"endomulScalarComm\",\"type\":\"tuple\"}],\"internalType\":\"struct MinaAccountValidationExample.WrapIndex\",\"name\":\"wrapIndex\",\"type\":\"tuple\"}],\"internalType\":\"struct MinaAccountValidationExample.VerificationKey\",\"name\":\"verificationKey\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"zkappVersion\",\"type\":\"uint32\"},{\"internalType\":\"bytes32[5]\",\"name\":\"actionState\",\"type\":\"bytes32[5]\"},{\"internalType\":\"uint32\",\"name\":\"lastActionSlot\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"provedState\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"zkappUri\",\"type\":\"bytes\"}],\"internalType\":\"struct MinaAccountValidationExample.ZkappAccount\",\"name\":\"zkapp\",\"type\":\"tuple\"}],\"internalType\":\"struct MinaAccountValidationExample.Account\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"WARNING: This contract is meant ot be used as an example of how to use the Bridge. NEVER use this contract in a production environment.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MinaAccountValidationExample.sol\":\"MinaAccountValidationExample\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/\",\":aligned_layer/=lib/aligned_layer/\",\":ds-test/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/\",\":eigenlayer-core-contracts/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/core/\",\":eigenlayer-core/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/\",\":eigenlayer-middleware/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/\",\":eigenlayer-scripts/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/script/\",\":erc4626-tests/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/aligned_layer/claim_contracts/lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol\":{\"keccak256\":\"0x3f67ab9b510b02dc3c07014b49785f1e167401bdb39cc10f737bbf545632d938\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://48d1267e2df6c8ac9b8f419269ff3d23be9b62606ee6b6d2278c27ffebfd73aa\",\"dweb:/ipfs/QmaFyywKCm1eotKjF1evryW8BMQJzPDstZm1wMRW79phXG\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983\",\"dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0xab76a9f4eff865cbb689f627cf98263488765519d7a4ec5ffbcb0ca4972842f9\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ff57ce18e8350bf39f190645db0988bc0f1279f1872150a114a1b520c38a2914\",\"dweb:/ipfs/QmSsUXkNUqYuJgGRumHTSs9rAaboGjecotcM4xHrdBYWaZ\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91\",\"dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol\":{\"keccak256\":\"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc\",\"dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8\",\"dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol\":{\"keccak256\":\"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324\",\"dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d\",\"dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IRewardsCoordinator.sol\":{\"keccak256\":\"0xeab6f1140a90eb7f107d95bae1e8b2ecfbfe36282d62c9df69e6a564c2c59771\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://785cd2777cdcab3b827b5eef2a4dae02c56db07252fdcefd8dd1016be034dc71\",\"dweb:/ipfs/QmNyDFchTuMeiVoxNEfQw96JVq7DfkohGz1txKXe7HyNbq\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c\",\"dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol\":{\"keccak256\":\"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232\",\"dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0x68bf02a443fc8b2f612eba3d39bfefa5f61f78b549f111cdecec5f2c58236a52\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://76bc6875ce74128b861fdac5fd1c0c72f3cc9bacf67fa4a73721b95fb23959ef\",\"dweb:/ipfs/QmPix4WJmf9fXyMZxfgwXEHBcg7V4NAbRqs4HUf5YrSJcM\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol\":{\"keccak256\":\"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7\",\"dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol\":{\"keccak256\":\"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f\",\"dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol\":{\"keccak256\":\"0x9095fc29b96d102b10c02d44b3a6fbfa25593ef6ae4a810363ab885b9e6b0f71\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0945132d482d56278edddb1d32209903c4d3839c87ba4317aadd97dc23610d0f\",\"dweb:/ipfs/QmVuM2aLRHxitx4rPx3GTYTBCVNcjYn6sHBRr1biUjLBP5\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/permissions/Pausable.sol\":{\"keccak256\":\"0xce8ee0ab28f2bce9e94aa19fffe55bebef080327632ac98ff3ab14994b369bc0\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5c7e2be97a8840fa2a0434077a36136553a84efd9bff4b46712ce9fddb813a6a\",\"dweb:/ipfs/QmZKvgPxLAbGo1CqTA4AX6MCDPFLSSNt43ZKWRjvvzFp7S\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/BLSSignatureChecker.sol\":{\"keccak256\":\"0x3a5c205c596d3d73c7afa63ffbbfac8204f6d6a26c151ef26b47278981c3c0fe\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://4beb88bf5b7c7e614f0d87b157d7a4b67afbf1cc93f3127622bd66f696799241\",\"dweb:/ipfs/QmWJKb6qsd69bWgpAHX6deCkJqmJdo9oBLQAXJk97gWEE2\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/ServiceManagerBase.sol\":{\"keccak256\":\"0x7e32ef76daf32e5eb5a93cecf204223e64243f42afe70c7ca71ad3db3925b9c4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://19c10aa22f2e86e27e946b65c434e541caa6af06fcdde46c3b5e9b42890bd221\",\"dweb:/ipfs/QmPb5qDRdbJTniKSqsbjVhbtwdb72G9hWPYcHtVvj1zBxg\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/ServiceManagerBaseStorage.sol\":{\"keccak256\":\"0xa544114dbf6d973a815f997a2ac9237c531c40b08c91d3a65a23b152ed621e1e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://4cf69f9be7d3f3c4184b61b267280a829040973633ea9d95e2ec0dbf70f40a2e\",\"dweb:/ipfs/QmT2HeCJWBLX2p4KAWnyU318MMx9USb2brqCKq1vn2pXpR\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IBLSApkRegistry.sol\":{\"keccak256\":\"0xc07a5edfd95ab4f16f16a8dc8e76eadf4b0e90fe49db90540d01daaad86898c5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://52b53266450a53da641e82d8ae3be93c5e09f8342b4ea0cc96bb9038d8406354\",\"dweb:/ipfs/QmVuoiQyqPTLCGnyt8zDaxiyaj4ETdgTGKv4MDHWzqEDjp\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IBLSSignatureChecker.sol\":{\"keccak256\":\"0xee5823a6674e553c71f5e127f08245827eb116d1ad418b5a7f2a9d6985fd95e0\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://94aa26debddca6c0784585340cf891de4c2d7edaa3e5ec7229af9730312a5a51\",\"dweb:/ipfs/QmWbHGbM7eVYTAmrCVaDU8b4YTm9VAN82XgLDR78uHC7vj\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IIndexRegistry.sol\":{\"keccak256\":\"0x83b2d56aacf27e65c4959a832c5de573e013908c044f6e48ea8284ac5282ae2b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://877af382587e96bb39bcc6db8bb5e4b871db5025c52347d4bee9afeaa4a6cc8d\",\"dweb:/ipfs/QmdnhsQCChzq2o5NgbeT3JxSsEcMm1PC9QW6zenZNPjD9F\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IRegistry.sol\":{\"keccak256\":\"0x51426a17fb7e54bd3720e2890104e97a8559a13ff248b3d6b840916751c143d3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://01f91289e6100d528cb8b318cb14ff22a0bc52882c9d4db41585e030cc9ddc25\",\"dweb:/ipfs/Qmb22nqGrsrtNovHRwbMCvDHGENuxAgrWu3Db4p7Er2MHY\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IRegistryCoordinator.sol\":{\"keccak256\":\"0xdd8effb082c1d5957d5ff43d7c59497b32866a6d82bcc7d5efa49ea9bc9b3385\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cb33a2a1446585b13b7a509e880c60d658d2d2522ec48a9f02e30d2cff54002d\",\"dweb:/ipfs/QmVNG8ZPZkXzNEadPdTj1uBYLiZdCnYfsE5iGU6nJcJXiD\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IServiceManager.sol\":{\"keccak256\":\"0x7602cfb4397a114a0ed60e70e8e1d729fdcf406b585838181b3cb3ffa6ac9a9a\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b718fa016a13a2a5ce298bc5ea7495cc70cf9c358211c75595d5c9dde9a6cc0f\",\"dweb:/ipfs/QmQNrVmU7P7pRqGBJuTQDkjf3wMDY2kJm7zXdtQwsQTbzY\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IServiceManagerUI.sol\":{\"keccak256\":\"0x365761699b4a5b7360ee6c75f12606eefc4b0394754c8b8e1e1eefec0cba7ffb\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ac14ada180b66cbbc5f9de0d6b4bb87b5946d2a9569ae88f2f62aaca47e879a8\",\"dweb:/ipfs/QmcN9xKYF24naNWc6cYah9suz5gJSYE9nPj9eZFWnP35VX\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IStakeRegistry.sol\":{\"keccak256\":\"0x1b8b4d757c1b804bc4cf6fbbf8bf8f89ebdeb30a31014751fe7d01deb9d513d4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://984bf2777b898ed187d28997f9783f5c293a1a1848e3e9aa470ce9183d454c97\",\"dweb:/ipfs/Qme3aTpBrkLu8wYHFMZbCfhXHoZ1M6SpXkeC237T9BuU5B\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/libraries/BN254.sol\":{\"keccak256\":\"0xb428c8d0c3b325507a88a61a80115493eb88606ccc19ed64a31e11294ab853b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7b6fb935bfe0494e6ff970c8f30a86d5f4cf5c3e0967300c28cd383c043acae\",\"dweb:/ipfs/QmUHfFZaVjLPXhkBmcxrZhAHZaSFQDqXtrLGpjGBQBa5Ki\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/libraries/BitmapUtils.sol\":{\"keccak256\":\"0x44315ac460be30a6b18fd4df4d1b8afb46653bf4dc06ca9f93c32353fd0605c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da14f2ead3a375b02afd09d4a02edddf7b63a88945746b96789b2473184fdb04\",\"dweb:/ipfs/QmRqcjxa2Vv2MrLdPeAwsktXdWTirapEDsRbJCyYRtKT6g\"]},\"lib/aligned_layer/contracts/src/core/AlignedLayerServiceManager.sol\":{\"keccak256\":\"0x318fdb1cf3332466f725c56f6de37daf4b2078013d3e4c7a5d20be96b8259a29\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0e1c509ab8add93c822adc90092ddd3140a0ecb9cc2104ce420a5cdb18138569\",\"dweb:/ipfs/QmRUrZ2tYofMww63P2NRo4fgx4DRBBNRHZbmWayMiAqeMi\"]},\"lib/aligned_layer/contracts/src/core/AlignedLayerServiceManagerStorage.sol\":{\"keccak256\":\"0x7359959b102fcb5f313d7a0a4a2497ff651c1836ec5259f4f86bd5d20da502ce\",\"urls\":[\"bzz-raw://e1990be0b54c7ab6734ff3096aac61c951d762e0dc6d52d3890a364fc1d92569\",\"dweb:/ipfs/QmevhuweQnjTVBmxTyWucznnQ68kU1U5uHvtYm5FvkBfRR\"]},\"lib/aligned_layer/contracts/src/core/IAlignedLayerServiceManager.sol\":{\"keccak256\":\"0xdcec4919e7fdf7855a7f831291a4e5b3345739c88d2c6026f9b953d42f773c48\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2c37687aac70fa1281b5ccceb6208b5044eeb3c055286c20793632efd7f36adc\",\"dweb:/ipfs/Qmb9CC8RumoALvjjUujbyCZWokzvg4feSEoQFZ3swdggLT\"]},\"src/MinaAccountValidationExample.sol\":{\"keccak256\":\"0xa9ee818322d8de643216c4d9d255277a6eaee06819e047e69c0f7d4bea5b366a\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://a2229c41efb4d28eb61d80f8b36c3b97e9d6ae3c3dc7edc834ccceb6da33ac9e\",\"dweb:/ipfs/QmTXT7CySKmsJhWEhdEYFvTUB61HReFhsY2b2k1jPWtVmN\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address payable","name":"_alignedServiceAddr","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"type":"error","name":"MinaAccountProvingSystemIdIsNotValid"},{"inputs":[{"internalType":"struct MinaAccountValidationExample.AlignedArgs","name":"args","type":"tuple","components":[{"internalType":"bytes32","name":"proofCommitment","type":"bytes32"},{"internalType":"bytes32","name":"provingSystemAuxDataCommitment","type":"bytes32"},{"internalType":"bytes20","name":"proofGeneratorAddr","type":"bytes20"},{"internalType":"bytes32","name":"batchMerkleRoot","type":"bytes32"},{"internalType":"bytes","name":"merkleProof","type":"bytes"},{"internalType":"uint256","name":"verificationDataBatchIndex","type":"uint256"},{"internalType":"bytes","name":"pubInput","type":"bytes"},{"internalType":"address","name":"batcherPaymentService","type":"address"}]}],"stateMutability":"view","type":"function","name":"validateAccount","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"struct MinaAccountValidationExample.AlignedArgs","name":"args","type":"tuple","components":[{"internalType":"bytes32","name":"proofCommitment","type":"bytes32"},{"internalType":"bytes32","name":"provingSystemAuxDataCommitment","type":"bytes32"},{"internalType":"bytes20","name":"proofGeneratorAddr","type":"bytes20"},{"internalType":"bytes32","name":"batchMerkleRoot","type":"bytes32"},{"internalType":"bytes","name":"merkleProof","type":"bytes"},{"internalType":"uint256","name":"verificationDataBatchIndex","type":"uint256"},{"internalType":"bytes","name":"pubInput","type":"bytes"},{"internalType":"address","name":"batcherPaymentService","type":"address"}]}],"stateMutability":"view","type":"function","name":"validateAccountAndReturn","outputs":[{"internalType":"struct MinaAccountValidationExample.Account","name":"","type":"tuple","components":[{"internalType":"struct MinaAccountValidationExample.CompressedECPoint","name":"publicKey","type":"tuple","components":[{"internalType":"bytes32","name":"x","type":"bytes32"},{"internalType":"bool","name":"isOdd","type":"bool"}]},{"internalType":"bytes32","name":"tokenIdKeyHash","type":"bytes32"},{"internalType":"string","name":"tokenSymbol","type":"string"},{"internalType":"uint64","name":"balance","type":"uint64"},{"internalType":"uint32","name":"nonce","type":"uint32"},{"internalType":"bytes32","name":"receiptChainHash","type":"bytes32"},{"internalType":"struct MinaAccountValidationExample.CompressedECPoint","name":"delegate","type":"tuple","components":[{"internalType":"bytes32","name":"x","type":"bytes32"},{"internalType":"bool","name":"isOdd","type":"bool"}]},{"internalType":"bytes32","name":"votingFor","type":"bytes32"},{"internalType":"struct MinaAccountValidationExample.Timing","name":"timing","type":"tuple","components":[{"internalType":"uint64","name":"initialMinimumBalance","type":"uint64"},{"internalType":"uint32","name":"cliffTime","type":"uint32"},{"internalType":"uint64","name":"cliffAmount","type":"uint64"},{"internalType":"uint32","name":"vestingPeriod","type":"uint32"},{"internalType":"uint64","name":"vestingIncrement","type":"uint64"}]},{"internalType":"struct MinaAccountValidationExample.Permissions","name":"permissions","type":"tuple","components":[{"internalType":"enum MinaAccountValidationExample.AuthRequired","name":"editState","type":"uint8"},{"internalType":"enum MinaAccountValidationExample.AuthRequired","name":"access","type":"uint8"},{"internalType":"enum MinaAccountValidationExample.AuthRequired","name":"send","type":"uint8"},{"internalType":"enum MinaAccountValidationExample.AuthRequired","name":"rreceive","type":"uint8"},{"internalType":"enum MinaAccountValidationExample.AuthRequired","name":"setDelegate","type":"uint8"},{"internalType":"enum MinaAccountValidationExample.AuthRequired","name":"setPermissions","type":"uint8"},{"internalType":"enum MinaAccountValidationExample.AuthRequired","name":"setVerificationKeyAuth","type":"uint8"},{"internalType":"uint32","name":"setVerificationKeyUint","type":"uint32"},{"internalType":"enum MinaAccountValidationExample.AuthRequired","name":"setZkappUri","type":"uint8"},{"internalType":"enum MinaAccountValidationExample.AuthRequired","name":"editActionState","type":"uint8"},{"internalType":"enum MinaAccountValidationExample.AuthRequired","name":"setTokenSymbol","type":"uint8"},{"internalType":"enum MinaAccountValidationExample.AuthRequired","name":"incrementNonce","type":"uint8"},{"internalType":"enum MinaAccountValidationExample.AuthRequired","name":"setVotingFor","type":"uint8"},{"internalType":"enum MinaAccountValidationExample.AuthRequired","name":"setTiming","type":"uint8"}]},{"internalType":"struct MinaAccountValidationExample.ZkappAccount","name":"zkapp","type":"tuple","components":[{"internalType":"bytes32[8]","name":"appState","type":"bytes32[8]"},{"internalType":"struct MinaAccountValidationExample.VerificationKey","name":"verificationKey","type":"tuple","components":[{"internalType":"enum MinaAccountValidationExample.ProofsVerified","name":"maxProofsVerified","type":"uint8"},{"internalType":"enum MinaAccountValidationExample.ProofsVerified","name":"actualWrapDomainSize","type":"uint8"},{"internalType":"struct MinaAccountValidationExample.WrapIndex","name":"wrapIndex","type":"tuple","components":[{"internalType":"struct MinaAccountValidationExample.Commitment[7]","name":"sigmaComm","type":"tuple[7]","components":[{"internalType":"bytes32","name":"x","type":"bytes32"},{"internalType":"bytes32","name":"y","type":"bytes32"}]},{"internalType":"struct MinaAccountValidationExample.Commitment[15]","name":"coefficientsComm","type":"tuple[15]","components":[{"internalType":"bytes32","name":"x","type":"bytes32"},{"internalType":"bytes32","name":"y","type":"bytes32"}]},{"internalType":"struct MinaAccountValidationExample.Commitment","name":"genericComm","type":"tuple","components":[{"internalType":"bytes32","name":"x","type":"bytes32"},{"internalType":"bytes32","name":"y","type":"bytes32"}]},{"internalType":"struct MinaAccountValidationExample.Commitment","name":"psmComm","type":"tuple","components":[{"internalType":"bytes32","name":"x","type":"bytes32"},{"internalType":"bytes32","name":"y","type":"bytes32"}]},{"internalType":"struct MinaAccountValidationExample.Commitment","name":"completeAddComm","type":"tuple","components":[{"internalType":"bytes32","name":"x","type":"bytes32"},{"internalType":"bytes32","name":"y","type":"bytes32"}]},{"internalType":"struct MinaAccountValidationExample.Commitment","name":"mulComm","type":"tuple","components":[{"internalType":"bytes32","name":"x","type":"bytes32"},{"internalType":"bytes32","name":"y","type":"bytes32"}]},{"internalType":"struct MinaAccountValidationExample.Commitment","name":"emulComm","type":"tuple","components":[{"internalType":"bytes32","name":"x","type":"bytes32"},{"internalType":"bytes32","name":"y","type":"bytes32"}]},{"internalType":"struct MinaAccountValidationExample.Commitment","name":"endomulScalarComm","type":"tuple","components":[{"internalType":"bytes32","name":"x","type":"bytes32"},{"internalType":"bytes32","name":"y","type":"bytes32"}]}]}]},{"internalType":"uint32","name":"zkappVersion","type":"uint32"},{"internalType":"bytes32[5]","name":"actionState","type":"bytes32[5]"},{"internalType":"uint32","name":"lastActionSlot","type":"uint32"},{"internalType":"bool","name":"provedState","type":"bool"},{"internalType":"bytes","name":"zkappUri","type":"bytes"}]}]}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/","@openzeppelin/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/","aligned_layer/=lib/aligned_layer/","ds-test/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/ds-test/src/","eigenlayer-contracts/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/","eigenlayer-core-contracts/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/core/","eigenlayer-core/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/","eigenlayer-middleware/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/","eigenlayer-scripts/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/script/","erc4626-tests/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/aligned_layer/claim_contracts/lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MinaAccountValidationExample.sol":"MinaAccountValidationExample"},"evmVersion":"cancun","libraries":{}},"sources":{"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol":{"keccak256":"0x3f67ab9b510b02dc3c07014b49785f1e167401bdb39cc10f737bbf545632d938","urls":["bzz-raw://48d1267e2df6c8ac9b8f419269ff3d23be9b62606ee6b6d2278c27ffebfd73aa","dweb:/ipfs/QmaFyywKCm1eotKjF1evryW8BMQJzPDstZm1wMRW79phXG"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00","urls":["bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983","dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol":{"keccak256":"0xab76a9f4eff865cbb689f627cf98263488765519d7a4ec5ffbcb0ca4972842f9","urls":["bzz-raw://ff57ce18e8350bf39f190645db0988bc0f1279f1872150a114a1b520c38a2914","dweb:/ipfs/QmSsUXkNUqYuJgGRumHTSs9rAaboGjecotcM4xHrdBYWaZ"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol":{"keccak256":"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c","urls":["bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91","dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz"],"license":"CC0-1.0"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol":{"keccak256":"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba","urls":["bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc","dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol":{"keccak256":"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c","urls":["bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8","dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol":{"keccak256":"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f","urls":["bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324","dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":{"keccak256":"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49","urls":["bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d","dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IRewardsCoordinator.sol":{"keccak256":"0xeab6f1140a90eb7f107d95bae1e8b2ecfbfe36282d62c9df69e6a564c2c59771","urls":["bzz-raw://785cd2777cdcab3b827b5eef2a4dae02c56db07252fdcefd8dd1016be034dc71","dweb:/ipfs/QmNyDFchTuMeiVoxNEfQw96JVq7DfkohGz1txKXe7HyNbq"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"keccak256":"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092","urls":["bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c","dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol":{"keccak256":"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79","urls":["bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232","dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol":{"keccak256":"0x68bf02a443fc8b2f612eba3d39bfefa5f61f78b549f111cdecec5f2c58236a52","urls":["bzz-raw://76bc6875ce74128b861fdac5fd1c0c72f3cc9bacf67fa4a73721b95fb23959ef","dweb:/ipfs/QmPix4WJmf9fXyMZxfgwXEHBcg7V4NAbRqs4HUf5YrSJcM"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol":{"keccak256":"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377","urls":["bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7","dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol":{"keccak256":"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d","urls":["bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f","dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":{"keccak256":"0x9095fc29b96d102b10c02d44b3a6fbfa25593ef6ae4a810363ab885b9e6b0f71","urls":["bzz-raw://0945132d482d56278edddb1d32209903c4d3839c87ba4317aadd97dc23610d0f","dweb:/ipfs/QmVuM2aLRHxitx4rPx3GTYTBCVNcjYn6sHBRr1biUjLBP5"],"license":"MIT"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/permissions/Pausable.sol":{"keccak256":"0xce8ee0ab28f2bce9e94aa19fffe55bebef080327632ac98ff3ab14994b369bc0","urls":["bzz-raw://5c7e2be97a8840fa2a0434077a36136553a84efd9bff4b46712ce9fddb813a6a","dweb:/ipfs/QmZKvgPxLAbGo1CqTA4AX6MCDPFLSSNt43ZKWRjvvzFp7S"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888","urls":["bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a","dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb"],"license":"MIT"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e","urls":["bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497","dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8"],"license":"MIT"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3","urls":["bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4","dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt"],"license":"MIT"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/BLSSignatureChecker.sol":{"keccak256":"0x3a5c205c596d3d73c7afa63ffbbfac8204f6d6a26c151ef26b47278981c3c0fe","urls":["bzz-raw://4beb88bf5b7c7e614f0d87b157d7a4b67afbf1cc93f3127622bd66f696799241","dweb:/ipfs/QmWJKb6qsd69bWgpAHX6deCkJqmJdo9oBLQAXJk97gWEE2"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/ServiceManagerBase.sol":{"keccak256":"0x7e32ef76daf32e5eb5a93cecf204223e64243f42afe70c7ca71ad3db3925b9c4","urls":["bzz-raw://19c10aa22f2e86e27e946b65c434e541caa6af06fcdde46c3b5e9b42890bd221","dweb:/ipfs/QmPb5qDRdbJTniKSqsbjVhbtwdb72G9hWPYcHtVvj1zBxg"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/ServiceManagerBaseStorage.sol":{"keccak256":"0xa544114dbf6d973a815f997a2ac9237c531c40b08c91d3a65a23b152ed621e1e","urls":["bzz-raw://4cf69f9be7d3f3c4184b61b267280a829040973633ea9d95e2ec0dbf70f40a2e","dweb:/ipfs/QmT2HeCJWBLX2p4KAWnyU318MMx9USb2brqCKq1vn2pXpR"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IBLSApkRegistry.sol":{"keccak256":"0xc07a5edfd95ab4f16f16a8dc8e76eadf4b0e90fe49db90540d01daaad86898c5","urls":["bzz-raw://52b53266450a53da641e82d8ae3be93c5e09f8342b4ea0cc96bb9038d8406354","dweb:/ipfs/QmVuoiQyqPTLCGnyt8zDaxiyaj4ETdgTGKv4MDHWzqEDjp"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IBLSSignatureChecker.sol":{"keccak256":"0xee5823a6674e553c71f5e127f08245827eb116d1ad418b5a7f2a9d6985fd95e0","urls":["bzz-raw://94aa26debddca6c0784585340cf891de4c2d7edaa3e5ec7229af9730312a5a51","dweb:/ipfs/QmWbHGbM7eVYTAmrCVaDU8b4YTm9VAN82XgLDR78uHC7vj"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IIndexRegistry.sol":{"keccak256":"0x83b2d56aacf27e65c4959a832c5de573e013908c044f6e48ea8284ac5282ae2b","urls":["bzz-raw://877af382587e96bb39bcc6db8bb5e4b871db5025c52347d4bee9afeaa4a6cc8d","dweb:/ipfs/QmdnhsQCChzq2o5NgbeT3JxSsEcMm1PC9QW6zenZNPjD9F"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IRegistry.sol":{"keccak256":"0x51426a17fb7e54bd3720e2890104e97a8559a13ff248b3d6b840916751c143d3","urls":["bzz-raw://01f91289e6100d528cb8b318cb14ff22a0bc52882c9d4db41585e030cc9ddc25","dweb:/ipfs/Qmb22nqGrsrtNovHRwbMCvDHGENuxAgrWu3Db4p7Er2MHY"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IRegistryCoordinator.sol":{"keccak256":"0xdd8effb082c1d5957d5ff43d7c59497b32866a6d82bcc7d5efa49ea9bc9b3385","urls":["bzz-raw://cb33a2a1446585b13b7a509e880c60d658d2d2522ec48a9f02e30d2cff54002d","dweb:/ipfs/QmVNG8ZPZkXzNEadPdTj1uBYLiZdCnYfsE5iGU6nJcJXiD"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IServiceManager.sol":{"keccak256":"0x7602cfb4397a114a0ed60e70e8e1d729fdcf406b585838181b3cb3ffa6ac9a9a","urls":["bzz-raw://b718fa016a13a2a5ce298bc5ea7495cc70cf9c358211c75595d5c9dde9a6cc0f","dweb:/ipfs/QmQNrVmU7P7pRqGBJuTQDkjf3wMDY2kJm7zXdtQwsQTbzY"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IServiceManagerUI.sol":{"keccak256":"0x365761699b4a5b7360ee6c75f12606eefc4b0394754c8b8e1e1eefec0cba7ffb","urls":["bzz-raw://ac14ada180b66cbbc5f9de0d6b4bb87b5946d2a9569ae88f2f62aaca47e879a8","dweb:/ipfs/QmcN9xKYF24naNWc6cYah9suz5gJSYE9nPj9eZFWnP35VX"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IStakeRegistry.sol":{"keccak256":"0x1b8b4d757c1b804bc4cf6fbbf8bf8f89ebdeb30a31014751fe7d01deb9d513d4","urls":["bzz-raw://984bf2777b898ed187d28997f9783f5c293a1a1848e3e9aa470ce9183d454c97","dweb:/ipfs/Qme3aTpBrkLu8wYHFMZbCfhXHoZ1M6SpXkeC237T9BuU5B"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/libraries/BN254.sol":{"keccak256":"0xb428c8d0c3b325507a88a61a80115493eb88606ccc19ed64a31e11294ab853b3","urls":["bzz-raw://d7b6fb935bfe0494e6ff970c8f30a86d5f4cf5c3e0967300c28cd383c043acae","dweb:/ipfs/QmUHfFZaVjLPXhkBmcxrZhAHZaSFQDqXtrLGpjGBQBa5Ki"],"license":"MIT"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/libraries/BitmapUtils.sol":{"keccak256":"0x44315ac460be30a6b18fd4df4d1b8afb46653bf4dc06ca9f93c32353fd0605c5","urls":["bzz-raw://da14f2ead3a375b02afd09d4a02edddf7b63a88945746b96789b2473184fdb04","dweb:/ipfs/QmRqcjxa2Vv2MrLdPeAwsktXdWTirapEDsRbJCyYRtKT6g"],"license":"MIT"},"lib/aligned_layer/contracts/src/core/AlignedLayerServiceManager.sol":{"keccak256":"0x318fdb1cf3332466f725c56f6de37daf4b2078013d3e4c7a5d20be96b8259a29","urls":["bzz-raw://0e1c509ab8add93c822adc90092ddd3140a0ecb9cc2104ce420a5cdb18138569","dweb:/ipfs/QmRUrZ2tYofMww63P2NRo4fgx4DRBBNRHZbmWayMiAqeMi"],"license":"UNLICENSED"},"lib/aligned_layer/contracts/src/core/AlignedLayerServiceManagerStorage.sol":{"keccak256":"0x7359959b102fcb5f313d7a0a4a2497ff651c1836ec5259f4f86bd5d20da502ce","urls":["bzz-raw://e1990be0b54c7ab6734ff3096aac61c951d762e0dc6d52d3890a364fc1d92569","dweb:/ipfs/QmevhuweQnjTVBmxTyWucznnQ68kU1U5uHvtYm5FvkBfRR"],"license":null},"lib/aligned_layer/contracts/src/core/IAlignedLayerServiceManager.sol":{"keccak256":"0xdcec4919e7fdf7855a7f831291a4e5b3345739c88d2c6026f9b953d42f773c48","urls":["bzz-raw://2c37687aac70fa1281b5ccceb6208b5044eeb3c055286c20793632efd7f36adc","dweb:/ipfs/Qmb9CC8RumoALvjjUujbyCZWokzvg4feSEoQFZ3swdggLT"],"license":"UNLICENSED"},"src/MinaAccountValidationExample.sol":{"keccak256":"0xa9ee818322d8de643216c4d9d255277a6eaee06819e047e69c0f7d4bea5b366a","urls":["bzz-raw://a2229c41efb4d28eb61d80f8b36c3b97e9d6ae3c3dc7edc834ccceb6da33ac9e","dweb:/ipfs/QmTXT7CySKmsJhWEhdEYFvTUB61HReFhsY2b2k1jPWtVmN"],"license":"UNLICENSED"}},"version":1},"id":39} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"_alignedServiceAddr","type":"address","internalType":"address payable"}],"stateMutability":"nonpayable"},{"type":"function","name":"validateAccount","inputs":[{"name":"args","type":"tuple","internalType":"struct MinaAccountValidationExample.AlignedArgs","components":[{"name":"proofCommitment","type":"bytes32","internalType":"bytes32"},{"name":"provingSystemAuxDataCommitment","type":"bytes32","internalType":"bytes32"},{"name":"proofGeneratorAddr","type":"bytes20","internalType":"bytes20"},{"name":"batchMerkleRoot","type":"bytes32","internalType":"bytes32"},{"name":"merkleProof","type":"bytes","internalType":"bytes"},{"name":"verificationDataBatchIndex","type":"uint256","internalType":"uint256"},{"name":"pubInput","type":"bytes","internalType":"bytes"},{"name":"batcherPaymentService","type":"address","internalType":"address"}]}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"validateAccountAndReturn","inputs":[{"name":"args","type":"tuple","internalType":"struct MinaAccountValidationExample.AlignedArgs","components":[{"name":"proofCommitment","type":"bytes32","internalType":"bytes32"},{"name":"provingSystemAuxDataCommitment","type":"bytes32","internalType":"bytes32"},{"name":"proofGeneratorAddr","type":"bytes20","internalType":"bytes20"},{"name":"batchMerkleRoot","type":"bytes32","internalType":"bytes32"},{"name":"merkleProof","type":"bytes","internalType":"bytes"},{"name":"verificationDataBatchIndex","type":"uint256","internalType":"uint256"},{"name":"pubInput","type":"bytes","internalType":"bytes"},{"name":"batcherPaymentService","type":"address","internalType":"address"}]}],"outputs":[{"name":"","type":"tuple","internalType":"struct MinaAccountValidationExample.Account","components":[{"name":"publicKey","type":"tuple","internalType":"struct MinaAccountValidationExample.CompressedECPoint","components":[{"name":"x","type":"bytes32","internalType":"bytes32"},{"name":"isOdd","type":"bool","internalType":"bool"}]},{"name":"tokenIdKeyHash","type":"bytes32","internalType":"bytes32"},{"name":"tokenSymbol","type":"string","internalType":"string"},{"name":"balance","type":"uint64","internalType":"uint64"},{"name":"nonce","type":"uint32","internalType":"uint32"},{"name":"receiptChainHash","type":"bytes32","internalType":"bytes32"},{"name":"delegate","type":"tuple","internalType":"struct MinaAccountValidationExample.CompressedECPoint","components":[{"name":"x","type":"bytes32","internalType":"bytes32"},{"name":"isOdd","type":"bool","internalType":"bool"}]},{"name":"votingFor","type":"bytes32","internalType":"bytes32"},{"name":"timing","type":"tuple","internalType":"struct MinaAccountValidationExample.Timing","components":[{"name":"initialMinimumBalance","type":"uint64","internalType":"uint64"},{"name":"cliffTime","type":"uint32","internalType":"uint32"},{"name":"cliffAmount","type":"uint64","internalType":"uint64"},{"name":"vestingPeriod","type":"uint32","internalType":"uint32"},{"name":"vestingIncrement","type":"uint64","internalType":"uint64"}]},{"name":"permissions","type":"tuple","internalType":"struct MinaAccountValidationExample.Permissions","components":[{"name":"editState","type":"uint8","internalType":"enum MinaAccountValidationExample.AuthRequired"},{"name":"access","type":"uint8","internalType":"enum MinaAccountValidationExample.AuthRequired"},{"name":"send","type":"uint8","internalType":"enum MinaAccountValidationExample.AuthRequired"},{"name":"rreceive","type":"uint8","internalType":"enum MinaAccountValidationExample.AuthRequired"},{"name":"setDelegate","type":"uint8","internalType":"enum MinaAccountValidationExample.AuthRequired"},{"name":"setPermissions","type":"uint8","internalType":"enum MinaAccountValidationExample.AuthRequired"},{"name":"setVerificationKeyAuth","type":"uint8","internalType":"enum MinaAccountValidationExample.AuthRequired"},{"name":"setVerificationKeyUint","type":"uint32","internalType":"uint32"},{"name":"setZkappUri","type":"uint8","internalType":"enum MinaAccountValidationExample.AuthRequired"},{"name":"editActionState","type":"uint8","internalType":"enum MinaAccountValidationExample.AuthRequired"},{"name":"setTokenSymbol","type":"uint8","internalType":"enum MinaAccountValidationExample.AuthRequired"},{"name":"incrementNonce","type":"uint8","internalType":"enum MinaAccountValidationExample.AuthRequired"},{"name":"setVotingFor","type":"uint8","internalType":"enum MinaAccountValidationExample.AuthRequired"},{"name":"setTiming","type":"uint8","internalType":"enum MinaAccountValidationExample.AuthRequired"}]},{"name":"zkapp","type":"tuple","internalType":"struct MinaAccountValidationExample.ZkappAccount","components":[{"name":"appState","type":"bytes32[8]","internalType":"bytes32[8]"},{"name":"verificationKey","type":"tuple","internalType":"struct MinaAccountValidationExample.VerificationKey","components":[{"name":"maxProofsVerified","type":"uint8","internalType":"enum MinaAccountValidationExample.ProofsVerified"},{"name":"actualWrapDomainSize","type":"uint8","internalType":"enum MinaAccountValidationExample.ProofsVerified"},{"name":"wrapIndex","type":"tuple","internalType":"struct MinaAccountValidationExample.WrapIndex","components":[{"name":"sigmaComm","type":"tuple[7]","internalType":"struct MinaAccountValidationExample.Commitment[7]","components":[{"name":"x","type":"bytes32","internalType":"bytes32"},{"name":"y","type":"bytes32","internalType":"bytes32"}]},{"name":"coefficientsComm","type":"tuple[15]","internalType":"struct MinaAccountValidationExample.Commitment[15]","components":[{"name":"x","type":"bytes32","internalType":"bytes32"},{"name":"y","type":"bytes32","internalType":"bytes32"}]},{"name":"genericComm","type":"tuple","internalType":"struct MinaAccountValidationExample.Commitment","components":[{"name":"x","type":"bytes32","internalType":"bytes32"},{"name":"y","type":"bytes32","internalType":"bytes32"}]},{"name":"psmComm","type":"tuple","internalType":"struct MinaAccountValidationExample.Commitment","components":[{"name":"x","type":"bytes32","internalType":"bytes32"},{"name":"y","type":"bytes32","internalType":"bytes32"}]},{"name":"completeAddComm","type":"tuple","internalType":"struct MinaAccountValidationExample.Commitment","components":[{"name":"x","type":"bytes32","internalType":"bytes32"},{"name":"y","type":"bytes32","internalType":"bytes32"}]},{"name":"mulComm","type":"tuple","internalType":"struct MinaAccountValidationExample.Commitment","components":[{"name":"x","type":"bytes32","internalType":"bytes32"},{"name":"y","type":"bytes32","internalType":"bytes32"}]},{"name":"emulComm","type":"tuple","internalType":"struct MinaAccountValidationExample.Commitment","components":[{"name":"x","type":"bytes32","internalType":"bytes32"},{"name":"y","type":"bytes32","internalType":"bytes32"}]},{"name":"endomulScalarComm","type":"tuple","internalType":"struct MinaAccountValidationExample.Commitment","components":[{"name":"x","type":"bytes32","internalType":"bytes32"},{"name":"y","type":"bytes32","internalType":"bytes32"}]}]}]},{"name":"zkappVersion","type":"uint32","internalType":"uint32"},{"name":"actionState","type":"bytes32[5]","internalType":"bytes32[5]"},{"name":"lastActionSlot","type":"uint32","internalType":"uint32"},{"name":"provedState","type":"bool","internalType":"bool"},{"name":"zkappUri","type":"bytes","internalType":"bytes"}]}]}],"stateMutability":"view"},{"type":"error","name":"MinaAccountProvingSystemIdIsNotValid","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}]}],"bytecode":{"object":"0x608034606f57601f61121538819003918201601f19168301916001600160401b03831184841017607357808492602094604052833981010312606f57516001600160a01b03811690819003606f575f80546001600160a01b03191691909117905560405161118d90816100888239f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c80639029ad15146104445763c64787131461002f575f80fd5b34610440576100456100403661056b565b6108c9565b604051809160208252610068602083018251602080918051845201511515910152565b6020810151606083015261014061009060408301516103c060808601526103e085019061059f565b916001600160401b0360608201511660a085015263ffffffff60808201511660c085015260a081015160e08501526100dd60c0820151610100860190602080918051845201511515910152565b60e0810151828501526001600160401b0360806101008301518281511661016088015263ffffffff602082015116610180880152826040820151166101a088015263ffffffff6060820151166101c08801520151166101e08501526102456101a0610120830151610153610200880182516105c3565b61016660208201516102208901906105c3565b61017960408201516102408901906105c3565b61018c60608201516102608901906105c3565b61019f60808201516102808901906105c3565b6101b260a08201516102a08901906105c3565b6101c560c08201516102c08901906105c3565b63ffffffff60e0820151166102e08801526101ea6101008201516103008901906105c3565b6101fe6101208201516103208901906105c3565b610210858201516103408901906105c3565b6102246101608201516103608901906105c3565b6102386101808201516103808901906105c3565b01516103a08601906105c3565b0151828203601f19016103c084015280515f835b60088210610426575050506040602082015161027a610100850182516105e4565b61028d60208201516101208601906105e4565b015180515f61014085015b600782106103f25750505060208101515f61030085015b600f82106103be5750505060e081602060408194015180516106c088015201516106e086015282606082015180516107008801520151610720860152826080820151805161074088015201516107608601528260a0820151805161078088015201516107a08601528260c082015180516107c088015201516107e086015201518051610800850152015161082083015263ffffffff604082015116610840830152606081015161086083015f905b600582106103a457505050608081015163ffffffff1661090083015260a0810151151561092083015260c0015161096061094083018190526103a092019061059f565b0390f35b82518152869550602092830192600192909201910161035d565b8293949596506103e4602091600193945190602060409280518352015160208201520190565b9301910186959493926102af565b829394959650610418602091600193945190602060409280518352015160208201520190565b930191018695949392610298565b825181528695506020928301926001929092019101610259565b5f80fd5b34610440576104523661056b565b6020810135907fee2a4bc7db81da2b7164e56b3649b1e2a09c58c455b15dabddd9146c7582cebc8203610558578061049961049260c060209401836105f1565b3691610718565b8281519101209260018060a01b035f5416906104b76040840161075d565b906105016104c860808601866105f1565b90976104d660e08801610777565b91604051998a98899788976306045a9160e01b895260a0830135956060840135933560048b016107a3565b03915afa801561054d576020915f91610520575b506040519015158152f35b6105409150823d8411610546575b61053881836106f7565b81019061078b565b82610515565b503d61052e565b6040513d5f823e3d90fd5b5063060bd7bf60e21b5f5260045260245ffd5b602060031982011261044057600435906001600160401b038211610440576101009082900360031901126104405760040190565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b9060058210156105d05752565b634e487b7160e01b5f52602160045260245ffd5b9060038210156105d05752565b903590601e198136030182121561044057018035906001600160401b0382116104405760200191813603831361044057565b604081019081106001600160401b0382111761063e57604052565b634e487b7160e01b5f52604160045260245ffd5b61016081019081106001600160401b0382111761063e57604052565b60a081019081106001600160401b0382111761063e57604052565b6101c081019081106001600160401b0382111761063e57604052565b60e081019081106001600160401b0382111761063e57604052565b606081019081106001600160401b0382111761063e57604052565b61010081019081106001600160401b0382111761063e57604052565b90601f801991011681019081106001600160401b0382111761063e57604052565b9291926001600160401b03821161063e5760405191610741601f8201601f1916602001846106f7565b829481845281830111610440578281602093845f960137010152565b356bffffffffffffffffffffffff19811681036104405790565b356001600160a01b03811681036104405790565b90816020910312610440575180151581036104405790565b97999895919387949360e0989461012097938b5260208b015260408a01526bffffffffffffffffffffffff19166060890152608088015261010060a088015281610100880152838701375f828287010152601f80199101168401019460c084015260018060a01b0316910152565b5f5b82811061081f57505050565b60209060405161082e81610623565b5f81525f838201528184015201610813565b3590811515820361044057565b91908260409103126104405760405161086581610623565b60206108778183958035855201610840565b910152565b35906001600160401b038216820361044057565b359063ffffffff8216820361044057565b9190826040910312610440576040516108b981610623565b6020808294803584520135910152565b604051906108d682610652565b6040516108e281610623565b5f81525f602082015282525f6020830152606060408301525f60608301525f60808301525f60a083015260405161091881610623565b5f81525f602082015260c08301525f60e08301526040516109388161066e565b5f81525f60208201525f60408201525f60608201525f608082015261010083015260405161096581610689565b5f81525f60208201525f60408201525f60608201525f60808201525f60a08201525f60c08201525f60e08201525f6101008201525f6101208201525f6101408201525f6101608201525f6101808201525f6101a0820152610120830152604051906109cf826106a5565b610100906040516109e083826106f7565b823682378352604051926109f3846106c0565b5f84525f602085015260405193610a09856106db565b60e094604051610a1987826106f7565b610a238782610811565b8152604051610a3e6101e0610a3881846106f7565b82610811565b6020820152604051610a4f81610623565b5f81525f60208201526040820152604051610a6981610623565b5f81525f60208201526060820152604051610a8381610623565b5f81525f60208201526080820152604051610a9d81610623565b5f81525f602082015260a0820152604051610ab781610623565b5f81525f602082015260c0820152604051610ad181610623565b5f81525f602082015286820152604082015260208201525f604082015261014060a095604051610b0188826106f7565b8736823760608401525f60808401525f87840152606060c0840152015260208101357fee2a4bc7db81da2b7164e56b3649b1e2a09c58c455b15dabddd9146c7582cebc81036111455781602060c0820192610b5f61049285856105f1565b8281519101209060018060a01b035f54169089610bc68a610b826040890161075d565b95610b9d610b9360808b018b6105f1565b9190938b01610777565b926040519a8b998a9889986306045a9160e01b8a52830135956060840135933560048b016107a3565b03915afa90811561054d575f91611126575b501561044057610be7916105f1565b806028939293116104405782019160208184036027190112610440576028810135906001600160401b03821161044057018083036027190194906103c086126104405760405195610c3787610652565b610c44856028840161084d565b87526068820135602088015260888201356001600160401b0381116104405760289083010185601f820112156104405785816020610c8493359101610718565b6040880152610c9560a8830161087c565b6060880152610ca660c88301610890565b608088015260e882013583880152610cc285610108840161084d565b60c0880152610148820135868801528261013f19820112610440576101c090604051610ced8161066e565b610cfa610168850161087c565b8152610d096101888501610890565b6020820152610d1b6101a8850161087c565b6040820152610d2d6101c88501610890565b6060820152610d3f6101e8850161087c565b6080820152888601526101df19011261044057604051610d5e81610689565b610208820135600581101561044057815261022882013560058110156104405760208201526102488201356005811015610440576040820152610268820135600581101561044057606082015261028882013560058110156104405760808201526102a8820135600581101561044057838201526102c882013560058110156104405760c0820152610df36102e88301610890565b86820152610308820135600581101561044057848201526103288201356005811015610440576101208201526103488201356005811015610440576101408201526103688201356005811015610440576101608201526103888201356005811015610440576101808201526103a88201356005811015610440576101a08201526101208701526103c88101356001600160401b038111610440576028910101918284039461096086126104405760405195610ead876106a5565b85601f8601121561044057604051610ec7610100826106f7565b80938601938785116104405786905b858210611116575050875261074060ff198201126104405760405192610efb846106c0565b3560038110156104405783526101208501359060038210156104405761070091602085015261013f1901126104405760405190610f37826106db565b8561015f8601121561044057604051610f5160e0826106f7565b80610300870191888311610440576101408801905b8382106110fc57505083528661031f8701121561044057604051610f8c6101e0826106f7565b806106c0880192898411610440578992915b8482106110de5750506020850152610fb5916108a1565b6040830152610fc88661070087016108a1565b6060830152610fdb8661074087016108a1565b6080830152610fee8661078087016108a1565b84830152611000866107c087016108a1565b60c08301526110138661080087016108a1565b908201526040820152602085015261102e6108408301610890565b60408501528261087f830112156104405760405161104d60a0826106f7565b80610900840191858311610440576108608501905b8382106110ce575050606086015261107990610890565b608085015261108b6109208301610840565b90840152610940810135906001600160401b03821161044057019080601f83011215610440578160206110c093359101610718565b60c082015261014082015290565b8135815260209182019101611062565b6020906110ef8394956040946108a1565b8152019101899291610f9e565b602060409161110b8c856108a1565b815201910190610f66565b8135815260209182019101610ed6565b61113f915060203d6020116105465761053881836106f7565b5f610bd8565b63060bd7bf60e21b5f5260045260245ffdfea264697066735822122044e50d3ef53c79ac6616ce53106560ea6b49950bc2ae1123f6dccfcc063eb95764736f6c634300081e0033","sourceMap":"350:4428:39:-:0;;;;;;;;;;;;;-1:-1:-1;;350:4428:39;;;;-1:-1:-1;;;;;350:4428:39;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;350:4428:39;;;;;;;;-1:-1:-1;350:4428:39;;-1:-1:-1;;;;;;350:4428:39;;;;;;;;;;;;;;;;;-1:-1:-1;350:4428:39;;;;;;-1:-1:-1;350:4428:39;;;;;-1:-1:-1;350:4428:39","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c80639029ad15146104445763c64787131461002f575f80fd5b34610440576100456100403661056b565b6108c9565b604051809160208252610068602083018251602080918051845201511515910152565b6020810151606083015261014061009060408301516103c060808601526103e085019061059f565b916001600160401b0360608201511660a085015263ffffffff60808201511660c085015260a081015160e08501526100dd60c0820151610100860190602080918051845201511515910152565b60e0810151828501526001600160401b0360806101008301518281511661016088015263ffffffff602082015116610180880152826040820151166101a088015263ffffffff6060820151166101c08801520151166101e08501526102456101a0610120830151610153610200880182516105c3565b61016660208201516102208901906105c3565b61017960408201516102408901906105c3565b61018c60608201516102608901906105c3565b61019f60808201516102808901906105c3565b6101b260a08201516102a08901906105c3565b6101c560c08201516102c08901906105c3565b63ffffffff60e0820151166102e08801526101ea6101008201516103008901906105c3565b6101fe6101208201516103208901906105c3565b610210858201516103408901906105c3565b6102246101608201516103608901906105c3565b6102386101808201516103808901906105c3565b01516103a08601906105c3565b0151828203601f19016103c084015280515f835b60088210610426575050506040602082015161027a610100850182516105e4565b61028d60208201516101208601906105e4565b015180515f61014085015b600782106103f25750505060208101515f61030085015b600f82106103be5750505060e081602060408194015180516106c088015201516106e086015282606082015180516107008801520151610720860152826080820151805161074088015201516107608601528260a0820151805161078088015201516107a08601528260c082015180516107c088015201516107e086015201518051610800850152015161082083015263ffffffff604082015116610840830152606081015161086083015f905b600582106103a457505050608081015163ffffffff1661090083015260a0810151151561092083015260c0015161096061094083018190526103a092019061059f565b0390f35b82518152869550602092830192600192909201910161035d565b8293949596506103e4602091600193945190602060409280518352015160208201520190565b9301910186959493926102af565b829394959650610418602091600193945190602060409280518352015160208201520190565b930191018695949392610298565b825181528695506020928301926001929092019101610259565b5f80fd5b34610440576104523661056b565b6020810135907fee2a4bc7db81da2b7164e56b3649b1e2a09c58c455b15dabddd9146c7582cebc8203610558578061049961049260c060209401836105f1565b3691610718565b8281519101209260018060a01b035f5416906104b76040840161075d565b906105016104c860808601866105f1565b90976104d660e08801610777565b91604051998a98899788976306045a9160e01b895260a0830135956060840135933560048b016107a3565b03915afa801561054d576020915f91610520575b506040519015158152f35b6105409150823d8411610546575b61053881836106f7565b81019061078b565b82610515565b503d61052e565b6040513d5f823e3d90fd5b5063060bd7bf60e21b5f5260045260245ffd5b602060031982011261044057600435906001600160401b038211610440576101009082900360031901126104405760040190565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b9060058210156105d05752565b634e487b7160e01b5f52602160045260245ffd5b9060038210156105d05752565b903590601e198136030182121561044057018035906001600160401b0382116104405760200191813603831361044057565b604081019081106001600160401b0382111761063e57604052565b634e487b7160e01b5f52604160045260245ffd5b61016081019081106001600160401b0382111761063e57604052565b60a081019081106001600160401b0382111761063e57604052565b6101c081019081106001600160401b0382111761063e57604052565b60e081019081106001600160401b0382111761063e57604052565b606081019081106001600160401b0382111761063e57604052565b61010081019081106001600160401b0382111761063e57604052565b90601f801991011681019081106001600160401b0382111761063e57604052565b9291926001600160401b03821161063e5760405191610741601f8201601f1916602001846106f7565b829481845281830111610440578281602093845f960137010152565b356bffffffffffffffffffffffff19811681036104405790565b356001600160a01b03811681036104405790565b90816020910312610440575180151581036104405790565b97999895919387949360e0989461012097938b5260208b015260408a01526bffffffffffffffffffffffff19166060890152608088015261010060a088015281610100880152838701375f828287010152601f80199101168401019460c084015260018060a01b0316910152565b5f5b82811061081f57505050565b60209060405161082e81610623565b5f81525f838201528184015201610813565b3590811515820361044057565b91908260409103126104405760405161086581610623565b60206108778183958035855201610840565b910152565b35906001600160401b038216820361044057565b359063ffffffff8216820361044057565b9190826040910312610440576040516108b981610623565b6020808294803584520135910152565b604051906108d682610652565b6040516108e281610623565b5f81525f602082015282525f6020830152606060408301525f60608301525f60808301525f60a083015260405161091881610623565b5f81525f602082015260c08301525f60e08301526040516109388161066e565b5f81525f60208201525f60408201525f60608201525f608082015261010083015260405161096581610689565b5f81525f60208201525f60408201525f60608201525f60808201525f60a08201525f60c08201525f60e08201525f6101008201525f6101208201525f6101408201525f6101608201525f6101808201525f6101a0820152610120830152604051906109cf826106a5565b610100906040516109e083826106f7565b823682378352604051926109f3846106c0565b5f84525f602085015260405193610a09856106db565b60e094604051610a1987826106f7565b610a238782610811565b8152604051610a3e6101e0610a3881846106f7565b82610811565b6020820152604051610a4f81610623565b5f81525f60208201526040820152604051610a6981610623565b5f81525f60208201526060820152604051610a8381610623565b5f81525f60208201526080820152604051610a9d81610623565b5f81525f602082015260a0820152604051610ab781610623565b5f81525f602082015260c0820152604051610ad181610623565b5f81525f602082015286820152604082015260208201525f604082015261014060a095604051610b0188826106f7565b8736823760608401525f60808401525f87840152606060c0840152015260208101357fee2a4bc7db81da2b7164e56b3649b1e2a09c58c455b15dabddd9146c7582cebc81036111455781602060c0820192610b5f61049285856105f1565b8281519101209060018060a01b035f54169089610bc68a610b826040890161075d565b95610b9d610b9360808b018b6105f1565b9190938b01610777565b926040519a8b998a9889986306045a9160e01b8a52830135956060840135933560048b016107a3565b03915afa90811561054d575f91611126575b501561044057610be7916105f1565b806028939293116104405782019160208184036027190112610440576028810135906001600160401b03821161044057018083036027190194906103c086126104405760405195610c3787610652565b610c44856028840161084d565b87526068820135602088015260888201356001600160401b0381116104405760289083010185601f820112156104405785816020610c8493359101610718565b6040880152610c9560a8830161087c565b6060880152610ca660c88301610890565b608088015260e882013583880152610cc285610108840161084d565b60c0880152610148820135868801528261013f19820112610440576101c090604051610ced8161066e565b610cfa610168850161087c565b8152610d096101888501610890565b6020820152610d1b6101a8850161087c565b6040820152610d2d6101c88501610890565b6060820152610d3f6101e8850161087c565b6080820152888601526101df19011261044057604051610d5e81610689565b610208820135600581101561044057815261022882013560058110156104405760208201526102488201356005811015610440576040820152610268820135600581101561044057606082015261028882013560058110156104405760808201526102a8820135600581101561044057838201526102c882013560058110156104405760c0820152610df36102e88301610890565b86820152610308820135600581101561044057848201526103288201356005811015610440576101208201526103488201356005811015610440576101408201526103688201356005811015610440576101608201526103888201356005811015610440576101808201526103a88201356005811015610440576101a08201526101208701526103c88101356001600160401b038111610440576028910101918284039461096086126104405760405195610ead876106a5565b85601f8601121561044057604051610ec7610100826106f7565b80938601938785116104405786905b858210611116575050875261074060ff198201126104405760405192610efb846106c0565b3560038110156104405783526101208501359060038210156104405761070091602085015261013f1901126104405760405190610f37826106db565b8561015f8601121561044057604051610f5160e0826106f7565b80610300870191888311610440576101408801905b8382106110fc57505083528661031f8701121561044057604051610f8c6101e0826106f7565b806106c0880192898411610440578992915b8482106110de5750506020850152610fb5916108a1565b6040830152610fc88661070087016108a1565b6060830152610fdb8661074087016108a1565b6080830152610fee8661078087016108a1565b84830152611000866107c087016108a1565b60c08301526110138661080087016108a1565b908201526040820152602085015261102e6108408301610890565b60408501528261087f830112156104405760405161104d60a0826106f7565b80610900840191858311610440576108608501905b8382106110ce575050606086015261107990610890565b608085015261108b6109208301610840565b90840152610940810135906001600160401b03821161044057019080601f83011215610440578160206110c093359101610718565b60c082015261014082015290565b8135815260209182019101611062565b6020906110ef8394956040946108a1565b8152019101899291610f9e565b602060409161110b8c856108a1565b815201910190610f66565b8135815260209182019101610ed6565b61113f915060203d6020116105465761053881836106f7565b5f610bd8565b63060bd7bf60e21b5f5260045260245ffdfea264697066735822122044e50d3ef53c79ac6616ce53106560ea6b49950bc2ae1123f6dccfcc063eb95764736f6c634300081e0033","sourceMap":"350:4428:39:-:0;;;;;;;;;;;;;;;;;;;;;;;1226:35;;;350:4428;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;350:4428:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;350:4428:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;350:4428:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;350:4428:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;350:4428:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;350:4428:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;350:4428:39;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1226:35;;;350:4428;1226:61;502:66;1226:61;;1222:172;;1443:13;502:66;1443:13;;1226:35;1443:13;;;;:::i;:::-;350:4428;502:66;;:::i;:::-;350:4428;;;502:66;;1433:24;502:66;;;;;;350:4428;502:66;;1632:23;;350:4428;1632:23;;;:::i;:::-;1703:16;1475:339;1703:16;;;;;;:::i;:::-;1778:26;;;350:4428;1778:26;;;:::i;:::-;350:4428;;;502:66;;;;;;;;;;1475:339;;1733:31;;;502:66;1669:20;;;;350:4428;;;;1475:339;;;:::i;:::-;;;;;;;;;1226:35;1475:339;350:4428;1475:339;;;350:4428;;;;;;;;;;1475:339;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;350:4428;;502:66;350:4428;502:66;;;;;1222:172;1310:73;;;;350:4428;1310:73;350:4428;;502:66;350:4428;1310:73;350:4428;;-1:-1:-1;;350:4428:39;;;;;;;;-1:-1:-1;;;;;350:4428:39;;;;;;;;;-1:-1:-1;;350:4428:39;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;350:4428:39;;;;;;;;-1:-1:-1;;350:4428:39;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;-1:-1:-1;350:4428:39;;;;;-1:-1:-1;350:4428:39;;;;;;;;;;:::o;502:66::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;502:66:39;;;;;;;;;;;;;;:::o;:::-;350:4428;502:66;;;;;-1:-1:-1;;;;;502:66:39;;;;;350:4428;502:66;:::o;:::-;350:4428;;;-1:-1:-1;502:66:39;;;;;-1:-1:-1;502:66:39;;350:4428;502:66;;;;;-1:-1:-1;;;;;502:66:39;;;;;;;:::o;:::-;350:4428;502:66;;;;;-1:-1:-1;;;;;502:66:39;;;;;;;:::o;:::-;350:4428;502:66;;;;;-1:-1:-1;;;;;502:66:39;;;;;;;:::o;:::-;350:4428;502:66;;;;;-1:-1:-1;;;;;502:66:39;;;;;;;:::o;:::-;350:4428;502:66;;;;;-1:-1:-1;;;;;502:66:39;;;;;;;:::o;:::-;350:4428;502:66;;;;;-1:-1:-1;;;;;502:66:39;;;;;;;:::o;:::-;;350:4428;;;;;;502:66;;;;;-1:-1:-1;;;;;502:66:39;;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;502:66:39;;;;350:4428;;;502:66;350:4428;;;-1:-1:-1;;350:4428:39;502:66;;350:4428;502:66;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;502:66:39;;;;;;:::o;:::-;;-1:-1:-1;;502:66:39;;;;;;;:::o;:::-;;-1:-1:-1;;;;;502:66:39;;;;;;;:::o;:::-;;;;;;;;;;350:4428;;;502:66;;;;;:::o;:::-;;;;;;;;;;;;;350:4428;502:66;;350:4428;;502:66;;;350:4428;502:66;;;350:4428;502:66;;;;;;;;;;350:4428;502:66;;;;;;;;;350:4428;;;;502:66;;;;;;;;350:4428;;;;;;502:66;;;;;;;350:4428;502:66;;;;;;;;;:::o;350:4428::-;;;;;;;;;;;:::o;:::-;;;;;502:66;;;:::i;:::-;-1:-1:-1;350:4428:39;;-1:-1:-1;350:4428:39;;;;;;;;;;;;;;;;;502:66;;;;350:4428::o;:::-;;;;;;;;;;;;502:66;;;:::i;:::-;350:4428;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;-1:-1:-1;;;;;350:4428:39;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;502:66;;;:::i;:::-;350:4428;;;;;;;;;;;;;:::o;1827:876::-;350:4428;;502:66;;;;:::i;:::-;350:4428;;502:66;;;:::i;:::-;-1:-1:-1;350:4428:39;;-1:-1:-1;350:4428:39;;;;;;-1:-1:-1;350:4428:39;;;;;;;;;-1:-1:-1;350:4428:39;;;;-1:-1:-1;350:4428:39;;;;-1:-1:-1;350:4428:39;;;;;;502:66;;;:::i;:::-;-1:-1:-1;350:4428:39;;-1:-1:-1;350:4428:39;;;;;;;;-1:-1:-1;350:4428:39;;;;;;502:66;;;:::i;:::-;-1:-1:-1;350:4428:39;;-1:-1:-1;350:4428:39;;;;-1:-1:-1;350:4428:39;;;;-1:-1:-1;350:4428:39;;;;-1:-1:-1;350:4428:39;;;;;;;;;;502:66;;;:::i;:::-;-1:-1:-1;350:4428:39;;-1:-1:-1;350:4428:39;;;;-1:-1:-1;350:4428:39;;;;-1:-1:-1;350:4428:39;;;;-1:-1:-1;350:4428:39;;;;-1:-1:-1;350:4428:39;;;;-1:-1:-1;350:4428:39;;;;-1:-1:-1;350:4428:39;;;;-1:-1:-1;350:4428:39;;;;-1:-1:-1;350:4428:39;;;;-1:-1:-1;350:4428:39;;;;-1:-1:-1;350:4428:39;;;;-1:-1:-1;350:4428:39;;;;-1:-1:-1;350:4428:39;;;;;;;;;;502:66;;;;:::i;:::-;350:4428;;;;502:66;;;;:::i;:::-;350:4428;;;;;;;;502:66;;;;:::i;:::-;-1:-1:-1;350:4428:39;;-1:-1:-1;350:4428:39;;;;;;502:66;;;;:::i;:::-;350:4428;;;;502:66;;;;:::i;:::-;350:4428;;;;:::i;:::-;;;;;;;502:66;350:4428;;502:66;:::i;:::-;350:4428;;:::i;:::-;;;;;;;502:66;;;:::i;:::-;-1:-1:-1;350:4428:39;;-1:-1:-1;350:4428:39;;;;;;;;;;502:66;;;:::i;:::-;-1:-1:-1;350:4428:39;;-1:-1:-1;350:4428:39;;;;;;;;;;502:66;;;:::i;:::-;-1:-1:-1;350:4428:39;;-1:-1:-1;350:4428:39;;;;;;;;;;502:66;;;:::i;:::-;-1:-1:-1;350:4428:39;;-1:-1:-1;350:4428:39;;;;;;;;;;502:66;;;:::i;:::-;-1:-1:-1;350:4428:39;;-1:-1:-1;350:4428:39;;;;;;;;;;502:66;;;:::i;:::-;-1:-1:-1;350:4428:39;;-1:-1:-1;350:4428:39;;;;;;;;;;;;;;;;-1:-1:-1;350:4428:39;;;;;;;;;502:66;;;;:::i;:::-;350:4428;;;;;;;;-1:-1:-1;350:4428:39;;;;-1:-1:-1;350:4428:39;;;;;;;;;;;;1941:35;;350:4428;502:66;1941:61;;1937:172;;2158:13;350:4428;;2158:13;;;502:66;2158:13;;;;:::i;502:66::-;350:4428;;;502:66;;2148:24;502:66;;;;;;-1:-1:-1;502:66:39;;2365:23;;2208:339;2365:23;;350:4428;2365:23;;;:::i;:::-;2436:16;2511:26;2436:16;350:4428;2436:16;;;;:::i;:::-;2511:26;;;;;;:::i;:::-;350:4428;;;502:66;;;;;;;;;;2208:339;;2466:31;;502:66;2402:20;350:4428;2402:20;;350:4428;;;2208:339;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;2208:339:39;;;1827:876;-1:-1:-1;2558:139:39;;;2613:13;;;:::i;:::-;350:4428;2627:6;350:4428;;;;;;2602:45;;;350:4428;;;;-1:-1:-1;;350:4428:39;;;;2627:6;350:4428;;;;-1:-1:-1;;;;;350:4428:39;;;;;;;;-1:-1:-1;;350:4428:39;;;;;;;;;;502:66;;;;:::i;:::-;350:4428;;2627:6;350:4428;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;350:4428:39;;;;2627:6;350:4428;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;502:66;;;:::i;:::-;350:4428;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;350:4428:39;;;;;;502:66;;;:::i;:::-;350:4428;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;350:4428:39;;;;2627:6;350:4428;;;;;;;;;;;;;;;502:66;;;;:::i;:::-;350:4428;;;;;;;;;;502:66;350:4428;;502:66;:::i;:::-;350:4428;;;;;;;;;;;;;;;;;;-1:-1:-1;;350:4428:39;;;-1:-1:-1;;350:4428:39;;;;;;;502:66;;;;:::i;:::-;350:4428;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;502:66;;;;:::i;:::-;350:4428;;;;;;;;;;502:66;350:4428;;502:66;:::i;:::-;350:4428;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;502:66;350:4428;;502:66;:::i;:::-;350:4428;;;;;;;;;;;;;;;;;;;-1:-1:-1;;350:4428:39;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;502:66;350:4428;;502:66;:::i;:::-;350:4428;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;350:4428:39;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;350:4428:39;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;2595:52;:::o;350:4428::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;2208:339;;;;350:4428;2208:339;350:4428;2208:339;;;;;;;:::i;:::-;;;;1937:172;1310:73;;;-1:-1:-1;2025:73:39;;350:4428;502:66;-1:-1:-1;2025:73:39","linkReferences":{}},"methodIdentifiers":{"validateAccount((bytes32,bytes32,bytes20,bytes32,bytes,uint256,bytes,address))":"9029ad15","validateAccountAndReturn((bytes32,bytes32,bytes20,bytes32,bytes,uint256,bytes,address))":"c6478713"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"_alignedServiceAddr\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"MinaAccountProvingSystemIdIsNotValid\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"proofCommitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"provingSystemAuxDataCommitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes20\",\"name\":\"proofGeneratorAddr\",\"type\":\"bytes20\"},{\"internalType\":\"bytes32\",\"name\":\"batchMerkleRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"merkleProof\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"verificationDataBatchIndex\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"pubInput\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"batcherPaymentService\",\"type\":\"address\"}],\"internalType\":\"struct MinaAccountValidationExample.AlignedArgs\",\"name\":\"args\",\"type\":\"tuple\"}],\"name\":\"validateAccount\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"proofCommitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"provingSystemAuxDataCommitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes20\",\"name\":\"proofGeneratorAddr\",\"type\":\"bytes20\"},{\"internalType\":\"bytes32\",\"name\":\"batchMerkleRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"merkleProof\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"verificationDataBatchIndex\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"pubInput\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"batcherPaymentService\",\"type\":\"address\"}],\"internalType\":\"struct MinaAccountValidationExample.AlignedArgs\",\"name\":\"args\",\"type\":\"tuple\"}],\"name\":\"validateAccountAndReturn\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"isOdd\",\"type\":\"bool\"}],\"internalType\":\"struct MinaAccountValidationExample.CompressedECPoint\",\"name\":\"publicKey\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"tokenIdKeyHash\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"tokenSymbol\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"balance\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"receiptChainHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"isOdd\",\"type\":\"bool\"}],\"internalType\":\"struct MinaAccountValidationExample.CompressedECPoint\",\"name\":\"delegate\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"votingFor\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"initialMinimumBalance\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"cliffTime\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"cliffAmount\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"vestingPeriod\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"vestingIncrement\",\"type\":\"uint64\"}],\"internalType\":\"struct MinaAccountValidationExample.Timing\",\"name\":\"timing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum MinaAccountValidationExample.AuthRequired\",\"name\":\"editState\",\"type\":\"uint8\"},{\"internalType\":\"enum MinaAccountValidationExample.AuthRequired\",\"name\":\"access\",\"type\":\"uint8\"},{\"internalType\":\"enum MinaAccountValidationExample.AuthRequired\",\"name\":\"send\",\"type\":\"uint8\"},{\"internalType\":\"enum MinaAccountValidationExample.AuthRequired\",\"name\":\"rreceive\",\"type\":\"uint8\"},{\"internalType\":\"enum MinaAccountValidationExample.AuthRequired\",\"name\":\"setDelegate\",\"type\":\"uint8\"},{\"internalType\":\"enum MinaAccountValidationExample.AuthRequired\",\"name\":\"setPermissions\",\"type\":\"uint8\"},{\"internalType\":\"enum MinaAccountValidationExample.AuthRequired\",\"name\":\"setVerificationKeyAuth\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"setVerificationKeyUint\",\"type\":\"uint32\"},{\"internalType\":\"enum MinaAccountValidationExample.AuthRequired\",\"name\":\"setZkappUri\",\"type\":\"uint8\"},{\"internalType\":\"enum MinaAccountValidationExample.AuthRequired\",\"name\":\"editActionState\",\"type\":\"uint8\"},{\"internalType\":\"enum MinaAccountValidationExample.AuthRequired\",\"name\":\"setTokenSymbol\",\"type\":\"uint8\"},{\"internalType\":\"enum MinaAccountValidationExample.AuthRequired\",\"name\":\"incrementNonce\",\"type\":\"uint8\"},{\"internalType\":\"enum MinaAccountValidationExample.AuthRequired\",\"name\":\"setVotingFor\",\"type\":\"uint8\"},{\"internalType\":\"enum MinaAccountValidationExample.AuthRequired\",\"name\":\"setTiming\",\"type\":\"uint8\"}],\"internalType\":\"struct MinaAccountValidationExample.Permissions\",\"name\":\"permissions\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32[8]\",\"name\":\"appState\",\"type\":\"bytes32[8]\"},{\"components\":[{\"internalType\":\"enum MinaAccountValidationExample.ProofsVerified\",\"name\":\"maxProofsVerified\",\"type\":\"uint8\"},{\"internalType\":\"enum MinaAccountValidationExample.ProofsVerified\",\"name\":\"actualWrapDomainSize\",\"type\":\"uint8\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"internalType\":\"struct MinaAccountValidationExample.Commitment[7]\",\"name\":\"sigmaComm\",\"type\":\"tuple[7]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"internalType\":\"struct MinaAccountValidationExample.Commitment[15]\",\"name\":\"coefficientsComm\",\"type\":\"tuple[15]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"internalType\":\"struct MinaAccountValidationExample.Commitment\",\"name\":\"genericComm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"internalType\":\"struct MinaAccountValidationExample.Commitment\",\"name\":\"psmComm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"internalType\":\"struct MinaAccountValidationExample.Commitment\",\"name\":\"completeAddComm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"internalType\":\"struct MinaAccountValidationExample.Commitment\",\"name\":\"mulComm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"internalType\":\"struct MinaAccountValidationExample.Commitment\",\"name\":\"emulComm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"internalType\":\"struct MinaAccountValidationExample.Commitment\",\"name\":\"endomulScalarComm\",\"type\":\"tuple\"}],\"internalType\":\"struct MinaAccountValidationExample.WrapIndex\",\"name\":\"wrapIndex\",\"type\":\"tuple\"}],\"internalType\":\"struct MinaAccountValidationExample.VerificationKey\",\"name\":\"verificationKey\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"zkappVersion\",\"type\":\"uint32\"},{\"internalType\":\"bytes32[5]\",\"name\":\"actionState\",\"type\":\"bytes32[5]\"},{\"internalType\":\"uint32\",\"name\":\"lastActionSlot\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"provedState\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"zkappUri\",\"type\":\"bytes\"}],\"internalType\":\"struct MinaAccountValidationExample.ZkappAccount\",\"name\":\"zkapp\",\"type\":\"tuple\"}],\"internalType\":\"struct MinaAccountValidationExample.Account\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"WARNING: This contract is meant ot be used as an example of how to use the Bridge. NEVER use this contract in a production environment.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MinaAccountValidationExample.sol\":\"MinaAccountValidationExample\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/\",\":aligned_layer/=lib/aligned_layer/\",\":ds-test/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/\",\":eigenlayer-core-contracts/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/core/\",\":eigenlayer-core/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/\",\":eigenlayer-middleware/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/\",\":eigenlayer-scripts/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/script/\",\":erc4626-tests/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/aligned_layer/claim_contracts/lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol\":{\"keccak256\":\"0x3f67ab9b510b02dc3c07014b49785f1e167401bdb39cc10f737bbf545632d938\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://48d1267e2df6c8ac9b8f419269ff3d23be9b62606ee6b6d2278c27ffebfd73aa\",\"dweb:/ipfs/QmaFyywKCm1eotKjF1evryW8BMQJzPDstZm1wMRW79phXG\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983\",\"dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0xab76a9f4eff865cbb689f627cf98263488765519d7a4ec5ffbcb0ca4972842f9\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ff57ce18e8350bf39f190645db0988bc0f1279f1872150a114a1b520c38a2914\",\"dweb:/ipfs/QmSsUXkNUqYuJgGRumHTSs9rAaboGjecotcM4xHrdBYWaZ\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91\",\"dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol\":{\"keccak256\":\"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc\",\"dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8\",\"dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol\":{\"keccak256\":\"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324\",\"dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d\",\"dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IRewardsCoordinator.sol\":{\"keccak256\":\"0xeab6f1140a90eb7f107d95bae1e8b2ecfbfe36282d62c9df69e6a564c2c59771\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://785cd2777cdcab3b827b5eef2a4dae02c56db07252fdcefd8dd1016be034dc71\",\"dweb:/ipfs/QmNyDFchTuMeiVoxNEfQw96JVq7DfkohGz1txKXe7HyNbq\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c\",\"dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol\":{\"keccak256\":\"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232\",\"dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0x68bf02a443fc8b2f612eba3d39bfefa5f61f78b549f111cdecec5f2c58236a52\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://76bc6875ce74128b861fdac5fd1c0c72f3cc9bacf67fa4a73721b95fb23959ef\",\"dweb:/ipfs/QmPix4WJmf9fXyMZxfgwXEHBcg7V4NAbRqs4HUf5YrSJcM\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol\":{\"keccak256\":\"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7\",\"dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol\":{\"keccak256\":\"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f\",\"dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol\":{\"keccak256\":\"0x9095fc29b96d102b10c02d44b3a6fbfa25593ef6ae4a810363ab885b9e6b0f71\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0945132d482d56278edddb1d32209903c4d3839c87ba4317aadd97dc23610d0f\",\"dweb:/ipfs/QmVuM2aLRHxitx4rPx3GTYTBCVNcjYn6sHBRr1biUjLBP5\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/permissions/Pausable.sol\":{\"keccak256\":\"0xce8ee0ab28f2bce9e94aa19fffe55bebef080327632ac98ff3ab14994b369bc0\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5c7e2be97a8840fa2a0434077a36136553a84efd9bff4b46712ce9fddb813a6a\",\"dweb:/ipfs/QmZKvgPxLAbGo1CqTA4AX6MCDPFLSSNt43ZKWRjvvzFp7S\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/BLSSignatureChecker.sol\":{\"keccak256\":\"0x3a5c205c596d3d73c7afa63ffbbfac8204f6d6a26c151ef26b47278981c3c0fe\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://4beb88bf5b7c7e614f0d87b157d7a4b67afbf1cc93f3127622bd66f696799241\",\"dweb:/ipfs/QmWJKb6qsd69bWgpAHX6deCkJqmJdo9oBLQAXJk97gWEE2\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/ServiceManagerBase.sol\":{\"keccak256\":\"0x7e32ef76daf32e5eb5a93cecf204223e64243f42afe70c7ca71ad3db3925b9c4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://19c10aa22f2e86e27e946b65c434e541caa6af06fcdde46c3b5e9b42890bd221\",\"dweb:/ipfs/QmPb5qDRdbJTniKSqsbjVhbtwdb72G9hWPYcHtVvj1zBxg\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/ServiceManagerBaseStorage.sol\":{\"keccak256\":\"0xa544114dbf6d973a815f997a2ac9237c531c40b08c91d3a65a23b152ed621e1e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://4cf69f9be7d3f3c4184b61b267280a829040973633ea9d95e2ec0dbf70f40a2e\",\"dweb:/ipfs/QmT2HeCJWBLX2p4KAWnyU318MMx9USb2brqCKq1vn2pXpR\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IBLSApkRegistry.sol\":{\"keccak256\":\"0xc07a5edfd95ab4f16f16a8dc8e76eadf4b0e90fe49db90540d01daaad86898c5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://52b53266450a53da641e82d8ae3be93c5e09f8342b4ea0cc96bb9038d8406354\",\"dweb:/ipfs/QmVuoiQyqPTLCGnyt8zDaxiyaj4ETdgTGKv4MDHWzqEDjp\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IBLSSignatureChecker.sol\":{\"keccak256\":\"0xee5823a6674e553c71f5e127f08245827eb116d1ad418b5a7f2a9d6985fd95e0\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://94aa26debddca6c0784585340cf891de4c2d7edaa3e5ec7229af9730312a5a51\",\"dweb:/ipfs/QmWbHGbM7eVYTAmrCVaDU8b4YTm9VAN82XgLDR78uHC7vj\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IIndexRegistry.sol\":{\"keccak256\":\"0x83b2d56aacf27e65c4959a832c5de573e013908c044f6e48ea8284ac5282ae2b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://877af382587e96bb39bcc6db8bb5e4b871db5025c52347d4bee9afeaa4a6cc8d\",\"dweb:/ipfs/QmdnhsQCChzq2o5NgbeT3JxSsEcMm1PC9QW6zenZNPjD9F\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IRegistry.sol\":{\"keccak256\":\"0x51426a17fb7e54bd3720e2890104e97a8559a13ff248b3d6b840916751c143d3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://01f91289e6100d528cb8b318cb14ff22a0bc52882c9d4db41585e030cc9ddc25\",\"dweb:/ipfs/Qmb22nqGrsrtNovHRwbMCvDHGENuxAgrWu3Db4p7Er2MHY\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IRegistryCoordinator.sol\":{\"keccak256\":\"0xdd8effb082c1d5957d5ff43d7c59497b32866a6d82bcc7d5efa49ea9bc9b3385\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cb33a2a1446585b13b7a509e880c60d658d2d2522ec48a9f02e30d2cff54002d\",\"dweb:/ipfs/QmVNG8ZPZkXzNEadPdTj1uBYLiZdCnYfsE5iGU6nJcJXiD\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IServiceManager.sol\":{\"keccak256\":\"0x7602cfb4397a114a0ed60e70e8e1d729fdcf406b585838181b3cb3ffa6ac9a9a\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b718fa016a13a2a5ce298bc5ea7495cc70cf9c358211c75595d5c9dde9a6cc0f\",\"dweb:/ipfs/QmQNrVmU7P7pRqGBJuTQDkjf3wMDY2kJm7zXdtQwsQTbzY\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IServiceManagerUI.sol\":{\"keccak256\":\"0x365761699b4a5b7360ee6c75f12606eefc4b0394754c8b8e1e1eefec0cba7ffb\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ac14ada180b66cbbc5f9de0d6b4bb87b5946d2a9569ae88f2f62aaca47e879a8\",\"dweb:/ipfs/QmcN9xKYF24naNWc6cYah9suz5gJSYE9nPj9eZFWnP35VX\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IStakeRegistry.sol\":{\"keccak256\":\"0x1b8b4d757c1b804bc4cf6fbbf8bf8f89ebdeb30a31014751fe7d01deb9d513d4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://984bf2777b898ed187d28997f9783f5c293a1a1848e3e9aa470ce9183d454c97\",\"dweb:/ipfs/Qme3aTpBrkLu8wYHFMZbCfhXHoZ1M6SpXkeC237T9BuU5B\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/libraries/BN254.sol\":{\"keccak256\":\"0xb428c8d0c3b325507a88a61a80115493eb88606ccc19ed64a31e11294ab853b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7b6fb935bfe0494e6ff970c8f30a86d5f4cf5c3e0967300c28cd383c043acae\",\"dweb:/ipfs/QmUHfFZaVjLPXhkBmcxrZhAHZaSFQDqXtrLGpjGBQBa5Ki\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/libraries/BitmapUtils.sol\":{\"keccak256\":\"0x44315ac460be30a6b18fd4df4d1b8afb46653bf4dc06ca9f93c32353fd0605c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da14f2ead3a375b02afd09d4a02edddf7b63a88945746b96789b2473184fdb04\",\"dweb:/ipfs/QmRqcjxa2Vv2MrLdPeAwsktXdWTirapEDsRbJCyYRtKT6g\"]},\"lib/aligned_layer/contracts/src/core/AlignedLayerServiceManager.sol\":{\"keccak256\":\"0x318fdb1cf3332466f725c56f6de37daf4b2078013d3e4c7a5d20be96b8259a29\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0e1c509ab8add93c822adc90092ddd3140a0ecb9cc2104ce420a5cdb18138569\",\"dweb:/ipfs/QmRUrZ2tYofMww63P2NRo4fgx4DRBBNRHZbmWayMiAqeMi\"]},\"lib/aligned_layer/contracts/src/core/AlignedLayerServiceManagerStorage.sol\":{\"keccak256\":\"0x7359959b102fcb5f313d7a0a4a2497ff651c1836ec5259f4f86bd5d20da502ce\",\"urls\":[\"bzz-raw://e1990be0b54c7ab6734ff3096aac61c951d762e0dc6d52d3890a364fc1d92569\",\"dweb:/ipfs/QmevhuweQnjTVBmxTyWucznnQ68kU1U5uHvtYm5FvkBfRR\"]},\"lib/aligned_layer/contracts/src/core/IAlignedLayerServiceManager.sol\":{\"keccak256\":\"0xdcec4919e7fdf7855a7f831291a4e5b3345739c88d2c6026f9b953d42f773c48\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2c37687aac70fa1281b5ccceb6208b5044eeb3c055286c20793632efd7f36adc\",\"dweb:/ipfs/Qmb9CC8RumoALvjjUujbyCZWokzvg4feSEoQFZ3swdggLT\"]},\"src/MinaAccountValidationExample.sol\":{\"keccak256\":\"0xa9ee818322d8de643216c4d9d255277a6eaee06819e047e69c0f7d4bea5b366a\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://a2229c41efb4d28eb61d80f8b36c3b97e9d6ae3c3dc7edc834ccceb6da33ac9e\",\"dweb:/ipfs/QmTXT7CySKmsJhWEhdEYFvTUB61HReFhsY2b2k1jPWtVmN\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address payable","name":"_alignedServiceAddr","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"type":"error","name":"MinaAccountProvingSystemIdIsNotValid"},{"inputs":[{"internalType":"struct MinaAccountValidationExample.AlignedArgs","name":"args","type":"tuple","components":[{"internalType":"bytes32","name":"proofCommitment","type":"bytes32"},{"internalType":"bytes32","name":"provingSystemAuxDataCommitment","type":"bytes32"},{"internalType":"bytes20","name":"proofGeneratorAddr","type":"bytes20"},{"internalType":"bytes32","name":"batchMerkleRoot","type":"bytes32"},{"internalType":"bytes","name":"merkleProof","type":"bytes"},{"internalType":"uint256","name":"verificationDataBatchIndex","type":"uint256"},{"internalType":"bytes","name":"pubInput","type":"bytes"},{"internalType":"address","name":"batcherPaymentService","type":"address"}]}],"stateMutability":"view","type":"function","name":"validateAccount","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"struct MinaAccountValidationExample.AlignedArgs","name":"args","type":"tuple","components":[{"internalType":"bytes32","name":"proofCommitment","type":"bytes32"},{"internalType":"bytes32","name":"provingSystemAuxDataCommitment","type":"bytes32"},{"internalType":"bytes20","name":"proofGeneratorAddr","type":"bytes20"},{"internalType":"bytes32","name":"batchMerkleRoot","type":"bytes32"},{"internalType":"bytes","name":"merkleProof","type":"bytes"},{"internalType":"uint256","name":"verificationDataBatchIndex","type":"uint256"},{"internalType":"bytes","name":"pubInput","type":"bytes"},{"internalType":"address","name":"batcherPaymentService","type":"address"}]}],"stateMutability":"view","type":"function","name":"validateAccountAndReturn","outputs":[{"internalType":"struct MinaAccountValidationExample.Account","name":"","type":"tuple","components":[{"internalType":"struct MinaAccountValidationExample.CompressedECPoint","name":"publicKey","type":"tuple","components":[{"internalType":"bytes32","name":"x","type":"bytes32"},{"internalType":"bool","name":"isOdd","type":"bool"}]},{"internalType":"bytes32","name":"tokenIdKeyHash","type":"bytes32"},{"internalType":"string","name":"tokenSymbol","type":"string"},{"internalType":"uint64","name":"balance","type":"uint64"},{"internalType":"uint32","name":"nonce","type":"uint32"},{"internalType":"bytes32","name":"receiptChainHash","type":"bytes32"},{"internalType":"struct MinaAccountValidationExample.CompressedECPoint","name":"delegate","type":"tuple","components":[{"internalType":"bytes32","name":"x","type":"bytes32"},{"internalType":"bool","name":"isOdd","type":"bool"}]},{"internalType":"bytes32","name":"votingFor","type":"bytes32"},{"internalType":"struct MinaAccountValidationExample.Timing","name":"timing","type":"tuple","components":[{"internalType":"uint64","name":"initialMinimumBalance","type":"uint64"},{"internalType":"uint32","name":"cliffTime","type":"uint32"},{"internalType":"uint64","name":"cliffAmount","type":"uint64"},{"internalType":"uint32","name":"vestingPeriod","type":"uint32"},{"internalType":"uint64","name":"vestingIncrement","type":"uint64"}]},{"internalType":"struct MinaAccountValidationExample.Permissions","name":"permissions","type":"tuple","components":[{"internalType":"enum MinaAccountValidationExample.AuthRequired","name":"editState","type":"uint8"},{"internalType":"enum MinaAccountValidationExample.AuthRequired","name":"access","type":"uint8"},{"internalType":"enum MinaAccountValidationExample.AuthRequired","name":"send","type":"uint8"},{"internalType":"enum MinaAccountValidationExample.AuthRequired","name":"rreceive","type":"uint8"},{"internalType":"enum MinaAccountValidationExample.AuthRequired","name":"setDelegate","type":"uint8"},{"internalType":"enum MinaAccountValidationExample.AuthRequired","name":"setPermissions","type":"uint8"},{"internalType":"enum MinaAccountValidationExample.AuthRequired","name":"setVerificationKeyAuth","type":"uint8"},{"internalType":"uint32","name":"setVerificationKeyUint","type":"uint32"},{"internalType":"enum MinaAccountValidationExample.AuthRequired","name":"setZkappUri","type":"uint8"},{"internalType":"enum MinaAccountValidationExample.AuthRequired","name":"editActionState","type":"uint8"},{"internalType":"enum MinaAccountValidationExample.AuthRequired","name":"setTokenSymbol","type":"uint8"},{"internalType":"enum MinaAccountValidationExample.AuthRequired","name":"incrementNonce","type":"uint8"},{"internalType":"enum MinaAccountValidationExample.AuthRequired","name":"setVotingFor","type":"uint8"},{"internalType":"enum MinaAccountValidationExample.AuthRequired","name":"setTiming","type":"uint8"}]},{"internalType":"struct MinaAccountValidationExample.ZkappAccount","name":"zkapp","type":"tuple","components":[{"internalType":"bytes32[8]","name":"appState","type":"bytes32[8]"},{"internalType":"struct MinaAccountValidationExample.VerificationKey","name":"verificationKey","type":"tuple","components":[{"internalType":"enum MinaAccountValidationExample.ProofsVerified","name":"maxProofsVerified","type":"uint8"},{"internalType":"enum MinaAccountValidationExample.ProofsVerified","name":"actualWrapDomainSize","type":"uint8"},{"internalType":"struct MinaAccountValidationExample.WrapIndex","name":"wrapIndex","type":"tuple","components":[{"internalType":"struct MinaAccountValidationExample.Commitment[7]","name":"sigmaComm","type":"tuple[7]","components":[{"internalType":"bytes32","name":"x","type":"bytes32"},{"internalType":"bytes32","name":"y","type":"bytes32"}]},{"internalType":"struct MinaAccountValidationExample.Commitment[15]","name":"coefficientsComm","type":"tuple[15]","components":[{"internalType":"bytes32","name":"x","type":"bytes32"},{"internalType":"bytes32","name":"y","type":"bytes32"}]},{"internalType":"struct MinaAccountValidationExample.Commitment","name":"genericComm","type":"tuple","components":[{"internalType":"bytes32","name":"x","type":"bytes32"},{"internalType":"bytes32","name":"y","type":"bytes32"}]},{"internalType":"struct MinaAccountValidationExample.Commitment","name":"psmComm","type":"tuple","components":[{"internalType":"bytes32","name":"x","type":"bytes32"},{"internalType":"bytes32","name":"y","type":"bytes32"}]},{"internalType":"struct MinaAccountValidationExample.Commitment","name":"completeAddComm","type":"tuple","components":[{"internalType":"bytes32","name":"x","type":"bytes32"},{"internalType":"bytes32","name":"y","type":"bytes32"}]},{"internalType":"struct MinaAccountValidationExample.Commitment","name":"mulComm","type":"tuple","components":[{"internalType":"bytes32","name":"x","type":"bytes32"},{"internalType":"bytes32","name":"y","type":"bytes32"}]},{"internalType":"struct MinaAccountValidationExample.Commitment","name":"emulComm","type":"tuple","components":[{"internalType":"bytes32","name":"x","type":"bytes32"},{"internalType":"bytes32","name":"y","type":"bytes32"}]},{"internalType":"struct MinaAccountValidationExample.Commitment","name":"endomulScalarComm","type":"tuple","components":[{"internalType":"bytes32","name":"x","type":"bytes32"},{"internalType":"bytes32","name":"y","type":"bytes32"}]}]}]},{"internalType":"uint32","name":"zkappVersion","type":"uint32"},{"internalType":"bytes32[5]","name":"actionState","type":"bytes32[5]"},{"internalType":"uint32","name":"lastActionSlot","type":"uint32"},{"internalType":"bool","name":"provedState","type":"bool"},{"internalType":"bytes","name":"zkappUri","type":"bytes"}]}]}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/","@openzeppelin/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/","aligned_layer/=lib/aligned_layer/","ds-test/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/ds-test/src/","eigenlayer-contracts/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/","eigenlayer-core-contracts/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/core/","eigenlayer-core/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/","eigenlayer-middleware/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/","eigenlayer-scripts/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/script/","erc4626-tests/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/aligned_layer/claim_contracts/lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MinaAccountValidationExample.sol":"MinaAccountValidationExample"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol":{"keccak256":"0x3f67ab9b510b02dc3c07014b49785f1e167401bdb39cc10f737bbf545632d938","urls":["bzz-raw://48d1267e2df6c8ac9b8f419269ff3d23be9b62606ee6b6d2278c27ffebfd73aa","dweb:/ipfs/QmaFyywKCm1eotKjF1evryW8BMQJzPDstZm1wMRW79phXG"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00","urls":["bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983","dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol":{"keccak256":"0xab76a9f4eff865cbb689f627cf98263488765519d7a4ec5ffbcb0ca4972842f9","urls":["bzz-raw://ff57ce18e8350bf39f190645db0988bc0f1279f1872150a114a1b520c38a2914","dweb:/ipfs/QmSsUXkNUqYuJgGRumHTSs9rAaboGjecotcM4xHrdBYWaZ"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol":{"keccak256":"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c","urls":["bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91","dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz"],"license":"CC0-1.0"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol":{"keccak256":"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba","urls":["bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc","dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol":{"keccak256":"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c","urls":["bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8","dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol":{"keccak256":"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f","urls":["bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324","dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":{"keccak256":"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49","urls":["bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d","dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IRewardsCoordinator.sol":{"keccak256":"0xeab6f1140a90eb7f107d95bae1e8b2ecfbfe36282d62c9df69e6a564c2c59771","urls":["bzz-raw://785cd2777cdcab3b827b5eef2a4dae02c56db07252fdcefd8dd1016be034dc71","dweb:/ipfs/QmNyDFchTuMeiVoxNEfQw96JVq7DfkohGz1txKXe7HyNbq"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"keccak256":"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092","urls":["bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c","dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol":{"keccak256":"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79","urls":["bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232","dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol":{"keccak256":"0x68bf02a443fc8b2f612eba3d39bfefa5f61f78b549f111cdecec5f2c58236a52","urls":["bzz-raw://76bc6875ce74128b861fdac5fd1c0c72f3cc9bacf67fa4a73721b95fb23959ef","dweb:/ipfs/QmPix4WJmf9fXyMZxfgwXEHBcg7V4NAbRqs4HUf5YrSJcM"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol":{"keccak256":"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377","urls":["bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7","dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol":{"keccak256":"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d","urls":["bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f","dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":{"keccak256":"0x9095fc29b96d102b10c02d44b3a6fbfa25593ef6ae4a810363ab885b9e6b0f71","urls":["bzz-raw://0945132d482d56278edddb1d32209903c4d3839c87ba4317aadd97dc23610d0f","dweb:/ipfs/QmVuM2aLRHxitx4rPx3GTYTBCVNcjYn6sHBRr1biUjLBP5"],"license":"MIT"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/permissions/Pausable.sol":{"keccak256":"0xce8ee0ab28f2bce9e94aa19fffe55bebef080327632ac98ff3ab14994b369bc0","urls":["bzz-raw://5c7e2be97a8840fa2a0434077a36136553a84efd9bff4b46712ce9fddb813a6a","dweb:/ipfs/QmZKvgPxLAbGo1CqTA4AX6MCDPFLSSNt43ZKWRjvvzFp7S"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888","urls":["bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a","dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb"],"license":"MIT"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e","urls":["bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497","dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8"],"license":"MIT"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3","urls":["bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4","dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt"],"license":"MIT"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/BLSSignatureChecker.sol":{"keccak256":"0x3a5c205c596d3d73c7afa63ffbbfac8204f6d6a26c151ef26b47278981c3c0fe","urls":["bzz-raw://4beb88bf5b7c7e614f0d87b157d7a4b67afbf1cc93f3127622bd66f696799241","dweb:/ipfs/QmWJKb6qsd69bWgpAHX6deCkJqmJdo9oBLQAXJk97gWEE2"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/ServiceManagerBase.sol":{"keccak256":"0x7e32ef76daf32e5eb5a93cecf204223e64243f42afe70c7ca71ad3db3925b9c4","urls":["bzz-raw://19c10aa22f2e86e27e946b65c434e541caa6af06fcdde46c3b5e9b42890bd221","dweb:/ipfs/QmPb5qDRdbJTniKSqsbjVhbtwdb72G9hWPYcHtVvj1zBxg"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/ServiceManagerBaseStorage.sol":{"keccak256":"0xa544114dbf6d973a815f997a2ac9237c531c40b08c91d3a65a23b152ed621e1e","urls":["bzz-raw://4cf69f9be7d3f3c4184b61b267280a829040973633ea9d95e2ec0dbf70f40a2e","dweb:/ipfs/QmT2HeCJWBLX2p4KAWnyU318MMx9USb2brqCKq1vn2pXpR"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IBLSApkRegistry.sol":{"keccak256":"0xc07a5edfd95ab4f16f16a8dc8e76eadf4b0e90fe49db90540d01daaad86898c5","urls":["bzz-raw://52b53266450a53da641e82d8ae3be93c5e09f8342b4ea0cc96bb9038d8406354","dweb:/ipfs/QmVuoiQyqPTLCGnyt8zDaxiyaj4ETdgTGKv4MDHWzqEDjp"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IBLSSignatureChecker.sol":{"keccak256":"0xee5823a6674e553c71f5e127f08245827eb116d1ad418b5a7f2a9d6985fd95e0","urls":["bzz-raw://94aa26debddca6c0784585340cf891de4c2d7edaa3e5ec7229af9730312a5a51","dweb:/ipfs/QmWbHGbM7eVYTAmrCVaDU8b4YTm9VAN82XgLDR78uHC7vj"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IIndexRegistry.sol":{"keccak256":"0x83b2d56aacf27e65c4959a832c5de573e013908c044f6e48ea8284ac5282ae2b","urls":["bzz-raw://877af382587e96bb39bcc6db8bb5e4b871db5025c52347d4bee9afeaa4a6cc8d","dweb:/ipfs/QmdnhsQCChzq2o5NgbeT3JxSsEcMm1PC9QW6zenZNPjD9F"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IRegistry.sol":{"keccak256":"0x51426a17fb7e54bd3720e2890104e97a8559a13ff248b3d6b840916751c143d3","urls":["bzz-raw://01f91289e6100d528cb8b318cb14ff22a0bc52882c9d4db41585e030cc9ddc25","dweb:/ipfs/Qmb22nqGrsrtNovHRwbMCvDHGENuxAgrWu3Db4p7Er2MHY"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IRegistryCoordinator.sol":{"keccak256":"0xdd8effb082c1d5957d5ff43d7c59497b32866a6d82bcc7d5efa49ea9bc9b3385","urls":["bzz-raw://cb33a2a1446585b13b7a509e880c60d658d2d2522ec48a9f02e30d2cff54002d","dweb:/ipfs/QmVNG8ZPZkXzNEadPdTj1uBYLiZdCnYfsE5iGU6nJcJXiD"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IServiceManager.sol":{"keccak256":"0x7602cfb4397a114a0ed60e70e8e1d729fdcf406b585838181b3cb3ffa6ac9a9a","urls":["bzz-raw://b718fa016a13a2a5ce298bc5ea7495cc70cf9c358211c75595d5c9dde9a6cc0f","dweb:/ipfs/QmQNrVmU7P7pRqGBJuTQDkjf3wMDY2kJm7zXdtQwsQTbzY"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IServiceManagerUI.sol":{"keccak256":"0x365761699b4a5b7360ee6c75f12606eefc4b0394754c8b8e1e1eefec0cba7ffb","urls":["bzz-raw://ac14ada180b66cbbc5f9de0d6b4bb87b5946d2a9569ae88f2f62aaca47e879a8","dweb:/ipfs/QmcN9xKYF24naNWc6cYah9suz5gJSYE9nPj9eZFWnP35VX"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IStakeRegistry.sol":{"keccak256":"0x1b8b4d757c1b804bc4cf6fbbf8bf8f89ebdeb30a31014751fe7d01deb9d513d4","urls":["bzz-raw://984bf2777b898ed187d28997f9783f5c293a1a1848e3e9aa470ce9183d454c97","dweb:/ipfs/Qme3aTpBrkLu8wYHFMZbCfhXHoZ1M6SpXkeC237T9BuU5B"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/libraries/BN254.sol":{"keccak256":"0xb428c8d0c3b325507a88a61a80115493eb88606ccc19ed64a31e11294ab853b3","urls":["bzz-raw://d7b6fb935bfe0494e6ff970c8f30a86d5f4cf5c3e0967300c28cd383c043acae","dweb:/ipfs/QmUHfFZaVjLPXhkBmcxrZhAHZaSFQDqXtrLGpjGBQBa5Ki"],"license":"MIT"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/libraries/BitmapUtils.sol":{"keccak256":"0x44315ac460be30a6b18fd4df4d1b8afb46653bf4dc06ca9f93c32353fd0605c5","urls":["bzz-raw://da14f2ead3a375b02afd09d4a02edddf7b63a88945746b96789b2473184fdb04","dweb:/ipfs/QmRqcjxa2Vv2MrLdPeAwsktXdWTirapEDsRbJCyYRtKT6g"],"license":"MIT"},"lib/aligned_layer/contracts/src/core/AlignedLayerServiceManager.sol":{"keccak256":"0x318fdb1cf3332466f725c56f6de37daf4b2078013d3e4c7a5d20be96b8259a29","urls":["bzz-raw://0e1c509ab8add93c822adc90092ddd3140a0ecb9cc2104ce420a5cdb18138569","dweb:/ipfs/QmRUrZ2tYofMww63P2NRo4fgx4DRBBNRHZbmWayMiAqeMi"],"license":"UNLICENSED"},"lib/aligned_layer/contracts/src/core/AlignedLayerServiceManagerStorage.sol":{"keccak256":"0x7359959b102fcb5f313d7a0a4a2497ff651c1836ec5259f4f86bd5d20da502ce","urls":["bzz-raw://e1990be0b54c7ab6734ff3096aac61c951d762e0dc6d52d3890a364fc1d92569","dweb:/ipfs/QmevhuweQnjTVBmxTyWucznnQ68kU1U5uHvtYm5FvkBfRR"],"license":null},"lib/aligned_layer/contracts/src/core/IAlignedLayerServiceManager.sol":{"keccak256":"0xdcec4919e7fdf7855a7f831291a4e5b3345739c88d2c6026f9b953d42f773c48","urls":["bzz-raw://2c37687aac70fa1281b5ccceb6208b5044eeb3c055286c20793632efd7f36adc","dweb:/ipfs/Qmb9CC8RumoALvjjUujbyCZWokzvg4feSEoQFZ3swdggLT"],"license":"UNLICENSED"},"src/MinaAccountValidationExample.sol":{"keccak256":"0xa9ee818322d8de643216c4d9d255277a6eaee06819e047e69c0f7d4bea5b366a","urls":["bzz-raw://a2229c41efb4d28eb61d80f8b36c3b97e9d6ae3c3dc7edc834ccceb6da33ac9e","dweb:/ipfs/QmTXT7CySKmsJhWEhdEYFvTUB61HReFhsY2b2k1jPWtVmN"],"license":"UNLICENSED"}},"version":1},"id":39} \ No newline at end of file diff --git a/core/abi/MinaStateSettlementExample.json b/core/abi/MinaStateSettlementExample.json index 874a7d0d0..e7828c709 100644 --- a/core/abi/MinaStateSettlementExample.json +++ b/core/abi/MinaStateSettlementExample.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_alignedServiceAddr","type":"address","internalType":"address payable"},{"name":"_tipStateHash","type":"bytes32","internalType":"bytes32"},{"name":"_devnetFlag","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"BRIDGE_TRANSITION_FRONTIER_LEN","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getChainLedgerHashes","inputs":[],"outputs":[{"name":"","type":"bytes32[16]","internalType":"bytes32[16]"}],"stateMutability":"view"},{"type":"function","name":"getChainStateHashes","inputs":[],"outputs":[{"name":"","type":"bytes32[16]","internalType":"bytes32[16]"}],"stateMutability":"view"},{"type":"function","name":"getTipLedgerHash","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getTipStateHash","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"isLedgerVerified","inputs":[{"name":"ledgerHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"updateChain","inputs":[{"name":"proofCommitment","type":"bytes32","internalType":"bytes32"},{"name":"provingSystemAuxDataCommitment","type":"bytes32","internalType":"bytes32"},{"name":"proofGeneratorAddr","type":"bytes20","internalType":"bytes20"},{"name":"batchMerkleRoot","type":"bytes32","internalType":"bytes32"},{"name":"merkleProof","type":"bytes","internalType":"bytes"},{"name":"verificationDataBatchIndex","type":"uint256","internalType":"uint256"},{"name":"pubInput","type":"bytes","internalType":"bytes"},{"name":"batcherPaymentService","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"error","name":"MinaNetworkIsWrong","inputs":[]},{"type":"error","name":"MinaProvingSystemIdIsNotValid","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"NewStateIsNotValid","inputs":[]},{"type":"error","name":"TipStateIsWrong","inputs":[{"name":"pubInputTipStateHash","type":"bytes32","internalType":"bytes32"},{"name":"tipStatehash","type":"bytes32","internalType":"bytes32"}]}],"bytecode":{"object":"0x608060405234801561000f575f5ffd5b50604051610f10380380610f108339818101604052810190610031919061017f565b82602060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550815f600160106100829190610205565b6010811061009357610092610238565b5b01819055508060205f6101000a81548160ff021916908315150217905550505050610265565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6100e6826100bd565b9050919050565b6100f6816100dc565b8114610100575f5ffd5b50565b5f81519050610111816100ed565b92915050565b5f819050919050565b61012981610117565b8114610133575f5ffd5b50565b5f8151905061014481610120565b92915050565b5f8115159050919050565b61015e8161014a565b8114610168575f5ffd5b50565b5f8151905061017981610155565b92915050565b5f5f5f60608486031215610196576101956100b9565b5b5f6101a386828701610103565b93505060206101b486828701610136565b92505060406101c58682870161016b565b9150509250925092565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61020f826101cf565b915061021a836101cf565b9250828203905081811115610232576102316101d8565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b610c9e806102725f395ff3fe608060405234801561000f575f5ffd5b506004361061007b575f3560e01c80633886c09b116100595780633886c09b146100d75780633e16b011146100f5578063b818474514610125578063fb299cd8146101435761007b565b806303f93e501461007f5780632bc4f8d91461009d57806337baff0f146100bb575b5f5ffd5b610087610161565b6040516100949190610654565b60405180910390f35b6100a56101ab565b6040516100b29190610654565b60405180910390f35b6100d560048036038101906100d091906108c7565b6101f5565b005b6100df6104c9565b6040516100ec91906109bf565b60405180910390f35b61010f600480360381019061010a91906109d8565b6104f2565b60405161011c9190610a1d565b60405180910390f35b61012d610556565b60405161013a91906109bf565b60405180910390f35b61014b61057e565b6040516101589190610a45565b60405180910390f35b610169610583565b5f6010806020026040519081016040528092919082601080156101a1576020028201915b81548152602001906001019080831161018d575b5050505050905090565b6101b3610583565b601080806020026040519081016040528092919082601080156101eb576020028201915b8154815260200190600101908083116101d7575b5050505050905090565b7fd0591206d9e81e07f4defc5327957173572bcd1bca7838caa7be39b0c12b18735f1b871461025b57866040517fc35f1ecd00000000000000000000000000000000000000000000000000000000815260040161025291906109bf565b60405180910390fd5b5f600160f81b835f8151811061027457610273610a5e565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614905060205f9054906101000a900460ff161515811515146102ef576040517f042eb0cf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f602184015190505f600160106103069190610ab8565b6010811061031757610316610a5e565b5b0154811461037f57805f6001601061032f9190610ab8565b601081106103405761033f610a5e565b5b01546040517fbbd80128000000000000000000000000000000000000000000000000000000008152600401610376929190610aeb565b60405180910390fd5b5f848051906020012090505f602060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306045a918d848e8e8e8e8e8d6040518963ffffffff1660e01b81526004016103f4989796959493929190610b90565b602060405180830381865afa15801561040f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104339190610c3d565b90508015610489575f601060418801601060200281015f5b601081101561047f57825185556020830192506001850194508151845560208201915060018401935060018101905061044b565b50505050506104bb565b6040517f114602f000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050505050505050565b5f6010600160106104da9190610ab8565b601081106104eb576104ea610a5e565b5b0154905090565b5f5f5f90505b601081101561054c5782601082600160106105139190610ab8565b61051d9190610ab8565b6010811061052e5761052d610a5e565b5b01540361053f576001915050610551565b80806001019150506104f8565b505f90505b919050565b5f5f600160106105669190610ab8565b6010811061057757610576610a5e565b5b0154905090565b601081565b604051806102000160405280601090602082028036833780820191505090505090565b5f60109050919050565b5f81905092915050565b5f819050919050565b5f819050919050565b6105d5816105c3565b82525050565b5f6105e683836105cc565b60208301905092915050565b5f602082019050919050565b610607816105a6565b61061181846105b0565b925061061c826105ba565b805f5b8381101561064c57815161063387826105db565b965061063e836105f2565b92505060018101905061061f565b505050505050565b5f610200820190506106685f8301846105fe565b92915050565b5f604051905090565b5f5ffd5b5f5ffd5b610688816105c3565b8114610692575f5ffd5b50565b5f813590506106a38161067f565b92915050565b5f7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b6106dd816106a9565b81146106e7575f5ffd5b50565b5f813590506106f8816106d4565b92915050565b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61074c82610706565b810181811067ffffffffffffffff8211171561076b5761076a610716565b5b80604052505050565b5f61077d61066e565b90506107898282610743565b919050565b5f67ffffffffffffffff8211156107a8576107a7610716565b5b6107b182610706565b9050602081019050919050565b828183375f83830152505050565b5f6107de6107d98461078e565b610774565b9050828152602081018484840111156107fa576107f9610702565b5b6108058482856107be565b509392505050565b5f82601f830112610821576108206106fe565b5b81356108318482602086016107cc565b91505092915050565b5f819050919050565b61084c8161083a565b8114610856575f5ffd5b50565b5f8135905061086781610843565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6108968261086d565b9050919050565b6108a68161088c565b81146108b0575f5ffd5b50565b5f813590506108c18161089d565b92915050565b5f5f5f5f5f5f5f5f610100898b0312156108e4576108e3610677565b5b5f6108f18b828c01610695565b98505060206109028b828c01610695565b97505060406109138b828c016106ea565b96505060606109248b828c01610695565b955050608089013567ffffffffffffffff8111156109455761094461067b565b5b6109518b828c0161080d565b94505060a06109628b828c01610859565b93505060c089013567ffffffffffffffff8111156109835761098261067b565b5b61098f8b828c0161080d565b92505060e06109a08b828c016108b3565b9150509295985092959890939650565b6109b9816105c3565b82525050565b5f6020820190506109d25f8301846109b0565b92915050565b5f602082840312156109ed576109ec610677565b5b5f6109fa84828501610695565b91505092915050565b5f8115159050919050565b610a1781610a03565b82525050565b5f602082019050610a305f830184610a0e565b92915050565b610a3f8161083a565b82525050565b5f602082019050610a585f830184610a36565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610ac28261083a565b9150610acd8361083a565b9250828203905081811115610ae557610ae4610a8b565b5b92915050565b5f604082019050610afe5f8301856109b0565b610b0b60208301846109b0565b9392505050565b610b1b816106a9565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f610b5382610b21565b610b5d8185610b2b565b9350610b6d818560208601610b3b565b610b7681610706565b840191505092915050565b610b8a8161088c565b82525050565b5f61010082019050610ba45f83018b6109b0565b610bb1602083018a6109b0565b610bbe60408301896109b0565b610bcb6060830188610b12565b610bd860808301876109b0565b81810360a0830152610bea8186610b49565b9050610bf960c0830185610a36565b610c0660e0830184610b81565b9998505050505050505050565b610c1c81610a03565b8114610c26575f5ffd5b50565b5f81519050610c3781610c13565b92915050565b5f60208284031215610c5257610c51610677565b5b5f610c5f84828501610c29565b9150509291505056fea2646970667358221220ccc0cfcc55ea8e6242d695dd183d23a5dd5188bdf38e83caa5e474a1b5fc544f64736f6c634300081c0033","sourceMap":"657:5200:39:-:0;;;1576:276;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1713:19;1676:7;;:57;;;;;;;;;;;;;;;;;;1798:13;1743:16;1793:1;1049:2;1760:34;;;;:::i;:::-;1743:52;;;;;;;:::i;:::-;;;:68;;;;1834:11;1821:10;;:24;;;;;;;;;;;;;;;;;;1576:276;;;657:5200;;88:117:40;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:104::-;511:7;540:24;558:5;540:24;:::i;:::-;529:35;;466:104;;;:::o;576:138::-;657:32;683:5;657:32;:::i;:::-;650:5;647:43;637:71;;704:1;701;694:12;637:71;576:138;:::o;720:159::-;785:5;816:6;810:13;801:22;;832:41;867:5;832:41;:::i;:::-;720:159;;;;:::o;885:77::-;922:7;951:5;940:16;;885:77;;;:::o;968:122::-;1041:24;1059:5;1041:24;:::i;:::-;1034:5;1031:35;1021:63;;1080:1;1077;1070:12;1021:63;968:122;:::o;1096:143::-;1153:5;1184:6;1178:13;1169:22;;1200:33;1227:5;1200:33;:::i;:::-;1096:143;;;;:::o;1245:90::-;1279:7;1322:5;1315:13;1308:21;1297:32;;1245:90;;;:::o;1341:116::-;1411:21;1426:5;1411:21;:::i;:::-;1404:5;1401:32;1391:60;;1447:1;1444;1437:12;1391:60;1341:116;:::o;1463:137::-;1517:5;1548:6;1542:13;1533:22;;1564:30;1588:5;1564:30;:::i;:::-;1463:137;;;;:::o;1606:673::-;1699:6;1707;1715;1764:2;1752:9;1743:7;1739:23;1735:32;1732:119;;;1770:79;;:::i;:::-;1732:119;1890:1;1915:72;1979:7;1970:6;1959:9;1955:22;1915:72;:::i;:::-;1905:82;;1861:136;2036:2;2062:64;2118:7;2109:6;2098:9;2094:22;2062:64;:::i;:::-;2052:74;;2007:129;2175:2;2201:61;2254:7;2245:6;2234:9;2230:22;2201:61;:::i;:::-;2191:71;;2146:126;1606:673;;;;;:::o;2285:77::-;2322:7;2351:5;2340:16;;2285:77;;;:::o;2368:180::-;2416:77;2413:1;2406:88;2513:4;2510:1;2503:15;2537:4;2534:1;2527:15;2554:194;2594:4;2614:20;2632:1;2614:20;:::i;:::-;2609:25;;2648:20;2666:1;2648:20;:::i;:::-;2643:25;;2692:1;2689;2685:9;2677:17;;2716:1;2710:4;2707:11;2704:37;;;2721:18;;:::i;:::-;2704:37;2554:194;;;;:::o;2754:180::-;2802:77;2799:1;2792:88;2899:4;2896:1;2889:15;2923:4;2920:1;2913:15;657:5200:39;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f5ffd5b506004361061007b575f3560e01c80633886c09b116100595780633886c09b146100d75780633e16b011146100f5578063b818474514610125578063fb299cd8146101435761007b565b806303f93e501461007f5780632bc4f8d91461009d57806337baff0f146100bb575b5f5ffd5b610087610161565b6040516100949190610654565b60405180910390f35b6100a56101ab565b6040516100b29190610654565b60405180910390f35b6100d560048036038101906100d091906108c7565b6101f5565b005b6100df6104c9565b6040516100ec91906109bf565b60405180910390f35b61010f600480360381019061010a91906109d8565b6104f2565b60405161011c9190610a1d565b60405180910390f35b61012d610556565b60405161013a91906109bf565b60405180910390f35b61014b61057e565b6040516101589190610a45565b60405180910390f35b610169610583565b5f6010806020026040519081016040528092919082601080156101a1576020028201915b81548152602001906001019080831161018d575b5050505050905090565b6101b3610583565b601080806020026040519081016040528092919082601080156101eb576020028201915b8154815260200190600101908083116101d7575b5050505050905090565b7fd0591206d9e81e07f4defc5327957173572bcd1bca7838caa7be39b0c12b18735f1b871461025b57866040517fc35f1ecd00000000000000000000000000000000000000000000000000000000815260040161025291906109bf565b60405180910390fd5b5f600160f81b835f8151811061027457610273610a5e565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614905060205f9054906101000a900460ff161515811515146102ef576040517f042eb0cf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f602184015190505f600160106103069190610ab8565b6010811061031757610316610a5e565b5b0154811461037f57805f6001601061032f9190610ab8565b601081106103405761033f610a5e565b5b01546040517fbbd80128000000000000000000000000000000000000000000000000000000008152600401610376929190610aeb565b60405180910390fd5b5f848051906020012090505f602060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306045a918d848e8e8e8e8e8d6040518963ffffffff1660e01b81526004016103f4989796959493929190610b90565b602060405180830381865afa15801561040f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104339190610c3d565b90508015610489575f601060418801601060200281015f5b601081101561047f57825185556020830192506001850194508151845560208201915060018401935060018101905061044b565b50505050506104bb565b6040517f114602f000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050505050505050565b5f6010600160106104da9190610ab8565b601081106104eb576104ea610a5e565b5b0154905090565b5f5f5f90505b601081101561054c5782601082600160106105139190610ab8565b61051d9190610ab8565b6010811061052e5761052d610a5e565b5b01540361053f576001915050610551565b80806001019150506104f8565b505f90505b919050565b5f5f600160106105669190610ab8565b6010811061057757610576610a5e565b5b0154905090565b601081565b604051806102000160405280601090602082028036833780820191505090505090565b5f60109050919050565b5f81905092915050565b5f819050919050565b5f819050919050565b6105d5816105c3565b82525050565b5f6105e683836105cc565b60208301905092915050565b5f602082019050919050565b610607816105a6565b61061181846105b0565b925061061c826105ba565b805f5b8381101561064c57815161063387826105db565b965061063e836105f2565b92505060018101905061061f565b505050505050565b5f610200820190506106685f8301846105fe565b92915050565b5f604051905090565b5f5ffd5b5f5ffd5b610688816105c3565b8114610692575f5ffd5b50565b5f813590506106a38161067f565b92915050565b5f7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b6106dd816106a9565b81146106e7575f5ffd5b50565b5f813590506106f8816106d4565b92915050565b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61074c82610706565b810181811067ffffffffffffffff8211171561076b5761076a610716565b5b80604052505050565b5f61077d61066e565b90506107898282610743565b919050565b5f67ffffffffffffffff8211156107a8576107a7610716565b5b6107b182610706565b9050602081019050919050565b828183375f83830152505050565b5f6107de6107d98461078e565b610774565b9050828152602081018484840111156107fa576107f9610702565b5b6108058482856107be565b509392505050565b5f82601f830112610821576108206106fe565b5b81356108318482602086016107cc565b91505092915050565b5f819050919050565b61084c8161083a565b8114610856575f5ffd5b50565b5f8135905061086781610843565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6108968261086d565b9050919050565b6108a68161088c565b81146108b0575f5ffd5b50565b5f813590506108c18161089d565b92915050565b5f5f5f5f5f5f5f5f610100898b0312156108e4576108e3610677565b5b5f6108f18b828c01610695565b98505060206109028b828c01610695565b97505060406109138b828c016106ea565b96505060606109248b828c01610695565b955050608089013567ffffffffffffffff8111156109455761094461067b565b5b6109518b828c0161080d565b94505060a06109628b828c01610859565b93505060c089013567ffffffffffffffff8111156109835761098261067b565b5b61098f8b828c0161080d565b92505060e06109a08b828c016108b3565b9150509295985092959890939650565b6109b9816105c3565b82525050565b5f6020820190506109d25f8301846109b0565b92915050565b5f602082840312156109ed576109ec610677565b5b5f6109fa84828501610695565b91505092915050565b5f8115159050919050565b610a1781610a03565b82525050565b5f602082019050610a305f830184610a0e565b92915050565b610a3f8161083a565b82525050565b5f602082019050610a585f830184610a36565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610ac28261083a565b9150610acd8361083a565b9250828203905081811115610ae557610ae4610a8b565b5b92915050565b5f604082019050610afe5f8301856109b0565b610b0b60208301846109b0565b9392505050565b610b1b816106a9565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f610b5382610b21565b610b5d8185610b2b565b9350610b6d818560208601610b3b565b610b7681610706565b840191505092915050565b610b8a8161088c565b82525050565b5f61010082019050610ba45f83018b6109b0565b610bb1602083018a6109b0565b610bbe60408301896109b0565b610bcb6060830188610b12565b610bd860808301876109b0565b81810360a0830152610bea8186610b49565b9050610bf960c0830185610a36565b610c0660e0830184610b81565b9998505050505050505050565b610c1c81610a03565b8114610c26575f5ffd5b50565b5f81519050610c3781610c13565b92915050565b5f60208284031215610c5257610c51610677565b5b5f610c5f84828501610c29565b9150509291505056fea2646970667358221220ccc0cfcc55ea8e6242d695dd183d23a5dd5188bdf38e83caa5e474a1b5fc544f64736f6c634300081c0033","sourceMap":"657:5200:39:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2315:142;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2528:144;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3073:2782;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2108:137;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2748:319;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1912:135;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;992:59;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2315:142;2369:46;;:::i;:::-;2434:16;2427:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2315:142;:::o;2528:144::-;2583:46;;:::i;:::-;2648:17;2641:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2528:144;:::o;3073:2782::-;799:66;3455:22;;3421:30;:56;3417:155;;3530:30;3500:61;;;;;;;;;;;:::i;:::-;;;;;;;;3417:155;3582:23;3623:4;3608:19;;:8;3617:1;3608:11;;;;;;;;:::i;:::-;;;;;;;;;;:19;;;;3582:45;;3664:10;;;;;;;;;;;3642:32;;:18;:32;;;3638:90;;3697:20;;;;;;;;;;;;;;3638:90;3738:34;3855:4;3845:8;3841:19;3835:26;3805:56;;3972:16;4022:1;1049:2;3989:34;;;;:::i;:::-;3972:52;;;;;;;:::i;:::-;;;;3942:26;:82;3938:217;;4063:26;4091:16;4141:1;1049:2;4108:34;;;;:::i;:::-;4091:52;;;;;;;:::i;:::-;;;;4047:97;;;;;;;;;;;;:::i;:::-;;;;;;;;3938:217;4165:26;4204:8;4194:19;;;;;;4165:48;;4224:23;4250:7;;;;;;;;;;;:28;;;4292:15;4321:18;4353:30;4397:18;4429:15;4458:11;4483:26;4523:21;4250:304;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4224:330;;4569:18;4565:1284;;;4707:21;4765:22;5113:2;5103:8;5099:17;5273:30;5269:2;5265:39;5252:11;5248:57;5338:1;5323:444;5348:30;5345:1;5342:37;5323:444;;;5447:11;5441:18;5428:11;5421:39;5513:2;5500:11;5496:20;5481:35;;5569:1;5556:11;5552:19;5537:34;;5620:12;5614:19;5600:12;5593:41;5689:2;5675:12;5671:21;5655:37;;5747:1;5733:12;5729:20;5713:36;;5394:1;5391;5387:9;5382:14;;5323:444;;;5327:14;4670:1111;;;;4565:1284;;;5818:20;;;;;;;;;;;;;;4565:1284;3407:2448;;;;3073:2782;;;;;;;;:::o;2108:137::-;2159:7;2185:17;2236:1;1049:2;2203:34;;;;:::i;:::-;2185:53;;;;;;;:::i;:::-;;;;2178:60;;2108:137;:::o;2748:319::-;2817:4;2838:9;2850:1;2838:13;;2833:206;1049:2;2853:1;:34;2833:206;;;2973:10;2912:17;2967:1;2963;1049:2;2930:34;;;;:::i;:::-;:38;;;;:::i;:::-;2912:57;;;;;;;:::i;:::-;;;;:71;2908:121;;3010:4;3003:11;;;;;2908:121;2889:3;;;;;;;2833:206;;;;3055:5;3048:12;;2748:319;;;;:::o;1912:135::-;1962:7;1988:16;2038:1;1049:2;2005:34;;;;:::i;:::-;1988:52;;;;;;;:::i;:::-;;;;1981:59;;1912:135;:::o;992:59::-;1049:2;992:59;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:105:40:-;73:6;101:4;91:14;;7:105;;;:::o;118:144::-;216:11;253:3;238:18;;118:144;;;;:::o;268:99::-;334:4;357:3;349:11;;268:99;;;:::o;373:77::-;410:7;439:5;428:16;;373:77;;;:::o;456:108::-;533:24;551:5;533:24;:::i;:::-;528:3;521:37;456:108;;:::o;570:179::-;639:10;660:46;702:3;694:6;660:46;:::i;:::-;738:4;733:3;729:14;715:28;;570:179;;;;:::o;755:112::-;824:4;856;851:3;847:14;839:22;;755:112;;;:::o;907:700::-;1045:53;1092:5;1045:53;:::i;:::-;1114:85;1192:6;1187:3;1114:85;:::i;:::-;1107:92;;1223:55;1272:5;1223:55;:::i;:::-;1301:7;1332:1;1317:283;1342:6;1339:1;1336:13;1317:283;;;1418:6;1412:13;1445:63;1504:3;1489:13;1445:63;:::i;:::-;1438:70;;1531:59;1583:6;1531:59;:::i;:::-;1521:69;;1377:223;1364:1;1361;1357:9;1352:14;;1317:283;;;1321:14;1021:586;;;907:700;;:::o;1613:319::-;1754:4;1792:3;1781:9;1777:19;1769:27;;1806:119;1922:1;1911:9;1907:17;1898:6;1806:119;:::i;:::-;1613:319;;;;:::o;1938:75::-;1971:6;2004:2;1998:9;1988:19;;1938:75;:::o;2019:117::-;2128:1;2125;2118:12;2142:117;2251:1;2248;2241:12;2265:122;2338:24;2356:5;2338:24;:::i;:::-;2331:5;2328:35;2318:63;;2377:1;2374;2367:12;2318:63;2265:122;:::o;2393:139::-;2439:5;2477:6;2464:20;2455:29;;2493:33;2520:5;2493:33;:::i;:::-;2393:139;;;;:::o;2538:150::-;2575:7;2615:66;2608:5;2604:78;2593:89;;2538:150;;;:::o;2694:122::-;2767:24;2785:5;2767:24;:::i;:::-;2760:5;2757:35;2747:63;;2806:1;2803;2796:12;2747:63;2694:122;:::o;2822:139::-;2868:5;2906:6;2893:20;2884:29;;2922:33;2949:5;2922:33;:::i;:::-;2822:139;;;;:::o;2967:117::-;3076:1;3073;3066:12;3090:117;3199:1;3196;3189:12;3213:102;3254:6;3305:2;3301:7;3296:2;3289:5;3285:14;3281:28;3271:38;;3213:102;;;:::o;3321:180::-;3369:77;3366:1;3359:88;3466:4;3463:1;3456:15;3490:4;3487:1;3480:15;3507:281;3590:27;3612:4;3590:27;:::i;:::-;3582:6;3578:40;3720:6;3708:10;3705:22;3684:18;3672:10;3669:34;3666:62;3663:88;;;3731:18;;:::i;:::-;3663:88;3771:10;3767:2;3760:22;3550:238;3507:281;;:::o;3794:129::-;3828:6;3855:20;;:::i;:::-;3845:30;;3884:33;3912:4;3904:6;3884:33;:::i;:::-;3794:129;;;:::o;3929:307::-;3990:4;4080:18;4072:6;4069:30;4066:56;;;4102:18;;:::i;:::-;4066:56;4140:29;4162:6;4140:29;:::i;:::-;4132:37;;4224:4;4218;4214:15;4206:23;;3929:307;;;:::o;4242:148::-;4340:6;4335:3;4330;4317:30;4381:1;4372:6;4367:3;4363:16;4356:27;4242:148;;;:::o;4396:423::-;4473:5;4498:65;4514:48;4555:6;4514:48;:::i;:::-;4498:65;:::i;:::-;4489:74;;4586:6;4579:5;4572:21;4624:4;4617:5;4613:16;4662:3;4653:6;4648:3;4644:16;4641:25;4638:112;;;4669:79;;:::i;:::-;4638:112;4759:54;4806:6;4801:3;4796;4759:54;:::i;:::-;4479:340;4396:423;;;;;:::o;4838:338::-;4893:5;4942:3;4935:4;4927:6;4923:17;4919:27;4909:122;;4950:79;;:::i;:::-;4909:122;5067:6;5054:20;5092:78;5166:3;5158:6;5151:4;5143:6;5139:17;5092:78;:::i;:::-;5083:87;;4899:277;4838:338;;;;:::o;5182:77::-;5219:7;5248:5;5237:16;;5182:77;;;:::o;5265:122::-;5338:24;5356:5;5338:24;:::i;:::-;5331:5;5328:35;5318:63;;5377:1;5374;5367:12;5318:63;5265:122;:::o;5393:139::-;5439:5;5477:6;5464:20;5455:29;;5493:33;5520:5;5493:33;:::i;:::-;5393:139;;;;:::o;5538:126::-;5575:7;5615:42;5608:5;5604:54;5593:65;;5538:126;;;:::o;5670:96::-;5707:7;5736:24;5754:5;5736:24;:::i;:::-;5725:35;;5670:96;;;:::o;5772:122::-;5845:24;5863:5;5845:24;:::i;:::-;5838:5;5835:35;5825:63;;5884:1;5881;5874:12;5825:63;5772:122;:::o;5900:139::-;5946:5;5984:6;5971:20;5962:29;;6000:33;6027:5;6000:33;:::i;:::-;5900:139;;;;:::o;6045:1705::-;6185:6;6193;6201;6209;6217;6225;6233;6241;6290:3;6278:9;6269:7;6265:23;6261:33;6258:120;;;6297:79;;:::i;:::-;6258:120;6417:1;6442:53;6487:7;6478:6;6467:9;6463:22;6442:53;:::i;:::-;6432:63;;6388:117;6544:2;6570:53;6615:7;6606:6;6595:9;6591:22;6570:53;:::i;:::-;6560:63;;6515:118;6672:2;6698:53;6743:7;6734:6;6723:9;6719:22;6698:53;:::i;:::-;6688:63;;6643:118;6800:2;6826:53;6871:7;6862:6;6851:9;6847:22;6826:53;:::i;:::-;6816:63;;6771:118;6956:3;6945:9;6941:19;6928:33;6988:18;6980:6;6977:30;6974:117;;;7010:79;;:::i;:::-;6974:117;7115:62;7169:7;7160:6;7149:9;7145:22;7115:62;:::i;:::-;7105:72;;6899:288;7226:3;7253:53;7298:7;7289:6;7278:9;7274:22;7253:53;:::i;:::-;7243:63;;7197:119;7383:3;7372:9;7368:19;7355:33;7415:18;7407:6;7404:30;7401:117;;;7437:79;;:::i;:::-;7401:117;7542:62;7596:7;7587:6;7576:9;7572:22;7542:62;:::i;:::-;7532:72;;7326:288;7653:3;7680:53;7725:7;7716:6;7705:9;7701:22;7680:53;:::i;:::-;7670:63;;7624:119;6045:1705;;;;;;;;;;;:::o;7756:118::-;7843:24;7861:5;7843:24;:::i;:::-;7838:3;7831:37;7756:118;;:::o;7880:222::-;7973:4;8011:2;8000:9;7996:18;7988:26;;8024:71;8092:1;8081:9;8077:17;8068:6;8024:71;:::i;:::-;7880:222;;;;:::o;8108:329::-;8167:6;8216:2;8204:9;8195:7;8191:23;8187:32;8184:119;;;8222:79;;:::i;:::-;8184:119;8342:1;8367:53;8412:7;8403:6;8392:9;8388:22;8367:53;:::i;:::-;8357:63;;8313:117;8108:329;;;;:::o;8443:90::-;8477:7;8520:5;8513:13;8506:21;8495:32;;8443:90;;;:::o;8539:109::-;8620:21;8635:5;8620:21;:::i;:::-;8615:3;8608:34;8539:109;;:::o;8654:210::-;8741:4;8779:2;8768:9;8764:18;8756:26;;8792:65;8854:1;8843:9;8839:17;8830:6;8792:65;:::i;:::-;8654:210;;;;:::o;8870:118::-;8957:24;8975:5;8957:24;:::i;:::-;8952:3;8945:37;8870:118;;:::o;8994:222::-;9087:4;9125:2;9114:9;9110:18;9102:26;;9138:71;9206:1;9195:9;9191:17;9182:6;9138:71;:::i;:::-;8994:222;;;;:::o;9222:180::-;9270:77;9267:1;9260:88;9367:4;9364:1;9357:15;9391:4;9388:1;9381:15;9408:180;9456:77;9453:1;9446:88;9553:4;9550:1;9543:15;9577:4;9574:1;9567:15;9594:194;9634:4;9654:20;9672:1;9654:20;:::i;:::-;9649:25;;9688:20;9706:1;9688:20;:::i;:::-;9683:25;;9732:1;9729;9725:9;9717:17;;9756:1;9750:4;9747:11;9744:37;;;9761:18;;:::i;:::-;9744:37;9594:194;;;;:::o;9794:332::-;9915:4;9953:2;9942:9;9938:18;9930:26;;9966:71;10034:1;10023:9;10019:17;10010:6;9966:71;:::i;:::-;10047:72;10115:2;10104:9;10100:18;10091:6;10047:72;:::i;:::-;9794:332;;;;;:::o;10132:118::-;10219:24;10237:5;10219:24;:::i;:::-;10214:3;10207:37;10132:118;;:::o;10256:98::-;10307:6;10341:5;10335:12;10325:22;;10256:98;;;:::o;10360:168::-;10443:11;10477:6;10472:3;10465:19;10517:4;10512:3;10508:14;10493:29;;10360:168;;;;:::o;10534:139::-;10623:6;10618:3;10613;10607:23;10664:1;10655:6;10650:3;10646:16;10639:27;10534:139;;;:::o;10679:373::-;10765:3;10793:38;10825:5;10793:38;:::i;:::-;10847:70;10910:6;10905:3;10847:70;:::i;:::-;10840:77;;10926:65;10984:6;10979:3;10972:4;10965:5;10961:16;10926:65;:::i;:::-;11016:29;11038:6;11016:29;:::i;:::-;11011:3;11007:39;11000:46;;10769:283;10679:373;;;;:::o;11058:118::-;11145:24;11163:5;11145:24;:::i;:::-;11140:3;11133:37;11058:118;;:::o;11182:1084::-;11489:4;11527:3;11516:9;11512:19;11504:27;;11541:71;11609:1;11598:9;11594:17;11585:6;11541:71;:::i;:::-;11622:72;11690:2;11679:9;11675:18;11666:6;11622:72;:::i;:::-;11704;11772:2;11761:9;11757:18;11748:6;11704:72;:::i;:::-;11786;11854:2;11843:9;11839:18;11830:6;11786:72;:::i;:::-;11868:73;11936:3;11925:9;11921:19;11912:6;11868:73;:::i;:::-;11989:9;11983:4;11979:20;11973:3;11962:9;11958:19;11951:49;12017:76;12088:4;12079:6;12017:76;:::i;:::-;12009:84;;12103:73;12171:3;12160:9;12156:19;12147:6;12103:73;:::i;:::-;12186;12254:3;12243:9;12239:19;12230:6;12186:73;:::i;:::-;11182:1084;;;;;;;;;;;:::o;12272:116::-;12342:21;12357:5;12342:21;:::i;:::-;12335:5;12332:32;12322:60;;12378:1;12375;12368:12;12322:60;12272:116;:::o;12394:137::-;12448:5;12479:6;12473:13;12464:22;;12495:30;12519:5;12495:30;:::i;:::-;12394:137;;;;:::o;12537:345::-;12604:6;12653:2;12641:9;12632:7;12628:23;12624:32;12621:119;;;12659:79;;:::i;:::-;12621:119;12779:1;12804:61;12857:7;12848:6;12837:9;12833:22;12804:61;:::i;:::-;12794:71;;12750:125;12537:345;;;;:::o","linkReferences":{}},"methodIdentifiers":{"BRIDGE_TRANSITION_FRONTIER_LEN()":"fb299cd8","getChainLedgerHashes()":"2bc4f8d9","getChainStateHashes()":"03f93e50","getTipLedgerHash()":"3886c09b","getTipStateHash()":"b8184745","isLedgerVerified(bytes32)":"3e16b011","updateChain(bytes32,bytes32,bytes20,bytes32,bytes,uint256,bytes,address)":"37baff0f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"_alignedServiceAddr\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_tipStateHash\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"_devnetFlag\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"MinaNetworkIsWrong\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"MinaProvingSystemIdIsNotValid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewStateIsNotValid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"pubInputTipStateHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"tipStatehash\",\"type\":\"bytes32\"}],\"name\":\"TipStateIsWrong\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BRIDGE_TRANSITION_FRONTIER_LEN\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getChainLedgerHashes\",\"outputs\":[{\"internalType\":\"bytes32[16]\",\"name\":\"\",\"type\":\"bytes32[16]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getChainStateHashes\",\"outputs\":[{\"internalType\":\"bytes32[16]\",\"name\":\"\",\"type\":\"bytes32[16]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTipLedgerHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTipStateHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"ledgerHash\",\"type\":\"bytes32\"}],\"name\":\"isLedgerVerified\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"proofCommitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"provingSystemAuxDataCommitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes20\",\"name\":\"proofGeneratorAddr\",\"type\":\"bytes20\"},{\"internalType\":\"bytes32\",\"name\":\"batchMerkleRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"merkleProof\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"verificationDataBatchIndex\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"pubInput\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"batcherPaymentService\",\"type\":\"address\"}],\"name\":\"updateChain\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Mina to Ethereum Bridge's smart contract for verifying and storing a valid state chain. WARNING: This contract is meant ot be used as an example of how to use the Bridge. NEVER use this contract in a production environment.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"BRIDGE_TRANSITION_FRONTIER_LEN()\":{\"notice\":\"The length of the verified state chain (also called the bridge's transition frontier) to store.\"},\"getChainLedgerHashes()\":{\"notice\":\"Returns the latest verified chain ledger hashes.\"},\"getChainStateHashes()\":{\"notice\":\"Returns the latest verified chain state hashes.\"},\"getTipLedgerHash()\":{\"notice\":\"Returns the last verified ledger hash.\"},\"getTipStateHash()\":{\"notice\":\"Returns the last verified state hash.\"},\"isLedgerVerified(bytes32)\":{\"notice\":\"Returns true if this snarked ledger hash was bridged.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MinaStateSettlementExample.sol\":\"MinaStateSettlementExample\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/\",\":aligned_layer/=lib/aligned_layer/\",\":ds-test/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/\",\":eigenlayer-core-contracts/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/core/\",\":eigenlayer-core/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/\",\":eigenlayer-middleware/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/\",\":eigenlayer-scripts/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/script/\",\":erc4626-tests/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/aligned_layer/claim_contracts/lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol\":{\"keccak256\":\"0x3f67ab9b510b02dc3c07014b49785f1e167401bdb39cc10f737bbf545632d938\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://48d1267e2df6c8ac9b8f419269ff3d23be9b62606ee6b6d2278c27ffebfd73aa\",\"dweb:/ipfs/QmaFyywKCm1eotKjF1evryW8BMQJzPDstZm1wMRW79phXG\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983\",\"dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0xab76a9f4eff865cbb689f627cf98263488765519d7a4ec5ffbcb0ca4972842f9\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ff57ce18e8350bf39f190645db0988bc0f1279f1872150a114a1b520c38a2914\",\"dweb:/ipfs/QmSsUXkNUqYuJgGRumHTSs9rAaboGjecotcM4xHrdBYWaZ\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91\",\"dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol\":{\"keccak256\":\"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc\",\"dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8\",\"dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol\":{\"keccak256\":\"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324\",\"dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d\",\"dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IRewardsCoordinator.sol\":{\"keccak256\":\"0xeab6f1140a90eb7f107d95bae1e8b2ecfbfe36282d62c9df69e6a564c2c59771\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://785cd2777cdcab3b827b5eef2a4dae02c56db07252fdcefd8dd1016be034dc71\",\"dweb:/ipfs/QmNyDFchTuMeiVoxNEfQw96JVq7DfkohGz1txKXe7HyNbq\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c\",\"dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol\":{\"keccak256\":\"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232\",\"dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0x68bf02a443fc8b2f612eba3d39bfefa5f61f78b549f111cdecec5f2c58236a52\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://76bc6875ce74128b861fdac5fd1c0c72f3cc9bacf67fa4a73721b95fb23959ef\",\"dweb:/ipfs/QmPix4WJmf9fXyMZxfgwXEHBcg7V4NAbRqs4HUf5YrSJcM\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol\":{\"keccak256\":\"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7\",\"dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol\":{\"keccak256\":\"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f\",\"dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol\":{\"keccak256\":\"0x9095fc29b96d102b10c02d44b3a6fbfa25593ef6ae4a810363ab885b9e6b0f71\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0945132d482d56278edddb1d32209903c4d3839c87ba4317aadd97dc23610d0f\",\"dweb:/ipfs/QmVuM2aLRHxitx4rPx3GTYTBCVNcjYn6sHBRr1biUjLBP5\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/permissions/Pausable.sol\":{\"keccak256\":\"0xce8ee0ab28f2bce9e94aa19fffe55bebef080327632ac98ff3ab14994b369bc0\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5c7e2be97a8840fa2a0434077a36136553a84efd9bff4b46712ce9fddb813a6a\",\"dweb:/ipfs/QmZKvgPxLAbGo1CqTA4AX6MCDPFLSSNt43ZKWRjvvzFp7S\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/BLSSignatureChecker.sol\":{\"keccak256\":\"0x3a5c205c596d3d73c7afa63ffbbfac8204f6d6a26c151ef26b47278981c3c0fe\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://4beb88bf5b7c7e614f0d87b157d7a4b67afbf1cc93f3127622bd66f696799241\",\"dweb:/ipfs/QmWJKb6qsd69bWgpAHX6deCkJqmJdo9oBLQAXJk97gWEE2\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/ServiceManagerBase.sol\":{\"keccak256\":\"0x7e32ef76daf32e5eb5a93cecf204223e64243f42afe70c7ca71ad3db3925b9c4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://19c10aa22f2e86e27e946b65c434e541caa6af06fcdde46c3b5e9b42890bd221\",\"dweb:/ipfs/QmPb5qDRdbJTniKSqsbjVhbtwdb72G9hWPYcHtVvj1zBxg\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/ServiceManagerBaseStorage.sol\":{\"keccak256\":\"0xa544114dbf6d973a815f997a2ac9237c531c40b08c91d3a65a23b152ed621e1e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://4cf69f9be7d3f3c4184b61b267280a829040973633ea9d95e2ec0dbf70f40a2e\",\"dweb:/ipfs/QmT2HeCJWBLX2p4KAWnyU318MMx9USb2brqCKq1vn2pXpR\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IBLSApkRegistry.sol\":{\"keccak256\":\"0xc07a5edfd95ab4f16f16a8dc8e76eadf4b0e90fe49db90540d01daaad86898c5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://52b53266450a53da641e82d8ae3be93c5e09f8342b4ea0cc96bb9038d8406354\",\"dweb:/ipfs/QmVuoiQyqPTLCGnyt8zDaxiyaj4ETdgTGKv4MDHWzqEDjp\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IBLSSignatureChecker.sol\":{\"keccak256\":\"0xee5823a6674e553c71f5e127f08245827eb116d1ad418b5a7f2a9d6985fd95e0\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://94aa26debddca6c0784585340cf891de4c2d7edaa3e5ec7229af9730312a5a51\",\"dweb:/ipfs/QmWbHGbM7eVYTAmrCVaDU8b4YTm9VAN82XgLDR78uHC7vj\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IIndexRegistry.sol\":{\"keccak256\":\"0x83b2d56aacf27e65c4959a832c5de573e013908c044f6e48ea8284ac5282ae2b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://877af382587e96bb39bcc6db8bb5e4b871db5025c52347d4bee9afeaa4a6cc8d\",\"dweb:/ipfs/QmdnhsQCChzq2o5NgbeT3JxSsEcMm1PC9QW6zenZNPjD9F\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IRegistry.sol\":{\"keccak256\":\"0x51426a17fb7e54bd3720e2890104e97a8559a13ff248b3d6b840916751c143d3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://01f91289e6100d528cb8b318cb14ff22a0bc52882c9d4db41585e030cc9ddc25\",\"dweb:/ipfs/Qmb22nqGrsrtNovHRwbMCvDHGENuxAgrWu3Db4p7Er2MHY\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IRegistryCoordinator.sol\":{\"keccak256\":\"0xdd8effb082c1d5957d5ff43d7c59497b32866a6d82bcc7d5efa49ea9bc9b3385\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cb33a2a1446585b13b7a509e880c60d658d2d2522ec48a9f02e30d2cff54002d\",\"dweb:/ipfs/QmVNG8ZPZkXzNEadPdTj1uBYLiZdCnYfsE5iGU6nJcJXiD\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IServiceManager.sol\":{\"keccak256\":\"0x7602cfb4397a114a0ed60e70e8e1d729fdcf406b585838181b3cb3ffa6ac9a9a\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b718fa016a13a2a5ce298bc5ea7495cc70cf9c358211c75595d5c9dde9a6cc0f\",\"dweb:/ipfs/QmQNrVmU7P7pRqGBJuTQDkjf3wMDY2kJm7zXdtQwsQTbzY\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IServiceManagerUI.sol\":{\"keccak256\":\"0x365761699b4a5b7360ee6c75f12606eefc4b0394754c8b8e1e1eefec0cba7ffb\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ac14ada180b66cbbc5f9de0d6b4bb87b5946d2a9569ae88f2f62aaca47e879a8\",\"dweb:/ipfs/QmcN9xKYF24naNWc6cYah9suz5gJSYE9nPj9eZFWnP35VX\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IStakeRegistry.sol\":{\"keccak256\":\"0x1b8b4d757c1b804bc4cf6fbbf8bf8f89ebdeb30a31014751fe7d01deb9d513d4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://984bf2777b898ed187d28997f9783f5c293a1a1848e3e9aa470ce9183d454c97\",\"dweb:/ipfs/Qme3aTpBrkLu8wYHFMZbCfhXHoZ1M6SpXkeC237T9BuU5B\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/libraries/BN254.sol\":{\"keccak256\":\"0xb428c8d0c3b325507a88a61a80115493eb88606ccc19ed64a31e11294ab853b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7b6fb935bfe0494e6ff970c8f30a86d5f4cf5c3e0967300c28cd383c043acae\",\"dweb:/ipfs/QmUHfFZaVjLPXhkBmcxrZhAHZaSFQDqXtrLGpjGBQBa5Ki\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/libraries/BitmapUtils.sol\":{\"keccak256\":\"0x44315ac460be30a6b18fd4df4d1b8afb46653bf4dc06ca9f93c32353fd0605c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da14f2ead3a375b02afd09d4a02edddf7b63a88945746b96789b2473184fdb04\",\"dweb:/ipfs/QmRqcjxa2Vv2MrLdPeAwsktXdWTirapEDsRbJCyYRtKT6g\"]},\"lib/aligned_layer/contracts/src/core/AlignedLayerServiceManager.sol\":{\"keccak256\":\"0x318fdb1cf3332466f725c56f6de37daf4b2078013d3e4c7a5d20be96b8259a29\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0e1c509ab8add93c822adc90092ddd3140a0ecb9cc2104ce420a5cdb18138569\",\"dweb:/ipfs/QmRUrZ2tYofMww63P2NRo4fgx4DRBBNRHZbmWayMiAqeMi\"]},\"lib/aligned_layer/contracts/src/core/AlignedLayerServiceManagerStorage.sol\":{\"keccak256\":\"0x7359959b102fcb5f313d7a0a4a2497ff651c1836ec5259f4f86bd5d20da502ce\",\"urls\":[\"bzz-raw://e1990be0b54c7ab6734ff3096aac61c951d762e0dc6d52d3890a364fc1d92569\",\"dweb:/ipfs/QmevhuweQnjTVBmxTyWucznnQ68kU1U5uHvtYm5FvkBfRR\"]},\"lib/aligned_layer/contracts/src/core/IAlignedLayerServiceManager.sol\":{\"keccak256\":\"0xdcec4919e7fdf7855a7f831291a4e5b3345739c88d2c6026f9b953d42f773c48\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2c37687aac70fa1281b5ccceb6208b5044eeb3c055286c20793632efd7f36adc\",\"dweb:/ipfs/Qmb9CC8RumoALvjjUujbyCZWokzvg4feSEoQFZ3swdggLT\"]},\"src/MinaStateSettlementExample.sol\":{\"keccak256\":\"0x6111e43655e2d21bd363fa13067a280834ea17d6ee03c0d6ea16d2fa7800696e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8ac76890e276df1edfd38d74791e4abb01e6e95f0c6162bc929dd2b7b1dff3e9\",\"dweb:/ipfs/QmVNyDMVEguPCKuQVYRH61BdvbT9DBMrFpKWMapmYmZqe8\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address payable","name":"_alignedServiceAddr","type":"address"},{"internalType":"bytes32","name":"_tipStateHash","type":"bytes32"},{"internalType":"bool","name":"_devnetFlag","type":"bool"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"MinaNetworkIsWrong"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"type":"error","name":"MinaProvingSystemIdIsNotValid"},{"inputs":[],"type":"error","name":"NewStateIsNotValid"},{"inputs":[{"internalType":"bytes32","name":"pubInputTipStateHash","type":"bytes32"},{"internalType":"bytes32","name":"tipStatehash","type":"bytes32"}],"type":"error","name":"TipStateIsWrong"},{"inputs":[],"stateMutability":"view","type":"function","name":"BRIDGE_TRANSITION_FRONTIER_LEN","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getChainLedgerHashes","outputs":[{"internalType":"bytes32[16]","name":"","type":"bytes32[16]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getChainStateHashes","outputs":[{"internalType":"bytes32[16]","name":"","type":"bytes32[16]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getTipLedgerHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getTipStateHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"ledgerHash","type":"bytes32"}],"stateMutability":"view","type":"function","name":"isLedgerVerified","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"proofCommitment","type":"bytes32"},{"internalType":"bytes32","name":"provingSystemAuxDataCommitment","type":"bytes32"},{"internalType":"bytes20","name":"proofGeneratorAddr","type":"bytes20"},{"internalType":"bytes32","name":"batchMerkleRoot","type":"bytes32"},{"internalType":"bytes","name":"merkleProof","type":"bytes"},{"internalType":"uint256","name":"verificationDataBatchIndex","type":"uint256"},{"internalType":"bytes","name":"pubInput","type":"bytes"},{"internalType":"address","name":"batcherPaymentService","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"updateChain"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{"BRIDGE_TRANSITION_FRONTIER_LEN()":{"notice":"The length of the verified state chain (also called the bridge's transition frontier) to store."},"getChainLedgerHashes()":{"notice":"Returns the latest verified chain ledger hashes."},"getChainStateHashes()":{"notice":"Returns the latest verified chain state hashes."},"getTipLedgerHash()":{"notice":"Returns the last verified ledger hash."},"getTipStateHash()":{"notice":"Returns the last verified state hash."},"isLedgerVerified(bytes32)":{"notice":"Returns true if this snarked ledger hash was bridged."}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/","@openzeppelin/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/","aligned_layer/=lib/aligned_layer/","ds-test/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/ds-test/src/","eigenlayer-contracts/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/","eigenlayer-core-contracts/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/core/","eigenlayer-core/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/","eigenlayer-middleware/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/","eigenlayer-scripts/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/script/","erc4626-tests/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/aligned_layer/claim_contracts/lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MinaStateSettlementExample.sol":"MinaStateSettlementExample"},"evmVersion":"cancun","libraries":{}},"sources":{"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol":{"keccak256":"0x3f67ab9b510b02dc3c07014b49785f1e167401bdb39cc10f737bbf545632d938","urls":["bzz-raw://48d1267e2df6c8ac9b8f419269ff3d23be9b62606ee6b6d2278c27ffebfd73aa","dweb:/ipfs/QmaFyywKCm1eotKjF1evryW8BMQJzPDstZm1wMRW79phXG"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00","urls":["bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983","dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol":{"keccak256":"0xab76a9f4eff865cbb689f627cf98263488765519d7a4ec5ffbcb0ca4972842f9","urls":["bzz-raw://ff57ce18e8350bf39f190645db0988bc0f1279f1872150a114a1b520c38a2914","dweb:/ipfs/QmSsUXkNUqYuJgGRumHTSs9rAaboGjecotcM4xHrdBYWaZ"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol":{"keccak256":"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c","urls":["bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91","dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz"],"license":"CC0-1.0"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol":{"keccak256":"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba","urls":["bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc","dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol":{"keccak256":"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c","urls":["bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8","dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol":{"keccak256":"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f","urls":["bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324","dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":{"keccak256":"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49","urls":["bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d","dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IRewardsCoordinator.sol":{"keccak256":"0xeab6f1140a90eb7f107d95bae1e8b2ecfbfe36282d62c9df69e6a564c2c59771","urls":["bzz-raw://785cd2777cdcab3b827b5eef2a4dae02c56db07252fdcefd8dd1016be034dc71","dweb:/ipfs/QmNyDFchTuMeiVoxNEfQw96JVq7DfkohGz1txKXe7HyNbq"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"keccak256":"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092","urls":["bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c","dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol":{"keccak256":"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79","urls":["bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232","dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol":{"keccak256":"0x68bf02a443fc8b2f612eba3d39bfefa5f61f78b549f111cdecec5f2c58236a52","urls":["bzz-raw://76bc6875ce74128b861fdac5fd1c0c72f3cc9bacf67fa4a73721b95fb23959ef","dweb:/ipfs/QmPix4WJmf9fXyMZxfgwXEHBcg7V4NAbRqs4HUf5YrSJcM"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol":{"keccak256":"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377","urls":["bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7","dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol":{"keccak256":"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d","urls":["bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f","dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":{"keccak256":"0x9095fc29b96d102b10c02d44b3a6fbfa25593ef6ae4a810363ab885b9e6b0f71","urls":["bzz-raw://0945132d482d56278edddb1d32209903c4d3839c87ba4317aadd97dc23610d0f","dweb:/ipfs/QmVuM2aLRHxitx4rPx3GTYTBCVNcjYn6sHBRr1biUjLBP5"],"license":"MIT"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/permissions/Pausable.sol":{"keccak256":"0xce8ee0ab28f2bce9e94aa19fffe55bebef080327632ac98ff3ab14994b369bc0","urls":["bzz-raw://5c7e2be97a8840fa2a0434077a36136553a84efd9bff4b46712ce9fddb813a6a","dweb:/ipfs/QmZKvgPxLAbGo1CqTA4AX6MCDPFLSSNt43ZKWRjvvzFp7S"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888","urls":["bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a","dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb"],"license":"MIT"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e","urls":["bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497","dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8"],"license":"MIT"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3","urls":["bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4","dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt"],"license":"MIT"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/BLSSignatureChecker.sol":{"keccak256":"0x3a5c205c596d3d73c7afa63ffbbfac8204f6d6a26c151ef26b47278981c3c0fe","urls":["bzz-raw://4beb88bf5b7c7e614f0d87b157d7a4b67afbf1cc93f3127622bd66f696799241","dweb:/ipfs/QmWJKb6qsd69bWgpAHX6deCkJqmJdo9oBLQAXJk97gWEE2"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/ServiceManagerBase.sol":{"keccak256":"0x7e32ef76daf32e5eb5a93cecf204223e64243f42afe70c7ca71ad3db3925b9c4","urls":["bzz-raw://19c10aa22f2e86e27e946b65c434e541caa6af06fcdde46c3b5e9b42890bd221","dweb:/ipfs/QmPb5qDRdbJTniKSqsbjVhbtwdb72G9hWPYcHtVvj1zBxg"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/ServiceManagerBaseStorage.sol":{"keccak256":"0xa544114dbf6d973a815f997a2ac9237c531c40b08c91d3a65a23b152ed621e1e","urls":["bzz-raw://4cf69f9be7d3f3c4184b61b267280a829040973633ea9d95e2ec0dbf70f40a2e","dweb:/ipfs/QmT2HeCJWBLX2p4KAWnyU318MMx9USb2brqCKq1vn2pXpR"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IBLSApkRegistry.sol":{"keccak256":"0xc07a5edfd95ab4f16f16a8dc8e76eadf4b0e90fe49db90540d01daaad86898c5","urls":["bzz-raw://52b53266450a53da641e82d8ae3be93c5e09f8342b4ea0cc96bb9038d8406354","dweb:/ipfs/QmVuoiQyqPTLCGnyt8zDaxiyaj4ETdgTGKv4MDHWzqEDjp"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IBLSSignatureChecker.sol":{"keccak256":"0xee5823a6674e553c71f5e127f08245827eb116d1ad418b5a7f2a9d6985fd95e0","urls":["bzz-raw://94aa26debddca6c0784585340cf891de4c2d7edaa3e5ec7229af9730312a5a51","dweb:/ipfs/QmWbHGbM7eVYTAmrCVaDU8b4YTm9VAN82XgLDR78uHC7vj"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IIndexRegistry.sol":{"keccak256":"0x83b2d56aacf27e65c4959a832c5de573e013908c044f6e48ea8284ac5282ae2b","urls":["bzz-raw://877af382587e96bb39bcc6db8bb5e4b871db5025c52347d4bee9afeaa4a6cc8d","dweb:/ipfs/QmdnhsQCChzq2o5NgbeT3JxSsEcMm1PC9QW6zenZNPjD9F"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IRegistry.sol":{"keccak256":"0x51426a17fb7e54bd3720e2890104e97a8559a13ff248b3d6b840916751c143d3","urls":["bzz-raw://01f91289e6100d528cb8b318cb14ff22a0bc52882c9d4db41585e030cc9ddc25","dweb:/ipfs/Qmb22nqGrsrtNovHRwbMCvDHGENuxAgrWu3Db4p7Er2MHY"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IRegistryCoordinator.sol":{"keccak256":"0xdd8effb082c1d5957d5ff43d7c59497b32866a6d82bcc7d5efa49ea9bc9b3385","urls":["bzz-raw://cb33a2a1446585b13b7a509e880c60d658d2d2522ec48a9f02e30d2cff54002d","dweb:/ipfs/QmVNG8ZPZkXzNEadPdTj1uBYLiZdCnYfsE5iGU6nJcJXiD"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IServiceManager.sol":{"keccak256":"0x7602cfb4397a114a0ed60e70e8e1d729fdcf406b585838181b3cb3ffa6ac9a9a","urls":["bzz-raw://b718fa016a13a2a5ce298bc5ea7495cc70cf9c358211c75595d5c9dde9a6cc0f","dweb:/ipfs/QmQNrVmU7P7pRqGBJuTQDkjf3wMDY2kJm7zXdtQwsQTbzY"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IServiceManagerUI.sol":{"keccak256":"0x365761699b4a5b7360ee6c75f12606eefc4b0394754c8b8e1e1eefec0cba7ffb","urls":["bzz-raw://ac14ada180b66cbbc5f9de0d6b4bb87b5946d2a9569ae88f2f62aaca47e879a8","dweb:/ipfs/QmcN9xKYF24naNWc6cYah9suz5gJSYE9nPj9eZFWnP35VX"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IStakeRegistry.sol":{"keccak256":"0x1b8b4d757c1b804bc4cf6fbbf8bf8f89ebdeb30a31014751fe7d01deb9d513d4","urls":["bzz-raw://984bf2777b898ed187d28997f9783f5c293a1a1848e3e9aa470ce9183d454c97","dweb:/ipfs/Qme3aTpBrkLu8wYHFMZbCfhXHoZ1M6SpXkeC237T9BuU5B"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/libraries/BN254.sol":{"keccak256":"0xb428c8d0c3b325507a88a61a80115493eb88606ccc19ed64a31e11294ab853b3","urls":["bzz-raw://d7b6fb935bfe0494e6ff970c8f30a86d5f4cf5c3e0967300c28cd383c043acae","dweb:/ipfs/QmUHfFZaVjLPXhkBmcxrZhAHZaSFQDqXtrLGpjGBQBa5Ki"],"license":"MIT"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/libraries/BitmapUtils.sol":{"keccak256":"0x44315ac460be30a6b18fd4df4d1b8afb46653bf4dc06ca9f93c32353fd0605c5","urls":["bzz-raw://da14f2ead3a375b02afd09d4a02edddf7b63a88945746b96789b2473184fdb04","dweb:/ipfs/QmRqcjxa2Vv2MrLdPeAwsktXdWTirapEDsRbJCyYRtKT6g"],"license":"MIT"},"lib/aligned_layer/contracts/src/core/AlignedLayerServiceManager.sol":{"keccak256":"0x318fdb1cf3332466f725c56f6de37daf4b2078013d3e4c7a5d20be96b8259a29","urls":["bzz-raw://0e1c509ab8add93c822adc90092ddd3140a0ecb9cc2104ce420a5cdb18138569","dweb:/ipfs/QmRUrZ2tYofMww63P2NRo4fgx4DRBBNRHZbmWayMiAqeMi"],"license":"UNLICENSED"},"lib/aligned_layer/contracts/src/core/AlignedLayerServiceManagerStorage.sol":{"keccak256":"0x7359959b102fcb5f313d7a0a4a2497ff651c1836ec5259f4f86bd5d20da502ce","urls":["bzz-raw://e1990be0b54c7ab6734ff3096aac61c951d762e0dc6d52d3890a364fc1d92569","dweb:/ipfs/QmevhuweQnjTVBmxTyWucznnQ68kU1U5uHvtYm5FvkBfRR"],"license":null},"lib/aligned_layer/contracts/src/core/IAlignedLayerServiceManager.sol":{"keccak256":"0xdcec4919e7fdf7855a7f831291a4e5b3345739c88d2c6026f9b953d42f773c48","urls":["bzz-raw://2c37687aac70fa1281b5ccceb6208b5044eeb3c055286c20793632efd7f36adc","dweb:/ipfs/Qmb9CC8RumoALvjjUujbyCZWokzvg4feSEoQFZ3swdggLT"],"license":"UNLICENSED"},"src/MinaStateSettlementExample.sol":{"keccak256":"0x6111e43655e2d21bd363fa13067a280834ea17d6ee03c0d6ea16d2fa7800696e","urls":["bzz-raw://8ac76890e276df1edfd38d74791e4abb01e6e95f0c6162bc929dd2b7b1dff3e9","dweb:/ipfs/QmVNyDMVEguPCKuQVYRH61BdvbT9DBMrFpKWMapmYmZqe8"],"license":"UNLICENSED"}},"version":1},"id":39} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"_alignedServiceAddr","type":"address","internalType":"address payable"},{"name":"_tipStateHash","type":"bytes32","internalType":"bytes32"},{"name":"_devnetFlag","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"BRIDGE_TRANSITION_FRONTIER_LEN","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getChainLedgerHashes","inputs":[],"outputs":[{"name":"","type":"bytes32[16]","internalType":"bytes32[16]"}],"stateMutability":"view"},{"type":"function","name":"getChainStateHashes","inputs":[],"outputs":[{"name":"","type":"bytes32[16]","internalType":"bytes32[16]"}],"stateMutability":"view"},{"type":"function","name":"getTipLedgerHash","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getTipStateHash","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"isLedgerVerified","inputs":[{"name":"ledgerHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"updateChain","inputs":[{"name":"proofCommitment","type":"bytes32","internalType":"bytes32"},{"name":"provingSystemAuxDataCommitment","type":"bytes32","internalType":"bytes32"},{"name":"proofGeneratorAddr","type":"bytes20","internalType":"bytes20"},{"name":"batchMerkleRoot","type":"bytes32","internalType":"bytes32"},{"name":"merkleProof","type":"bytes","internalType":"bytes"},{"name":"verificationDataBatchIndex","type":"uint256","internalType":"uint256"},{"name":"pubInput","type":"bytes","internalType":"bytes"},{"name":"batcherPaymentService","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"error","name":"MinaNetworkIsWrong","inputs":[]},{"type":"error","name":"MinaProvingSystemIdIsNotValid","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"NewStateIsNotValid","inputs":[]},{"type":"error","name":"TipStateIsWrong","inputs":[{"name":"pubInputTipStateHash","type":"bytes32","internalType":"bytes32"},{"name":"tipStatehash","type":"bytes32","internalType":"bytes32"}]}],"bytecode":{"object":"0x608034609857601f61070a38819003918201601f19168301916001600160401b03831184841017609c578084926060946040528339810103126098578051906001600160a01b03821682036098576040602082015191015180151580910360985760ff9060205492600f551691610100600160a81b039060081b169060018060a81b031916171760205560405161065990816100b18239f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c806303f93e50146100845780632bc4f8d91461007f57806337baff0f1461007a5780633886c09b146100755780633e16b01114610070578063b81847451461006b5763fb299cd814610066575f80fd5b6102e2565b6102c5565b61029d565b610280565b6101f3565b6100f4565b346100c2575f3660031901126100c2576102006040516100a48282610160565b3690376100be6100b26102fd565b604051918291826100c6565b0390f35b5f80fd5b91906102008301925f905b601082106100de57505050565b60208060019285518152019301910190916100d1565b346100c2575f3660031901126100c257610200806040516101158282610160565b36903760405160105f825b60108210610136576100be846100b28782610160565b6001602081928554815201930191019091610120565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff82111761018257604052565b61014c565b81601f820112156100c25780359067ffffffffffffffff821161018257604051926101bc601f8401601f191660200185610160565b828452602083830101116100c257815f926020809301838601378301015290565b60e435906001600160a01b03821682036100c257565b346100c2576101003660031901126100c2576044356004356024356bffffffffffffffffffffffff19831683036100c25760643560843567ffffffffffffffff81116100c257610247903690600401610187565b60a4359160c4359567ffffffffffffffff87116100c25761026f61027e973690600401610187565b946102786101dd565b966103fd565b005b346100c2575f3660031901126100c2576020601f54604051908152f35b346100c25760203660031901126100c25760206102bb6004356105d1565b6040519015158152f35b346100c2575f3660031901126100c2576020600f54604051908152f35b346100c2575f3660031901126100c257602060405160108152f35b604051905f80835b6010821061031e5750505061031c61020083610160565b565b6001602081928554815201930191019091610305565b634e487b7160e01b5f52603260045260245ffd5b8051156103555760200190565b610334565b601081101561035557905f90565b908160209103126100c2575180151581036100c25790565b96989794909360209360e09793610120968a52858a015260408901526bffffffffffffffffffffffff19166060880152608087015261010060a0870152805191829182610100890152018387015e5f828287010152601f80199101168401019460c084015260018060a01b0316910152565b6040513d5f823e3d90fd5b909391949796977fd0591206d9e81e07f4defc5327957173572bcd1bca7838caa7be39b0c12b187385036105bd57600160f81b6001600160f81b03196104536104458a610348565b516001600160f81b03191690565b1614926020549361046c6104678660ff1690565b151590565b036105ae57602188015161048d610483600f61035a565b90549060031b1c90565b81036105825750986104e69188999a6104c86104bc8b6020809c9d519101209760018060a01b039060081c1690565b6001600160a01b031690565b966040519a8b998a9889986306045a9160e01b8a5260048a01610380565b03915afa90811561057d575f9161054e575b501561053f575f9060106102416041830192015f925b6010841061051d575050505050565b600160208181848295518a55019701938051865501930193019291909361050e565b630114602f60e41b5f5260045ffd5b610570915060203d602011610576575b6105688183610160565b810190610368565b5f6104f8565b503d61055e565b6103f2565b6105ab90610593610483600f61035a565b63177b002560e31b5f52600491909152602452604490565b5ffd5b63042eb0cf60e01b5f5260045ffd5b63c35f1ecd60e01b5f52600485905260245ffd5b5f5b601081106105e15750505f90565b80600f03600f811161060f57601081101561035557601001548214610608576001016105d3565b5050600190565b634e487b7160e01b5f52601160045260245ffdfea2646970667358221220358c0d9b2c73202ed5505a1d5cc517831838eabb207486c41c73e52354ed078664736f6c634300081e0033","sourceMap":"657:5200:40:-:0;;;;;;;;;;;;;-1:-1:-1;;657:5200:40;;;;-1:-1:-1;;;;;657:5200:40;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;657:5200:40;;;;;;;;;;;;;;;;;;;;;;1049:2;657:5200;;;1049:2;;;;657:5200;;;;;;;;;;1049:2;657:5200;1049:2;;;;;;;;657:5200;1049:2;657:5200;;;;;;;;;;-1:-1:-1;657:5200:40;;;;;;-1:-1:-1;657:5200:40;;;;;-1:-1:-1;657:5200:40","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806303f93e50146100845780632bc4f8d91461007f57806337baff0f1461007a5780633886c09b146100755780633e16b01114610070578063b81847451461006b5763fb299cd814610066575f80fd5b6102e2565b6102c5565b61029d565b610280565b6101f3565b6100f4565b346100c2575f3660031901126100c2576102006040516100a48282610160565b3690376100be6100b26102fd565b604051918291826100c6565b0390f35b5f80fd5b91906102008301925f905b601082106100de57505050565b60208060019285518152019301910190916100d1565b346100c2575f3660031901126100c257610200806040516101158282610160565b36903760405160105f825b60108210610136576100be846100b28782610160565b6001602081928554815201930191019091610120565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff82111761018257604052565b61014c565b81601f820112156100c25780359067ffffffffffffffff821161018257604051926101bc601f8401601f191660200185610160565b828452602083830101116100c257815f926020809301838601378301015290565b60e435906001600160a01b03821682036100c257565b346100c2576101003660031901126100c2576044356004356024356bffffffffffffffffffffffff19831683036100c25760643560843567ffffffffffffffff81116100c257610247903690600401610187565b60a4359160c4359567ffffffffffffffff87116100c25761026f61027e973690600401610187565b946102786101dd565b966103fd565b005b346100c2575f3660031901126100c2576020601f54604051908152f35b346100c25760203660031901126100c25760206102bb6004356105d1565b6040519015158152f35b346100c2575f3660031901126100c2576020600f54604051908152f35b346100c2575f3660031901126100c257602060405160108152f35b604051905f80835b6010821061031e5750505061031c61020083610160565b565b6001602081928554815201930191019091610305565b634e487b7160e01b5f52603260045260245ffd5b8051156103555760200190565b610334565b601081101561035557905f90565b908160209103126100c2575180151581036100c25790565b96989794909360209360e09793610120968a52858a015260408901526bffffffffffffffffffffffff19166060880152608087015261010060a0870152805191829182610100890152018387015e5f828287010152601f80199101168401019460c084015260018060a01b0316910152565b6040513d5f823e3d90fd5b909391949796977fd0591206d9e81e07f4defc5327957173572bcd1bca7838caa7be39b0c12b187385036105bd57600160f81b6001600160f81b03196104536104458a610348565b516001600160f81b03191690565b1614926020549361046c6104678660ff1690565b151590565b036105ae57602188015161048d610483600f61035a565b90549060031b1c90565b81036105825750986104e69188999a6104c86104bc8b6020809c9d519101209760018060a01b039060081c1690565b6001600160a01b031690565b966040519a8b998a9889986306045a9160e01b8a5260048a01610380565b03915afa90811561057d575f9161054e575b501561053f575f9060106102416041830192015f925b6010841061051d575050505050565b600160208181848295518a55019701938051865501930193019291909361050e565b630114602f60e41b5f5260045ffd5b610570915060203d602011610576575b6105688183610160565b810190610368565b5f6104f8565b503d61055e565b6103f2565b6105ab90610593610483600f61035a565b63177b002560e31b5f52600491909152602452604490565b5ffd5b63042eb0cf60e01b5f5260045ffd5b63c35f1ecd60e01b5f52600485905260245ffd5b5f5b601081106105e15750505f90565b80600f03600f811161060f57601081101561035557601001548214610608576001016105d3565b5050600190565b634e487b7160e01b5f52601160045260245ffdfea2646970667358221220358c0d9b2c73202ed5505a1d5cc517831838eabb207486c41c73e52354ed078664736f6c634300081e0033","sourceMap":"657:5200:40:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;657:5200:40;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;657:5200:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;657:5200:40;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;657:5200:40;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;657:5200:40;;;;;;:::o;:::-;;;;;;-1:-1:-1;;657:5200:40;;;;;;;;;;-1:-1:-1;;657:5200:40;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;;;-1:-1:-1;;657:5200:40;;;;;799:66;;657:5200;;;;;;;;;;;;-1:-1:-1;;657:5200:40;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;657:5200:40;;;;;799:66;;657:5200;;;;;;;;;;;;-1:-1:-1;;657:5200:40;;;;;;;1049:2;657:5200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;799:66;657:5200;;;799:66;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;657:5200;799:66;;;;;;3617:1;799:66;:::o;:::-;;;;;;;;;;657:5200;;;799:66;;;;;:::o;:::-;;;;;;;;;;;;;;657:5200;;799:66;;;657:5200;799:66;;;657:5200;;;;799:66;;;;;;;657:5200;799:66;;;;;;;;;;;;;;;;;;;;;;;;;;;657:5200;;;;;;799:66;;;;;;;657:5200;;;;;;;799:66;;;:::o;:::-;657:5200;;799:66;;;;;;;3073:2782;;;;;;;;799:66;3421:56;;3417:155;;-1:-1:-1;;;;;;;;;3608:11:40;;;;:::i;:::-;799:66;-1:-1:-1;;;;;;799:66:40;;;3608:11;799:66;3608:19;799:66;3664:10;799:66;;3642:32;799:66;;;;;;;657:5200;;;;3642:32;;3638:90;;3782:146;;;;799:66;3972:52;799:66;3972:52;:::i;:::-;799:66;;;;;;;;;3942:82;;3938:217;;799:66;;4250:304;799:66;;;;4250:28;799:66;;3664:10;799:66;;;;;;4194:19;799:66;657:5200;;;;;799:66;;;657:5200;799:66;;;-1:-1:-1;;;;;657:5200:40;;799:66;4250:28;657:5200;;;799:66;;;;;;;;;;4250:304;;;;;;:::i;:::-;;;;;;;;;;3617:1;4250:304;;;3073:2782;-1:-1:-1;4565:1284:40;;;3617:1;4661:1120;1049:2;4661:1120;;;;;;3617:1;4661:1120;;1049:2;4661:1120;;;;4565:1284;;;;;3073:2782::o;4661:1120::-;3623:4;3664:10;4661:1120;;;;;;;;;;;;;;;;;;;;;;;;;;;4565:1284;5818:20;;;3617:1;5818:20;4250:304;3617:1;5818:20;4250:304;;;;3664:10;4250:304;3664:10;4250:304;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;3938:217::-;4047:97;4091:52;799:66;4091:52;799:66;4091:52;:::i;799:66::-;-1:-1:-1;;;3617:1:40;4047:97;;657:5200;;;;799:66;657:5200;799:66;;;4047:97;3617:1;4047:97;3638:90;3697:20;;;3617:1;3697:20;;3617:1;3697:20;3417:155;-1:-1:-1;;;3500:61:40;;;657:5200;;;;3617:1;4047:97;2748:319;799:66;2853:34;1049:2;2853:34;;;;3048:12;;799:66;2748:319;:::o;2889:3::-;799:66;;;;;;;;1049:2;799:66;;;;;1049:2;799:66;;2912:71;;2908:121;;2963:1;657:5200;2838:13;;2908:121;3003:11;;2963:1;3003:11;:::o;799:66::-;657:5200;;;799:66;;;;;;;","linkReferences":{}},"methodIdentifiers":{"BRIDGE_TRANSITION_FRONTIER_LEN()":"fb299cd8","getChainLedgerHashes()":"2bc4f8d9","getChainStateHashes()":"03f93e50","getTipLedgerHash()":"3886c09b","getTipStateHash()":"b8184745","isLedgerVerified(bytes32)":"3e16b011","updateChain(bytes32,bytes32,bytes20,bytes32,bytes,uint256,bytes,address)":"37baff0f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"_alignedServiceAddr\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_tipStateHash\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"_devnetFlag\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"MinaNetworkIsWrong\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"MinaProvingSystemIdIsNotValid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewStateIsNotValid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"pubInputTipStateHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"tipStatehash\",\"type\":\"bytes32\"}],\"name\":\"TipStateIsWrong\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BRIDGE_TRANSITION_FRONTIER_LEN\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getChainLedgerHashes\",\"outputs\":[{\"internalType\":\"bytes32[16]\",\"name\":\"\",\"type\":\"bytes32[16]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getChainStateHashes\",\"outputs\":[{\"internalType\":\"bytes32[16]\",\"name\":\"\",\"type\":\"bytes32[16]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTipLedgerHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTipStateHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"ledgerHash\",\"type\":\"bytes32\"}],\"name\":\"isLedgerVerified\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"proofCommitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"provingSystemAuxDataCommitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes20\",\"name\":\"proofGeneratorAddr\",\"type\":\"bytes20\"},{\"internalType\":\"bytes32\",\"name\":\"batchMerkleRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"merkleProof\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"verificationDataBatchIndex\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"pubInput\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"batcherPaymentService\",\"type\":\"address\"}],\"name\":\"updateChain\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Mina to Ethereum Bridge's smart contract for verifying and storing a valid state chain. WARNING: This contract is meant ot be used as an example of how to use the Bridge. NEVER use this contract in a production environment.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"BRIDGE_TRANSITION_FRONTIER_LEN()\":{\"notice\":\"The length of the verified state chain (also called the bridge's transition frontier) to store.\"},\"getChainLedgerHashes()\":{\"notice\":\"Returns the latest verified chain ledger hashes.\"},\"getChainStateHashes()\":{\"notice\":\"Returns the latest verified chain state hashes.\"},\"getTipLedgerHash()\":{\"notice\":\"Returns the last verified ledger hash.\"},\"getTipStateHash()\":{\"notice\":\"Returns the last verified state hash.\"},\"isLedgerVerified(bytes32)\":{\"notice\":\"Returns true if this snarked ledger hash was bridged.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MinaStateSettlementExample.sol\":\"MinaStateSettlementExample\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/\",\":aligned_layer/=lib/aligned_layer/\",\":ds-test/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/\",\":eigenlayer-core-contracts/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/core/\",\":eigenlayer-core/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/\",\":eigenlayer-middleware/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/\",\":eigenlayer-scripts/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/script/\",\":erc4626-tests/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/aligned_layer/claim_contracts/lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol\":{\"keccak256\":\"0x3f67ab9b510b02dc3c07014b49785f1e167401bdb39cc10f737bbf545632d938\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://48d1267e2df6c8ac9b8f419269ff3d23be9b62606ee6b6d2278c27ffebfd73aa\",\"dweb:/ipfs/QmaFyywKCm1eotKjF1evryW8BMQJzPDstZm1wMRW79phXG\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983\",\"dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0xab76a9f4eff865cbb689f627cf98263488765519d7a4ec5ffbcb0ca4972842f9\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ff57ce18e8350bf39f190645db0988bc0f1279f1872150a114a1b520c38a2914\",\"dweb:/ipfs/QmSsUXkNUqYuJgGRumHTSs9rAaboGjecotcM4xHrdBYWaZ\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91\",\"dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol\":{\"keccak256\":\"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc\",\"dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8\",\"dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol\":{\"keccak256\":\"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324\",\"dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d\",\"dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IRewardsCoordinator.sol\":{\"keccak256\":\"0xeab6f1140a90eb7f107d95bae1e8b2ecfbfe36282d62c9df69e6a564c2c59771\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://785cd2777cdcab3b827b5eef2a4dae02c56db07252fdcefd8dd1016be034dc71\",\"dweb:/ipfs/QmNyDFchTuMeiVoxNEfQw96JVq7DfkohGz1txKXe7HyNbq\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c\",\"dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol\":{\"keccak256\":\"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232\",\"dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0x68bf02a443fc8b2f612eba3d39bfefa5f61f78b549f111cdecec5f2c58236a52\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://76bc6875ce74128b861fdac5fd1c0c72f3cc9bacf67fa4a73721b95fb23959ef\",\"dweb:/ipfs/QmPix4WJmf9fXyMZxfgwXEHBcg7V4NAbRqs4HUf5YrSJcM\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol\":{\"keccak256\":\"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7\",\"dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol\":{\"keccak256\":\"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f\",\"dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol\":{\"keccak256\":\"0x9095fc29b96d102b10c02d44b3a6fbfa25593ef6ae4a810363ab885b9e6b0f71\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0945132d482d56278edddb1d32209903c4d3839c87ba4317aadd97dc23610d0f\",\"dweb:/ipfs/QmVuM2aLRHxitx4rPx3GTYTBCVNcjYn6sHBRr1biUjLBP5\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/permissions/Pausable.sol\":{\"keccak256\":\"0xce8ee0ab28f2bce9e94aa19fffe55bebef080327632ac98ff3ab14994b369bc0\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5c7e2be97a8840fa2a0434077a36136553a84efd9bff4b46712ce9fddb813a6a\",\"dweb:/ipfs/QmZKvgPxLAbGo1CqTA4AX6MCDPFLSSNt43ZKWRjvvzFp7S\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/BLSSignatureChecker.sol\":{\"keccak256\":\"0x3a5c205c596d3d73c7afa63ffbbfac8204f6d6a26c151ef26b47278981c3c0fe\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://4beb88bf5b7c7e614f0d87b157d7a4b67afbf1cc93f3127622bd66f696799241\",\"dweb:/ipfs/QmWJKb6qsd69bWgpAHX6deCkJqmJdo9oBLQAXJk97gWEE2\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/ServiceManagerBase.sol\":{\"keccak256\":\"0x7e32ef76daf32e5eb5a93cecf204223e64243f42afe70c7ca71ad3db3925b9c4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://19c10aa22f2e86e27e946b65c434e541caa6af06fcdde46c3b5e9b42890bd221\",\"dweb:/ipfs/QmPb5qDRdbJTniKSqsbjVhbtwdb72G9hWPYcHtVvj1zBxg\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/ServiceManagerBaseStorage.sol\":{\"keccak256\":\"0xa544114dbf6d973a815f997a2ac9237c531c40b08c91d3a65a23b152ed621e1e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://4cf69f9be7d3f3c4184b61b267280a829040973633ea9d95e2ec0dbf70f40a2e\",\"dweb:/ipfs/QmT2HeCJWBLX2p4KAWnyU318MMx9USb2brqCKq1vn2pXpR\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IBLSApkRegistry.sol\":{\"keccak256\":\"0xc07a5edfd95ab4f16f16a8dc8e76eadf4b0e90fe49db90540d01daaad86898c5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://52b53266450a53da641e82d8ae3be93c5e09f8342b4ea0cc96bb9038d8406354\",\"dweb:/ipfs/QmVuoiQyqPTLCGnyt8zDaxiyaj4ETdgTGKv4MDHWzqEDjp\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IBLSSignatureChecker.sol\":{\"keccak256\":\"0xee5823a6674e553c71f5e127f08245827eb116d1ad418b5a7f2a9d6985fd95e0\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://94aa26debddca6c0784585340cf891de4c2d7edaa3e5ec7229af9730312a5a51\",\"dweb:/ipfs/QmWbHGbM7eVYTAmrCVaDU8b4YTm9VAN82XgLDR78uHC7vj\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IIndexRegistry.sol\":{\"keccak256\":\"0x83b2d56aacf27e65c4959a832c5de573e013908c044f6e48ea8284ac5282ae2b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://877af382587e96bb39bcc6db8bb5e4b871db5025c52347d4bee9afeaa4a6cc8d\",\"dweb:/ipfs/QmdnhsQCChzq2o5NgbeT3JxSsEcMm1PC9QW6zenZNPjD9F\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IRegistry.sol\":{\"keccak256\":\"0x51426a17fb7e54bd3720e2890104e97a8559a13ff248b3d6b840916751c143d3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://01f91289e6100d528cb8b318cb14ff22a0bc52882c9d4db41585e030cc9ddc25\",\"dweb:/ipfs/Qmb22nqGrsrtNovHRwbMCvDHGENuxAgrWu3Db4p7Er2MHY\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IRegistryCoordinator.sol\":{\"keccak256\":\"0xdd8effb082c1d5957d5ff43d7c59497b32866a6d82bcc7d5efa49ea9bc9b3385\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cb33a2a1446585b13b7a509e880c60d658d2d2522ec48a9f02e30d2cff54002d\",\"dweb:/ipfs/QmVNG8ZPZkXzNEadPdTj1uBYLiZdCnYfsE5iGU6nJcJXiD\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IServiceManager.sol\":{\"keccak256\":\"0x7602cfb4397a114a0ed60e70e8e1d729fdcf406b585838181b3cb3ffa6ac9a9a\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b718fa016a13a2a5ce298bc5ea7495cc70cf9c358211c75595d5c9dde9a6cc0f\",\"dweb:/ipfs/QmQNrVmU7P7pRqGBJuTQDkjf3wMDY2kJm7zXdtQwsQTbzY\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IServiceManagerUI.sol\":{\"keccak256\":\"0x365761699b4a5b7360ee6c75f12606eefc4b0394754c8b8e1e1eefec0cba7ffb\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ac14ada180b66cbbc5f9de0d6b4bb87b5946d2a9569ae88f2f62aaca47e879a8\",\"dweb:/ipfs/QmcN9xKYF24naNWc6cYah9suz5gJSYE9nPj9eZFWnP35VX\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IStakeRegistry.sol\":{\"keccak256\":\"0x1b8b4d757c1b804bc4cf6fbbf8bf8f89ebdeb30a31014751fe7d01deb9d513d4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://984bf2777b898ed187d28997f9783f5c293a1a1848e3e9aa470ce9183d454c97\",\"dweb:/ipfs/Qme3aTpBrkLu8wYHFMZbCfhXHoZ1M6SpXkeC237T9BuU5B\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/libraries/BN254.sol\":{\"keccak256\":\"0xb428c8d0c3b325507a88a61a80115493eb88606ccc19ed64a31e11294ab853b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7b6fb935bfe0494e6ff970c8f30a86d5f4cf5c3e0967300c28cd383c043acae\",\"dweb:/ipfs/QmUHfFZaVjLPXhkBmcxrZhAHZaSFQDqXtrLGpjGBQBa5Ki\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/libraries/BitmapUtils.sol\":{\"keccak256\":\"0x44315ac460be30a6b18fd4df4d1b8afb46653bf4dc06ca9f93c32353fd0605c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da14f2ead3a375b02afd09d4a02edddf7b63a88945746b96789b2473184fdb04\",\"dweb:/ipfs/QmRqcjxa2Vv2MrLdPeAwsktXdWTirapEDsRbJCyYRtKT6g\"]},\"lib/aligned_layer/contracts/src/core/AlignedLayerServiceManager.sol\":{\"keccak256\":\"0x318fdb1cf3332466f725c56f6de37daf4b2078013d3e4c7a5d20be96b8259a29\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0e1c509ab8add93c822adc90092ddd3140a0ecb9cc2104ce420a5cdb18138569\",\"dweb:/ipfs/QmRUrZ2tYofMww63P2NRo4fgx4DRBBNRHZbmWayMiAqeMi\"]},\"lib/aligned_layer/contracts/src/core/AlignedLayerServiceManagerStorage.sol\":{\"keccak256\":\"0x7359959b102fcb5f313d7a0a4a2497ff651c1836ec5259f4f86bd5d20da502ce\",\"urls\":[\"bzz-raw://e1990be0b54c7ab6734ff3096aac61c951d762e0dc6d52d3890a364fc1d92569\",\"dweb:/ipfs/QmevhuweQnjTVBmxTyWucznnQ68kU1U5uHvtYm5FvkBfRR\"]},\"lib/aligned_layer/contracts/src/core/IAlignedLayerServiceManager.sol\":{\"keccak256\":\"0xdcec4919e7fdf7855a7f831291a4e5b3345739c88d2c6026f9b953d42f773c48\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2c37687aac70fa1281b5ccceb6208b5044eeb3c055286c20793632efd7f36adc\",\"dweb:/ipfs/Qmb9CC8RumoALvjjUujbyCZWokzvg4feSEoQFZ3swdggLT\"]},\"src/MinaStateSettlementExample.sol\":{\"keccak256\":\"0x6111e43655e2d21bd363fa13067a280834ea17d6ee03c0d6ea16d2fa7800696e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8ac76890e276df1edfd38d74791e4abb01e6e95f0c6162bc929dd2b7b1dff3e9\",\"dweb:/ipfs/QmVNyDMVEguPCKuQVYRH61BdvbT9DBMrFpKWMapmYmZqe8\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address payable","name":"_alignedServiceAddr","type":"address"},{"internalType":"bytes32","name":"_tipStateHash","type":"bytes32"},{"internalType":"bool","name":"_devnetFlag","type":"bool"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"MinaNetworkIsWrong"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"type":"error","name":"MinaProvingSystemIdIsNotValid"},{"inputs":[],"type":"error","name":"NewStateIsNotValid"},{"inputs":[{"internalType":"bytes32","name":"pubInputTipStateHash","type":"bytes32"},{"internalType":"bytes32","name":"tipStatehash","type":"bytes32"}],"type":"error","name":"TipStateIsWrong"},{"inputs":[],"stateMutability":"view","type":"function","name":"BRIDGE_TRANSITION_FRONTIER_LEN","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getChainLedgerHashes","outputs":[{"internalType":"bytes32[16]","name":"","type":"bytes32[16]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getChainStateHashes","outputs":[{"internalType":"bytes32[16]","name":"","type":"bytes32[16]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getTipLedgerHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getTipStateHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"ledgerHash","type":"bytes32"}],"stateMutability":"view","type":"function","name":"isLedgerVerified","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"proofCommitment","type":"bytes32"},{"internalType":"bytes32","name":"provingSystemAuxDataCommitment","type":"bytes32"},{"internalType":"bytes20","name":"proofGeneratorAddr","type":"bytes20"},{"internalType":"bytes32","name":"batchMerkleRoot","type":"bytes32"},{"internalType":"bytes","name":"merkleProof","type":"bytes"},{"internalType":"uint256","name":"verificationDataBatchIndex","type":"uint256"},{"internalType":"bytes","name":"pubInput","type":"bytes"},{"internalType":"address","name":"batcherPaymentService","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"updateChain"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{"BRIDGE_TRANSITION_FRONTIER_LEN()":{"notice":"The length of the verified state chain (also called the bridge's transition frontier) to store."},"getChainLedgerHashes()":{"notice":"Returns the latest verified chain ledger hashes."},"getChainStateHashes()":{"notice":"Returns the latest verified chain state hashes."},"getTipLedgerHash()":{"notice":"Returns the last verified ledger hash."},"getTipStateHash()":{"notice":"Returns the last verified state hash."},"isLedgerVerified(bytes32)":{"notice":"Returns true if this snarked ledger hash was bridged."}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/","@openzeppelin/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/","aligned_layer/=lib/aligned_layer/","ds-test/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/ds-test/src/","eigenlayer-contracts/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/","eigenlayer-core-contracts/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/core/","eigenlayer-core/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/","eigenlayer-middleware/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/","eigenlayer-scripts/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/script/","erc4626-tests/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/aligned_layer/claim_contracts/lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MinaStateSettlementExample.sol":"MinaStateSettlementExample"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol":{"keccak256":"0x3f67ab9b510b02dc3c07014b49785f1e167401bdb39cc10f737bbf545632d938","urls":["bzz-raw://48d1267e2df6c8ac9b8f419269ff3d23be9b62606ee6b6d2278c27ffebfd73aa","dweb:/ipfs/QmaFyywKCm1eotKjF1evryW8BMQJzPDstZm1wMRW79phXG"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00","urls":["bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983","dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol":{"keccak256":"0xab76a9f4eff865cbb689f627cf98263488765519d7a4ec5ffbcb0ca4972842f9","urls":["bzz-raw://ff57ce18e8350bf39f190645db0988bc0f1279f1872150a114a1b520c38a2914","dweb:/ipfs/QmSsUXkNUqYuJgGRumHTSs9rAaboGjecotcM4xHrdBYWaZ"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol":{"keccak256":"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c","urls":["bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91","dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz"],"license":"CC0-1.0"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol":{"keccak256":"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba","urls":["bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc","dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol":{"keccak256":"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c","urls":["bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8","dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol":{"keccak256":"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f","urls":["bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324","dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":{"keccak256":"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49","urls":["bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d","dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IRewardsCoordinator.sol":{"keccak256":"0xeab6f1140a90eb7f107d95bae1e8b2ecfbfe36282d62c9df69e6a564c2c59771","urls":["bzz-raw://785cd2777cdcab3b827b5eef2a4dae02c56db07252fdcefd8dd1016be034dc71","dweb:/ipfs/QmNyDFchTuMeiVoxNEfQw96JVq7DfkohGz1txKXe7HyNbq"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"keccak256":"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092","urls":["bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c","dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol":{"keccak256":"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79","urls":["bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232","dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol":{"keccak256":"0x68bf02a443fc8b2f612eba3d39bfefa5f61f78b549f111cdecec5f2c58236a52","urls":["bzz-raw://76bc6875ce74128b861fdac5fd1c0c72f3cc9bacf67fa4a73721b95fb23959ef","dweb:/ipfs/QmPix4WJmf9fXyMZxfgwXEHBcg7V4NAbRqs4HUf5YrSJcM"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol":{"keccak256":"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377","urls":["bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7","dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol":{"keccak256":"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d","urls":["bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f","dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":{"keccak256":"0x9095fc29b96d102b10c02d44b3a6fbfa25593ef6ae4a810363ab885b9e6b0f71","urls":["bzz-raw://0945132d482d56278edddb1d32209903c4d3839c87ba4317aadd97dc23610d0f","dweb:/ipfs/QmVuM2aLRHxitx4rPx3GTYTBCVNcjYn6sHBRr1biUjLBP5"],"license":"MIT"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/permissions/Pausable.sol":{"keccak256":"0xce8ee0ab28f2bce9e94aa19fffe55bebef080327632ac98ff3ab14994b369bc0","urls":["bzz-raw://5c7e2be97a8840fa2a0434077a36136553a84efd9bff4b46712ce9fddb813a6a","dweb:/ipfs/QmZKvgPxLAbGo1CqTA4AX6MCDPFLSSNt43ZKWRjvvzFp7S"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888","urls":["bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a","dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb"],"license":"MIT"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e","urls":["bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497","dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8"],"license":"MIT"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3","urls":["bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4","dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt"],"license":"MIT"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/BLSSignatureChecker.sol":{"keccak256":"0x3a5c205c596d3d73c7afa63ffbbfac8204f6d6a26c151ef26b47278981c3c0fe","urls":["bzz-raw://4beb88bf5b7c7e614f0d87b157d7a4b67afbf1cc93f3127622bd66f696799241","dweb:/ipfs/QmWJKb6qsd69bWgpAHX6deCkJqmJdo9oBLQAXJk97gWEE2"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/ServiceManagerBase.sol":{"keccak256":"0x7e32ef76daf32e5eb5a93cecf204223e64243f42afe70c7ca71ad3db3925b9c4","urls":["bzz-raw://19c10aa22f2e86e27e946b65c434e541caa6af06fcdde46c3b5e9b42890bd221","dweb:/ipfs/QmPb5qDRdbJTniKSqsbjVhbtwdb72G9hWPYcHtVvj1zBxg"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/ServiceManagerBaseStorage.sol":{"keccak256":"0xa544114dbf6d973a815f997a2ac9237c531c40b08c91d3a65a23b152ed621e1e","urls":["bzz-raw://4cf69f9be7d3f3c4184b61b267280a829040973633ea9d95e2ec0dbf70f40a2e","dweb:/ipfs/QmT2HeCJWBLX2p4KAWnyU318MMx9USb2brqCKq1vn2pXpR"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IBLSApkRegistry.sol":{"keccak256":"0xc07a5edfd95ab4f16f16a8dc8e76eadf4b0e90fe49db90540d01daaad86898c5","urls":["bzz-raw://52b53266450a53da641e82d8ae3be93c5e09f8342b4ea0cc96bb9038d8406354","dweb:/ipfs/QmVuoiQyqPTLCGnyt8zDaxiyaj4ETdgTGKv4MDHWzqEDjp"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IBLSSignatureChecker.sol":{"keccak256":"0xee5823a6674e553c71f5e127f08245827eb116d1ad418b5a7f2a9d6985fd95e0","urls":["bzz-raw://94aa26debddca6c0784585340cf891de4c2d7edaa3e5ec7229af9730312a5a51","dweb:/ipfs/QmWbHGbM7eVYTAmrCVaDU8b4YTm9VAN82XgLDR78uHC7vj"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IIndexRegistry.sol":{"keccak256":"0x83b2d56aacf27e65c4959a832c5de573e013908c044f6e48ea8284ac5282ae2b","urls":["bzz-raw://877af382587e96bb39bcc6db8bb5e4b871db5025c52347d4bee9afeaa4a6cc8d","dweb:/ipfs/QmdnhsQCChzq2o5NgbeT3JxSsEcMm1PC9QW6zenZNPjD9F"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IRegistry.sol":{"keccak256":"0x51426a17fb7e54bd3720e2890104e97a8559a13ff248b3d6b840916751c143d3","urls":["bzz-raw://01f91289e6100d528cb8b318cb14ff22a0bc52882c9d4db41585e030cc9ddc25","dweb:/ipfs/Qmb22nqGrsrtNovHRwbMCvDHGENuxAgrWu3Db4p7Er2MHY"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IRegistryCoordinator.sol":{"keccak256":"0xdd8effb082c1d5957d5ff43d7c59497b32866a6d82bcc7d5efa49ea9bc9b3385","urls":["bzz-raw://cb33a2a1446585b13b7a509e880c60d658d2d2522ec48a9f02e30d2cff54002d","dweb:/ipfs/QmVNG8ZPZkXzNEadPdTj1uBYLiZdCnYfsE5iGU6nJcJXiD"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IServiceManager.sol":{"keccak256":"0x7602cfb4397a114a0ed60e70e8e1d729fdcf406b585838181b3cb3ffa6ac9a9a","urls":["bzz-raw://b718fa016a13a2a5ce298bc5ea7495cc70cf9c358211c75595d5c9dde9a6cc0f","dweb:/ipfs/QmQNrVmU7P7pRqGBJuTQDkjf3wMDY2kJm7zXdtQwsQTbzY"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IServiceManagerUI.sol":{"keccak256":"0x365761699b4a5b7360ee6c75f12606eefc4b0394754c8b8e1e1eefec0cba7ffb","urls":["bzz-raw://ac14ada180b66cbbc5f9de0d6b4bb87b5946d2a9569ae88f2f62aaca47e879a8","dweb:/ipfs/QmcN9xKYF24naNWc6cYah9suz5gJSYE9nPj9eZFWnP35VX"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IStakeRegistry.sol":{"keccak256":"0x1b8b4d757c1b804bc4cf6fbbf8bf8f89ebdeb30a31014751fe7d01deb9d513d4","urls":["bzz-raw://984bf2777b898ed187d28997f9783f5c293a1a1848e3e9aa470ce9183d454c97","dweb:/ipfs/Qme3aTpBrkLu8wYHFMZbCfhXHoZ1M6SpXkeC237T9BuU5B"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/libraries/BN254.sol":{"keccak256":"0xb428c8d0c3b325507a88a61a80115493eb88606ccc19ed64a31e11294ab853b3","urls":["bzz-raw://d7b6fb935bfe0494e6ff970c8f30a86d5f4cf5c3e0967300c28cd383c043acae","dweb:/ipfs/QmUHfFZaVjLPXhkBmcxrZhAHZaSFQDqXtrLGpjGBQBa5Ki"],"license":"MIT"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/libraries/BitmapUtils.sol":{"keccak256":"0x44315ac460be30a6b18fd4df4d1b8afb46653bf4dc06ca9f93c32353fd0605c5","urls":["bzz-raw://da14f2ead3a375b02afd09d4a02edddf7b63a88945746b96789b2473184fdb04","dweb:/ipfs/QmRqcjxa2Vv2MrLdPeAwsktXdWTirapEDsRbJCyYRtKT6g"],"license":"MIT"},"lib/aligned_layer/contracts/src/core/AlignedLayerServiceManager.sol":{"keccak256":"0x318fdb1cf3332466f725c56f6de37daf4b2078013d3e4c7a5d20be96b8259a29","urls":["bzz-raw://0e1c509ab8add93c822adc90092ddd3140a0ecb9cc2104ce420a5cdb18138569","dweb:/ipfs/QmRUrZ2tYofMww63P2NRo4fgx4DRBBNRHZbmWayMiAqeMi"],"license":"UNLICENSED"},"lib/aligned_layer/contracts/src/core/AlignedLayerServiceManagerStorage.sol":{"keccak256":"0x7359959b102fcb5f313d7a0a4a2497ff651c1836ec5259f4f86bd5d20da502ce","urls":["bzz-raw://e1990be0b54c7ab6734ff3096aac61c951d762e0dc6d52d3890a364fc1d92569","dweb:/ipfs/QmevhuweQnjTVBmxTyWucznnQ68kU1U5uHvtYm5FvkBfRR"],"license":null},"lib/aligned_layer/contracts/src/core/IAlignedLayerServiceManager.sol":{"keccak256":"0xdcec4919e7fdf7855a7f831291a4e5b3345739c88d2c6026f9b953d42f773c48","urls":["bzz-raw://2c37687aac70fa1281b5ccceb6208b5044eeb3c055286c20793632efd7f36adc","dweb:/ipfs/Qmb9CC8RumoALvjjUujbyCZWokzvg4feSEoQFZ3swdggLT"],"license":"UNLICENSED"},"src/MinaStateSettlementExample.sol":{"keccak256":"0x6111e43655e2d21bd363fa13067a280834ea17d6ee03c0d6ea16d2fa7800696e","urls":["bzz-raw://8ac76890e276df1edfd38d74791e4abb01e6e95f0c6162bc929dd2b7b1dff3e9","dweb:/ipfs/QmVNyDMVEguPCKuQVYRH61BdvbT9DBMrFpKWMapmYmZqe8"],"license":"UNLICENSED"}},"version":1},"id":40} \ No newline at end of file diff --git a/core/abi/NoriTokenBridge.json b/core/abi/NoriTokenBridge.json new file mode 100644 index 000000000..5eddd5d69 --- /dev/null +++ b/core/abi/NoriTokenBridge.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"payable"},{"type":"function","name":"DECIMALS","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"MAX_MAGNITUDE","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"WEI_PER_BRIDGE_UNIT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"bridgeOperator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"burnSoFarSet","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"codeChallengeToEthAddress","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isConfigured","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"lockTokens","inputs":[{"name":"attestationHash","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"lockedTokens","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"setAlignedContracts","inputs":[{"name":"_stateSettlementAddr","type":"address","internalType":"address"},{"name":"_accountValidationAddr","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"totalLocked","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"unlockTokens","inputs":[{"name":"toUnlockAmount","type":"uint256","internalType":"uint256"},{"name":"proofCommitment","type":"bytes32","internalType":"bytes32"},{"name":"provingSystemAuxDataCommitment","type":"bytes32","internalType":"bytes32"},{"name":"proofGeneratorAddr","type":"bytes20","internalType":"bytes20"},{"name":"batchMerkleRoot","type":"bytes32","internalType":"bytes32"},{"name":"merkleProof","type":"bytes","internalType":"bytes"},{"name":"verificationDataBatchIndex","type":"uint256","internalType":"uint256"},{"name":"pubInput","type":"bytes","internalType":"bytes"},{"name":"batcherPaymentService","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdraw","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"AccountValidationSet","inputs":[{"name":"newAddress","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"StateSettlementSet","inputs":[{"name":"newAddress","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"TokensLocked","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"},{"name":"attestationHash","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"when","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokensUnlocked","inputs":[{"name":"pubKeyTokenIdHash","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"receiver","type":"address","indexed":false,"internalType":"address"},{"name":"when","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AlignedContractsNotConfigured","inputs":[]},{"type":"error","name":"NotBridgeOperator","inputs":[]},{"type":"error","name":"ZeroAddress","inputs":[]}],"bytecode":{"object":"0x608060408190525f80546001600160a01b031916331790556112c190816100248239f3fe6080806040526004361015610012575f80fd5b5f905f3560e01c9081632e0f262514611093575080633471f65e146110695780633ccfd60b14610fdd57806353719b6e14610f9957806354506bb414610f675780635689141214610f4a578063590665c214610f235780635f82dea814610e355780636e27d88914610bcb578063c58f219c14610ba9578063ca430143146100f6578063d3a057c8146100d15763e7ece690146100ad575f80fd5b346100ce57806003193601126100ce5750602064e8d4a51000604051908152f35b80fd5b50346100ce57806003193601126100ce5760206100ec611263565b6040519015158152f35b50346100ce576101203660031901126100ce57600435606435906001600160601b03198216809203610ba55760a4356001600160401b038111610ba15761014190369060040161115f565b60e4356001600160401b038111610ab75736602382011215610ab75780600401356001600160401b038111610ab35760248201818301936024850196368811610a4b57610104356001600160a01b03811692908390036109ef576101a3611263565b15610b9257846020116109ef576024602060018060a01b036004541660405192838092633e16b01160e01b8252893560048301525afa908115610b87578b91610b68575b5015610b32576020926040516101fc816110c2565b6024358152848101916044358352604082019485526102c1606083019760843589526080840195865261023a60a085019160c43583528b369161111a565b60c0850190815260e085019384526102a860018060a01b0360055416976040519b8c9a8b998a99639029ad1560e01b8b528e60048c01525160248b01525160448a01526001600160601b031990511660648901525160848801525161010060a48801526101248701906111b6565b915160c4860152518482036023190160e48601526111b6565b90516001600160a01b031661010483015203915afa908115610b27578791610af8575b5015610abb57602811610ab75760206027198284030112610ab757604c810135906001600160401b038211610ab357016024604b198284030101916103c08312610ab3576040519161016083018381106001600160401b03821117610a9f5760405261035386604c83016111e7565b83526020830193608c820135855260ac8201356001600160401b038111610a4b57604c9083010187601f82011215610a4b57878160206103959335910161111a565b60408501526103a660cc8301611216565b60608501526103b760ec830161122a565b608085015261010c82013560a08501526103d58761012c84016111e7565b60c085015261016c82013560e085015260a061013f198201126109db5760405160a081018181106001600160401b03821117610a8b576040526101c0919061042061018c8501611216565b815261042f6101ac850161122a565b60208201526104416101cc8501611216565b60408201526104536101ec850161122a565b606082015261046561020c8501611216565b60808201526101008601526101df190112610a07576040516101c081018181106001600160401b03821117610a775760405261022c8201356005811015610a4b57815261024c8201356005811015610a4b57602082015261026c8201356005811015610a4b57604082015261028c8201356005811015610a4b5760608201526102ac8201356005811015610a4b5760808201526102cc8201356005811015610a4b5760a08201526102ec8201356005811015610a4b5760c082015261052d61030c830161122a565b60e082015261032c8201356005811015610a4b5761010082015261034c8201356005811015610a4b5761012082015261036c8201356005811015610a4b5761014082015261038c8201356005811015610a4b576101608201526103ac8201356005811015610a4b576101808201526103cc8201356005811015610a4b576101a08201526101208401526103ec810135906001600160401b0382116109db57602491604c91010180920301946109608612610a07576040519560e087018781106001600160401b03821117610a775760405281601f840112156109db5760405190610619610100836110f9565b81610100850192848411610a735785905b848210610a63575050885261074060ff19820112610a4b5760405191606083018381106001600160401b03821117610a4f576040523560038110156109ef5782526101208401359060038210156109ef5761070091602084015261013f1901126109db5760405161069a816110c2565b8261015f85011215610a4b576040516106b460e0826110f9565b80610300860191858311610a47576101408701905b838210610a2d57505082528361031f860112156109ef576040516106ef6101e0826110f9565b806106c0870192868411610a29578692915b848210610a0b57505060208401526107189161123b565b604082015261072b83610700860161123b565b606082015261073e83610740860161123b565b608082015261075183610780860161123b565b60a0820152610764836107c0860161123b565b60c082015261077783610800860161123b565b60e082015260408201526020870152610793610840830161122a565b60408701528061087f83011215610a07576040516107b260a0826110f9565b806109008401918383116109ef576108608501905b8382106109df57505060608801526107de9061122a565b60808701526107f061092083016111da565b60a08701526109408201356001600160401b0381116109db57610813920161115f565b60c08501526101408101938452519051604051906020808301938051855201511515604083015260608201526060815261084e6080826110f9565b519020918284526006602052604084205460408251510151818103908082116109c757821461096b57831161090857826108879161117d565b838552600660205260408520555151606001516001600160a01b03168382828282156108ff575b839283928392f1156108f4577fb9ca611be7435f3c6f1241086b057aa49a657c2888526894a9fc370e482b0afb916060916040519182526020820152426040820152a280f35b6040513d85823e3d90fd5b506108fc6108ae565b60405162461bcd60e51b815260206004820152603560248201527f546f20756e6c6f636b20616d6f756e742069732067726561746572207468616e6044820152742074686520616d6f756e7420746f20756e6c6f636b60581b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f4275726e20736f206661722069732067726561746572207468616e207468652060448201526d30b6b7bab73a103a3790313ab93760911b6064820152608490fd5b634e487b7160e01b87526011600452602487fd5b8780fd5b81358152602091820191016107c7565b8980fd5b634e487b7160e01b5f52604160045260245ffd5b8680fd5b602090610a1c83949560409461123b565b8152019101869291610701565b8c80fd5b6020604091610a3c898561123b565b8152019101906106c9565b8b80fd5b8880fd5b634e487b7160e01b8b52604160045260248bfd5b813581526020918201910161062a565b8a80fd5b634e487b7160e01b89526041600452602489fd5b634e487b7160e01b8a52604160045260248afd5b634e487b7160e01b88526041600452602488fd5b8580fd5b8480fd5b60405162461bcd60e51b8152602060048201526015602482015274125b9d985b1a5908169ad85c1c081058d8dbdd5b9d605a1b6044820152606490fd5b610b1a915060203d602011610b20575b610b1281836110f9565b81019061119e565b5f6102e4565b503d610b08565b6040513d89823e3d90fd5b60405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b2102632b233b2b960911b6044820152606490fd5b610b81915060203d602011610b2057610b1281836110f9565b5f6101e7565b6040513d8d823e3d90fd5b631158015d60e31b8a5260048afd5b8380fd5b8280fd5b50346100ce57806003193601126100ce5760206040516001600160401b038152f35b6020366003190112610e3157600435610be2611263565b15610e22573415610dde5764e8d4a51000803404903406610d88576001600160401b03610c118260025461117d565b11610d37575f828152600360205260409020546001600160a01b031680610cbd57505f82815260036020526040902080546001600160a01b03191633179055610c80905b335f52600160205260405f20835f5260205260405f20610c7634825461117d565b905560025461117d565b6002556040519081523460208201524260408201527f90e20a62e0f2a608d33bd96a4e15cb853006a15caf4455f373b7b55de520b68c60603392a2005b3303610ccc57610c8090610c55565b60405162461bcd60e51b815260206004820152603e60248201527f54686973204d696e61206163636f756e7420697320616c7265616479206c696e60448201527f6b656420746f206120646966666572656e7420455448206164647265737300006064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f546f74616c206c6f636b65642065786365656473206d6178696d756d20616c6c6044820152631bddd95960e21b6064820152608490fd5b60405162461bcd60e51b815260206004820152602860248201527f4d757374206265206d756c7469706c65206f6620736d616c6c657374206272696044820152671919d9481d5b9a5d60c21b6064820152608490fd5b606460405162461bcd60e51b815260206004820152602060248201527f596f75206d7573742073656e6420736f6d6520457468657220746f206c6f636b6044820152fd5b631158015d60e31b5f5260045ffd5b5f80fd5b34610e31576040366003190112610e3157610e4e6110ac565b6024356001600160a01b0381169190829003610e31575f546001600160a01b03163303610f14576001600160a01b031680158015610f0c575b610efd57806001600160601b0360a01b6004541617600455816001600160601b0360a01b60055416176005557f9ffaad5d5d3a89ca0a826d0a585796cef555c81564727dc06c9eefa27bb9c7395f80a27f8fbe9777c0f01f68e53ad387c04b3a2b8786c57e6fc4344300e32f7ca29050595f80a2005b63d92e233d60e01b5f5260045ffd5b508115610e87565b6360fb4b4960e01b5f5260045ffd5b34610e31575f366003190112610e31575f546040516001600160a01b039091168152602090f35b34610e31575f366003190112610e31576020600254604051908152f35b34610e31576020366003190112610e31576004355f526003602052602060018060a01b0360405f205416604051908152f35b34610e31576040366003190112610e31576001600160a01b03610fba6110ac565b165f52600160205260405f206024355f52602052602060405f2054604051908152f35b34610e31575f366003190112610e31575f546001600160a01b031633819003610f1457611008611263565b15610e22574790811561102f575f808093819382f11561102457005b6040513d5f823e3d90fd5b60405162461bcd60e51b81526020600482015260126024820152714e6f2045544820746f20776974686472617760701b6044820152606490fd5b34610e31576020366003190112610e31576004355f526006602052602060405f2054604051908152f35b34610e31575f366003190112610e315780600660209252f35b600435906001600160a01b0382168203610e3157565b61010081019081106001600160401b038211176109f357604052565b604081019081106001600160401b038211176109f357604052565b90601f801991011681019081106001600160401b038211176109f357604052565b9291926001600160401b0382116109f35760405191611143601f8201601f1916602001846110f9565b829481845281830111610e31578281602093845f960137010152565b9080601f83011215610e315781602061117a9335910161111a565b90565b9190820180921161118a57565b634e487b7160e01b5f52601160045260245ffd5b90816020910312610e3157518015158103610e315790565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b35908115158203610e3157565b9190826040910312610e31576040516111ff816110de565b602061121181839580358552016111da565b910152565b35906001600160401b0382168203610e3157565b359063ffffffff82168203610e3157565b9190826040910312610e3157604051611253816110de565b6020808294803584520135910152565b6004546001600160a01b03161515806112795790565b506005546001600160a01b031615159056fea26469706673582212205485fe0f5bf777ad9cd10d971118c8e98c4a41f70f877cf12054302c5220220864736f6c634300081e0033","sourceMap":"270:8356:41:-:0;;;;;3037:27;270:8356;;-1:-1:-1;;;;;;270:8356:41;3054:10;270:8356;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080806040526004361015610012575f80fd5b5f905f3560e01c9081632e0f262514611093575080633471f65e146110695780633ccfd60b14610fdd57806353719b6e14610f9957806354506bb414610f675780635689141214610f4a578063590665c214610f235780635f82dea814610e355780636e27d88914610bcb578063c58f219c14610ba9578063ca430143146100f6578063d3a057c8146100d15763e7ece690146100ad575f80fd5b346100ce57806003193601126100ce5750602064e8d4a51000604051908152f35b80fd5b50346100ce57806003193601126100ce5760206100ec611263565b6040519015158152f35b50346100ce576101203660031901126100ce57600435606435906001600160601b03198216809203610ba55760a4356001600160401b038111610ba15761014190369060040161115f565b60e4356001600160401b038111610ab75736602382011215610ab75780600401356001600160401b038111610ab35760248201818301936024850196368811610a4b57610104356001600160a01b03811692908390036109ef576101a3611263565b15610b9257846020116109ef576024602060018060a01b036004541660405192838092633e16b01160e01b8252893560048301525afa908115610b87578b91610b68575b5015610b32576020926040516101fc816110c2565b6024358152848101916044358352604082019485526102c1606083019760843589526080840195865261023a60a085019160c43583528b369161111a565b60c0850190815260e085019384526102a860018060a01b0360055416976040519b8c9a8b998a99639029ad1560e01b8b528e60048c01525160248b01525160448a01526001600160601b031990511660648901525160848801525161010060a48801526101248701906111b6565b915160c4860152518482036023190160e48601526111b6565b90516001600160a01b031661010483015203915afa908115610b27578791610af8575b5015610abb57602811610ab75760206027198284030112610ab757604c810135906001600160401b038211610ab357016024604b198284030101916103c08312610ab3576040519161016083018381106001600160401b03821117610a9f5760405261035386604c83016111e7565b83526020830193608c820135855260ac8201356001600160401b038111610a4b57604c9083010187601f82011215610a4b57878160206103959335910161111a565b60408501526103a660cc8301611216565b60608501526103b760ec830161122a565b608085015261010c82013560a08501526103d58761012c84016111e7565b60c085015261016c82013560e085015260a061013f198201126109db5760405160a081018181106001600160401b03821117610a8b576040526101c0919061042061018c8501611216565b815261042f6101ac850161122a565b60208201526104416101cc8501611216565b60408201526104536101ec850161122a565b606082015261046561020c8501611216565b60808201526101008601526101df190112610a07576040516101c081018181106001600160401b03821117610a775760405261022c8201356005811015610a4b57815261024c8201356005811015610a4b57602082015261026c8201356005811015610a4b57604082015261028c8201356005811015610a4b5760608201526102ac8201356005811015610a4b5760808201526102cc8201356005811015610a4b5760a08201526102ec8201356005811015610a4b5760c082015261052d61030c830161122a565b60e082015261032c8201356005811015610a4b5761010082015261034c8201356005811015610a4b5761012082015261036c8201356005811015610a4b5761014082015261038c8201356005811015610a4b576101608201526103ac8201356005811015610a4b576101808201526103cc8201356005811015610a4b576101a08201526101208401526103ec810135906001600160401b0382116109db57602491604c91010180920301946109608612610a07576040519560e087018781106001600160401b03821117610a775760405281601f840112156109db5760405190610619610100836110f9565b81610100850192848411610a735785905b848210610a63575050885261074060ff19820112610a4b5760405191606083018381106001600160401b03821117610a4f576040523560038110156109ef5782526101208401359060038210156109ef5761070091602084015261013f1901126109db5760405161069a816110c2565b8261015f85011215610a4b576040516106b460e0826110f9565b80610300860191858311610a47576101408701905b838210610a2d57505082528361031f860112156109ef576040516106ef6101e0826110f9565b806106c0870192868411610a29578692915b848210610a0b57505060208401526107189161123b565b604082015261072b83610700860161123b565b606082015261073e83610740860161123b565b608082015261075183610780860161123b565b60a0820152610764836107c0860161123b565b60c082015261077783610800860161123b565b60e082015260408201526020870152610793610840830161122a565b60408701528061087f83011215610a07576040516107b260a0826110f9565b806109008401918383116109ef576108608501905b8382106109df57505060608801526107de9061122a565b60808701526107f061092083016111da565b60a08701526109408201356001600160401b0381116109db57610813920161115f565b60c08501526101408101938452519051604051906020808301938051855201511515604083015260608201526060815261084e6080826110f9565b519020918284526006602052604084205460408251510151818103908082116109c757821461096b57831161090857826108879161117d565b838552600660205260408520555151606001516001600160a01b03168382828282156108ff575b839283928392f1156108f4577fb9ca611be7435f3c6f1241086b057aa49a657c2888526894a9fc370e482b0afb916060916040519182526020820152426040820152a280f35b6040513d85823e3d90fd5b506108fc6108ae565b60405162461bcd60e51b815260206004820152603560248201527f546f20756e6c6f636b20616d6f756e742069732067726561746572207468616e6044820152742074686520616d6f756e7420746f20756e6c6f636b60581b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f4275726e20736f206661722069732067726561746572207468616e207468652060448201526d30b6b7bab73a103a3790313ab93760911b6064820152608490fd5b634e487b7160e01b87526011600452602487fd5b8780fd5b81358152602091820191016107c7565b8980fd5b634e487b7160e01b5f52604160045260245ffd5b8680fd5b602090610a1c83949560409461123b565b8152019101869291610701565b8c80fd5b6020604091610a3c898561123b565b8152019101906106c9565b8b80fd5b8880fd5b634e487b7160e01b8b52604160045260248bfd5b813581526020918201910161062a565b8a80fd5b634e487b7160e01b89526041600452602489fd5b634e487b7160e01b8a52604160045260248afd5b634e487b7160e01b88526041600452602488fd5b8580fd5b8480fd5b60405162461bcd60e51b8152602060048201526015602482015274125b9d985b1a5908169ad85c1c081058d8dbdd5b9d605a1b6044820152606490fd5b610b1a915060203d602011610b20575b610b1281836110f9565b81019061119e565b5f6102e4565b503d610b08565b6040513d89823e3d90fd5b60405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b2102632b233b2b960911b6044820152606490fd5b610b81915060203d602011610b2057610b1281836110f9565b5f6101e7565b6040513d8d823e3d90fd5b631158015d60e31b8a5260048afd5b8380fd5b8280fd5b50346100ce57806003193601126100ce5760206040516001600160401b038152f35b6020366003190112610e3157600435610be2611263565b15610e22573415610dde5764e8d4a51000803404903406610d88576001600160401b03610c118260025461117d565b11610d37575f828152600360205260409020546001600160a01b031680610cbd57505f82815260036020526040902080546001600160a01b03191633179055610c80905b335f52600160205260405f20835f5260205260405f20610c7634825461117d565b905560025461117d565b6002556040519081523460208201524260408201527f90e20a62e0f2a608d33bd96a4e15cb853006a15caf4455f373b7b55de520b68c60603392a2005b3303610ccc57610c8090610c55565b60405162461bcd60e51b815260206004820152603e60248201527f54686973204d696e61206163636f756e7420697320616c7265616479206c696e60448201527f6b656420746f206120646966666572656e7420455448206164647265737300006064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f546f74616c206c6f636b65642065786365656473206d6178696d756d20616c6c6044820152631bddd95960e21b6064820152608490fd5b60405162461bcd60e51b815260206004820152602860248201527f4d757374206265206d756c7469706c65206f6620736d616c6c657374206272696044820152671919d9481d5b9a5d60c21b6064820152608490fd5b606460405162461bcd60e51b815260206004820152602060248201527f596f75206d7573742073656e6420736f6d6520457468657220746f206c6f636b6044820152fd5b631158015d60e31b5f5260045ffd5b5f80fd5b34610e31576040366003190112610e3157610e4e6110ac565b6024356001600160a01b0381169190829003610e31575f546001600160a01b03163303610f14576001600160a01b031680158015610f0c575b610efd57806001600160601b0360a01b6004541617600455816001600160601b0360a01b60055416176005557f9ffaad5d5d3a89ca0a826d0a585796cef555c81564727dc06c9eefa27bb9c7395f80a27f8fbe9777c0f01f68e53ad387c04b3a2b8786c57e6fc4344300e32f7ca29050595f80a2005b63d92e233d60e01b5f5260045ffd5b508115610e87565b6360fb4b4960e01b5f5260045ffd5b34610e31575f366003190112610e31575f546040516001600160a01b039091168152602090f35b34610e31575f366003190112610e31576020600254604051908152f35b34610e31576020366003190112610e31576004355f526003602052602060018060a01b0360405f205416604051908152f35b34610e31576040366003190112610e31576001600160a01b03610fba6110ac565b165f52600160205260405f206024355f52602052602060405f2054604051908152f35b34610e31575f366003190112610e31575f546001600160a01b031633819003610f1457611008611263565b15610e22574790811561102f575f808093819382f11561102457005b6040513d5f823e3d90fd5b60405162461bcd60e51b81526020600482015260126024820152714e6f2045544820746f20776974686472617760701b6044820152606490fd5b34610e31576020366003190112610e31576004355f526006602052602060405f2054604051908152f35b34610e31575f366003190112610e315780600660209252f35b600435906001600160a01b0382168203610e3157565b61010081019081106001600160401b038211176109f357604052565b604081019081106001600160401b038211176109f357604052565b90601f801991011681019081106001600160401b038211176109f357604052565b9291926001600160401b0382116109f35760405191611143601f8201601f1916602001846110f9565b829481845281830111610e31578281602093845f960137010152565b9080601f83011215610e315781602061117a9335910161111a565b90565b9190820180921161118a57565b634e487b7160e01b5f52601160045260245ffd5b90816020910312610e3157518015158103610e315790565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b35908115158203610e3157565b9190826040910312610e31576040516111ff816110de565b602061121181839580358552016111da565b910152565b35906001600160401b0382168203610e3157565b359063ffffffff82168203610e3157565b9190826040910312610e3157604051611253816110de565b6020808294803584520135910152565b6004546001600160a01b03161515806112795790565b506005546001600160a01b031615159056fea26469706673582212205485fe0f5bf777ad9cd10d971118c8e98c4a41f70f877cf12054302c5220220864736f6c634300081e0033","sourceMap":"270:8356:41:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;270:8356:41;-1:-1:-1;;;270:8356:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;614:21;270:8356;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;270:8356:41;;;;;;;;;-1:-1:-1;;;;;270:8356:41;;;;;;;;;;-1:-1:-1;;;;;270:8356:41;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;270:8356:41;;;;;;;;;;;;;;;;-1:-1:-1;;;;;270:8356:41;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;270:8356:41;;;;;;;;;2784:14;;:::i;:::-;2783:15;2779:59;;270:8356;;;;;;;;;;;;;;;;;;;;;;;;5929:44;;270:8356;;;5929:44;;270:8356;5929:44;;;;;;;;;;;270:8356;;;;;;;;;;;;:::i;:::-;;;;;6058:306;;;270:8356;;;;;;6058:306;;270:8356;;;;;6058:306;;270:8356;;;;;;6058:306;;270:8356;;;;;6058:306;;270:8356;;;;;;;;;:::i;:::-;;6058:306;;270:8356;;;;6058:306;;270:8356;;;;;;;;;6382:17;270:8356;;;;;;;;;;;;;;;6382:39;;;270:8356;6382:39;;270:8356;;;;;;;;;;;-1:-1:-1;;;;;270:8356:41;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;270:8356:41;;;;;;:::i;:::-;;;-1:-1:-1;;;;;270:8356:41;;;;;6382:39;;;;;;;;;;;;;270:8356;;;;;6499:6;270:8356;;;;-1:-1:-1;;270:8356:41;;;;;;;;;;;;-1:-1:-1;;;;;270:8356:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;270:8356:41;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;270:8356:41;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;270:8356:41;;;;;;;;;;;;;-1:-1:-1;;;;;270:8356:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;270:8356:41;;;;;;;;;;;;-1:-1:-1;;;;;270:8356:41;;;;;;;;;;;6382:17;270:8356;;;;;;;;;;;6382:17;270:8356;;;;;;;;;;;;;6382:17;270:8356;;;;;;;;;;;;;6382:17;270:8356;;;;;;;;;;;;;6382:17;270:8356;;;;;;;;;;;;;6382:17;270:8356;;;;;;;;;;;;;6382:17;270:8356;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;6382:17;270:8356;;;;;;;;;;;;;6382:17;270:8356;;;;;;;;;;;;;6382:17;270:8356;;;;;;;;;;;;;6382:17;270:8356;;;;;;;;;;;;;6382:17;270:8356;;;;;;;;;;;;;6382:17;270:8356;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;270:8356:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;270:8356:41;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;270:8356:41;;;-1:-1:-1;;270:8356:41;;;;;;;;;;;;;;-1:-1:-1;;;;;270:8356:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;270:8356:41;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;270:8356:41;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;270:8356:41;;;;;;;;:::i;:::-;;;;;;;;;;;7374:17;270:8356;;;;7363:53;270:8356;7363:53;;;270:8356;;;;;;;;;;;;;;;;;;7363:53;;;270:8356;7363:53;;:::i;:::-;270:8356;7353:64;;270:8356;;;;;;;;;;;;7521:13;;:22;270:8356;;;;;;;;;;;7578:16;;270:8356;;7774:30;;270:8356;;7906:27;;;;:::i;:::-;270:8356;;;;;;;;;;8030:13;:22;270:8356;;;-1:-1:-1;;;;;270:8356:41;;8142:42;270:8356;;8142:42;;;;270:8356;8142:42;;;;;;;;;;8200:76;270:8356;;;;;;;;;;;;8260:15;270:8356;;;;8200:76;270:8356;;8142:42;270:8356;;;;;;;;;8142:42;-1:-1:-1;8142:42:41;;;270:8356;;;-1:-1:-1;;;270:8356:41;;;;;;;;;;;;;;;;;-1:-1:-1;;;270:8356:41;;;;;;;;;;-1:-1:-1;;;270:8356:41;;;;;;;;;;;;;;;;;-1:-1:-1;;;270:8356:41;;;;;;;;-1:-1:-1;;;270:8356:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;270:8356:41;;;;;-1:-1:-1;270:8356:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;270:8356:41;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;270:8356:41;;;;;;;;;-1:-1:-1;;;270:8356:41;;;;;;;;;-1:-1:-1;;;270:8356:41;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;270:8356:41;;;;;;;;;;;;-1:-1:-1;;;270:8356:41;;;;;;;6382:39;;;;270:8356;6382:39;270:8356;6382:39;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;270:8356;;;;;;;;;;;;-1:-1:-1;;;270:8356:41;;;;;;;;;;;;-1:-1:-1;;;270:8356:41;;;;;;;5929:44;;;;270:8356;5929:44;270:8356;5929:44;;;;;;;:::i;:::-;;;;;270:8356;;;;;;;;;2779:59;-1:-1:-1;;;2807:31:41;;270:8356;2807:31;;270:8356;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;270:8356:41;;;;;;-1:-1:-1;;270:8356:41;;;;;;2784:14;;:::i;:::-;2783:15;2779:59;;4169:9;:13;270:8356;;;4169:9;;270:8356;;4169:9;270:8356;;;-1:-1:-1;;;;;4571:26:41;270:8356;4571:11;270:8356;4571:26;:::i;:::-;:43;270:8356;;-1:-1:-1;270:8356:41;;;4740:25;270:8356;;;;;;-1:-1:-1;;;;;270:8356:41;4796:23;;;-1:-1:-1;;270:8356:41;;;4740:25;270:8356;;;;;;;-1:-1:-1;;;;;;270:8356:41;4938:10;270:8356;;;5270:27;;4792:296;5219:10;-1:-1:-1;270:8356:41;;;;;-1:-1:-1;270:8356:41;;-1:-1:-1;270:8356:41;;;;-1:-1:-1;270:8356:41;5206:54;4169:9;270:8356;;5206:54;:::i;:::-;270:8356;;4571:11;270:8356;5270:27;:::i;:::-;4571:11;270:8356;;;;;;4169:9;270:8356;;;;5366:15;270:8356;;;;5313:69;270:8356;5219:10;5313:69;;270:8356;4792:296;5000:10;4987:23;270:8356;;5270:27;4792:296;;;270:8356;;;-1:-1:-1;;;270:8356:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;270:8356:41;;;;;;;;;;;;;;;;;-1:-1:-1;;;270:8356:41;;;;;;;;;;-1:-1:-1;;;270:8356:41;;;;;;;;;;;;;;;;;-1:-1:-1;;;270:8356:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2779:59;2807:31;;;270:8356;2807:31;270:8356;;2807:31;270:8356;;;;;;;;;;-1:-1:-1;;270:8356:41;;;;;;:::i;:::-;;;-1:-1:-1;;;;;270:8356:41;;;;;;;;;;;-1:-1:-1;;;;;270:8356:41;2663:10;:28;2659:60;;-1:-1:-1;;;;;270:8356:41;3309:34;;:74;;;;270:8356;3305:100;;270:8356;-1:-1:-1;;;;;270:8356:41;;;;;;;;;-1:-1:-1;;;;;270:8356:41;;3492:72;270:8356;;;3492:72;270:8356;3580:40;270:8356;3580:40;;3635:44;270:8356;3635:44;;270:8356;3305:100;3392:13;;;270:8356;3392:13;270:8356;;3392:13;3309:74;3347:36;;;3309:74;;2659:60;2700:19;;;270:8356;2700:19;270:8356;;2700:19;270:8356;;;;;;-1:-1:-1;;270:8356:41;;;;;;;;-1:-1:-1;;;;;270:8356:41;;;;;;;;;;;;;;-1:-1:-1;;270:8356:41;;;;;1195:26;270:8356;;;;;;;;;;;;;-1:-1:-1;;270:8356:41;;;;;;;;1283:60;270:8356;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;270:8356:41;;;;-1:-1:-1;;;;;270:8356:41;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;270:8356:41;;;;;;-1:-1:-1;;;;;270:8356:41;2663:10;:28;;;2659:60;;2784:14;;:::i;:::-;2783:15;2779:59;;8492:21;8531:11;;;270:8356;;;8576:41;;;;;;;;;;270:8356;8576:41;270:8356;;;;;;;;;;;;-1:-1:-1;;;270:8356:41;;;;;;;;;;;;-1:-1:-1;;;270:8356:41;;;;;;;;;;;;;-1:-1:-1;;270:8356:41;;;;;;;;2048:47;270:8356;;;;;;;;;;;;;;;;;;;-1:-1:-1;;270:8356:41;;;;;482:1;270:8356;;;;;;;;-1:-1:-1;;;;;270:8356:41;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;270:8356:41;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;270:8356:41;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;270:8356:41;;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;270:8356:41;;;;;;;;;;;-1:-1:-1;;270:8356:41;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;270:8356:41;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;270:8356:41;;;;;;;;-1:-1:-1;;270:8356:41;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;-1:-1:-1;;;;;270:8356:41;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;3692:157::-;3768:15;270:8356;-1:-1:-1;;;;;270:8356:41;3760:38;;;:82;;3692:157;:::o;3760:82::-;-1:-1:-1;3810:17:41;270:8356;-1:-1:-1;;;;;270:8356:41;3802:40;;;3692:157::o","linkReferences":{}},"methodIdentifiers":{"DECIMALS()":"2e0f2625","MAX_MAGNITUDE()":"c58f219c","WEI_PER_BRIDGE_UNIT()":"e7ece690","bridgeOperator()":"590665c2","burnSoFarSet(uint256)":"3471f65e","codeChallengeToEthAddress(uint256)":"54506bb4","isConfigured()":"d3a057c8","lockTokens(uint256)":"6e27d889","lockedTokens(address,uint256)":"53719b6e","setAlignedContracts(address,address)":"5f82dea8","totalLocked()":"56891412","unlockTokens(uint256,bytes32,bytes32,bytes20,bytes32,bytes,uint256,bytes,address)":"ca430143","withdraw()":"3ccfd60b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AlignedContractsNotConfigured\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotBridgeOperator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"AccountValidationSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"StateSettlementSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"attestationHash\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"when\",\"type\":\"uint256\"}],\"name\":\"TokensLocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pubKeyTokenIdHash\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"when\",\"type\":\"uint256\"}],\"name\":\"TokensUnlocked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DECIMALS\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_MAGNITUDE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WEI_PER_BRIDGE_UNIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bridgeOperator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"burnSoFarSet\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"codeChallengeToEthAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isConfigured\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"attestationHash\",\"type\":\"uint256\"}],\"name\":\"lockTokens\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"lockedTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_stateSettlementAddr\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_accountValidationAddr\",\"type\":\"address\"}],\"name\":\"setAlignedContracts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalLocked\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"toUnlockAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"proofCommitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"provingSystemAuxDataCommitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes20\",\"name\":\"proofGeneratorAddr\",\"type\":\"bytes20\"},{\"internalType\":\"bytes32\",\"name\":\"batchMerkleRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"merkleProof\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"verificationDataBatchIndex\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"pubInput\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"batcherPaymentService\",\"type\":\"address\"}],\"name\":\"unlockTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"NoriTokenBridge\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"unlockTokens(uint256,bytes32,bytes32,bytes20,bytes32,bytes,uint256,bytes,address)\":{\"notice\":\"unlock the tokens by bridging from Mina\"}},\"notice\":\"Lock ETH for Mina accounts with bridge unit validation and depositor binding\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/NoriTokenBridge.sol\":\"NoriTokenBridge\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/\",\":aligned_layer/=lib/aligned_layer/\",\":ds-test/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/\",\":eigenlayer-core-contracts/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/core/\",\":eigenlayer-core/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/\",\":eigenlayer-middleware/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/\",\":eigenlayer-scripts/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/script/\",\":erc4626-tests/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/aligned_layer/claim_contracts/lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol\":{\"keccak256\":\"0x3f67ab9b510b02dc3c07014b49785f1e167401bdb39cc10f737bbf545632d938\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://48d1267e2df6c8ac9b8f419269ff3d23be9b62606ee6b6d2278c27ffebfd73aa\",\"dweb:/ipfs/QmaFyywKCm1eotKjF1evryW8BMQJzPDstZm1wMRW79phXG\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983\",\"dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0xab76a9f4eff865cbb689f627cf98263488765519d7a4ec5ffbcb0ca4972842f9\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ff57ce18e8350bf39f190645db0988bc0f1279f1872150a114a1b520c38a2914\",\"dweb:/ipfs/QmSsUXkNUqYuJgGRumHTSs9rAaboGjecotcM4xHrdBYWaZ\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91\",\"dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol\":{\"keccak256\":\"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc\",\"dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8\",\"dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol\":{\"keccak256\":\"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324\",\"dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d\",\"dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IRewardsCoordinator.sol\":{\"keccak256\":\"0xeab6f1140a90eb7f107d95bae1e8b2ecfbfe36282d62c9df69e6a564c2c59771\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://785cd2777cdcab3b827b5eef2a4dae02c56db07252fdcefd8dd1016be034dc71\",\"dweb:/ipfs/QmNyDFchTuMeiVoxNEfQw96JVq7DfkohGz1txKXe7HyNbq\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c\",\"dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol\":{\"keccak256\":\"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232\",\"dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0x68bf02a443fc8b2f612eba3d39bfefa5f61f78b549f111cdecec5f2c58236a52\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://76bc6875ce74128b861fdac5fd1c0c72f3cc9bacf67fa4a73721b95fb23959ef\",\"dweb:/ipfs/QmPix4WJmf9fXyMZxfgwXEHBcg7V4NAbRqs4HUf5YrSJcM\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol\":{\"keccak256\":\"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7\",\"dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol\":{\"keccak256\":\"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f\",\"dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol\":{\"keccak256\":\"0x9095fc29b96d102b10c02d44b3a6fbfa25593ef6ae4a810363ab885b9e6b0f71\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0945132d482d56278edddb1d32209903c4d3839c87ba4317aadd97dc23610d0f\",\"dweb:/ipfs/QmVuM2aLRHxitx4rPx3GTYTBCVNcjYn6sHBRr1biUjLBP5\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/permissions/Pausable.sol\":{\"keccak256\":\"0xce8ee0ab28f2bce9e94aa19fffe55bebef080327632ac98ff3ab14994b369bc0\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5c7e2be97a8840fa2a0434077a36136553a84efd9bff4b46712ce9fddb813a6a\",\"dweb:/ipfs/QmZKvgPxLAbGo1CqTA4AX6MCDPFLSSNt43ZKWRjvvzFp7S\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/BLSSignatureChecker.sol\":{\"keccak256\":\"0x3a5c205c596d3d73c7afa63ffbbfac8204f6d6a26c151ef26b47278981c3c0fe\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://4beb88bf5b7c7e614f0d87b157d7a4b67afbf1cc93f3127622bd66f696799241\",\"dweb:/ipfs/QmWJKb6qsd69bWgpAHX6deCkJqmJdo9oBLQAXJk97gWEE2\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/ServiceManagerBase.sol\":{\"keccak256\":\"0x7e32ef76daf32e5eb5a93cecf204223e64243f42afe70c7ca71ad3db3925b9c4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://19c10aa22f2e86e27e946b65c434e541caa6af06fcdde46c3b5e9b42890bd221\",\"dweb:/ipfs/QmPb5qDRdbJTniKSqsbjVhbtwdb72G9hWPYcHtVvj1zBxg\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/ServiceManagerBaseStorage.sol\":{\"keccak256\":\"0xa544114dbf6d973a815f997a2ac9237c531c40b08c91d3a65a23b152ed621e1e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://4cf69f9be7d3f3c4184b61b267280a829040973633ea9d95e2ec0dbf70f40a2e\",\"dweb:/ipfs/QmT2HeCJWBLX2p4KAWnyU318MMx9USb2brqCKq1vn2pXpR\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IBLSApkRegistry.sol\":{\"keccak256\":\"0xc07a5edfd95ab4f16f16a8dc8e76eadf4b0e90fe49db90540d01daaad86898c5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://52b53266450a53da641e82d8ae3be93c5e09f8342b4ea0cc96bb9038d8406354\",\"dweb:/ipfs/QmVuoiQyqPTLCGnyt8zDaxiyaj4ETdgTGKv4MDHWzqEDjp\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IBLSSignatureChecker.sol\":{\"keccak256\":\"0xee5823a6674e553c71f5e127f08245827eb116d1ad418b5a7f2a9d6985fd95e0\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://94aa26debddca6c0784585340cf891de4c2d7edaa3e5ec7229af9730312a5a51\",\"dweb:/ipfs/QmWbHGbM7eVYTAmrCVaDU8b4YTm9VAN82XgLDR78uHC7vj\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IIndexRegistry.sol\":{\"keccak256\":\"0x83b2d56aacf27e65c4959a832c5de573e013908c044f6e48ea8284ac5282ae2b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://877af382587e96bb39bcc6db8bb5e4b871db5025c52347d4bee9afeaa4a6cc8d\",\"dweb:/ipfs/QmdnhsQCChzq2o5NgbeT3JxSsEcMm1PC9QW6zenZNPjD9F\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IRegistry.sol\":{\"keccak256\":\"0x51426a17fb7e54bd3720e2890104e97a8559a13ff248b3d6b840916751c143d3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://01f91289e6100d528cb8b318cb14ff22a0bc52882c9d4db41585e030cc9ddc25\",\"dweb:/ipfs/Qmb22nqGrsrtNovHRwbMCvDHGENuxAgrWu3Db4p7Er2MHY\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IRegistryCoordinator.sol\":{\"keccak256\":\"0xdd8effb082c1d5957d5ff43d7c59497b32866a6d82bcc7d5efa49ea9bc9b3385\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cb33a2a1446585b13b7a509e880c60d658d2d2522ec48a9f02e30d2cff54002d\",\"dweb:/ipfs/QmVNG8ZPZkXzNEadPdTj1uBYLiZdCnYfsE5iGU6nJcJXiD\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IServiceManager.sol\":{\"keccak256\":\"0x7602cfb4397a114a0ed60e70e8e1d729fdcf406b585838181b3cb3ffa6ac9a9a\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b718fa016a13a2a5ce298bc5ea7495cc70cf9c358211c75595d5c9dde9a6cc0f\",\"dweb:/ipfs/QmQNrVmU7P7pRqGBJuTQDkjf3wMDY2kJm7zXdtQwsQTbzY\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IServiceManagerUI.sol\":{\"keccak256\":\"0x365761699b4a5b7360ee6c75f12606eefc4b0394754c8b8e1e1eefec0cba7ffb\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ac14ada180b66cbbc5f9de0d6b4bb87b5946d2a9569ae88f2f62aaca47e879a8\",\"dweb:/ipfs/QmcN9xKYF24naNWc6cYah9suz5gJSYE9nPj9eZFWnP35VX\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IStakeRegistry.sol\":{\"keccak256\":\"0x1b8b4d757c1b804bc4cf6fbbf8bf8f89ebdeb30a31014751fe7d01deb9d513d4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://984bf2777b898ed187d28997f9783f5c293a1a1848e3e9aa470ce9183d454c97\",\"dweb:/ipfs/Qme3aTpBrkLu8wYHFMZbCfhXHoZ1M6SpXkeC237T9BuU5B\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/libraries/BN254.sol\":{\"keccak256\":\"0xb428c8d0c3b325507a88a61a80115493eb88606ccc19ed64a31e11294ab853b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7b6fb935bfe0494e6ff970c8f30a86d5f4cf5c3e0967300c28cd383c043acae\",\"dweb:/ipfs/QmUHfFZaVjLPXhkBmcxrZhAHZaSFQDqXtrLGpjGBQBa5Ki\"]},\"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/libraries/BitmapUtils.sol\":{\"keccak256\":\"0x44315ac460be30a6b18fd4df4d1b8afb46653bf4dc06ca9f93c32353fd0605c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da14f2ead3a375b02afd09d4a02edddf7b63a88945746b96789b2473184fdb04\",\"dweb:/ipfs/QmRqcjxa2Vv2MrLdPeAwsktXdWTirapEDsRbJCyYRtKT6g\"]},\"lib/aligned_layer/contracts/src/core/AlignedLayerServiceManager.sol\":{\"keccak256\":\"0x318fdb1cf3332466f725c56f6de37daf4b2078013d3e4c7a5d20be96b8259a29\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0e1c509ab8add93c822adc90092ddd3140a0ecb9cc2104ce420a5cdb18138569\",\"dweb:/ipfs/QmRUrZ2tYofMww63P2NRo4fgx4DRBBNRHZbmWayMiAqeMi\"]},\"lib/aligned_layer/contracts/src/core/AlignedLayerServiceManagerStorage.sol\":{\"keccak256\":\"0x7359959b102fcb5f313d7a0a4a2497ff651c1836ec5259f4f86bd5d20da502ce\",\"urls\":[\"bzz-raw://e1990be0b54c7ab6734ff3096aac61c951d762e0dc6d52d3890a364fc1d92569\",\"dweb:/ipfs/QmevhuweQnjTVBmxTyWucznnQ68kU1U5uHvtYm5FvkBfRR\"]},\"lib/aligned_layer/contracts/src/core/IAlignedLayerServiceManager.sol\":{\"keccak256\":\"0xdcec4919e7fdf7855a7f831291a4e5b3345739c88d2c6026f9b953d42f773c48\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2c37687aac70fa1281b5ccceb6208b5044eeb3c055286c20793632efd7f36adc\",\"dweb:/ipfs/Qmb9CC8RumoALvjjUujbyCZWokzvg4feSEoQFZ3swdggLT\"]},\"src/MinaAccountValidationExample.sol\":{\"keccak256\":\"0xa9ee818322d8de643216c4d9d255277a6eaee06819e047e69c0f7d4bea5b366a\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://a2229c41efb4d28eb61d80f8b36c3b97e9d6ae3c3dc7edc834ccceb6da33ac9e\",\"dweb:/ipfs/QmTXT7CySKmsJhWEhdEYFvTUB61HReFhsY2b2k1jPWtVmN\"]},\"src/MinaStateSettlementExample.sol\":{\"keccak256\":\"0x6111e43655e2d21bd363fa13067a280834ea17d6ee03c0d6ea16d2fa7800696e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8ac76890e276df1edfd38d74791e4abb01e6e95f0c6162bc929dd2b7b1dff3e9\",\"dweb:/ipfs/QmVNyDMVEguPCKuQVYRH61BdvbT9DBMrFpKWMapmYmZqe8\"]},\"src/NoriTokenBridge.sol\":{\"keccak256\":\"0xc6463da22243524cb4eb52fb2e6df5b87d83d6630b738af1a432a78b11ac5b0f\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0ad38b6940be73ae83bd0f094acff13255db94b50d6938ee4a48e07a34d29674\",\"dweb:/ipfs/QmNNDUZMoMZmiYgV9mXPhpDHDRWvv65C1a5RLLodSZrjoR\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"inputs":[],"type":"error","name":"AlignedContractsNotConfigured"},{"inputs":[],"type":"error","name":"NotBridgeOperator"},{"inputs":[],"type":"error","name":"ZeroAddress"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address","indexed":true}],"type":"event","name":"AccountValidationSet","anonymous":false},{"inputs":[{"internalType":"address","name":"newAddress","type":"address","indexed":true}],"type":"event","name":"StateSettlementSet","anonymous":false},{"inputs":[{"internalType":"address","name":"user","type":"address","indexed":true},{"internalType":"uint256","name":"attestationHash","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"when","type":"uint256","indexed":false}],"type":"event","name":"TokensLocked","anonymous":false},{"inputs":[{"internalType":"uint256","name":"pubKeyTokenIdHash","type":"uint256","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"address","name":"receiver","type":"address","indexed":false},{"internalType":"uint256","name":"when","type":"uint256","indexed":false}],"type":"event","name":"TokensUnlocked","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DECIMALS","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_MAGNITUDE","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"WEI_PER_BRIDGE_UNIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"bridgeOperator","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"burnSoFarSet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"codeChallengeToEthAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isConfigured","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"attestationHash","type":"uint256"}],"stateMutability":"payable","type":"function","name":"lockTokens"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"lockedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_stateSettlementAddr","type":"address"},{"internalType":"address","name":"_accountValidationAddr","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setAlignedContracts"},{"inputs":[],"stateMutability":"view","type":"function","name":"totalLocked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"toUnlockAmount","type":"uint256"},{"internalType":"bytes32","name":"proofCommitment","type":"bytes32"},{"internalType":"bytes32","name":"provingSystemAuxDataCommitment","type":"bytes32"},{"internalType":"bytes20","name":"proofGeneratorAddr","type":"bytes20"},{"internalType":"bytes32","name":"batchMerkleRoot","type":"bytes32"},{"internalType":"bytes","name":"merkleProof","type":"bytes"},{"internalType":"uint256","name":"verificationDataBatchIndex","type":"uint256"},{"internalType":"bytes","name":"pubInput","type":"bytes"},{"internalType":"address","name":"batcherPaymentService","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"unlockTokens"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"withdraw"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{"unlockTokens(uint256,bytes32,bytes32,bytes20,bytes32,bytes,uint256,bytes,address)":{"notice":"unlock the tokens by bridging from Mina"}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/","@openzeppelin/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/","aligned_layer/=lib/aligned_layer/","ds-test/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/ds-test/src/","eigenlayer-contracts/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/","eigenlayer-core-contracts/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/core/","eigenlayer-core/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/","eigenlayer-middleware/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/","eigenlayer-scripts/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/script/","erc4626-tests/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/aligned_layer/claim_contracts/lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/NoriTokenBridge.sol":"NoriTokenBridge"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol":{"keccak256":"0x3f67ab9b510b02dc3c07014b49785f1e167401bdb39cc10f737bbf545632d938","urls":["bzz-raw://48d1267e2df6c8ac9b8f419269ff3d23be9b62606ee6b6d2278c27ffebfd73aa","dweb:/ipfs/QmaFyywKCm1eotKjF1evryW8BMQJzPDstZm1wMRW79phXG"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00","urls":["bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983","dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol":{"keccak256":"0xab76a9f4eff865cbb689f627cf98263488765519d7a4ec5ffbcb0ca4972842f9","urls":["bzz-raw://ff57ce18e8350bf39f190645db0988bc0f1279f1872150a114a1b520c38a2914","dweb:/ipfs/QmSsUXkNUqYuJgGRumHTSs9rAaboGjecotcM4xHrdBYWaZ"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol":{"keccak256":"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c","urls":["bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91","dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz"],"license":"CC0-1.0"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol":{"keccak256":"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba","urls":["bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc","dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol":{"keccak256":"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c","urls":["bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8","dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol":{"keccak256":"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f","urls":["bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324","dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":{"keccak256":"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49","urls":["bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d","dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IRewardsCoordinator.sol":{"keccak256":"0xeab6f1140a90eb7f107d95bae1e8b2ecfbfe36282d62c9df69e6a564c2c59771","urls":["bzz-raw://785cd2777cdcab3b827b5eef2a4dae02c56db07252fdcefd8dd1016be034dc71","dweb:/ipfs/QmNyDFchTuMeiVoxNEfQw96JVq7DfkohGz1txKXe7HyNbq"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"keccak256":"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092","urls":["bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c","dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol":{"keccak256":"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79","urls":["bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232","dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol":{"keccak256":"0x68bf02a443fc8b2f612eba3d39bfefa5f61f78b549f111cdecec5f2c58236a52","urls":["bzz-raw://76bc6875ce74128b861fdac5fd1c0c72f3cc9bacf67fa4a73721b95fb23959ef","dweb:/ipfs/QmPix4WJmf9fXyMZxfgwXEHBcg7V4NAbRqs4HUf5YrSJcM"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol":{"keccak256":"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377","urls":["bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7","dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol":{"keccak256":"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d","urls":["bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f","dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":{"keccak256":"0x9095fc29b96d102b10c02d44b3a6fbfa25593ef6ae4a810363ab885b9e6b0f71","urls":["bzz-raw://0945132d482d56278edddb1d32209903c4d3839c87ba4317aadd97dc23610d0f","dweb:/ipfs/QmVuM2aLRHxitx4rPx3GTYTBCVNcjYn6sHBRr1biUjLBP5"],"license":"MIT"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/permissions/Pausable.sol":{"keccak256":"0xce8ee0ab28f2bce9e94aa19fffe55bebef080327632ac98ff3ab14994b369bc0","urls":["bzz-raw://5c7e2be97a8840fa2a0434077a36136553a84efd9bff4b46712ce9fddb813a6a","dweb:/ipfs/QmZKvgPxLAbGo1CqTA4AX6MCDPFLSSNt43ZKWRjvvzFp7S"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888","urls":["bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a","dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb"],"license":"MIT"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e","urls":["bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497","dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8"],"license":"MIT"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3","urls":["bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4","dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt"],"license":"MIT"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/BLSSignatureChecker.sol":{"keccak256":"0x3a5c205c596d3d73c7afa63ffbbfac8204f6d6a26c151ef26b47278981c3c0fe","urls":["bzz-raw://4beb88bf5b7c7e614f0d87b157d7a4b67afbf1cc93f3127622bd66f696799241","dweb:/ipfs/QmWJKb6qsd69bWgpAHX6deCkJqmJdo9oBLQAXJk97gWEE2"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/ServiceManagerBase.sol":{"keccak256":"0x7e32ef76daf32e5eb5a93cecf204223e64243f42afe70c7ca71ad3db3925b9c4","urls":["bzz-raw://19c10aa22f2e86e27e946b65c434e541caa6af06fcdde46c3b5e9b42890bd221","dweb:/ipfs/QmPb5qDRdbJTniKSqsbjVhbtwdb72G9hWPYcHtVvj1zBxg"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/ServiceManagerBaseStorage.sol":{"keccak256":"0xa544114dbf6d973a815f997a2ac9237c531c40b08c91d3a65a23b152ed621e1e","urls":["bzz-raw://4cf69f9be7d3f3c4184b61b267280a829040973633ea9d95e2ec0dbf70f40a2e","dweb:/ipfs/QmT2HeCJWBLX2p4KAWnyU318MMx9USb2brqCKq1vn2pXpR"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IBLSApkRegistry.sol":{"keccak256":"0xc07a5edfd95ab4f16f16a8dc8e76eadf4b0e90fe49db90540d01daaad86898c5","urls":["bzz-raw://52b53266450a53da641e82d8ae3be93c5e09f8342b4ea0cc96bb9038d8406354","dweb:/ipfs/QmVuoiQyqPTLCGnyt8zDaxiyaj4ETdgTGKv4MDHWzqEDjp"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IBLSSignatureChecker.sol":{"keccak256":"0xee5823a6674e553c71f5e127f08245827eb116d1ad418b5a7f2a9d6985fd95e0","urls":["bzz-raw://94aa26debddca6c0784585340cf891de4c2d7edaa3e5ec7229af9730312a5a51","dweb:/ipfs/QmWbHGbM7eVYTAmrCVaDU8b4YTm9VAN82XgLDR78uHC7vj"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IIndexRegistry.sol":{"keccak256":"0x83b2d56aacf27e65c4959a832c5de573e013908c044f6e48ea8284ac5282ae2b","urls":["bzz-raw://877af382587e96bb39bcc6db8bb5e4b871db5025c52347d4bee9afeaa4a6cc8d","dweb:/ipfs/QmdnhsQCChzq2o5NgbeT3JxSsEcMm1PC9QW6zenZNPjD9F"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IRegistry.sol":{"keccak256":"0x51426a17fb7e54bd3720e2890104e97a8559a13ff248b3d6b840916751c143d3","urls":["bzz-raw://01f91289e6100d528cb8b318cb14ff22a0bc52882c9d4db41585e030cc9ddc25","dweb:/ipfs/Qmb22nqGrsrtNovHRwbMCvDHGENuxAgrWu3Db4p7Er2MHY"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IRegistryCoordinator.sol":{"keccak256":"0xdd8effb082c1d5957d5ff43d7c59497b32866a6d82bcc7d5efa49ea9bc9b3385","urls":["bzz-raw://cb33a2a1446585b13b7a509e880c60d658d2d2522ec48a9f02e30d2cff54002d","dweb:/ipfs/QmVNG8ZPZkXzNEadPdTj1uBYLiZdCnYfsE5iGU6nJcJXiD"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IServiceManager.sol":{"keccak256":"0x7602cfb4397a114a0ed60e70e8e1d729fdcf406b585838181b3cb3ffa6ac9a9a","urls":["bzz-raw://b718fa016a13a2a5ce298bc5ea7495cc70cf9c358211c75595d5c9dde9a6cc0f","dweb:/ipfs/QmQNrVmU7P7pRqGBJuTQDkjf3wMDY2kJm7zXdtQwsQTbzY"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IServiceManagerUI.sol":{"keccak256":"0x365761699b4a5b7360ee6c75f12606eefc4b0394754c8b8e1e1eefec0cba7ffb","urls":["bzz-raw://ac14ada180b66cbbc5f9de0d6b4bb87b5946d2a9569ae88f2f62aaca47e879a8","dweb:/ipfs/QmcN9xKYF24naNWc6cYah9suz5gJSYE9nPj9eZFWnP35VX"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IStakeRegistry.sol":{"keccak256":"0x1b8b4d757c1b804bc4cf6fbbf8bf8f89ebdeb30a31014751fe7d01deb9d513d4","urls":["bzz-raw://984bf2777b898ed187d28997f9783f5c293a1a1848e3e9aa470ce9183d454c97","dweb:/ipfs/Qme3aTpBrkLu8wYHFMZbCfhXHoZ1M6SpXkeC237T9BuU5B"],"license":"BUSL-1.1"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/libraries/BN254.sol":{"keccak256":"0xb428c8d0c3b325507a88a61a80115493eb88606ccc19ed64a31e11294ab853b3","urls":["bzz-raw://d7b6fb935bfe0494e6ff970c8f30a86d5f4cf5c3e0967300c28cd383c043acae","dweb:/ipfs/QmUHfFZaVjLPXhkBmcxrZhAHZaSFQDqXtrLGpjGBQBa5Ki"],"license":"MIT"},"lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/libraries/BitmapUtils.sol":{"keccak256":"0x44315ac460be30a6b18fd4df4d1b8afb46653bf4dc06ca9f93c32353fd0605c5","urls":["bzz-raw://da14f2ead3a375b02afd09d4a02edddf7b63a88945746b96789b2473184fdb04","dweb:/ipfs/QmRqcjxa2Vv2MrLdPeAwsktXdWTirapEDsRbJCyYRtKT6g"],"license":"MIT"},"lib/aligned_layer/contracts/src/core/AlignedLayerServiceManager.sol":{"keccak256":"0x318fdb1cf3332466f725c56f6de37daf4b2078013d3e4c7a5d20be96b8259a29","urls":["bzz-raw://0e1c509ab8add93c822adc90092ddd3140a0ecb9cc2104ce420a5cdb18138569","dweb:/ipfs/QmRUrZ2tYofMww63P2NRo4fgx4DRBBNRHZbmWayMiAqeMi"],"license":"UNLICENSED"},"lib/aligned_layer/contracts/src/core/AlignedLayerServiceManagerStorage.sol":{"keccak256":"0x7359959b102fcb5f313d7a0a4a2497ff651c1836ec5259f4f86bd5d20da502ce","urls":["bzz-raw://e1990be0b54c7ab6734ff3096aac61c951d762e0dc6d52d3890a364fc1d92569","dweb:/ipfs/QmevhuweQnjTVBmxTyWucznnQ68kU1U5uHvtYm5FvkBfRR"],"license":null},"lib/aligned_layer/contracts/src/core/IAlignedLayerServiceManager.sol":{"keccak256":"0xdcec4919e7fdf7855a7f831291a4e5b3345739c88d2c6026f9b953d42f773c48","urls":["bzz-raw://2c37687aac70fa1281b5ccceb6208b5044eeb3c055286c20793632efd7f36adc","dweb:/ipfs/Qmb9CC8RumoALvjjUujbyCZWokzvg4feSEoQFZ3swdggLT"],"license":"UNLICENSED"},"src/MinaAccountValidationExample.sol":{"keccak256":"0xa9ee818322d8de643216c4d9d255277a6eaee06819e047e69c0f7d4bea5b366a","urls":["bzz-raw://a2229c41efb4d28eb61d80f8b36c3b97e9d6ae3c3dc7edc834ccceb6da33ac9e","dweb:/ipfs/QmTXT7CySKmsJhWEhdEYFvTUB61HReFhsY2b2k1jPWtVmN"],"license":"UNLICENSED"},"src/MinaStateSettlementExample.sol":{"keccak256":"0x6111e43655e2d21bd363fa13067a280834ea17d6ee03c0d6ea16d2fa7800696e","urls":["bzz-raw://8ac76890e276df1edfd38d74791e4abb01e6e95f0c6162bc929dd2b7b1dff3e9","dweb:/ipfs/QmVNyDMVEguPCKuQVYRH61BdvbT9DBMrFpKWMapmYmZqe8"],"license":"UNLICENSED"},"src/NoriTokenBridge.sol":{"keccak256":"0xc6463da22243524cb4eb52fb2e6df5b87d83d6630b738af1a432a78b11ac5b0f","urls":["bzz-raw://0ad38b6940be73ae83bd0f094acff13255db94b50d6938ee4a48e07a34d29674","dweb:/ipfs/QmNNDUZMoMZmiYgV9mXPhpDHDRWvv65C1a5RLLodSZrjoR"],"license":"UNLICENSED"}},"version":1},"id":41} \ No newline at end of file diff --git a/core/accoun_query_response.json b/core/accoun_query_response.json new file mode 100644 index 000000000..9fbefa9ac --- /dev/null +++ b/core/accoun_query_response.json @@ -0,0 +1 @@ +{"data":{"encodedSnarkedLedgerAccountMembership":[{"account":"6wulLNZFkqgxwzjwqki1vzv3gE+D10I47W4sBMY2qCgBa7GCH0UJvob6nEXsGlNVPMPe4RSm8np31Hg7Zih8Ew8AAAG/vm4XQOdmx/a+8kJ0NOoaI/UWtO3ciW1lxdVKb3VeAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAIAAwIEAwMCAwMDAwElMxaPlMWlu+e8MbrlKjVcCXMXIxRXfwjta4xFI4YJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAOc8fvM+57fjtajeg23/xvfEdTy5UqSflc1FEM+Jj8ofsjUM3VvaCKUfpjjLI/CXqanbe9m30wWX5AwlAFO9wBqFL3GQFx/FFMAAwEdeF/woOQrf0BqVWhwoit9YxXQxJKGKePRsLE8JzXQrRzJrhWjLx+53j6GS0M67CNoCy2kQlJspEcwiSLvvEeYlaUVRh2SA+DfQxThNrd6/+H6Zwxaah/KEtJCpRtpXqEz3mfdjRZyfYtE3Ek/xNHAed0hzKWV6o+wYyHc/4D431zfY3iSXb2et4wkl1xSsJcr3QYs8AU4H2YciMqT372jd5lzdwZD6Omleg3fPA73UN5P8Zi9eoJlMC50vEjC4lTXVQFOEbkIooAFr26VDVtgZeP0TJ3LS8/F+iMN4WucoyL0YpKOJIzOY4tsjDsO36D2CCOwc4qbjTf3N07ICBhW+VTGuzFagdHgvT3bkLFy7xpbJCzYZOZWXvcVqxr11ho2siRbRVmw8anWXz6MB0S9uw9etP6oVcG0do3jk8xYLIHHRMpqjMRMKa/SQDkoZPN6xhAIQI9DwXYMz6hfPzGXL7P39im39nH028XvC617/WzpD9C4AnNuTMbBh5ZdDBl3LHZyP/keerjmdgEpRnmAuI1QnFDqZABnHrEK5IuAHSI3kAo4iBSd75R3Jqvc/W8/4SOEJCq5qXEEeYMUFjeOPZqvp0/Y4h+fumuKUKFVORWiirwsDONy5RU2X93FaC36U0oimIF6AQUcDhevRcjSitBmMIgEQFdYwJATmR8rjvptCCst4ol9Djk9l+AHrzwMbBpgDFZtzEFXzbb9oCwDnmKMVjVd/tL4OLK1jhr+7Rt6WUowNRCpM6r1XCZsO/zrzNexxTAqk1VHfDLYSf+r0z8cklzgFnK65C+VBJHn2bSAviEod/kNyL9hW8zoAIeaD7lLEKvWlQ0pvLLaWwhrkxrjRmaxOlPj+VBzOYYQ1BJBcD1sWJtPRD5WPzzmn2F4s4IJfIC6MLgOEB1iZPUxDu/gjFyTkc2zyjNfHjpIMn/MdvbFZz9mskAApsCz6XfuW9jtlOGKEQJG/Hlg9yMJzcb8LeSou/HJm5oIRaF3Aks13DmIeb5N+5e4kWgKa5VEpTcpRvOVXaWlFYQ5BX9I92E77KStIMc1oezgm9V3ifW/UN2ay0/2iGMJAFVVBUSTGR2ZeNfqXbhCupACnR5sYRuleq/bVuGWvp1gGxy6UTZVT1K4YnaDrK64p/j6V8nZXlOQjEW+WDDlzFNc1DTXQli6Dfz75kNX4yJtc/OD5w4MTnB9neOifnBU2QCIbrjYPNfM2PrvHzTMFYt23dQqcVmz12lrV9ilOOUmDxP52ckmIp/Yi+a8XzHKLUcDAAXKEMvZ2f/D+kMTYqX1B2lmlBgMQFCAIKR6CxmzND7aaPFT2ktfPPkZKirPyMAFblCjdpsECG9gopoCzo2hGB4APpJp0UNtCZdp+0T5jUxU62OdpkNQF3BqFaIkyWR9mnFbVq5sRz8ZJfxbMJnyH0d5qRxFzuRw3QJHySZ8RHd6JnYkxu3lxCX9p82PAYYCZ5fNNpHfgCAWOLD9GVkmSFib2PJ/XwzzI/3hAYEzF3pjrCs286YkfMSenxqK0mwOVmSWbwspuO6aVJstxsGiSkgOEUEEp/A/aqxBft4csJn/ebO2gUqgiJheCsdYbybZLMgn+WOfpGDsDEiw+PNnITDV5cA4LsDUUJP/vnvKAyyeT6suWkNMFguaEm1B23rUxAUOLkG4KZD89j0L/vj+TgA+XmG2I1wJm3L/UkSUXCO4JAWO8CIw9QzKqnv8AsVqmxNmqFKzWDqN3y6G4mhM0SosO8pRRuzSQy8bLwE4bRhc3GY1xxpsbAHPGaKO/osX9eKd5yXhoPwUKHqilj3xMmc4d3ddJgvUNsuqaZzoJcQz6DmIMadev8KQjYnLfs6QXxfTePPgAfRiPT4nrfIfghL4+s2kpkRcqHs+9c1osYYqwVwoSLrf/Eo8ofQbhHO8UpuSn4haq0hiMyLAgkzDOZ9LU0steqqkWIPfrh4Vxcg1HausMpyhNSnUmRVlV9d8rBpFQ9ZIYVghgy3A+HbDxl+5sCZdkWnLOy05GEXKD2u1UADLSVwOFDBZWWEUWRHapt2jLQQUsGt8qpQiR3U3q8NBBgvVEZpMC//Jut6CsmwWj5U/dlq2VHoucphanWbu8+Qabcjo+6z+a+nWTXRAaTyeEW5HfUOOwbeXNniBdKzWhK/SpvEPZLqDn5jpw9shMQZfe5COy6dedD08d3bYyT5+psNqROIImHpoWqo81KGIBeQZK4LWhckdffOqdufvl1Y7RRWEE0BuNiRKdB7KRrXCdlvXaxH4+VEy9ZBVx33e3kv8WITQ5GgD5ZWnS2sF5yB49C1gkrIboKS4/6VL3hh/4V7k1VLxyN/lladLawXnIHj0LWCSshugpLj/pUveGH/hXuTVUvHI3+WVp0trBecgePQtYJKyG6CkuP+lS94Yf+Fe5NVS8cjf5ZWnS2sF5yB49C1gkrIboKS4/6VL3hh/4V7k1VLxyN/lladLawXnIHj0LWCSshugpLj/pUveGH/hXuTVUvHI3AAAAAAA=","merklePath":[{"left":null,"right":"11089324651757940578525832653935033939773913487478954338904604547458642538292"},{"left":null,"right":"9796576873914801788094253504803187131377693931518040229273582357829532090336"},{"left":"9298724352479170610242011361362157327807603730056636025167563612492765630806","right":null},{"left":null,"right":"15990716051002614847701873470586451393928279991327749718249925230909794157266"},{"left":null,"right":"2506551608496278711979396522291714936456116354773603853943502899822639024853"},{"left":null,"right":"26099901951464862892628160180129299465840109244670907276237199473838117841509"},{"left":null,"right":"23026619667924308569885056898495721478997723485122015985198411481963590885259"},{"left":"3676104346859676884305338677776873450552861635197536667493530725663777174730","right":null},{"left":null,"right":"27743090663749777022928044608757112922227926076579560663993140297465927426076"},{"left":null,"right":"6761641510797724524279332390095493160148953608632700244233951126782134576094"},{"left":"20431059167106520021910736424383128785984360504304428885460661708590276124950","right":null},{"left":"10297524488630367552093608413474608735915477327721251109778411714211204757470","right":null},{"left":null,"right":"22403394016819977578072286846628296387811879051336296960548621162149146705737"},{"left":"10772837653959418633137031193105415079228935669218218525739441178449860550037","right":null},{"left":"696092792553552689655004235885208270952911318900402910117767792225021223362","right":null},{"left":"20499284764105850422619742708102293468642385252120895329218092651295105457537","right":null},{"left":null,"right":"19361861772819841257306017834104280823188216619937188007427948995917258301069"},{"left":"6781788106327601599702202199756117532472472684470091628838303569264537775700","right":null},{"left":"16918038186554675056000578097630897159236284751433663183439602696852905624415","right":null},{"left":"28627628212319805343454811139849901640500073315285842033614442274505756385536","right":null},{"left":"28758859610334920473530372700694516882691452974475767468086895285359096307274","right":null},{"left":"16430190523938219721147185711044261861887815192145019235086508794037748662978","right":null},{"left":"23300248870286894992003584685086043578048220924304538552357941351343423298077","right":null},{"left":"18721105361232651344875520416758751524020336778169872574984370086949138642085","right":null},{"left":"10611828583016686420873473112404506690775956092186634604097134580560948638514","right":null},{"left":"11448813184116204118725235537673043143764404790624366392625860187638781235615","right":null},{"left":"6507258883578376028376981545955062827139698232277887871775971553968101691249","right":null},{"left":"17493244980280937955941580434326677459751473714746227943153210535373918340114","right":null},{"left":"18464507392887829891264190376236139806757048001410567864732128380527868369455","right":null},{"left":"374677701015397178366310913911051069892586440922808798004746377118603064136","right":null},{"left":"7414597540944309778303590613882007538175921122373418819351437768289067050688","right":null},{"left":"4911425897386868865951704774190352922917918118795543476097437449334578129718","right":null},{"left":"2537948008614359414287158135558328051431310188498471600040371216889620767874","right":null},{"left":"11945594868601920248817415866479228952991063900530321216805456660202303767865","right":null},{"left":"7727454798157491451398259626232336317494512806516291520841511378379541110711","right":null}]}],"block":{"protocolState":{"blockchainState":{"snarkedLedgerHash":"jwS9CGedh2zn2XA8hDJFY5nXGDEg1Z7TsfL6yM4GABgfegycNrh"}}}}} \ No newline at end of file diff --git a/core/graphql/account_query.graphql b/core/graphql/account_query.graphql index 409a49f54..35d680e25 100644 --- a/core/graphql/account_query.graphql +++ b/core/graphql/account_query.graphql @@ -1,16 +1,16 @@ -query AccountQuery($stateHash: String!, $publicKey: String!) { - encodedSnarkedLedgerAccountMembership(accountInfos: {publicKey: $publicKey}, stateHash: $stateHash) { - account - merklePath { - left - right - } - } - block(stateHash: $stateHash) { - protocolState { - blockchainState { - snarkedLedgerHash - } - } +query AccountQuery($stateHash: String!, $accountInfos: [AccountInput!]!) { + encodedSnarkedLedgerAccountMembership(stateHash: $stateHash, accountInfos: $accountInfos) { + account + merklePath { + left + right } -} + } + block(stateHash: $stateHash) { + protocolState { + blockchainState { + snarkedLedgerHash + } + } + } +} \ No newline at end of file diff --git a/core/graphql/account_query_backup.graphql b/core/graphql/account_query_backup.graphql new file mode 100644 index 000000000..7266da115 --- /dev/null +++ b/core/graphql/account_query_backup.graphql @@ -0,0 +1,16 @@ +query AccountQuery($stateHash: String!, $publicKey: String!, $token: String!) { + encodedSnarkedLedgerAccountMembership(accountInfos: {publicKey: $publicKey, token: $token}, stateHash: $stateHash) { + account + merklePath { + left + right + } + } + block(stateHash: $stateHash) { + protocolState { + blockchainState { + snarkedLedgerHash + } + } + } +} diff --git a/core/src/aligned.rs b/core/src/aligned.rs index 59accafc7..151415b84 100644 --- a/core/src/aligned.rs +++ b/core/src/aligned.rs @@ -1,23 +1,104 @@ -use std::{process, str::FromStr}; +use std::str::FromStr; +use std::time::{Duration, Instant}; +use std::{process, string}; use aligned_sdk::{ common::types::{ AlignedVerificationData, FeeEstimationType, Network, ProvingSystemId, VerificationData, + Wallet, }, verification_layer::estimate_fee, }; -use ethers::{ - core::k256::ecdsa::SigningKey, - signers::{Signer, Wallet}, - types::Address, -}; +use alloy::primitives::Address; +use ethers::signers::Signer; +use ethers::types::U256; use futures::TryFutureExt; -use log::{error, info}; +use log::{error, info, warn}; + +use crate::utils::constants::{HOODI_CHAIN_ID, SEPOLIA_CHAIN_ID}; +use crate::{ + proof::MinaProof, + utils::{constants::ANVIL_CHAIN_ID, wallet::WalletData}, +}; + +/// Submission mode for Aligned verification layer. +#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)] +pub enum SubmissionMode { + /// Use `submit_and_wait_verification` (default, blocking wait via websocket). + #[default] + SubmitAndWait, + /// Use `submit` followed by polling `is_proof_verified`. + SubmitWithPolling, +} + +impl std::str::FromStr for SubmissionMode { + type Err = String; + + fn from_str(s: &str) -> Result { + match s.to_lowercase().as_str() { + "submit_and_wait" | "default" | "" => Ok(SubmissionMode::SubmitAndWait), + "submit_with_polling" | "polling" => Ok(SubmissionMode::SubmitWithPolling), + _ => Err(format!( + "Unknown submission mode: '{}'. Valid values: 'submit_and_wait', 'submit_with_polling'", + s + )), + } + } +} + +/// Configuration for the polling-based submission mode. +#[derive(Debug, Clone)] +pub struct PollingConfig { + /// Interval between polling attempts. + pub poll_interval: Duration, + /// Maximum time to wait for verification before timing out. + pub timeout: Duration, +} + +impl Default for PollingConfig { + fn default() -> Self { + Self { + poll_interval: Duration::from_secs(10), + timeout: Duration::from_secs(600), // 10 minutes default + } + } +} + +impl PollingConfig { + /// Creates a new PollingConfig from environment variables. + /// Uses defaults if env vars are not set. + pub fn from_env() -> Self { + let poll_interval = std::env::var("ALIGNED_POLL_INTERVAL_SECS") + .ok() + .and_then(|s| s.parse::().ok()) + .map(Duration::from_secs) + .unwrap_or(Duration::from_secs(10)); -use crate::proof::MinaProof; + let timeout = std::env::var("ALIGNED_POLL_TIMEOUT_SECS") + .ok() + .and_then(|s| s.parse::().ok()) + .map(Duration::from_secs) + .unwrap_or(Duration::from_secs(600)); + + Self { + poll_interval, + timeout, + } + } +} + +/// Returns the submission mode from the environment variable `ALIGNED_SUBMISSION_MODE`. +/// Defaults to `SubmitAndWait` if not set or invalid. +pub fn get_submission_mode_from_env() -> SubmissionMode { + std::env::var("ALIGNED_SUBMISSION_MODE") + .ok() + .and_then(|s| s.parse().ok()) + .unwrap_or_default() +} /// Submits a Mina Proof to Aligned's batcher and waits until the batch is verified. +/// Uses the submission mode from environment variable `ALIGNED_SUBMISSION_MODE`. #[allow(clippy::too_many_arguments)] pub async fn submit( proof: MinaProof, @@ -25,8 +106,35 @@ pub async fn submit( proof_generator_addr: &str, _batcher_addr: &str, eth_rpc_url: &str, - wallet: Wallet, + wallet: WalletData, + save_proof: bool, +) -> Result { + let submission_mode = get_submission_mode_from_env(); + submit_with_mode( + proof, + network, + proof_generator_addr, + _batcher_addr, + eth_rpc_url, + wallet, + save_proof, + submission_mode, + ) + .await +} + +/// Submits a Mina Proof to Aligned's batcher and waits until the batch is verified. +/// Allows explicit specification of the submission mode. +#[allow(clippy::too_many_arguments)] +pub async fn submit_with_mode( + proof: MinaProof, + network: &Network, + proof_generator_addr: &str, + _batcher_addr: &str, + eth_rpc_url: &str, + wallet: WalletData, save_proof: bool, + submission_mode: SubmissionMode, ) -> Result { let (proof, pub_input, proving_system, proof_name, file_name) = match proof { MinaProof::State((proof, pub_input)) => { @@ -71,6 +179,27 @@ pub async fn submit( let proof_generator_addr = Address::from_str(proof_generator_addr).map_err(|err| err.to_string())?; + let chain_id = match network { + Network::Devnet => ANVIL_CHAIN_ID, + Network::Sepolia => SEPOLIA_CHAIN_ID, + Network::Hoodi => HOODI_CHAIN_ID, + _ => ANVIL_CHAIN_ID, + }; + + let wallet = Wallet::from_bytes(&wallet.private_key_bytes) + .map_err(|err| format!("Failed to create wallet from bytes: {err}"))? + .with_chain_id(chain_id); + + // Aligned SDK expects ethers types for VerificationData. + // Since we don't have ethers imported as a dependency, we rely on aligned-sdk types. + // However, aligned-sdk uses ethers types internally. + // The proof_generator_addr in VerificationData is ethers::types::Address. + // We need to convert alloy::Address to ethers::Address. + // We can do this by converting to bytes and then to ethers address. + + let proof_generator_addr_bytes: [u8; 20] = proof_generator_addr.into_array(); + let proof_generator_addr_ethers = ethers::types::H160::from(proof_generator_addr_bytes); + let verification_data = VerificationData { proving_system, proof, @@ -78,12 +207,44 @@ pub async fn submit( // Use this instead of `None` to force Aligned to include the commitment to the proving system ID (valid for Aligned 0.7.0) verification_key: Some(vec![]), vm_program_code: None, - proof_generator_addr, + proof_generator_addr: proof_generator_addr_ethers, + }; + + let cbor_size = cbor_size_upper_bound(&verification_data); + info!("verification_data's cbor size: {cbor_size}"); + + let batcher_fee_estimation_type = + std::env::var("BATCHER_FEE_ESTM_TYPE").unwrap_or("0".to_string()); + + let max_batcher_fee_env = std::env::var("BATCHER_MAX_FEE") + .unwrap_or_else(|_| "0".to_string()) + .parse::() + .unwrap(); + let max_fee = match batcher_fee_estimation_type.as_str() { + "0" => { + let fee = estimate_fee(eth_rpc_url, FeeEstimationType::Default) + .map_err(|err| err.to_string()) + .await?; + fee + } + "1" => { + let fee = estimate_fee(eth_rpc_url, FeeEstimationType::Instant) + .map_err(|err| err.to_string()) + .await?; + fee + } + "2" => { + if max_batcher_fee_env == U256::from(0) { + panic!("BATCHER_MAX_FEE cannot be 0 when BATCHER_FEE_ESTM_TYPE is 2(Custom)"); + } + max_batcher_fee_env + } + _ => panic!( + "Invalid batcher fee estimation type: {}", + batcher_fee_estimation_type + ), }; - let max_fee = estimate_fee(eth_rpc_url, FeeEstimationType::Instant) - .map_err(|err| err.to_string()) - .await?; let nonce = aligned_sdk::verification_layer::get_nonce_from_batcher(network.clone(), wallet.address()) .await @@ -92,16 +253,223 @@ pub async fn submit( info!("Max fee: {max_fee} gas"); info!("Nonce: {nonce}"); - info!("Submitting {proof_name} into Aligned and waiting for the batch to be verified..."); + match submission_mode { + SubmissionMode::SubmitAndWait => { + submit_and_wait_verification_with_timing( + eth_rpc_url, + network, + &verification_data, + max_fee, + wallet, + nonce, + &proof_name, + ) + .await + } + SubmissionMode::SubmitWithPolling => { + let polling_config = PollingConfig::from_env(); + submit_with_polling( + eth_rpc_url, + network, + &verification_data, + max_fee, + wallet, + nonce, + &proof_name, + &polling_config, + ) + .await + } + } +} + +/// Submits a proof using `submit_and_wait_verification` with timing logs. +/// NOTE: Please Try Check if the previous submission was successful before submitting again. +async fn submit_and_wait_verification_with_timing( + eth_rpc_url: &str, + network: &Network, + verification_data: &VerificationData, + max_fee: ethers::types::U256, + wallet: Wallet, + nonce: ethers::types::U256, + proof_name: &str, +) -> Result { + info!( + "Submitting {} into Aligned (mode: submit_and_wait) and waiting for verification...", + proof_name + ); + + let start = Instant::now(); - aligned_sdk::verification_layer::submit_and_wait_verification( + let result = aligned_sdk::verification_layer::submit_and_wait_verification( eth_rpc_url, network.to_owned(), - &verification_data, + verification_data, + max_fee, + wallet, + nonce, + ) + .await + .map_err(|e| e.to_string()); + + let elapsed = start.elapsed(); + let elapsed_ms = elapsed.as_millis(); + let elapsed_secs = elapsed.as_secs_f64(); + + match &result { + Ok(data) => { + info!( + "Proof verification completed successfully. Network: {:?}, Batch merkle root: {:?}, Elapsed: {:.2}s ({} ms)", + network, + hex::encode(&data.batch_merkle_root), + elapsed_secs, + elapsed_ms + ); + } + Err(e) => { + error!( + "Proof verification failed after {:.2}s ({} ms): {}", + elapsed_secs, elapsed_ms, e + ); + } + } + + result +} + +/// Submits a proof using `submit` followed by polling `is_proof_verified`. +/// NOTE: Please Try to Check if the previous submission was successful before submitting again. +async fn submit_with_polling( + eth_rpc_url: &str, + network: &Network, + verification_data: &VerificationData, + max_fee: ethers::types::U256, + wallet: Wallet, + nonce: ethers::types::U256, + proof_name: &str, + polling_config: &PollingConfig, +) -> Result { + info!( + "Submitting {} into Aligned (mode: submit_with_polling)...", + proof_name + ); + info!( + "Polling config: interval={}s, timeout={}s", + polling_config.poll_interval.as_secs(), + polling_config.timeout.as_secs() + ); + + let total_start = Instant::now(); + let submit_start = Instant::now(); + + // Submit the proof + let aligned_verification_data = aligned_sdk::verification_layer::submit( + network.to_owned(), + verification_data, max_fee, wallet, nonce, ) .await - .map_err(|e| e.to_string()) + .map_err(|e| e.to_string())?; + + let submit_elapsed = submit_start.elapsed(); + info!( + "Proof submitted successfully. Submit time: {:.2}s ({} ms). Batch merkle root: {:?}", + submit_elapsed.as_secs_f64(), + submit_elapsed.as_millis(), + hex::encode(&aligned_verification_data.batch_merkle_root) + ); + + // Poll for verification + let poll_start = Instant::now(); + let mut poll_count = 0u32; + + loop { + let total_elapsed = total_start.elapsed(); + if total_elapsed >= polling_config.timeout { + let msg = format!( + "Verification polling timed out after {:.2}s ({} polls). Submit time: {:.2}s, Poll time: {:.2}s", + total_elapsed.as_secs_f64(), + poll_count, + submit_elapsed.as_secs_f64(), + poll_start.elapsed().as_secs_f64() + ); + error!("{}", msg); + return Err(msg); + } + + poll_count += 1; + + match aligned_sdk::verification_layer::is_proof_verified( + &aligned_verification_data, + network.to_owned(), + eth_rpc_url, + ) + .await + { + Ok(true) => { + let poll_elapsed = poll_start.elapsed(); + let total_elapsed = total_start.elapsed(); + info!( + "Proof verification completed successfully after {} polls. Network: {:?}, Batch merkle root: {:?}", + poll_count, + network, + hex::encode(&aligned_verification_data.batch_merkle_root) + ); + info!( + "Timing breakdown: Submit: {:.2}s, Verification wait: {:.2}s, Total: {:.2}s ({} ms)", + submit_elapsed.as_secs_f64(), + poll_elapsed.as_secs_f64(), + total_elapsed.as_secs_f64(), + total_elapsed.as_millis() + ); + return Ok(aligned_verification_data); + } + Ok(false) => { + info!( + "Poll {}: Proof not yet verified, waiting {}s before next poll...", + poll_count, + polling_config.poll_interval.as_secs() + ); + } + Err(e) => { + warn!( + "Poll {}: Error checking verification status: {}. Retrying...", + poll_count, e + ); + } + } + + tokio::time::sleep(polling_config.poll_interval).await; + } +} + +/// Checks if the proof size + pub inputs is valid (not exceeding max_proof_size) +/// Returns false, logs the error, +/// and sends it to the metrics server if the size is too large +fn cbor_size_upper_bound(data: &VerificationData) -> usize { + const CBOR_OVERHEAD_BYTES: usize = 1024; + let mut total_size = 0; + + // Add length of proof Vec + total_size += data.proof.len(); + + // Add length of pub_input Option> + if let Some(ref pub_input) = data.pub_input { + total_size += pub_input.len(); + } + + // Add length of verification_key Option> + if let Some(ref verification_key) = data.verification_key { + total_size += verification_key.len(); + } + + // Add length of vm_program_code Option> + if let Some(ref vm_program_code) = data.vm_program_code { + total_size += vm_program_code.len(); + } + + // Add overhead bytes for the full NoncedVerificationData structure + total_size + CBOR_OVERHEAD_BYTES } diff --git a/core/src/bin/compute_vk_hash.rs b/core/src/bin/compute_vk_hash.rs new file mode 100644 index 000000000..245fc6a4b --- /dev/null +++ b/core/src/bin/compute_vk_hash.rs @@ -0,0 +1,34 @@ +use mina_bridge_core::utils::vk_hash; + +fn main() -> Result<(), String> { + let args: Vec = std::env::args().collect(); + + if args.len() < 4 { + return Err( + "Usage: compute_vk_hash ".to_string(), + ); + } + let rpc_url = "https://api.minascan.io/node/devnet/v1/graphql"; + let state_hash = &args[1]; + let public_key = &args[2]; + let token_id = &args[3]; + + println!("state_hash: {}", state_hash); + println!("public_key: {}", public_key); + println!("token_id: {}", token_id); + let hash_hex = run_async(vk_hash::vk_hash_hex_from_mina_account( + rpc_url, state_hash, public_key, token_id, + ))?; + println!("verificationKeyHash (uint256): {}", hash_hex); + println!("Compare with NoriTokenBridge.noriStorageZkappAcctVk"); + return Ok(()); +} + +fn run_async(f: F) -> Result +where + F: std::future::Future>, +{ + tokio::runtime::Runtime::new() + .map_err(|e| e.to_string())? + .block_on(f) +} diff --git a/core/src/eth.rs b/core/src/eth.rs index 919d9af00..9bcfe380e 100644 --- a/core/src/eth.rs +++ b/core/src/eth.rs @@ -1,13 +1,14 @@ -use std::str::FromStr; -use std::sync::Arc; - use aligned_sdk::common::types::{AlignedVerificationData, Network, VerificationDataCommitment}; -use alloy::network::EthereumWallet; -use alloy::providers::ProviderBuilder; -use alloy::sol; -use ethers::{abi::AbiEncode, prelude::*}; -use k256::ecdsa::SigningKey; -use log::{debug, info}; +use alloy::hex::ToHexExt; +use alloy::{ + network::{Ethereum, EthereumWallet}, + primitives::{Address, Bytes, FixedBytes, U256}, + providers::{Provider, ProviderBuilder, RootProvider}, + rpc::client::RpcClient, + sol, + transports::{http::Http, BoxTransport}, +}; +use log::{error, info}; use mina_p2p_messages::v2::StateHash; use serde::{Deserialize, Serialize}; use serde_with::serde_as; @@ -15,27 +16,9 @@ use serde_with::serde_as; use crate::{ proof::{account_proof::MinaAccountPubInputs, state_proof::MinaStatePubInputs}, sol::serialization::SolSerialize, - utils::constants::{ANVIL_CHAIN_ID, BRIDGE_TRANSITION_FRONTIER_LEN, HOLESKY_CHAIN_ID}, + utils::{constants::BRIDGE_TRANSITION_FRONTIER_LEN, wallet::WalletData}, }; -abigen!( - MinaStateSettlementExampleEthereumContract, - "abi/MinaStateSettlementExample.json" -); -abigen!( - MinaAccountValidationExampleEthereumContract, - "abi/MinaAccountValidationExample.json" -); - -type MinaStateSettlementExampleEthereum = MinaStateSettlementExampleEthereumContract< - SignerMiddleware, Wallet>, ->; - -type MinaStateSettlementExampleEthereumCallOnly = - MinaStateSettlementExampleEthereumContract>; -type MinaAccountValidationExampleEthereumCallOnly = - MinaAccountValidationExampleEthereumContract>; - sol!( #[allow(clippy::too_many_arguments)] #[sol(rpc)] @@ -50,6 +33,13 @@ sol!( "abi/MinaAccountValidationExample.json" ); +sol!( + #[allow(clippy::too_many_arguments)] + #[sol(rpc)] + NoriTokenBridge, + "abi/NoriTokenBridge.json" +); + // Define constant values that will be used for gas limits and calculations const MAX_GAS_LIMIT_VALUE: u64 = 1_000_000; // Maximum allowed gas for a transaction const MAX_GAS_PRICE_GWEI: u64 = 300; // Maximum allowed gas price in Gwei @@ -111,16 +101,18 @@ impl MinaAccountValidationExampleConstructorArgs { // Main function that validates gas parameters // Takes provider (connection to Ethereum) and estimated_gas as parameters -async fn validate_gas_params( - provider: &Provider, - estimated_gas: U256, -) -> Result { +async fn validate_gas_params

(provider: &P, estimated_gas: U256) -> Result +where + P: Provider, +{ // Query the current network gas price let current_gas_price = provider .get_gas_price() .await .map_err(|err| err.to_string())?; + let current_gas_price = U256::from(current_gas_price); + // Convert gas price from Wei to Gwei by dividing by 1_000_000_000 let gas_price_gwei = current_gas_price .checked_div(U256::from(1_000_000_000)) @@ -164,23 +156,34 @@ async fn validate_gas_params( pub async fn update_chain( verification_data: AlignedVerificationData, pub_input: &MinaStatePubInputs, - network: &Network, + _network: &Network, eth_rpc_url: &str, - wallet: Wallet, + wallet: WalletData, contract_addr: &str, batcher_payment_service: &str, ) -> Result<(), String> { - let provider = Provider::::try_from(eth_rpc_url).map_err(|err| err.to_string())?; - let bridge_eth_addr = Address::from_str(contract_addr).map_err(|err| err.to_string())?; + let bridge_eth_addr = contract_addr + .parse::

() + .map_err(|e| e.to_string())?; + let batcher_payment_service_addr = batcher_payment_service + .parse::
() + .map_err(|e| e.to_string())?; let serialized_pub_input = bincode::serialize(pub_input) .map_err(|err| format!("Failed to serialize public inputs: {err}"))?; - let batcher_payment_service = Address::from_str(batcher_payment_service) - .map_err(|err| format!("Failed to parse batcher payment service address: {err}"))?; + info!("Creating contract instance"); + let url = reqwest::Url::parse(eth_rpc_url).map_err(|e| e.to_string())?; + let http = Http::new(url); + let boxed = BoxTransport::new(http); + let client = RpcClient::new(boxed, true); + let root = RootProvider::new(client); + let provider = ProviderBuilder::new() + .with_recommended_fillers() + .wallet(wallet.wallet) + .on_provider(root); - debug!("Creating contract instance"); - let mina_bridge_contract = mina_bridge_contract(eth_rpc_url, bridge_eth_addr, network, wallet)?; + let contract = MinaStateSettlementExample::new(bridge_eth_addr, provider.clone()); let AlignedVerificationData { verification_data_commitment, @@ -188,12 +191,13 @@ pub async fn update_chain( batch_inclusion_proof, index_in_batch, } = verification_data; - let merkle_proof = batch_inclusion_proof + + let merkle_proof: Bytes = batch_inclusion_proof .merkle_path - .clone() .into_iter() .flatten() - .collect(); + .collect::>() + .into(); let VerificationDataCommitment { proof_commitment, @@ -202,17 +206,23 @@ pub async fn update_chain( .. } = verification_data_commitment; - debug!("Updating contract"); + info!("Updating contract"); + + let proof_commitment = FixedBytes::from(proof_commitment); + let proving_system_aux_data_commitment = FixedBytes::from(proving_system_aux_data_commitment); + let batch_merkle_root = FixedBytes::from(batch_merkle_root); + // proof_generator_addr is likely [u8; 20]. Contract expects FixedBytes<20>. + let proof_generator_addr = FixedBytes::from(proof_generator_addr); - let update_call = mina_bridge_contract.update_chain( + let update_call = contract.updateChain( proof_commitment, proving_system_aux_data_commitment, proof_generator_addr, batch_merkle_root, merkle_proof, - index_in_batch.into(), + U256::from(index_in_batch), serialized_pub_input.into(), - batcher_payment_service, + batcher_payment_service_addr, ); // update call reverts if batch is not valid or proof isn't included in it. @@ -224,37 +234,50 @@ pub async fn update_chain( info!("Estimated gas cost: {}", estimated_gas); // Validate gas parameters and get safe gas limit - let gas_limit = validate_gas_params(&provider, estimated_gas).await?; - let update_call_with_gas_limit = update_call.gas(gas_limit); + let gas_limit = validate_gas_params(&provider, U256::from(estimated_gas)).await?; + let update_call = update_call.gas(gas_limit.to::()); + + let pending_tx = update_call.send().await.map_err(|err| err.to_string())?; - let pending_tx = update_call_with_gas_limit - .send() - .await - .map_err(|err| err.to_string())?; info!( "Transaction {} was submitted and is now pending", pending_tx.tx_hash().encode_hex() ); let receipt = pending_tx + .get_receipt() .await - .map_err(|err| err.to_string())? - .ok_or("Missing transaction receipt")?; + .map_err(|err| err.to_string())?; - info!( - "Transaction mined! final gas cost: {}", - receipt.gas_used.ok_or("Missing gas used")? - ); + info!("Transaction mined! final gas cost: {}", receipt.gas_used); + info!("Transaction status: {:?}", receipt.status()); + + // check if tx succeeds + if !receipt.status() { + error!("Transaction reverted! Check contract logs for details."); + return Err("Transaction reverted on chain".to_string()); + } info!("Checking that the state hashes were stored correctly.."); // TODO(xqft): do the same for ledger hashes - debug!("Getting network state hashes"); + info!("Getting network state hashes"); let new_network_state_hashes = get_bridge_chain_state_hashes(contract_addr, eth_rpc_url) .await .map_err(|err| err.to_string())?; if new_network_state_hashes != pub_input.candidate_chain_state_hashes { + // print the difference + error!("=== State Hash Mismatch Debug ==="); + error!("Expected (candidate_chain_state_hashes):"); + for (i, hash) in pub_input.candidate_chain_state_hashes.iter().enumerate() { + error!(" [{}]: {}", i, hash); + } + error!("Actual (stored in contract):"); + for (i, hash) in new_network_state_hashes.iter().enumerate() { + error!(" [{}]: {}", i, hash); + } + error!("=== End Debug ==="); return Err("Stored network state hashes don't match the candidate's".to_string()); } @@ -277,17 +300,27 @@ pub async fn get_bridge_tip_hash( contract_addr: &str, eth_rpc_url: &str, ) -> Result { - let bridge_eth_addr = Address::from_str(contract_addr).map_err(|err| err.to_string())?; - - debug!("Creating contract instance"); - let mina_bridge_contract = mina_bridge_contract_call_only(eth_rpc_url, bridge_eth_addr)?; - - let state_hash_bytes = mina_bridge_contract - .get_tip_state_hash() + let bridge_eth_addr = contract_addr + .parse::
() + .map_err(|e| e.to_string())?; + + info!("Creating contract instance"); + let url = reqwest::Url::parse(eth_rpc_url).map_err(|e| e.to_string())?; + let http = Http::new(url); + let boxed = BoxTransport::new(http); + let client = RpcClient::new(boxed, true); + let provider: RootProvider<_, Ethereum> = RootProvider::new(client); + let contract = MinaStateSettlementExample::new(bridge_eth_addr, provider); + + let state_hash_return = contract + .getTipStateHash() + .call() .await .map_err(|err| err.to_string())?; - let state_hash: SolStateHash = bincode::deserialize(&state_hash_bytes) + let state_hash_bytes = state_hash_return._0; + + let state_hash: SolStateHash = bincode::deserialize(state_hash_bytes.as_slice()) .map_err(|err| format!("Failed to deserialize bridge tip state hash: {err}"))?; info!("Retrieved bridge tip state hash: {}", state_hash.0,); @@ -304,25 +337,34 @@ pub async fn get_bridge_chain_state_hashes( contract_addr: &str, eth_rpc_url: &str, ) -> Result<[StateHash; BRIDGE_TRANSITION_FRONTIER_LEN], String> { - let bridge_eth_addr = Address::from_str(contract_addr).map_err(|err| err.to_string())?; + let bridge_eth_addr = contract_addr + .parse::
() + .map_err(|e| e.to_string())?; + + info!("Creating contract instance"); + let url = reqwest::Url::parse(eth_rpc_url).map_err(|e| e.to_string())?; + let http = Http::new(url); + let boxed = BoxTransport::new(http); + let client = RpcClient::new(boxed, true); + let provider: RootProvider<_, Ethereum> = RootProvider::new(client); + let contract = MinaStateSettlementExample::new(bridge_eth_addr, provider); + + let hashes_return = contract + .getChainStateHashes() + .call() + .await + .map_err(|err| format!("Could not call contract for state hashes: {err}"))?; - debug!("Creating contract instance"); - let mina_bridge_contract = mina_bridge_contract_call_only(eth_rpc_url, bridge_eth_addr)?; + let hashes = hashes_return._0; - mina_bridge_contract - .get_chain_state_hashes() - .await - .map_err(|err| format!("Could not call contract for state hashes: {err}")) - .and_then(|hashes| { - hashes - .into_iter() - .map(|hash| { - bincode::deserialize::(&hash) - .map_err(|err| format!("Failed to deserialize network state hashes: {err}")) - .map(|hash| hash.0) - }) - .collect::, _>>() + hashes + .into_iter() + .map(|hash| { + bincode::deserialize::(hash.as_slice()) + .map_err(|err| format!("Failed to deserialize network state hashes: {err}")) + .map(|hash| hash.0) }) + .collect::, _>>() .and_then(|hashes| { hashes .try_into() @@ -344,19 +386,25 @@ pub async fn validate_account( contract_addr: &str, batcher_payment_service: &str, ) -> Result<(), String> { - let provider = Provider::::try_from(eth_rpc_url).map_err(|err| err.to_string())?; - let bridge_eth_addr = Address::from_str(contract_addr).map_err(|err| err.to_string())?; - - debug!("Creating contract instance"); - - let contract = mina_account_validation_contract_call_only(eth_rpc_url, bridge_eth_addr)?; + let bridge_eth_addr = contract_addr + .parse::
() + .map_err(|e| e.to_string())?; + let batcher_payment_service_addr = batcher_payment_service + .parse::
() + .map_err(|e| e.to_string())?; + + info!("Creating contract instance"); + + let url = reqwest::Url::parse(eth_rpc_url).map_err(|e| e.to_string())?; + let http = Http::new(url); + let boxed = BoxTransport::new(http); + let client = RpcClient::new(boxed, true); + let provider: RootProvider<_, Ethereum> = RootProvider::new(client); + let contract = MinaAccountValidationExample::new(bridge_eth_addr, provider.clone()); let serialized_pub_input = bincode::serialize(pub_input) .map_err(|err| format!("Failed to serialize public inputs: {err}"))?; - let batcher_payment_service = Address::from_str(batcher_payment_service) - .map_err(|err| format!("Failed to parse batcher payment service address: {err}"))?; - let AlignedVerificationData { verification_data_commitment, batch_merkle_root, @@ -364,12 +412,12 @@ pub async fn validate_account( index_in_batch, } = verification_data; - let merkle_proof = batch_inclusion_proof + let merkle_proof: Bytes = batch_inclusion_proof .merkle_path - .clone() .into_iter() .flatten() - .collect(); + .collect::>() + .into(); let VerificationDataCommitment { proof_commitment, @@ -378,27 +426,35 @@ pub async fn validate_account( .. } = verification_data_commitment; - debug!("Validating account"); - - let aligned_args = AlignedArgs { - proof_commitment, - proving_system_aux_data_commitment, - proof_generator_addr, - batch_merkle_root, - merkle_proof, - verification_data_batch_index: index_in_batch.into(), - pub_input: serialized_pub_input.into(), - batcher_payment_service, + info!("Validating account"); + + let proof_commitment = FixedBytes::from(proof_commitment); + let proving_system_aux_data_commitment = FixedBytes::from(proving_system_aux_data_commitment); + let batch_merkle_root = FixedBytes::from(batch_merkle_root); + let proof_generator_addr = FixedBytes::from(proof_generator_addr); + + let aligned_args = MinaAccountValidationExample::AlignedArgs { + proofCommitment: proof_commitment, + provingSystemAuxDataCommitment: proving_system_aux_data_commitment, + proofGeneratorAddr: proof_generator_addr, + batchMerkleRoot: batch_merkle_root, + merkleProof: merkle_proof, + verificationDataBatchIndex: U256::from(index_in_batch), + pubInput: serialized_pub_input.into(), + batcherPaymentService: batcher_payment_service_addr, }; - let call = contract.validate_account(aligned_args); + let call = contract.validateAccount(aligned_args); let estimated_gas = call.estimate_gas().await.map_err(|err| err.to_string())?; info!("Estimated account verification gas cost: {estimated_gas}"); - let gas_limit = validate_gas_params(&provider, estimated_gas).await?; + let gas_limit = validate_gas_params(&provider, U256::from(estimated_gas)).await?; - call.gas(gas_limit).await.map_err(|err| err.to_string())?; + call.gas(gas_limit.to::()) + .call() + .await + .map_err(|err| err.to_string())?; Ok(()) } @@ -439,10 +495,7 @@ pub async fn deploy_mina_bridge_example_contract( "Mina {} Bridge example contract successfuly deployed with address {}", network, address ); - info!( - "Set STATE_SETTLEMENT_ETH_ADDR={} if using Mina {}", - address, network - ); + info!("Set STATE_SETTLEMENT_ETH_ADDR={}", address); Ok(*address) } @@ -475,50 +528,115 @@ pub async fn deploy_mina_account_validation_example_contract( Ok(*address) } -fn mina_bridge_contract( +/// Deploys the Nori Token Bridge Contract on Ethereum +pub async fn deploy_nori_token_bridge_contract( eth_rpc_url: &str, - contract_address: Address, - network: &Network, - wallet: Wallet, -) -> Result { - let eth_rpc_provider = - Provider::::try_from(eth_rpc_url).map_err(|err| err.to_string())?; - let network_id = match network { - Network::Devnet => ANVIL_CHAIN_ID, - Network::Holesky => HOLESKY_CHAIN_ID, - _ => unimplemented!(), + wallet: &EthereumWallet, + initial_balance: Option, +) -> Result { + let provider = ProviderBuilder::new() + .with_recommended_fillers() + .wallet(wallet) + .on_http(reqwest::Url::parse(eth_rpc_url).map_err(|err| err.to_string())?); + + let builder = NoriTokenBridge::deploy_builder(&provider); + + let builder = if let Some(balance) = initial_balance { + builder.value(alloy::primitives::U256::from(balance)) + } else { + builder }; - let signer = SignerMiddleware::new(eth_rpc_provider, wallet.with_chain_id(network_id)); - let client = Arc::new(signer); - debug!("contract address: {contract_address}"); - Ok(MinaStateSettlementExampleEthereum::new( - contract_address, - client, - )) + + let address = builder.deploy().await.map_err(|err| err.to_string())?; + + info!( + "Nori Token Bridge contract successfuly deployed with address {}", + address + ); + info!("Set NORI_TOKEN_BRIDGE_ETH_ADDR={}", address); + + Ok(address) } -fn mina_bridge_contract_call_only( +/// Calls `setNoriStorageZkappParams` on the NoriTokenBridge contract to set +/// the verification key hash and token ID for the NoriStorage zkApp. +pub async fn set_nori_storage_zkapp_params( eth_rpc_url: &str, - contract_address: Address, -) -> Result { - let eth_rpc_provider = - Provider::::try_from(eth_rpc_url).map_err(|err| err.to_string())?; - let client = Arc::new(eth_rpc_provider); - Ok(MinaStateSettlementExampleEthereumCallOnly::new( - contract_address, - client, - )) + bridge_addr: alloy::primitives::Address, + nori_storage_zkapp_acct_vk: FixedBytes<32>, + nori_storage_zkapp_token_id: FixedBytes<32>, + wallet: &EthereumWallet, +) -> Result<(), String> { + let provider = ProviderBuilder::new() + .with_recommended_fillers() + .wallet(wallet) + .on_http(reqwest::Url::parse(eth_rpc_url).map_err(|err| err.to_string())?); + + let contract = NoriTokenBridge::new(bridge_addr, provider); + let call = contract.setNoriStorageZkappParams(nori_storage_zkapp_acct_vk, nori_storage_zkapp_token_id); + let pending_tx = call.send().await.map_err(|err| err.to_string())?; + + info!( + "Submitted setNoriStorageZkappParams tx for NoriTokenBridge {}: {:?}", + bridge_addr, + pending_tx.tx_hash() + ); + + let receipt = pending_tx + .get_receipt() + .await + .map_err(|err| err.to_string())?; + + info!( + "setNoriStorageZkappParams mined (gas: {}, status: {:?})", + receipt.gas_used, + receipt.status() + ); + + if !receipt.status() { + return Err("setNoriStorageZkappParams transaction reverted".to_string()); + } + + Ok(()) } -fn mina_account_validation_contract_call_only( +/// Configures the Nori Token Bridge Contract aligned dependencies +pub async fn configure_nori_token_bridge_contract( eth_rpc_url: &str, - contract_address: Address, -) -> Result { - let eth_rpc_provider = - Provider::::try_from(eth_rpc_url).map_err(|err| err.to_string())?; - let client = Arc::new(eth_rpc_provider); - Ok(MinaAccountValidationExampleEthereumCallOnly::new( - contract_address, - client, - )) + bridge_addr: alloy::primitives::Address, + state_settlement_addr: alloy::primitives::Address, + account_validation_addr: alloy::primitives::Address, + nori_storage_zkapp_acct_vk: FixedBytes<32>, + nori_storage_zkapp_token_id: FixedBytes<32>, + wallet: &EthereumWallet, +) -> Result<(), String> { + let provider = ProviderBuilder::new() + .with_recommended_fillers() + .wallet(wallet) + .on_http(reqwest::Url::parse(eth_rpc_url).map_err(|err| err.to_string())?); + + let contract = NoriTokenBridge::new(bridge_addr, provider); + let call = contract.setAlignedContracts(state_settlement_addr, account_validation_addr); + let pending_tx = call.send().await.map_err(|err| err.to_string())?; + + info!( + "Submitted setAlignedContracts tx for NoriTokenBridge {}: {:?}", + bridge_addr, + pending_tx.tx_hash() + ); + + info!( + "Waiting for Nori Token Bridge configuration tx to be mined (tx: {:?})", + pending_tx.tx_hash() + ); + + set_nori_storage_zkapp_params(eth_rpc_url, bridge_addr, nori_storage_zkapp_acct_vk, nori_storage_zkapp_token_id, wallet) + .await + .unwrap_or_else(|err| { + error!("Failed to set NoriStorage zkApp params: {err}"); + }); + + // NOTE: PendingTransactionBuilder is not awaitable in this SDK version; caller can + // poll the tx hash externally if they need confirmation. + Ok(()) } diff --git a/core/src/lib.rs b/core/src/lib.rs index 2a7a45c01..242e3f439 100644 --- a/core/src/lib.rs +++ b/core/src/lib.rs @@ -10,5 +10,7 @@ pub mod proof; pub mod sdk; /// Solidity-friendly data structures and serialization. pub mod sol; +/// Nori token bridge operations +pub mod nori; /// Internal utils. pub mod utils; diff --git a/core/src/main.rs b/core/src/main.rs index 00a6cefe7..a35f16e37 100644 --- a/core/src/main.rs +++ b/core/src/main.rs @@ -1,7 +1,7 @@ use clap::{Parser, Subcommand}; use log::{error, info}; use mina_bridge_core::{ - aligned, eth, mina, + aligned, eth, mina, nori, proof::MinaProof, utils::{env::EnvironmentVariables, wallet::get_wallet}, }; @@ -29,9 +29,20 @@ enum Command { save_proof: bool, /// Public key string of the account to verify public_key: String, + token_id: String, + /// Hash of the state to verify the account for state_hash: String, }, + UnlockNoriToken { + /// Public key string of the account to unlock + public_key: String, + /// Token id string of the fungible token to unlock + token_id: String, + /// Amount of Nori tokens to unlock (in ether, supports decimals) + #[arg(short, long)] + to_unlock_amount: f64, + }, } #[tokio::main] @@ -41,8 +52,8 @@ async fn main() { env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("info")).init(); let EnvironmentVariables { - rpc_url, - network, + mina_rpc_url, + eth_network, state_settlement_addr, account_validation_addr, batcher_addr, @@ -51,6 +62,8 @@ async fn main() { proof_generator_addr, keystore_path, private_key, + nori_token_bridge_eth_addr, + .. } = EnvironmentVariables::new().unwrap_or_else(|err| { error!("{}", err); process::exit(1); @@ -65,16 +78,20 @@ async fn main() { process::exit(1); }); - let wallet = get_wallet(&network, keystore_path.as_deref(), private_key.as_deref()) - .unwrap_or_else(|err| { - error!("{}", err); - process::exit(1); - }); + let wallet_data = get_wallet( + ð_network, + keystore_path.as_deref(), + private_key.as_deref(), + ) + .unwrap_or_else(|err| { + error!("{}", err); + process::exit(1); + }); match cli.command { Command::SubmitState { devnet, save_proof } => { let (proof, pub_input) = mina::get_mina_proof_of_state( - &rpc_url, + &mina_rpc_url, ð_rpc_url, &state_settlement_addr, devnet, @@ -87,11 +104,11 @@ async fn main() { let verification_data = aligned::submit( MinaProof::State((proof, pub_input.clone())), - &network, + ð_network, &proof_generator_addr, &batcher_addr, ð_rpc_url, - wallet.clone(), + wallet_data.clone(), save_proof, ) .await @@ -103,9 +120,9 @@ async fn main() { eth::update_chain( verification_data, &pub_input, - &network, + ð_network, ð_rpc_url, - wallet, + wallet_data, &state_settlement_addr, &batcher_eth_addr, ) @@ -118,10 +135,11 @@ async fn main() { Command::SubmitAccount { save_proof, public_key, + token_id, state_hash, } => { let (proof, pub_input) = - mina::get_mina_proof_of_account(&public_key, &state_hash, &rpc_url) + mina::get_mina_proof_of_account(&public_key, &token_id, &state_hash, &mina_rpc_url) .await .unwrap_or_else(|err| { error!("{}", err); @@ -130,11 +148,11 @@ async fn main() { let verification_data = aligned::submit( MinaProof::Account((proof, pub_input.clone())), - &network, + ð_network, &proof_generator_addr, &batcher_addr, ð_rpc_url, - wallet.clone(), + wallet_data.clone(), save_proof, ) .await @@ -157,6 +175,41 @@ async fn main() { info!("Mina account {public_key} was validated!"); }; } + Command::UnlockNoriToken { + to_unlock_amount, + public_key, + token_id, + } => { + // Convert floating ETH amount to 18-decimal base units + if !to_unlock_amount.is_finite() || to_unlock_amount.is_sign_negative() { + error!("to_unlock_amount must be a non-negative finite number"); + process::exit(1); + } + let wei_f = to_unlock_amount * 1e18_f64; + if wei_f > (u128::MAX as f64) { + error!("to_unlock_amount is too large"); + process::exit(1); + } + let to_unlock_amount_wei = wei_f.round() as u128; + + nori::unlock_nori_token( + &mina_rpc_url, + ð_network, + &batcher_addr, + ð_rpc_url, + &proof_generator_addr, + &batcher_eth_addr, + keystore_path.as_deref(), + private_key.as_deref(), + &state_settlement_addr, + &account_validation_addr, + &nori_token_bridge_eth_addr, + &public_key, + &token_id, + to_unlock_amount_wei, + ) + .await; + } } if let Ok(elapsed) = now.elapsed() { diff --git a/core/src/mina.rs b/core/src/mina.rs index 46ad85663..c37d9566d 100644 --- a/core/src/mina.rs +++ b/core/src/mina.rs @@ -1,20 +1,18 @@ use std::str::FromStr; use alloy_sol_types::SolValue; +use hex; use base64::prelude::*; use futures::future::join_all; -use graphql_client::{ - reqwest::{post_graphql, post_graphql_blocking}, - GraphQLQuery, -}; +use graphql_client::{reqwest::post_graphql, GraphQLQuery}; use kimchi::mina_curves::pasta::Fp; -use log::{debug, info}; +use log::info; +use mina_state_verifier::verify_mina_state; use mina_p2p_messages::{ - binprot::BinProtRead, - v2::{ + binprot::BinProtRead, hash::MinaHash, v2::{ LedgerHash, MinaBaseAccountBinableArgStableV2 as MinaAccount, MinaBaseProofStableV2, - MinaStateProtocolStateValueStableV2, StateHash, - }, + MinaBaseZkappAccountStableV2, MinaStateProtocolStateValueStableV2, StateHash, + } }; use crate::{ @@ -56,6 +54,45 @@ struct BestChainQuery; /// merkle path. struct AccountQuery; +type TokenId = String; +type PublicKey = String; + +/// 将 zkApp 账户格式化为人类可读的字符串 +fn format_zkapp_readable(zkapp: &MinaBaseZkappAccountStableV2) -> String { + let mut output = String::new(); + + // app_state - 8 个 field elements + output.push_str(" app_state:\n"); + for (i, state) in zkapp.app_state.0.0.iter().enumerate() { + output.push_str(&format!(" [{}]: 0x{}\n", i, hex::encode(state.as_ref()))); + } + + // verification_key + output.push_str(&format!(" verification_key: {}\n", + if zkapp.verification_key.is_some() { "Some(...)" } else { "None" })); + + // zkapp_version + output.push_str(&format!(" zkapp_version: {:?}\n", zkapp.zkapp_version)); + + // action_state - 5 个 field elements + output.push_str(" action_state:\n"); + for (i, state) in zkapp.action_state.iter().enumerate() { + output.push_str(&format!(" [{}]: 0x{}\n", i, hex::encode(state.as_ref()))); + } + + // last_action_slot + output.push_str(&format!(" last_action_slot: {:?}\n", zkapp.last_action_slot)); + + // proved_state + output.push_str(&format!(" proved_state: {}\n", zkapp.proved_state)); + + // zkapp_uri + let uri: Result = (&zkapp.zkapp_uri).try_into(); + output.push_str(&format!(" zkapp_uri: {:?}\n", uri.unwrap_or_default())); + + output +} + /// Queries the Mina state from the Mina Node and returns the proof that the queried Mina state is the last finalized state /// of the blockchain. /// This proof along its public inputs are structured so that they can be sent to Aligned Layer to be verified. @@ -79,7 +116,7 @@ pub async fn get_mina_proof_of_state( candidate_chain_state_hashes, candidate_chain_ledger_hashes, candidate_tip_proof, - ) = query_candidate_chain(rpc_url).await?; + ) = query_candidate_chain_0(rpc_url).await?; let candidate_tip_state_hash = candidate_chain_state_hashes .last() @@ -89,18 +126,30 @@ pub async fn get_mina_proof_of_state( info!("Queried Mina candidate chain with tip {candidate_tip_state_hash} and its proof"); + let mina_state_proof = MinaStateProof { + candidate_tip_proof, + candidate_chain_states, + bridge_tip_state, + }; + let mina_state_pub_inputs = MinaStatePubInputs { + is_state_proof_from_devnet, + bridge_tip_state_hash, + candidate_chain_state_hashes, + candidate_chain_ledger_hashes, + }; + + let proof_bytes = bincode::serialize(&mina_state_proof) + .map_err(|err| format!("Failed to serialize state proof: {err}"))?; + let pub_input_bytes = bincode::serialize(&mina_state_pub_inputs) + .map_err(|err| format!("Failed to serialize public inputs: {err}"))?; + if !verify_mina_state(&proof_bytes, &pub_input_bytes) { + return Err("Mina state proof verification failed".to_string()); + } + info!("Mina state proof verification passed"); + Ok(( - MinaStateProof { - candidate_tip_proof, - candidate_chain_states, - bridge_tip_state, - }, - MinaStatePubInputs { - is_state_proof_from_devnet, - bridge_tip_state_hash, - candidate_chain_state_hashes, - candidate_chain_ledger_hashes, - }, + mina_state_proof, + mina_state_pub_inputs, )) } @@ -115,15 +164,16 @@ pub async fn get_mina_proof_of_state( /// - A Merkle path from the root to the leaf both mentioned above. pub async fn get_mina_proof_of_account( public_key: &str, + token_id: &str, state_hash: &str, rpc_url: &str, ) -> Result<(MinaAccountProof, MinaAccountPubInputs), String> { let (account, ledger_hash, merkle_path) = - query_account(rpc_url, state_hash, public_key).await?; + query_account(rpc_url, state_hash, public_key, token_id).await?; let encoded_account = MinaAccountValidationExample::Account::try_from(&account)?.abi_encode(); - debug!( + info!( "Retrieved proof of account for ledger {}", LedgerHash::from_fp(ledger_hash) ); @@ -147,7 +197,7 @@ async fn query_state( let variables = state_query::Variables { state_hash: state_hash.to_string(), }; - debug!("Querying state {}", variables.state_hash); + info!("Querying state {}", variables.state_hash); let client = reqwest::Client::new(); let proof = post_graphql::(&client, rpc_url, variables) .await @@ -171,21 +221,22 @@ async fn query_candidate_chain( rpc_url: &str, ) -> Result< ( - [MinaStateProtocolStateValueStableV2; BRIDGE_TRANSITION_FRONTIER_LEN], + Vec, [StateHash; BRIDGE_TRANSITION_FRONTIER_LEN], [LedgerHash; BRIDGE_TRANSITION_FRONTIER_LEN], MinaBaseProofStableV2, ), String, > { - debug!("Querying for candidate state"); - let client = reqwest::blocking::Client::new(); + info!("Querying for candidate state"); + let client = reqwest::Client::new(); let variables = best_chain_query::Variables { max_length: BRIDGE_TRANSITION_FRONTIER_LEN .try_into() .map_err(|_| "Transition frontier length conversion failure".to_string())?, }; - let response = post_graphql_blocking::(&client, rpc_url, variables) + let response = post_graphql::(&client, rpc_url, variables) + .await .map_err(|err| err.to_string())? .data .ok_or("Missing candidate query response data".to_string())?; @@ -204,33 +255,32 @@ async fn query_candidate_chain( .collect::>() .try_into() .map_err(|_| "Failed to convert chain state hashes vector into array".to_string())?; - let chain_ledger_hashes: [LedgerHash; BRIDGE_TRANSITION_FRONTIER_LEN] = best_chain + let chain_states = join_all( + chain_state_hashes + .iter() + .map(|state_hash| query_state(rpc_url, state_hash)), + ) + .await + .into_iter() + .collect::, _>>()?; + + // Derive ledger hashes from the full protocol states to ensure consistency + // with on-chain verification logic. + let chain_ledger_hashes: [LedgerHash; BRIDGE_TRANSITION_FRONTIER_LEN] = chain_states .iter() .map(|state| { state - .protocol_state + .body .blockchain_state - .snarked_ledger_hash + .ledger_proof_statement + .target + .first_pass_ledger .clone() }) .collect::>() .try_into() .map_err(|_| "Failed to convert chain ledger hashes vector into array".to_string())?; - let chain_states = join_all( - chain_state_hashes - .iter() - .map(|state_hash| query_state(rpc_url, state_hash)), - ) - .await - .into_iter() - .collect::, _>>() - .and_then(|states| { - states - .try_into() - .map_err(|_| "Couldn't convert vector of states to array".to_string()) - })?; - let tip = best_chain.last().ok_or("Missing best chain".to_string())?; let tip_state_proof = tip .protocol_state_proof @@ -247,8 +297,8 @@ async fn query_candidate_chain( .map_err(|err| format!("Couldn't read state proof binprot: {err}")) })?; - debug!("Queried state hashes: {chain_state_hashes:?}"); - debug!("Queried ledger hashes: {chain_ledger_hashes:?}"); + info!("Queried state hashes: {chain_state_hashes:?}"); + info!("Queried ledger hashes: {chain_ledger_hashes:?}"); Ok(( chain_states, @@ -278,24 +328,47 @@ pub async fn query_root(rpc_url: &str, length: usize) -> Result Result<(MinaAccount, Fp, Vec), String> { - debug!( - "Querying account {public_key}, its merkle proof and ledger hash for state {state_hash}" + info!( + "Querying account[public_key:{public_key}, token_id:{token_id}], its merkle proof and ledger hash for state {state_hash}" ); let client = reqwest::Client::new(); - + let variables = account_query::Variables { state_hash: state_hash.to_owned(), - public_key: public_key.to_owned(), + account_infos: vec![account_query::AccountInput { + public_key: public_key.to_owned(), + token: Some(token_id.to_owned()), + }], }; - let response = post_graphql::(&client, rpc_url, variables) + + let request_body = AccountQuery::build_query(variables); + info!("Sending request to {}: {:?}", rpc_url, serde_json::to_string(&request_body).unwrap()); + + let response = client + .post(rpc_url) + .json(&request_body) + .send() .await - .map_err(|err| err.to_string())? + .map_err(|e| e.to_string())?; + + let response_text = response.text().await.map_err(|e| e.to_string())?; + info!("Raw response body: {}", response_text); + + /* + let response_text = include_str!("../accoun_query_response.json"); + info!("Raw response body: {}", response_text); + */ + let response: graphql_client::Response = + serde_json::from_str(&response_text).map_err(|e| format!("Failed to parse JSON: {}", e))?; + + let response = response .data .ok_or("Missing merkle query response data".to_string())?; @@ -304,19 +377,31 @@ async fn query_account( .first() .ok_or("Failed to retrieve membership query field".to_string())?; - let account = BASE64_STANDARD + // 解码 Base64 账户数据 + let account_bytes = BASE64_STANDARD .decode(&membership.account) - .map_err(|err| format!("Failed to decode account from base64: {err}")) - .and_then(|binprot| { - MinaAccount::binprot_read(&mut binprot.as_slice()) - .map_err(|err| format!("Failed to deserialize account binprot: {err}")) - })?; + .map_err(|err| format!("Failed to decode account from base64: {err}"))?; - debug!( - "Queried account {} with token id {}", - account.public_key, - account.token_id //Into::::into(account.token_id.clone()) - ); + info!("Decoded account bytes length: {}", account_bytes.len()); + info!("Decoded account bytes (hex): {}", hex::encode(&account_bytes)); + + let account = MinaAccount::binprot_read(&mut account_bytes.as_slice()) + .map_err(|err| format!("Failed to deserialize account binprot: {err}"))?; + + // 打印账户详细信息 + info!("=== Decoded MinaAccount ==="); + info!("Public Key: {:?}", account.public_key); + info!("Token ID: {:?}", account.token_id); + info!("Token Symbol: {:?}", account.token_symbol); + info!("Balance: {:?}", account.balance); + info!("Nonce: {:?}", account.nonce); + info!("Delegate: {:?}", account.delegate); + info!("Has zkApp: {}", account.zkapp.is_some()); + if let Some(ref zkapp) = account.zkapp { + info!("=== zkApp Details (Human Readable) ===\n{}", format_zkapp_readable(zkapp)); + info!("=== End zkApp Details ==="); + } + info!("=== End of MinaAccount ==="); let ledger_hash = response .block @@ -341,3 +426,116 @@ async fn query_account( Ok((account, ledger_hash, merkle_path)) } + +async fn query_candidate_chain_0( + rpc_url: &str, +) -> Result< + ( + Vec, + [StateHash; BRIDGE_TRANSITION_FRONTIER_LEN], + [LedgerHash; BRIDGE_TRANSITION_FRONTIER_LEN], + MinaBaseProofStableV2, + ), + String, +> { + info!("Querying for candidate state"); + let client = reqwest::Client::new(); + let variables = best_chain_query::Variables { + max_length: BRIDGE_TRANSITION_FRONTIER_LEN + .try_into() + .map_err(|_| "Transition frontier length conversion failure".to_string())?, + }; + let response = post_graphql::(&client, rpc_url, variables) + .await + .map_err(|err| err.to_string())? + .data + .ok_or("Missing candidate query response data".to_string())?; + let best_chain = response + .best_chain + .ok_or("Missing best chain field".to_string())?; + if best_chain.len() != BRIDGE_TRANSITION_FRONTIER_LEN { + return Err(format!( + "Not enough blocks ({}) were returned from query", + best_chain.len() + )); + } + let chain_state_hashes: [StateHash; BRIDGE_TRANSITION_FRONTIER_LEN] = best_chain + .iter() + .map(|state| state.state_hash.clone()) + .collect::>() + .try_into() + .map_err(|_| "Failed to convert chain state hashes vector into array".to_string())?; + let chain_ledger_hashes: [LedgerHash; BRIDGE_TRANSITION_FRONTIER_LEN] = best_chain + .iter() + .map(|state| { + state + .protocol_state + .blockchain_state + .snarked_ledger_hash + .clone() + }) + .collect::>() + .try_into() + .map_err(|_| "Failed to convert chain ledger hashes vector into array".to_string())?; + info!("chain_ledger_hashes (snarked): {:?}", chain_ledger_hashes); + + let chain_states: Vec = join_all( + chain_state_hashes + .iter() + .map(|state_hash| query_state(rpc_url, state_hash)), + ) + .await + .into_iter() + .collect::, _>>()?; + + let first_pass_ledgers: Vec<_> = chain_states + .iter() + .map(|state| { + + // when BRIDGE_TRANSITION_FRONTIER_LEN>16 + state + .body + .blockchain_state + .ledger_proof_statement + .target + .first_pass_ledger + .clone() + + /* original snippet when BRIDGE_TRANSITION_FRONTIER_LEN=16 + state + .body + .blockchain_state + .snarked_ledger_hash + .clone() + */ + + }) + .collect(); + info!("chain_ledger_hashes (first_pass_ledger in proof): {:?}", first_pass_ledgers); + + let tip = best_chain.last().ok_or("Missing best chain".to_string())?; + let tip_state_proof = tip + .protocol_state_proof + .base64 + .clone() + .ok_or("No tip state proof".to_string()) + .and_then(|base64| { + BASE64_URL_SAFE + .decode(base64) + .map_err(|err| format!("Couldn't decode state proof from base64: {err}")) + }) + .and_then(|binprot| { + MinaBaseProofStableV2::binprot_read(&mut binprot.as_slice()) + .map_err(|err| format!("Couldn't read state proof binprot: {err}")) + })?; + + info!("Queried state hashes: {chain_state_hashes:?}"); + info!("Queried ledger hashes: {chain_ledger_hashes:?}"); + + Ok(( + chain_states, + chain_state_hashes, + chain_ledger_hashes, + tip_state_proof, + )) +} diff --git a/core/src/nori.rs b/core/src/nori.rs new file mode 100644 index 000000000..a8a56aebc --- /dev/null +++ b/core/src/nori.rs @@ -0,0 +1,177 @@ +use alloy::{ + primitives::{Address, U256}, + providers::ProviderBuilder, + sol_types::sol, +}; +use log::{error, info}; +use std::{process, str::FromStr}; + +use crate::{ + sdk::{ + get_bridged_chain_tip_state_hash, update_bridge_chain, validate_account, + AccountVerificationData, + }, + utils::wallet::get_wallet, +}; + +// Generate NoriTokenBridge contract bindings +sol!( + #[allow(clippy::too_many_arguments)] + #[sol(rpc)] + NoriTokenBridge, + "abi/NoriTokenBridge.json" +); + +/// Unlocks Nori tokens on the bridge +#[allow(clippy::too_many_arguments)] +pub async fn unlock_nori_token( + mina_rpc_url: &str, + eth_network: &aligned_sdk::common::types::Network, + batcher_addr: &str, + eth_rpc_url: &str, + proof_generator_addr: &str, + batcher_eth_addr: &str, + keystore_path: Option<&str>, + private_key: Option<&str>, + state_settlement_addr: &str, + account_validation_addr: &str, + nori_token_bridge_eth_addr: &str, + nori_token_storage_zkapp_addr: &str, + nori_token_controller_token_id: &str, + to_unlock_amount: u128, +) { + let wallet_data = get_wallet(eth_network, keystore_path, private_key).unwrap_or_else(|err| { + error!("{}", err); + process::exit(1); + }); + + let state_verification_result = update_bridge_chain( + mina_rpc_url, + eth_network, + state_settlement_addr, + batcher_addr, + eth_rpc_url, + proof_generator_addr, + wallet_data.clone(), + batcher_eth_addr, + true, + false, + ) + .await; + + match state_verification_result { + Err(err) if err == "Latest chain is already verified" => { + info!("Bridge chain is up to date, won't verify new states.") + } + Err(err) => { + error!("{}", err); + process::exit(1); + } + _ => {} + } + + let tip_state_hash = + get_bridged_chain_tip_state_hash(state_settlement_addr, eth_rpc_url) + .await + .unwrap_or_else(|err| { + error!("{}", err); + process::exit(1); + }); + + info!("tip state hash: {}", &tip_state_hash); + + let AccountVerificationData { + proof_commitment, + proving_system_aux_data_commitment, + proof_generator_addr: proof_generator_addr_bytes, + batch_merkle_root, + merkle_proof, + verification_data_batch_index, + pub_input, + } = validate_account( + nori_token_storage_zkapp_addr, + nori_token_controller_token_id, + &tip_state_hash, + mina_rpc_url, + eth_network, + account_validation_addr, + batcher_addr, + eth_rpc_url, + proof_generator_addr, + batcher_eth_addr, + wallet_data.clone(), + false, + ) + .await + .unwrap_or_else(|err| { + error!("{}", err); + process::exit(1); + }); + + info!("Creating contract instance"); + let provider = ProviderBuilder::new() + .with_recommended_fillers() + .wallet(wallet_data.wallet) + .on_http( + reqwest::Url::parse(eth_rpc_url) + .map_err(|err| err.to_string()) + .unwrap(), + ); + + let contract = NoriTokenBridge::new( + Address::from_str(nori_token_bridge_eth_addr).unwrap(), + provider, + ); + + let to_unlock_amount = U256::from(to_unlock_amount); + info!("Unlock params:"); + info!("toUnlockAmount: {}", to_unlock_amount); + info!("proof_commitment: {}", hex::encode(proof_commitment)); + info!( + "proving_system_aux_data_commitment: {}", + hex::encode(proving_system_aux_data_commitment) + ); + info!( + "proof_generator_addr: {}", + hex::encode(proof_generator_addr_bytes) + ); + info!("batch_merkle_root: {}", hex::encode(batch_merkle_root)); + info!("merkle_proof: {}", hex::encode(&merkle_proof)); + info!( + "verification_data_batch_index: {}", + verification_data_batch_index + ); + info!("pub_input: {}", hex::encode(&pub_input)); + info!("batcher_eth_addr: {}", &batcher_eth_addr); + + let call = contract.unlockTokens( + to_unlock_amount, + proof_commitment.into(), + proving_system_aux_data_commitment.into(), + proof_generator_addr_bytes.into(), + batch_merkle_root.into(), + merkle_proof.into(), + U256::from(verification_data_batch_index), + pub_input.into(), + Address::from_str(batcher_eth_addr).unwrap(), + ); + + info!("Sending transaction to NoriTokenBridge contract..."); + let tx = call.send().await; + + match tx { + Ok(tx) => { + let receipt = tx.get_receipt().await.unwrap_or_else(|err| { + error!("{}", err); + process::exit(1); + }); + + info!( + "NoriTokenBridge contract was updated! transaction hash: {}, gas cost: {}", + receipt.transaction_hash, + receipt.gas_used + ); + } + Err(err) => error!("NoriTokenBridge transaction failed!: {err}"), + } +} diff --git a/core/src/proof/state_proof.rs b/core/src/proof/state_proof.rs index 9babfeb20..870acea5d 100644 --- a/core/src/proof/state_proof.rs +++ b/core/src/proof/state_proof.rs @@ -32,8 +32,7 @@ pub struct MinaStateProof { pub candidate_tip_proof: MinaBaseProofStableV2, /// The state data of the candidate chain. Used for consensus checks and checking that the /// public input state hashes correspond to states that effectively form a chain. - pub candidate_chain_states: - [MinaStateProtocolStateValueStableV2; BRIDGE_TRANSITION_FRONTIER_LEN], + pub candidate_chain_states: Vec, /// The latest state of the previously bridged chain, the latter also called the bridge's /// transition frontier. Used for consensus checks needed to be done as part of state /// verification to ensure that the candidate tip is better than the bridged tip. diff --git a/core/src/sdk.rs b/core/src/sdk.rs index b066907a7..a6eff0b44 100644 --- a/core/src/sdk.rs +++ b/core/src/sdk.rs @@ -1,8 +1,7 @@ use std::str::FromStr; use aligned_sdk::common::types::{AlignedVerificationData, Network, VerificationDataCommitment}; -use ethers::{core::k256::ecdsa::SigningKey, signers::Wallet}; -use log::debug; +use log::info; use mina_p2p_messages::v2::StateHash; use crate::{ @@ -63,6 +62,8 @@ pub async fn get_bridged_chain_tip_state_hash( .map(|hashes| hashes.last().unwrap().to_string()) } +use crate::utils::wallet::WalletData; + /// Updates the Mina state bridged on Ethereum using the Mina State Settlement Example Contract. /// /// Arguments: @@ -73,25 +74,25 @@ pub async fn get_bridged_chain_tip_state_hash( /// - `batcher_addr`: Address of the Aligned Batcher Service /// - `eth_rpc_url`: Ethereum node RPC URL to send the transaction to update the Mina state /// - `proof_generator_addr`: Address of the Aligned Proof Generator -/// - `wallet`: Ethereum wallet used to sign transactions for Aligned verification and Mina state update +/// - `wallet_data`: Wallet data containing the Ethereum wallet and private key bytes /// - `batcher_payment_service`: Address of the Aligned Batcher Payment Service /// - `is_state_proof_from_devnet`: `true` if the Mina state to fetch is from Mina Devnet. `false` if it is from Mainnet. /// - `save_proof`: `true` if the proof with its public inputs are persisted in a file. `false` otherwise. #[allow(clippy::too_many_arguments)] pub async fn update_bridge_chain( - rpc_url: &str, - network: &Network, + mina_rpc_url: &str, + eth_network: &Network, state_settlement_addr: &str, batcher_addr: &str, eth_rpc_url: &str, proof_generator_addr: &str, - wallet: Wallet, + wallet_data: WalletData, batcher_payment_service: &str, is_state_proof_from_devnet: bool, save_proof: bool, ) -> Result<(), String> { let (proof, pub_input) = get_mina_proof_of_state( - rpc_url, + mina_rpc_url, eth_rpc_url, state_settlement_addr, is_state_proof_from_devnet, @@ -101,17 +102,22 @@ pub async fn update_bridge_chain( if pub_input.candidate_chain_state_hashes == get_bridge_chain_state_hashes(state_settlement_addr, eth_rpc_url).await? { - debug!("The bridge chain is updated to the candidate chain"); + info!("The bridge chain is updated to the candidate chain"); return Err("Latest chain is already verified".to_string()); } + // We don't expose signer from EthereumWallet easily to get bytes, so we pass bytes separately or assume we can't easily get them. + // Wait, I updated get_wallet to return bytes, but here I am trying to get it from wallet? + // I should update update_bridge_chain signature to take bytes as well or just bytes if wallet is recreated. + // But eth::update_chain takes wallet. + // Let's modify update_bridge_chain to take bytes. let verification_data = submit( MinaProof::State((proof, pub_input.clone())), - network, + eth_network, proof_generator_addr, batcher_addr, eth_rpc_url, - wallet.clone(), + wallet_data.clone(), save_proof, ) .await?; @@ -119,9 +125,9 @@ pub async fn update_bridge_chain( update_chain( verification_data, &pub_input, - network, + eth_network, eth_rpc_url, - wallet, + wallet_data, state_settlement_addr, batcher_payment_service, ) @@ -144,11 +150,12 @@ pub async fn update_bridge_chain( /// - `eth_rpc_url`: Ethereum node RPC URL to send the transaction to update the Mina state /// - `proof_generator_addr`: Address of the Aligned Proof Generator /// - `batcher_payment_service`: Address of the Aligned Batcher Payment Service -/// - `wallet`: Ethereum wallet used to sign transactions for Aligned verification and Mina state update +/// - `wallet_data`: Wallet data containing the Ethereum wallet and private key bytes /// - `save_proof`: `true` if the proof with its public inputs are persisted in a file. `false` otherwise. #[allow(clippy::too_many_arguments)] pub async fn validate_account( public_key: &str, + token_id: &str, state_hash: &str, rpc_url: &str, network: &Network, @@ -157,10 +164,10 @@ pub async fn validate_account( eth_rpc_url: &str, proof_generator_addr: &str, batcher_payment_service: &str, - wallet: Wallet, + wallet_data: WalletData, save_proof: bool, ) -> Result { - let (proof, pub_input) = get_mina_proof_of_account(public_key, state_hash, rpc_url).await?; + let (proof, pub_input) = get_mina_proof_of_account(public_key, token_id, state_hash, rpc_url).await?; let verification_data = submit( MinaProof::Account((proof, pub_input.clone())), @@ -168,7 +175,7 @@ pub async fn validate_account( proof_generator_addr, batcher_addr, eth_rpc_url, - wallet.clone(), + wallet_data, save_proof, ) .await?; diff --git a/core/src/utils/constants.rs b/core/src/utils/constants.rs index ea1b7326e..72aa4f9ef 100644 --- a/core/src/utils/constants.rs +++ b/core/src/utils/constants.rs @@ -1,21 +1,16 @@ -// Anvil related constants - -/// Private key used to sign transactions to Aligned Devnet -pub const ANVIL_PRIVATE_KEY: &str = - "2a871d0798f97d79848a013d4936a73bf4cc922c825d33c1cf7073dff6d409c6"; // Anvil wallet 9 +// ETHEREUM NETWORKS related constants /// Chain ID of Aligned Devnet network pub const ANVIL_CHAIN_ID: u64 = 31337; -/// URL of the Aligned Devnet Batcher -pub const ANVIL_BATCHER_ADDR: &str = "ws://localhost:8080"; -/// Address of the Aligned Batcher Payment Service on Devnet -pub const ANVIL_BATCHER_ETH_ADDR: &str = "0x7bc06c482DEAd17c0e297aFbC32f6e63d3846650"; -/// URL of Aligned Devnet RPC -pub const ANVIL_ETH_RPC_URL: &str = "http://localhost:8545"; - -// Holesky related constants - /// Chain ID of Aligned Testnet network pub const HOLESKY_CHAIN_ID: u64 = 17000; +/// Chain ID of Aligned Testnet network +pub const HOODI_CHAIN_ID: u64 = 560048; +/// Chain ID of Aligned Testnet network +pub const SEPOLIA_CHAIN_ID: u64 = 11155111; + +// Bridge related constants +/// Length of the Mina transition frontier that will or is bridged to Ethereum +pub const BRIDGE_TRANSITION_FRONTIER_LEN: usize = 16; // Mina related constants // TODO(gabrielbosio): These are temporary, we will fetch the tip from the Mina contract instead of using these hardcoded values. @@ -23,17 +18,3 @@ pub const MINA_TIP_PROTOCOL_STATE: &str = "Va9U7YpJjxXGg9IcS2npo+3axwra34v/JNsZW pub const MINA_TIP_STATE_HASH_FIELD: &str = "26201757517054449641912404249424749469164718222967816857204695395894215860942"; pub const MINA_HASH_SIZE: usize = 32; - -// Bridge related constants - -pub const BRIDGE_DEVNET_ETH_ADDR: &str = "0x700b6A60ce7EaaEA56F065753d8dcB9653dbAD35"; -/// Length of the Mina transition frontier that will or is bridged to Ethereum -pub const BRIDGE_TRANSITION_FRONTIER_LEN: usize = 16; -pub const BRIDGE_ACCOUNT_DEVNET_ETH_ADDR: &str = "0xA15BB66138824a1c7167f5E85b957d04Dd34E468"; - -// Aligned related constants - -/// Address of the Aligned Proof Generator -pub const PROOF_GENERATOR_ADDR: &str = "0x66f9664f97F2b50F62D13eA064982f936dE76657"; -/// Address of the Aligned Service Manager on Devnet -pub const ALIGNED_SM_DEVNET_ETH_ADDR: &str = "0x851356ae760d987E095750cCeb3bC6014560891C"; diff --git a/core/src/utils/env.rs b/core/src/utils/env.rs index 94ca9e48c..d2ef56185 100644 --- a/core/src/utils/env.rs +++ b/core/src/utils/env.rs @@ -1,17 +1,13 @@ use aligned_sdk::common::types::Network; extern crate dotenv; use dotenv::dotenv; -use log::debug; - -use super::constants::{ - ANVIL_BATCHER_ADDR, ANVIL_BATCHER_ETH_ADDR, ANVIL_ETH_RPC_URL, PROOF_GENERATOR_ADDR, -}; +use log::info; /// Struct that is created by reading environment variables or, for some fields, from defined constants if the /// corresponding environment variable is not defined. /// -/// - `rpc_url`: Mina node RPC URL to get the Mina state -/// - `network`: Enum variant to specify the Ethereum network to update the Mina state +/// - `mina_rpc_url`: Mina node RPC URL to get the Mina state +/// - `eth_network`: Enum variant to specify the Ethereum network to update the Mina state /// - `state_settlement_addr`: Address of the Mina State Settlement Example Contract /// - `account_validation_addr`: Address of the Mina Account Validation Example Contract /// - `batcher_addr`: Address of the Aligned Batcher Service @@ -22,9 +18,15 @@ use super::constants::{ /// `None` if `private_key` is defined. /// - `private_key`: Private key of the Ethereum wallet used to sign Ethereum transactions. /// `None` if `keystore_path` is defined. +/// - `sudoku_zkapp_addr`: Address of the Sudoku zkApp +/// - `sudoku_token_id`: Token ID of the Sudoku zkApp +/// - `sudoku_validity_devnet_addr`: Address of the Sudoku validity contract on Devnet +/// - `nori_token_storage_zkapp_addr`: Address of the NoriTokenStorage zkApp +/// - `nori_token_controller_token_id`: Token ID of the NoriTokenController zkApp +/// - `nori_token_bridge_eth_addr`: Address of the NoriTokenBridge contract on Devnet pub struct EnvironmentVariables { - pub rpc_url: String, - pub network: Network, + pub mina_rpc_url: String, + pub eth_network: Network, pub state_settlement_addr: Option, pub account_validation_addr: Option, pub batcher_addr: String, @@ -33,6 +35,11 @@ pub struct EnvironmentVariables { pub proof_generator_addr: String, pub keystore_path: Option, pub private_key: Option, + pub nori_token_bridge_eth_addr: String, + pub nori_storage_zkapp_acct_vk: String, + pub nori_storage_zkapp_token_id: String, + pub batcher_fee_estimation_type: String, + pub batcher_max_fee: Option, } fn load_var_or(key: &str, default: &str, network: &Network) -> Result { @@ -40,7 +47,7 @@ fn load_var_or(key: &str, default: &str, network: &Network) -> Result Ok(value), Err(_) if matches!(network, Network::Devnet) => { - debug!("Using default {} for devnet: {}", key, default); + info!("Using default {} for devnet: {}", key, default); Ok(default.to_string()) } Err(err) => Err(format!( @@ -57,27 +64,31 @@ impl EnvironmentVariables { /// Returns `Err` if: /// /// - `MINA_RPC_URL` or `ETH_CHAIN` environemnt variables are not defined - /// - `ETH_CHAIN` is not set to a valid Ethereum network (`"devnet"` or `"holesky"`) + /// - `ETH_CHAIN` is not set to a valid Ethereum network (`"devnet"` or `"hoodi"`) /// - Both `KEYSTORE_PATH` and `PRIVATE_KEY` are set pub fn new() -> Result { - dotenv().map_err(|err| format!("Couldn't load .env file: {}", err))?; + load_env(); - let rpc_url = std::env::var("MINA_RPC_URL") + let mina_rpc_url = std::env::var("MINA_RPC_URL") .map_err(|err| format!("Couldn't get MINA_RPC_URL env. variable: {err}"))?; - let network = match std::env::var("ETH_CHAIN") + let eth_network = match std::env::var("ETH_CHAIN") .map_err(|err| format!("Couldn't get ETH_CHAIN env. variable: {err}"))? .as_str() { "devnet" => { - debug!("Selected Anvil devnet chain."); + info!("Selected Anvil devnet chain."); Network::Devnet } - "holesky" => { - debug!("Selected Holesky chain."); - Network::Holesky + "hoodi" => { + info!("Selected hoodi chain."); + Network::Hoodi + } + "sepolia" => { + info!("Selected sepolia chain."); + Network::Sepolia } _ => return Err( - "Unrecognized chain, possible values for ETH_CHAIN are \"devnet\" and \"holesky\"." + "Unrecognized chain, possible values for ETH_CHAIN are \"devnet\", \"sepolia\" and \"hoodi\"." .to_owned(), ), }; @@ -85,11 +96,18 @@ impl EnvironmentVariables { let state_settlement_addr = std::env::var("STATE_SETTLEMENT_ETH_ADDR").ok(); let account_validation_addr = std::env::var("ACCOUNT_VALIDATION_ETH_ADDR").ok(); - let batcher_addr = load_var_or("BATCHER_ADDR", ANVIL_BATCHER_ADDR, &network)?; - let batcher_eth_addr = load_var_or("BATCHER_ETH_ADDR", ANVIL_BATCHER_ETH_ADDR, &network)?; - let eth_rpc_url = load_var_or("ETH_RPC_URL", ANVIL_ETH_RPC_URL, &network)?; - let proof_generator_addr = - load_var_or("PROOF_GENERATOR_ADDR", PROOF_GENERATOR_ADDR, &network)?; + let batcher_addr = std::env::var("BATCHER_ADDR").map_err(|err| { + format!("Couldn't get BATCHER_ADDR env. variable: {err}") + })?; + let batcher_eth_addr = std::env::var("BATCHER_PAYEMENT_SERVICE_ADDRESS").map_err(|err| { + format!("Couldn't get BATCHER_PAYEMENT_SERVICE_ADDRESS env. variable: {err}") + })?; + let eth_rpc_url = std::env::var("ETH_RPC_URL").map_err(|err| { + format!("Couldn't get ETH_RPC_URL env. variable: {err}") + })?; + let proof_generator_addr = std::env::var("PROOF_GENERATOR_ADDR").map_err(|err| { + format!("Couldn't get PROOF_GENERATOR_ADDR env. variable: {err}") + })?; let keystore_path = std::env::var("KEYSTORE_PATH").ok(); let private_key = std::env::var("PRIVATE_KEY").ok(); @@ -99,11 +117,36 @@ impl EnvironmentVariables { "Both keystore and private key env. variables are defined. Choose only one." .to_string(), ); + } else if keystore_path.is_none() && private_key.is_none() { + return Err("Neither keystore nor private key env. variables are defined.".to_string()); + } + + let nori_token_bridge_eth_addr = + std::env::var("NORI_TOKEN_BRIDGE_ETH_ADDRESS").map_err(|err| { + format!("Couldn't get NORI_TOKEN_BRIDGE_ETH_ADDRESS env. variable: {err}") + })?; + + let nori_storage_zkapp_acct_vk = + std::env::var("NORI_STORAGE_ZKAPP_ACCT_VK_HASH_KECCAK256").map_err(|err| { + format!("Couldn't get NORI_STORAGE_ZKAPP_ACCT_VK_HASH_KECCAK256 env. variable: {err}") + })?; + let nori_storage_zkapp_token_id = + std::env::var("NORI_STORAGE_ZKAPP_TOKEN_ID").map_err(|err| { + format!("Couldn't get NORI_STORAGE_ZKAPP_TOKEN_ID env. variable: {err}") + })?; + + let batcher_fee_estimation_type = match std::env::var("BATCHER_FEE_ESTM_TYPE") { + Ok(value) => value, + Err(_) => "0".to_string(), + }; + let batcher_max_fee = std::env::var("BATCHER_MAX_FEE").ok(); + if batcher_fee_estimation_type == "2" && batcher_max_fee.is_none() { + panic!("BATCHER_MAX_FEE is not set when BATCHER_FEE_ESTM_TYPE is 2"); } Ok(EnvironmentVariables { - rpc_url, - network, + mina_rpc_url, + eth_network, state_settlement_addr, account_validation_addr, batcher_addr, @@ -112,6 +155,24 @@ impl EnvironmentVariables { proof_generator_addr, keystore_path, private_key, + nori_token_bridge_eth_addr, + nori_storage_zkapp_acct_vk, + nori_storage_zkapp_token_id, + batcher_fee_estimation_type, + batcher_max_fee, }) } } + +fn load_env() { + // load .env + dotenv() + .map_err(|err| format!("Couldn't load .env file: {}", err)) + .unwrap(); + + let app_env = std::env::var("ETH_CHAIN").unwrap_or_else(|_| "devnet".to_string()); + let env_file = format!(".env.{}", app_env); + + // then load the corresponding environment file + dotenv::from_filename(&env_file).expect(&format!("Failed to load {}", env_file)); +} diff --git a/core/src/utils/mod.rs b/core/src/utils/mod.rs index 6e24fa037..8b27a1601 100644 --- a/core/src/utils/mod.rs +++ b/core/src/utils/mod.rs @@ -1,4 +1,4 @@ pub mod constants; pub mod env; +pub mod vk_hash; pub mod wallet; -pub mod wallet_alloy; diff --git a/core/src/utils/vk_hash.rs b/core/src/utils/vk_hash.rs new file mode 100644 index 000000000..539d6a53a --- /dev/null +++ b/core/src/utils/vk_hash.rs @@ -0,0 +1,71 @@ +//! Verification key hash computation matching NoriTokenBridge.sol: +//! uint256(keccak256(abi.encode(account.zkapp.verificationKey))) +//! +//! Use to verify off-chain that a given Account's zkApp verification key +//! matches the contract's accepted value (e.g. `noriStorageZkappAcctVk`). + +use alloy_sol_types::{SolType, SolValue}; +use sha3::{Digest, Keccak256}; + +use crate::{mina, sol::account::MinaAccountValidationExample}; + +/// Computes the same verification key hash as the contract: keccak256(abi.encode(verificationKey)). +/// +/// # Arguments +/// * `encoded_account` - ABI-encoded Account bytes (same as `encodedAccount` in the contract, +/// or `pubInput[40..]` when pubInput is ledger_hash (32) + 8 bytes + encoded Account). +/// +/// # Returns +/// The 32-byte hash, or an error if decoding fails. +pub fn vk_hash_from_encoded_zkapp_acct( + encoded_account: &[u8], +) -> Result<[u8; 32], String> { + let account = + ::abi_decode(encoded_account, false) + .map_err(|e| format!("ABI decode Account failed: {}", e))?; + + let vk_encoded = account.zkapp.verificationKey.abi_encode(); + let hash = Keccak256::digest(&vk_encoded); + Ok(hash.into()) +} + +/// Same as `vk_hash_from_encoded_zkapp_acct` but returns the hash as a hex string with `0x` prefix. +pub fn vk_hash_hex_from_encoded_zkapp_acct( + encoded_account: &[u8], +) -> Result { + let hash = vk_hash_from_encoded_zkapp_acct(encoded_account)?; + Ok(format!("0x{}", hex::encode(hash))) +} + +/// Fetches the Mina account from the node and computes its zkApp verification key hash. +/// +/// Same encoding path as `get_mina_proof_of_account`: query account → convert to Solidity Account → abi_encode → hash. +/// +/// # Arguments +/// * `rpc_url` - Mina GraphQL RPC URL +/// * `state_hash` - State hash to query the account at (e.g. tip state hash) +/// * `public_key` - Mina account public key (address) +/// * `token_id` - Token ID for the account +pub async fn vk_hash_from_mina_account( + rpc_url: &str, + state_hash: &str, + public_key: &str, + token_id: &str, +) -> Result<[u8; 32], String> { + println!("Querying account from Mina RPC"); + let (account, _ledger_hash, _merkle_path) = + mina::query_account(rpc_url, state_hash, public_key, token_id).await?; + let encoded_account = MinaAccountValidationExample::Account::try_from(&account)?.abi_encode(); + vk_hash_from_encoded_zkapp_acct(&encoded_account) +} + +/// Same as `vk_hash_from_mina_account` but returns the hash as a hex string with `0x` prefix. +pub async fn vk_hash_hex_from_mina_account( + rpc_url: &str, + state_hash: &str, + public_key: &str, + token_id: &str, +) -> Result { + let hash = vk_hash_from_mina_account(rpc_url, state_hash, public_key, token_id).await?; + Ok(format!("0x{}", hex::encode(hash))) +} diff --git a/core/src/utils/wallet.rs b/core/src/utils/wallet.rs index 92f0f6020..9a61f62e9 100644 --- a/core/src/utils/wallet.rs +++ b/core/src/utils/wallet.rs @@ -1,18 +1,20 @@ -use std::str::FromStr; - use aligned_sdk::common::types::Network; -use ethers::{ - prelude::k256::ecdsa::SigningKey, - signers::{LocalWallet, Signer, Wallet}, +use alloy::{ + network::EthereumWallet, + signers::local::{LocalSigner, PrivateKeySigner}, }; - use log::info; use zeroize::Zeroizing; -use crate::utils::constants::{ANVIL_CHAIN_ID, ANVIL_PRIVATE_KEY, HOLESKY_CHAIN_ID}; +#[derive(Clone)] +pub struct WalletData { + pub wallet: EthereumWallet, + pub private_key_bytes: Vec, +} -/// Returns the `Wallet` struct defined in the `ethers` crate. -/// This wallet is used to sign Ethereum transactions (e.g.: Aligned batches or example contract function calls). +/// Returns the `Wallet` struct defined in the `alloy` crate and the private key bytes. +/// This wallet is used to sign Ethereum example contract deployments. +/// The private key bytes are used to reconstruct the wallet in `ethers` for aligned-sdk compatibility. /// /// If `keystore_path` is defined it stops execution, prompts on the TTY and then reads the password from TTY. /// @@ -25,7 +27,7 @@ pub fn get_wallet( network: &Network, keystore_path: Option<&str>, private_key: Option<&str>, -) -> Result, String> { +) -> Result { if keystore_path.is_some() && private_key.is_some() { return Err( "Both keystore and private key env. variables are defined. Choose only one." @@ -33,32 +35,31 @@ pub fn get_wallet( ); } - if matches!(network, Network::Holesky) { - if let Some(keystore_path) = keystore_path { - info!("Using keystore for Holesky wallet"); - let password = Zeroizing::new( - rpassword::prompt_password("Please enter your keystore password:") - .map_err(|err| err.to_string())?, - ); - Wallet::decrypt_keystore(keystore_path, password).map_err(|err| err.to_string()) - } else if let Some(private_key) = private_key { - info!("Using private key for Holesky wallet"); - let wallet = private_key - .parse::() - .map_err(|err| err.to_string())?; - - Ok(wallet.with_chain_id(HOLESKY_CHAIN_ID)) - } else { - return Err( - "Holesky chain was selected but couldn't find KEYSTORE_PATH or PRIVATE_KEY." - .to_string(), - ); - } + if let Some(keystore_path) = keystore_path { + let password = Zeroizing::new( + rpassword::prompt_password("Please enter your keystore password:") + .map_err(|err| err.to_string())?, + ); + let signer = LocalSigner::decrypt_keystore(keystore_path, password) + .map_err(|err| err.to_string())?; + let bytes = signer.to_bytes().to_vec(); + Ok(WalletData { + wallet: EthereumWallet::new(signer), + private_key_bytes: bytes, + }) + } else if let Some(private_key) = private_key { + let signer: PrivateKeySigner = private_key + .parse() + .map_err(|_| "Failed to get signer".to_string())?; + let bytes = signer.to_bytes().to_vec(); + Ok(WalletData { + wallet: EthereumWallet::new(signer), + private_key_bytes: bytes, + }) } else { - info!("Using Anvil wallet 9"); - let wallet = LocalWallet::from_str(ANVIL_PRIVATE_KEY) - .map_err(|err| format!("Failed to create Anvil wallet: {}", err))?; - - Ok(wallet.with_chain_id(ANVIL_CHAIN_ID)) + return Err( + "couldn't find KEYSTORE_PATH or PRIVATE_KEY." + .to_string(), + ); } } diff --git a/core/src/utils/wallet_alloy.rs b/core/src/utils/wallet_alloy.rs deleted file mode 100644 index 9dee0c112..000000000 --- a/core/src/utils/wallet_alloy.rs +++ /dev/null @@ -1,62 +0,0 @@ -use aligned_sdk::common::types::Network; -use alloy::{ - network::EthereumWallet, - signers::local::{LocalSigner, PrivateKeySigner}, -}; -use log::info; -use zeroize::Zeroizing; - -use crate::utils::constants::ANVIL_PRIVATE_KEY; - -/// Returns the `Wallet` struct defined in the `alloy` crate. -/// This wallet is used to sign Ethereum example contract deployments. -/// -/// If `keystore_path` is defined it stops execution, prompts on the TTY and then reads the password from TTY. -/// -/// Returns `Err` if: -/// - `keystore_path` is not a valid path to a keystore -/// - `keystore_path` is defined and the password read from the TTY is not valid -/// - `private_key` is not a valid Ethereum private key -/// - Both `keystore_path` and `private_key` are defined -pub fn get_wallet( - network: &Network, - keystore_path: Option<&str>, - private_key: Option<&str>, -) -> Result { - if keystore_path.is_some() && private_key.is_some() { - return Err( - "Both keystore and private key env. variables are defined. Choose only one." - .to_string(), - ); - } - - if matches!(network, Network::Holesky) { - if let Some(keystore_path) = keystore_path { - info!("Using keystore for Holesky wallet"); - let password = Zeroizing::new( - rpassword::prompt_password("Please enter your keystore password:") - .map_err(|err| err.to_string())?, - ); - let signer = LocalSigner::decrypt_keystore(keystore_path, password) - .map_err(|err| err.to_string())?; - Ok(EthereumWallet::new(signer)) - } else if let Some(private_key) = private_key { - info!("Using private key for Holesky wallet"); - let signer: PrivateKeySigner = private_key - .parse() - .map_err(|_| "Failed to get Anvil signer".to_string())?; - Ok(EthereumWallet::new(signer)) - } else { - return Err( - "Holesky chain was selected but couldn't find KEYSTORE_PATH or PRIVATE_KEY." - .to_string(), - ); - } - } else { - info!("Using Anvil wallet 9"); - let signer: PrivateKeySigner = ANVIL_PRIVATE_KEY - .parse() - .map_err(|_| "Failed to get Anvil signer".to_string())?; - Ok(EthereumWallet::new(signer)) - } -} diff --git a/example/app/Cargo.lock b/example/app/Cargo.lock deleted file mode 100644 index 672265848..000000000 --- a/example/app/Cargo.lock +++ /dev/null @@ -1,7091 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 4 - -[[package]] -name = "Inflector" -version = "0.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" -dependencies = [ - "lazy_static", - "regex", -] - -[[package]] -name = "addr2line" -version = "0.24.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" -dependencies = [ - "gimli", -] - -[[package]] -name = "adler2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" - -[[package]] -name = "aes" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" -dependencies = [ - "cfg-if", - "cipher", - "cpufeatures", -] - -[[package]] -name = "ahash" -version = "0.7.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" -dependencies = [ - "getrandom", - "once_cell", - "version_check", -] - -[[package]] -name = "ahash" -version = "0.8.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" -dependencies = [ - "cfg-if", - "once_cell", - "version_check", - "zerocopy", -] - -[[package]] -name = "aho-corasick" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" -dependencies = [ - "memchr", -] - -[[package]] -name = "aligned-sdk" -version = "0.1.0" -source = "git+https://github.com/yetanotherco/aligned_layer.git?rev=11d1801a86bedb375c8ccdd0d77074a7134a7427#11d1801a86bedb375c8ccdd0d77074a7134a7427" -dependencies = [ - "ciborium", - "dialoguer", - "ethers", - "futures-util", - "hex", - "lambdaworks-crypto", - "log", - "reqwest 0.12.8", - "serde", - "serde_bytes", - "serde_json", - "serde_repr", - "sha3", - "tokio", - "tokio-tungstenite 0.23.1", - "url", -] - -[[package]] -name = "allocator-api2" -version = "0.2.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" - -[[package]] -name = "alloy" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8367891bf380210abb0d6aa30c5f85a9080cb4a066c4d5c5acadad630823751b" -dependencies = [ - "alloy-consensus", - "alloy-contract", - "alloy-core", - "alloy-eips", - "alloy-genesis", - "alloy-network", - "alloy-provider", - "alloy-pubsub", - "alloy-rpc-client", - "alloy-rpc-types", - "alloy-serde", - "alloy-signer", - "alloy-signer-local", - "alloy-transport", - "alloy-transport-http", - "alloy-transport-ipc", - "alloy-transport-ws", -] - -[[package]] -name = "alloy-chains" -version = "0.1.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4932d790c723181807738cf1ac68198ab581cd699545b155601332541ee47bd" -dependencies = [ - "alloy-primitives", - "num_enum", - "strum 0.26.3", -] - -[[package]] -name = "alloy-consensus" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "629b62e38d471cc15fea534eb7283d2f8a4e8bdb1811bcc5d66dda6cfce6fae1" -dependencies = [ - "alloy-eips", - "alloy-primitives", - "alloy-rlp", - "alloy-serde", - "c-kzg", - "serde", -] - -[[package]] -name = "alloy-contract" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eefe64fd344cffa9cf9e3435ec4e93e6e9c3481bc37269af988bf497faf4a6a" -dependencies = [ - "alloy-dyn-abi", - "alloy-json-abi", - "alloy-network", - "alloy-network-primitives", - "alloy-primitives", - "alloy-provider", - "alloy-pubsub", - "alloy-rpc-types-eth", - "alloy-sol-types", - "alloy-transport", - "futures", - "futures-util", - "thiserror", -] - -[[package]] -name = "alloy-core" -version = "0.8.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cce174ca699ddee3bfb2ec1fbd99ad7efd05eca20c5c888d8320db41f7e8f04" -dependencies = [ - "alloy-dyn-abi", - "alloy-json-abi", - "alloy-primitives", - "alloy-rlp", - "alloy-sol-types", -] - -[[package]] -name = "alloy-dyn-abi" -version = "0.8.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5647fce5a168f9630f935bf7821c4207b1755184edaeba783cb4e11d35058484" -dependencies = [ - "alloy-json-abi", - "alloy-primitives", - "alloy-sol-type-parser", - "alloy-sol-types", - "const-hex", - "itoa", - "serde", - "serde_json", - "winnow", -] - -[[package]] -name = "alloy-eip2930" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0069cf0642457f87a01a014f6dc29d5d893cd4fd8fddf0c3cdfad1bb3ebafc41" -dependencies = [ - "alloy-primitives", - "alloy-rlp", - "serde", -] - -[[package]] -name = "alloy-eip7702" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea59dc42102bc9a1905dc57901edc6dd48b9f38115df86c7d252acba70d71d04" -dependencies = [ - "alloy-primitives", - "alloy-rlp", - "k256", - "serde", -] - -[[package]] -name = "alloy-eips" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f923dd5fca5f67a43d81ed3ebad0880bd41f6dd0ada930030353ac356c54cd0f" -dependencies = [ - "alloy-eip2930", - "alloy-eip7702", - "alloy-primitives", - "alloy-rlp", - "alloy-serde", - "c-kzg", - "derive_more 1.0.0", - "once_cell", - "serde", - "sha2 0.10.8", -] - -[[package]] -name = "alloy-genesis" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a7a18afb0b318616b6b2b0e2e7ac5529d32a966c673b48091c9919e284e6aca" -dependencies = [ - "alloy-primitives", - "alloy-serde", - "serde", -] - -[[package]] -name = "alloy-json-abi" -version = "0.8.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b5671117c38b1c2306891f97ad3828d85487087f54ebe2c7591a055ea5bcea7" -dependencies = [ - "alloy-primitives", - "alloy-sol-type-parser", - "serde", - "serde_json", -] - -[[package]] -name = "alloy-json-rpc" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3c717b5298fad078cd3a418335b266eba91b511383ca9bd497f742d5975d5ab" -dependencies = [ - "alloy-primitives", - "alloy-sol-types", - "serde", - "serde_json", - "thiserror", - "tracing", -] - -[[package]] -name = "alloy-network" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb3705ce7d8602132bcf5ac7a1dd293a42adc2f183abf5907c30ac535ceca049" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-json-rpc", - "alloy-network-primitives", - "alloy-primitives", - "alloy-rpc-types-eth", - "alloy-serde", - "alloy-signer", - "alloy-sol-types", - "async-trait", - "auto_impl", - "futures-utils-wasm", - "thiserror", -] - -[[package]] -name = "alloy-network-primitives" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94ad40869867ed2d9cd3842b1e800889e5b49e6b92da346e93862b4a741bedf3" -dependencies = [ - "alloy-eips", - "alloy-primitives", - "alloy-serde", - "serde", -] - -[[package]] -name = "alloy-primitives" -version = "0.8.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c71738eb20c42c5fb149571e76536a0f309d142f3957c28791662b96baf77a3d" -dependencies = [ - "alloy-rlp", - "bytes", - "cfg-if", - "const-hex", - "derive_more 1.0.0", - "foldhash", - "hashbrown 0.15.0", - "hex-literal", - "indexmap 2.6.0", - "itoa", - "k256", - "keccak-asm", - "paste", - "proptest", - "rand", - "ruint", - "rustc-hash", - "serde", - "sha3", - "tiny-keccak", -] - -[[package]] -name = "alloy-provider" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "927f708dd457ed63420400ee5f06945df9632d5d101851952056840426a10dc5" -dependencies = [ - "alloy-chains", - "alloy-consensus", - "alloy-eips", - "alloy-json-rpc", - "alloy-network", - "alloy-network-primitives", - "alloy-primitives", - "alloy-pubsub", - "alloy-rpc-client", - "alloy-rpc-types-eth", - "alloy-transport", - "alloy-transport-http", - "alloy-transport-ipc", - "alloy-transport-ws", - "async-stream", - "async-trait", - "auto_impl", - "dashmap", - "futures", - "futures-utils-wasm", - "lru", - "pin-project", - "reqwest 0.12.8", - "serde", - "serde_json", - "thiserror", - "tokio", - "tracing", - "url", -] - -[[package]] -name = "alloy-pubsub" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d05f63677e210d758cd5d6d1ce10f20c980c3560ccfbe79ba1997791862a04f" -dependencies = [ - "alloy-json-rpc", - "alloy-primitives", - "alloy-transport", - "bimap", - "futures", - "serde", - "serde_json", - "tokio", - "tokio-stream", - "tower", - "tracing", -] - -[[package]] -name = "alloy-rlp" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26154390b1d205a4a7ac7352aa2eb4f81f391399d4e2f546fb81a2f8bb383f62" -dependencies = [ - "alloy-rlp-derive", - "arrayvec", - "bytes", -] - -[[package]] -name = "alloy-rlp-derive" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d0f2d905ebd295e7effec65e5f6868d153936130ae718352771de3e7d03c75c" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", -] - -[[package]] -name = "alloy-rpc-client" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d82952dca71173813d4e5733e2c986d8b04aea9e0f3b0a576664c232ad050a5" -dependencies = [ - "alloy-json-rpc", - "alloy-primitives", - "alloy-pubsub", - "alloy-transport", - "alloy-transport-http", - "alloy-transport-ipc", - "alloy-transport-ws", - "futures", - "pin-project", - "reqwest 0.12.8", - "serde", - "serde_json", - "tokio", - "tokio-stream", - "tower", - "tracing", - "url", -] - -[[package]] -name = "alloy-rpc-types" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64333d639f2a0cf73491813c629a405744e16343a4bc5640931be707c345ecc5" -dependencies = [ - "alloy-rpc-types-engine", - "alloy-rpc-types-eth", - "alloy-serde", - "serde", -] - -[[package]] -name = "alloy-rpc-types-engine" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1464c4dd646e1bdfde86ae65ce5ba168dbb29180b478011fe87117ae46b1629b" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-primitives", - "alloy-rlp", - "derive_more 1.0.0", -] - -[[package]] -name = "alloy-rpc-types-eth" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83aa984386deda02482660aa31cb8ca1e63d533f1c31a52d7d181ac5ec68e9b8" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-network-primitives", - "alloy-primitives", - "alloy-rlp", - "alloy-serde", - "alloy-sol-types", - "cfg-if", - "derive_more 1.0.0", - "hashbrown 0.14.5", - "itertools 0.13.0", - "serde", - "serde_json", -] - -[[package]] -name = "alloy-serde" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "731f75ec5d383107fd745d781619bd9cedf145836c51ecb991623d41278e71fa" -dependencies = [ - "alloy-primitives", - "serde", - "serde_json", -] - -[[package]] -name = "alloy-signer" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "307324cca94354cd654d6713629f0383ec037e1ff9e3e3d547212471209860c0" -dependencies = [ - "alloy-primitives", - "async-trait", - "auto_impl", - "elliptic-curve", - "k256", - "thiserror", -] - -[[package]] -name = "alloy-signer-local" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fabe917ab1778e760b4701628d1cae8e028ee9d52ac6307de4e1e9286ab6b5f" -dependencies = [ - "alloy-consensus", - "alloy-network", - "alloy-primitives", - "alloy-signer", - "async-trait", - "elliptic-curve", - "eth-keystore", - "k256", - "rand", - "thiserror", -] - -[[package]] -name = "alloy-sol-macro" -version = "0.8.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0900b83f4ee1f45c640ceee596afbc118051921b9438fdb5a3175c1a7e05f8b" -dependencies = [ - "alloy-sol-macro-expander", - "alloy-sol-macro-input", - "proc-macro-error2", - "proc-macro2", - "quote", - "syn 2.0.98", -] - -[[package]] -name = "alloy-sol-macro-expander" -version = "0.8.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a41b1e78dde06b5e12e6702fa8c1d30621bf07728ba75b801fb801c9c6a0ba10" -dependencies = [ - "alloy-json-abi", - "alloy-sol-macro-input", - "const-hex", - "heck 0.5.0", - "indexmap 2.6.0", - "proc-macro-error2", - "proc-macro2", - "quote", - "syn 2.0.98", - "syn-solidity", - "tiny-keccak", -] - -[[package]] -name = "alloy-sol-macro-input" -version = "0.8.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91dc311a561a306664393407b88d3e53ae58581624128afd8a15faa5de3627dc" -dependencies = [ - "alloy-json-abi", - "const-hex", - "dunce", - "heck 0.5.0", - "proc-macro2", - "quote", - "serde_json", - "syn 2.0.98", - "syn-solidity", -] - -[[package]] -name = "alloy-sol-type-parser" -version = "0.8.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45d1fbee9e698f3ba176b6e7a145f4aefe6d2b746b611e8bb246fe11a0e9f6c4" -dependencies = [ - "serde", - "winnow", -] - -[[package]] -name = "alloy-sol-types" -version = "0.8.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "086f41bc6ebcd8cb15f38ba20e47be38dd03692149681ce8061c35d960dbf850" -dependencies = [ - "alloy-json-abi", - "alloy-primitives", - "alloy-sol-macro", - "const-hex", - "serde", -] - -[[package]] -name = "alloy-transport" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33616b2edf7454302a1d48084db185e52c309f73f6c10be99b0fe39354b3f1e9" -dependencies = [ - "alloy-json-rpc", - "base64 0.22.1", - "futures-util", - "futures-utils-wasm", - "serde", - "serde_json", - "thiserror", - "tokio", - "tower", - "tracing", - "url", -] - -[[package]] -name = "alloy-transport-http" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a944f5310c690b62bbb3e7e5ce34527cbd36b2d18532a797af123271ce595a49" -dependencies = [ - "alloy-json-rpc", - "alloy-transport", - "reqwest 0.12.8", - "serde_json", - "tower", - "tracing", - "url", -] - -[[package]] -name = "alloy-transport-ipc" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09fd8491249f74d16ec979b1f5672377b12ebb818e6056478ffa386954dbd350" -dependencies = [ - "alloy-json-rpc", - "alloy-pubsub", - "alloy-transport", - "bytes", - "futures", - "interprocess", - "pin-project", - "serde_json", - "tokio", - "tokio-util", - "tracing", -] - -[[package]] -name = "alloy-transport-ws" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9704761f6297fe482276bee7f77a93cb42bd541c2bd6c1c560b6f3a9ece672e" -dependencies = [ - "alloy-pubsub", - "alloy-transport", - "futures", - "http 1.1.0", - "rustls 0.23.15", - "serde_json", - "tokio", - "tokio-tungstenite 0.23.1", - "tracing", - "ws_stream_wasm", -] - -[[package]] -name = "android-tzdata" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" - -[[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.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" -dependencies = [ - "anstyle", - "anstyle-parse", - "anstyle-query", - "anstyle-wincon", - "colorchoice", - "is_terminal_polyfill", - "utf8parse", -] - -[[package]] -name = "anstyle" -version = "1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" - -[[package]] -name = "anstyle-parse" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" -dependencies = [ - "utf8parse", -] - -[[package]] -name = "anstyle-query" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" -dependencies = [ - "windows-sys 0.52.0", -] - -[[package]] -name = "anstyle-wincon" -version = "3.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" -dependencies = [ - "anstyle", - "windows-sys 0.52.0", -] - -[[package]] -name = "anyhow" -version = "1.0.90" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37bf3594c4c988a53154954629820791dde498571819ae4ca50ca811e060cc95" - -[[package]] -name = "app" -version = "0.1.0" -dependencies = [ - "aligned-sdk", - "alloy", - "alloy-contract", - "alloy-sol-types", - "clap", - "env_logger", - "log", - "mina_bridge_core", - "reqwest 0.11.27", - "tokio", -] - -[[package]] -name = "ark-ec" -version = "0.3.0" -source = "git+https://github.com/lambdaclass/openmina_algebra?rev=017531e7aaa15a2c856532b0843876e371b01122#017531e7aaa15a2c856532b0843876e371b01122" -dependencies = [ - "ark-ff 0.3.0", - "ark-serialize 0.3.0", - "ark-std 0.3.0", - "derivative", - "num-traits", - "rayon", - "zeroize", -] - -[[package]] -name = "ark-ff" -version = "0.3.0" -source = "git+https://github.com/lambdaclass/openmina_algebra?rev=017531e7aaa15a2c856532b0843876e371b01122#017531e7aaa15a2c856532b0843876e371b01122" -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", - "num-traits", - "paste", - "rayon", - "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", - "num-traits", - "paste", - "rustc_version 0.4.1", - "zeroize", -] - -[[package]] -name = "ark-ff-asm" -version = "0.3.0" -source = "git+https://github.com/lambdaclass/openmina_algebra?rev=017531e7aaa15a2c856532b0843876e371b01122#017531e7aaa15a2c856532b0843876e371b01122" -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-macros" -version = "0.3.0" -source = "git+https://github.com/lambdaclass/openmina_algebra?rev=017531e7aaa15a2c856532b0843876e371b01122#017531e7aaa15a2c856532b0843876e371b01122" -dependencies = [ - "num-bigint", - "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", - "num-traits", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-poly" -version = "0.3.0" -source = "git+https://github.com/lambdaclass/openmina_algebra?rev=017531e7aaa15a2c856532b0843876e371b01122#017531e7aaa15a2c856532b0843876e371b01122" -dependencies = [ - "ark-ff 0.3.0", - "ark-serialize 0.3.0", - "ark-std 0.3.0", - "derivative", - "hashbrown 0.11.2", - "rayon", -] - -[[package]] -name = "ark-serialize" -version = "0.3.0" -source = "git+https://github.com/lambdaclass/openmina_algebra?rev=017531e7aaa15a2c856532b0843876e371b01122#017531e7aaa15a2c856532b0843876e371b01122" -dependencies = [ - "ark-serialize-derive", - "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", -] - -[[package]] -name = "ark-serialize-derive" -version = "0.3.0" -source = "git+https://github.com/lambdaclass/openmina_algebra?rev=017531e7aaa15a2c856532b0843876e371b01122#017531e7aaa15a2c856532b0843876e371b01122" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-std" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" -dependencies = [ - "num-traits", - "rand", - "rayon", -] - -[[package]] -name = "ark-std" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" -dependencies = [ - "num-traits", - "rand", -] - -[[package]] -name = "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" - -[[package]] -name = "ascii" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" - -[[package]] -name = "ascii-canvas" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8824ecca2e851cec16968d54a01dd372ef8f95b244fb84b84e70128be347c3c6" -dependencies = [ - "term", -] - -[[package]] -name = "async-channel" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" -dependencies = [ - "concurrent-queue", - "event-listener", - "futures-core", -] - -[[package]] -name = "async-stream" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" -dependencies = [ - "async-stream-impl", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-stream-impl" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", -] - -[[package]] -name = "async-trait" -version = "0.1.83" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", -] - -[[package]] -name = "async_io_stream" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6d7b9decdf35d8908a7e3ef02f64c5e9b1695e230154c0e8de3969142d9b94c" -dependencies = [ - "futures", - "pharos", - "rustc_version 0.4.1", -] - -[[package]] -name = "atomic-polyfill" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cf2bce30dfe09ef0bfaef228b9d414faaf7e563035494d7fe092dba54b300f4" -dependencies = [ - "critical-section", -] - -[[package]] -name = "atomic-waker" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" - -[[package]] -name = "auto_impl" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", -] - -[[package]] -name = "autocfg" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" - -[[package]] -name = "backtrace" -version = "0.3.74" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" -dependencies = [ - "addr2line", - "cfg-if", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", - "windows-targets 0.52.6", -] - -[[package]] -name = "base16ct" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" - -[[package]] -name = "base64" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" - -[[package]] -name = "base64" -version = "0.21.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" - -[[package]] -name = "base64" -version = "0.22.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" - -[[package]] -name = "base64ct" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" - -[[package]] -name = "bcs" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85b6598a2f5d564fb7855dc6b06fd1c38cff5a72bd8b863a4d021938497b440a" -dependencies = [ - "serde", - "thiserror", -] - -[[package]] -name = "bech32" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" - -[[package]] -name = "bimap" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "230c5f1ca6a325a32553f8640d31ac9b49f2411e901e427570154868b46da4f7" - -[[package]] -name = "bincode" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" -dependencies = [ - "serde", -] - -[[package]] -name = "binprot" -version = "0.1.8" -source = "git+https://github.com/lambdaclass/openmina-binprot-rs?rev=2b5a909#2b5a9099a1c5640559d04e39899da301aebc8023" -dependencies = [ - "binprot_derive", - "byteorder", - "md5", -] - -[[package]] -name = "binprot_derive" -version = "0.1.7" -source = "git+https://github.com/lambdaclass/openmina-binprot-rs?rev=2b5a909#2b5a9099a1c5640559d04e39899da301aebc8023" -dependencies = [ - "quote", - "syn 1.0.109", -] - -[[package]] -name = "bit-set" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" -dependencies = [ - "bit-vec", -] - -[[package]] -name = "bit-vec" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bitflags" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" - -[[package]] -name = "bitvec" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" -dependencies = [ - "funty", - "radium", - "tap", - "wyz", -] - -[[package]] -name = "blake2" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" -dependencies = [ - "digest 0.10.7", -] - -[[package]] -name = "blake2b_simd" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23285ad32269793932e830392f2fe2f83e26488fd3ec778883a93c8323735780" -dependencies = [ - "arrayref", - "arrayvec", - "constant_time_eq 0.3.1", -] - -[[package]] -name = "blake2s_simd" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94230421e395b9920d23df13ea5d77a20e1725331f90fbbf6df6040b33f756ae" -dependencies = [ - "arrayref", - "arrayvec", - "constant_time_eq 0.3.1", -] - -[[package]] -name = "blake3" -version = "1.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d82033247fd8e890df8f740e407ad4d038debb9eb1f40533fffb32e7d17dc6f7" -dependencies = [ - "arrayref", - "arrayvec", - "cc", - "cfg-if", - "constant_time_eq 0.3.1", -] - -[[package]] -name = "block-buffer" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" -dependencies = [ - "generic-array", -] - -[[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 = "blst" -version = "0.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4378725facc195f1a538864863f6de233b500a8862747e7f165078a419d5e874" -dependencies = [ - "cc", - "glob", - "threadpool", - "zeroize", -] - -[[package]] -name = "bs58" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" -dependencies = [ - "sha2 0.9.9", -] - -[[package]] -name = "bs58" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" -dependencies = [ - "sha2 0.10.8", - "tinyvec", -] - -[[package]] -name = "bumpalo" -version = "3.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" - -[[package]] -name = "byte-slice-cast" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" - -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" - -[[package]] -name = "bytes" -version = "1.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" -dependencies = [ - "serde", -] - -[[package]] -name = "bzip2" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" -dependencies = [ - "bzip2-sys", - "libc", -] - -[[package]] -name = "bzip2-sys" -version = "0.1.11+1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" -dependencies = [ - "cc", - "libc", - "pkg-config", -] - -[[package]] -name = "c-kzg" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0307f72feab3300336fb803a57134159f6e20139af1357f36c54cb90d8e8928" -dependencies = [ - "blst", - "cc", - "glob", - "hex", - "libc", - "once_cell", - "serde", -] - -[[package]] -name = "camino" -version = "1.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo-platform" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo_metadata" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" -dependencies = [ - "camino", - "cargo-platform", - "semver 1.0.23", - "serde", - "serde_json", - "thiserror", -] - -[[package]] -name = "cc" -version = "1.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c736e259eea577f443d5c86c304f9f4ae0295c43f3ba05c21f1d66b5f06001af" -dependencies = [ - "jobserver", - "libc", - "shlex", -] - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "chrono" -version = "0.4.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" -dependencies = [ - "android-tzdata", - "iana-time-zone", - "js-sys", - "num-traits", - "serde", - "wasm-bindgen", - "windows-targets 0.52.6", -] - -[[package]] -name = "ciborium" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" -dependencies = [ - "ciborium-io", - "ciborium-ll", - "serde", -] - -[[package]] -name = "ciborium-io" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" - -[[package]] -name = "ciborium-ll" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" -dependencies = [ - "ciborium-io", - "half", -] - -[[package]] -name = "cipher" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" -dependencies = [ - "crypto-common", - "inout", -] - -[[package]] -name = "clap" -version = "4.5.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8" -dependencies = [ - "clap_builder", - "clap_derive", -] - -[[package]] -name = "clap_builder" -version = "4.5.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54" -dependencies = [ - "anstream", - "anstyle", - "clap_lex", - "strsim 0.11.1", -] - -[[package]] -name = "clap_derive" -version = "4.5.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" -dependencies = [ - "heck 0.5.0", - "proc-macro2", - "quote", - "syn 2.0.98", -] - -[[package]] -name = "clap_lex" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" - -[[package]] -name = "cobs" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67ba02a97a2bd10f4b59b25c7973101c79642302776489e030cd13cdab09ed15" - -[[package]] -name = "coins-bip32" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b6be4a5df2098cd811f3194f64ddb96c267606bffd9689ac7b0160097b01ad3" -dependencies = [ - "bs58 0.5.1", - "coins-core", - "digest 0.10.7", - "hmac", - "k256", - "serde", - "sha2 0.10.8", - "thiserror", -] - -[[package]] -name = "coins-bip39" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3db8fba409ce3dc04f7d804074039eb68b960b0829161f8e06c95fea3f122528" -dependencies = [ - "bitvec", - "coins-bip32", - "hmac", - "once_cell", - "pbkdf2 0.12.2", - "rand", - "sha2 0.10.8", - "thiserror", -] - -[[package]] -name = "coins-core" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5286a0843c21f8367f7be734f89df9b822e0321d8bcce8d6e735aadff7d74979" -dependencies = [ - "base64 0.21.7", - "bech32", - "bs58 0.5.1", - "digest 0.10.7", - "generic-array", - "hex", - "ripemd", - "serde", - "serde_derive", - "sha2 0.10.8", - "sha3", - "thiserror", -] - -[[package]] -name = "colorchoice" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" - -[[package]] -name = "combine" -version = "3.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da3da6baa321ec19e1cc41d31bf599f00c783d0517095cdaf0332e3fe8d20680" -dependencies = [ - "ascii", - "byteorder", - "either", - "memchr", - "unreachable", -] - -[[package]] -name = "concurrent-queue" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "console" -version = "0.15.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" -dependencies = [ - "encode_unicode", - "lazy_static", - "libc", - "unicode-width", - "windows-sys 0.52.0", -] - -[[package]] -name = "const-hex" -version = "1.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0121754e84117e65f9d90648ee6aa4882a6e63110307ab73967a4c5e7e69e586" -dependencies = [ - "cfg-if", - "cpufeatures", - "hex", - "proptest", - "serde", -] - -[[package]] -name = "const-oid" -version = "0.9.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" - -[[package]] -name = "constant_time_eq" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" - -[[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.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" - -[[package]] -name = "core-foundation" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" - -[[package]] -name = "core2" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b49ba7ef1ad6107f8824dbe97de947cbaac53c44e7f9756a1fba0d37c1eec505" -dependencies = [ - "memchr", -] - -[[package]] -name = "cpufeatures" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" -dependencies = [ - "libc", -] - -[[package]] -name = "crc32fast" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "critical-section" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" - -[[package]] -name = "crossbeam-deque" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" -dependencies = [ - "crossbeam-epoch", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.9.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" - -[[package]] -name = "crunchy" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" - -[[package]] -name = "crypto-bigint" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" -dependencies = [ - "generic-array", - "rand_core", - "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 = "ctr" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" -dependencies = [ - "cipher", -] - -[[package]] -name = "darling" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" -dependencies = [ - "darling_core 0.13.4", - "darling_macro 0.13.4", -] - -[[package]] -name = "darling" -version = "0.20.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" -dependencies = [ - "darling_core 0.20.10", - "darling_macro 0.20.10", -] - -[[package]] -name = "darling_core" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim 0.10.0", - "syn 1.0.109", -] - -[[package]] -name = "darling_core" -version = "0.20.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim 0.11.1", - "syn 2.0.98", -] - -[[package]] -name = "darling_macro" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" -dependencies = [ - "darling_core 0.13.4", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "darling_macro" -version = "0.20.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" -dependencies = [ - "darling_core 0.20.10", - "quote", - "syn 2.0.98", -] - -[[package]] -name = "dashmap" -version = "6.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" -dependencies = [ - "cfg-if", - "crossbeam-utils", - "hashbrown 0.14.5", - "lock_api", - "once_cell", - "parking_lot_core 0.9.10", -] - -[[package]] -name = "data-encoding" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" - -[[package]] -name = "der" -version = "0.7.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" -dependencies = [ - "const-oid", - "zeroize", -] - -[[package]] -name = "deranged" -version = "0.3.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" -dependencies = [ - "powerfmt", - "serde", -] - -[[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_more" -version = "0.99.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" -dependencies = [ - "convert_case", - "proc-macro2", - "quote", - "rustc_version 0.4.1", - "syn 2.0.98", -] - -[[package]] -name = "derive_more" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" -dependencies = [ - "derive_more-impl", -] - -[[package]] -name = "derive_more-impl" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", - "unicode-xid", -] - -[[package]] -name = "dialoguer" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "658bce805d770f407bc62102fca7c2c64ceef2fbcb2b8bd19d2765ce093980de" -dependencies = [ - "console", - "shell-words", - "tempfile", - "thiserror", - "zeroize", -] - -[[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 0.10.4", - "const-oid", - "crypto-common", - "subtle", -] - -[[package]] -name = "dirs" -version = "5.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" -dependencies = [ - "dirs-sys", -] - -[[package]] -name = "dirs-next" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" -dependencies = [ - "cfg-if", - "dirs-sys-next", -] - -[[package]] -name = "dirs-sys" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" -dependencies = [ - "libc", - "option-ext", - "redox_users", - "windows-sys 0.48.0", -] - -[[package]] -name = "dirs-sys-next" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" -dependencies = [ - "libc", - "redox_users", - "winapi", -] - -[[package]] -name = "disjoint-set" -version = "0.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d102f1a462fdcdddce88d6d46c06c074a2d2749b262230333726b06c52bb7585" - -[[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.98", -] - -[[package]] -name = "doctest-file" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aac81fa3e28d21450aa4d2ac065992ba96a1d7303efbce51a95f4fd175b67562" - -[[package]] -name = "dotenv" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f" - -[[package]] -name = "dunce" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" - -[[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", - "signature", - "spki", -] - -[[package]] -name = "either" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" - -[[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", - "pkcs8", - "rand_core", - "sec1", - "subtle", - "zeroize", -] - -[[package]] -name = "embedded-io" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" - -[[package]] -name = "embedded-io" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" - -[[package]] -name = "ena" -version = "0.14.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d248bdd43ce613d87415282f69b9bb99d947d290b10962dd6c56233312c2ad5" -dependencies = [ - "log", -] - -[[package]] -name = "encode_unicode" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" - -[[package]] -name = "encoding_rs" -version = "0.8.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "enr" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a3d8dc56e02f954cac8eb489772c552c473346fc34f67412bb6244fd647f7e4" -dependencies = [ - "base64 0.21.7", - "bytes", - "hex", - "k256", - "log", - "rand", - "rlp", - "serde", - "sha3", - "zeroize", -] - -[[package]] -name = "enum_dispatch" -version = "0.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa18ce2bc66555b3218614519ac839ddb759a7d6720732f979ef8d13be147ecd" -dependencies = [ - "once_cell", - "proc-macro2", - "quote", - "syn 2.0.98", -] - -[[package]] -name = "env_filter" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f2c92ceda6ceec50f43169f9ee8424fe2db276791afde7b2cd8bc084cb376ab" -dependencies = [ - "log", - "regex", -] - -[[package]] -name = "env_logger" -version = "0.11.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13fa619b91fb2381732789fc5de83b45675e882f66623b7d8cb4f643017018d" -dependencies = [ - "anstream", - "anstyle", - "env_filter", - "humantime", - "log", -] - -[[package]] -name = "equivalent" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" - -[[package]] -name = "errno" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "eth-keystore" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fda3bf123be441da5260717e0661c25a2fd9cb2b2c1d20bf2e05580047158ab" -dependencies = [ - "aes", - "ctr", - "digest 0.10.7", - "hex", - "hmac", - "pbkdf2 0.11.0", - "rand", - "scrypt", - "serde", - "serde_json", - "sha2 0.10.8", - "sha3", - "thiserror", - "uuid 0.8.2", -] - -[[package]] -name = "ethabi" -version = "18.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7413c5f74cc903ea37386a8965a936cbeb334bd270862fdece542c1b2dcbc898" -dependencies = [ - "ethereum-types", - "hex", - "once_cell", - "regex", - "serde", - "serde_json", - "sha3", - "thiserror", - "uint", -] - -[[package]] -name = "ethbloom" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" -dependencies = [ - "crunchy", - "fixed-hash", - "impl-codec", - "impl-rlp", - "impl-serde", - "scale-info", - "tiny-keccak", -] - -[[package]] -name = "ethereum-types" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" -dependencies = [ - "ethbloom", - "fixed-hash", - "impl-codec", - "impl-rlp", - "impl-serde", - "primitive-types", - "scale-info", - "uint", -] - -[[package]] -name = "ethers" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "816841ea989f0c69e459af1cf23a6b0033b19a55424a1ea3a30099becdb8dec0" -dependencies = [ - "ethers-addressbook", - "ethers-contract", - "ethers-core", - "ethers-etherscan", - "ethers-middleware", - "ethers-providers", - "ethers-signers", - "ethers-solc", -] - -[[package]] -name = "ethers-addressbook" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5495afd16b4faa556c3bba1f21b98b4983e53c1755022377051a975c3b021759" -dependencies = [ - "ethers-core", - "once_cell", - "serde", - "serde_json", -] - -[[package]] -name = "ethers-contract" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fceafa3578c836eeb874af87abacfb041f92b4da0a78a5edd042564b8ecdaaa" -dependencies = [ - "const-hex", - "ethers-contract-abigen", - "ethers-contract-derive", - "ethers-core", - "ethers-providers", - "futures-util", - "once_cell", - "pin-project", - "serde", - "serde_json", - "thiserror", -] - -[[package]] -name = "ethers-contract-abigen" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04ba01fbc2331a38c429eb95d4a570166781f14290ef9fdb144278a90b5a739b" -dependencies = [ - "Inflector", - "const-hex", - "dunce", - "ethers-core", - "ethers-etherscan", - "eyre", - "prettyplease", - "proc-macro2", - "quote", - "regex", - "reqwest 0.11.27", - "serde", - "serde_json", - "syn 2.0.98", - "toml 0.8.19", - "walkdir", -] - -[[package]] -name = "ethers-contract-derive" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87689dcabc0051cde10caaade298f9e9093d65f6125c14575db3fd8c669a168f" -dependencies = [ - "Inflector", - "const-hex", - "ethers-contract-abigen", - "ethers-core", - "proc-macro2", - "quote", - "serde_json", - "syn 2.0.98", -] - -[[package]] -name = "ethers-core" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82d80cc6ad30b14a48ab786523af33b37f28a8623fc06afd55324816ef18fb1f" -dependencies = [ - "arrayvec", - "bytes", - "cargo_metadata", - "chrono", - "const-hex", - "elliptic-curve", - "ethabi", - "generic-array", - "k256", - "num_enum", - "once_cell", - "open-fastrlp", - "rand", - "rlp", - "serde", - "serde_json", - "strum 0.26.3", - "syn 2.0.98", - "tempfile", - "thiserror", - "tiny-keccak", - "unicode-xid", -] - -[[package]] -name = "ethers-etherscan" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e79e5973c26d4baf0ce55520bd732314328cabe53193286671b47144145b9649" -dependencies = [ - "chrono", - "ethers-core", - "reqwest 0.11.27", - "semver 1.0.23", - "serde", - "serde_json", - "thiserror", - "tracing", -] - -[[package]] -name = "ethers-middleware" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48f9fdf09aec667c099909d91908d5eaf9be1bd0e2500ba4172c1d28bfaa43de" -dependencies = [ - "async-trait", - "auto_impl", - "ethers-contract", - "ethers-core", - "ethers-etherscan", - "ethers-providers", - "ethers-signers", - "futures-channel", - "futures-locks", - "futures-util", - "instant", - "reqwest 0.11.27", - "serde", - "serde_json", - "thiserror", - "tokio", - "tracing", - "tracing-futures", - "url", -] - -[[package]] -name = "ethers-providers" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6434c9a33891f1effc9c75472e12666db2fa5a0fec4b29af6221680a6fe83ab2" -dependencies = [ - "async-trait", - "auto_impl", - "base64 0.21.7", - "bytes", - "const-hex", - "enr", - "ethers-core", - "futures-channel", - "futures-core", - "futures-timer", - "futures-util", - "hashers", - "http 0.2.12", - "instant", - "jsonwebtoken", - "once_cell", - "pin-project", - "reqwest 0.11.27", - "serde", - "serde_json", - "thiserror", - "tokio", - "tokio-tungstenite 0.20.1", - "tracing", - "tracing-futures", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "ws_stream_wasm", -] - -[[package]] -name = "ethers-signers" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "228875491c782ad851773b652dd8ecac62cda8571d3bc32a5853644dd26766c2" -dependencies = [ - "async-trait", - "coins-bip32", - "coins-bip39", - "const-hex", - "elliptic-curve", - "eth-keystore", - "ethers-core", - "rand", - "sha2 0.10.8", - "thiserror", - "tracing", -] - -[[package]] -name = "ethers-solc" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66244a771d9163282646dbeffe0e6eca4dda4146b6498644e678ac6089b11edd" -dependencies = [ - "cfg-if", - "const-hex", - "dirs", - "dunce", - "ethers-core", - "glob", - "home", - "md-5", - "num_cpus", - "once_cell", - "path-slash", - "rayon", - "regex", - "semver 1.0.23", - "serde", - "serde_json", - "solang-parser", - "svm-rs", - "thiserror", - "tiny-keccak", - "tokio", - "tracing", - "walkdir", - "yansi", -] - -[[package]] -name = "event-listener" -version = "2.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" - -[[package]] -name = "eyre" -version = "0.6.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec" -dependencies = [ - "indenter", - "once_cell", -] - -[[package]] -name = "fastrand" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" - -[[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 = "ff" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" -dependencies = [ - "rand_core", - "subtle", -] - -[[package]] -name = "fixed-hash" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" -dependencies = [ - "byteorder", - "rand", - "rustc-hex", - "static_assertions", -] - -[[package]] -name = "fixedbitset" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" - -[[package]] -name = "flate2" -version = "1.0.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" -dependencies = [ - "crc32fast", - "miniz_oxide", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "foldhash" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2" - -[[package]] -name = "foreign-types" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" -dependencies = [ - "foreign-types-shared", -] - -[[package]] -name = "foreign-types-shared" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" - -[[package]] -name = "form_urlencoded" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "fs2" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" -dependencies = [ - "libc", - "winapi", -] - -[[package]] -name = "funty" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" - -[[package]] -name = "futures" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" -dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-channel" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" -dependencies = [ - "futures-core", - "futures-sink", -] - -[[package]] -name = "futures-core" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" - -[[package]] -name = "futures-executor" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-io" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" - -[[package]] -name = "futures-locks" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45ec6fe3675af967e67c5536c0b9d44e34e6c52f86bedc4ea49c5317b8e94d06" -dependencies = [ - "futures-channel", - "futures-task", -] - -[[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.98", -] - -[[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-timer" -version = "3.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" -dependencies = [ - "gloo-timers", - "send_wrapper 0.4.0", -] - -[[package]] -name = "futures-util" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" -dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-macro", - "futures-sink", - "futures-task", - "memchr", - "pin-project-lite", - "pin-utils", - "slab", -] - -[[package]] -name = "futures-utils-wasm" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42012b0f064e01aa58b545fe3727f90f7dd4020f4a3ea735b50344965f5a57e9" - -[[package]] -name = "fxhash" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" -dependencies = [ - "byteorder", -] - -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", - "zeroize", -] - -[[package]] -name = "getrandom" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi", - "wasm-bindgen", -] - -[[package]] -name = "gimli" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" - -[[package]] -name = "glob" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" - -[[package]] -name = "gloo-timers" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" -dependencies = [ - "futures-channel", - "futures-core", - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "graphql-introspection-query" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f2a4732cf5140bd6c082434494f785a19cfb566ab07d1382c3671f5812fed6d" -dependencies = [ - "serde", -] - -[[package]] -name = "graphql-parser" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2ebc8013b4426d5b81a4364c419a95ed0b404af2b82e2457de52d9348f0e474" -dependencies = [ - "combine", - "thiserror", -] - -[[package]] -name = "graphql_client" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a50cfdc7f34b7f01909d55c2dcb71d4c13cbcbb4a1605d6c8bd760d654c1144b" -dependencies = [ - "graphql_query_derive", - "reqwest 0.11.27", - "serde", - "serde_json", -] - -[[package]] -name = "graphql_client_codegen" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e27ed0c2cf0c0cc52c6bcf3b45c907f433015e580879d14005386251842fb0a" -dependencies = [ - "graphql-introspection-query", - "graphql-parser", - "heck 0.4.1", - "lazy_static", - "proc-macro2", - "quote", - "serde", - "serde_json", - "syn 1.0.109", -] - -[[package]] -name = "graphql_query_derive" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83febfa838f898cfa73dfaa7a8eb69ff3409021ac06ee94cfb3d622f6eeb1a97" -dependencies = [ - "graphql_client_codegen", - "proc-macro2", - "syn 1.0.109", -] - -[[package]] -name = "group" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" -dependencies = [ - "ff", - "rand_core", - "subtle", -] - -[[package]] -name = "groupmap" -version = "0.1.0" -source = "git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b98b8747de54e595f53d97c035ff43167c#44e0d3b98b8747de54e595f53d97c035ff43167c" -dependencies = [ - "ark-ec", - "ark-ff 0.3.0", - "rand", -] - -[[package]] -name = "h2" -version = "0.3.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" -dependencies = [ - "bytes", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http 0.2.12", - "indexmap 2.6.0", - "slab", - "tokio", - "tokio-util", - "tracing", -] - -[[package]] -name = "h2" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386" -dependencies = [ - "atomic-waker", - "bytes", - "fnv", - "futures-core", - "futures-sink", - "http 1.1.0", - "indexmap 2.6.0", - "slab", - "tokio", - "tokio-util", - "tracing", -] - -[[package]] -name = "half" -version = "2.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" -dependencies = [ - "cfg-if", - "crunchy", -] - -[[package]] -name = "hash32" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" -dependencies = [ - "byteorder", -] - -[[package]] -name = "hashbrown" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" -dependencies = [ - "ahash 0.7.8", -] - -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - -[[package]] -name = "hashbrown" -version = "0.14.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" -dependencies = [ - "ahash 0.8.11", - "allocator-api2", - "serde", -] - -[[package]] -name = "hashbrown" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" -dependencies = [ - "allocator-api2", - "equivalent", - "foldhash", - "serde", -] - -[[package]] -name = "hashers" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2bca93b15ea5a746f220e56587f71e73c6165eab783df9e26590069953e3c30" -dependencies = [ - "fxhash", -] - -[[package]] -name = "heapless" -version = "0.7.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdc6457c0eb62c71aac4bc17216026d8410337c4126773b9c5daba343f17964f" -dependencies = [ - "atomic-polyfill", - "hash32", - "rustc_version 0.4.1", - "serde", - "spin 0.9.8", - "stable_deref_trait", -] - -[[package]] -name = "heck" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" - -[[package]] -name = "heck" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" - -[[package]] -name = "hermit-abi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" - -[[package]] -name = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" -dependencies = [ - "serde", -] - -[[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 = "home" -version = "0.5.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" -dependencies = [ - "windows-sys 0.52.0", -] - -[[package]] -name = "http" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" -dependencies = [ - "bytes", - "fnv", - "itoa", -] - -[[package]] -name = "http" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" -dependencies = [ - "bytes", - "fnv", - "itoa", -] - -[[package]] -name = "http-body" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" -dependencies = [ - "bytes", - "http 0.2.12", - "pin-project-lite", -] - -[[package]] -name = "http-body" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" -dependencies = [ - "bytes", - "http 1.1.0", -] - -[[package]] -name = "http-body-util" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" -dependencies = [ - "bytes", - "futures-util", - "http 1.1.0", - "http-body 1.0.1", - "pin-project-lite", -] - -[[package]] -name = "httparse" -version = "1.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" - -[[package]] -name = "httpdate" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" - -[[package]] -name = "humantime" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" - -[[package]] -name = "hyper" -version = "0.14.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "h2 0.3.26", - "http 0.2.12", - "http-body 0.4.6", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "socket2", - "tokio", - "tower-service", - "tracing", - "want", -] - -[[package]] -name = "hyper" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbbff0a806a4728c99295b254c8838933b5b082d75e3cb70c8dab21fdfbcfa9a" -dependencies = [ - "bytes", - "futures-channel", - "futures-util", - "h2 0.4.12", - "http 1.1.0", - "http-body 1.0.1", - "httparse", - "itoa", - "pin-project-lite", - "smallvec", - "tokio", - "want", -] - -[[package]] -name = "hyper-rustls" -version = "0.24.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" -dependencies = [ - "futures-util", - "http 0.2.12", - "hyper 0.14.31", - "rustls 0.21.12", - "tokio", - "tokio-rustls 0.24.1", -] - -[[package]] -name = "hyper-rustls" -version = "0.27.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" -dependencies = [ - "http 1.1.0", - "hyper 1.5.0", - "hyper-util", - "rustls 0.23.15", - "rustls-pki-types", - "tokio", - "tokio-rustls 0.26.0", - "tower-service", -] - -[[package]] -name = "hyper-tls" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" -dependencies = [ - "bytes", - "hyper 0.14.31", - "native-tls", - "tokio", - "tokio-native-tls", -] - -[[package]] -name = "hyper-tls" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" -dependencies = [ - "bytes", - "http-body-util", - "hyper 1.5.0", - "hyper-util", - "native-tls", - "tokio", - "tokio-native-tls", - "tower-service", -] - -[[package]] -name = "hyper-util" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b" -dependencies = [ - "bytes", - "futures-channel", - "futures-util", - "http 1.1.0", - "http-body 1.0.1", - "hyper 1.5.0", - "pin-project-lite", - "socket2", - "tokio", - "tower-service", - "tracing", -] - -[[package]] -name = "iana-time-zone" -version = "0.1.61" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" -dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "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 = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" -dependencies = [ - "displaydoc", - "yoke", - "zerofrom", - "zerovec", -] - -[[package]] -name = "icu_locid" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" -dependencies = [ - "displaydoc", - "litemap", - "tinystr", - "writeable", - "zerovec", -] - -[[package]] -name = "icu_locid_transform" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" -dependencies = [ - "displaydoc", - "icu_locid", - "icu_locid_transform_data", - "icu_provider", - "tinystr", - "zerovec", -] - -[[package]] -name = "icu_locid_transform_data" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" - -[[package]] -name = "icu_normalizer" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" -dependencies = [ - "displaydoc", - "icu_collections", - "icu_normalizer_data", - "icu_properties", - "icu_provider", - "smallvec", - "utf16_iter", - "utf8_iter", - "write16", - "zerovec", -] - -[[package]] -name = "icu_normalizer_data" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" - -[[package]] -name = "icu_properties" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" -dependencies = [ - "displaydoc", - "icu_collections", - "icu_locid_transform", - "icu_properties_data", - "icu_provider", - "tinystr", - "zerovec", -] - -[[package]] -name = "icu_properties_data" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" - -[[package]] -name = "icu_provider" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" -dependencies = [ - "displaydoc", - "icu_locid", - "icu_provider_macros", - "stable_deref_trait", - "tinystr", - "writeable", - "yoke", - "zerofrom", - "zerovec", -] - -[[package]] -name = "icu_provider_macros" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", -] - -[[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.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" -dependencies = [ - "idna_adapter", - "smallvec", - "utf8_iter", -] - -[[package]] -name = "idna_adapter" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" -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-rlp" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" -dependencies = [ - "rlp", -] - -[[package]] -name = "impl-serde" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd" -dependencies = [ - "serde", -] - -[[package]] -name = "impl-trait-for-tuples" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "indenter" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" - -[[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.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" -dependencies = [ - "equivalent", - "hashbrown 0.15.0", - "serde", -] - -[[package]] -name = "inout" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" -dependencies = [ - "generic-array", -] - -[[package]] -name = "instant" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "interprocess" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2f4e4a06d42fab3e85ab1b419ad32b09eab58b901d40c57935ff92db3287a13" -dependencies = [ - "doctest-file", - "futures-core", - "libc", - "recvmsg", - "tokio", - "widestring", - "windows-sys 0.52.0", -] - -[[package]] -name = "ipnet" -version = "2.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" - -[[package]] -name = "is_terminal_polyfill" -version = "1.70.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" - -[[package]] -name = "itertools" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" -dependencies = [ - "either", -] - -[[package]] -name = "itoa" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" - -[[package]] -name = "jobserver" -version = "0.1.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" -dependencies = [ - "libc", -] - -[[package]] -name = "js-sys" -version = "0.3.77" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" -dependencies = [ - "once_cell", - "wasm-bindgen", -] - -[[package]] -name = "jsonwebtoken" -version = "8.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6971da4d9c3aa03c3d8f3ff0f4155b534aad021292003895a469716b2a230378" -dependencies = [ - "base64 0.21.7", - "pem", - "ring 0.16.20", - "serde", - "serde_json", - "simple_asn1", -] - -[[package]] -name = "k256" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" -dependencies = [ - "cfg-if", - "ecdsa", - "elliptic-curve", - "once_cell", - "sha2 0.10.8", - "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 = "kimchi" -version = "0.1.0" -source = "git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b98b8747de54e595f53d97c035ff43167c#44e0d3b98b8747de54e595f53d97c035ff43167c" -dependencies = [ - "ark-ec", - "ark-ff 0.3.0", - "ark-poly", - "ark-serialize 0.3.0", - "blake2", - "disjoint-set", - "groupmap", - "hex", - "itertools 0.10.5", - "mina-curves", - "mina-poseidon", - "num-bigint", - "num-derive", - "num-integer", - "num-traits", - "o1-utils 0.1.0 (git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b98b8747de54e595f53d97c035ff43167c)", - "once_cell", - "poly-commitment", - "rand", - "rand_core", - "rayon", - "rmp-serde", - "serde", - "serde_with 1.14.0", - "strum 0.24.1", - "strum_macros 0.24.3", - "thiserror", - "turshi", -] - -[[package]] -name = "lalrpop" -version = "0.20.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55cb077ad656299f160924eb2912aa147d7339ea7d69e1b5517326fdcec3c1ca" -dependencies = [ - "ascii-canvas", - "bit-set", - "ena", - "itertools 0.11.0", - "lalrpop-util", - "petgraph", - "regex", - "regex-syntax", - "string_cache", - "term", - "tiny-keccak", - "unicode-xid", - "walkdir", -] - -[[package]] -name = "lalrpop-util" -version = "0.20.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "507460a910eb7b32ee961886ff48539633b788a36b65692b95f225b844c82553" -dependencies = [ - "regex-automata", -] - -[[package]] -name = "lambdaworks-crypto" -version = "0.12.0" -source = "git+https://github.com/lambdaclass/lambdaworks.git?rev=5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b#5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b" -dependencies = [ - "lambdaworks-math", - "rand", - "rand_chacha", - "serde", - "sha2 0.10.8", - "sha3", -] - -[[package]] -name = "lambdaworks-math" -version = "0.12.0" -source = "git+https://github.com/lambdaclass/lambdaworks.git?rev=5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b#5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b" -dependencies = [ - "getrandom", - "rand", - "serde", - "serde_json", -] - -[[package]] -name = "lazy_static" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" - -[[package]] -name = "libc" -version = "0.2.170" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "875b3680cb2f8f71bdcf9a30f38d48282f5d3c95cbf9b3fa57269bb5d5c06828" - -[[package]] -name = "libm" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" - -[[package]] -name = "libredox" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" -dependencies = [ - "bitflags 2.8.0", - "libc", -] - -[[package]] -name = "linkme" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c943daedff228392b791b33bba32e75737756e80a613e32e246c6ce9cbab20a" -dependencies = [ - "linkme-impl", -] - -[[package]] -name = "linkme-impl" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb26336e6dc7cc76e7927d2c9e7e3bb376d7af65a6f56a0b16c47d18a9b1abc5" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", -] - -[[package]] -name = "linux-raw-sys" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" - -[[package]] -name = "litemap" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856" - -[[package]] -name = "lock_api" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" -dependencies = [ - "autocfg", - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30bde2b3dc3671ae49d8e2e9f044c7c005836e7a023ee57cffa25ab82764bb9e" - -[[package]] -name = "lru" -version = "0.12.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" -dependencies = [ - "hashbrown 0.15.0", -] - -[[package]] -name = "md-5" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" -dependencies = [ - "cfg-if", - "digest 0.10.7", -] - -[[package]] -name = "md5" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771" - -[[package]] -name = "memchr" -version = "2.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" - -[[package]] -name = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - -[[package]] -name = "mina-curves" -version = "0.1.0" -source = "git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b98b8747de54e595f53d97c035ff43167c#44e0d3b98b8747de54e595f53d97c035ff43167c" -dependencies = [ - "ark-ec", - "ark-ff 0.3.0", -] - -[[package]] -name = "mina-hasher" -version = "0.1.0" -source = "git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b98b8747de54e595f53d97c035ff43167c#44e0d3b98b8747de54e595f53d97c035ff43167c" -dependencies = [ - "ark-ff 0.3.0", - "bitvec", - "mina-curves", - "mina-poseidon", - "o1-utils 0.1.0 (git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b98b8747de54e595f53d97c035ff43167c)", - "serde", -] - -[[package]] -name = "mina-p2p-messages" -version = "0.6.4" -source = "git+https://github.com/lambdaclass/openmina/?rev=97df7ca5e3b631c99c9fa23a9ff8c76b4120504c#97df7ca5e3b631c99c9fa23a9ff8c76b4120504c" -dependencies = [ - "ark-ff 0.3.0", - "base64 0.13.1", - "binprot", - "binprot_derive", - "blake2", - "bs58 0.4.0", - "derive_more 0.99.18", - "hex", - "mina-curves", - "mina-hasher", - "mina-poseidon", - "mina-signer", - "o1-utils 0.1.0 (git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b98b8747de54e595f53d97c035ff43167c)", - "rsexp", - "serde", - "serde_json", - "sha2 0.10.8", - "thiserror", - "time", -] - -[[package]] -name = "mina-poseidon" -version = "0.1.0" -source = "git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b98b8747de54e595f53d97c035ff43167c#44e0d3b98b8747de54e595f53d97c035ff43167c" -dependencies = [ - "ark-ec", - "ark-ff 0.3.0", - "ark-poly", - "mina-curves", - "o1-utils 0.1.0 (git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b98b8747de54e595f53d97c035ff43167c)", - "once_cell", - "rand", - "rayon", - "serde", - "serde_with 1.14.0", -] - -[[package]] -name = "mina-signer" -version = "0.1.0" -source = "git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b98b8747de54e595f53d97c035ff43167c#44e0d3b98b8747de54e595f53d97c035ff43167c" -dependencies = [ - "ark-ec", - "ark-ff 0.3.0", - "bitvec", - "blake2", - "bs58 0.4.0", - "hex", - "mina-curves", - "mina-hasher", - "o1-utils 0.1.0 (git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b98b8747de54e595f53d97c035ff43167c)", - "rand", - "sha2 0.10.8", - "thiserror", -] - -[[package]] -name = "mina-tree" -version = "0.6.0" -source = "git+https://github.com/lambdaclass/openmina/?rev=97df7ca5e3b631c99c9fa23a9ff8c76b4120504c#97df7ca5e3b631c99c9fa23a9ff8c76b4120504c" -dependencies = [ - "anyhow", - "ark-ec", - "ark-ff 0.3.0", - "ark-poly", - "ark-serialize 0.3.0", - "backtrace", - "base64 0.13.1", - "bitvec", - "blake2", - "bs58 0.4.0", - "chrono", - "crc32fast", - "derive_more 0.99.18", - "getrandom", - "hex", - "itertools 0.10.5", - "kimchi", - "lazy_static", - "libc", - "mina-curves", - "mina-hasher", - "mina-p2p-messages", - "mina-poseidon", - "mina-signer", - "num-bigint", - "o1-utils 0.1.0 (git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b98b8747de54e595f53d97c035ff43167c)", - "once_cell", - "openmina-core", - "poly-commitment", - "postcard", - "rand", - "rand_pcg", - "rand_seeder", - "rayon", - "serde", - "serde_json", - "serde_with 3.11.0", - "sha2 0.10.8", - "static_assertions", - "thiserror", - "tuple-map", - "uuid 1.11.0", - "wasm-bindgen", - "wasm_thread", -] - -[[package]] -name = "mina_bridge_core" -version = "0.1.0" -dependencies = [ - "aligned-sdk", - "alloy", - "alloy-contract", - "alloy-sol-types", - "ark-ec", - "ark-ff 0.3.0", - "ark-poly", - "ark-serialize 0.3.0", - "base64 0.22.1", - "bincode", - "clap", - "dotenv", - "env_logger", - "ethers", - "futures", - "graphql_client", - "hex", - "kimchi", - "log", - "mina-curves", - "mina-p2p-messages", - "mina-signer", - "mina-tree", - "num-bigint", - "num-traits", - "o1-utils 0.1.0 (git+https://github.com/lambdaclass/proof-systems?rev=5bdeab3c2a43a671645952f63b9354b7a20b2326)", - "poly-commitment", - "reqwest 0.11.27", - "rmp-serde", - "rpassword", - "serde", - "serde_json", - "serde_with 3.11.0", - "sha3", - "tokio", - "zeroize", -] - -[[package]] -name = "miniz_oxide" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" -dependencies = [ - "adler2", -] - -[[package]] -name = "mio" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" -dependencies = [ - "hermit-abi", - "libc", - "wasi", - "windows-sys 0.52.0", -] - -[[package]] -name = "multihash" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfd8a792c1694c6da4f68db0a9d707c72bd260994da179e6030a5dcee00bb815" -dependencies = [ - "blake2b_simd", - "blake2s_simd", - "blake3", - "core2", - "digest 0.10.7", - "multihash-derive", - "sha2 0.10.8", - "sha3", - "unsigned-varint", -] - -[[package]] -name = "multihash-derive" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6d4752e6230d8ef7adf7bd5d8c4b1f6561c1014c5ba9a37445ccefe18aa1db" -dependencies = [ - "proc-macro-crate 1.1.3", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 1.0.109", - "synstructure 0.12.6", -] - -[[package]] -name = "native-tls" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" -dependencies = [ - "libc", - "log", - "openssl", - "openssl-probe", - "openssl-sys", - "schannel", - "security-framework", - "security-framework-sys", - "tempfile", -] - -[[package]] -name = "new_debug_unreachable" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" - -[[package]] -name = "num-bigint" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" -dependencies = [ - "num-integer", - "num-traits", - "rand", - "serde", -] - -[[package]] -name = "num-conv" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" - -[[package]] -name = "num-derive" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[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-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.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" -dependencies = [ - "hermit-abi", - "libc", -] - -[[package]] -name = "num_enum" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" -dependencies = [ - "num_enum_derive", -] - -[[package]] -name = "num_enum_derive" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" -dependencies = [ - "proc-macro-crate 1.1.3", - "proc-macro2", - "quote", - "syn 2.0.98", -] - -[[package]] -name = "o1-utils" -version = "0.1.0" -source = "git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b98b8747de54e595f53d97c035ff43167c#44e0d3b98b8747de54e595f53d97c035ff43167c" -dependencies = [ - "ark-ec", - "ark-ff 0.3.0", - "ark-poly", - "ark-serialize 0.3.0", - "bcs", - "hex", - "num-bigint", - "num-integer", - "num-traits", - "rand", - "rand_core", - "rayon", - "serde", - "serde_with 1.14.0", - "sha2 0.10.8", - "thiserror", -] - -[[package]] -name = "o1-utils" -version = "0.1.0" -source = "git+https://github.com/lambdaclass/proof-systems?rev=5bdeab3c2a43a671645952f63b9354b7a20b2326#5bdeab3c2a43a671645952f63b9354b7a20b2326" -dependencies = [ - "ark-ec", - "ark-ff 0.3.0", - "ark-poly", - "ark-serialize 0.3.0", - "bcs", - "hex", - "num-bigint", - "num-integer", - "num-traits", - "rand", - "rand_core", - "rayon", - "serde", - "serde_with 3.11.0", - "sha2 0.10.8", - "thiserror", -] - -[[package]] -name = "object" -version = "0.36.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" -dependencies = [ - "memchr", -] - -[[package]] -name = "once_cell" -version = "1.20.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e" - -[[package]] -name = "opaque-debug" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" - -[[package]] -name = "open-fastrlp" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "786393f80485445794f6043fd3138854dd109cc6c4bd1a6383db304c9ce9b9ce" -dependencies = [ - "arrayvec", - "auto_impl", - "bytes", - "ethereum-types", - "open-fastrlp-derive", -] - -[[package]] -name = "open-fastrlp-derive" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "003b2be5c6c53c1cfeb0a238b8a1c3915cd410feb684457a36c10038f764bb1c" -dependencies = [ - "bytes", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "openmina-core" -version = "0.6.0" -source = "git+https://github.com/lambdaclass/openmina/?rev=97df7ca5e3b631c99c9fa23a9ff8c76b4120504c#97df7ca5e3b631c99c9fa23a9ff8c76b4120504c" -dependencies = [ - "ark-ff 0.3.0", - "binprot", - "binprot_derive", - "hex", - "lazy_static", - "md5", - "mina-hasher", - "mina-p2p-messages", - "multihash", - "openmina-macros", - "redux", - "serde", - "sha2 0.10.8", - "slab", - "time", - "tokio", - "tracing", -] - -[[package]] -name = "openmina-macros" -version = "0.6.0" -source = "git+https://github.com/lambdaclass/openmina/?rev=97df7ca5e3b631c99c9fa23a9ff8c76b4120504c#97df7ca5e3b631c99c9fa23a9ff8c76b4120504c" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", -] - -[[package]] -name = "openssl" -version = "0.10.71" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e14130c6a98cd258fdcb0fb6d744152343ff729cbfcb28c656a9d12b999fbcd" -dependencies = [ - "bitflags 2.8.0", - "cfg-if", - "foreign-types", - "libc", - "once_cell", - "openssl-macros", - "openssl-sys", -] - -[[package]] -name = "openssl-macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", -] - -[[package]] -name = "openssl-probe" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" - -[[package]] -name = "openssl-sys" -version = "0.9.106" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bb61ea9811cc39e3c2069f40b8b8e2e70d8569b361f879786cc7ed48b777cdd" -dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", -] - -[[package]] -name = "option-ext" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" - -[[package]] -name = "parity-scale-codec" -version = "3.6.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" -dependencies = [ - "arrayvec", - "bitvec", - "byte-slice-cast", - "impl-trait-for-tuples", - "parity-scale-codec-derive", - "serde", -] - -[[package]] -name = "parity-scale-codec-derive" -version = "3.6.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" -dependencies = [ - "proc-macro-crate 3.2.0", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "parking_lot" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" -dependencies = [ - "instant", - "lock_api", - "parking_lot_core 0.8.6", -] - -[[package]] -name = "parking_lot" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" -dependencies = [ - "lock_api", - "parking_lot_core 0.9.10", -] - -[[package]] -name = "parking_lot_core" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" -dependencies = [ - "cfg-if", - "instant", - "libc", - "redox_syscall 0.2.16", - "smallvec", - "winapi", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall 0.5.7", - "smallvec", - "windows-targets 0.52.6", -] - -[[package]] -name = "password-hash" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" -dependencies = [ - "base64ct", - "rand_core", - "subtle", -] - -[[package]] -name = "paste" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" - -[[package]] -name = "path-slash" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e91099d4268b0e11973f036e885d652fb0b21fedcf69738c627f94db6a44f42" - -[[package]] -name = "pbkdf2" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" -dependencies = [ - "digest 0.10.7", - "hmac", - "password-hash", - "sha2 0.10.8", -] - -[[package]] -name = "pbkdf2" -version = "0.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" -dependencies = [ - "digest 0.10.7", - "hmac", -] - -[[package]] -name = "pem" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8" -dependencies = [ - "base64 0.13.1", -] - -[[package]] -name = "percent-encoding" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" - -[[package]] -name = "pest" -version = "2.7.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879952a81a83930934cbf1786752d6dedc3b1f29e8f8fb2ad1d0a36f377cf442" -dependencies = [ - "memchr", - "thiserror", - "ucd-trie", -] - -[[package]] -name = "petgraph" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" -dependencies = [ - "fixedbitset", - "indexmap 2.6.0", -] - -[[package]] -name = "pharos" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9567389417feee6ce15dd6527a8a1ecac205ef62c2932bcf3d9f6fc5b78b414" -dependencies = [ - "futures", - "rustc_version 0.4.1", -] - -[[package]] -name = "phf" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" -dependencies = [ - "phf_macros", - "phf_shared 0.11.2", -] - -[[package]] -name = "phf_generator" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" -dependencies = [ - "phf_shared 0.11.2", - "rand", -] - -[[package]] -name = "phf_macros" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b" -dependencies = [ - "phf_generator", - "phf_shared 0.11.2", - "proc-macro2", - "quote", - "syn 2.0.98", -] - -[[package]] -name = "phf_shared" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" -dependencies = [ - "siphasher", -] - -[[package]] -name = "phf_shared" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" -dependencies = [ - "siphasher", -] - -[[package]] -name = "pin-project" -version = "1.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf123a161dde1e524adf36f90bc5d8d3462824a9c43553ad07a8183161189ec" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4502d8515ca9f32f1fb543d987f63d95a14934883db45bdb48060b6b69257f8" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", -] - -[[package]] -name = "pin-project-lite" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" - -[[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.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" - -[[package]] -name = "poly-commitment" -version = "0.1.0" -source = "git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b98b8747de54e595f53d97c035ff43167c#44e0d3b98b8747de54e595f53d97c035ff43167c" -dependencies = [ - "ark-ec", - "ark-ff 0.3.0", - "ark-poly", - "ark-serialize 0.3.0", - "blake2", - "groupmap", - "itertools 0.10.5", - "mina-curves", - "mina-poseidon", - "o1-utils 0.1.0 (git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b98b8747de54e595f53d97c035ff43167c)", - "once_cell", - "rand", - "rand_core", - "rayon", - "serde", - "serde_with 1.14.0", - "thiserror", -] - -[[package]] -name = "postcard" -version = "1.0.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f7f0a8d620d71c457dd1d47df76bb18960378da56af4527aaa10f515eee732e" -dependencies = [ - "cobs", - "embedded-io 0.4.0", - "embedded-io 0.6.1", - "heapless", - "serde", -] - -[[package]] -name = "powerfmt" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" - -[[package]] -name = "ppv-lite86" -version = "0.2.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" -dependencies = [ - "zerocopy", -] - -[[package]] -name = "precomputed-hash" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" - -[[package]] -name = "prettyplease" -version = "0.2.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "910d41a655dac3b764f1ade94821093d3610248694320cd072303a8eedcf221d" -dependencies = [ - "proc-macro2", - "syn 2.0.98", -] - -[[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", - "impl-rlp", - "impl-serde", - "scale-info", - "uint", -] - -[[package]] -name = "proc-macro-crate" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e17d47ce914bf4de440332250b0edd23ce48c005f59fab39d3335866b114f11a" -dependencies = [ - "thiserror", - "toml 0.5.11", -] - -[[package]] -name = "proc-macro-crate" -version = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" -dependencies = [ - "toml_edit", -] - -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn 1.0.109", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check", -] - -[[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.98", -] - -[[package]] -name = "proc-macro2" -version = "1.0.93" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "proptest" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" -dependencies = [ - "bit-set", - "bit-vec", - "bitflags 2.8.0", - "lazy_static", - "num-traits", - "rand", - "rand_chacha", - "rand_xorshift", - "regex-syntax", - "rusty-fork", - "tempfile", - "unarray", -] - -[[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.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "radium" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" - -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha", - "rand_core", - "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", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom", -] - -[[package]] -name = "rand_pcg" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59cad018caf63deb318e5a4586d99a24424a364f40f1e5778c29aca23f4fc73e" -dependencies = [ - "rand_core", -] - -[[package]] -name = "rand_seeder" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf2890aaef0aa82719a50e808de264f9484b74b442e1a3a0e5ee38243ac40bdb" -dependencies = [ - "rand_core", -] - -[[package]] -name = "rand_xorshift" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" -dependencies = [ - "rand_core", -] - -[[package]] -name = "rayon" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" -dependencies = [ - "either", - "rayon-core", -] - -[[package]] -name = "rayon-core" -version = "1.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" -dependencies = [ - "crossbeam-deque", - "crossbeam-utils", -] - -[[package]] -name = "recvmsg" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3edd4d5d42c92f0a659926464d4cce56b562761267ecf0f469d85b7de384175" - -[[package]] -name = "redox_syscall" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" -dependencies = [ - "bitflags 1.3.2", -] - -[[package]] -name = "redox_syscall" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" -dependencies = [ - "bitflags 2.8.0", -] - -[[package]] -name = "redox_users" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" -dependencies = [ - "getrandom", - "libredox", - "thiserror", -] - -[[package]] -name = "redux" -version = "0.1.0" -source = "git+https://github.com/lambdaclass/redux-rs?rev=2d1d8db#2d1d8dbd7239c0aec91db8f11126b90068dc848b" -dependencies = [ - "enum_dispatch", - "linkme", - "paste", - "serde", - "wasm-timer", -] - -[[package]] -name = "regex" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" -dependencies = [ - "aho-corasick", - "memchr", - "regex-automata", - "regex-syntax", -] - -[[package]] -name = "regex-automata" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", -] - -[[package]] -name = "regex-syntax" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" - -[[package]] -name = "reqwest" -version = "0.11.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" -dependencies = [ - "base64 0.21.7", - "bytes", - "encoding_rs", - "futures-core", - "futures-util", - "h2 0.3.26", - "http 0.2.12", - "http-body 0.4.6", - "hyper 0.14.31", - "hyper-rustls 0.24.2", - "hyper-tls 0.5.0", - "ipnet", - "js-sys", - "log", - "mime", - "native-tls", - "once_cell", - "percent-encoding", - "pin-project-lite", - "rustls 0.21.12", - "rustls-pemfile 1.0.4", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper 0.1.2", - "system-configuration 0.5.1", - "tokio", - "tokio-native-tls", - "tokio-rustls 0.24.1", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "webpki-roots 0.25.4", - "winreg", -] - -[[package]] -name = "reqwest" -version = "0.12.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f713147fbe92361e52392c73b8c9e48c04c6625bce969ef54dc901e58e042a7b" -dependencies = [ - "base64 0.22.1", - "bytes", - "encoding_rs", - "futures-core", - "futures-util", - "h2 0.4.12", - "http 1.1.0", - "http-body 1.0.1", - "http-body-util", - "hyper 1.5.0", - "hyper-rustls 0.27.7", - "hyper-tls 0.6.0", - "hyper-util", - "ipnet", - "js-sys", - "log", - "mime", - "native-tls", - "once_cell", - "percent-encoding", - "pin-project-lite", - "rustls-pemfile 2.2.0", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper 1.0.1", - "system-configuration 0.6.1", - "tokio", - "tokio-native-tls", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "windows-registry", -] - -[[package]] -name = "rfc6979" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" -dependencies = [ - "hmac", - "subtle", -] - -[[package]] -name = "ring" -version = "0.16.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" -dependencies = [ - "cc", - "libc", - "once_cell", - "spin 0.5.2", - "untrusted 0.7.1", - "web-sys", - "winapi", -] - -[[package]] -name = "ring" -version = "0.17.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da5349ae27d3887ca812fb375b45a4fbb36d8d12d2df394968cd86e35683fe73" -dependencies = [ - "cc", - "cfg-if", - "getrandom", - "libc", - "untrusted 0.9.0", - "windows-sys 0.52.0", -] - -[[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 = "rlp" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" -dependencies = [ - "bytes", - "rlp-derive", - "rustc-hex", -] - -[[package]] -name = "rlp-derive" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672a" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "rmp" -version = "0.8.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "228ed7c16fa39782c3b3468e974aec2795e9089153cd08ee2e9aefb3613334c4" -dependencies = [ - "byteorder", - "num-traits", - "paste", -] - -[[package]] -name = "rmp-serde" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52e599a477cf9840e92f2cde9a7189e67b42c57532749bf90aea6ec10facd4db" -dependencies = [ - "byteorder", - "rmp", - "serde", -] - -[[package]] -name = "rpassword" -version = "7.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80472be3c897911d0137b2d2b9055faf6eeac5b14e324073d83bc17b191d7e3f" -dependencies = [ - "libc", - "rtoolbox", - "windows-sys 0.48.0", -] - -[[package]] -name = "rsexp" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3df9a9b6491d42c0fc527e92a87525c17e45c6b9c22345702a6dc0400320bf1" - -[[package]] -name = "rtoolbox" -version = "0.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c247d24e63230cdb56463ae328478bd5eac8b8faa8c69461a77e8e323afac90e" -dependencies = [ - "libc", - "windows-sys 0.48.0", -] - -[[package]] -name = "ruint" -version = "1.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c3cc4c2511671f327125da14133d0c5c5d137f006a1017a16f557bc85b16286" -dependencies = [ - "alloy-rlp", - "ark-ff 0.3.0", - "ark-ff 0.4.2", - "bytes", - "fastrlp", - "num-bigint", - "num-traits", - "parity-scale-codec", - "primitive-types", - "proptest", - "rand", - "rlp", - "ruint-macro", - "serde", - "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-demangle" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" - -[[package]] -name = "rustc-hash" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" - -[[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.23", -] - -[[package]] -name = "rustix" -version = "0.38.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" -dependencies = [ - "bitflags 2.8.0", - "errno", - "libc", - "linux-raw-sys", - "windows-sys 0.52.0", -] - -[[package]] -name = "rustls" -version = "0.21.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" -dependencies = [ - "log", - "ring 0.17.11", - "rustls-webpki 0.101.7", - "sct", -] - -[[package]] -name = "rustls" -version = "0.23.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fbb44d7acc4e873d613422379f69f237a1b141928c02f6bc6ccfddddc2d7993" -dependencies = [ - "once_cell", - "ring 0.17.11", - "rustls-pki-types", - "rustls-webpki 0.102.8", - "subtle", - "zeroize", -] - -[[package]] -name = "rustls-pemfile" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" -dependencies = [ - "base64 0.21.7", -] - -[[package]] -name = "rustls-pemfile" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" -dependencies = [ - "rustls-pki-types", -] - -[[package]] -name = "rustls-pki-types" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" - -[[package]] -name = "rustls-webpki" -version = "0.101.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" -dependencies = [ - "ring 0.17.11", - "untrusted 0.9.0", -] - -[[package]] -name = "rustls-webpki" -version = "0.102.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" -dependencies = [ - "ring 0.17.11", - "rustls-pki-types", - "untrusted 0.9.0", -] - -[[package]] -name = "rustversion" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" - -[[package]] -name = "rusty-fork" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" -dependencies = [ - "fnv", - "quick-error", - "tempfile", - "wait-timeout", -] - -[[package]] -name = "ryu" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" - -[[package]] -name = "salsa20" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" -dependencies = [ - "cipher", -] - -[[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 = "scale-info" -version = "2.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eca070c12893629e2cc820a9761bedf6ce1dcddc9852984d1dc734b8bd9bd024" -dependencies = [ - "cfg-if", - "derive_more 0.99.18", - "parity-scale-codec", - "scale-info-derive", -] - -[[package]] -name = "scale-info-derive" -version = "2.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d35494501194174bda522a32605929eefc9ecf7e0a326c26db1fdd85881eb62" -dependencies = [ - "proc-macro-crate 3.2.0", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "schannel" -version = "0.1.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01227be5826fa0690321a2ba6c5cd57a19cf3f6a09e76973b58e61de6ab9d1c1" -dependencies = [ - "windows-sys 0.59.0", -] - -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - -[[package]] -name = "scrypt" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f9e24d2b632954ded8ab2ef9fea0a0c769ea56ea98bddbafbad22caeeadf45d" -dependencies = [ - "hmac", - "pbkdf2 0.11.0", - "salsa20", - "sha2 0.10.8", -] - -[[package]] -name = "sct" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" -dependencies = [ - "ring 0.17.11", - "untrusted 0.9.0", -] - -[[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", - "subtle", - "zeroize", -] - -[[package]] -name = "security-framework" -version = "2.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" -dependencies = [ - "bitflags 2.8.0", - "core-foundation", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework-sys" -version = "2.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea4a292869320c0272d7bc55a5a6aafaff59b4f63404a003887b679a2e05b4b6" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[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.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" -dependencies = [ - "serde", -] - -[[package]] -name = "semver-parser" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" -dependencies = [ - "pest", -] - -[[package]] -name = "send_wrapper" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0" - -[[package]] -name = "send_wrapper" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" - -[[package]] -name = "serde" -version = "1.0.210" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_bytes" -version = "0.11.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8437fd221bde2d4ca316d61b90e337e9e702b3820b87d63caa9ba6c02bd06d96" -dependencies = [ - "serde", -] - -[[package]] -name = "serde_derive" -version = "1.0.210" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", -] - -[[package]] -name = "serde_json" -version = "1.0.132" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" -dependencies = [ - "itoa", - "memchr", - "ryu", - "serde", -] - -[[package]] -name = "serde_repr" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", -] - -[[package]] -name = "serde_spanned" -version = "0.6.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" -dependencies = [ - "serde", -] - -[[package]] -name = "serde_urlencoded" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" -dependencies = [ - "form_urlencoded", - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "serde_with" -version = "1.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "678b5a069e50bf00ecd22d0cd8ddf7c236f68581b03db652061ed5eb13a312ff" -dependencies = [ - "serde", - "serde_with_macros 1.5.2", -] - -[[package]] -name = "serde_with" -version = "3.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e28bdad6db2b8340e449f7108f020b3b092e8583a9e3fb82713e1d4e71fe817" -dependencies = [ - "base64 0.22.1", - "chrono", - "hex", - "indexmap 1.9.3", - "indexmap 2.6.0", - "serde", - "serde_derive", - "serde_json", - "serde_with_macros 3.11.0", - "time", -] - -[[package]] -name = "serde_with_macros" -version = "1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e182d6ec6f05393cc0e5ed1bf81ad6db3a8feedf8ee515ecdd369809bcce8082" -dependencies = [ - "darling 0.13.4", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "serde_with_macros" -version = "3.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d846214a9854ef724f3da161b426242d8de7c1fc7de2f89bb1efcb154dca79d" -dependencies = [ - "darling 0.20.10", - "proc-macro2", - "quote", - "syn 2.0.98", -] - -[[package]] -name = "sha1" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest 0.10.7", -] - -[[package]] -name = "sha2" -version = "0.9.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" -dependencies = [ - "block-buffer 0.9.0", - "cfg-if", - "cpufeatures", - "digest 0.9.0", - "opaque-debug", -] - -[[package]] -name = "sha2" -version = "0.10.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest 0.10.7", -] - -[[package]] -name = "sha3" -version = "0.10.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" -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 = "shell-words" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" - -[[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", -] - -[[package]] -name = "simple_asn1" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" -dependencies = [ - "num-bigint", - "num-traits", - "thiserror", - "time", -] - -[[package]] -name = "siphasher" -version = "0.3.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" - -[[package]] -name = "slab" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", - "serde", -] - -[[package]] -name = "smallvec" -version = "1.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" - -[[package]] -name = "socket2" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "solang-parser" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c425ce1c59f4b154717592f0bdf4715c3a1d55058883622d3157e1f0908a5b26" -dependencies = [ - "itertools 0.11.0", - "lalrpop", - "lalrpop-util", - "phf", - "thiserror", - "unicode-xid", -] - -[[package]] -name = "spin" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" - -[[package]] -name = "spin" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" -dependencies = [ - "lock_api", -] - -[[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.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" - -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - -[[package]] -name = "string_cache" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" -dependencies = [ - "new_debug_unreachable", - "once_cell", - "parking_lot 0.12.3", - "phf_shared 0.10.0", - "precomputed-hash", -] - -[[package]] -name = "strsim" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" - -[[package]] -name = "strsim" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" - -[[package]] -name = "strum" -version = "0.24.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" - -[[package]] -name = "strum" -version = "0.26.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" -dependencies = [ - "strum_macros 0.26.4", -] - -[[package]] -name = "strum_macros" -version = "0.24.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" -dependencies = [ - "heck 0.4.1", - "proc-macro2", - "quote", - "rustversion", - "syn 1.0.109", -] - -[[package]] -name = "strum_macros" -version = "0.26.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" -dependencies = [ - "heck 0.5.0", - "proc-macro2", - "quote", - "rustversion", - "syn 2.0.98", -] - -[[package]] -name = "subtle" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" - -[[package]] -name = "svm-rs" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11297baafe5fa0c99d5722458eac6a5e25c01eb1b8e5cd137f54079093daa7a4" -dependencies = [ - "dirs", - "fs2", - "hex", - "once_cell", - "reqwest 0.11.27", - "semver 1.0.23", - "serde", - "serde_json", - "sha2 0.10.8", - "thiserror", - "url", - "zip", -] - -[[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.98" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn-solidity" -version = "0.8.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d5e0c2ea8db64b2898b62ea2fbd60204ca95e0b2c6bdf53ff768bbe916fbe4d" -dependencies = [ - "paste", - "proc-macro2", - "quote", - "syn 2.0.98", -] - -[[package]] -name = "sync_wrapper" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" - -[[package]] -name = "sync_wrapper" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" -dependencies = [ - "futures-core", -] - -[[package]] -name = "synstructure" -version = "0.12.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", - "unicode-xid", -] - -[[package]] -name = "synstructure" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", -] - -[[package]] -name = "system-configuration" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" -dependencies = [ - "bitflags 1.3.2", - "core-foundation", - "system-configuration-sys 0.5.0", -] - -[[package]] -name = "system-configuration" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" -dependencies = [ - "bitflags 2.8.0", - "core-foundation", - "system-configuration-sys 0.6.0", -] - -[[package]] -name = "system-configuration-sys" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "system-configuration-sys" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "tap" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" - -[[package]] -name = "tempfile" -version = "3.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" -dependencies = [ - "cfg-if", - "fastrand", - "once_cell", - "rustix", - "windows-sys 0.59.0", -] - -[[package]] -name = "term" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f" -dependencies = [ - "dirs-next", - "rustversion", - "winapi", -] - -[[package]] -name = "thiserror" -version = "1.0.64" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.64" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", -] - -[[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.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" -dependencies = [ - "deranged", - "itoa", - "num-conv", - "powerfmt", - "serde", - "time-core", - "time-macros", -] - -[[package]] -name = "time-core" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" - -[[package]] -name = "time-macros" -version = "0.2.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" -dependencies = [ - "num-conv", - "time-core", -] - -[[package]] -name = "tiny-keccak" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" -dependencies = [ - "crunchy", -] - -[[package]] -name = "tinystr" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" -dependencies = [ - "displaydoc", - "zerovec", -] - -[[package]] -name = "tinyvec" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "022db8904dfa342efe721985167e9fcd16c29b226db4397ed752a761cfce81e8" -dependencies = [ - "tinyvec_macros", -] - -[[package]] -name = "tinyvec_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" - -[[package]] -name = "tokio" -version = "1.40.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" -dependencies = [ - "backtrace", - "bytes", - "libc", - "mio", - "pin-project-lite", - "socket2", - "tokio-macros", - "windows-sys 0.52.0", -] - -[[package]] -name = "tokio-macros" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", -] - -[[package]] -name = "tokio-native-tls" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" -dependencies = [ - "native-tls", - "tokio", -] - -[[package]] -name = "tokio-rustls" -version = "0.24.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" -dependencies = [ - "rustls 0.21.12", - "tokio", -] - -[[package]] -name = "tokio-rustls" -version = "0.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" -dependencies = [ - "rustls 0.23.15", - "rustls-pki-types", - "tokio", -] - -[[package]] -name = "tokio-stream" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" -dependencies = [ - "futures-core", - "pin-project-lite", - "tokio", - "tokio-util", -] - -[[package]] -name = "tokio-tungstenite" -version = "0.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c" -dependencies = [ - "futures-util", - "log", - "rustls 0.21.12", - "tokio", - "tokio-rustls 0.24.1", - "tungstenite 0.20.1", - "webpki-roots 0.25.4", -] - -[[package]] -name = "tokio-tungstenite" -version = "0.23.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6989540ced10490aaf14e6bad2e3d33728a2813310a0c71d1574304c49631cd" -dependencies = [ - "futures-util", - "log", - "native-tls", - "rustls 0.23.15", - "rustls-pki-types", - "tokio", - "tokio-native-tls", - "tokio-rustls 0.26.0", - "tungstenite 0.23.0", - "webpki-roots 0.26.6", -] - -[[package]] -name = "tokio-util" -version = "0.7.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "toml" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" -dependencies = [ - "serde", -] - -[[package]] -name = "toml" -version = "0.8.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" -dependencies = [ - "serde", - "serde_spanned", - "toml_datetime", - "toml_edit", -] - -[[package]] -name = "toml_datetime" -version = "0.6.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" -dependencies = [ - "serde", -] - -[[package]] -name = "toml_edit" -version = "0.22.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" -dependencies = [ - "indexmap 2.6.0", - "serde", - "serde_spanned", - "toml_datetime", - "winnow", -] - -[[package]] -name = "tower" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2873938d487c3cfb9aed7546dc9f2711d867c9f90c46b889989a2cb84eba6b4f" -dependencies = [ - "futures-core", - "futures-util", - "pin-project-lite", - "sync_wrapper 0.1.2", - "tower-layer", - "tower-service", -] - -[[package]] -name = "tower-layer" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" - -[[package]] -name = "tower-service" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" - -[[package]] -name = "tracing" -version = "0.1.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" -dependencies = [ - "pin-project-lite", - "tracing-attributes", - "tracing-core", -] - -[[package]] -name = "tracing-attributes" -version = "0.1.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", -] - -[[package]] -name = "tracing-core" -version = "0.1.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" -dependencies = [ - "once_cell", -] - -[[package]] -name = "tracing-futures" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" -dependencies = [ - "pin-project", - "tracing", -] - -[[package]] -name = "try-lock" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" - -[[package]] -name = "tungstenite" -version = "0.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9" -dependencies = [ - "byteorder", - "bytes", - "data-encoding", - "http 0.2.12", - "httparse", - "log", - "rand", - "rustls 0.21.12", - "sha1", - "thiserror", - "url", - "utf-8", -] - -[[package]] -name = "tungstenite" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e2e2ce1e47ed2994fd43b04c8f618008d4cabdd5ee34027cf14f9d918edd9c8" -dependencies = [ - "byteorder", - "bytes", - "data-encoding", - "http 1.1.0", - "httparse", - "log", - "native-tls", - "rand", - "rustls 0.23.15", - "rustls-pki-types", - "sha1", - "thiserror", - "utf-8", -] - -[[package]] -name = "tuple-map" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d5919d7121237af683b7fa982450597b1eaa2643e597aec3b519e4e5ab3d62" - -[[package]] -name = "turshi" -version = "0.1.0" -source = "git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b98b8747de54e595f53d97c035ff43167c#44e0d3b98b8747de54e595f53d97c035ff43167c" -dependencies = [ - "ark-ff 0.3.0", - "hex", - "o1-utils 0.1.0 (git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b98b8747de54e595f53d97c035ff43167c)", -] - -[[package]] -name = "typenum" -version = "1.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" - -[[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 = "unarray" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" - -[[package]] -name = "unicode-ident" -version = "1.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00e2473a93778eb0bad35909dff6a10d28e63f792f16ed15e404fca9d5eeedbe" - -[[package]] -name = "unicode-width" -version = "0.1.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" - -[[package]] -name = "unicode-xid" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" - -[[package]] -name = "unreachable" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" -dependencies = [ - "void", -] - -[[package]] -name = "unsigned-varint" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6889a77d49f1f013504cec6bf97a2c730394adedaeb1deb5ea08949a50541105" - -[[package]] -name = "untrusted" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" - -[[package]] -name = "untrusted" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" - -[[package]] -name = "url" -version = "2.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", -] - -[[package]] -name = "utf-8" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" - -[[package]] -name = "utf16_iter" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" - -[[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 = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" -dependencies = [ - "getrandom", - "serde", -] - -[[package]] -name = "uuid" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" -dependencies = [ - "getrandom", -] - -[[package]] -name = "valuable" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" - -[[package]] -name = "vcpkg" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" - -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - -[[package]] -name = "void" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" - -[[package]] -name = "wait-timeout" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" -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 = "want" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" -dependencies = [ - "try-lock", -] - -[[package]] -name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" - -[[package]] -name = "wasm-bindgen" -version = "0.2.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" -dependencies = [ - "cfg-if", - "once_cell", - "rustversion", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" -dependencies = [ - "bumpalo", - "log", - "proc-macro2", - "quote", - "syn 2.0.98", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-futures" -version = "0.4.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" -dependencies = [ - "cfg-if", - "js-sys", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", - "wasm-bindgen-backend", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "wasm-timer" -version = "0.2.5" -source = "git+https://github.com/fusetim/wasm-timer?branch=tim-add-missing-methods#39e1c2818944f804d68d64dae0d5639d22b0e59e" -dependencies = [ - "futures", - "js-sys", - "parking_lot 0.11.2", - "pin-utils", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", -] - -[[package]] -name = "wasm_thread" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a52fc987e67957cab58160d1ea273a2886972ef6f59c7fa0c02e9fe2c8e11706" -dependencies = [ - "async-channel", - "futures", - "js-sys", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "web-sys" -version = "0.3.72" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "webpki-roots" -version = "0.25.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" - -[[package]] -name = "webpki-roots" -version = "0.26.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841c67bff177718f1d4dfefde8d8f0e78f9b6589319ba88312f567fc5841a958" -dependencies = [ - "rustls-pki-types", -] - -[[package]] -name = "widestring" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7219d36b6eac893fa81e84ebe06485e7dcbb616177469b142df14f1f4deb1311" - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-util" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" -dependencies = [ - "windows-sys 0.59.0", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "windows-core" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-registry" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" -dependencies = [ - "windows-result", - "windows-strings", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-result" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-strings" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" -dependencies = [ - "windows-result", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets 0.48.5", -] - -[[package]] -name = "windows-sys" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-sys" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-targets" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" -dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", -] - -[[package]] -name = "windows-targets" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" -dependencies = [ - "windows_aarch64_gnullvm 0.52.6", - "windows_aarch64_msvc 0.52.6", - "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm", - "windows_i686_msvc 0.52.6", - "windows_x86_64_gnu 0.52.6", - "windows_x86_64_gnullvm 0.52.6", - "windows_x86_64_msvc 0.52.6", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" - -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" - -[[package]] -name = "windows_i686_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" - -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" - -[[package]] -name = "windows_i686_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" - -[[package]] -name = "winnow" -version = "0.6.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" -dependencies = [ - "memchr", -] - -[[package]] -name = "winreg" -version = "0.50.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" -dependencies = [ - "cfg-if", - "windows-sys 0.48.0", -] - -[[package]] -name = "write16" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" - -[[package]] -name = "writeable" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" - -[[package]] -name = "ws_stream_wasm" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7999f5f4217fe3818726b66257a4475f71e74ffd190776ad053fa159e50737f5" -dependencies = [ - "async_io_stream", - "futures", - "js-sys", - "log", - "pharos", - "rustc_version 0.4.1", - "send_wrapper 0.6.0", - "thiserror", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", -] - -[[package]] -name = "wyz" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" -dependencies = [ - "tap", -] - -[[package]] -name = "yansi" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" - -[[package]] -name = "yoke" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" -dependencies = [ - "serde", - "stable_deref_trait", - "yoke-derive", - "zerofrom", -] - -[[package]] -name = "yoke-derive" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", - "synstructure 0.13.1", -] - -[[package]] -name = "zerocopy" -version = "0.7.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" -dependencies = [ - "byteorder", - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.7.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", -] - -[[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.98", - "synstructure 0.13.1", -] - -[[package]] -name = "zeroize" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" -dependencies = [ - "zeroize_derive", -] - -[[package]] -name = "zeroize_derive" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", -] - -[[package]] -name = "zerovec" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" -dependencies = [ - "yoke", - "zerofrom", - "zerovec-derive", -] - -[[package]] -name = "zerovec-derive" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", -] - -[[package]] -name = "zip" -version = "0.6.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" -dependencies = [ - "aes", - "byteorder", - "bzip2", - "constant_time_eq 0.1.5", - "crc32fast", - "crossbeam-utils", - "flate2", - "hmac", - "pbkdf2 0.11.0", - "sha1", - "time", - "zstd", -] - -[[package]] -name = "zstd" -version = "0.11.2+zstd.1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" -dependencies = [ - "zstd-safe", -] - -[[package]] -name = "zstd-safe" -version = "5.0.2+zstd.1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" -dependencies = [ - "libc", - "zstd-sys", -] - -[[package]] -name = "zstd-sys" -version = "2.0.13+zstd.1.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa" -dependencies = [ - "cc", - "pkg-config", -] diff --git a/example/app/Cargo.toml b/example/app/Cargo.toml deleted file mode 100644 index a92e0c4bc..000000000 --- a/example/app/Cargo.toml +++ /dev/null @@ -1,28 +0,0 @@ -[package] -name = "app" -version = "0.1.0" -edition = "2021" - -[dependencies] -clap = { version = "4.5.17", features = ["derive"] } -env_logger = "0.11.5" -log = "0.4.22" -mina_bridge_core = { path = "../../core/" } -tokio = "1.40.0" -alloy = { version = "0.3.1", features = ["full", "signer-keystore"] } -alloy-sol-types = "0.8.2" -alloy-contract = "0.3.1" -reqwest = "^0.11" -aligned-sdk = { git = "https://github.com/yetanotherco/aligned_layer.git", rev = "11d1801a86bedb375c8ccdd0d77074a7134a7427" } - -[patch.crates-io] -ark-ff = { git = "https://github.com/lambdaclass/openmina_algebra", rev = "017531e7aaa15a2c856532b0843876e371b01122" } -ark-ec = { git = "https://github.com/lambdaclass/openmina_algebra", rev = "017531e7aaa15a2c856532b0843876e371b01122" } -ark-poly = { git = "https://github.com/lambdaclass/openmina_algebra", rev = "017531e7aaa15a2c856532b0843876e371b01122" } -ark-serialize = { git = "https://github.com/lambdaclass/openmina_algebra", rev = "017531e7aaa15a2c856532b0843876e371b01122" } - -[patch.'https://github.com/openmina/algebra'] -ark-ff = { git = "https://github.com/lambdaclass/openmina_algebra", rev = "017531e7aaa15a2c856532b0843876e371b01122" } -ark-ec = { git = "https://github.com/lambdaclass/openmina_algebra", rev = "017531e7aaa15a2c856532b0843876e371b01122" } -ark-poly = { git = "https://github.com/lambdaclass/openmina_algebra", rev = "017531e7aaa15a2c856532b0843876e371b01122" } -ark-serialize = { git = "https://github.com/lambdaclass/openmina_algebra", rev = "017531e7aaa15a2c856532b0843876e371b01122" } diff --git a/example/app/abi/SudokuValidity.json b/example/app/abi/SudokuValidity.json deleted file mode 100644 index 35a10be34..000000000 --- a/example/app/abi/SudokuValidity.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_stateSettlementAddr","type":"address","internalType":"address"},{"name":"_accountValidationAddr","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"getLatestSolutionTimestamp","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"validateSolution","inputs":[{"name":"proofCommitment","type":"bytes32","internalType":"bytes32"},{"name":"provingSystemAuxDataCommitment","type":"bytes32","internalType":"bytes32"},{"name":"proofGeneratorAddr","type":"bytes20","internalType":"bytes20"},{"name":"batchMerkleRoot","type":"bytes32","internalType":"bytes32"},{"name":"merkleProof","type":"bytes","internalType":"bytes"},{"name":"verificationDataBatchIndex","type":"uint256","internalType":"uint256"},{"name":"pubInput","type":"bytes","internalType":"bytes"},{"name":"batcherPaymentService","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"error","name":"IncorrectZkappAccount","inputs":[{"name":"verificationKeyHash","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"InvalidLedger","inputs":[{"name":"ledgerHash","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"InvalidZkappAccount","inputs":[]},{"type":"error","name":"UnsolvedSudoku","inputs":[]}],"bytecode":{"object":"0x60806040525f600255348015610013575f5ffd5b5060405161194d38038061194d83398181016040528101906100359190610119565b815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050610157565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6100e8826100bf565b9050919050565b6100f8816100de565b8114610102575f5ffd5b50565b5f81519050610113816100ef565b92915050565b5f5f6040838503121561012f5761012e6100bb565b5b5f61013c85828601610105565b925050602061014d85828601610105565b9150509250929050565b6117e9806101645f395ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c80630edb271214610038578063c681e9a314610054575b5f5ffd5b610052600480360381019061004d91906106e4565b610072565b005b61005c61041c565b60405161006991906107df565b60405180910390f35b5f83835f9060209261008693929190610800565b906100919190610850565b90505f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633e16b011826040518263ffffffff1660e01b81526004016100ec91906108bd565b602060405180830381865afa158015610107573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061012b919061090b565b61016c57806040517f76f145ea00000000000000000000000000000000000000000000000000000000815260040161016391906108bd565b60405180910390fd5b5f6040518061010001604052808c81526020018b81526020018a6bffffffffffffffffffffffff1916815260200189815260200188815260200187815260200186868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505081526020018473ffffffffffffffffffffffffffffffffffffffff16815250905060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639029ad15826040518263ffffffff1660e01b815260040161026b9190610a86565b602060405180830381865afa158015610286573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102aa919061090b565b6102e0576040517ff281a18300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b365f868660289080926102f593929190610800565b915091505f82828101906103099190611488565b90505f81610140015160200151604051602001610326919061176c565b6040516020818303038152906040528051906020012090507fdc9c283f73ce17466a01b90d36141b848805a3db129b6b80d581adca52c9b6f35f1b81146103a457806040517f170e89eb00000000000000000000000000000000000000000000000000000000815260040161039b91906108bd565b60405180910390fd5b5f5f1b8261014001515f01516001600881106103c3576103c2611786565b5b6020020151146103d9574260028190555061040b565b6040517fa3790c0e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050505050505050505050565b5f600254905090565b5f604051905090565b5f5ffd5b5f5ffd5b5f819050919050565b61044881610436565b8114610452575f5ffd5b50565b5f813590506104638161043f565b92915050565b5f7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b61049d81610469565b81146104a7575f5ffd5b50565b5f813590506104b881610494565b92915050565b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61050c826104c6565b810181811067ffffffffffffffff8211171561052b5761052a6104d6565b5b80604052505050565b5f61053d610425565b90506105498282610503565b919050565b5f67ffffffffffffffff821115610568576105676104d6565b5b610571826104c6565b9050602081019050919050565b828183375f83830152505050565b5f61059e6105998461054e565b610534565b9050828152602081018484840111156105ba576105b96104c2565b5b6105c584828561057e565b509392505050565b5f82601f8301126105e1576105e06104be565b5b81356105f184826020860161058c565b91505092915050565b5f819050919050565b61060c816105fa565b8114610616575f5ffd5b50565b5f8135905061062781610603565b92915050565b5f5ffd5b5f5ffd5b5f5f83601f84011261064a576106496104be565b5b8235905067ffffffffffffffff8111156106675761066661062d565b5b60208301915083600182028301111561068357610682610631565b5b9250929050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6106b38261068a565b9050919050565b6106c3816106a9565b81146106cd575f5ffd5b50565b5f813590506106de816106ba565b92915050565b5f5f5f5f5f5f5f5f5f6101008a8c0312156107025761070161042e565b5b5f61070f8c828d01610455565b99505060206107208c828d01610455565b98505060406107318c828d016104aa565b97505060606107428c828d01610455565b96505060808a013567ffffffffffffffff81111561076357610762610432565b5b61076f8c828d016105cd565b95505060a06107808c828d01610619565b94505060c08a013567ffffffffffffffff8111156107a1576107a0610432565b5b6107ad8c828d01610635565b935093505060e06107c08c828d016106d0565b9150509295985092959850929598565b6107d9816105fa565b82525050565b5f6020820190506107f25f8301846107d0565b92915050565b5f5ffd5b5f5ffd5b5f5f85851115610813576108126107f8565b5b83861115610824576108236107fc565b5b6001850283019150848603905094509492505050565b5f82905092915050565b5f82821b905092915050565b5f61085b838361083a565b826108668135610436565b925060208210156108a6576108a17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802610844565b831692505b505092915050565b6108b781610436565b82525050565b5f6020820190506108d05f8301846108ae565b92915050565b5f8115159050919050565b6108ea816108d6565b81146108f4575f5ffd5b50565b5f81519050610905816108e1565b92915050565b5f602082840312156109205761091f61042e565b5b5f61092d848285016108f7565b91505092915050565b61093f81610436565b82525050565b61094e81610469565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f61098682610954565b610990818561095e565b93506109a081856020860161096e565b6109a9816104c6565b840191505092915050565b6109bd816105fa565b82525050565b6109cc816106a9565b82525050565b5f61010083015f8301516109e85f860182610936565b5060208301516109fb6020860182610936565b506040830151610a0e6040860182610945565b506060830151610a216060860182610936565b5060808301518482036080860152610a39828261097c565b91505060a0830151610a4e60a08601826109b4565b5060c083015184820360c0860152610a66828261097c565b91505060e0830151610a7b60e08601826109c3565b508091505092915050565b5f6020820190508181035f830152610a9e81846109d2565b905092915050565b5f5ffd5b5f5ffd5b5f81359050610abc816108e1565b92915050565b5f60408284031215610ad757610ad6610aa6565b5b610ae16040610534565b90505f610af084828501610455565b5f830152506020610b0384828501610aae565b60208301525092915050565b5f67ffffffffffffffff821115610b2957610b286104d6565b5b610b32826104c6565b9050602081019050919050565b5f610b51610b4c84610b0f565b610534565b905082815260208101848484011115610b6d57610b6c6104c2565b5b610b7884828561057e565b509392505050565b5f82601f830112610b9457610b936104be565b5b8135610ba4848260208601610b3f565b91505092915050565b5f67ffffffffffffffff82169050919050565b610bc981610bad565b8114610bd3575f5ffd5b50565b5f81359050610be481610bc0565b92915050565b5f63ffffffff82169050919050565b610c0281610bea565b8114610c0c575f5ffd5b50565b5f81359050610c1d81610bf9565b92915050565b5f60a08284031215610c3857610c37610aa6565b5b610c4260a0610534565b90505f610c5184828501610bd6565b5f830152506020610c6484828501610c0f565b6020830152506040610c7884828501610bd6565b6040830152506060610c8c84828501610c0f565b6060830152506080610ca084828501610bd6565b60808301525092915050565b60058110610cb8575f5ffd5b50565b5f81359050610cc981610cac565b92915050565b5f6101c08284031215610ce557610ce4610aa6565b5b610cf06101c0610534565b90505f610cff84828501610cbb565b5f830152506020610d1284828501610cbb565b6020830152506040610d2684828501610cbb565b6040830152506060610d3a84828501610cbb565b6060830152506080610d4e84828501610cbb565b60808301525060a0610d6284828501610cbb565b60a08301525060c0610d7684828501610cbb565b60c08301525060e0610d8a84828501610c0f565b60e083015250610100610d9f84828501610cbb565b61010083015250610120610db584828501610cbb565b61012083015250610140610dcb84828501610cbb565b61014083015250610160610de184828501610cbb565b61016083015250610180610df784828501610cbb565b610180830152506101a0610e0d84828501610cbb565b6101a08301525092915050565b5f67ffffffffffffffff821115610e3457610e336104d6565b5b602082029050919050565b5f610e51610e4c84610e1a565b610534565b90508060208402830185811115610e6b57610e6a610631565b5b835b81811015610e945780610e808882610455565b845260208401935050602081019050610e6d565b5050509392505050565b5f82601f830112610eb257610eb16104be565b5b6008610ebf848285610e3f565b91505092915050565b60038110610ed4575f5ffd5b50565b5f81359050610ee581610ec8565b92915050565b5f67ffffffffffffffff821115610f0557610f046104d6565b5b602082029050919050565b5f60408284031215610f2557610f24610aa6565b5b610f2f6040610534565b90505f610f3e84828501610455565b5f830152506020610f5184828501610455565b60208301525092915050565b5f610f6f610f6a84610eeb565b610534565b90508060408402830185811115610f8957610f88610631565b5b835b81811015610fb25780610f9e8882610f10565b845260208401935050604081019050610f8b565b5050509392505050565b5f82601f830112610fd057610fcf6104be565b5b6007610fdd848285610f5d565b91505092915050565b5f67ffffffffffffffff82111561100057610fff6104d6565b5b602082029050919050565b5f61101d61101884610fe6565b610534565b9050806040840283018581111561103757611036610631565b5b835b81811015611060578061104c8882610f10565b845260208401935050604081019050611039565b5050509392505050565b5f82601f83011261107e5761107d6104be565b5b600f61108b84828561100b565b91505092915050565b5f61070082840312156110aa576110a9610aa6565b5b6110b5610100610534565b90505f6110c484828501610fbc565b5f830152506101c06110d88482850161106a565b6020830152506105806110ed84828501610f10565b6040830152506105c061110284828501610f10565b60608301525061060061111784828501610f10565b60808301525061064061112c84828501610f10565b60a08301525061068061114184828501610f10565b60c0830152506106c061115684828501610f10565b60e08301525092915050565b5f610740828403121561117857611177610aa6565b5b6111826060610534565b90505f61119184828501610ed7565b5f8301525060206111a484828501610ed7565b60208301525060406111b884828501611094565b60408301525092915050565b5f67ffffffffffffffff8211156111de576111dd6104d6565b5b602082029050919050565b5f6111fb6111f6846111c4565b610534565b9050806020840283018581111561121557611214610631565b5b835b8181101561123e578061122a8882610455565b845260208401935050602081019050611217565b5050509392505050565b5f82601f83011261125c5761125b6104be565b5b60056112698482856111e9565b91505092915050565b5f610960828403121561128857611287610aa6565b5b61129260e0610534565b90505f6112a184828501610e9e565b5f830152506101006112b584828501611162565b6020830152506108406112ca84828501610c0f565b6040830152506108606112df84828501611248565b6060830152506109006112f484828501610c0f565b60808301525061092061130984828501610aae565b60a08301525061094082013567ffffffffffffffff81111561132e5761132d610aaa565b5b61133a848285016105cd565b60c08301525092915050565b5f6103c0828403121561135c5761135b610aa6565b5b611367610160610534565b90505f61137684828501610ac2565b5f83015250604061138984828501610455565b602083015250606082013567ffffffffffffffff8111156113ad576113ac610aaa565b5b6113b984828501610b80565b60408301525060806113cd84828501610bd6565b60608301525060a06113e184828501610c0f565b60808301525060c06113f584828501610455565b60a08301525060e061140984828501610ac2565b60c08301525061012061141e84828501610455565b60e08301525061014061143384828501610c23565b610100830152506101e061144984828501610ccf565b610120830152506103a082013567ffffffffffffffff81111561146f5761146e610aaa565b5b61147b84828501611272565b6101408301525092915050565b5f6020828403121561149d5761149c61042e565b5b5f82013567ffffffffffffffff8111156114ba576114b9610432565b5b6114c684828501611346565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6003811061150d5761150c6114cf565b5b50565b5f81905061151d826114fc565b919050565b5f61152c82611510565b9050919050565b61153c81611522565b82525050565b5f60079050919050565b5f81905092915050565b5f819050919050565b604082015f8201516115735f850182610936565b5060208201516115866020850182610936565b50505050565b5f611597838361155f565b60408301905092915050565b5f602082019050919050565b6115b881611542565b6115c2818461154c565b92506115cd82611556565b805f5b838110156115fd5781516115e4878261158c565b96506115ef836115a3565b9250506001810190506115d0565b505050505050565b5f600f9050919050565b5f81905092915050565b5f819050919050565b5f602082019050919050565b61163781611605565b611641818461160f565b925061164c82611619565b805f5b8381101561167c578151611663878261158c565b965061166e83611622565b92505060018101905061164f565b505050505050565b61070082015f8201516116995f8501826115af565b5060208201516116ad6101c085018261162e565b5060408201516116c161058085018261155f565b5060608201516116d56105c085018261155f565b5060808201516116e961060085018261155f565b5060a08201516116fd61064085018261155f565b5060c082015161171161068085018261155f565b5060e08201516117256106c085018261155f565b50505050565b61074082015f8201516117405f850182611533565b5060208201516117536020850182611533565b5060408201516117666040850182611684565b50505050565b5f610740820190506117805f83018461172b565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea2646970667358221220934099dcfcc9adc650d31519036cb85d467682b182104b9d9993a448a139cf7264736f6c634300081c0033","sourceMap":"200:3051:41:-:0;;;1036:1;999:38;;1044:239;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1173:20;1128:15;;:66;;;;;;;;;;;;;;;;;;1253:22;1204:17;;:72;;;;;;;;;;;;;;;;;;1044:239;;200:3051;;88:117:42;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:143::-;753:5;784:6;778:13;769:22;;800:33;827:5;800:33;:::i;:::-;696:143;;;;:::o;845:507::-;924:6;932;981:2;969:9;960:7;956:23;952:32;949:119;;;987:79;;:::i;:::-;949:119;1107:1;1132:64;1188:7;1179:6;1168:9;1164:22;1132:64;:::i;:::-;1122:74;;1078:128;1245:2;1271:64;1327:7;1318:6;1307:9;1303:22;1271:64;:::i;:::-;1261:74;;1216:129;845:507;;;;;:::o;200:3051:41:-;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f5ffd5b5060043610610034575f3560e01c80630edb271214610038578063c681e9a314610054575b5f5ffd5b610052600480360381019061004d91906106e4565b610072565b005b61005c61041c565b60405161006991906107df565b60405180910390f35b5f83835f9060209261008693929190610800565b906100919190610850565b90505f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633e16b011826040518263ffffffff1660e01b81526004016100ec91906108bd565b602060405180830381865afa158015610107573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061012b919061090b565b61016c57806040517f76f145ea00000000000000000000000000000000000000000000000000000000815260040161016391906108bd565b60405180910390fd5b5f6040518061010001604052808c81526020018b81526020018a6bffffffffffffffffffffffff1916815260200189815260200188815260200187815260200186868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505081526020018473ffffffffffffffffffffffffffffffffffffffff16815250905060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639029ad15826040518263ffffffff1660e01b815260040161026b9190610a86565b602060405180830381865afa158015610286573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102aa919061090b565b6102e0576040517ff281a18300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b365f868660289080926102f593929190610800565b915091505f82828101906103099190611488565b90505f81610140015160200151604051602001610326919061176c565b6040516020818303038152906040528051906020012090507fdc9c283f73ce17466a01b90d36141b848805a3db129b6b80d581adca52c9b6f35f1b81146103a457806040517f170e89eb00000000000000000000000000000000000000000000000000000000815260040161039b91906108bd565b60405180910390fd5b5f5f1b8261014001515f01516001600881106103c3576103c2611786565b5b6020020151146103d9574260028190555061040b565b6040517fa3790c0e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050505050505050505050565b5f600254905090565b5f604051905090565b5f5ffd5b5f5ffd5b5f819050919050565b61044881610436565b8114610452575f5ffd5b50565b5f813590506104638161043f565b92915050565b5f7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b61049d81610469565b81146104a7575f5ffd5b50565b5f813590506104b881610494565b92915050565b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61050c826104c6565b810181811067ffffffffffffffff8211171561052b5761052a6104d6565b5b80604052505050565b5f61053d610425565b90506105498282610503565b919050565b5f67ffffffffffffffff821115610568576105676104d6565b5b610571826104c6565b9050602081019050919050565b828183375f83830152505050565b5f61059e6105998461054e565b610534565b9050828152602081018484840111156105ba576105b96104c2565b5b6105c584828561057e565b509392505050565b5f82601f8301126105e1576105e06104be565b5b81356105f184826020860161058c565b91505092915050565b5f819050919050565b61060c816105fa565b8114610616575f5ffd5b50565b5f8135905061062781610603565b92915050565b5f5ffd5b5f5ffd5b5f5f83601f84011261064a576106496104be565b5b8235905067ffffffffffffffff8111156106675761066661062d565b5b60208301915083600182028301111561068357610682610631565b5b9250929050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6106b38261068a565b9050919050565b6106c3816106a9565b81146106cd575f5ffd5b50565b5f813590506106de816106ba565b92915050565b5f5f5f5f5f5f5f5f5f6101008a8c0312156107025761070161042e565b5b5f61070f8c828d01610455565b99505060206107208c828d01610455565b98505060406107318c828d016104aa565b97505060606107428c828d01610455565b96505060808a013567ffffffffffffffff81111561076357610762610432565b5b61076f8c828d016105cd565b95505060a06107808c828d01610619565b94505060c08a013567ffffffffffffffff8111156107a1576107a0610432565b5b6107ad8c828d01610635565b935093505060e06107c08c828d016106d0565b9150509295985092959850929598565b6107d9816105fa565b82525050565b5f6020820190506107f25f8301846107d0565b92915050565b5f5ffd5b5f5ffd5b5f5f85851115610813576108126107f8565b5b83861115610824576108236107fc565b5b6001850283019150848603905094509492505050565b5f82905092915050565b5f82821b905092915050565b5f61085b838361083a565b826108668135610436565b925060208210156108a6576108a17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802610844565b831692505b505092915050565b6108b781610436565b82525050565b5f6020820190506108d05f8301846108ae565b92915050565b5f8115159050919050565b6108ea816108d6565b81146108f4575f5ffd5b50565b5f81519050610905816108e1565b92915050565b5f602082840312156109205761091f61042e565b5b5f61092d848285016108f7565b91505092915050565b61093f81610436565b82525050565b61094e81610469565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f61098682610954565b610990818561095e565b93506109a081856020860161096e565b6109a9816104c6565b840191505092915050565b6109bd816105fa565b82525050565b6109cc816106a9565b82525050565b5f61010083015f8301516109e85f860182610936565b5060208301516109fb6020860182610936565b506040830151610a0e6040860182610945565b506060830151610a216060860182610936565b5060808301518482036080860152610a39828261097c565b91505060a0830151610a4e60a08601826109b4565b5060c083015184820360c0860152610a66828261097c565b91505060e0830151610a7b60e08601826109c3565b508091505092915050565b5f6020820190508181035f830152610a9e81846109d2565b905092915050565b5f5ffd5b5f5ffd5b5f81359050610abc816108e1565b92915050565b5f60408284031215610ad757610ad6610aa6565b5b610ae16040610534565b90505f610af084828501610455565b5f830152506020610b0384828501610aae565b60208301525092915050565b5f67ffffffffffffffff821115610b2957610b286104d6565b5b610b32826104c6565b9050602081019050919050565b5f610b51610b4c84610b0f565b610534565b905082815260208101848484011115610b6d57610b6c6104c2565b5b610b7884828561057e565b509392505050565b5f82601f830112610b9457610b936104be565b5b8135610ba4848260208601610b3f565b91505092915050565b5f67ffffffffffffffff82169050919050565b610bc981610bad565b8114610bd3575f5ffd5b50565b5f81359050610be481610bc0565b92915050565b5f63ffffffff82169050919050565b610c0281610bea565b8114610c0c575f5ffd5b50565b5f81359050610c1d81610bf9565b92915050565b5f60a08284031215610c3857610c37610aa6565b5b610c4260a0610534565b90505f610c5184828501610bd6565b5f830152506020610c6484828501610c0f565b6020830152506040610c7884828501610bd6565b6040830152506060610c8c84828501610c0f565b6060830152506080610ca084828501610bd6565b60808301525092915050565b60058110610cb8575f5ffd5b50565b5f81359050610cc981610cac565b92915050565b5f6101c08284031215610ce557610ce4610aa6565b5b610cf06101c0610534565b90505f610cff84828501610cbb565b5f830152506020610d1284828501610cbb565b6020830152506040610d2684828501610cbb565b6040830152506060610d3a84828501610cbb565b6060830152506080610d4e84828501610cbb565b60808301525060a0610d6284828501610cbb565b60a08301525060c0610d7684828501610cbb565b60c08301525060e0610d8a84828501610c0f565b60e083015250610100610d9f84828501610cbb565b61010083015250610120610db584828501610cbb565b61012083015250610140610dcb84828501610cbb565b61014083015250610160610de184828501610cbb565b61016083015250610180610df784828501610cbb565b610180830152506101a0610e0d84828501610cbb565b6101a08301525092915050565b5f67ffffffffffffffff821115610e3457610e336104d6565b5b602082029050919050565b5f610e51610e4c84610e1a565b610534565b90508060208402830185811115610e6b57610e6a610631565b5b835b81811015610e945780610e808882610455565b845260208401935050602081019050610e6d565b5050509392505050565b5f82601f830112610eb257610eb16104be565b5b6008610ebf848285610e3f565b91505092915050565b60038110610ed4575f5ffd5b50565b5f81359050610ee581610ec8565b92915050565b5f67ffffffffffffffff821115610f0557610f046104d6565b5b602082029050919050565b5f60408284031215610f2557610f24610aa6565b5b610f2f6040610534565b90505f610f3e84828501610455565b5f830152506020610f5184828501610455565b60208301525092915050565b5f610f6f610f6a84610eeb565b610534565b90508060408402830185811115610f8957610f88610631565b5b835b81811015610fb25780610f9e8882610f10565b845260208401935050604081019050610f8b565b5050509392505050565b5f82601f830112610fd057610fcf6104be565b5b6007610fdd848285610f5d565b91505092915050565b5f67ffffffffffffffff82111561100057610fff6104d6565b5b602082029050919050565b5f61101d61101884610fe6565b610534565b9050806040840283018581111561103757611036610631565b5b835b81811015611060578061104c8882610f10565b845260208401935050604081019050611039565b5050509392505050565b5f82601f83011261107e5761107d6104be565b5b600f61108b84828561100b565b91505092915050565b5f61070082840312156110aa576110a9610aa6565b5b6110b5610100610534565b90505f6110c484828501610fbc565b5f830152506101c06110d88482850161106a565b6020830152506105806110ed84828501610f10565b6040830152506105c061110284828501610f10565b60608301525061060061111784828501610f10565b60808301525061064061112c84828501610f10565b60a08301525061068061114184828501610f10565b60c0830152506106c061115684828501610f10565b60e08301525092915050565b5f610740828403121561117857611177610aa6565b5b6111826060610534565b90505f61119184828501610ed7565b5f8301525060206111a484828501610ed7565b60208301525060406111b884828501611094565b60408301525092915050565b5f67ffffffffffffffff8211156111de576111dd6104d6565b5b602082029050919050565b5f6111fb6111f6846111c4565b610534565b9050806020840283018581111561121557611214610631565b5b835b8181101561123e578061122a8882610455565b845260208401935050602081019050611217565b5050509392505050565b5f82601f83011261125c5761125b6104be565b5b60056112698482856111e9565b91505092915050565b5f610960828403121561128857611287610aa6565b5b61129260e0610534565b90505f6112a184828501610e9e565b5f830152506101006112b584828501611162565b6020830152506108406112ca84828501610c0f565b6040830152506108606112df84828501611248565b6060830152506109006112f484828501610c0f565b60808301525061092061130984828501610aae565b60a08301525061094082013567ffffffffffffffff81111561132e5761132d610aaa565b5b61133a848285016105cd565b60c08301525092915050565b5f6103c0828403121561135c5761135b610aa6565b5b611367610160610534565b90505f61137684828501610ac2565b5f83015250604061138984828501610455565b602083015250606082013567ffffffffffffffff8111156113ad576113ac610aaa565b5b6113b984828501610b80565b60408301525060806113cd84828501610bd6565b60608301525060a06113e184828501610c0f565b60808301525060c06113f584828501610455565b60a08301525060e061140984828501610ac2565b60c08301525061012061141e84828501610455565b60e08301525061014061143384828501610c23565b610100830152506101e061144984828501610ccf565b610120830152506103a082013567ffffffffffffffff81111561146f5761146e610aaa565b5b61147b84828501611272565b6101408301525092915050565b5f6020828403121561149d5761149c61042e565b5b5f82013567ffffffffffffffff8111156114ba576114b9610432565b5b6114c684828501611346565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6003811061150d5761150c6114cf565b5b50565b5f81905061151d826114fc565b919050565b5f61152c82611510565b9050919050565b61153c81611522565b82525050565b5f60079050919050565b5f81905092915050565b5f819050919050565b604082015f8201516115735f850182610936565b5060208201516115866020850182610936565b50505050565b5f611597838361155f565b60408301905092915050565b5f602082019050919050565b6115b881611542565b6115c2818461154c565b92506115cd82611556565b805f5b838110156115fd5781516115e4878261158c565b96506115ef836115a3565b9250506001810190506115d0565b505050505050565b5f600f9050919050565b5f81905092915050565b5f819050919050565b5f602082019050919050565b61163781611605565b611641818461160f565b925061164c82611619565b805f5b8381101561167c578151611663878261158c565b965061166e83611622565b92505060018101905061164f565b505050505050565b61070082015f8201516116995f8501826115af565b5060208201516116ad6101c085018261162e565b5060408201516116c161058085018261155f565b5060608201516116d56105c085018261155f565b5060808201516116e961060085018261155f565b5060a08201516116fd61064085018261155f565b5060c082015161171161068085018261155f565b5060e08201516117256106c085018261155f565b50505050565b61074082015f8201516117405f850182611533565b5060208201516117536020850182611533565b5060408201516117666040850182611684565b50505050565b5f610740820190506117805f83018461172b565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea2646970667358221220934099dcfcc9adc650d31519036cb85d467682b182104b9d9993a448a139cf7264736f6c634300081c0033","sourceMap":"200:3051:41:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1538:1711;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1289:120;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1538:1711;1889:18;1918:8;;:13;;1928:2;1918:13;;;;;;;:::i;:::-;1910:22;;;;;:::i;:::-;1889:43;;1947:15;;;;;;;;;;;:32;;;1980:10;1947:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1942:108;;2028:10;2014:25;;;;;;;;;;;:::i;:::-;;;;;;;;1942:108;2060:52;2115:306;;;;;;;;2169:15;2115:306;;;;2198:30;2115:306;;;;2242:18;2115:306;;;;;;;2274:15;2115:306;;;;2303:11;2115:306;;;;2328:26;2115:306;;;;2368:8;;2115:306;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2390:21;2115:306;;;;;2060:361;;2437:17;;;;;;;;;;;:33;;;2471:4;2437:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2432:99;;2499:21;;;;;;;;;;;;;;2432:99;2541:29;;2573:8;;2582:6;2573:17;;;;;;;;;:::i;:::-;2541:49;;;;2600:51;2665:14;;2654:66;;;;;;;:::i;:::-;2600:120;;2799:27;2863:7;:13;;;:29;;;2852:41;;;;;;;;:::i;:::-;;;;;;;;;;;;;2829:74;;;;;;2799:104;;558:66;2940:27;;2917:19;:50;2913:130;;3012:19;2990:42;;;;;;;;;;;:::i;:::-;;;;;;;;2913:130;3117:1;3088:30;;:7;:13;;;:22;;;3111:1;3088:25;;;;;;;:::i;:::-;;;;;;:30;3084:159;;3163:15;3134:26;:44;;;;3084:159;;;3216:16;;;;;;;;;;;;;;3084:159;1879:1370;;;;;;1538:1711;;;;;;;;;:::o;1289:120::-;1350:7;1376:26;;1369:33;;1289:120;:::o;7:75:42:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:150::-;727:7;767:66;760:5;756:78;745:89;;690:150;;;:::o;846:122::-;919:24;937:5;919:24;:::i;:::-;912:5;909:35;899:63;;958:1;955;948:12;899:63;846:122;:::o;974:139::-;1020:5;1058:6;1045:20;1036:29;;1074:33;1101:5;1074:33;:::i;:::-;974:139;;;;:::o;1119:117::-;1228:1;1225;1218:12;1242:117;1351:1;1348;1341:12;1365:102;1406:6;1457:2;1453:7;1448:2;1441:5;1437:14;1433:28;1423:38;;1365:102;;;:::o;1473:180::-;1521:77;1518:1;1511:88;1618:4;1615:1;1608:15;1642:4;1639:1;1632:15;1659:281;1742:27;1764:4;1742:27;:::i;:::-;1734:6;1730:40;1872:6;1860:10;1857:22;1836:18;1824:10;1821:34;1818:62;1815:88;;;1883:18;;:::i;:::-;1815:88;1923:10;1919:2;1912:22;1702:238;1659:281;;:::o;1946:129::-;1980:6;2007:20;;:::i;:::-;1997:30;;2036:33;2064:4;2056:6;2036:33;:::i;:::-;1946:129;;;:::o;2081:307::-;2142:4;2232:18;2224:6;2221:30;2218:56;;;2254:18;;:::i;:::-;2218:56;2292:29;2314:6;2292:29;:::i;:::-;2284:37;;2376:4;2370;2366:15;2358:23;;2081:307;;;:::o;2394:148::-;2492:6;2487:3;2482;2469:30;2533:1;2524:6;2519:3;2515:16;2508:27;2394:148;;;:::o;2548:423::-;2625:5;2650:65;2666:48;2707:6;2666:48;:::i;:::-;2650:65;:::i;:::-;2641:74;;2738:6;2731:5;2724:21;2776:4;2769:5;2765:16;2814:3;2805:6;2800:3;2796:16;2793:25;2790:112;;;2821:79;;:::i;:::-;2790:112;2911:54;2958:6;2953:3;2948;2911:54;:::i;:::-;2631:340;2548:423;;;;;:::o;2990:338::-;3045:5;3094:3;3087:4;3079:6;3075:17;3071:27;3061:122;;3102:79;;:::i;:::-;3061:122;3219:6;3206:20;3244:78;3318:3;3310:6;3303:4;3295:6;3291:17;3244:78;:::i;:::-;3235:87;;3051:277;2990:338;;;;:::o;3334:77::-;3371:7;3400:5;3389:16;;3334:77;;;:::o;3417:122::-;3490:24;3508:5;3490:24;:::i;:::-;3483:5;3480:35;3470:63;;3529:1;3526;3519:12;3470:63;3417:122;:::o;3545:139::-;3591:5;3629:6;3616:20;3607:29;;3645:33;3672:5;3645:33;:::i;:::-;3545:139;;;;:::o;3690:117::-;3799:1;3796;3789:12;3813:117;3922:1;3919;3912:12;3949:552;4006:8;4016:6;4066:3;4059:4;4051:6;4047:17;4043:27;4033:122;;4074:79;;:::i;:::-;4033:122;4187:6;4174:20;4164:30;;4217:18;4209:6;4206:30;4203:117;;;4239:79;;:::i;:::-;4203:117;4353:4;4345:6;4341:17;4329:29;;4407:3;4399:4;4391:6;4387:17;4377:8;4373:32;4370:41;4367:128;;;4414:79;;:::i;:::-;4367:128;3949:552;;;;;:::o;4507:126::-;4544:7;4584:42;4577:5;4573:54;4562:65;;4507:126;;;:::o;4639:96::-;4676:7;4705:24;4723:5;4705:24;:::i;:::-;4694:35;;4639:96;;;:::o;4741:122::-;4814:24;4832:5;4814:24;:::i;:::-;4807:5;4804:35;4794:63;;4853:1;4850;4843:12;4794:63;4741:122;:::o;4869:139::-;4915:5;4953:6;4940:20;4931:29;;4969:33;4996:5;4969:33;:::i;:::-;4869:139;;;;:::o;5014:1725::-;5156:6;5164;5172;5180;5188;5196;5204;5212;5220;5269:3;5257:9;5248:7;5244:23;5240:33;5237:120;;;5276:79;;:::i;:::-;5237:120;5396:1;5421:53;5466:7;5457:6;5446:9;5442:22;5421:53;:::i;:::-;5411:63;;5367:117;5523:2;5549:53;5594:7;5585:6;5574:9;5570:22;5549:53;:::i;:::-;5539:63;;5494:118;5651:2;5677:53;5722:7;5713:6;5702:9;5698:22;5677:53;:::i;:::-;5667:63;;5622:118;5779:2;5805:53;5850:7;5841:6;5830:9;5826:22;5805:53;:::i;:::-;5795:63;;5750:118;5935:3;5924:9;5920:19;5907:33;5967:18;5959:6;5956:30;5953:117;;;5989:79;;:::i;:::-;5953:117;6094:62;6148:7;6139:6;6128:9;6124:22;6094:62;:::i;:::-;6084:72;;5878:288;6205:3;6232:53;6277:7;6268:6;6257:9;6253:22;6232:53;:::i;:::-;6222:63;;6176:119;6362:3;6351:9;6347:19;6334:33;6394:18;6386:6;6383:30;6380:117;;;6416:79;;:::i;:::-;6380:117;6529:64;6585:7;6576:6;6565:9;6561:22;6529:64;:::i;:::-;6511:82;;;;6305:298;6642:3;6669:53;6714:7;6705:6;6694:9;6690:22;6669:53;:::i;:::-;6659:63;;6613:119;5014:1725;;;;;;;;;;;:::o;6745:118::-;6832:24;6850:5;6832:24;:::i;:::-;6827:3;6820:37;6745:118;;:::o;6869:222::-;6962:4;7000:2;6989:9;6985:18;6977:26;;7013:71;7081:1;7070:9;7066:17;7057:6;7013:71;:::i;:::-;6869:222;;;;:::o;7097:117::-;7206:1;7203;7196:12;7220:117;7329:1;7326;7319:12;7343:469;7448:9;7459;7497:8;7485:10;7482:24;7479:111;;;7509:79;;:::i;:::-;7479:111;7615:6;7605:8;7602:20;7599:107;;;7625:79;;:::i;:::-;7599:107;7756:1;7744:10;7740:18;7732:6;7728:31;7715:44;;7795:10;7785:8;7781:25;7768:38;;7343:469;;;;;;;:::o;7818:96::-;7876:6;7904:3;7894:13;;7818:96;;;;:::o;8012:107::-;8056:8;8106:5;8100:4;8096:16;8075:37;;8012:107;;;;:::o;8125:552::-;8216:5;8247:45;8288:3;8281:5;8247:45;:::i;:::-;8317:5;8341:41;8372:8;8359:22;8341:41;:::i;:::-;8332:50;;8406:2;8398:6;8395:14;8392:278;;;8477:169;8562:66;8532:6;8528:2;8524:15;8521:1;8517:23;8477:169;:::i;:::-;8454:5;8433:227;8424:236;;8392:278;8222:455;;8125:552;;;;:::o;8683:118::-;8770:24;8788:5;8770:24;:::i;:::-;8765:3;8758:37;8683:118;;:::o;8807:222::-;8900:4;8938:2;8927:9;8923:18;8915:26;;8951:71;9019:1;9008:9;9004:17;8995:6;8951:71;:::i;:::-;8807:222;;;;:::o;9035:90::-;9069:7;9112:5;9105:13;9098:21;9087:32;;9035:90;;;:::o;9131:116::-;9201:21;9216:5;9201:21;:::i;:::-;9194:5;9191:32;9181:60;;9237:1;9234;9227:12;9181:60;9131:116;:::o;9253:137::-;9307:5;9338:6;9332:13;9323:22;;9354:30;9378:5;9354:30;:::i;:::-;9253:137;;;;:::o;9396:345::-;9463:6;9512:2;9500:9;9491:7;9487:23;9483:32;9480:119;;;9518:79;;:::i;:::-;9480:119;9638:1;9663:61;9716:7;9707:6;9696:9;9692:22;9663:61;:::i;:::-;9653:71;;9609:125;9396:345;;;;:::o;9747:108::-;9824:24;9842:5;9824:24;:::i;:::-;9819:3;9812:37;9747:108;;:::o;9861:::-;9938:24;9956:5;9938:24;:::i;:::-;9933:3;9926:37;9861:108;;:::o;9975:98::-;10026:6;10060:5;10054:12;10044:22;;9975:98;;;:::o;10079:158::-;10152:11;10186:6;10181:3;10174:19;10226:4;10221:3;10217:14;10202:29;;10079:158;;;;:::o;10243:139::-;10332:6;10327:3;10322;10316:23;10373:1;10364:6;10359:3;10355:16;10348:27;10243:139;;;:::o;10388:353::-;10464:3;10492:38;10524:5;10492:38;:::i;:::-;10546:60;10599:6;10594:3;10546:60;:::i;:::-;10539:67;;10615:65;10673:6;10668:3;10661:4;10654:5;10650:16;10615:65;:::i;:::-;10705:29;10727:6;10705:29;:::i;:::-;10700:3;10696:39;10689:46;;10468:273;10388:353;;;;:::o;10747:108::-;10824:24;10842:5;10824:24;:::i;:::-;10819:3;10812:37;10747:108;;:::o;10861:::-;10938:24;10956:5;10938:24;:::i;:::-;10933:3;10926:37;10861:108;;:::o;11081:1839::-;11208:3;11244:6;11239:3;11235:16;11344:4;11337:5;11333:16;11327:23;11363:63;11420:4;11415:3;11411:14;11397:12;11363:63;:::i;:::-;11261:175;11544:4;11537:5;11533:16;11527:23;11563:63;11620:4;11615:3;11611:14;11597:12;11563:63;:::i;:::-;11446:190;11732:4;11725:5;11721:16;11715:23;11751:63;11808:4;11803:3;11799:14;11785:12;11751:63;:::i;:::-;11646:178;11917:4;11910:5;11906:16;11900:23;11936:63;11993:4;11988:3;11984:14;11970:12;11936:63;:::i;:::-;11834:175;12098:4;12091:5;12087:16;12081:23;12151:3;12145:4;12141:14;12134:4;12129:3;12125:14;12118:38;12177:71;12243:4;12229:12;12177:71;:::i;:::-;12169:79;;12019:240;12363:4;12356:5;12352:16;12346:23;12382:63;12439:4;12434:3;12430:14;12416:12;12382:63;:::i;:::-;12269:186;12541:4;12534:5;12530:16;12524:23;12594:3;12588:4;12584:14;12577:4;12572:3;12568:14;12561:38;12620:71;12686:4;12672:12;12620:71;:::i;:::-;12612:79;;12465:237;12801:4;12794:5;12790:16;12784:23;12820:63;12877:4;12872:3;12868:14;12854:12;12820:63;:::i;:::-;12712:181;12910:4;12903:11;;11213:1707;11081:1839;;;;:::o;12926:389::-;13077:4;13115:2;13104:9;13100:18;13092:26;;13164:9;13158:4;13154:20;13150:1;13139:9;13135:17;13128:47;13192:116;13303:4;13294:6;13192:116;:::i;:::-;13184:124;;12926:389;;;;:::o;13321:117::-;13430:1;13427;13420:12;13444:117;13553:1;13550;13543:12;13567:133;13610:5;13648:6;13635:20;13626:29;;13664:30;13688:5;13664:30;:::i;:::-;13567:133;;;;:::o;13767:579::-;13851:5;13895:4;13883:9;13878:3;13874:19;13870:30;13867:117;;;13903:79;;:::i;:::-;13867:117;14002:21;14018:4;14002:21;:::i;:::-;13993:30;;14079:1;14119:49;14164:3;14155:6;14144:9;14140:22;14119:49;:::i;:::-;14112:4;14105:5;14101:16;14094:75;14033:147;14240:2;14281:46;14323:3;14314:6;14303:9;14299:22;14281:46;:::i;:::-;14274:4;14267:5;14263:16;14256:72;14190:149;13767:579;;;;:::o;14352:308::-;14414:4;14504:18;14496:6;14493:30;14490:56;;;14526:18;;:::i;:::-;14490:56;14564:29;14586:6;14564:29;:::i;:::-;14556:37;;14648:4;14642;14638:15;14630:23;;14352:308;;;:::o;14666:425::-;14744:5;14769:66;14785:49;14827:6;14785:49;:::i;:::-;14769:66;:::i;:::-;14760:75;;14858:6;14851:5;14844:21;14896:4;14889:5;14885:16;14934:3;14925:6;14920:3;14916:16;14913:25;14910:112;;;14941:79;;:::i;:::-;14910:112;15031:54;15078:6;15073:3;15068;15031:54;:::i;:::-;14750:341;14666:425;;;;;:::o;15111:340::-;15167:5;15216:3;15209:4;15201:6;15197:17;15193:27;15183:122;;15224:79;;:::i;:::-;15183:122;15341:6;15328:20;15366:79;15441:3;15433:6;15426:4;15418:6;15414:17;15366:79;:::i;:::-;15357:88;;15173:278;15111:340;;;;:::o;15457:101::-;15493:7;15533:18;15526:5;15522:30;15511:41;;15457:101;;;:::o;15564:120::-;15636:23;15653:5;15636:23;:::i;:::-;15629:5;15626:34;15616:62;;15674:1;15671;15664:12;15616:62;15564:120;:::o;15690:137::-;15735:5;15773:6;15760:20;15751:29;;15789:32;15815:5;15789:32;:::i;:::-;15690:137;;;;:::o;15833:93::-;15869:7;15909:10;15902:5;15898:22;15887:33;;15833:93;;;:::o;15932:120::-;16004:23;16021:5;16004:23;:::i;:::-;15997:5;15994:34;15984:62;;16042:1;16039;16032:12;15984:62;15932:120;:::o;16058:137::-;16103:5;16141:6;16128:20;16119:29;;16157:32;16183:5;16157:32;:::i;:::-;16058:137;;;;:::o;16251:1102::-;16324:5;16368:4;16356:9;16351:3;16347:19;16343:30;16340:117;;;16376:79;;:::i;:::-;16340:117;16475:21;16491:4;16475:21;:::i;:::-;16466:30;;16572:1;16612:48;16656:3;16647:6;16636:9;16632:22;16612:48;:::i;:::-;16605:4;16598:5;16594:16;16587:74;16506:166;16736:2;16777:48;16821:3;16812:6;16801:9;16797:22;16777:48;:::i;:::-;16770:4;16763:5;16759:16;16752:74;16682:155;16903:2;16944:48;16988:3;16979:6;16968:9;16964:22;16944:48;:::i;:::-;16937:4;16930:5;16926:16;16919:74;16847:157;17072:2;17113:48;17157:3;17148:6;17137:9;17133:22;17113:48;:::i;:::-;17106:4;17099:5;17095:16;17088:74;17014:159;17244:3;17286:48;17330:3;17321:6;17310:9;17306:22;17286:48;:::i;:::-;17279:4;17272:5;17268:16;17261:74;17183:163;16251:1102;;;;:::o;17359:116::-;17449:1;17442:5;17439:12;17429:40;;17465:1;17462;17455:12;17429:40;17359:116;:::o;17481:173::-;17544:5;17582:6;17569:20;17560:29;;17598:50;17642:5;17598:50;:::i;:::-;17481:173;;;;:::o;17715:2871::-;17793:5;17837:6;17825:9;17820:3;17816:19;17812:32;17809:119;;;17847:79;;:::i;:::-;17809:119;17946:23;17962:6;17946:23;:::i;:::-;17937:32;;18033:1;18073:66;18135:3;18126:6;18115:9;18111:22;18073:66;:::i;:::-;18066:4;18059:5;18055:16;18048:92;17979:172;18212:2;18253:66;18315:3;18306:6;18295:9;18291:22;18253:66;:::i;:::-;18246:4;18239:5;18235:16;18228:92;18161:170;18390:2;18431:66;18493:3;18484:6;18473:9;18469:22;18431:66;:::i;:::-;18424:4;18417:5;18413:16;18406:92;18341:168;18572:2;18613:66;18675:3;18666:6;18655:9;18651:22;18613:66;:::i;:::-;18606:4;18599:5;18595:16;18588:92;18519:172;18757:3;18799:66;18861:3;18852:6;18841:9;18837:22;18799:66;:::i;:::-;18792:4;18785:5;18781:16;18774:92;18701:176;18946:3;18988:66;19050:3;19041:6;19030:9;19026:22;18988:66;:::i;:::-;18981:4;18974:5;18970:16;18963:92;18887:179;19143:3;19185:66;19247:3;19238:6;19227:9;19223:22;19185:66;:::i;:::-;19178:4;19171:5;19167:16;19160:92;19076:187;19340:3;19382:48;19426:3;19417:6;19406:9;19402:22;19382:48;:::i;:::-;19375:4;19368:5;19364:16;19357:74;19273:169;19508:3;19552:66;19614:3;19605:6;19594:9;19590:22;19552:66;:::i;:::-;19543:6;19536:5;19532:18;19525:94;19452:178;19700:3;19744:66;19806:3;19797:6;19786:9;19782:22;19744:66;:::i;:::-;19735:6;19728:5;19724:18;19717:94;19640:182;19891:3;19935:66;19997:3;19988:6;19977:9;19973:22;19935:66;:::i;:::-;19926:6;19919:5;19915:18;19908:94;19832:181;20082:3;20126:66;20188:3;20179:6;20168:9;20164:22;20126:66;:::i;:::-;20117:6;20110:5;20106:18;20099:94;20023:181;20271:3;20315:66;20377:3;20368:6;20357:9;20353:22;20315:66;:::i;:::-;20306:6;20299:5;20295:18;20288:94;20214:179;20457:3;20501:66;20563:3;20554:6;20543:9;20539:22;20501:66;:::i;:::-;20492:6;20485:5;20481:18;20474:94;20403:176;17715:2871;;;;:::o;20592:249::-;20667:4;20757:18;20749:6;20746:30;20743:56;;;20779:18;;:::i;:::-;20743:56;20829:4;20821:6;20817:17;20809:25;;20592:249;;;:::o;20865:643::-;20959:5;20984:79;21000:62;21055:6;21000:62;:::i;:::-;20984:79;:::i;:::-;20975:88;;21083:5;21136:4;21128:6;21124:17;21116:6;21112:30;21165:3;21157:6;21154:15;21151:122;;;21184:79;;:::i;:::-;21151:122;21299:6;21282:220;21316:6;21311:3;21308:15;21282:220;;;21391:3;21420:37;21453:3;21441:10;21420:37;:::i;:::-;21415:3;21408:50;21487:4;21482:3;21478:14;21471:21;;21358:144;21342:4;21337:3;21333:14;21326:21;;21282:220;;;21286:21;20965:543;;20865:643;;;;;:::o;21532:339::-;21601:5;21650:3;21643:4;21635:6;21631:17;21627:27;21617:122;;21658:79;;:::i;:::-;21617:122;21762:4;21784:81;21861:3;21853:6;21845;21784:81;:::i;:::-;21775:90;;21607:264;21532:339;;;;:::o;21877:118::-;21969:1;21962:5;21959:12;21949:40;;21985:1;21982;21975:12;21949:40;21877:118;:::o;22001:177::-;22066:5;22104:6;22091:20;22082:29;;22120:52;22166:5;22120:52;:::i;:::-;22001:177;;;;:::o;22184:277::-;22287:4;22377:18;22369:6;22366:30;22363:56;;;22399:18;;:::i;:::-;22363:56;22449:4;22441:6;22437:17;22429:25;;22184:277;;;:::o;22521:571::-;22598:5;22642:4;22630:9;22625:3;22621:19;22617:30;22614:117;;;22650:79;;:::i;:::-;22614:117;22749:21;22765:4;22749:21;:::i;:::-;22740:30;;22826:1;22866:49;22911:3;22902:6;22891:9;22887:22;22866:49;:::i;:::-;22859:4;22852:5;22848:16;22841:75;22780:147;22983:2;23024:49;23069:3;23060:6;23049:9;23045:22;23024:49;:::i;:::-;23017:4;23010:5;23006:16;22999:75;22937:148;22521:571;;;;:::o;23155:727::-;23277:5;23302:107;23318:90;23401:6;23318:90;:::i;:::-;23302:107;:::i;:::-;23293:116;;23429:5;23482:4;23474:6;23470:17;23462:6;23458:30;23511:3;23503:6;23500:15;23497:122;;;23530:79;;:::i;:::-;23497:122;23645:6;23628:248;23662:6;23657:3;23654:15;23628:248;;;23737:3;23766:65;23827:3;23815:10;23766:65;:::i;:::-;23761:3;23754:78;23861:4;23856:3;23852:14;23845:21;;23704:172;23688:4;23683:3;23679:14;23672:21;;23628:248;;;23632:21;23283:599;;23155:727;;;;;:::o;23945:395::-;24042:5;24091:3;24084:4;24076:6;24072:17;24068:27;24058:122;;24099:79;;:::i;:::-;24058:122;24203:4;24225:109;24330:3;24322:6;24314;24225:109;:::i;:::-;24216:118;;24048:292;23945:395;;;;:::o;24346:278::-;24450:4;24540:18;24532:6;24529:30;24526:56;;;24562:18;;:::i;:::-;24526:56;24612:4;24604:6;24600:17;24592:25;;24346:278;;;:::o;24688:729::-;24811:5;24836:108;24852:91;24936:6;24852:91;:::i;:::-;24836:108;:::i;:::-;24827:117;;24964:5;25017:4;25009:6;25005:17;24997:6;24993:30;25046:3;25038:6;25035:15;25032:122;;;25065:79;;:::i;:::-;25032:122;25180:6;25163:248;25197:6;25192:3;25189:15;25163:248;;;25272:3;25301:65;25362:3;25350:10;25301:65;:::i;:::-;25296:3;25289:78;25396:4;25391:3;25387:14;25380:21;;25239:172;25223:4;25218:3;25214:14;25207:21;;25163:248;;;25167:21;24817:600;;24688:729;;;;;:::o;25481:397::-;25579:5;25628:3;25621:4;25613:6;25609:17;25605:27;25595:122;;25636:79;;:::i;:::-;25595:122;25740:4;25762:110;25868:3;25860:6;25852;25762:110;:::i;:::-;25753:119;;25585:293;25481:397;;;;:::o;25937:1888::-;26013:5;26057:6;26045:9;26040:3;26036:19;26032:32;26029:119;;;26067:79;;:::i;:::-;26029:119;26166:23;26182:6;26166:23;:::i;:::-;26157:32;;26253:1;26293:100;26389:3;26380:6;26369:9;26365:22;26293:100;:::i;:::-;26286:4;26279:5;26275:16;26268:126;26199:206;26476:3;26518:101;26615:3;26606:6;26595:9;26591:22;26518:101;:::i;:::-;26511:4;26504:5;26500:16;26493:127;26415:216;26697:4;26740:77;26813:3;26804:6;26793:9;26789:22;26740:77;:::i;:::-;26733:4;26726:5;26722:16;26715:103;26641:188;26891:4;26934:77;27007:3;26998:6;26987:9;26983:22;26934:77;:::i;:::-;26927:4;26920:5;26916:16;26909:103;26839:184;27093:4;27136:77;27209:3;27200:6;27189:9;27185:22;27136:77;:::i;:::-;27129:4;27122:5;27118:16;27111:103;27033:192;27287:4;27330:77;27403:3;27394:6;27383:9;27379:22;27330:77;:::i;:::-;27323:4;27316:5;27312:16;27305:103;27235:184;27482:4;27525:77;27598:3;27589:6;27578:9;27574:22;27525:77;:::i;:::-;27518:4;27511:5;27507:16;27500:103;27429:185;27686:4;27729:77;27802:3;27793:6;27782:9;27778:22;27729:77;:::i;:::-;27722:4;27715:5;27711:16;27704:103;27624:194;25937:1888;;;;:::o;27890:844::-;27972:5;28016:6;28004:9;27999:3;27995:19;27991:32;27988:119;;;28026:79;;:::i;:::-;27988:119;28125:21;28141:4;28125:21;:::i;:::-;28116:30;;28218:1;28258:68;28322:3;28313:6;28302:9;28298:22;28258:68;:::i;:::-;28251:4;28244:5;28240:16;28233:94;28156:182;28413:2;28454:68;28518:3;28509:6;28498:9;28494:22;28454:68;:::i;:::-;28447:4;28440:5;28436:16;28429:94;28348:186;28598:2;28639:76;28711:3;28702:6;28691:9;28687:22;28639:76;:::i;:::-;28632:4;28625:5;28621:16;28614:102;28544:183;27890:844;;;;:::o;28740:249::-;28815:4;28905:18;28897:6;28894:30;28891:56;;;28927:18;;:::i;:::-;28891:56;28977:4;28969:6;28965:17;28957:25;;28740:249;;;:::o;29013:643::-;29107:5;29132:79;29148:62;29203:6;29148:62;:::i;:::-;29132:79;:::i;:::-;29123:88;;29231:5;29284:4;29276:6;29272:17;29264:6;29260:30;29313:3;29305:6;29302:15;29299:122;;;29332:79;;:::i;:::-;29299:122;29447:6;29430:220;29464:6;29459:3;29456:15;29430:220;;;29539:3;29568:37;29601:3;29589:10;29568:37;:::i;:::-;29563:3;29556:50;29635:4;29630:3;29626:14;29619:21;;29506:144;29490:4;29485:3;29481:14;29474:21;;29430:220;;;29434:21;29113:543;;29013:643;;;;;:::o;29680:339::-;29749:5;29798:3;29791:4;29783:6;29779:17;29775:27;29765:122;;29806:79;;:::i;:::-;29765:122;29910:4;29932:81;30009:3;30001:6;29993;29932:81;:::i;:::-;29923:90;;29755:264;29680:339;;;;:::o;30081:1691::-;30160:5;30204:6;30192:9;30187:3;30183:19;30179:32;30176:119;;;30214:79;;:::i;:::-;30176:119;30313:21;30329:4;30313:21;:::i;:::-;30304:30;;30397:1;30437:72;30505:3;30496:6;30485:9;30481:22;30437:72;:::i;:::-;30430:4;30423:5;30419:16;30412:98;30344:177;30591:3;30633:82;30711:3;30702:6;30691:9;30687:22;30633:82;:::i;:::-;30626:4;30619:5;30615:16;30608:108;30531:196;30794:4;30837:48;30881:3;30872:6;30861:9;30857:22;30837:48;:::i;:::-;30830:4;30823:5;30819:16;30812:74;30737:160;30963:4;31006:72;31074:3;31065:6;31054:9;31050:22;31006:72;:::i;:::-;30999:4;30992:5;30988:16;30981:98;30907:183;31159:4;31202:48;31246:3;31237:6;31226:9;31222:22;31202:48;:::i;:::-;31195:4;31188:5;31184:16;31177:74;31100:162;31328:4;31371:46;31413:3;31404:6;31393:9;31389:22;31371:46;:::i;:::-;31364:4;31357:5;31353:16;31346:72;31272:157;31520:4;31509:9;31505:20;31492:34;31553:18;31545:6;31542:30;31539:117;;;31575:79;;:::i;:::-;31539:117;31695:58;31749:3;31740:6;31729:9;31725:22;31695:58;:::i;:::-;31688:4;31681:5;31677:16;31670:84;31439:326;30081:1691;;;;:::o;31829:2579::-;31903:5;31947:6;31935:9;31930:3;31926:19;31922:32;31919:119;;;31957:79;;:::i;:::-;31919:119;32056:23;32072:6;32056:23;:::i;:::-;32047:32;;32143:1;32183:84;32263:3;32254:6;32243:9;32239:22;32183:84;:::i;:::-;32176:4;32169:5;32165:16;32158:110;32089:190;32348:2;32389:49;32434:3;32425:6;32414:9;32410:22;32389:49;:::i;:::-;32382:4;32375:5;32371:16;32364:75;32289:161;32544:2;32533:9;32529:18;32516:32;32575:18;32567:6;32564:30;32561:117;;;32597:79;;:::i;:::-;32561:117;32717:59;32772:3;32763:6;32752:9;32748:22;32717:59;:::i;:::-;32710:4;32703:5;32699:16;32692:85;32460:328;32850:3;32892:48;32936:3;32927:6;32916:9;32912:22;32892:48;:::i;:::-;32885:4;32878:5;32874:16;32867:74;32798:154;33012:3;33054:48;33098:3;33089:6;33078:9;33074:22;33054:48;:::i;:::-;33047:4;33040:5;33036:16;33029:74;32962:152;33185:3;33227:49;33272:3;33263:6;33252:9;33248:22;33227:49;:::i;:::-;33220:4;33213:5;33209:16;33202:75;33124:164;33351:3;33393:84;33473:3;33464:6;33453:9;33449:22;33393:84;:::i;:::-;33386:4;33379:5;33375:16;33368:110;33298:191;33553:3;33595:49;33640:3;33631:6;33620:9;33616:22;33595:49;:::i;:::-;33588:4;33581:5;33577:16;33570:75;33499:157;33717:3;33761:73;33830:3;33821:6;33810:9;33806:22;33761:73;:::i;:::-;33752:6;33745:5;33741:18;33734:101;33666:180;33912:3;33956:78;34030:3;34021:6;34010:9;34006:22;33956:78;:::i;:::-;33947:6;33940:5;33936:18;33929:106;33856:190;34134:3;34123:9;34119:19;34106:33;34166:18;34158:6;34155:30;34152:117;;;34188:79;;:::i;:::-;34152:117;34310:79;34385:3;34376:6;34365:9;34361:22;34310:79;:::i;:::-;34301:6;34294:5;34290:18;34283:107;34056:345;31829:2579;;;;:::o;34414:539::-;34498:6;34547:2;34535:9;34526:7;34522:23;34518:32;34515:119;;;34553:79;;:::i;:::-;34515:119;34701:1;34690:9;34686:17;34673:31;34731:18;34723:6;34720:30;34717:117;;;34753:79;;:::i;:::-;34717:117;34858:78;34928:7;34919:6;34908:9;34904:22;34858:78;:::i;:::-;34848:88;;34644:302;34414:539;;;;:::o;34959:180::-;35007:77;35004:1;34997:88;35104:4;35101:1;35094:15;35128:4;35125:1;35118:15;35145:124;35237:1;35230:5;35227:12;35217:46;;35243:18;;:::i;:::-;35217:46;35145:124;:::o;35275:149::-;35331:7;35360:5;35349:16;;35366:52;35412:5;35366:52;:::i;:::-;35275:149;;;:::o;35430:::-;35497:9;35530:43;35567:5;35530:43;:::i;:::-;35517:56;;35430:149;;;:::o;35585:155::-;35679:54;35727:5;35679:54;:::i;:::-;35674:3;35667:67;35585:155;;:::o;35746:132::-;35839:6;35867:4;35857:14;;35746:132;;;:::o;35884:161::-;35999:11;36036:3;36021:18;;35884:161;;;;:::o;36051:126::-;36144:4;36167:3;36159:11;;36051:126;;;:::o;36287:497::-;36430:4;36425:3;36421:14;36514:4;36507:5;36503:16;36497:23;36533:63;36590:4;36585:3;36581:14;36567:12;36533:63;:::i;:::-;36445:161;36685:4;36678:5;36674:16;36668:23;36704:63;36761:4;36756:3;36752:14;36738:12;36704:63;:::i;:::-;36616:161;36399:385;36287:497;;:::o;36790:291::-;36915:10;36936:102;37034:3;37026:6;36936:102;:::i;:::-;37070:4;37065:3;37061:14;37047:28;;36790:291;;;;:::o;37087:139::-;37183:4;37215;37210:3;37206:14;37198:22;;37087:139;;;:::o;37342:898::-;37524:80;37598:5;37524:80;:::i;:::-;37620:102;37715:6;37710:3;37620:102;:::i;:::-;37613:109;;37746:82;37822:5;37746:82;:::i;:::-;37851:7;37882:1;37867:366;37892:6;37889:1;37886:13;37867:366;;;37968:6;37962:13;37995:119;38110:3;38095:13;37995:119;:::i;:::-;37988:126;;38137:86;38216:6;38137:86;:::i;:::-;38127:96;;37927:306;37914:1;37911;37907:9;37902:14;;37867:366;;;37871:14;37500:740;;;37342:898;;:::o;38246:133::-;38340:6;38368:4;38358:14;;38246:133;;;:::o;38385:162::-;38501:11;38538:3;38523:18;;38385:162;;;;:::o;38553:127::-;38647:4;38670:3;38662:11;;38553:127;;;:::o;38686:140::-;38783:4;38815;38810:3;38806:14;38798:22;;38686:140;;;:::o;38944:904::-;39128:81;39203:5;39128:81;:::i;:::-;39225:103;39321:6;39316:3;39225:103;:::i;:::-;39218:110;;39352:83;39429:5;39352:83;:::i;:::-;39458:7;39489:1;39474:367;39499:6;39496:1;39493:13;39474:367;;;39575:6;39569:13;39602:119;39717:3;39702:13;39602:119;:::i;:::-;39595:126;;39744:87;39824:6;39744:87;:::i;:::-;39734:97;;39534:307;39521:1;39518;39514:9;39509:14;;39474:367;;;39478:14;39104:744;;;38944:904;;:::o;39956:2161::-;40097:6;40092:3;40088:16;40191:4;40184:5;40180:16;40174:23;40210:165;40369:4;40364:3;40360:14;40346:12;40210:165;:::i;:::-;40114:271;40479:4;40472:5;40468:16;40462:23;40498:169;40659:6;40654:3;40650:16;40636:12;40498:169;:::i;:::-;40395:282;40766:4;40759:5;40755:16;40749:23;40785:121;40898:6;40893:3;40889:16;40875:12;40785:121;:::i;:::-;40687:229;41001:4;40994:5;40990:16;40984:23;41020:121;41133:6;41128:3;41124:16;41110:12;41020:121;:::i;:::-;40926:225;41244:4;41237:5;41233:16;41227:23;41263:121;41376:6;41371:3;41367:16;41353:12;41263:121;:::i;:::-;41161:233;41479:4;41472:5;41468:16;41462:23;41498:121;41611:6;41606:3;41602:16;41588:12;41498:121;:::i;:::-;41404:225;41715:4;41708:5;41704:16;41698:23;41734:121;41847:6;41842:3;41838:16;41824:12;41734:121;:::i;:::-;41639:226;41960:4;41953:5;41949:16;41943:23;41979:121;42092:6;42087:3;42083:16;42069:12;41979:121;:::i;:::-;41875:235;40066:2051;39956:2161;;:::o;42237:821::-;42400:6;42395:3;42391:16;42502:4;42495:5;42491:16;42485:23;42521:80;42595:4;42590:3;42586:14;42572:12;42521:80;:::i;:::-;42417:194;42709:4;42702:5;42698:16;42692:23;42728:80;42802:4;42797:3;42793:14;42779:12;42728:80;:::i;:::-;42621:197;42905:4;42898:5;42894:16;42888:23;42924:117;43035:4;43030:3;43026:14;43012:12;42924:117;:::i;:::-;42828:223;42369:689;42237:821;;:::o;43064:356::-;43223:4;43261;43250:9;43246:20;43238:28;;43276:137;43410:1;43399:9;43395:17;43386:6;43276:137;:::i;:::-;43064:356;;;;:::o;43426:180::-;43474:77;43471:1;43464:88;43571:4;43568:1;43561:15;43595:4;43592:1;43585:15","linkReferences":{}},"methodIdentifiers":{"getLatestSolutionTimestamp()":"c681e9a3","validateSolution(bytes32,bytes32,bytes20,bytes32,bytes,uint256,bytes,address)":"0edb2712"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_stateSettlementAddr\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_accountValidationAddr\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"verificationKeyHash\",\"type\":\"bytes32\"}],\"name\":\"IncorrectZkappAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"ledgerHash\",\"type\":\"bytes32\"}],\"name\":\"InvalidLedger\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidZkappAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsolvedSudoku\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"getLatestSolutionTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"proofCommitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"provingSystemAuxDataCommitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes20\",\"name\":\"proofGeneratorAddr\",\"type\":\"bytes20\"},{\"internalType\":\"bytes32\",\"name\":\"batchMerkleRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"merkleProof\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"verificationDataBatchIndex\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"pubInput\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"batcherPaymentService\",\"type\":\"address\"}],\"name\":\"validateSolution\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"validateSolution(bytes32,bytes32,bytes20,bytes32,bytes,uint256,bytes,address)\":{\"notice\":\"Validates a Sudoku solution by bridging from Mina, and stores the last Unix time it was solved at.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/SudokuValidity.sol\":\"SudokuValidity\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades/=lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin/=lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/\",\":aligned_layer/=lib/mina_bridge/contract/lib/aligned_layer/\",\":ds-test/=lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/\",\":eigenlayer-core-contracts/=lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/core/\",\":eigenlayer-core/=lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/\",\":eigenlayer-middleware/=lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/\",\":eigenlayer-scripts/=lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/script/\",\":erc4626-tests/=lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/mina_bridge/contract/lib/aligned_layer/claim_contracts/lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":mina_bridge/=lib/mina_bridge/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol\":{\"keccak256\":\"0x3f67ab9b510b02dc3c07014b49785f1e167401bdb39cc10f737bbf545632d938\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://48d1267e2df6c8ac9b8f419269ff3d23be9b62606ee6b6d2278c27ffebfd73aa\",\"dweb:/ipfs/QmaFyywKCm1eotKjF1evryW8BMQJzPDstZm1wMRW79phXG\"]},\"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983\",\"dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18\"]},\"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0xab76a9f4eff865cbb689f627cf98263488765519d7a4ec5ffbcb0ca4972842f9\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ff57ce18e8350bf39f190645db0988bc0f1279f1872150a114a1b520c38a2914\",\"dweb:/ipfs/QmSsUXkNUqYuJgGRumHTSs9rAaboGjecotcM4xHrdBYWaZ\"]},\"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91\",\"dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz\"]},\"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol\":{\"keccak256\":\"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc\",\"dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR\"]},\"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8\",\"dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG\"]},\"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol\":{\"keccak256\":\"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324\",\"dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5\"]},\"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d\",\"dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx\"]},\"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IRewardsCoordinator.sol\":{\"keccak256\":\"0xeab6f1140a90eb7f107d95bae1e8b2ecfbfe36282d62c9df69e6a564c2c59771\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://785cd2777cdcab3b827b5eef2a4dae02c56db07252fdcefd8dd1016be034dc71\",\"dweb:/ipfs/QmNyDFchTuMeiVoxNEfQw96JVq7DfkohGz1txKXe7HyNbq\"]},\"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c\",\"dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9\"]},\"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol\":{\"keccak256\":\"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232\",\"dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY\"]},\"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]},\"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0x68bf02a443fc8b2f612eba3d39bfefa5f61f78b549f111cdecec5f2c58236a52\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://76bc6875ce74128b861fdac5fd1c0c72f3cc9bacf67fa4a73721b95fb23959ef\",\"dweb:/ipfs/QmPix4WJmf9fXyMZxfgwXEHBcg7V4NAbRqs4HUf5YrSJcM\"]},\"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol\":{\"keccak256\":\"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7\",\"dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq\"]},\"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol\":{\"keccak256\":\"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f\",\"dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ\"]},\"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol\":{\"keccak256\":\"0x9095fc29b96d102b10c02d44b3a6fbfa25593ef6ae4a810363ab885b9e6b0f71\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0945132d482d56278edddb1d32209903c4d3839c87ba4317aadd97dc23610d0f\",\"dweb:/ipfs/QmVuM2aLRHxitx4rPx3GTYTBCVNcjYn6sHBRr1biUjLBP5\"]},\"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/permissions/Pausable.sol\":{\"keccak256\":\"0xce8ee0ab28f2bce9e94aa19fffe55bebef080327632ac98ff3ab14994b369bc0\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5c7e2be97a8840fa2a0434077a36136553a84efd9bff4b46712ce9fddb813a6a\",\"dweb:/ipfs/QmZKvgPxLAbGo1CqTA4AX6MCDPFLSSNt43ZKWRjvvzFp7S\"]},\"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/BLSSignatureChecker.sol\":{\"keccak256\":\"0x3a5c205c596d3d73c7afa63ffbbfac8204f6d6a26c151ef26b47278981c3c0fe\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://4beb88bf5b7c7e614f0d87b157d7a4b67afbf1cc93f3127622bd66f696799241\",\"dweb:/ipfs/QmWJKb6qsd69bWgpAHX6deCkJqmJdo9oBLQAXJk97gWEE2\"]},\"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/ServiceManagerBase.sol\":{\"keccak256\":\"0x7e32ef76daf32e5eb5a93cecf204223e64243f42afe70c7ca71ad3db3925b9c4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://19c10aa22f2e86e27e946b65c434e541caa6af06fcdde46c3b5e9b42890bd221\",\"dweb:/ipfs/QmPb5qDRdbJTniKSqsbjVhbtwdb72G9hWPYcHtVvj1zBxg\"]},\"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/ServiceManagerBaseStorage.sol\":{\"keccak256\":\"0xa544114dbf6d973a815f997a2ac9237c531c40b08c91d3a65a23b152ed621e1e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://4cf69f9be7d3f3c4184b61b267280a829040973633ea9d95e2ec0dbf70f40a2e\",\"dweb:/ipfs/QmT2HeCJWBLX2p4KAWnyU318MMx9USb2brqCKq1vn2pXpR\"]},\"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IBLSApkRegistry.sol\":{\"keccak256\":\"0xc07a5edfd95ab4f16f16a8dc8e76eadf4b0e90fe49db90540d01daaad86898c5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://52b53266450a53da641e82d8ae3be93c5e09f8342b4ea0cc96bb9038d8406354\",\"dweb:/ipfs/QmVuoiQyqPTLCGnyt8zDaxiyaj4ETdgTGKv4MDHWzqEDjp\"]},\"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IBLSSignatureChecker.sol\":{\"keccak256\":\"0xee5823a6674e553c71f5e127f08245827eb116d1ad418b5a7f2a9d6985fd95e0\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://94aa26debddca6c0784585340cf891de4c2d7edaa3e5ec7229af9730312a5a51\",\"dweb:/ipfs/QmWbHGbM7eVYTAmrCVaDU8b4YTm9VAN82XgLDR78uHC7vj\"]},\"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IIndexRegistry.sol\":{\"keccak256\":\"0x83b2d56aacf27e65c4959a832c5de573e013908c044f6e48ea8284ac5282ae2b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://877af382587e96bb39bcc6db8bb5e4b871db5025c52347d4bee9afeaa4a6cc8d\",\"dweb:/ipfs/QmdnhsQCChzq2o5NgbeT3JxSsEcMm1PC9QW6zenZNPjD9F\"]},\"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IRegistry.sol\":{\"keccak256\":\"0x51426a17fb7e54bd3720e2890104e97a8559a13ff248b3d6b840916751c143d3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://01f91289e6100d528cb8b318cb14ff22a0bc52882c9d4db41585e030cc9ddc25\",\"dweb:/ipfs/Qmb22nqGrsrtNovHRwbMCvDHGENuxAgrWu3Db4p7Er2MHY\"]},\"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IRegistryCoordinator.sol\":{\"keccak256\":\"0xdd8effb082c1d5957d5ff43d7c59497b32866a6d82bcc7d5efa49ea9bc9b3385\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cb33a2a1446585b13b7a509e880c60d658d2d2522ec48a9f02e30d2cff54002d\",\"dweb:/ipfs/QmVNG8ZPZkXzNEadPdTj1uBYLiZdCnYfsE5iGU6nJcJXiD\"]},\"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IServiceManager.sol\":{\"keccak256\":\"0x7602cfb4397a114a0ed60e70e8e1d729fdcf406b585838181b3cb3ffa6ac9a9a\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b718fa016a13a2a5ce298bc5ea7495cc70cf9c358211c75595d5c9dde9a6cc0f\",\"dweb:/ipfs/QmQNrVmU7P7pRqGBJuTQDkjf3wMDY2kJm7zXdtQwsQTbzY\"]},\"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IServiceManagerUI.sol\":{\"keccak256\":\"0x365761699b4a5b7360ee6c75f12606eefc4b0394754c8b8e1e1eefec0cba7ffb\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ac14ada180b66cbbc5f9de0d6b4bb87b5946d2a9569ae88f2f62aaca47e879a8\",\"dweb:/ipfs/QmcN9xKYF24naNWc6cYah9suz5gJSYE9nPj9eZFWnP35VX\"]},\"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IStakeRegistry.sol\":{\"keccak256\":\"0x1b8b4d757c1b804bc4cf6fbbf8bf8f89ebdeb30a31014751fe7d01deb9d513d4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://984bf2777b898ed187d28997f9783f5c293a1a1848e3e9aa470ce9183d454c97\",\"dweb:/ipfs/Qme3aTpBrkLu8wYHFMZbCfhXHoZ1M6SpXkeC237T9BuU5B\"]},\"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/libraries/BN254.sol\":{\"keccak256\":\"0xb428c8d0c3b325507a88a61a80115493eb88606ccc19ed64a31e11294ab853b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7b6fb935bfe0494e6ff970c8f30a86d5f4cf5c3e0967300c28cd383c043acae\",\"dweb:/ipfs/QmUHfFZaVjLPXhkBmcxrZhAHZaSFQDqXtrLGpjGBQBa5Ki\"]},\"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/libraries/BitmapUtils.sol\":{\"keccak256\":\"0x44315ac460be30a6b18fd4df4d1b8afb46653bf4dc06ca9f93c32353fd0605c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da14f2ead3a375b02afd09d4a02edddf7b63a88945746b96789b2473184fdb04\",\"dweb:/ipfs/QmRqcjxa2Vv2MrLdPeAwsktXdWTirapEDsRbJCyYRtKT6g\"]},\"lib/mina_bridge/contract/lib/aligned_layer/contracts/src/core/AlignedLayerServiceManager.sol\":{\"keccak256\":\"0x318fdb1cf3332466f725c56f6de37daf4b2078013d3e4c7a5d20be96b8259a29\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0e1c509ab8add93c822adc90092ddd3140a0ecb9cc2104ce420a5cdb18138569\",\"dweb:/ipfs/QmRUrZ2tYofMww63P2NRo4fgx4DRBBNRHZbmWayMiAqeMi\"]},\"lib/mina_bridge/contract/lib/aligned_layer/contracts/src/core/AlignedLayerServiceManagerStorage.sol\":{\"keccak256\":\"0x7359959b102fcb5f313d7a0a4a2497ff651c1836ec5259f4f86bd5d20da502ce\",\"urls\":[\"bzz-raw://e1990be0b54c7ab6734ff3096aac61c951d762e0dc6d52d3890a364fc1d92569\",\"dweb:/ipfs/QmevhuweQnjTVBmxTyWucznnQ68kU1U5uHvtYm5FvkBfRR\"]},\"lib/mina_bridge/contract/lib/aligned_layer/contracts/src/core/IAlignedLayerServiceManager.sol\":{\"keccak256\":\"0xdcec4919e7fdf7855a7f831291a4e5b3345739c88d2c6026f9b953d42f773c48\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2c37687aac70fa1281b5ccceb6208b5044eeb3c055286c20793632efd7f36adc\",\"dweb:/ipfs/Qmb9CC8RumoALvjjUujbyCZWokzvg4feSEoQFZ3swdggLT\"]},\"lib/mina_bridge/contract/src/MinaAccountValidationExample.sol\":{\"keccak256\":\"0xa9ee818322d8de643216c4d9d255277a6eaee06819e047e69c0f7d4bea5b366a\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://a2229c41efb4d28eb61d80f8b36c3b97e9d6ae3c3dc7edc834ccceb6da33ac9e\",\"dweb:/ipfs/QmTXT7CySKmsJhWEhdEYFvTUB61HReFhsY2b2k1jPWtVmN\"]},\"lib/mina_bridge/contract/src/MinaStateSettlementExample.sol\":{\"keccak256\":\"0x6111e43655e2d21bd363fa13067a280834ea17d6ee03c0d6ea16d2fa7800696e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8ac76890e276df1edfd38d74791e4abb01e6e95f0c6162bc929dd2b7b1dff3e9\",\"dweb:/ipfs/QmVNyDMVEguPCKuQVYRH61BdvbT9DBMrFpKWMapmYmZqe8\"]},\"src/SudokuValidity.sol\":{\"keccak256\":\"0x4de18d94c51c326180ef78410c0901c3cbdf95989f7150d0a6f68f23d8c622ab\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://db4f5d6977cb9ed524314d54090614e553dc2fd4e82f5b94c402b9597cc9400b\",\"dweb:/ipfs/QmRCrb8RD6oMCmwfgXZCKnSLaVQzR5iWedM8yoU3AH6WvK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_stateSettlementAddr","type":"address"},{"internalType":"address","name":"_accountValidationAddr","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"bytes32","name":"verificationKeyHash","type":"bytes32"}],"type":"error","name":"IncorrectZkappAccount"},{"inputs":[{"internalType":"bytes32","name":"ledgerHash","type":"bytes32"}],"type":"error","name":"InvalidLedger"},{"inputs":[],"type":"error","name":"InvalidZkappAccount"},{"inputs":[],"type":"error","name":"UnsolvedSudoku"},{"inputs":[],"stateMutability":"view","type":"function","name":"getLatestSolutionTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"proofCommitment","type":"bytes32"},{"internalType":"bytes32","name":"provingSystemAuxDataCommitment","type":"bytes32"},{"internalType":"bytes20","name":"proofGeneratorAddr","type":"bytes20"},{"internalType":"bytes32","name":"batchMerkleRoot","type":"bytes32"},{"internalType":"bytes","name":"merkleProof","type":"bytes"},{"internalType":"uint256","name":"verificationDataBatchIndex","type":"uint256"},{"internalType":"bytes","name":"pubInput","type":"bytes"},{"internalType":"address","name":"batcherPaymentService","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"validateSolution"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{"validateSolution(bytes32,bytes32,bytes20,bytes32,bytes,uint256,bytes,address)":{"notice":"Validates a Sudoku solution by bridging from Mina, and stores the last Unix time it was solved at."}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades/=lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/","@openzeppelin/=lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/","aligned_layer/=lib/mina_bridge/contract/lib/aligned_layer/","ds-test/=lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/ds-test/src/","eigenlayer-contracts/=lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/","eigenlayer-core-contracts/=lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/core/","eigenlayer-core/=lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/","eigenlayer-middleware/=lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/","eigenlayer-scripts/=lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/script/","erc4626-tests/=lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/mina_bridge/contract/lib/aligned_layer/claim_contracts/lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","mina_bridge/=lib/mina_bridge/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/SudokuValidity.sol":"SudokuValidity"},"evmVersion":"cancun","libraries":{}},"sources":{"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol":{"keccak256":"0x3f67ab9b510b02dc3c07014b49785f1e167401bdb39cc10f737bbf545632d938","urls":["bzz-raw://48d1267e2df6c8ac9b8f419269ff3d23be9b62606ee6b6d2278c27ffebfd73aa","dweb:/ipfs/QmaFyywKCm1eotKjF1evryW8BMQJzPDstZm1wMRW79phXG"],"license":"BUSL-1.1"},"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00","urls":["bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983","dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18"],"license":"BUSL-1.1"},"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol":{"keccak256":"0xab76a9f4eff865cbb689f627cf98263488765519d7a4ec5ffbcb0ca4972842f9","urls":["bzz-raw://ff57ce18e8350bf39f190645db0988bc0f1279f1872150a114a1b520c38a2914","dweb:/ipfs/QmSsUXkNUqYuJgGRumHTSs9rAaboGjecotcM4xHrdBYWaZ"],"license":"BUSL-1.1"},"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol":{"keccak256":"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c","urls":["bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91","dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz"],"license":"CC0-1.0"},"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol":{"keccak256":"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba","urls":["bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc","dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR"],"license":"BUSL-1.1"},"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol":{"keccak256":"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c","urls":["bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8","dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG"],"license":"BUSL-1.1"},"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol":{"keccak256":"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f","urls":["bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324","dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5"],"license":"BUSL-1.1"},"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":{"keccak256":"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49","urls":["bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d","dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx"],"license":"BUSL-1.1"},"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IRewardsCoordinator.sol":{"keccak256":"0xeab6f1140a90eb7f107d95bae1e8b2ecfbfe36282d62c9df69e6a564c2c59771","urls":["bzz-raw://785cd2777cdcab3b827b5eef2a4dae02c56db07252fdcefd8dd1016be034dc71","dweb:/ipfs/QmNyDFchTuMeiVoxNEfQw96JVq7DfkohGz1txKXe7HyNbq"],"license":"BUSL-1.1"},"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"keccak256":"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092","urls":["bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c","dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9"],"license":"BUSL-1.1"},"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol":{"keccak256":"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79","urls":["bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232","dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY"],"license":"BUSL-1.1"},"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"},"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol":{"keccak256":"0x68bf02a443fc8b2f612eba3d39bfefa5f61f78b549f111cdecec5f2c58236a52","urls":["bzz-raw://76bc6875ce74128b861fdac5fd1c0c72f3cc9bacf67fa4a73721b95fb23959ef","dweb:/ipfs/QmPix4WJmf9fXyMZxfgwXEHBcg7V4NAbRqs4HUf5YrSJcM"],"license":"BUSL-1.1"},"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol":{"keccak256":"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377","urls":["bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7","dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq"],"license":"BUSL-1.1"},"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol":{"keccak256":"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d","urls":["bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f","dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ"],"license":"BUSL-1.1"},"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":{"keccak256":"0x9095fc29b96d102b10c02d44b3a6fbfa25593ef6ae4a810363ab885b9e6b0f71","urls":["bzz-raw://0945132d482d56278edddb1d32209903c4d3839c87ba4317aadd97dc23610d0f","dweb:/ipfs/QmVuM2aLRHxitx4rPx3GTYTBCVNcjYn6sHBRr1biUjLBP5"],"license":"MIT"},"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/permissions/Pausable.sol":{"keccak256":"0xce8ee0ab28f2bce9e94aa19fffe55bebef080327632ac98ff3ab14994b369bc0","urls":["bzz-raw://5c7e2be97a8840fa2a0434077a36136553a84efd9bff4b46712ce9fddb813a6a","dweb:/ipfs/QmZKvgPxLAbGo1CqTA4AX6MCDPFLSSNt43ZKWRjvvzFp7S"],"license":"BUSL-1.1"},"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888","urls":["bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a","dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb"],"license":"MIT"},"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e","urls":["bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497","dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8"],"license":"MIT"},"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3","urls":["bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4","dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt"],"license":"MIT"},"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/BLSSignatureChecker.sol":{"keccak256":"0x3a5c205c596d3d73c7afa63ffbbfac8204f6d6a26c151ef26b47278981c3c0fe","urls":["bzz-raw://4beb88bf5b7c7e614f0d87b157d7a4b67afbf1cc93f3127622bd66f696799241","dweb:/ipfs/QmWJKb6qsd69bWgpAHX6deCkJqmJdo9oBLQAXJk97gWEE2"],"license":"BUSL-1.1"},"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/ServiceManagerBase.sol":{"keccak256":"0x7e32ef76daf32e5eb5a93cecf204223e64243f42afe70c7ca71ad3db3925b9c4","urls":["bzz-raw://19c10aa22f2e86e27e946b65c434e541caa6af06fcdde46c3b5e9b42890bd221","dweb:/ipfs/QmPb5qDRdbJTniKSqsbjVhbtwdb72G9hWPYcHtVvj1zBxg"],"license":"BUSL-1.1"},"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/ServiceManagerBaseStorage.sol":{"keccak256":"0xa544114dbf6d973a815f997a2ac9237c531c40b08c91d3a65a23b152ed621e1e","urls":["bzz-raw://4cf69f9be7d3f3c4184b61b267280a829040973633ea9d95e2ec0dbf70f40a2e","dweb:/ipfs/QmT2HeCJWBLX2p4KAWnyU318MMx9USb2brqCKq1vn2pXpR"],"license":"BUSL-1.1"},"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IBLSApkRegistry.sol":{"keccak256":"0xc07a5edfd95ab4f16f16a8dc8e76eadf4b0e90fe49db90540d01daaad86898c5","urls":["bzz-raw://52b53266450a53da641e82d8ae3be93c5e09f8342b4ea0cc96bb9038d8406354","dweb:/ipfs/QmVuoiQyqPTLCGnyt8zDaxiyaj4ETdgTGKv4MDHWzqEDjp"],"license":"BUSL-1.1"},"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IBLSSignatureChecker.sol":{"keccak256":"0xee5823a6674e553c71f5e127f08245827eb116d1ad418b5a7f2a9d6985fd95e0","urls":["bzz-raw://94aa26debddca6c0784585340cf891de4c2d7edaa3e5ec7229af9730312a5a51","dweb:/ipfs/QmWbHGbM7eVYTAmrCVaDU8b4YTm9VAN82XgLDR78uHC7vj"],"license":"BUSL-1.1"},"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IIndexRegistry.sol":{"keccak256":"0x83b2d56aacf27e65c4959a832c5de573e013908c044f6e48ea8284ac5282ae2b","urls":["bzz-raw://877af382587e96bb39bcc6db8bb5e4b871db5025c52347d4bee9afeaa4a6cc8d","dweb:/ipfs/QmdnhsQCChzq2o5NgbeT3JxSsEcMm1PC9QW6zenZNPjD9F"],"license":"BUSL-1.1"},"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IRegistry.sol":{"keccak256":"0x51426a17fb7e54bd3720e2890104e97a8559a13ff248b3d6b840916751c143d3","urls":["bzz-raw://01f91289e6100d528cb8b318cb14ff22a0bc52882c9d4db41585e030cc9ddc25","dweb:/ipfs/Qmb22nqGrsrtNovHRwbMCvDHGENuxAgrWu3Db4p7Er2MHY"],"license":"BUSL-1.1"},"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IRegistryCoordinator.sol":{"keccak256":"0xdd8effb082c1d5957d5ff43d7c59497b32866a6d82bcc7d5efa49ea9bc9b3385","urls":["bzz-raw://cb33a2a1446585b13b7a509e880c60d658d2d2522ec48a9f02e30d2cff54002d","dweb:/ipfs/QmVNG8ZPZkXzNEadPdTj1uBYLiZdCnYfsE5iGU6nJcJXiD"],"license":"BUSL-1.1"},"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IServiceManager.sol":{"keccak256":"0x7602cfb4397a114a0ed60e70e8e1d729fdcf406b585838181b3cb3ffa6ac9a9a","urls":["bzz-raw://b718fa016a13a2a5ce298bc5ea7495cc70cf9c358211c75595d5c9dde9a6cc0f","dweb:/ipfs/QmQNrVmU7P7pRqGBJuTQDkjf3wMDY2kJm7zXdtQwsQTbzY"],"license":"BUSL-1.1"},"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IServiceManagerUI.sol":{"keccak256":"0x365761699b4a5b7360ee6c75f12606eefc4b0394754c8b8e1e1eefec0cba7ffb","urls":["bzz-raw://ac14ada180b66cbbc5f9de0d6b4bb87b5946d2a9569ae88f2f62aaca47e879a8","dweb:/ipfs/QmcN9xKYF24naNWc6cYah9suz5gJSYE9nPj9eZFWnP35VX"],"license":"BUSL-1.1"},"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/interfaces/IStakeRegistry.sol":{"keccak256":"0x1b8b4d757c1b804bc4cf6fbbf8bf8f89ebdeb30a31014751fe7d01deb9d513d4","urls":["bzz-raw://984bf2777b898ed187d28997f9783f5c293a1a1848e3e9aa470ce9183d454c97","dweb:/ipfs/Qme3aTpBrkLu8wYHFMZbCfhXHoZ1M6SpXkeC237T9BuU5B"],"license":"BUSL-1.1"},"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/libraries/BN254.sol":{"keccak256":"0xb428c8d0c3b325507a88a61a80115493eb88606ccc19ed64a31e11294ab853b3","urls":["bzz-raw://d7b6fb935bfe0494e6ff970c8f30a86d5f4cf5c3e0967300c28cd383c043acae","dweb:/ipfs/QmUHfFZaVjLPXhkBmcxrZhAHZaSFQDqXtrLGpjGBQBa5Ki"],"license":"MIT"},"lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/src/libraries/BitmapUtils.sol":{"keccak256":"0x44315ac460be30a6b18fd4df4d1b8afb46653bf4dc06ca9f93c32353fd0605c5","urls":["bzz-raw://da14f2ead3a375b02afd09d4a02edddf7b63a88945746b96789b2473184fdb04","dweb:/ipfs/QmRqcjxa2Vv2MrLdPeAwsktXdWTirapEDsRbJCyYRtKT6g"],"license":"MIT"},"lib/mina_bridge/contract/lib/aligned_layer/contracts/src/core/AlignedLayerServiceManager.sol":{"keccak256":"0x318fdb1cf3332466f725c56f6de37daf4b2078013d3e4c7a5d20be96b8259a29","urls":["bzz-raw://0e1c509ab8add93c822adc90092ddd3140a0ecb9cc2104ce420a5cdb18138569","dweb:/ipfs/QmRUrZ2tYofMww63P2NRo4fgx4DRBBNRHZbmWayMiAqeMi"],"license":"UNLICENSED"},"lib/mina_bridge/contract/lib/aligned_layer/contracts/src/core/AlignedLayerServiceManagerStorage.sol":{"keccak256":"0x7359959b102fcb5f313d7a0a4a2497ff651c1836ec5259f4f86bd5d20da502ce","urls":["bzz-raw://e1990be0b54c7ab6734ff3096aac61c951d762e0dc6d52d3890a364fc1d92569","dweb:/ipfs/QmevhuweQnjTVBmxTyWucznnQ68kU1U5uHvtYm5FvkBfRR"],"license":null},"lib/mina_bridge/contract/lib/aligned_layer/contracts/src/core/IAlignedLayerServiceManager.sol":{"keccak256":"0xdcec4919e7fdf7855a7f831291a4e5b3345739c88d2c6026f9b953d42f773c48","urls":["bzz-raw://2c37687aac70fa1281b5ccceb6208b5044eeb3c055286c20793632efd7f36adc","dweb:/ipfs/Qmb9CC8RumoALvjjUujbyCZWokzvg4feSEoQFZ3swdggLT"],"license":"UNLICENSED"},"lib/mina_bridge/contract/src/MinaAccountValidationExample.sol":{"keccak256":"0xa9ee818322d8de643216c4d9d255277a6eaee06819e047e69c0f7d4bea5b366a","urls":["bzz-raw://a2229c41efb4d28eb61d80f8b36c3b97e9d6ae3c3dc7edc834ccceb6da33ac9e","dweb:/ipfs/QmTXT7CySKmsJhWEhdEYFvTUB61HReFhsY2b2k1jPWtVmN"],"license":"UNLICENSED"},"lib/mina_bridge/contract/src/MinaStateSettlementExample.sol":{"keccak256":"0x6111e43655e2d21bd363fa13067a280834ea17d6ee03c0d6ea16d2fa7800696e","urls":["bzz-raw://8ac76890e276df1edfd38d74791e4abb01e6e95f0c6162bc929dd2b7b1dff3e9","dweb:/ipfs/QmVNyDMVEguPCKuQVYRH61BdvbT9DBMrFpKWMapmYmZqe8"],"license":"UNLICENSED"},"src/SudokuValidity.sol":{"keccak256":"0x4de18d94c51c326180ef78410c0901c3cbdf95989f7150d0a6f68f23d8c622ab","urls":["bzz-raw://db4f5d6977cb9ed524314d54090614e553dc2fd4e82f5b94c402b9597cc9400b","dweb:/ipfs/QmRCrb8RD6oMCmwfgXZCKnSLaVQzR5iWedM8yoU3AH6WvK"],"license":"UNLICENSED"}},"version":1},"id":41} \ No newline at end of file diff --git a/example/app/src/main.rs b/example/app/src/main.rs deleted file mode 100644 index 34df04fb1..000000000 --- a/example/app/src/main.rs +++ /dev/null @@ -1,249 +0,0 @@ -use aligned_sdk::common::types::Network; -use alloy::{ - primitives::{Address, U256}, - providers::ProviderBuilder, - sol_types::sol, -}; -use clap::{Parser, Subcommand}; -use log::{debug, error, info}; -use mina_bridge_core::{ - sdk::{ - get_bridged_chain_tip_state_hash, update_bridge_chain, validate_account, - AccountVerificationData, - }, - utils::{env::EnvironmentVariables, wallet, wallet_alloy}, -}; -use std::{process, str::FromStr, time::SystemTime}; - -const MINA_ZKAPP_ADDRESS: &str = "B62qmKCv2HaPwVRHBKrDFGUpjSh3PPY9VqSa6ZweGAmj9hBQL4pfewn"; -const SUDOKU_VALIDITY_DEVNET_ADDRESS: &str = "0x8ce361602B935680E8DeC218b820ff5056BeB7af"; - -sol!( - #[allow(clippy::too_many_arguments)] - #[sol(rpc)] - SudokuValidity, - "abi/SudokuValidity.json" -); - -#[derive(Parser)] -#[command(version, about)] -struct Cli { - #[command(subcommand)] - command: Command, -} - -#[derive(Subcommand)] -enum Command { - DeployContract, - ValidateSolution, -} - -#[tokio::main] -async fn main() { - let cli = Cli::parse(); - let now = SystemTime::now(); - env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("info")).init(); - - let EnvironmentVariables { - rpc_url, - network, - state_settlement_addr, - account_validation_addr, - batcher_addr, - batcher_eth_addr, - eth_rpc_url, - proof_generator_addr, - keystore_path, - private_key, - } = EnvironmentVariables::new().unwrap_or_else(|err| { - error!("{}", err); - process::exit(1); - }); - - let state_settlement_addr = state_settlement_addr.unwrap_or_else(|| { - error!("Error getting State settlement contract address"); - process::exit(1); - }); - let account_validation_addr = account_validation_addr.unwrap_or_else(|| { - error!("Error getting Account validation contract address"); - process::exit(1); - }); - - let sudoku_address = match network { - Network::Devnet => SUDOKU_VALIDITY_DEVNET_ADDRESS.to_string(), - Network::Holesky => std::env::var("SUDOKU_VALIDITY_HOLESKY_ADDRESS").unwrap_or_else(|_| { - error!("Error getting Sudoku vality contract address"); - process::exit(1); - }), - _ => todo!(), - }; - - let wallet_alloy = - wallet_alloy::get_wallet(&network, keystore_path.as_deref(), private_key.as_deref()) - .unwrap_or_else(|err| { - error!("{}", err); - process::exit(1); - }); - - let provider = ProviderBuilder::new() - .with_recommended_fillers() - .wallet(wallet_alloy) - .on_http( - reqwest::Url::parse(ð_rpc_url) - .map_err(|err| err.to_string()) - .unwrap(), - ); - - match cli.command { - Command::DeployContract => { - // TODO(xqft): we might as well use the Chain type from Alloy, it isn't right to add - // aligned-sdk as a dependency only for this type. - - let contract = SudokuValidity::deploy( - &provider, - Address::from_str(&state_settlement_addr).unwrap(), - Address::from_str(&account_validation_addr).unwrap(), - ) - .await - .map_err(|err| err.to_string()) - .unwrap_or_else(|err| { - error!("{}", err); - process::exit(1); - }); - - info!( - "SudokuValidity contract successfuly deployed with address {}", - contract.address() - ); - } - Command::ValidateSolution => { - // We could check if the specific block containing the tx is already verified, before - // updating the bridge's chain. - // let is_state_verified = is_state_verified(&state_hash, &state_settlement_addr, ð_rpc_url) - // .await - // .unwrap_or_else(|err| { - // error!("{}", err); - // process::exit(1); - // }); - - // if !is_state_verified { - // info!("State that includes the zkApp tx isn't verified. Bridging latest chain..."); - - let wallet = - wallet::get_wallet(&network, keystore_path.as_deref(), private_key.as_deref()) - .unwrap_or_else(|err| { - error!("{}", err); - process::exit(1); - }); - - let state_verification_result = update_bridge_chain( - &rpc_url, - &network, - &state_settlement_addr, - &batcher_addr, - ð_rpc_url, - &proof_generator_addr, - wallet.clone(), - &batcher_eth_addr, - true, - false, - ) - .await; - - match state_verification_result { - Err(err) if err == "Latest chain is already verified" => { - info!("Bridge chain is up to date, won't verify new states.") - } - Err(err) => { - error!("{}", err); - process::exit(1); - } - _ => {} - } - // } - - let tip_state_hash = - get_bridged_chain_tip_state_hash(&state_settlement_addr, ð_rpc_url) - .await - .unwrap_or_else(|err| { - error!("{}", err); - process::exit(1); - }); - - info!("tip state hash: {}", &tip_state_hash); - - let AccountVerificationData { - proof_commitment, - proving_system_aux_data_commitment, - proof_generator_addr, - batch_merkle_root, - merkle_proof, - verification_data_batch_index, - pub_input, - } = validate_account( - MINA_ZKAPP_ADDRESS, - &tip_state_hash, - &rpc_url, - &network, - &account_validation_addr, - &batcher_addr, - ð_rpc_url, - &proof_generator_addr, - &batcher_eth_addr, - wallet, - false, - ) - .await - .unwrap_or_else(|err| { - error!("{}", err); - process::exit(1); - }); - - debug!("Creating contract instance"); - let contract = - SudokuValidity::new(Address::from_str(&sudoku_address).unwrap(), provider); - - let call = contract.validateSolution( - proof_commitment.into(), - proving_system_aux_data_commitment.into(), - proof_generator_addr.into(), - batch_merkle_root.into(), - merkle_proof.into(), - U256::from(verification_data_batch_index), - pub_input.into(), - Address::from_str(&batcher_eth_addr).unwrap(), - ); - - info!("Sending transaction to SudokuValidity contract..."); - let tx = call.send().await; - - match tx { - Ok(tx) => { - let receipt = tx.get_receipt().await.unwrap_or_else(|err| { - error!("{}", err); - process::exit(1); - }); - let new_timestamp: U256 = contract - .getLatestSolutionTimestamp() - .call() - .await - .unwrap_or_else(|err| { - error!("{}", err); - process::exit(1); - }) - ._0; - - info!( - "SudokuValidity contract was updated! transaction hash: {}, gas cost: {}, new timestamp: {}", - receipt.transaction_hash, receipt.gas_used, new_timestamp - ); - } - Err(err) => error!("SudokuValidity transaction failed!: {err}"), - } - } - } - - if let Ok(elapsed) = now.elapsed() { - info!("Time spent: {} s", elapsed.as_secs()); - } -} diff --git a/example/eth_contract/.github/workflows/test.yml b/example/eth_contract/.github/workflows/test.yml deleted file mode 100644 index 762a2966f..000000000 --- a/example/eth_contract/.github/workflows/test.yml +++ /dev/null @@ -1,45 +0,0 @@ -name: CI - -on: - push: - pull_request: - workflow_dispatch: - -env: - FOUNDRY_PROFILE: ci - -jobs: - check: - strategy: - fail-fast: true - - name: Foundry project - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - - - name: Install Foundry - uses: foundry-rs/foundry-toolchain@v1 - with: - version: nightly - - - name: Show Forge version - run: | - forge --version - - - name: Run Forge fmt - run: | - forge fmt --check - id: fmt - - - name: Run Forge build - run: | - forge build --sizes - id: build - - - name: Run Forge tests - run: | - forge test -vvv - id: test diff --git a/example/eth_contract/.gitignore b/example/eth_contract/.gitignore deleted file mode 100644 index 85198aaa5..000000000 --- a/example/eth_contract/.gitignore +++ /dev/null @@ -1,14 +0,0 @@ -# Compiler files -cache/ -out/ - -# Ignores development broadcast logs -!/broadcast -/broadcast/*/31337/ -/broadcast/**/dry-run/ - -# Docs -docs/ - -# Dotenv file -.env diff --git a/example/eth_contract/README.md b/example/eth_contract/README.md deleted file mode 100644 index 9265b4558..000000000 --- a/example/eth_contract/README.md +++ /dev/null @@ -1,66 +0,0 @@ -## Foundry - -**Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust.** - -Foundry consists of: - -- **Forge**: Ethereum testing framework (like Truffle, Hardhat and DappTools). -- **Cast**: Swiss army knife for interacting with EVM smart contracts, sending transactions and getting chain data. -- **Anvil**: Local Ethereum node, akin to Ganache, Hardhat Network. -- **Chisel**: Fast, utilitarian, and verbose solidity REPL. - -## Documentation - -https://book.getfoundry.sh/ - -## Usage - -### Build - -```shell -$ forge build -``` - -### Test - -```shell -$ forge test -``` - -### Format - -```shell -$ forge fmt -``` - -### Gas Snapshots - -```shell -$ forge snapshot -``` - -### Anvil - -```shell -$ anvil -``` - -### Deploy - -```shell -$ forge script script/Counter.s.sol:CounterScript --rpc-url --private-key -``` - -### Cast - -```shell -$ cast -``` - -### Help - -```shell -$ forge --help -$ anvil --help -$ cast --help -``` diff --git a/example/eth_contract/foundry.toml b/example/eth_contract/foundry.toml deleted file mode 100644 index 25b918f9c..000000000 --- a/example/eth_contract/foundry.toml +++ /dev/null @@ -1,6 +0,0 @@ -[profile.default] -src = "src" -out = "out" -libs = ["lib"] - -# See more config options https://github.com/foundry-rs/foundry/blob/master/crates/config/README.md#all-options diff --git a/example/eth_contract/lib/forge-std b/example/eth_contract/lib/forge-std deleted file mode 160000 index 1714bee72..000000000 --- a/example/eth_contract/lib/forge-std +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 1714bee72e286e73f76e320d110e0eaf5c4e649d diff --git a/example/eth_contract/lib/mina_bridge b/example/eth_contract/lib/mina_bridge deleted file mode 120000 index a8a4f8c21..000000000 --- a/example/eth_contract/lib/mina_bridge +++ /dev/null @@ -1 +0,0 @@ -../../.. \ No newline at end of file diff --git a/example/eth_contract/remappings.txt b/example/eth_contract/remappings.txt deleted file mode 100644 index 864797004..000000000 --- a/example/eth_contract/remappings.txt +++ /dev/null @@ -1,23 +0,0 @@ -aligned_layer/=lib/mina_bridge/contract/lib/aligned_layer/ -ds-test/=lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/ds-test/src/ - -eigenlayer-contracts/=lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/ -eigenlayer-middleware/=lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/src -eigenlayer-core/=lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/ -eigenlayer-core-contracts/=lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/core -eigenlayer-scripts/=lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/script - -erc4626-tests/=lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/ - -openzeppelin-contracts-upgradeable-v4.9.0/=lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/ -openzeppelin-contracts-upgradeable/=lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/ -openzeppelin-contracts-v4.9.0/=lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/ -openzeppelin-contracts/=lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/ - -openzeppelin-contracts-v4.9.0/=lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/ -openzeppelin-contracts/=lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/ - -@openzeppelin-upgrades/=lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/ -@openzeppelin/=lib/mina_bridge/contract/lib/aligned_layer/contracts/lib/eigenlayer-middleware/lib/openzeppelin-contracts/ - -forge-std/=lib/forge-std/src/ diff --git a/example/eth_contract/src/SudokuValidity.sol b/example/eth_contract/src/SudokuValidity.sol deleted file mode 100644 index 826ef7c88..000000000 --- a/example/eth_contract/src/SudokuValidity.sol +++ /dev/null @@ -1,85 +0,0 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.12; - -import "mina_bridge/contract/src/MinaStateSettlementExample.sol"; -import "mina_bridge/contract/src/MinaAccountValidationExample.sol"; - -contract SudokuValidity { - error InvalidZkappAccount(); // f281a183 - error InvalidLedger(bytes32 ledgerHash); // 76f145ea - error IncorrectZkappAccount(bytes32 verificationKeyHash); // 170e89eb - error UnsolvedSudoku(); // a3790c0e - - /// @notice The Sudoku zkApp verification key hash. - bytes32 constant ZKAPP_VERIFICATION_KEY_HASH = - 0xdc9c283f73ce17466a01b90d36141b848805a3db129b6b80d581adca52c9b6f3; - - /// @notice Mina bridge contract that validates and stores Mina states. - MinaStateSettlementExample stateSettlement; - /// @notice Mina bridge contract that validates accounts - MinaAccountValidationExample accountValidation; - - /// @notice Latest timestamp (Unix time) at which the contract determined that a - // Sudoku was solved in the Mina ZkApp. - uint256 latestSolutionValidationAt = 0; - - constructor(address _stateSettlementAddr, address _accountValidationAddr) { - stateSettlement = MinaStateSettlementExample(_stateSettlementAddr); - accountValidation = MinaAccountValidationExample(_accountValidationAddr); - } - - function getLatestSolutionTimestamp() external view returns (uint256) { - return latestSolutionValidationAt; - } - - /// @notice Validates a Sudoku solution by bridging from Mina, and stores - /// the last Unix time it was solved at. - function validateSolution( - bytes32 proofCommitment, - bytes32 provingSystemAuxDataCommitment, - bytes20 proofGeneratorAddr, - bytes32 batchMerkleRoot, - bytes memory merkleProof, - uint256 verificationDataBatchIndex, - bytes calldata pubInput, - address batcherPaymentService - ) external { - bytes32 ledgerHash = bytes32(pubInput[:32]); - if (!stateSettlement.isLedgerVerified(ledgerHash)) { - revert InvalidLedger(ledgerHash); - } - - MinaAccountValidationExample.AlignedArgs memory args = MinaAccountValidationExample.AlignedArgs( - proofCommitment, - provingSystemAuxDataCommitment, - proofGeneratorAddr, - batchMerkleRoot, - merkleProof, - verificationDataBatchIndex, - pubInput, - batcherPaymentService - ); - - if (!accountValidation.validateAccount(args)) { - revert InvalidZkappAccount(); - } - - bytes calldata encodedAccount = pubInput[32 + 8:]; - MinaAccountValidationExample.Account memory account = abi.decode(encodedAccount, (MinaAccountValidationExample.Account)); - - // check that this account represents the circuit we expect - bytes32 verificationKeyHash = keccak256( - abi.encode(account.zkapp.verificationKey) - ); - if (verificationKeyHash != ZKAPP_VERIFICATION_KEY_HASH) { - revert IncorrectZkappAccount(verificationKeyHash); - } - - // if isSolved == true - if (account.zkapp.appState[1] != 0) { - latestSolutionValidationAt = block.timestamp; - } else { - revert UnsolvedSudoku(); - } - } -} diff --git a/example/mina_zkapp/.eslintrc.cjs b/example/mina_zkapp/.eslintrc.cjs deleted file mode 100644 index 71f0aea15..000000000 --- a/example/mina_zkapp/.eslintrc.cjs +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - root: true, - env: { - browser: true, - node: true, - jest: true, - }, - extends: [ - 'eslint:recommended', - 'plugin:@typescript-eslint/eslint-recommended', - 'plugin:@typescript-eslint/recommended', - 'plugin:o1js/recommended', - ], - parser: '@typescript-eslint/parser', - parserOptions: { - ecmaVersion: 'latest', - }, - plugins: ['@typescript-eslint', 'o1js'], - rules: { - 'no-constant-condition': 'off', - 'prefer-const': 'off', - }, -}; diff --git a/example/mina_zkapp/.gitattributes b/example/mina_zkapp/.gitattributes deleted file mode 100644 index ca46ad74d..000000000 --- a/example/mina_zkapp/.gitattributes +++ /dev/null @@ -1,3 +0,0 @@ -# Use line endings appropriate for the system. This prevents Git from -# complaining about project template line endings when committing on Windows. -* text=auto eol=lf diff --git a/example/mina_zkapp/.github/workflows/ci.yml b/example/mina_zkapp/.github/workflows/ci.yml deleted file mode 100644 index 51866e8b8..000000000 --- a/example/mina_zkapp/.github/workflows/ci.yml +++ /dev/null @@ -1,28 +0,0 @@ -name: zkApp tests -on: - push: - pull_request: - workflow_dispatch: {} -jobs: - test: - timeout-minutes: 30 - runs-on: ${{ matrix.os }} - strategy: - fail-fast: true - matrix: - node: [18, 20] - os: [ubuntu-latest] - steps: - - name: Set up NodeJS - uses: actions/setup-node@v4 - with: - node-version: ${{ matrix.node }} - - name: Git checkout - uses: actions/checkout@v4 - - name: NPM ci, build, & test - run: | - npm ci - npm run build --if-present - npm test - env: - CI: true diff --git a/example/mina_zkapp/.gitignore b/example/mina_zkapp/.gitignore deleted file mode 100644 index c4c7e97f6..000000000 --- a/example/mina_zkapp/.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -# NodeJS -build -node_modules -coverage - -# Editor -.vscode - -# System -.DS_Store - -# Never commit keys to Git! -keys diff --git a/example/mina_zkapp/.npmignore b/example/mina_zkapp/.npmignore deleted file mode 100644 index 3e739079f..000000000 --- a/example/mina_zkapp/.npmignore +++ /dev/null @@ -1,14 +0,0 @@ -# Source files -src - -node_modules -coverage - -# Editor -.vscode - -# System -.DS_Store - -# Never reveal your keys! -keys diff --git a/example/mina_zkapp/.prettierignore b/example/mina_zkapp/.prettierignore deleted file mode 100644 index 4601a6f15..000000000 --- a/example/mina_zkapp/.prettierignore +++ /dev/null @@ -1,14 +0,0 @@ -# NodeJS -node_modules -build -coverage -.husky - -# Editor -.vscode - -# System -.DS_Store - -# Misc -LICENSE diff --git a/example/mina_zkapp/.prettierrc b/example/mina_zkapp/.prettierrc deleted file mode 100644 index 92f97e756..000000000 --- a/example/mina_zkapp/.prettierrc +++ /dev/null @@ -1,6 +0,0 @@ -{ - "semi": true, - "singleQuote": true, - "tabWidth": 2, - "trailingComma": "es5" -} diff --git a/example/mina_zkapp/LICENSE b/example/mina_zkapp/LICENSE deleted file mode 100644 index 6e3b8403c..000000000 --- a/example/mina_zkapp/LICENSE +++ /dev/null @@ -1,199 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. diff --git a/example/mina_zkapp/README.md b/example/mina_zkapp/README.md deleted file mode 100644 index 5bf6bb5eb..000000000 --- a/example/mina_zkapp/README.md +++ /dev/null @@ -1,26 +0,0 @@ -# Mina zkApp: Sudoku - -This template uses TypeScript. - -## How to build - -```sh -npm run build -``` - -## How to run tests - -```sh -npm run test -npm run testw # watch mode -``` - -## How to run coverage - -```sh -npm run coverage -``` - -## License - -[Apache-2.0](LICENSE) diff --git a/example/mina_zkapp/babel.config.cjs b/example/mina_zkapp/babel.config.cjs deleted file mode 100644 index c74fb53e2..000000000 --- a/example/mina_zkapp/babel.config.cjs +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - presets: [['@babel/preset-env', { targets: { node: 'current' } }]], -}; diff --git a/example/mina_zkapp/config.json b/example/mina_zkapp/config.json deleted file mode 100644 index 3a441d5ed..000000000 --- a/example/mina_zkapp/config.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "zkappAddress": null, - "version": 1, - "deployAliases": {} -} diff --git a/example/mina_zkapp/jest-resolver.cjs b/example/mina_zkapp/jest-resolver.cjs deleted file mode 100644 index 11c8fc28b..000000000 --- a/example/mina_zkapp/jest-resolver.cjs +++ /dev/null @@ -1,21 +0,0 @@ -module.exports = (request, options) => { - return options.defaultResolver(request, { - ...options, - packageFilter: (pkg) => { - // When importing o1js, we specify the Node ESM import as Jest by default imports the web version - if (pkg.name === 'o1js') { - return { - ...pkg, - main: pkg.exports.node.import, - }; - } - if (pkg.name === 'node-fetch') { - return { ...pkg, main: pkg.main }; - } - return { - ...pkg, - main: pkg.module || pkg.main, - }; - }, - }); -}; diff --git a/example/mina_zkapp/jest.config.js b/example/mina_zkapp/jest.config.js deleted file mode 100644 index 616cdef59..000000000 --- a/example/mina_zkapp/jest.config.js +++ /dev/null @@ -1,24 +0,0 @@ -/** @type {import('@ts-jest/dist/types').InitialOptionsTsJest} */ -export default { - verbose: true, - preset: 'ts-jest/presets/default-esm', - testEnvironment: 'node', - globals: { - 'ts-jest': { - useESM: true, - }, - }, - testTimeout: 1_000_000, - transform: { - '^.+\\.(t)s$': 'ts-jest', - '^.+\\.(j)s$': 'babel-jest', - }, - resolver: '/jest-resolver.cjs', - transformIgnorePatterns: [ - '/node_modules/(?!(tslib|o1js/node_modules/tslib))', - ], - modulePathIgnorePatterns: ['/build/'], - moduleNameMapper: { - '^(\\.{1,2}/.+)\\.js$': '$1', - }, -}; diff --git a/example/mina_zkapp/package-lock.json b/example/mina_zkapp/package-lock.json deleted file mode 100644 index 14104ebee..000000000 --- a/example/mina_zkapp/package-lock.json +++ /dev/null @@ -1,9047 +0,0 @@ -{ - "name": "sudoku", - "version": "0.1.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "sudoku", - "version": "0.1.0", - "license": "Apache-2.0", - "dependencies": { - "dotenv": "^16.4.5" - }, - "devDependencies": { - "@babel/preset-env": "^7.16.4", - "@babel/preset-typescript": "^7.16.0", - "@types/jest": "^27.0.3", - "@typescript-eslint/eslint-plugin": "^5.5.0", - "@typescript-eslint/parser": "^5.5.0", - "eslint": "^8.7.0", - "eslint-plugin-o1js": "^0.4.0", - "jest": "^28.1.3", - "prettier": "^2.3.2", - "ts-jest": "^28.0.8", - "typescript": "^5.1" - }, - "engines": { - "node": ">=18.14.0" - }, - "peerDependencies": { - "o1js": "^1.*" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", - "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/highlight": "^7.24.7", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz", - "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", - "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.25.0", - "@babel/helper-compilation-targets": "^7.25.2", - "@babel/helper-module-transforms": "^7.25.2", - "@babel/helpers": "^7.25.0", - "@babel/parser": "^7.25.0", - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.2", - "@babel/types": "^7.25.2", - "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.25.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.6.tgz", - "integrity": "sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.25.6", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", - "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz", - "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", - "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.25.2", - "@babel/helper-validator-option": "^7.24.8", - "browserslist": "^4.23.1", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.4.tgz", - "integrity": "sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-member-expression-to-functions": "^7.24.8", - "@babel/helper-optimise-call-expression": "^7.24.7", - "@babel/helper-replace-supers": "^7.25.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", - "@babel/traverse": "^7.25.4", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.2.tgz", - "integrity": "sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "regexpu-core": "^5.3.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", - "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz", - "integrity": "sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.24.8", - "@babel/types": "^7.24.8" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", - "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", - "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-simple-access": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7", - "@babel/traverse": "^7.25.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz", - "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", - "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz", - "integrity": "sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-wrap-function": "^7.25.0", - "@babel/traverse": "^7.25.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz", - "integrity": "sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.24.8", - "@babel/helper-optimise-call-expression": "^7.24.7", - "@babel/traverse": "^7.25.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", - "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz", - "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", - "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", - "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", - "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz", - "integrity": "sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.0", - "@babel/types": "^7.25.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.6.tgz", - "integrity": "sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.25.0", - "@babel/types": "^7.25.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", - "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.24.7", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz", - "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.25.6" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.25.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.3.tgz", - "integrity": "sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/traverse": "^7.25.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.0.tgz", - "integrity": "sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.0.tgz", - "integrity": "sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz", - "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", - "@babel/plugin-transform-optional-chaining": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.0.tgz", - "integrity": "sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/traverse": "^7.25.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0-placeholder-for-preset-env.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", - "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.25.6.tgz", - "integrity": "sha512-aABl0jHw9bZ2karQ/uUD6XP4u0SG22SJrOHFoL6XB1R7dTovOP4TzTlsxOYC5yQ1pdscVK2JTUnF6QL3ARoAiQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.6.tgz", - "integrity": "sha512-sXaDXaJN9SNLymBdlWFA+bjzBhFD617ZaFiY13dGt7TVslVvVgA6fkZOP7Ki3IGElC45lwHdOTrCtKZGVAWeLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", - "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.4.tgz", - "integrity": "sha512-uMOCoHVU52BsSWxPOMVv5qKRdeSlPuImUCB2dlPuBSU+W2/ROE7/Zg8F2Kepbk+8yBa68LlRKxO+xgEVWorsDg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-unicode-sets-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", - "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz", - "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.4.tgz", - "integrity": "sha512-jz8cV2XDDTqjKPwVPJBIjORVEmSGYhdRa8e5k5+vN+uwcjSrSxUaebBRa4ko1jqNF2uxyg8G6XYk30Jv285xzg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-remap-async-to-generator": "^7.25.0", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/traverse": "^7.25.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz", - "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-remap-async-to-generator": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz", - "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz", - "integrity": "sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.4.tgz", - "integrity": "sha512-nZeZHyCWPfjkdU5pA/uHiTaDAFUEqkpzf1YoQT2NeSynCGYq9rxfyI3XpQbfx/a0hSnFH6TGlEXvae5Vi7GD8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.25.4", - "@babel/helper-plugin-utils": "^7.24.8" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz", - "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" - } - }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.4.tgz", - "integrity": "sha512-oexUfaQle2pF/b6E0dwsxQtAol9TLSO88kQvym6HHBWFliV2lGdrPieX+WgMRLSJDVzdYywk7jXbLPuO2KLTLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-compilation-targets": "^7.25.2", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-replace-supers": "^7.25.0", - "@babel/traverse": "^7.25.4", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz", - "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/template": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz", - "integrity": "sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz", - "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz", - "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.0.tgz", - "integrity": "sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.0", - "@babel/helper-plugin-utils": "^7.24.8" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz", - "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz", - "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz", - "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz", - "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.25.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz", - "integrity": "sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-compilation-targets": "^7.24.8", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/traverse": "^7.25.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz", - "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-json-strings": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.2.tgz", - "integrity": "sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz", - "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz", - "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz", - "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz", - "integrity": "sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.24.8", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-simple-access": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz", - "integrity": "sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.25.0", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-validator-identifier": "^7.24.7", - "@babel/traverse": "^7.25.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz", - "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz", - "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz", - "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz", - "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz", - "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz", - "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-compilation-targets": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz", - "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-replace-supers": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz", - "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz", - "integrity": "sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz", - "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.4.tgz", - "integrity": "sha512-ao8BG7E2b/URaUQGqN3Tlsg+M3KlHY6rJ1O1gXAEUnZoyNQnvKyH87Kfg+FoxSeyWUB8ISZZsC91C44ZuBFytw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.25.4", - "@babel/helper-plugin-utils": "^7.24.8" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz", - "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-create-class-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz", - "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz", - "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "regenerator-transform": "^0.15.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz", - "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz", - "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz", - "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz", - "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz", - "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz", - "integrity": "sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typescript": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.2.tgz", - "integrity": "sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-create-class-features-plugin": "^7.25.0", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", - "@babel/plugin-syntax-typescript": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz", - "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz", - "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz", - "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.4.tgz", - "integrity": "sha512-qesBxiWkgN1Q+31xUE9RcMk79eOXXDCv6tfyGMRSs4RGlioSg2WVyQAm07k726cSE56pa+Kb0y9epX2qaXzTvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.2", - "@babel/helper-plugin-utils": "^7.24.8" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/preset-env": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.4.tgz", - "integrity": "sha512-W9Gyo+KmcxjGahtt3t9fb14vFRWvPpu5pT6GBlovAK6BTBcxgjfVMSQCfJl4oi35ODrxP6xx2Wr8LNST57Mraw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.25.4", - "@babel/helper-compilation-targets": "^7.25.2", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-validator-option": "^7.24.8", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.3", - "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.0", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.0", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.0", - "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.24.7", - "@babel/plugin-syntax-import-attributes": "^7.24.7", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.24.7", - "@babel/plugin-transform-async-generator-functions": "^7.25.4", - "@babel/plugin-transform-async-to-generator": "^7.24.7", - "@babel/plugin-transform-block-scoped-functions": "^7.24.7", - "@babel/plugin-transform-block-scoping": "^7.25.0", - "@babel/plugin-transform-class-properties": "^7.25.4", - "@babel/plugin-transform-class-static-block": "^7.24.7", - "@babel/plugin-transform-classes": "^7.25.4", - "@babel/plugin-transform-computed-properties": "^7.24.7", - "@babel/plugin-transform-destructuring": "^7.24.8", - "@babel/plugin-transform-dotall-regex": "^7.24.7", - "@babel/plugin-transform-duplicate-keys": "^7.24.7", - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.0", - "@babel/plugin-transform-dynamic-import": "^7.24.7", - "@babel/plugin-transform-exponentiation-operator": "^7.24.7", - "@babel/plugin-transform-export-namespace-from": "^7.24.7", - "@babel/plugin-transform-for-of": "^7.24.7", - "@babel/plugin-transform-function-name": "^7.25.1", - "@babel/plugin-transform-json-strings": "^7.24.7", - "@babel/plugin-transform-literals": "^7.25.2", - "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", - "@babel/plugin-transform-member-expression-literals": "^7.24.7", - "@babel/plugin-transform-modules-amd": "^7.24.7", - "@babel/plugin-transform-modules-commonjs": "^7.24.8", - "@babel/plugin-transform-modules-systemjs": "^7.25.0", - "@babel/plugin-transform-modules-umd": "^7.24.7", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", - "@babel/plugin-transform-new-target": "^7.24.7", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", - "@babel/plugin-transform-numeric-separator": "^7.24.7", - "@babel/plugin-transform-object-rest-spread": "^7.24.7", - "@babel/plugin-transform-object-super": "^7.24.7", - "@babel/plugin-transform-optional-catch-binding": "^7.24.7", - "@babel/plugin-transform-optional-chaining": "^7.24.8", - "@babel/plugin-transform-parameters": "^7.24.7", - "@babel/plugin-transform-private-methods": "^7.25.4", - "@babel/plugin-transform-private-property-in-object": "^7.24.7", - "@babel/plugin-transform-property-literals": "^7.24.7", - "@babel/plugin-transform-regenerator": "^7.24.7", - "@babel/plugin-transform-reserved-words": "^7.24.7", - "@babel/plugin-transform-shorthand-properties": "^7.24.7", - "@babel/plugin-transform-spread": "^7.24.7", - "@babel/plugin-transform-sticky-regex": "^7.24.7", - "@babel/plugin-transform-template-literals": "^7.24.7", - "@babel/plugin-transform-typeof-symbol": "^7.24.8", - "@babel/plugin-transform-unicode-escapes": "^7.24.7", - "@babel/plugin-transform-unicode-property-regex": "^7.24.7", - "@babel/plugin-transform-unicode-regex": "^7.24.7", - "@babel/plugin-transform-unicode-sets-regex": "^7.25.4", - "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.10.6", - "babel-plugin-polyfill-regenerator": "^0.6.1", - "core-js-compat": "^3.37.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-modules": { - "version": "0.1.6-no-external-plugins", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", - "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/@babel/preset-typescript": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.24.7.tgz", - "integrity": "sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-validator-option": "^7.24.7", - "@babel/plugin-syntax-jsx": "^7.24.7", - "@babel/plugin-transform-modules-commonjs": "^7.24.7", - "@babel/plugin-transform-typescript": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/regjsgen": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@babel/runtime": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz", - "integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", - "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/parser": "^7.25.0", - "@babel/types": "^7.25.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.6.tgz", - "integrity": "sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.25.6", - "@babel/parser": "^7.25.6", - "@babel/template": "^7.25.0", - "@babel/types": "^7.25.6", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz", - "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.24.8", - "@babel/helper-validator-identifier": "^7.24.7", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz", - "integrity": "sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/eslintrc/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/js": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", - "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", - "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", - "deprecated": "Use @eslint/config-array instead", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.3", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "deprecated": "Use @eslint/object-schema instead", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz", - "integrity": "sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3", - "slash": "^3.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/console/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/console/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/console/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/console/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jest/console/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/core": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-28.1.3.tgz", - "integrity": "sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "^28.1.3", - "@jest/reporters": "^28.1.3", - "@jest/test-result": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^28.1.3", - "jest-config": "^28.1.3", - "jest-haste-map": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-regex-util": "^28.0.2", - "jest-resolve": "^28.1.3", - "jest-resolve-dependencies": "^28.1.3", - "jest-runner": "^28.1.3", - "jest-runtime": "^28.1.3", - "jest-snapshot": "^28.1.3", - "jest-util": "^28.1.3", - "jest-validate": "^28.1.3", - "jest-watcher": "^28.1.3", - "micromatch": "^4.0.4", - "pretty-format": "^28.1.3", - "rimraf": "^3.0.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/core/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/core/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/core/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/core/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jest/core/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/core/node_modules/pretty-format": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", - "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^28.1.3", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/core/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/core/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jest/core/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/environment": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-28.1.3.tgz", - "integrity": "sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/fake-timers": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "jest-mock": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/expect": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-28.1.3.tgz", - "integrity": "sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw==", - "dev": true, - "license": "MIT", - "dependencies": { - "expect": "^28.1.3", - "jest-snapshot": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/expect-utils": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-28.1.3.tgz", - "integrity": "sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==", - "dev": true, - "license": "MIT", - "dependencies": { - "jest-get-type": "^28.0.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/fake-timers": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-28.1.3.tgz", - "integrity": "sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^28.1.3", - "@sinonjs/fake-timers": "^9.1.2", - "@types/node": "*", - "jest-message-util": "^28.1.3", - "jest-mock": "^28.1.3", - "jest-util": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/globals": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-28.1.3.tgz", - "integrity": "sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "^28.1.3", - "@jest/expect": "^28.1.3", - "@jest/types": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/reporters": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-28.1.3.tgz", - "integrity": "sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^28.1.3", - "@jest/test-result": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "@jridgewell/trace-mapping": "^0.3.13", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3", - "jest-worker": "^28.1.3", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^9.0.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/reporters/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/reporters/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/reporters/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/reporters/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jest/reporters/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/reporters/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/schemas": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", - "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.24.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/source-map": { - "version": "28.1.2", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-28.1.2.tgz", - "integrity": "sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.13", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/test-result": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz", - "integrity": "sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/test-sequencer": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-28.1.3.tgz", - "integrity": "sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/test-result": "^28.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "slash": "^3.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/transform": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-28.1.3.tgz", - "integrity": "sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^28.1.3", - "@jridgewell/trace-mapping": "^0.3.13", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "jest-regex-util": "^28.0.2", - "jest-util": "^28.1.3", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/transform/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/transform/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/transform/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/transform/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jest/transform/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jest/transform/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/transform/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/types": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", - "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/types/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/types/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/types/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/types/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jest/types/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/types/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@sinclair/typebox": { - "version": "0.24.51", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", - "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@sinonjs/commons": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", - "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz", - "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^1.7.0" - } - }, - "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==", - "dev": true, - "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.6.8", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", - "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", - "dev": true, - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.20.6", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", - "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.20.7" - } - }, - "node_modules/@types/graceful-fs": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", - "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", - "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", - "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/jest": { - "version": "27.5.2", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.2.tgz", - "integrity": "sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "jest-matcher-utils": "^27.0.0", - "pretty-format": "^27.0.0" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "22.5.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.5.tgz", - "integrity": "sha512-Xjs4y5UPO/CLdzpgR6GirZJx36yScjh73+2NlLlkFRSoQN8B0DpfXPdZGnvVmLRLOsqDpOfTNv7D9trgGhmOIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.19.2" - } - }, - "node_modules/@types/prettier": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", - "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/semver": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", - "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/stack-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/yargs": { - "version": "17.0.33", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", - "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", - "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/type-utils": "5.62.0", - "@typescript-eslint/utils": "5.62.0", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", - "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", - "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/typescript-estree": "5.62.0", - "@typescript-eslint/utils": "5.62.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", - "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/acorn": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", - "dev": true, - "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==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-jest": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-28.1.3.tgz", - "integrity": "sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/transform": "^28.1.3", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^28.1.3", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "node_modules/babel-jest/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/babel-jest/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/babel-jest/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/babel-jest/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/babel-jest/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-jest/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.3.tgz", - "integrity": "sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.11", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", - "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.6.2", - "semver": "^6.3.1" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.10.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", - "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.2", - "core-js-compat": "^3.38.0" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", - "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz", - "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-import-attributes": "^7.24.7", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babel-preset-jest": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-28.1.3.tgz", - "integrity": "sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A==", - "dev": true, - "license": "MIT", - "dependencies": { - "babel-plugin-jest-hoist": "^28.1.3", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/blakejs": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", - "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==", - "license": "MIT", - "peer": true - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", - "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", - "dev": true, - "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": { - "caniuse-lite": "^1.0.30001646", - "electron-to-chromium": "^1.5.4", - "node-releases": "^2.0.18", - "update-browserslist-db": "^1.1.0" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-json-stable-stringify": "2.x" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/cachedir": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.4.0.tgz", - "integrity": "sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001660", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001660.tgz", - "integrity": "sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==", - "dev": true, - "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/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/cjs-module-lexer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz", - "integrity": "sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==", - "dev": true, - "license": "MIT" - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/collect-v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", - "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true, - "license": "MIT" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "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==", - "dev": true, - "license": "MIT" - }, - "node_modules/core-js-compat": { - "version": "3.38.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.1.tgz", - "integrity": "sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==", - "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.23.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", - "dev": true, - "license": "MIT" - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true, - "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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dotenv": { - "version": "16.4.5", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", - "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.5.24", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.24.tgz", - "integrity": "sha512-0x0wLCmpdKFCi9ulhvYZebgcPmHTkFVUfU2wzDykadkslKwT4oAmDTHEKLnlrDsMGZe4B+ksn8quZfZjYsBetA==", - "dev": true, - "license": "ISC" - }, - "node_modules/emittery": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz", - "integrity": "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/eslint": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", - "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.1", - "@humanwhocodes/config-array": "^0.13.0", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-plugin-o1js": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-o1js/-/eslint-plugin-o1js-0.4.0.tgz", - "integrity": "sha512-12qI6OvAMtUIh8x9lB5uVzJbRMSR6tGrbCRM98fcCmll1FNvVSUIaat3CWhH17tkcjoyVSaFy0I/WzZcqPqaUA==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/eslint/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "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/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/expect": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/expect/-/expect-28.1.3.tgz", - "integrity": "sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/expect-utils": "^28.1.3", - "jest-get-type": "^28.0.2", - "jest-matcher-utils": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/expect/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/expect/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/expect/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/expect/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/expect/node_modules/diff-sequences": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz", - "integrity": "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/expect/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/expect/node_modules/jest-diff": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz", - "integrity": "sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^28.1.1", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/expect/node_modules/jest-matcher-utils": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz", - "integrity": "sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^28.1.3", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/expect/node_modules/pretty-format": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", - "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^28.1.3", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/expect/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/expect/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/expect/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", - "dev": true, - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bser": "2.1.1" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "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==", - "dev": true, - "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/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", - "dev": true, - "license": "MIT", - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", - "dev": true, - "license": "ISC" - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true, - "license": "ISC" - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.0.0" - } - }, - "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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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==", - "dev": true, - "license": "ISC" - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true, - "license": "MIT" - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true, - "license": "MIT" - }, - "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==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-local": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", - "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", - "dev": true, - "license": "MIT", - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-core-module": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", - "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "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==", - "dev": true, - "license": "ISC" - }, - "node_modules/isomorphic-fetch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz", - "integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==", - "license": "MIT", - "peer": true, - "dependencies": { - "node-fetch": "^2.6.1", - "whatwg-fetch": "^3.4.1" - } - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-report/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-reports": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", - "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest/-/jest-28.1.3.tgz", - "integrity": "sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/core": "^28.1.3", - "@jest/types": "^28.1.3", - "import-local": "^3.0.2", - "jest-cli": "^28.1.3" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-changed-files": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-28.1.3.tgz", - "integrity": "sha512-esaOfUWJXk2nfZt9SPyC8gA1kNfdKLkQWyzsMlqq8msYSlNKfmZxfRgZn4Cd4MGVUF+7v6dBs0d5TOAKa7iIiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "execa": "^5.0.0", - "p-limit": "^3.1.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-circus": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-28.1.3.tgz", - "integrity": "sha512-cZ+eS5zc79MBwt+IhQhiEp0OeBddpc1n8MBo1nMB8A7oPMKEO+Sre+wHaLJexQUj9Ya/8NOBY0RESUgYjB6fow==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "^28.1.3", - "@jest/expect": "^28.1.3", - "@jest/test-result": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^28.1.3", - "jest-matcher-utils": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-runtime": "^28.1.3", - "jest-snapshot": "^28.1.3", - "jest-util": "^28.1.3", - "p-limit": "^3.1.0", - "pretty-format": "^28.1.3", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-circus/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-circus/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-circus/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-circus/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-circus/node_modules/diff-sequences": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz", - "integrity": "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-circus/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-circus/node_modules/jest-diff": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz", - "integrity": "sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^28.1.1", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-circus/node_modules/jest-matcher-utils": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz", - "integrity": "sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^28.1.3", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-circus/node_modules/pretty-format": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", - "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^28.1.3", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-circus/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-circus/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-circus/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-cli": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-28.1.3.tgz", - "integrity": "sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/core": "^28.1.3", - "@jest/test-result": "^28.1.3", - "@jest/types": "^28.1.3", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "import-local": "^3.0.2", - "jest-config": "^28.1.3", - "jest-util": "^28.1.3", - "jest-validate": "^28.1.3", - "prompts": "^2.0.1", - "yargs": "^17.3.1" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-cli/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-cli/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-cli/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-cli/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-cli/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-cli/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-config": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-28.1.3.tgz", - "integrity": "sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^28.1.3", - "@jest/types": "^28.1.3", - "babel-jest": "^28.1.3", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^28.1.3", - "jest-environment-node": "^28.1.3", - "jest-get-type": "^28.0.2", - "jest-regex-util": "^28.0.2", - "jest-resolve": "^28.1.3", - "jest-runner": "^28.1.3", - "jest-util": "^28.1.3", - "jest-validate": "^28.1.3", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^28.1.3", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/jest-config/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-config/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-config/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-config/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-config/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-config/node_modules/pretty-format": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", - "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^28.1.3", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-config/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-config/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-config/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-diff/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-diff/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-diff/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-diff/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-diff/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-diff/node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-diff/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-docblock": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-28.1.1.tgz", - "integrity": "sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA==", - "dev": true, - "license": "MIT", - "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-each": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-28.1.3.tgz", - "integrity": "sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^28.1.3", - "chalk": "^4.0.0", - "jest-get-type": "^28.0.2", - "jest-util": "^28.1.3", - "pretty-format": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-each/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-each/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-each/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-each/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-each/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-each/node_modules/pretty-format": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", - "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^28.1.3", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-each/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-each/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-each/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-environment-node": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-28.1.3.tgz", - "integrity": "sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "^28.1.3", - "@jest/fake-timers": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "jest-mock": "^28.1.3", - "jest-util": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-get-type": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", - "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-haste-map": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-28.1.3.tgz", - "integrity": "sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^28.1.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^28.0.2", - "jest-util": "^28.1.3", - "jest-worker": "^28.1.3", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-leak-detector": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-28.1.3.tgz", - "integrity": "sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-leak-detector/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-leak-detector/node_modules/pretty-format": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", - "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^28.1.3", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-leak-detector/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-matcher-utils/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-matcher-utils/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-matcher-utils/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-matcher-utils/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-matcher-utils/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-matcher-utils/node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-matcher-utils/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-message-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", - "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^28.1.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^28.1.3", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-message-util/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-message-util/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-message-util/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-message-util/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-message-util/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-message-util/node_modules/pretty-format": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", - "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^28.1.3", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-message-util/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-message-util/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-message-util/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-mock": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-28.1.3.tgz", - "integrity": "sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "node_modules/jest-regex-util": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", - "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-resolve": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-28.1.3.tgz", - "integrity": "sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^28.1.3", - "jest-validate": "^28.1.3", - "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-resolve-dependencies": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.3.tgz", - "integrity": "sha512-qa0QO2Q0XzQoNPouMbCc7Bvtsem8eQgVPNkwn9LnS+R2n8DaVDPL/U1gngC0LTl1RYXJU0uJa2BMC2DbTfFrHA==", - "dev": true, - "license": "MIT", - "dependencies": { - "jest-regex-util": "^28.0.2", - "jest-snapshot": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-resolve/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-resolve/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-resolve/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-resolve/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-resolve/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-resolve/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runner": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-28.1.3.tgz", - "integrity": "sha512-GkMw4D/0USd62OVO0oEgjn23TM+YJa2U2Wu5zz9xsQB1MxWKDOlrnykPxnMsN0tnJllfLPinHTka61u0QhaxBA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "^28.1.3", - "@jest/environment": "^28.1.3", - "@jest/test-result": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.10.2", - "graceful-fs": "^4.2.9", - "jest-docblock": "^28.1.1", - "jest-environment-node": "^28.1.3", - "jest-haste-map": "^28.1.3", - "jest-leak-detector": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-resolve": "^28.1.3", - "jest-runtime": "^28.1.3", - "jest-util": "^28.1.3", - "jest-watcher": "^28.1.3", - "jest-worker": "^28.1.3", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-runner/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-runner/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-runner/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-runner/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-runner/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runner/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runtime": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-28.1.3.tgz", - "integrity": "sha512-NU+881ScBQQLc1JHG5eJGU7Ui3kLKrmwCPPtYsJtBykixrM2OhVQlpMmFWJjMyDfdkGgBMNjXCGB/ebzsgNGQw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "^28.1.3", - "@jest/fake-timers": "^28.1.3", - "@jest/globals": "^28.1.3", - "@jest/source-map": "^28.1.2", - "@jest/test-result": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "execa": "^5.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-mock": "^28.1.3", - "jest-regex-util": "^28.0.2", - "jest-resolve": "^28.1.3", - "jest-snapshot": "^28.1.3", - "jest-util": "^28.1.3", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-runtime/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-runtime/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-runtime/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-runtime/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-runtime/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runtime/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-snapshot": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-28.1.3.tgz", - "integrity": "sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/babel__traverse": "^7.0.6", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^28.1.3", - "graceful-fs": "^4.2.9", - "jest-diff": "^28.1.3", - "jest-get-type": "^28.0.2", - "jest-haste-map": "^28.1.3", - "jest-matcher-utils": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3", - "natural-compare": "^1.4.0", - "pretty-format": "^28.1.3", - "semver": "^7.3.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-snapshot/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-snapshot/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-snapshot/node_modules/diff-sequences": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz", - "integrity": "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-snapshot/node_modules/jest-diff": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz", - "integrity": "sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^28.1.1", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/jest-matcher-utils": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz", - "integrity": "sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^28.1.3", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/pretty-format": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", - "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^28.1.3", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-snapshot/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest-snapshot/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", - "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-util/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-util/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-util/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-util/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-util/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-util/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-validate": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-28.1.3.tgz", - "integrity": "sha512-SZbOGBWEsaTxBGCOpsRWlXlvNkvTkY0XxRfh7zYmvd8uL5Qzyg0CHAXiXKROflh801quA6+/DsT4ODDthOC/OA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^28.1.3", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^28.0.2", - "leven": "^3.1.0", - "pretty-format": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-validate/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-validate/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-validate/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-validate/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-validate/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-validate/node_modules/pretty-format": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", - "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^28.1.3", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-validate/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-validate/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-validate/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-watcher": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz", - "integrity": "sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/test-result": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.10.2", - "jest-util": "^28.1.3", - "string-length": "^4.0.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-watcher/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-watcher/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-watcher/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-watcher/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-watcher/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-watcher/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-worker": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", - "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/js-sha256": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/js-sha256/-/js-sha256-0.9.0.tgz", - "integrity": "sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==", - "license": "MIT", - "peer": true - }, - "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==", - "dev": true, - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true, - "license": "MIT" - }, - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, - "license": "MIT" - }, - "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==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true, - "license": "ISC" - }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "tmpl": "1.0.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==", - "dev": true, - "license": "MIT" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "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==", - "dev": true, - "license": "MIT" - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true, - "license": "MIT" - }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true, - "license": "MIT" - }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "license": "MIT", - "peer": true, - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/node-releases": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", - "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", - "dev": true, - "license": "MIT" - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/o1js": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/o1js/-/o1js-1.7.0.tgz", - "integrity": "sha512-/gQKJLRuqDrArdU/QkaU0F1lQl/K6/170U01JeU2xIpryN6vBwENfEHWpHt1FXOmGwyTsQHmrJLWfyFLjQOkeA==", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "blakejs": "1.2.1", - "cachedir": "^2.4.0", - "isomorphic-fetch": "^3.0.0", - "js-sha256": "^0.9.0", - "reflect-metadata": "^0.1.13", - "tslib": "^2.3.0" - }, - "bin": { - "snarky-run": "src/build/run.js" - }, - "engines": { - "node": ">=18.14.0" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true, - "license": "MIT" - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/picocolors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", - "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", - "dev": true, - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", - "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "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/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true, - "license": "MIT" - }, - "node_modules/reflect-metadata": { - "version": "0.1.14", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.14.tgz", - "integrity": "sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==", - "license": "Apache-2.0", - "peer": true - }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true, - "license": "MIT" - }, - "node_modules/regenerate-unicode-properties": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", - "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", - "dev": true, - "license": "MIT", - "dependencies": { - "regenerate": "^1.4.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", - "dev": true, - "license": "MIT" - }, - "node_modules/regenerator-transform": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", - "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, - "node_modules/regexpu-core": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", - "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/regjsgen": "^0.8.0", - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsparser": "^0.9.1", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "jsesc": "~0.5.0" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-cwd/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve.exports": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz", - "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "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": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "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==", - "dev": true, - "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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "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==", - "dev": true, - "license": "ISC" - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true, - "license": "MIT" - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-hyperlinks": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", - "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-hyperlinks/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-hyperlinks/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "license": "ISC", - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true, - "license": "MIT" - }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "license": "MIT", - "peer": true - }, - "node_modules/ts-jest": { - "version": "28.0.8", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-28.0.8.tgz", - "integrity": "sha512-5FaG0lXmRPzApix8oFG8RKjAz4ehtm8yMKOTy5HX3fY6W8kmvOrmcY0hKDElW52FJov+clhUbrKAqofnj4mXTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "bs-logger": "0.x", - "fast-json-stable-stringify": "2.x", - "jest-util": "^28.0.0", - "json5": "^2.2.1", - "lodash.memoize": "4.x", - "make-error": "1.x", - "semver": "7.x", - "yargs-parser": "^21.0.1" - }, - "bin": { - "ts-jest": "cli.js" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "peerDependencies": { - "@babel/core": ">=7.0.0-beta.0 <8", - "@jest/types": "^28.0.0", - "babel-jest": "^28.0.0", - "jest": "^28.0.0", - "typescript": ">=4.3" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@jest/types": { - "optional": true - }, - "babel-jest": { - "optional": true - }, - "esbuild": { - "optional": true - } - } - }, - "node_modules/ts-jest/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "license": "0BSD", - "peer": true - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, - "license": "0BSD" - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typescript": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz", - "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/undici-types": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", - "dev": true, - "license": "MIT" - }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", - "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", - "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", - "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", - "dev": true, - "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.1.2", - "picocolors": "^1.0.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/v8-to-istanbul": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", - "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", - "dev": true, - "license": "ISC", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^2.0.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "makeerror": "1.0.12" - } - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "license": "BSD-2-Clause", - "peer": true - }, - "node_modules/whatwg-fetch": { - "version": "3.6.20", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", - "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==", - "license": "MIT", - "peer": true - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "license": "MIT", - "peer": true, - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "dev": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "license": "ISC" - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} diff --git a/example/mina_zkapp/package.json b/example/mina_zkapp/package.json deleted file mode 100644 index a3942228b..000000000 --- a/example/mina_zkapp/package.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "name": "sudoku", - "version": "0.1.0", - "description": "", - "author": "", - "license": "Apache-2.0", - "keywords": [ - "mina-zkapp", - "mina-zk-app", - "mina-dapp", - "zkapp" - ], - "type": "module", - "main": "build/src/index.js", - "types": "build/src/index.d.ts", - "scripts": { - "build": "tsc", - "buildw": "tsc --watch", - "coverage": "node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage", - "format": "prettier --write --ignore-unknown **/*", - "test": "node --experimental-vm-modules node_modules/jest/bin/jest.js", - "testw": "node --experimental-vm-modules node_modules/jest/bin/jest.js --watch", - "lint": "npx eslint src/* --fix", - "start": "node build/src/run.js" - }, - "devDependencies": { - "@babel/preset-env": "^7.16.4", - "@babel/preset-typescript": "^7.16.0", - "@types/jest": "^27.0.3", - "@typescript-eslint/eslint-plugin": "^5.5.0", - "@typescript-eslint/parser": "^5.5.0", - "eslint": "^8.7.0", - "eslint-plugin-o1js": "^0.4.0", - "jest": "^28.1.3", - "prettier": "^2.3.2", - "ts-jest": "^28.0.8", - "typescript": "^5.1" - }, - "peerDependencies": { - "o1js": "^1.*" - }, - "engines": { - "node": ">=18.14.0" - }, - "dependencies": { - "dotenv": "^16.4.5" - } -} diff --git a/example/mina_zkapp/src/index.ts b/example/mina_zkapp/src/index.ts deleted file mode 100644 index 531cd026f..000000000 --- a/example/mina_zkapp/src/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { SudokuZkApp } from './sudoku.js'; - -export { SudokuZkApp }; diff --git a/example/mina_zkapp/src/run.ts b/example/mina_zkapp/src/run.ts deleted file mode 100644 index f4ed07cc0..000000000 --- a/example/mina_zkapp/src/run.ts +++ /dev/null @@ -1,83 +0,0 @@ -import path from 'path'; -import { Sudoku, SudokuZkApp } from './sudoku.js'; -import { generateSudoku, solveSudoku } from './sudoku-lib.js'; -import { Mina, PrivateKey, NetworkId, fetchAccount, PublicKey } from 'o1js'; -import dotenv from 'dotenv'; - -dotenv.config({ path: '../../.env' }); - -const TX_MAX_TRIES = 5; -const FEE = 0.1; // in MINA - -let feepayerKey = PrivateKey.fromBase58(process.env.FEEPAYER_KEY as string); -let feepayerAddress = feepayerKey.toPublicKey(); - -let zkAppAddress = PublicKey.fromBase58("B62qmKCv2HaPwVRHBKrDFGUpjSh3PPY9VqSa6ZweGAmj9hBQL4pfewn"); - -// define network (devnet) -const Network = Mina.Network({ - networkId: "testnet" as NetworkId, - mina: "https://api.minascan.io/node/devnet/v1/graphql", -}); -const fee = Number(FEE) * 1e9; // in nanomina (1 billion = 1.0 mina) -Mina.setActiveInstance(Network); - -// define zkapp and create sudoku to upload -const zkApp = new SudokuZkApp(zkAppAddress); -await fetchAccount({ publicKey: zkAppAddress }); -console.log('Is the sudoku solved?', zkApp.isSolved.get().toBoolean()); - -const sudoku = generateSudoku(0.5); - -console.log('Compiling Sudoku'); -await SudokuZkApp.compile(); - -console.log("Sending update transaction"); -await trySendTx( - { sender: feepayerAddress, fee }, - async () => { - await zkApp.update(Sudoku.from(sudoku)); - } -); - -let solution = solveSudoku(sudoku); -if (solution === undefined) throw Error('cannot happen'); - -// submit the solution -console.log("Sending submit transaction and waiting until it's included in a block"); -await trySendTx({ sender: feepayerAddress, fee }, async () => { - await zkApp.submitSolution(Sudoku.from(sudoku), Sudoku.from(solution!)); -}); - -console.log('Is the sudoku solved?', zkApp.isSolved.get().toBoolean()); - -async function trySendTx(sender: Mina.FeePayerSpec, f: () => Promise) { - for (let i = 1; i <= TX_MAX_TRIES; i++) { - try { - console.log("Define new transaction"); - const tx = await Mina.transaction(sender, f); - - console.log("Proving transaction"); - await tx.prove(); - - console.log('Signing and sending transaction'); - let pendingTx = await tx.sign([feepayerKey]).send(); - - if (pendingTx.status === 'pending') { - console.log( - `Success! transaction ${pendingTx.hash} sent\n` + - "Waiting for transaction to be included in a block" - ); - await pendingTx.wait(); - return; - } - } catch (err) { - console.log(`Failed attempt ${i}/${TX_MAX_TRIES}, will try again`); - console.log(err); - continue; - } - } - - console.log("Failed all attempts, terminating."); - process.exit(1); -} diff --git a/example/mina_zkapp/src/sudoku-lib.js b/example/mina_zkapp/src/sudoku-lib.js deleted file mode 100644 index 03567d01f..000000000 --- a/example/mina_zkapp/src/sudoku-lib.js +++ /dev/null @@ -1,199 +0,0 @@ -export { generateSudoku, solveSudoku, cloneSudoku }; - -/** - * Generates a random 9x9 sudoku. Cells are either filled out (1,...,9) or empty (0). - * - * @param {number?} difficulty number between 0 (easiest = full sudoku) and 1 (hardest = empty sudoku) - * @returns {number[][]} the sudoku - */ -function generateSudoku(difficulty = 0.5) { - let solution = solveSudokuInternal(emptySudoku(), false); - let partial = deleteRandomValues(solution, difficulty); - return partial; -} - -function deleteRandomValues(sudoku, p) { - // p \in [0,1] ... probability to delete a value - return sudoku.map((row) => row.map((x) => (Math.random() < p ? 0 : x))); -} - -// sudoku = {0,...,9}^(9x9) matrix, 0 means empty cell -function emptySudoku() { - return Array.from({ length: 9 }, () => Array(9).fill(0)); -} - -/** - * Solve a given sudoku. Returns undefined if there is no solution. - * - * @param {number[][]} sudoku - The input sudoku with some cell values equal to zero - * @returns {number[][] | undefined} - The full sudoku, or undefined if no solution exists - */ -function solveSudoku(sudoku) { - return solveSudokuInternal(sudoku, true); -} - -function solveSudokuInternal(sudoku, deterministic, possible) { - // find *a* compatible solution to the sudoku - not checking for uniqueness - // if deterministic = true: always take the smallest possible cell value - // if deterministic = false: take random compatible values - if (possible === undefined) { - possible = possibleFromSudoku(sudoku); - sudoku = cloneSudoku(sudoku); - } - while (true) { - let [i, j, n] = cellWithFewestPossible(sudoku, possible); - - // no free values => sudoku is solved! - if (n === Infinity) return sudoku; - - if (n === 1) { - let x = chooseFirstPossible(i, j, possible); - // console.log('determined', x, 'at', i, j); - sudoku[i][j] = x; - fixValue(i, j, x, possible); - continue; - } - - while (true) { - let x = deterministic - ? chooseFirstPossible(i, j, possible) - : chooseRandomPossible(i, j, possible); - - // no values possible! we failed to get a solution - if (x === 0) return; - - let sudoku_ = cloneSudoku(sudoku); - let possible_ = cloneSudoku(possible); - sudoku_[i][j] = x; - fixValue(i, j, x, possible_); - - let solution = solveSudokuInternal(sudoku_, deterministic, possible_); - - // found a solution? return it! - if (solution !== undefined) return solution; - - // there is no solution with x at i, j! - // mark this value as impossible and try again - possible[i][j][x - 1] = 0; - } - } -} - -// possible = {0,1}^(9x9x9) tensor of possibilities -// possible[i][j][x] contains a 1 if entry x \in {1,...,9} is possible in sudoku[i][j], 0 otherwise -// => allows us to quickly determine cells where few values are possible -function possibleFromSudoku(sudoku) { - let possible = Array.from({ length: 9 }, () => - Array.from({ length: 9 }, () => Array(9).fill(1)) - ); - for (let i = 0; i < 9; i++) { - for (let j = 0; j < 9; j++) { - let x = sudoku[i][j]; - if (x !== 0) { - fixValue(i, j, x, possible); - } - } - } - return possible; -} - -function chooseFirstPossible(i, j, possible) { - let possibleIJ = possible[i][j]; - let x = 0; - for (let k = 0; k < 9; k++) { - if (possibleIJ[k] === 1) { - x = k + 1; - break; - } - } - return x; -} - -function chooseRandomPossible(i, j, possible) { - let possibleValues = possible[i][j] - .map((b, m) => b && m + 1) - .filter((b) => b); - let n = possibleValues.length; - if (n === 0) return 0; - let k = Math.floor(Math.random() * n); - return possibleValues[k]; -} - -function fixValue(i, j, x, possible) { - // mark the value as impossible in the same row - for (let k = 0; k < 9; k++) { - if (k === j) { - possible[i][k][x - 1] = 1; - } else { - possible[i][k][x - 1] = 0; - } - } - // mark the value as impossible in the same column - for (let k = 0; k < 9; k++) { - if (k === i) { - possible[k][j][x - 1] = 1; - } else { - possible[k][j][x - 1] = 0; - } - } - // mark the value as impossible in the same square - let [i0, i1] = divmod(i, 3); - let [j0, j1] = divmod(j, 3); - for (let k = 0; k < 9; k++) { - let [ii, jj] = divmod(k, 3); - if (ii === i1 && jj === j1) { - possible[3 * i0 + ii][3 * j0 + jj][x - 1] = 1; - } else { - possible[3 * i0 + ii][3 * j0 + jj][x - 1] = 0; - } - } - // mark all other values as impossible in the same cell - for (let k = 0; k < 9; k++) { - if (k === x - 1) { - possible[i][j][k] = 1; - } else { - possible[i][j][k] = 0; - } - } -} - -function cellWithFewestPossible(sudoku, possible) { - let i0, j0; - let fewest = Infinity; - for (let i = 0; i < 9; i++) { - for (let j = 0; j < 9; j++) { - if (sudoku[i][j] !== 0) continue; - let possibleIJ = possible[i][j]; - let n = 0; - for (let k = 0; k < 9; k++) { - if (possibleIJ[k] === 1) n++; - } - if (n < fewest) { - if (n === 1 || n === 0) return [i, j, n]; - fewest = n; - [i0, j0] = [i, j]; - } - } - } - return [i0, j0, fewest]; -} - -function divmod(k, n) { - let q = Math.floor(k / n); - return [q, k - q * n]; -} - -/** - * Clones a sudoku. - * - * @template T - * @param {T[]} sudoku - * @returns {T[]} - */ -function cloneSudoku(sudoku) { - if (Array.isArray(sudoku[0])) { - return sudoku.map((x) => cloneSudoku(x)); - } else { - return [...sudoku]; - } -} diff --git a/example/mina_zkapp/src/sudoku.test.ts b/example/mina_zkapp/src/sudoku.test.ts deleted file mode 100644 index d4911351b..000000000 --- a/example/mina_zkapp/src/sudoku.test.ts +++ /dev/null @@ -1,84 +0,0 @@ -import { Sudoku, SudokuZkApp } from './sudoku'; -import { cloneSudoku, generateSudoku, solveSudoku } from './sudoku-lib'; -import { PrivateKey, PublicKey, Mina, AccountUpdate } from 'o1js'; - -describe('sudoku', () => { - let zkApp: SudokuZkApp, - zkAppPrivateKey: PrivateKey, - zkAppAddress: PublicKey, - sudoku: number[][], - sender: Mina.TestPublicKey, - senderKey: PrivateKey; - - beforeEach(async () => { - let Local = await Mina.LocalBlockchain({ proofsEnabled: false }); - Mina.setActiveInstance(Local); - sender = Local.testAccounts[0]; - senderKey = sender.key; - zkAppPrivateKey = PrivateKey.random(); - zkAppAddress = zkAppPrivateKey.toPublicKey(); - zkApp = new SudokuZkApp(zkAppAddress); - sudoku = generateSudoku(0.5); - }); - - it('accepts a correct solution', async () => { - await deploy(zkApp, zkAppPrivateKey, sudoku, sender, senderKey); - - let isSolved = zkApp.isSolved.get().toBoolean(); - expect(isSolved).toBe(false); - - let solution = solveSudoku(sudoku); - if (solution === undefined) throw Error('cannot happen'); - let tx = await Mina.transaction(sender, async () => { - let zkApp = new SudokuZkApp(zkAppAddress); - await zkApp.submitSolution(Sudoku.from(sudoku), Sudoku.from(solution!)); - }); - await tx.prove(); - await tx.sign([senderKey]).send(); - - isSolved = zkApp.isSolved.get().toBoolean(); - expect(isSolved).toBe(true); - }); - - it('rejects an incorrect solution', async () => { - await deploy(zkApp, zkAppPrivateKey, sudoku, sender, senderKey); - - let solution = solveSudoku(sudoku); - if (solution === undefined) throw Error('cannot happen'); - - let noSolution = cloneSudoku(solution); - noSolution[0][0] = (noSolution[0][0] % 9) + 1; - - await expect(async () => { - let tx = await Mina.transaction(sender, async () => { - let zkApp = new SudokuZkApp(zkAppAddress); - await zkApp.submitSolution( - Sudoku.from(sudoku), - Sudoku.from(noSolution) - ); - }); - await tx.prove(); - await tx.sign([senderKey]).send(); - }).rejects.toThrow(/array contains the numbers 1...9/); - - let isSolved = zkApp.isSolved.get().toBoolean(); - expect(isSolved).toBe(false); - }); -}); - -async function deploy( - zkApp: SudokuZkApp, - zkAppPrivateKey: PrivateKey, - sudoku: number[][], - sender: PublicKey, - senderKey: PrivateKey -) { - let tx = await Mina.transaction(sender, async () => { - AccountUpdate.fundNewAccount(sender); - await zkApp.deploy(); - await zkApp.update(Sudoku.from(sudoku)); - }); - await tx.prove(); - // this tx needs .sign(), because `deploy()` adds an account update that requires signature authorization - await tx.sign([zkAppPrivateKey, senderKey]).send(); -} diff --git a/example/mina_zkapp/src/sudoku.ts b/example/mina_zkapp/src/sudoku.ts deleted file mode 100644 index 9b624f860..000000000 --- a/example/mina_zkapp/src/sudoku.ts +++ /dev/null @@ -1,114 +0,0 @@ -import { - Field, - SmartContract, - method, - Bool, - state, - State, - Poseidon, - Struct, - Provable, -} from 'o1js'; - -export { Sudoku, SudokuZkApp }; - -class Sudoku extends Struct({ - value: Provable.Array(Provable.Array(Field, 9), 9), -}) { - static from(value: number[][]) { - return new Sudoku({ value: value.map((row) => row.map(Field)) }); - } - - hash() { - return Poseidon.hash(this.value.flat()); - } -} - -class SudokuZkApp extends SmartContract { - @state(Field) sudokuHash = State(); - @state(Bool) isSolved = State(); - - /** - * by making this a `@method`, we ensure that a proof is created for the state initialization. - * alternatively (and, more efficiently), we could have used `super.init()` inside `update()` below, - * to ensure the entire state is overwritten. - * however, it's good to have an example which tests the CLI's ability to handle init() decorated with `@method`. - */ - @method async init() { - super.init(); - } - - @method async update(sudokuInstance: Sudoku) { - this.sudokuHash.set(sudokuInstance.hash()); - this.isSolved.set(Bool(false)); - } - - @method async submitSolution( - sudokuInstance: Sudoku, - solutionInstance: Sudoku - ) { - let sudoku = sudokuInstance.value; - let solution = solutionInstance.value; - - // first, we check that the passed solution is a valid sudoku - - // define helpers - let range9 = Array.from({ length: 9 }, (_, i) => i); - let oneTo9 = range9.map((i) => Field(i + 1)); - - function assertHas1To9(array: Field[]) { - oneTo9 - .map((k) => range9.map((i) => array[i].equals(k)).reduce(Bool.or)) - .reduce(Bool.and) - .assertTrue('array contains the numbers 1...9'); - } - - // check all rows - for (let i = 0; i < 9; i++) { - let row = solution[i]; - assertHas1To9(row); - } - // check all columns - for (let j = 0; j < 9; j++) { - let column = solution.map((row) => row[j]); - assertHas1To9(column); - } - // check 3x3 squares - for (let k = 0; k < 9; k++) { - let [i0, j0] = divmod(k, 3); - let square = range9.map((m) => { - let [i1, j1] = divmod(m, 3); - return solution[3 * i0 + i1][3 * j0 + j1]; - }); - assertHas1To9(square); - } - - // next, we check that the solution extends the initial sudoku - for (let i = 0; i < 9; i++) { - for (let j = 0; j < 9; j++) { - let cell = sudoku[i][j]; - let solutionCell = solution[i][j]; - // either the sudoku has nothing in it (indicated by a cell value of 0), - // or it is equal to the solution - Bool.or(cell.equals(0), cell.equals(solutionCell)).assertTrue( - `solution cell (${i + 1},${j + 1}) matches the original sudoku` - ); - } - } - - // finally, we check that the sudoku is the one that was originally deployed - let sudokuHash = this.sudokuHash.getAndRequireEquals(); - - sudokuInstance - .hash() - .assertEquals(sudokuHash, 'sudoku matches the one committed on-chain'); - - // all checks passed => the sudoku is solved! - this.isSolved.set(Bool(true)); - } -} - -function divmod(k: number, n: number) { - let q = Math.floor(k / n); - return [q, k - q * n]; -} diff --git a/example/mina_zkapp/tsconfig.json b/example/mina_zkapp/tsconfig.json deleted file mode 100644 index 9cb138e2a..000000000 --- a/example/mina_zkapp/tsconfig.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "compilerOptions": { - "target": "es2020", - "module": "es2022", - "lib": ["dom", "esnext"], - "outDir": "./build", - "rootDir": ".", - "strict": true, - "strictPropertyInitialization": false, // to enable generic constructors, e.g. on CircuitValue - "skipLibCheck": true, - "forceConsistentCasingInFileNames": true, - "esModuleInterop": true, - "moduleResolution": "node", - "experimentalDecorators": true, - "emitDecoratorMetadata": true, - "allowJs": true, - "declaration": true, - "sourceMap": true, - "noFallthroughCasesInSwitch": true, - "allowSyntheticDefaultImports": true, - "useDefineForClassFields": false, - }, - "include": ["./src"], -} diff --git a/hourly_task.sh b/hourly_task.sh new file mode 100644 index 000000000..4b030ead4 --- /dev/null +++ b/hourly_task.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +# 环境变量配置(关键!cron 默认无用户环境变量) +SHELL=/bin/bash +PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/ubuntu/.cargo/bin/cargo + +# 日志配置 +LOG_FILE="/home/ubuntu/hourly_task.log" +TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S") + +# 任务内容示例(根据需求修改) +main() { + cd /home/ubuntu/nori_workspace/mina_bridge/ + #make submit_devnet_state + /home/ubuntu/.cargo/bin/cargo run --manifest-path core/Cargo.toml --release -- submit-state --devnet +} + +# 执行主函数 +main +~ ~ \ No newline at end of file diff --git a/example/app/.gitignore b/mina_state_verifier/.gitignore similarity index 100% rename from example/app/.gitignore rename to mina_state_verifier/.gitignore diff --git a/mina_state_verifier/Cargo.lock b/mina_state_verifier/Cargo.lock new file mode 100644 index 000000000..3e535feff --- /dev/null +++ b/mina_state_verifier/Cargo.lock @@ -0,0 +1,2685 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "addr2line" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "ahash" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" +dependencies = [ + "getrandom 0.2.17", + "once_cell", + "version_check", +] + +[[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 = "anyhow" +version = "1.0.101" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f0e0fee31ef5ed1ba1316088939cea399010ed7731dba877ed44aeb407a75ea" + +[[package]] +name = "ark-ec" +version = "0.3.0" +source = "git+https://github.com/lambdaclass/openmina_algebra?rev=017531e7aaa15a2c856532b0843876e371b01122#017531e7aaa15a2c856532b0843876e371b01122" +dependencies = [ + "ark-ff", + "ark-serialize", + "ark-std", + "derivative", + "num-traits", + "rayon", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.3.0" +source = "git+https://github.com/lambdaclass/openmina_algebra?rev=017531e7aaa15a2c856532b0843876e371b01122#017531e7aaa15a2c856532b0843876e371b01122" +dependencies = [ + "ark-ff-asm", + "ark-ff-macros", + "ark-serialize", + "ark-std", + "derivative", + "num-bigint", + "num-traits", + "paste", + "rayon", + "rustc_version 0.3.3", + "zeroize", +] + +[[package]] +name = "ark-ff-asm" +version = "0.3.0" +source = "git+https://github.com/lambdaclass/openmina_algebra?rev=017531e7aaa15a2c856532b0843876e371b01122#017531e7aaa15a2c856532b0843876e371b01122" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.3.0" +source = "git+https://github.com/lambdaclass/openmina_algebra?rev=017531e7aaa15a2c856532b0843876e371b01122#017531e7aaa15a2c856532b0843876e371b01122" +dependencies = [ + "num-bigint", + "num-traits", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-poly" +version = "0.3.0" +source = "git+https://github.com/lambdaclass/openmina_algebra?rev=017531e7aaa15a2c856532b0843876e371b01122#017531e7aaa15a2c856532b0843876e371b01122" +dependencies = [ + "ark-ff", + "ark-serialize", + "ark-std", + "derivative", + "hashbrown 0.11.2", + "rayon", +] + +[[package]] +name = "ark-serialize" +version = "0.3.0" +source = "git+https://github.com/lambdaclass/openmina_algebra?rev=017531e7aaa15a2c856532b0843876e371b01122#017531e7aaa15a2c856532b0843876e371b01122" +dependencies = [ + "ark-serialize-derive", + "ark-std", + "digest 0.9.0", +] + +[[package]] +name = "ark-serialize-derive" +version = "0.3.0" +source = "git+https://github.com/lambdaclass/openmina_algebra?rev=017531e7aaa15a2c856532b0843876e371b01122#017531e7aaa15a2c856532b0843876e371b01122" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-std" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" +dependencies = [ + "num-traits", + "rand", + "rayon", +] + +[[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" + +[[package]] +name = "async-channel" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" +dependencies = [ + "concurrent-queue", + "event-listener", + "futures-core", +] + +[[package]] +name = "atomic-polyfill" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cf2bce30dfe09ef0bfaef228b9d414faaf7e563035494d7fe092dba54b300f4" +dependencies = [ + "critical-section", +] + +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "backtrace" +version = "0.3.76" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-link", +] + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bcs" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85b6598a2f5d564fb7855dc6b06fd1c38cff5a72bd8b863a4d021938497b440a" +dependencies = [ + "serde", + "thiserror 1.0.69", +] + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "binprot" +version = "0.1.8" +source = "git+https://github.com/lambdaclass/openmina-binprot-rs?rev=2b5a909#2b5a9099a1c5640559d04e39899da301aebc8023" +dependencies = [ + "binprot_derive", + "byteorder", + "md5", +] + +[[package]] +name = "binprot_derive" +version = "0.1.7" +source = "git+https://github.com/lambdaclass/openmina-binprot-rs?rev=2b5a909#2b5a9099a1c5640559d04e39899da301aebc8023" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "blake2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "blake2b_simd" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b79834656f71332577234b50bfc009996f7449e0c056884e6a02492ded0ca2f3" +dependencies = [ + "arrayref", + "arrayvec", + "constant_time_eq", +] + +[[package]] +name = "blake2s_simd" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee29928bad1e3f94c9d1528da29e07a1d3d04817ae8332de1e8b846c8439f4b3" +dependencies = [ + "arrayref", + "arrayvec", + "constant_time_eq", +] + +[[package]] +name = "blake3" +version = "1.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2468ef7d57b3fb7e16b576e8377cdbde2320c60e1491e961d11da40fc4f02a2d" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", + "cpufeatures", +] + +[[package]] +name = "block-buffer" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +dependencies = [ + "generic-array", +] + +[[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 = "bs58" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" +dependencies = [ + "sha2 0.9.9", +] + +[[package]] +name = "bs58" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "bumpalo" +version = "3.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "cc" +version = "1.2.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2" +dependencies = [ + "find-msvc-tools", + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "chrono" +version = "0.4.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fac4744fb15ae8337dc853fee7fb3f4e48c0fbaa23d0afe49c447b4fab126118" +dependencies = [ + "iana-time-zone", + "js-sys", + "num-traits", + "serde", + "wasm-bindgen", + "windows-link", +] + +[[package]] +name = "cobs" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1" +dependencies = [ + "thiserror 2.0.18", +] + +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "constant_time_eq" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" + +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "core2" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b49ba7ef1ad6107f8824dbe97de947cbaac53c44e7f9756a1fba0d37c1eec505" +dependencies = [ + "memchr", +] + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[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-deque" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crypto-common" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "darling" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" +dependencies = [ + "darling_core 0.13.4", + "darling_macro 0.13.4", +] + +[[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.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim 0.10.0", + "syn 1.0.109", +] + +[[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", + "strsim 0.11.1", + "syn 2.0.116", +] + +[[package]] +name = "darling_macro" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" +dependencies = [ + "darling_core 0.13.4", + "quote", + "syn 1.0.109", +] + +[[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.116", +] + +[[package]] +name = "deranged" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc3dc5ad92c2e2d1c193bbbbdf2ea477cb81331de4f3103f267ca18368b988c4" +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_more" +version = "0.99.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version 0.4.1", + "syn 2.0.116", +] + +[[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 0.10.4", + "crypto-common", + "subtle", +] + +[[package]] +name = "disjoint-set" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d102f1a462fdcdddce88d6d46c06c074a2d2749b262230333726b06c52bb7585" + +[[package]] +name = "dyn-clone" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" + +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + +[[package]] +name = "embedded-io" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" + +[[package]] +name = "enum_dispatch" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa18ce2bc66555b3218614519ac839ddb759a7d6720732f979ef8d13be147ecd" +dependencies = [ + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.116", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "find-msvc-tools" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" + +[[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 = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" + +[[package]] +name = "futures-executor" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" + +[[package]] +name = "futures-macro" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.116", +] + +[[package]] +name = "futures-sink" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" + +[[package]] +name = "futures-task" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" + +[[package]] +name = "futures-util" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "139ef39800118c7683f2fd3c98c1b23c09ae076556b435f8e9064ae108aaeeec" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasip2", + "wasip3", +] + +[[package]] +name = "gimli" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" + +[[package]] +name = "groupmap" +version = "0.1.0" +source = "git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b98b8747de54e595f53d97c035ff43167c#44e0d3b98b8747de54e595f53d97c035ff43167c" +dependencies = [ + "ark-ec", + "ark-ff", + "rand", +] + +[[package]] +name = "hash32" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" +dependencies = [ + "byteorder", +] + +[[package]] +name = "hashbrown" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" +dependencies = [ + "ahash", +] + +[[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 = [ + "foldhash", +] + +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" + +[[package]] +name = "heapless" +version = "0.7.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdc6457c0eb62c71aac4bc17216026d8410337c4126773b9c5daba343f17964f" +dependencies = [ + "atomic-polyfill", + "hash32", + "rustc_version 0.4.1", + "serde", + "spin", + "stable_deref_trait", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +dependencies = [ + "serde", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.65" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" +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 = "id-arena" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[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.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +dependencies = [ + "equivalent", + "hashbrown 0.16.1", + "serde", + "serde_core", +] + +[[package]] +name = "instant" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" + +[[package]] +name = "js-sys" +version = "0.3.85" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c942ebf8e95485ca0d52d97da7c5a2c387d0e7f0ba4c35e93bfcaee045955b3" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "keccak" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb26cec98cce3a3d96cbb7bced3c4b16e3d13f27ec56dbd62cbc8f39cfb9d653" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "kimchi" +version = "0.1.0" +source = "git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b98b8747de54e595f53d97c035ff43167c#44e0d3b98b8747de54e595f53d97c035ff43167c" +dependencies = [ + "ark-ec", + "ark-ff", + "ark-poly", + "ark-serialize", + "blake2", + "disjoint-set", + "groupmap", + "hex", + "itertools", + "mina-curves", + "mina-poseidon", + "num-bigint", + "num-derive", + "num-integer", + "num-traits", + "o1-utils 0.1.0 (git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b98b8747de54e595f53d97c035ff43167c)", + "once_cell", + "poly-commitment", + "rand", + "rand_core", + "rayon", + "rmp-serde", + "serde", + "serde_with 1.14.0", + "strum", + "strum_macros", + "thiserror 1.0.69", + "turshi", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "leb128fmt" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" + +[[package]] +name = "libc" +version = "0.2.182" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" + +[[package]] +name = "linkme" +version = "0.3.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e3283ed2d0e50c06dd8602e0ab319bb048b6325d0bba739db64ed8205179898" +dependencies = [ + "linkme-impl", +] + +[[package]] +name = "linkme-impl" +version = "0.3.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5cec0ec4228b4853bb129c84dbf093a27e6c7a20526da046defc334a1b017f7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.116", +] + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" + +[[package]] +name = "md5" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771" + +[[package]] +name = "memchr" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" + +[[package]] +name = "mina-curves" +version = "0.1.0" +source = "git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b98b8747de54e595f53d97c035ff43167c#44e0d3b98b8747de54e595f53d97c035ff43167c" +dependencies = [ + "ark-ec", + "ark-ff", +] + +[[package]] +name = "mina-hasher" +version = "0.1.0" +source = "git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b98b8747de54e595f53d97c035ff43167c#44e0d3b98b8747de54e595f53d97c035ff43167c" +dependencies = [ + "ark-ff", + "bitvec", + "mina-curves", + "mina-poseidon", + "o1-utils 0.1.0 (git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b98b8747de54e595f53d97c035ff43167c)", + "serde", +] + +[[package]] +name = "mina-p2p-messages" +version = "0.6.4" +source = "git+https://github.com/lambdaclass/openmina/?rev=97df7ca5e3b631c99c9fa23a9ff8c76b4120504c#97df7ca5e3b631c99c9fa23a9ff8c76b4120504c" +dependencies = [ + "ark-ff", + "base64 0.13.1", + "binprot", + "binprot_derive", + "blake2", + "bs58 0.4.0", + "derive_more", + "hex", + "mina-curves", + "mina-hasher", + "mina-poseidon", + "mina-signer", + "o1-utils 0.1.0 (git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b98b8747de54e595f53d97c035ff43167c)", + "rsexp", + "serde", + "serde_json", + "sha2 0.10.9", + "thiserror 1.0.69", + "time", +] + +[[package]] +name = "mina-poseidon" +version = "0.1.0" +source = "git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b98b8747de54e595f53d97c035ff43167c#44e0d3b98b8747de54e595f53d97c035ff43167c" +dependencies = [ + "ark-ec", + "ark-ff", + "ark-poly", + "mina-curves", + "o1-utils 0.1.0 (git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b98b8747de54e595f53d97c035ff43167c)", + "once_cell", + "rand", + "rayon", + "serde", + "serde_with 1.14.0", +] + +[[package]] +name = "mina-signer" +version = "0.1.0" +source = "git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b98b8747de54e595f53d97c035ff43167c#44e0d3b98b8747de54e595f53d97c035ff43167c" +dependencies = [ + "ark-ec", + "ark-ff", + "bitvec", + "blake2", + "bs58 0.4.0", + "hex", + "mina-curves", + "mina-hasher", + "o1-utils 0.1.0 (git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b98b8747de54e595f53d97c035ff43167c)", + "rand", + "sha2 0.10.9", + "thiserror 1.0.69", +] + +[[package]] +name = "mina-state-verifier" +version = "0.1.0" +dependencies = [ + "ark-ec", + "ark-ff", + "ark-poly", + "ark-serialize", + "base64 0.22.1", + "bincode", + "blake2", + "bs58 0.5.1", + "hex", + "kimchi", + "lazy_static", + "log", + "mina-curves", + "mina-p2p-messages", + "mina-tree", + "o1-utils 0.1.0 (git+https://github.com/lambdaclass/proof-systems?rev=5bdeab3c2a43a671645952f63b9354b7a20b2326)", + "once_cell", + "poly-commitment", + "rmp-serde", + "serde", + "serde_json", + "serde_with 3.16.1", +] + +[[package]] +name = "mina-tree" +version = "0.6.0" +source = "git+https://github.com/lambdaclass/openmina/?rev=97df7ca5e3b631c99c9fa23a9ff8c76b4120504c#97df7ca5e3b631c99c9fa23a9ff8c76b4120504c" +dependencies = [ + "anyhow", + "ark-ec", + "ark-ff", + "ark-poly", + "ark-serialize", + "backtrace", + "base64 0.13.1", + "bitvec", + "blake2", + "bs58 0.4.0", + "chrono", + "crc32fast", + "derive_more", + "getrandom 0.2.17", + "hex", + "itertools", + "kimchi", + "lazy_static", + "libc", + "mina-curves", + "mina-hasher", + "mina-p2p-messages", + "mina-poseidon", + "mina-signer", + "num-bigint", + "o1-utils 0.1.0 (git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b98b8747de54e595f53d97c035ff43167c)", + "once_cell", + "openmina-core", + "poly-commitment", + "postcard", + "rand", + "rand_pcg", + "rand_seeder", + "rayon", + "serde", + "serde_json", + "serde_with 3.16.1", + "sha2 0.10.9", + "static_assertions", + "thiserror 1.0.69", + "tuple-map", + "uuid", + "wasm-bindgen", + "wasm_thread", +] + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", +] + +[[package]] +name = "multihash" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfd8a792c1694c6da4f68db0a9d707c72bd260994da179e6030a5dcee00bb815" +dependencies = [ + "blake2b_simd", + "blake2s_simd", + "blake3", + "core2", + "digest 0.10.7", + "multihash-derive", + "sha2 0.10.9", + "sha3", + "unsigned-varint", +] + +[[package]] +name = "multihash-derive" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6d4752e6230d8ef7adf7bd5d8c4b1f6561c1014c5ba9a37445ccefe18aa1db" +dependencies = [ + "proc-macro-crate", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", + "synstructure", +] + +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", + "rand", + "serde", +] + +[[package]] +name = "num-conv" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70e49aa4a6b7d74e9919050" + +[[package]] +name = "num-derive" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[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-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "o1-utils" +version = "0.1.0" +source = "git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b98b8747de54e595f53d97c035ff43167c#44e0d3b98b8747de54e595f53d97c035ff43167c" +dependencies = [ + "ark-ec", + "ark-ff", + "ark-poly", + "ark-serialize", + "bcs", + "hex", + "num-bigint", + "num-integer", + "num-traits", + "rand", + "rand_core", + "rayon", + "serde", + "serde_with 1.14.0", + "sha2 0.10.9", + "thiserror 1.0.69", +] + +[[package]] +name = "o1-utils" +version = "0.1.0" +source = "git+https://github.com/lambdaclass/proof-systems?rev=5bdeab3c2a43a671645952f63b9354b7a20b2326#5bdeab3c2a43a671645952f63b9354b7a20b2326" +dependencies = [ + "ark-ec", + "ark-ff", + "ark-poly", + "ark-serialize", + "bcs", + "hex", + "num-bigint", + "num-integer", + "num-traits", + "rand", + "rand_core", + "rayon", + "serde", + "serde_with 3.16.1", + "sha2 0.10.9", + "thiserror 1.0.69", +] + +[[package]] +name = "object" +version = "0.37.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + +[[package]] +name = "openmina-core" +version = "0.6.0" +source = "git+https://github.com/lambdaclass/openmina/?rev=97df7ca5e3b631c99c9fa23a9ff8c76b4120504c#97df7ca5e3b631c99c9fa23a9ff8c76b4120504c" +dependencies = [ + "ark-ff", + "binprot", + "binprot_derive", + "hex", + "lazy_static", + "md5", + "mina-hasher", + "mina-p2p-messages", + "multihash", + "openmina-macros", + "redux", + "serde", + "sha2 0.10.9", + "slab", + "time", + "tokio", + "tracing", +] + +[[package]] +name = "openmina-macros" +version = "0.6.0" +source = "git+https://github.com/lambdaclass/openmina/?rev=97df7ca5e3b631c99c9fa23a9ff8c76b4120504c#97df7ca5e3b631c99c9fa23a9ff8c76b4120504c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.116", +] + +[[package]] +name = "parking_lot" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" +dependencies = [ + "instant", + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" +dependencies = [ + "cfg-if", + "instant", + "libc", + "redox_syscall", + "smallvec", + "winapi", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "pest" +version = "2.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662" +dependencies = [ + "memchr", + "ucd-trie", +] + +[[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 = "poly-commitment" +version = "0.1.0" +source = "git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b98b8747de54e595f53d97c035ff43167c#44e0d3b98b8747de54e595f53d97c035ff43167c" +dependencies = [ + "ark-ec", + "ark-ff", + "ark-poly", + "ark-serialize", + "blake2", + "groupmap", + "itertools", + "mina-curves", + "mina-poseidon", + "o1-utils 0.1.0 (git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b98b8747de54e595f53d97c035ff43167c)", + "once_cell", + "rand", + "rand_core", + "rayon", + "serde", + "serde_with 1.14.0", + "thiserror 1.0.69", +] + +[[package]] +name = "postcard" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" +dependencies = [ + "cobs", + "embedded-io 0.4.0", + "embedded-io 0.6.1", + "heapless", + "serde", +] + +[[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 = "prettyplease" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" +dependencies = [ + "proc-macro2", + "syn 2.0.116", +] + +[[package]] +name = "proc-macro-crate" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e17d47ce914bf4de440332250b0edd23ce48c005f59fab39d3335866b114f11a" +dependencies = [ + "thiserror 1.0.69", + "toml", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" +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 = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.17", +] + +[[package]] +name = "rand_pcg" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59cad018caf63deb318e5a4586d99a24424a364f40f1e5778c29aca23f4fc73e" +dependencies = [ + "rand_core", +] + +[[package]] +name = "rand_seeder" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf2890aaef0aa82719a50e808de264f9484b74b442e1a3a0e5ee38243ac40bdb" +dependencies = [ + "rand_core", +] + +[[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 = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redux" +version = "0.1.0" +source = "git+https://github.com/lambdaclass/redux-rs?rev=2d1d8db#2d1d8dbd7239c0aec91db8f11126b90068dc848b" +dependencies = [ + "enum_dispatch", + "linkme", + "paste", + "serde", + "wasm-timer", +] + +[[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.116", +] + +[[package]] +name = "rmp" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ba8be72d372b2c9b35542551678538b562e7cf86c3315773cae48dfbfe7790c" +dependencies = [ + "num-traits", +] + +[[package]] +name = "rmp-serde" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72f81bee8c8ef9b577d1681a70ebbc962c232461e397b22c208c43c04b67a155" +dependencies = [ + "rmp", + "serde", +] + +[[package]] +name = "rsexp" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3df9a9b6491d42c0fc527e92a87525c17e45c6b9c22345702a6dc0400320bf1" + +[[package]] +name = "rustc-demangle" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b50b8869d9fc858ce7266cce0194bd74df58b9d0e3f6df3a9fc8eb470d95c09d" + +[[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 = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[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.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2b42f36aa1cd011945615b92222f6bf73c599a102a300334cd7f8dbeec726cc" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[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_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.116", +] + +[[package]] +name = "serde_json" +version = "1.0.149" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +dependencies = [ + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] + +[[package]] +name = "serde_with" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "678b5a069e50bf00ecd22d0cd8ddf7c236f68581b03db652061ed5eb13a312ff" +dependencies = [ + "serde", + "serde_with_macros 1.5.2", +] + +[[package]] +name = "serde_with" +version = "3.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fa237f2807440d238e0364a218270b98f767a00d3dada77b1c53ae88940e2e7" +dependencies = [ + "base64 0.22.1", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.13.0", + "schemars 0.9.0", + "schemars 1.2.1", + "serde_core", + "serde_json", + "serde_with_macros 3.16.1", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e182d6ec6f05393cc0e5ed1bf81ad6db3a8feedf8ee515ecdd369809bcce8082" +dependencies = [ + "darling 0.13.4", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[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.116", +] + +[[package]] +name = "sha2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest 0.10.7", + "keccak", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "slab" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" +dependencies = [ + "serde", +] + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +dependencies = [ + "lock_api", +] + +[[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.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "strum" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" + +[[package]] +name = "strum_macros" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "rustversion", + "syn 1.0.109", +] + +[[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.116" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3df424c70518695237746f84cede799c9c58fcb37450d7b23716568cc8bc69cb" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "synstructure" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", + "unicode-xid", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" +dependencies = [ + "thiserror-impl 2.0.18", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.116", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.116", +] + +[[package]] +name = "time" +version = "0.3.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde_core", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" + +[[package]] +name = "time-macros" +version = "0.2.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215" +dependencies = [ + "num-conv", + "time-core", +] + +[[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.49.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86" +dependencies = [ + "pin-project-lite", +] + +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "serde", +] + +[[package]] +name = "tracing" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" +dependencies = [ + "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.116", +] + +[[package]] +name = "tracing-core" +version = "0.1.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" +dependencies = [ + "once_cell", +] + +[[package]] +name = "tuple-map" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23d5919d7121237af683b7fa982450597b1eaa2643e597aec3b519e4e5ab3d62" + +[[package]] +name = "turshi" +version = "0.1.0" +source = "git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b98b8747de54e595f53d97c035ff43167c#44e0d3b98b8747de54e595f53d97c035ff43167c" +dependencies = [ + "ark-ff", + "hex", + "o1-utils 0.1.0 (git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b98b8747de54e595f53d97c035ff43167c)", +] + +[[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 = "unicode-ident" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "unsigned-varint" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6889a77d49f1f013504cec6bf97a2c730394adedaeb1deb5ea08949a50541105" + +[[package]] +name = "uuid" +version = "1.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b672338555252d43fd2240c714dc444b8c6fb0a5c5335e65a07bba7742735ddb" +dependencies = [ + "getrandom 0.4.1", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[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.2+wasi-0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasip3" +version = "0.4.0+wasi-0.3.0-rc-2026-01-06" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.108" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64024a30ec1e37399cf85a7ffefebdb72205ca1c972291c51512360d90bd8566" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70a6e77fd0ae8029c9ea0063f87c46fde723e7d887703d74ad2616d792e51e6f" +dependencies = [ + "cfg-if", + "futures-util", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.108" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "008b239d9c740232e71bd39e8ef6429d27097518b6b30bdf9086833bd5b6d608" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.108" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5256bae2d58f54820e6490f9839c49780dff84c65aeab9e772f15d5f0e913a55" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn 2.0.116", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.108" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f01b580c9ac74c8d8f0c0e4afb04eeef2acf145458e52c03845ee9cd23e3d12" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "wasm-encoder" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" +dependencies = [ + "leb128fmt", + "wasmparser", +] + +[[package]] +name = "wasm-metadata" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" +dependencies = [ + "anyhow", + "indexmap 2.13.0", + "wasm-encoder", + "wasmparser", +] + +[[package]] +name = "wasm-timer" +version = "0.2.5" +source = "git+https://github.com/fusetim/wasm-timer?branch=tim-add-missing-methods#39e1c2818944f804d68d64dae0d5639d22b0e59e" +dependencies = [ + "futures", + "js-sys", + "parking_lot", + "pin-utils", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "wasm_thread" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a52fc987e67957cab58160d1ea273a2886972ef6f59c7fa0c02e9fe2c8e11706" +dependencies = [ + "async-channel", + "futures", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasmparser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" +dependencies = [ + "bitflags 2.11.0", + "hashbrown 0.15.5", + "indexmap 2.13.0", + "semver 1.0.27", +] + +[[package]] +name = "web-sys" +version = "0.3.85" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "312e32e551d92129218ea9a2452120f4aabc03529ef03e4d0d82fb2780608598" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[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.116", +] + +[[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.116", +] + +[[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 = "wit-bindgen" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" +dependencies = [ + "wit-bindgen-rust-macro", +] + +[[package]] +name = "wit-bindgen-core" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" +dependencies = [ + "anyhow", + "heck 0.5.0", + "wit-parser", +] + +[[package]] +name = "wit-bindgen-rust" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" +dependencies = [ + "anyhow", + "heck 0.5.0", + "indexmap 2.13.0", + "prettyplease", + "syn 2.0.116", + "wasm-metadata", + "wit-bindgen-core", + "wit-component", +] + +[[package]] +name = "wit-bindgen-rust-macro" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" +dependencies = [ + "anyhow", + "prettyplease", + "proc-macro2", + "quote", + "syn 2.0.116", + "wit-bindgen-core", + "wit-bindgen-rust", +] + +[[package]] +name = "wit-component" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" +dependencies = [ + "anyhow", + "bitflags 2.11.0", + "indexmap 2.13.0", + "log", + "serde", + "serde_derive", + "serde_json", + "wasm-encoder", + "wasm-metadata", + "wasmparser", + "wit-parser", +] + +[[package]] +name = "wit-parser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" +dependencies = [ + "anyhow", + "id-arena", + "indexmap 2.13.0", + "log", + "semver 1.0.27", + "serde", + "serde_derive", + "serde_json", + "unicode-xid", + "wasmparser", +] + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "zerocopy" +version = "0.8.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db6d35d663eadb6c932438e763b262fe1a70987f9ae936e60158176d710cae4a" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4122cd3169e94605190e77839c9a40d40ed048d305bfdc146e7df40ab0f3e517" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.116", +] + +[[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.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.116", +] + +[[package]] +name = "zmij" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" diff --git a/mina_state_verifier/Cargo.toml b/mina_state_verifier/Cargo.toml new file mode 100644 index 000000000..5999eed2a --- /dev/null +++ b/mina_state_verifier/Cargo.toml @@ -0,0 +1,46 @@ +[package] +name = "mina-state-verifier" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "staticlib", "lib"] + +[features] +devnet = [] + +[dependencies] +kimchi = { git = "https://github.com/lambdaclass/openmina-proof-systems", rev = "44e0d3b98b8747de54e595f53d97c035ff43167c" } +poly-commitment = { git = "https://github.com/lambdaclass/openmina-proof-systems", rev = "44e0d3b98b8747de54e595f53d97c035ff43167c" } +mina-curves = { git = "https://github.com/lambdaclass/openmina-proof-systems", rev = "44e0d3b98b8747de54e595f53d97c035ff43167c" } +o1-utils = { git = "https://github.com/lambdaclass/proof-systems", rev = "5bdeab3c2a43a671645952f63b9354b7a20b2326" } +ark-ff = { version = "0.3.0", features = ["parallel", "asm"] } +ark-ec = { version = "0.3.0", features = ["parallel"] } +ark-poly = { version = "0.3.0", features = ["parallel"] } +ark-serialize = "0.3.0" +serde = "1.0.197" +serde_with = "3.6.0" +rmp-serde = "1.1.2" +serde_json = "1.0.118" +hex = "0.4.3" +mina-tree = { git = "https://github.com/lambdaclass/openmina/", rev = "97df7ca5e3b631c99c9fa23a9ff8c76b4120504c" } +mina-p2p-messages = { git = "https://github.com/lambdaclass/openmina/", rev = "97df7ca5e3b631c99c9fa23a9ff8c76b4120504c" } +base64 = "0.22.1" +bs58 = "0.5.1" +lazy_static = "1.5.0" +blake2 = "0.10.6" +once_cell = "1.19.0" +bincode = "1.3.3" +log = "0.4.21" + +[patch.crates-io] +ark-ff = { git = "https://github.com/lambdaclass/openmina_algebra", rev = "017531e7aaa15a2c856532b0843876e371b01122" } +ark-ec = { git = "https://github.com/lambdaclass/openmina_algebra", rev = "017531e7aaa15a2c856532b0843876e371b01122" } +ark-poly = { git = "https://github.com/lambdaclass/openmina_algebra", rev = "017531e7aaa15a2c856532b0843876e371b01122" } +ark-serialize = { git = "https://github.com/lambdaclass/openmina_algebra", rev = "017531e7aaa15a2c856532b0843876e371b01122" } + +[patch.'https://github.com/openmina/algebra'] +ark-ff = { git = "https://github.com/lambdaclass/openmina_algebra", rev = "017531e7aaa15a2c856532b0843876e371b01122" } +ark-ec = { git = "https://github.com/lambdaclass/openmina_algebra", rev = "017531e7aaa15a2c856532b0843876e371b01122" } +ark-poly = { git = "https://github.com/lambdaclass/openmina_algebra", rev = "017531e7aaa15a2c856532b0843876e371b01122" } +ark-serialize = { git = "https://github.com/lambdaclass/openmina_algebra", rev = "017531e7aaa15a2c856532b0843876e371b01122" } diff --git a/mina_state_verifier/mina_verifier.h b/mina_state_verifier/mina_verifier.h new file mode 100644 index 000000000..b06cb6f98 --- /dev/null +++ b/mina_state_verifier/mina_verifier.h @@ -0,0 +1,6 @@ +#include +#include + +int32_t verify_mina_state_ffi(unsigned char *proof_buffer, uint32_t proof_len, + unsigned char *pub_input_buffer, + uint32_t pub_input_len); diff --git a/mina_state_verifier/src/consensus_state.rs b/mina_state_verifier/src/consensus_state.rs new file mode 100644 index 000000000..3444666ab --- /dev/null +++ b/mina_state_verifier/src/consensus_state.rs @@ -0,0 +1,310 @@ +use blake2::{Blake2b512, Digest}; +use kimchi::o1_utils::FieldHelpers; +use mina_p2p_messages::{ + hash::MinaHash, + v2::{ + ConsensusProofOfStakeDataConsensusStateValueStableV2 as MinaConsensusState, + MinaStateProtocolStateValueStableV2 as MinaProtocolState, + }, +}; +use std::cmp::{max, min, Ordering}; + +const GRACE_PERIOD_END: u32 = 1440; +const SUB_WINDOWS_PER_WINDOW: u32 = 11; +const SLOTS_PER_SUB_WINDOW: u32 = 7; + +/// The result of the comparison of security between chains done in the `select_secure_chain` +/// function. +#[derive(Debug, PartialEq)] +pub enum ChainResult { + Bridge, + Candidate, +} + +/// Given two Mina chains, `candidate` and `tip`, returns an enum variant `ChainResult` that +/// indicates which chain is more secure. +/// Returns `ChainResult::Bridge` if `tip` is the most secure chain. `ChainResult::Candidate` +/// otherwise. +pub fn select_secure_chain( + candidate: &MinaProtocolState, + tip: &MinaProtocolState, +) -> Result { + if is_short_range(candidate, tip)? { + Ok(select_longer_chain(candidate, tip)) + } else { + let tip_density = relative_min_window_density(candidate, tip); + let candidate_density = relative_min_window_density(candidate, tip); + Ok(match candidate_density.cmp(&tip_density) { + Ordering::Less => ChainResult::Bridge, + Ordering::Equal => select_longer_chain(candidate, tip), + Ordering::Greater => ChainResult::Candidate, + }) + } +} + +fn select_longer_chain(candidate: &MinaProtocolState, tip: &MinaProtocolState) -> ChainResult { + let candidate_block_height = &candidate.body.consensus_state.blockchain_length.as_u32(); + let tip_block_height = &tip.body.consensus_state.blockchain_length.as_u32(); + + if candidate_block_height > tip_block_height { + return ChainResult::Candidate; + } + // tiebreak logic + else if candidate_block_height == tip_block_height { + // compare last VRF digests lexicographically + if hash_last_vrf(candidate) > hash_last_vrf(tip) { + return ChainResult::Candidate; + } else if hash_last_vrf(candidate) == hash_last_vrf(tip) { + // compare consensus state hashes lexicographically + if hash_state(candidate) > hash_state(tip) { + return ChainResult::Candidate; + } + } + } + + ChainResult::Bridge +} + +/// Returns true if the fork is short-range, else the fork is long-range. +fn is_short_range(candidate: &MinaProtocolState, tip: &MinaProtocolState) -> Result { + // TODO(xqft): verify constants are correct + if tip.body.constants != candidate.body.constants { + return Err("Protocol constants on candidate and tip state are not equal".to_string()); + } + let slots_per_epoch = tip.body.constants.slots_per_epoch.as_u32(); + + let candidate = &candidate.body.consensus_state; + let tip = &tip.body.consensus_state; + + let check = |s1: &MinaConsensusState, s2: &MinaConsensusState| { + let s2_epoch_slot = s2.global_slot() % slots_per_epoch; + if s1.epoch_count.as_u32() == s2.epoch_count.as_u32() + 1 + && s2_epoch_slot >= slots_per_epoch * 2 / 3 + { + s1.staking_epoch_data.lock_checkpoint == s2.next_epoch_data.lock_checkpoint + } else { + false + } + }; + + Ok(if candidate.epoch_count == tip.epoch_count { + candidate.staking_epoch_data.lock_checkpoint == tip.staking_epoch_data.lock_checkpoint + } else { + check(candidate, tip) || check(tip, candidate) + }) +} + +fn relative_min_window_density(candidate: &MinaProtocolState, tip: &MinaProtocolState) -> u32 { + let candidate = &candidate.body.consensus_state; + let tip = &tip.body.consensus_state; + + let max_slot = max(candidate.global_slot(), tip.global_slot()); + + if max_slot < GRACE_PERIOD_END { + return candidate.min_window_density.as_u32(); + } + + // Added input checks to compute `shift_count` and `i` safely. + // We don't take into account how to compute consensus checks in those border cases since + // we assume those cases happen when candidate and tip states aren't taken from a Mina node + // but built to perform a DoS attack. + let projected_window = { + let shift_count = max_slot + .checked_sub(candidate.global_slot()) + .and_then(|result| result.checked_sub(1)) + .unwrap_or(0) + .clamp(0, SUB_WINDOWS_PER_WINDOW); + let mut projected_window: Vec<_> = candidate + .sub_window_densities + .iter() + .map(|d| d.as_u32()) + .collect(); + + let mut i = relative_sub_window(candidate); + for _ in 0..shift_count { + i = (i + 1) % SUB_WINDOWS_PER_WINDOW; + if let Some(projected_window_i) = projected_window.get_mut(i as usize) { + *projected_window_i = 0 + } + } + + projected_window + }; + + let projected_window_density = projected_window.iter().sum(); + + min( + candidate.min_window_density.as_u32(), + projected_window_density, + ) +} + +fn relative_sub_window(state: &MinaConsensusState) -> u32 { + (state.global_slot() / SLOTS_PER_SUB_WINDOW) % SUB_WINDOWS_PER_WINDOW +} + +fn hash_last_vrf(chain: &MinaProtocolState) -> String { + let mut hasher = Blake2b512::new(); + hasher.update(chain.body.consensus_state.last_vrf_output.as_slice()); + let digest = hasher.finalize().to_vec(); + + hex::encode(digest) +} + +fn hash_state(chain: &MinaProtocolState) -> String { + MinaHash::hash(chain).to_hex() +} + +#[cfg(test)] +mod test { + use ark_ff::Fp256; + use proof::state_proof::MinaStateProof; + use mina_p2p_messages::{ + bigint::BigInt, + number::Number, + v2::{ + DataHashLibStateHashStableV1, MinaNumbersGlobalSlotSinceHardForkMStableV1, + UnsignedExtendedUInt32StableV1, + }, + }; + + use super::*; + + const PROOF_BYTES: &[u8] = + include_bytes!("../../../../scripts/test_files/mina/devnet_mina_state.proof"); + + #[test] + fn new_mina_state_passes_consensus_checks() { + let valid_proof: MinaStateProof = bincode::deserialize(PROOF_BYTES).unwrap(); + let old_tip = valid_proof.bridge_tip_state; + let new_tip = valid_proof.candidate_chain_states.last().unwrap(); + + assert_eq!( + select_secure_chain(new_tip, &old_tip).unwrap(), + ChainResult::Candidate + ); + } + + #[test] + fn old_mina_state_fails_consensus_checks() { + let valid_proof: MinaStateProof = bincode::deserialize(PROOF_BYTES).unwrap(); + let old_tip = valid_proof.bridge_tip_state; + let new_tip = valid_proof.candidate_chain_states.last().unwrap(); + + assert_eq!( + select_secure_chain(&old_tip, new_tip).unwrap(), + ChainResult::Bridge + ); + } + + #[test] + fn test_candidate_state_with_smaller_global_slot_than_tip_state() { + let valid_proof: MinaStateProof = bincode::deserialize(PROOF_BYTES).unwrap(); + let new_tip = valid_proof.bridge_tip_state; + let mut old_tip = valid_proof.candidate_chain_states.last().unwrap().clone(); + + // Force checking long fork rule: + // Set both `epoch_count` to be the same but set new `lock_checkpoint` of older one to be one less than newer one + old_tip.body.consensus_state.epoch_count = new_tip.body.consensus_state.epoch_count; + old_tip + .body + .consensus_state + .staking_epoch_data + .lock_checkpoint = DataHashLibStateHashStableV1(BigInt::from( + new_tip + .body + .consensus_state + .staking_epoch_data + .lock_checkpoint + .to_fp() + .unwrap() + - Fp256::from(1), + )) + .into(); + old_tip.body.consensus_state.sub_window_densities.pop_back(); + old_tip + .body + .consensus_state + .sub_window_densities + .push_back(UnsignedExtendedUInt32StableV1(Number(1))); + + // Set new `global_slot` to be `SUB_WINDOWS_PER_WINDOW + 2` less than older one + old_tip + .body + .consensus_state + .curr_global_slot_since_hard_fork + .slot_number = MinaNumbersGlobalSlotSinceHardForkMStableV1::SinceHardFork( + UnsignedExtendedUInt32StableV1(Number( + new_tip + .body + .consensus_state + .curr_global_slot_since_hard_fork + .slot_number + .as_u32() + - (SUB_WINDOWS_PER_WINDOW + 2), + )), + ); + + assert_eq!( + select_secure_chain(&new_tip, &old_tip).unwrap(), + ChainResult::Bridge + ); + } + + #[test] + fn test_candidate_state_with_less_sub_windows_densities_than_sub_windows_per_window() { + let valid_proof: MinaStateProof = bincode::deserialize(PROOF_BYTES).unwrap(); + let mut new_tip = valid_proof.bridge_tip_state; + let mut old_tip = valid_proof.candidate_chain_states.last().unwrap().clone(); + + // Force checking long fork rule: + // Set both `epoch_count` to be the same but set new `lock_checkpoint` of older one to be one less than newer one + old_tip.body.consensus_state.epoch_count = new_tip.body.consensus_state.epoch_count; + old_tip + .body + .consensus_state + .staking_epoch_data + .lock_checkpoint = DataHashLibStateHashStableV1(BigInt::from( + new_tip + .body + .consensus_state + .staking_epoch_data + .lock_checkpoint + .to_fp() + .unwrap() + - Fp256::from(1), + )) + .into(); + old_tip.body.consensus_state.sub_window_densities.pop_back(); + old_tip + .body + .consensus_state + .sub_window_densities + .push_back(UnsignedExtendedUInt32StableV1(Number(1))); + + // Set new `global_slot` to be `SUB_WINDOWS_PER_WINDOW` less than newer one + old_tip + .body + .consensus_state + .curr_global_slot_since_hard_fork + .slot_number = MinaNumbersGlobalSlotSinceHardForkMStableV1::SinceHardFork( + UnsignedExtendedUInt32StableV1(Number( + new_tip + .body + .consensus_state + .curr_global_slot_since_hard_fork + .slot_number + .as_u32() + + SUB_WINDOWS_PER_WINDOW, + )), + ); + + new_tip.body.consensus_state.sub_window_densities.pop_back(); + new_tip.body.consensus_state.sub_window_densities.pop_back(); + + assert_eq!( + select_secure_chain(&new_tip, &old_tip).unwrap(), + ChainResult::Bridge + ); + } +} diff --git a/mina_state_verifier/src/devnet_vk.json b/mina_state_verifier/src/devnet_vk.json new file mode 100644 index 000000000..0e5160bb6 --- /dev/null +++ b/mina_state_verifier/src/devnet_vk.json @@ -0,0 +1,492 @@ +{ + "commitments": { + "sigma_comm": [ + [ + "0x16A2CBB00F33D627AAEFB19EAF5424680EF37F77C87558AF424130A927D08BAC", + "0x089F70D3C7690C8421C293C01F7A67EB2997E5B96AF11408D88884A6AD328E37" + ], + [ + "0x22CFAD2E118F91BE8E133664585947E25A282017E007700D67F0D72999639BCC", + "0x31AA847B558743C3CAD651B085327F0B67E1C1BFEA2FF472976589ADD952E6D4" + ], + [ + "0x02FB6661EE11262AFC7C8B0389A9B1E4ED18263C3F2468AAF035A07ECC61C9EB", + "0x30705D77AB82D6BAAC8E23640BBAB40F7E7FB53826CD5011575CAE52C6D0517D" + ], + [ + "0x0FD615E77CF392BE8285848DF60D4F87350ABCD65200FC4932E309133D145D05", + "0x3E75EA0E3810A97D8F1D1F8A6B0F9AE5D0F68AE34A4D0EFC29F00AB3BF6D480E" + ], + [ + "0x20C89F37CF8E43831F077DFF9AB9A676907BF9A0F64E418A643667808AB72DAB", + "0x389F98A86437D8A7F667ABB9B0B0DEACBD7E420B583B795363EBCECDBF1C187B" + ], + [ + "0x13548AEE4F67B7B90418512F400B79A69E156A801DE46233C756F9B67A9ABDD1", + "0x25F561C9531A0C83099AC722322A39DC653BC314D63A971624D1D3315B3DA0D5" + ], + [ + "0x20216D064B7466C42626F66F3F141997E6F29D17CC6EBA8FF91E1E03D31FE555", + "0x0082380869AFA6A961738C93BCEEA3042F3ECEA143A585B565A2BF6BD78A1224" + ] + ], + "coefficients_comm": [ + [ + "0x26EC10122354E7DEC10E83F7D26D4311863753F37489FFD2F5D634958C876CB4", + "0x25AB47DC77226E515B05BD2C1DFB025477F54FFBB9B62F4B2914306C2D1AEB6D" + ], + [ + "0x08060FD15238AE40E726A04EA5C1AE41D8A1D267C9AF7355A8D6C70607139922", + "0x13D36CAD9C78FD0AF514AB7ECAC433592389AE84283024B1D4C85D2E8C952B28" + ], + [ + "0x3AE007735587246066F71A1F09801C359E393CBF49DBDFEDD01E61AA88ECAF0F", + "0x15882EBC62C0E9BC93A14F2CB2ECE43402063B50C09CE735E56D51447689D2C6" + ], + [ + "0x3DCBFD7F258F598AEFB560A1B3BCE632B4AC20534FEFF3B35C82082FE708B236", + "0x254668B50AB44E074902E0DB981FDF045FC614C1E61EBDDA27C06DF9131FC71A" + ], + [ + "0x364F1609C5A72CC0A6F5966400AE1A5AA4B7684805B46D0EE09001F7618DD614", + "0x0F3E45A3DEC2B73BEC5E91ED78BB750B87C02A2339E5A40C2D51FAA0EE1D5B7E" + ], + [ + "0x2EA4EF211B04C50C1680CE1E38DACAE3EC40FAC3216A6D4157B29D6053C812E8", + "0x310B3ECB01C946FE01F766DF1249FD36E4AE2EAEB450D93DFDE08AE9D24BB7BC" + ], + [ + "0x3E32E6702761E653043644E9DC5D75FE7A351B764CD90D72DD1176DB1A541121", + "0x0454C684E407E066394B31CFCCBAF22844B7E17D162EFE860030960A38AD2B2E" + ], + [ + "0x1AE2CE814A97742F41565FEB5881767A2BCF55981A3C8ED33BAE069CBE652FCA", + "0x14DC3F97387117CCA4884F28DCC82C9CF1B7101623B481FD3D1588F568B3E26B" + ], + [ + "0x0A10FA40BB6C61E8185412EE2BAE86C51D19EA7276593DFA7FA3FABB0345521F", + "0x3A8ACF73B5EF4E52ED5DC96404A60C69A067B84FE77211C5407A48437BD5CF89" + ], + [ + "0x21B2C2D62891139A91056B9D298DA8713B7ADA51963B864A5A2376771A1AA766", + "0x1AC7782A588865397F219624D70D11A109283E82B9CD50FFEE23753461E755FE" + ], + [ + "0x2763E7A5B2C387147A0381B50D5C504A5012B7F7CA474C2B4A351011B9BBD036", + "0x13DEA6F4AEBDC606331746A886756C7EA266A52F60B45DE5544A04BFDB277455" + ], + [ + "0x32596E43A053571EE478A3106CABFE9ECB29437F78A978409B4DDE33FE637103", + "0x3D76AF5EE3EFF37E666087AC2827A8BD0D9690BF440FF24434DA3E6AFF7A2AF4" + ], + [ + "0x1D73FE7224F38A37B2C69E22FA6750BABAED17B0F9998877B33E488D9063CE8E", + "0x3E24CEADB1BDA92A0DBDA0F90DF3B8FBD7C6F7ABCC039E9D41AB6916A799F645" + ], + [ + "0x2FDF5D887BC70465AFAC06B7A43632732B5AF0B933EA045D35E99D532BD44CAF", + "0x211A76FD7B76DF3E693CAA0BBB5C178D5DDE827AB6A902AF04AB39D8040E29DF" + ], + [ + "0x0D29BA887D54D915CFB321573463A3CAF5C354848A51FFD6D4FFC0E0B4464D39", + "0x232829C5C662E87CD033AFB3E84E86EC342F4942AC9D75123A21172EE06CF567" + ] + ], + "generic_comm": [ + "0x363662743B4E693E18C0CF5FB651DF1205BB27FABCD93ADF54ECD973B21B921B", + "0x116FBA051A4A146C88BCB0F2B56309429CD63514EEEFBE6EA0B39927E72BB20C" + ], + "psm_comm": [ + "0x0A8B3EF5670C6367C721EDAA40AF511C18B1602A4732FEA01124D5D949304324", + "0x1DBE04516C4A33CDFBBD1F54F413B9F21B5D41B6CD668B249879A2688693E51B" + ], + "complete_add_comm": [ + "0x1E859218F11F787CE75C06FD5303457CBD307BDEEB693CC66A235CB85B314D4B", + "0x228167E190903072E8F34BD7AF61A0C02DE0BC3D54FF8760A2BCBFDD6A880688" + ], + "mul_comm": [ + "0x3EC97D3A8CD405A92B31B67184817925B99B1527065A28677AEAAEC37CC7B9C5", + "0x3844006206FF29A55DBB44A3D06E46610639E24E960B4BC32A663EEC4D04C689" + ], + "emul_comm": [ + "0x114772020FAF5E6660D7D75B666B7121829027A866A8214B42899E824D820CB9", + "0x01F7FC015E2F0C5E02E34F0FD6FBA0FCE01E40EA183F0F6F7C197553524A96B9" + ], + "endomul_scalar_comm": [ + "0x04C30A9B6412594ECD5EEFCA20D4B759BBC52B08868E01F74FDC82B557A76ADD", + "0x019413D8112950CB93D20BA29452DC281FFE1A692706C34BD148E331F844D244" + ] + }, + "index": { + "domain": { + "log_size_of_group": 14, + "group_gen": "0x1E5587687024253BB079B38D9C5371594958E496C605D3BD898B34D068AFBEE7" + }, + "max_poly_size": 32768, + "public": 40, + "prev_challenges": 2, + "srs": null, + "evals": { + "sigma_comm": [ + { + "unshifted": [ + [ + "Finite", + [ + "0x16A2CBB00F33D627AAEFB19EAF5424680EF37F77C87558AF424130A927D08BAC", + "0x089F70D3C7690C8421C293C01F7A67EB2997E5B96AF11408D88884A6AD328E37" + ] + ] + ], + "shifted": null + }, + { + "unshifted": [ + [ + "Finite", + [ + "0x22CFAD2E118F91BE8E133664585947E25A282017E007700D67F0D72999639BCC", + "0x31AA847B558743C3CAD651B085327F0B67E1C1BFEA2FF472976589ADD952E6D4" + ] + ] + ], + "shifted": null + }, + { + "unshifted": [ + [ + "Finite", + [ + "0x02FB6661EE11262AFC7C8B0389A9B1E4ED18263C3F2468AAF035A07ECC61C9EB", + "0x30705D77AB82D6BAAC8E23640BBAB40F7E7FB53826CD5011575CAE52C6D0517D" + ] + ] + ], + "shifted": null + }, + { + "unshifted": [ + [ + "Finite", + [ + "0x0FD615E77CF392BE8285848DF60D4F87350ABCD65200FC4932E309133D145D05", + "0x3E75EA0E3810A97D8F1D1F8A6B0F9AE5D0F68AE34A4D0EFC29F00AB3BF6D480E" + ] + ] + ], + "shifted": null + }, + { + "unshifted": [ + [ + "Finite", + [ + "0x20C89F37CF8E43831F077DFF9AB9A676907BF9A0F64E418A643667808AB72DAB", + "0x389F98A86437D8A7F667ABB9B0B0DEACBD7E420B583B795363EBCECDBF1C187B" + ] + ] + ], + "shifted": null + }, + { + "unshifted": [ + [ + "Finite", + [ + "0x13548AEE4F67B7B90418512F400B79A69E156A801DE46233C756F9B67A9ABDD1", + "0x25F561C9531A0C83099AC722322A39DC653BC314D63A971624D1D3315B3DA0D5" + ] + ] + ], + "shifted": null + }, + { + "unshifted": [ + [ + "Finite", + [ + "0x20216D064B7466C42626F66F3F141997E6F29D17CC6EBA8FF91E1E03D31FE555", + "0x0082380869AFA6A961738C93BCEEA3042F3ECEA143A585B565A2BF6BD78A1224" + ] + ] + ], + "shifted": null + } + ], + "coefficients_comm": [ + { + "unshifted": [ + [ + "Finite", + [ + "0x26EC10122354E7DEC10E83F7D26D4311863753F37489FFD2F5D634958C876CB4", + "0x25AB47DC77226E515B05BD2C1DFB025477F54FFBB9B62F4B2914306C2D1AEB6D" + ] + ] + ], + "shifted": null + }, + { + "unshifted": [ + [ + "Finite", + [ + "0x08060FD15238AE40E726A04EA5C1AE41D8A1D267C9AF7355A8D6C70607139922", + "0x13D36CAD9C78FD0AF514AB7ECAC433592389AE84283024B1D4C85D2E8C952B28" + ] + ] + ], + "shifted": null + }, + { + "unshifted": [ + [ + "Finite", + [ + "0x3AE007735587246066F71A1F09801C359E393CBF49DBDFEDD01E61AA88ECAF0F", + "0x15882EBC62C0E9BC93A14F2CB2ECE43402063B50C09CE735E56D51447689D2C6" + ] + ] + ], + "shifted": null + }, + { + "unshifted": [ + [ + "Finite", + [ + "0x3DCBFD7F258F598AEFB560A1B3BCE632B4AC20534FEFF3B35C82082FE708B236", + "0x254668B50AB44E074902E0DB981FDF045FC614C1E61EBDDA27C06DF9131FC71A" + ] + ] + ], + "shifted": null + }, + { + "unshifted": [ + [ + "Finite", + [ + "0x364F1609C5A72CC0A6F5966400AE1A5AA4B7684805B46D0EE09001F7618DD614", + "0x0F3E45A3DEC2B73BEC5E91ED78BB750B87C02A2339E5A40C2D51FAA0EE1D5B7E" + ] + ] + ], + "shifted": null + }, + { + "unshifted": [ + [ + "Finite", + [ + "0x2EA4EF211B04C50C1680CE1E38DACAE3EC40FAC3216A6D4157B29D6053C812E8", + "0x310B3ECB01C946FE01F766DF1249FD36E4AE2EAEB450D93DFDE08AE9D24BB7BC" + ] + ] + ], + "shifted": null + }, + { + "unshifted": [ + [ + "Finite", + [ + "0x3E32E6702761E653043644E9DC5D75FE7A351B764CD90D72DD1176DB1A541121", + "0x0454C684E407E066394B31CFCCBAF22844B7E17D162EFE860030960A38AD2B2E" + ] + ] + ], + "shifted": null + }, + { + "unshifted": [ + [ + "Finite", + [ + "0x1AE2CE814A97742F41565FEB5881767A2BCF55981A3C8ED33BAE069CBE652FCA", + "0x14DC3F97387117CCA4884F28DCC82C9CF1B7101623B481FD3D1588F568B3E26B" + ] + ] + ], + "shifted": null + }, + { + "unshifted": [ + [ + "Finite", + [ + "0x0A10FA40BB6C61E8185412EE2BAE86C51D19EA7276593DFA7FA3FABB0345521F", + "0x3A8ACF73B5EF4E52ED5DC96404A60C69A067B84FE77211C5407A48437BD5CF89" + ] + ] + ], + "shifted": null + }, + { + "unshifted": [ + [ + "Finite", + [ + "0x21B2C2D62891139A91056B9D298DA8713B7ADA51963B864A5A2376771A1AA766", + "0x1AC7782A588865397F219624D70D11A109283E82B9CD50FFEE23753461E755FE" + ] + ] + ], + "shifted": null + }, + { + "unshifted": [ + [ + "Finite", + [ + "0x2763E7A5B2C387147A0381B50D5C504A5012B7F7CA474C2B4A351011B9BBD036", + "0x13DEA6F4AEBDC606331746A886756C7EA266A52F60B45DE5544A04BFDB277455" + ] + ] + ], + "shifted": null + }, + { + "unshifted": [ + [ + "Finite", + [ + "0x32596E43A053571EE478A3106CABFE9ECB29437F78A978409B4DDE33FE637103", + "0x3D76AF5EE3EFF37E666087AC2827A8BD0D9690BF440FF24434DA3E6AFF7A2AF4" + ] + ] + ], + "shifted": null + }, + { + "unshifted": [ + [ + "Finite", + [ + "0x1D73FE7224F38A37B2C69E22FA6750BABAED17B0F9998877B33E488D9063CE8E", + "0x3E24CEADB1BDA92A0DBDA0F90DF3B8FBD7C6F7ABCC039E9D41AB6916A799F645" + ] + ] + ], + "shifted": null + }, + { + "unshifted": [ + [ + "Finite", + [ + "0x2FDF5D887BC70465AFAC06B7A43632732B5AF0B933EA045D35E99D532BD44CAF", + "0x211A76FD7B76DF3E693CAA0BBB5C178D5DDE827AB6A902AF04AB39D8040E29DF" + ] + ] + ], + "shifted": null + }, + { + "unshifted": [ + [ + "Finite", + [ + "0x0D29BA887D54D915CFB321573463A3CAF5C354848A51FFD6D4FFC0E0B4464D39", + "0x232829C5C662E87CD033AFB3E84E86EC342F4942AC9D75123A21172EE06CF567" + ] + ] + ], + "shifted": null + } + ], + "generic_comm": { + "unshifted": [ + [ + "Finite", + [ + "0x363662743B4E693E18C0CF5FB651DF1205BB27FABCD93ADF54ECD973B21B921B", + "0x116FBA051A4A146C88BCB0F2B56309429CD63514EEEFBE6EA0B39927E72BB20C" + ] + ] + ], + "shifted": null + }, + "psm_comm": { + "unshifted": [ + [ + "Finite", + [ + "0x0A8B3EF5670C6367C721EDAA40AF511C18B1602A4732FEA01124D5D949304324", + "0x1DBE04516C4A33CDFBBD1F54F413B9F21B5D41B6CD668B249879A2688693E51B" + ] + ] + ], + "shifted": null + }, + "complete_add_comm": { + "unshifted": [ + [ + "Finite", + [ + "0x1E859218F11F787CE75C06FD5303457CBD307BDEEB693CC66A235CB85B314D4B", + "0x228167E190903072E8F34BD7AF61A0C02DE0BC3D54FF8760A2BCBFDD6A880688" + ] + ] + ], + "shifted": null + }, + "mul_comm": { + "unshifted": [ + [ + "Finite", + [ + "0x3EC97D3A8CD405A92B31B67184817925B99B1527065A28677AEAAEC37CC7B9C5", + "0x3844006206FF29A55DBB44A3D06E46610639E24E960B4BC32A663EEC4D04C689" + ] + ] + ], + "shifted": null + }, + "emul_comm": { + "unshifted": [ + [ + "Finite", + [ + "0x114772020FAF5E6660D7D75B666B7121829027A866A8214B42899E824D820CB9", + "0x01F7FC015E2F0C5E02E34F0FD6FBA0FCE01E40EA183F0F6F7C197553524A96B9" + ] + ] + ], + "shifted": null + }, + "endomul_scalar_comm": { + "unshifted": [ + [ + "Finite", + [ + "0x04C30A9B6412594ECD5EEFCA20D4B759BBC52B08868E01F74FDC82B557A76ADD", + "0x019413D8112950CB93D20BA29452DC281FFE1A692706C34BD148E331F844D244" + ] + ] + ], + "shifted": null + }, + "xor_comm": null, + "range_check0_comm": null, + "range_check1_comm": null, + "foreign_field_add_comm": null, + "foreign_field_mul_comm": null, + "rot_comm": null + }, + "shifts": [ + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x00B9CDC8FD0BD4B27E2A74AF7AEBD5734D52D75BDF85EBF1CAD03413E914A2E3", + "0x007CF68160D84012626E0046A932AD12E68B3394D6E2A001A537FFB40D3527C6", + "0x0077D45AECB939AE97A3952B48189964AA209609F19BE4A4B89F339A33440F6D", + "0x0077C7E54505D4771F6AF1FED2195500481EF1F3C0397B0AC819E678BD2309B4", + "0x00B3AF68ECC6AE7A4727F0708EDF4736BE1C99281FA380846E42264C62407484", + "0x00381CA4536FC0ED935D50A74A87136F1A0675B618898DBCE67E564AB20174A1" + ], + "lookup_index": null, + "zk_rows": 3 + }, + "data": { + "constraints": 16384 + } +} diff --git a/mina_state_verifier/src/lib.rs b/mina_state_verifier/src/lib.rs new file mode 100644 index 000000000..d0b217dc9 --- /dev/null +++ b/mina_state_verifier/src/lib.rs @@ -0,0 +1,368 @@ +/// Consensus chain selection algorithms. The [`official specification`] was taken as a reference. +/// +/// [`official specification`]: https://github.com/MinaProtocol/mina/blob/develop/docs/specs/consensus/README.md +mod consensus_state; +mod verifier_index; +mod proof; +mod sol; +mod utils; + +use log::{error, info}; +use proof::state_proof::{MinaStateProof, MinaStatePubInputs}; + +use ark_ec::short_weierstrass_jacobian::GroupAffine; +use consensus_state::{select_secure_chain, ChainResult}; +use kimchi::mina_curves::pasta::{Fp, PallasParameters}; +use kimchi::verifier_index::VerifierIndex; +use lazy_static::lazy_static; +use mina_curves::pasta::{Fq, Vesta}; +use mina_p2p_messages::hash::MinaHash; +use mina_p2p_messages::v2::{MinaStateProtocolStateValueStableV2, StateHash}; +use mina_tree::proofs::field::FieldWitness as _; +use mina_tree::proofs::verification::verify_block; +use poly_commitment::srs::SRS; +use verifier_index::{deserialize_blockchain_vk, MinaChain}; + +lazy_static! { + static ref DEVNET_VERIFIER_INDEX: VerifierIndex> = + deserialize_blockchain_vk(MinaChain::Devnet).unwrap_or_else(|err| { + error!("Failed to load Devnet verification key: {}", err); + std::process::exit(1); + }); + static ref MAINNET_VERIFIER_INDEX: VerifierIndex> = + deserialize_blockchain_vk(MinaChain::Mainnet).unwrap_or_else(|err| { + error!("Failed to load Mainnet verification key: {}", err); + std::process::exit(1); + }); + static ref MINA_SRS: SRS = SRS::::create(Fq::SRS_DEPTH); +} + +#[no_mangle] +pub extern "C" fn verify_mina_state_ffi( + proof_bytes: *const u8, + proof_len: u32, + pub_input_bytes: *const u8, + pub_input_len: u32, +) -> i32 { + let result = std::panic::catch_unwind(|| { + inner_verify_mina_state_ffi(proof_bytes, proof_len, pub_input_bytes, pub_input_len) + }); + + match result { + Ok(v) => v as i32, + Err(_) => -1, + } +} + +fn inner_verify_mina_state_ffi( + proof_bytes: *const u8, + proof_len: u32, + pub_input_bytes: *const u8, + pub_input_len: u32, +) -> bool { + if proof_bytes.is_null() || pub_input_bytes.is_null() { + error!("Input buffer null"); + return false; + } + + if proof_len == 0 || pub_input_len == 0 { + error!("Input buffer length zero size"); + return false; + } + + let proof_bytes = unsafe { std::slice::from_raw_parts(proof_bytes, proof_len as usize) }; + + let pub_input_bytes = + unsafe { std::slice::from_raw_parts(pub_input_bytes, pub_input_len as usize) }; + + verify_mina_state(proof_bytes, pub_input_bytes) +} + +/// Verifies that the Mina state included in `proof_bytes` is valid. +/// This includes checking that: +/// +/// - The Mina state corresponds to the tip of the most secure chain +/// - The corresponding Pickles proof is valid +pub fn verify_mina_state(proof_bytes: &[u8], pub_input_bytes: &[u8]) -> bool { + let proof: MinaStateProof = match bincode::deserialize(proof_bytes) { + Ok(proof) => proof, + Err(err) => { + error!("Failed to deserialize state proof: {}", err); + return false; + } + }; + let pub_inputs: MinaStatePubInputs = match bincode::deserialize(pub_input_bytes) { + Ok(pub_inputs) => pub_inputs, + Err(err) => { + error!("Failed to deserialize state pub inputs: {}", err); + return false; + } + }; + + // Checks the integrity of the public inputs, also checks if the states form a chain. + let (candidate_tip_state, bridge_tip_state, candidate_tip_state_hash) = + match check_pub_inputs(&proof, &pub_inputs) { + Ok(validated_data) => validated_data, + Err(err) => { + error!("Failed to check pub inputs: {err}"); + return false; + } + }; + + // Consensus checks + let secure_chain = match select_secure_chain(&candidate_tip_state, &bridge_tip_state) { + Ok(res) => res, + Err(err) => { + error!("Failed consensus checks for candidate tip: {err}"); + return false; + } + }; + if secure_chain == ChainResult::Bridge { + error!("Failed consensus checks for candidate tip: bridge's tip is more secure"); + return false; + } + + // Verify the tip block (and thanks to Pickles recursion all the previous states are verified + // as well) + if pub_inputs.is_state_proof_from_devnet { + verify_block( + &proof.candidate_tip_proof, + candidate_tip_state_hash, + &DEVNET_VERIFIER_INDEX, + &MINA_SRS, + ) + } else { + verify_block( + &proof.candidate_tip_proof, + candidate_tip_state_hash, + &MAINNET_VERIFIER_INDEX, + &MINA_SRS, + ) + } +} + +/// Checks public inputs against the proof data, making sure the inputs correspond to the proofs +/// we're verifying. Returns validated data for executing the rest of the verification steps. +fn check_pub_inputs( + proof: &MinaStateProof, + pub_inputs: &MinaStatePubInputs, +) -> Result< + ( + MinaStateProtocolStateValueStableV2, + MinaStateProtocolStateValueStableV2, + Fp, + ), + String, +> { + let candidate_root_state_hash = proof + .candidate_chain_states + .first() + .map(|state| state.hash()) + .ok_or("failed to retrieve root state hash".to_string())?; + // Reconstructs the state hashes if the states form a chain, and compares them to the public + // input state hashes. Does not compare the tip state hash. + let mut state_hash = candidate_root_state_hash; + for (body_hash, expected_prev_state_hash) in proof + .candidate_chain_states + .iter() + .skip(1) + .map(|state| state.body.hash()) + .zip(pub_inputs.candidate_chain_state_hashes.iter()) + { + let curr_state_hash = StateHash::from_hashes(&state_hash, &body_hash); + let prev_state_hash = std::mem::replace(&mut state_hash, curr_state_hash); + + // Check if all hashes (but the last one) in the public input are correct + if &prev_state_hash != expected_prev_state_hash { + return Err("public input state hashes do not match the states to verify, or states don't form a chain".to_string()); + } + } + + // Check if the tip hash (the last one) is correct, so we also verify the Merkle list + if &state_hash + != pub_inputs + .candidate_chain_state_hashes + .last() + .ok_or("failed to retrieve tip state hash".to_string())? + { + return Err("public input tip state hash is not correct".to_string()); + } + + // Validate the public input ledger hashes + let expected_candidate_chain_ledger_hashes = proof.candidate_chain_states.iter().map(|state| { + &state + .body + .blockchain_state + .ledger_proof_statement + .target + .first_pass_ledger + }); + if pub_inputs + .candidate_chain_ledger_hashes + .iter() + .ne(expected_candidate_chain_ledger_hashes) + { + return Err( + "candidate chain ledger hashes on public inputs don't match the ones on the states to verify" + .to_string(), + ); + } + + // Validate the public input bridge's tip state hash + let bridge_tip_state_hash = pub_inputs + .bridge_tip_state_hash + .to_fp() + .map_err(|err| format!("Can't parse bridge tip state hash to fp: {err}"))?; + + if MinaHash::hash(&proof.bridge_tip_state) != bridge_tip_state_hash { + return Err( + "the candidate's chain tip state doesn't match the hash provided as public input" + .to_string(), + ); + } + + let candidate_tip_state = proof + .candidate_chain_states + .last() + .ok_or("failed to get candidate tip state from proof".to_string())? + .clone(); + let bridge_tip_state = proof.bridge_tip_state.clone(); + + let candidate_tip_state_hash = pub_inputs + .candidate_chain_state_hashes + .last() + .ok_or("failed to get candidate tip hash from public inputs".to_string()) + .and_then(|hash| { + hash.to_fp() + .map_err(|err| format!("failed to convert tip state hash to field element: {err}")) + })?; + + Ok(( + candidate_tip_state, + bridge_tip_state, + candidate_tip_state_hash, + )) +} + +#[cfg(test)] +mod test { + use std::ptr; + + use super::*; + + const DEVNET_PROOF_BYTES: &[u8] = + include_bytes!("../../../../scripts/test_files/mina/devnet_mina_state.proof"); + const DEVNET_PUB_INPUT_BYTES: &[u8] = + include_bytes!("../../../../scripts/test_files/mina/devnet_mina_state.pub"); + const MAINNET_PROOF_BYTES: &[u8] = + include_bytes!("../../../../scripts/test_files/mina/mainnet_mina_state.proof"); + const MAINNET_PUB_INPUT_BYTES: &[u8] = + include_bytes!("../../../../scripts/test_files/mina/mainnet_mina_state.pub"); + const BAD_HASH_PUB_INPUT_BYTES: &[u8] = + include_bytes!("../../../../scripts/test_files/mina/mina_state_bad_hash.pub"); + + #[test] + fn valid_devnet_mina_state_proof_verifies() { + let result = verify_mina_state_ffi( + DEVNET_PROOF_BYTES.as_ptr(), + DEVNET_PROOF_BYTES.len() as u32, + DEVNET_PUB_INPUT_BYTES.as_ptr(), + DEVNET_PUB_INPUT_BYTES.len() as u32, + ); + assert_eq!(result, 1); + } + + #[test] + fn valid_mainnet_mina_state_proof_verifies() { + let result = verify_mina_state_ffi( + MAINNET_PROOF_BYTES.as_ptr(), + MAINNET_PROOF_BYTES.len() as u32, + MAINNET_PUB_INPUT_BYTES.as_ptr(), + MAINNET_PUB_INPUT_BYTES.len() as u32, + ); + assert_eq!(result, 1); + } + + #[test] + fn mina_state_proof_with_bad_bridge_tip_hash_does_not_verify() { + let result = verify_mina_state_ffi( + DEVNET_PROOF_BYTES.as_ptr(), + DEVNET_PROOF_BYTES.len() as u32, + BAD_HASH_PUB_INPUT_BYTES.as_ptr(), + BAD_HASH_PUB_INPUT_BYTES.len() as u32, + ); + assert_eq!(result, 0); + } + + #[test] + fn zeroized_mina_state_proof_does_not_verify() { + const PROOF_SIZE: usize = DEVNET_PROOF_BYTES.len(); + let empty_proof_buffer = [0u8; PROOF_SIZE]; + + let result = verify_mina_state_ffi( + empty_proof_buffer.as_ptr(), + PROOF_SIZE as u32, + DEVNET_PUB_INPUT_BYTES.as_ptr(), + DEVNET_PUB_INPUT_BYTES.len() as u32, + ); + assert_eq!(result, 0); + } + + #[test] + fn valid_mina_state_proof_with_zeroized_pub_input_does_not_verify() { + const PUB_INPUT_SIZE: usize = DEVNET_PUB_INPUT_BYTES.len(); + let empty_pub_input_buffer = [0u8; PUB_INPUT_SIZE]; + + let result = verify_mina_state_ffi( + DEVNET_PROOF_BYTES.as_ptr(), + DEVNET_PROOF_BYTES.len() as u32, + empty_pub_input_buffer.as_ptr(), + PUB_INPUT_SIZE as u32, + ); + assert_eq!(result, 0); + } + + #[test] + fn null_mina_state_proof_does_not_verify() { + let result = verify_mina_state_ffi( + ptr::null(), + DEVNET_PROOF_BYTES.len() as u32, + DEVNET_PUB_INPUT_BYTES.as_ptr(), + DEVNET_PUB_INPUT_BYTES.len() as u32, + ); + assert_eq!(result, 0); + } + + #[test] + fn valid_mina_state_proof_with_null_pub_input_does_not_verify() { + let result = verify_mina_state_ffi( + DEVNET_PROOF_BYTES.as_ptr(), + DEVNET_PROOF_BYTES.len() as u32, + ptr::null(), + DEVNET_PUB_INPUT_BYTES.len() as u32, + ); + assert_eq!(result, 0); + } + + #[test] + fn empty_mina_state_proof_does_not_verify() { + let result = verify_mina_state_ffi( + DEVNET_PROOF_BYTES.as_ptr(), + 0, + DEVNET_PUB_INPUT_BYTES.as_ptr(), + DEVNET_PUB_INPUT_BYTES.len() as u32, + ); + assert_eq!(result, 0); + } + + #[test] + fn valid_mina_state_proof_with_empty_pub_input_does_not_verify() { + let result = verify_mina_state_ffi( + DEVNET_PROOF_BYTES.as_ptr(), + DEVNET_PROOF_BYTES.len() as u32, + DEVNET_PUB_INPUT_BYTES.as_ptr(), + 0, + ); + assert_eq!(result, 0); + } +} diff --git a/mina_state_verifier/src/mainnet_vk.json b/mina_state_verifier/src/mainnet_vk.json new file mode 100644 index 000000000..c3d121114 --- /dev/null +++ b/mina_state_verifier/src/mainnet_vk.json @@ -0,0 +1,485 @@ +{ + "commitments": { + "sigma_comm": [ + [ + "0x16A2CBB00F33D627AAEFB19EAF5424680EF37F77C87558AF424130A927D08BAC", + "0x089F70D3C7690C8421C293C01F7A67EB2997E5B96AF11408D88884A6AD328E37" + ], + [ + "0x22CFAD2E118F91BE8E133664585947E25A282017E007700D67F0D72999639BCC", + "0x31AA847B558743C3CAD651B085327F0B67E1C1BFEA2FF472976589ADD952E6D4" + ], + [ + "0x02FB6661EE11262AFC7C8B0389A9B1E4ED18263C3F2468AAF035A07ECC61C9EB", + "0x30705D77AB82D6BAAC8E23640BBAB40F7E7FB53826CD5011575CAE52C6D0517D" + ], + [ + "0x0FD615E77CF392BE8285848DF60D4F87350ABCD65200FC4932E309133D145D05", + "0x3E75EA0E3810A97D8F1D1F8A6B0F9AE5D0F68AE34A4D0EFC29F00AB3BF6D480E" + ], + [ + "0x20C89F37CF8E43831F077DFF9AB9A676907BF9A0F64E418A643667808AB72DAB", + "0x389F98A86437D8A7F667ABB9B0B0DEACBD7E420B583B795363EBCECDBF1C187B" + ], + [ + "0x13548AEE4F67B7B90418512F400B79A69E156A801DE46233C756F9B67A9ABDD1", + "0x25F561C9531A0C83099AC722322A39DC653BC314D63A971624D1D3315B3DA0D5" + ], + [ + "0x20216D064B7466C42626F66F3F141997E6F29D17CC6EBA8FF91E1E03D31FE555", + "0x0082380869AFA6A961738C93BCEEA3042F3ECEA143A585B565A2BF6BD78A1224" + ] + ], + "coefficients_comm": [ + [ + "0x34858195AC3FFEBA04F0FAAF38F2574CD903985B56DCAEF53C29EF52CF70FB65", + "0x0D3DD0931D64868F70BE25C6B2CA4D5CA5C6B80763CAFE2B64AEF5F74E653C05" + ], + [ + "0x08060FD15238AE40E726A04EA5C1AE41D8A1D267C9AF7355A8D6C70607139922", + "0x13D36CAD9C78FD0AF514AB7ECAC433592389AE84283024B1D4C85D2E8C952B28" + ], + [ + "0x3AE007735587246066F71A1F09801C359E393CBF49DBDFEDD01E61AA88ECAF0F", + "0x15882EBC62C0E9BC93A14F2CB2ECE43402063B50C09CE735E56D51447689D2C6" + ], + [ + "0x3DCBFD7F258F598AEFB560A1B3BCE632B4AC20534FEFF3B35C82082FE708B236", + "0x254668B50AB44E074902E0DB981FDF045FC614C1E61EBDDA27C06DF9131FC71A" + ], + [ + "0x364F1609C5A72CC0A6F5966400AE1A5AA4B7684805B46D0EE09001F7618DD614", + "0x0F3E45A3DEC2B73BEC5E91ED78BB750B87C02A2339E5A40C2D51FAA0EE1D5B7E" + ], + [ + "0x0BE841A33AB98E3392CB8E27AB1AF419454643CD3668FCC76D249D9AB80AA2AB", + "0x3A92B08771858E78BFC2676B128A9AC404797775D140C2C022AEEC8F69182A2E" + ], + [ + "0x3E32E6702761E653043644E9DC5D75FE7A351B764CD90D72DD1176DB1A541121", + "0x0454C684E407E066394B31CFCCBAF22844B7E17D162EFE860030960A38AD2B2E" + ], + [ + "0x1AE2CE814A97742F41565FEB5881767A2BCF55981A3C8ED33BAE069CBE652FCA", + "0x14DC3F97387117CCA4884F28DCC82C9CF1B7101623B481FD3D1588F568B3E26B" + ], + [ + "0x0A10FA40BB6C61E8185412EE2BAE86C51D19EA7276593DFA7FA3FABB0345521F", + "0x3A8ACF73B5EF4E52ED5DC96404A60C69A067B84FE77211C5407A48437BD5CF89" + ], + [ + "0x21B2C2D62891139A91056B9D298DA8713B7ADA51963B864A5A2376771A1AA766", + "0x1AC7782A588865397F219624D70D11A109283E82B9CD50FFEE23753461E755FE" + ], + [ + "0x2763E7A5B2C387147A0381B50D5C504A5012B7F7CA474C2B4A351011B9BBD036", + "0x13DEA6F4AEBDC606331746A886756C7EA266A52F60B45DE5544A04BFDB277455" + ], + [ + "0x32596E43A053571EE478A3106CABFE9ECB29437F78A978409B4DDE33FE637103", + "0x3D76AF5EE3EFF37E666087AC2827A8BD0D9690BF440FF24434DA3E6AFF7A2AF4" + ], + [ + "0x1D73FE7224F38A37B2C69E22FA6750BABAED17B0F9998877B33E488D9063CE8E", + "0x3E24CEADB1BDA92A0DBDA0F90DF3B8FBD7C6F7ABCC039E9D41AB6916A799F645" + ], + [ + "0x2FDF5D887BC70465AFAC06B7A43632732B5AF0B933EA045D35E99D532BD44CAF", + "0x211A76FD7B76DF3E693CAA0BBB5C178D5DDE827AB6A902AF04AB39D8040E29DF" + ], + [ + "0x0D29BA887D54D915CFB321573463A3CAF5C354848A51FFD6D4FFC0E0B4464D39", + "0x232829C5C662E87CD033AFB3E84E86EC342F4942AC9D75123A21172EE06CF567" + ] + ], + "generic_comm": [ + "0x363662743B4E693E18C0CF5FB651DF1205BB27FABCD93ADF54ECD973B21B921B", + "0x116FBA051A4A146C88BCB0F2B56309429CD63514EEEFBE6EA0B39927E72BB20C" + ], + "psm_comm": [ + "0x0A8B3EF5670C6367C721EDAA40AF511C18B1602A4732FEA01124D5D949304324", + "0x1DBE04516C4A33CDFBBD1F54F413B9F21B5D41B6CD668B249879A2688693E51B" + ], + "complete_add_comm": [ + "0x1E859218F11F787CE75C06FD5303457CBD307BDEEB693CC66A235CB85B314D4B", + "0x228167E190903072E8F34BD7AF61A0C02DE0BC3D54FF8760A2BCBFDD6A880688" + ], + "mul_comm": [ + "0x3EC97D3A8CD405A92B31B67184817925B99B1527065A28677AEAAEC37CC7B9C5", + "0x3844006206FF29A55DBB44A3D06E46610639E24E960B4BC32A663EEC4D04C689" + ], + "emul_comm": [ + "0x114772020FAF5E6660D7D75B666B7121829027A866A8214B42899E824D820CB9", + "0x01F7FC015E2F0C5E02E34F0FD6FBA0FCE01E40EA183F0F6F7C197553524A96B9" + ], + "endomul_scalar_comm": [ + "0x04C30A9B6412594ECD5EEFCA20D4B759BBC52B08868E01F74FDC82B557A76ADD", + "0x019413D8112950CB93D20BA29452DC281FFE1A692706C34BD148E331F844D244" + ] + }, + "index": { + "domain": { + "log_size_of_group": 14, + "group_gen": "0x1E5587687024253BB079B38D9C5371594958E496C605D3BD898B34D068AFBEE7" + }, + "max_poly_size": 32768, + "public": 40, + "prev_challenges": 2, + "srs": null, + "evals": { + "sigma_comm": [ + { + "unshifted": [ + [ + "Finite", + [ + "0x16A2CBB00F33D627AAEFB19EAF5424680EF37F77C87558AF424130A927D08BAC", + "0x089F70D3C7690C8421C293C01F7A67EB2997E5B96AF11408D88884A6AD328E37" + ] + ] + ], + "shifted": null + }, + { + "unshifted": [ + [ + "Finite", + [ + "0x22CFAD2E118F91BE8E133664585947E25A282017E007700D67F0D72999639BCC", + "0x31AA847B558743C3CAD651B085327F0B67E1C1BFEA2FF472976589ADD952E6D4" + ] + ] + ], + "shifted": null + }, + { + "unshifted": [ + [ + "Finite", + [ + "0x02FB6661EE11262AFC7C8B0389A9B1E4ED18263C3F2468AAF035A07ECC61C9EB", + "0x30705D77AB82D6BAAC8E23640BBAB40F7E7FB53826CD5011575CAE52C6D0517D" + ] + ] + ], + "shifted": null + }, + { + "unshifted": [ + [ + "Finite", + [ + "0x0FD615E77CF392BE8285848DF60D4F87350ABCD65200FC4932E309133D145D05", + "0x3E75EA0E3810A97D8F1D1F8A6B0F9AE5D0F68AE34A4D0EFC29F00AB3BF6D480E" + ] + ] + ], + "shifted": null + }, + { + "unshifted": [ + [ + "Finite", + [ + "0x20C89F37CF8E43831F077DFF9AB9A676907BF9A0F64E418A643667808AB72DAB", + "0x389F98A86437D8A7F667ABB9B0B0DEACBD7E420B583B795363EBCECDBF1C187B" + ] + ] + ], + "shifted": null + }, + { + "unshifted": [ + [ + "Finite", + [ + "0x13548AEE4F67B7B90418512F400B79A69E156A801DE46233C756F9B67A9ABDD1", + "0x25F561C9531A0C83099AC722322A39DC653BC314D63A971624D1D3315B3DA0D5" + ] + ] + ], + "shifted": null + }, + { + "unshifted": [ + [ + "Finite", + [ + "0x20216D064B7466C42626F66F3F141997E6F29D17CC6EBA8FF91E1E03D31FE555", + "0x0082380869AFA6A961738C93BCEEA3042F3ECEA143A585B565A2BF6BD78A1224" + ] + ] + ], + "shifted": null + } + ], + "coefficients_comm": [ + { + "unshifted": [ + [ + "Finite", + [ + "0x34858195AC3FFEBA04F0FAAF38F2574CD903985B56DCAEF53C29EF52CF70FB65", + "0x0D3DD0931D64868F70BE25C6B2CA4D5CA5C6B80763CAFE2B64AEF5F74E653C05" + ] + ] + ], + "shifted": null + }, + { + "unshifted": [ + [ + "Finite", + [ + "0x08060FD15238AE40E726A04EA5C1AE41D8A1D267C9AF7355A8D6C70607139922", + "0x13D36CAD9C78FD0AF514AB7ECAC433592389AE84283024B1D4C85D2E8C952B28" + ] + ] + ], + "shifted": null + }, + { + "unshifted": [ + [ + "Finite", + [ + "0x3AE007735587246066F71A1F09801C359E393CBF49DBDFEDD01E61AA88ECAF0F", + "0x15882EBC62C0E9BC93A14F2CB2ECE43402063B50C09CE735E56D51447689D2C6" + ] + ] + ], + "shifted": null + }, + { + "unshifted": [ + [ + "Finite", + [ + "0x3DCBFD7F258F598AEFB560A1B3BCE632B4AC20534FEFF3B35C82082FE708B236", + "0x254668B50AB44E074902E0DB981FDF045FC614C1E61EBDDA27C06DF9131FC71A" + ] + ] + ], + "shifted": null + }, + { + "unshifted": [ + [ + "Finite", + [ + "0x364F1609C5A72CC0A6F5966400AE1A5AA4B7684805B46D0EE09001F7618DD614", + "0x0F3E45A3DEC2B73BEC5E91ED78BB750B87C02A2339E5A40C2D51FAA0EE1D5B7E" + ] + ] + ], + "shifted": null + }, + { + "unshifted": [ + [ + "Finite", + [ + "0x0BE841A33AB98E3392CB8E27AB1AF419454643CD3668FCC76D249D9AB80AA2AB", + "0x3A92B08771858E78BFC2676B128A9AC404797775D140C2C022AEEC8F69182A2E" + ] + ] + ], + "shifted": null + }, + { + "unshifted": [ + [ + "Finite", + [ + "0x3E32E6702761E653043644E9DC5D75FE7A351B764CD90D72DD1176DB1A541121", + "0x0454C684E407E066394B31CFCCBAF22844B7E17D162EFE860030960A38AD2B2E" + ] + ] + ], + "shifted": null + }, + { + "unshifted": [ + [ + "Finite", + [ + "0x1AE2CE814A97742F41565FEB5881767A2BCF55981A3C8ED33BAE069CBE652FCA", + "0x14DC3F97387117CCA4884F28DCC82C9CF1B7101623B481FD3D1588F568B3E26B" + ] + ] + ], + "shifted": null + }, + { + "unshifted": [ + [ + "Finite", + [ + "0x0A10FA40BB6C61E8185412EE2BAE86C51D19EA7276593DFA7FA3FABB0345521F", + "0x3A8ACF73B5EF4E52ED5DC96404A60C69A067B84FE77211C5407A48437BD5CF89" + ] + ] + ], + "shifted": null + }, + { + "unshifted": [ + [ + "Finite", + [ + "0x21B2C2D62891139A91056B9D298DA8713B7ADA51963B864A5A2376771A1AA766", + "0x1AC7782A588865397F219624D70D11A109283E82B9CD50FFEE23753461E755FE" + ] + ] + ], + "shifted": null + }, + { + "unshifted": [ + [ + "Finite", + [ + "0x2763E7A5B2C387147A0381B50D5C504A5012B7F7CA474C2B4A351011B9BBD036", + "0x13DEA6F4AEBDC606331746A886756C7EA266A52F60B45DE5544A04BFDB277455" + ] + ] + ], + "shifted": null + }, + { + "unshifted": [ + [ + "Finite", + [ + "0x32596E43A053571EE478A3106CABFE9ECB29437F78A978409B4DDE33FE637103", + "0x3D76AF5EE3EFF37E666087AC2827A8BD0D9690BF440FF24434DA3E6AFF7A2AF4" + ] + ] + ], + "shifted": null + }, + { + "unshifted": [ + [ + "Finite", + [ + "0x1D73FE7224F38A37B2C69E22FA6750BABAED17B0F9998877B33E488D9063CE8E", + "0x3E24CEADB1BDA92A0DBDA0F90DF3B8FBD7C6F7ABCC039E9D41AB6916A799F645" + ] + ] + ], + "shifted": null + }, + { + "unshifted": [ + [ + "Finite", + [ + "0x2FDF5D887BC70465AFAC06B7A43632732B5AF0B933EA045D35E99D532BD44CAF", + "0x211A76FD7B76DF3E693CAA0BBB5C178D5DDE827AB6A902AF04AB39D8040E29DF" + ] + ] + ], + "shifted": null + }, + { + "unshifted": [ + [ + "Finite", + [ + "0x0D29BA887D54D915CFB321573463A3CAF5C354848A51FFD6D4FFC0E0B4464D39", + "0x232829C5C662E87CD033AFB3E84E86EC342F4942AC9D75123A21172EE06CF567" + ] + ] + ], + "shifted": null + } + ], + "generic_comm": { + "unshifted": [ + [ + "Finite", + [ + "0x363662743B4E693E18C0CF5FB651DF1205BB27FABCD93ADF54ECD973B21B921B", + "0x116FBA051A4A146C88BCB0F2B56309429CD63514EEEFBE6EA0B39927E72BB20C" + ] + ] + ], + "shifted": null + }, + "psm_comm": { + "unshifted": [ + [ + "Finite", + [ + "0x0A8B3EF5670C6367C721EDAA40AF511C18B1602A4732FEA01124D5D949304324", + "0x1DBE04516C4A33CDFBBD1F54F413B9F21B5D41B6CD668B249879A2688693E51B" + ] + ] + ], + "shifted": null + }, + "complete_add_comm": { + "unshifted": [ + [ + "Finite", + [ + "0x1E859218F11F787CE75C06FD5303457CBD307BDEEB693CC66A235CB85B314D4B", + "0x228167E190903072E8F34BD7AF61A0C02DE0BC3D54FF8760A2BCBFDD6A880688" + ] + ] + ], + "shifted": null + }, + "mul_comm": { + "unshifted": [ + [ + "Finite", + [ + "0x3EC97D3A8CD405A92B31B67184817925B99B1527065A28677AEAAEC37CC7B9C5", + "0x3844006206FF29A55DBB44A3D06E46610639E24E960B4BC32A663EEC4D04C689" + ] + ] + ], + "shifted": null + }, + "emul_comm": { + "unshifted": [ + [ + "Finite", + [ + "0x114772020FAF5E6660D7D75B666B7121829027A866A8214B42899E824D820CB9", + "0x01F7FC015E2F0C5E02E34F0FD6FBA0FCE01E40EA183F0F6F7C197553524A96B9" + ] + ] + ], + "shifted": null + }, + "endomul_scalar_comm": { + "unshifted": [ + [ + "Finite", + [ + "0x04C30A9B6412594ECD5EEFCA20D4B759BBC52B08868E01F74FDC82B557A76ADD", + "0x019413D8112950CB93D20BA29452DC281FFE1A692706C34BD148E331F844D244" + ] + ] + ], + "shifted": null + } + }, + "shifts": [ + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x00B9CDC8FD0BD4B27E2A74AF7AEBD5734D52D75BDF85EBF1CAD03413E914A2E3", + "0x007CF68160D84012626E0046A932AD12E68B3394D6E2A001A537FFB40D3527C6", + "0x0077D45AECB939AE97A3952B48189964AA209609F19BE4A4B89F339A33440F6D", + "0x0077C7E54505D4771F6AF1FED2195500481EF1F3C0397B0AC819E678BD2309B4", + "0x00B3AF68ECC6AE7A4727F0708EDF4736BE1C99281FA380846E42264C62407484", + "0x00381CA4536FC0ED935D50A74A87136F1A0675B618898DBCE67E564AB20174A1" + ], + "lookup_index": null + }, + "data": { + "constraints": 16384 + } +} diff --git a/mina_state_verifier/src/proof/mod.rs b/mina_state_verifier/src/proof/mod.rs new file mode 100644 index 000000000..c0d685c26 --- /dev/null +++ b/mina_state_verifier/src/proof/mod.rs @@ -0,0 +1,10 @@ +use state_proof::{MinaStateProof, MinaStatePubInputs}; + +/// Mina Proof of State definition. +pub mod state_proof; + +// TODO(xqft): we should fix this lint instead +#[allow(clippy::large_enum_variant)] +pub enum MinaProof { + State((MinaStateProof, MinaStatePubInputs)), +} diff --git a/mina_state_verifier/src/proof/state_proof.rs b/mina_state_verifier/src/proof/state_proof.rs new file mode 100644 index 000000000..870acea5d --- /dev/null +++ b/mina_state_verifier/src/proof/state_proof.rs @@ -0,0 +1,40 @@ +use mina_p2p_messages::v2::{ + LedgerHash, MinaBaseProofStableV2, MinaStateProtocolStateValueStableV2, StateHash, +}; +use serde::{Deserialize, Serialize}; +use serde_with::serde_as; + +use crate::{sol::serialization::SolSerialize, utils::constants::BRIDGE_TRANSITION_FRONTIER_LEN}; + +/// The public inputs of the proof that a certain Mina state is valid +#[serde_as] +#[derive(Serialize, Deserialize, Clone)] +pub struct MinaStatePubInputs { + pub is_state_proof_from_devnet: bool, + /// The hash of the bridge's transition frontier tip state. Used for making sure that we're + /// checking if a candidate tip is better than the latest bridged tip. + #[serde_as(as = "SolSerialize")] + pub bridge_tip_state_hash: StateHash, + /// The state hashes of the candidate chain. + #[serde_as(as = "[SolSerialize; BRIDGE_TRANSITION_FRONTIER_LEN]")] + pub candidate_chain_state_hashes: [StateHash; BRIDGE_TRANSITION_FRONTIER_LEN], + /// The ledger hashes of the candidate chain. The ledger hashes are the root of a Merkle tree + /// where the leafs are Mina account hashes. Used for account verification. + #[serde_as(as = "[SolSerialize; BRIDGE_TRANSITION_FRONTIER_LEN]")] + pub candidate_chain_ledger_hashes: [LedgerHash; BRIDGE_TRANSITION_FRONTIER_LEN], +} + +/// The proof that a certain Mina state is valid +#[derive(Serialize, Deserialize)] +pub struct MinaStateProof { + /// The state proof of the tip state (latest state of the chain, or "transition frontier"). If + /// this state is valid, then all previous states are valid thanks to Pickles recursion. + pub candidate_tip_proof: MinaBaseProofStableV2, + /// The state data of the candidate chain. Used for consensus checks and checking that the + /// public input state hashes correspond to states that effectively form a chain. + pub candidate_chain_states: Vec, + /// The latest state of the previously bridged chain, the latter also called the bridge's + /// transition frontier. Used for consensus checks needed to be done as part of state + /// verification to ensure that the candidate tip is better than the bridged tip. + pub bridge_tip_state: MinaStateProtocolStateValueStableV2, +} diff --git a/mina_state_verifier/src/sol/mod.rs b/mina_state_verifier/src/sol/mod.rs new file mode 100644 index 000000000..70b523db2 --- /dev/null +++ b/mina_state_verifier/src/sol/mod.rs @@ -0,0 +1,2 @@ +/// Solidity-friendly serialization +pub mod serialization; diff --git a/mina_state_verifier/src/sol/serialization.rs b/mina_state_verifier/src/sol/serialization.rs new file mode 100644 index 000000000..2711d369a --- /dev/null +++ b/mina_state_verifier/src/sol/serialization.rs @@ -0,0 +1,86 @@ +use ark_serialize::{CanonicalDeserialize, CanonicalSerialize}; +use mina_curves::pasta::Fp; +use mina_p2p_messages::{ + bigint, + v2::{DataHashLibStateHashStableV1, LedgerHash, MinaBaseLedgerHash0StableV1, StateHash}, +}; +use serde::{Deserialize, Serialize}; + +/// Serialization to bytes for simple types that need to be deserialized in Ethereum. +/// More complex structures, like an [`MinaAccountValidationExample::Account`], may use Solidity's ABI Encoding. +pub struct SolSerialize; + +impl serde_with::SerializeAs for SolSerialize { + fn serialize_as(val: &StateHash, serializer: S) -> Result + where + S: serde::Serializer, + { + let bytes: [u8; 32] = val + .0 + .as_ref() + .try_into() + .map_err(serde::ser::Error::custom)?; + bytes.serialize(serializer) + } +} + +impl<'de> serde_with::DeserializeAs<'de, StateHash> for SolSerialize { + fn deserialize_as(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let bytes = <[u8; 32]>::deserialize(deserializer)?; + let bigint = bigint::BigInt::new(bytes.into()); + Ok(StateHash::from(DataHashLibStateHashStableV1(bigint))) + } +} + +impl serde_with::SerializeAs for SolSerialize { + fn serialize_as(val: &LedgerHash, serializer: S) -> Result + where + S: serde::Serializer, + { + let bytes: [u8; 32] = val + .0 + .as_ref() + .try_into() + .map_err(serde::ser::Error::custom)?; + bytes.serialize(serializer) + } +} + +impl<'de> serde_with::DeserializeAs<'de, LedgerHash> for SolSerialize { + fn deserialize_as(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let bytes = <[u8; 32]>::deserialize(deserializer)?; + let bigint = bigint::BigInt::new(bytes.into()); + Ok(LedgerHash::from(MinaBaseLedgerHash0StableV1(bigint))) + } +} + +impl serde_with::SerializeAs for SolSerialize { + fn serialize_as(val: &Fp, serializer: S) -> Result + where + S: serde::Serializer, + { + let mut bytes = Vec::with_capacity(32); + val.serialize(&mut bytes) + .map_err(serde::ser::Error::custom)?; + let bytes: [u8; 32] = bytes.try_into().map_err(|_| { + serde::ser::Error::custom("failed to convert byte vector into 32 byte array") + })?; + bytes.serialize(serializer) + } +} + +impl<'de> serde_with::DeserializeAs<'de, Fp> for SolSerialize { + fn deserialize_as(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let bytes = <[u8; 32]>::deserialize(deserializer)?; + Fp::deserialize(&mut &bytes[..]).map_err(serde::de::Error::custom) + } +} diff --git a/mina_state_verifier/src/utils/constants.rs b/mina_state_verifier/src/utils/constants.rs new file mode 100644 index 000000000..b627b72b8 --- /dev/null +++ b/mina_state_verifier/src/utils/constants.rs @@ -0,0 +1,3 @@ +// Bridge related constants +/// Length of the Mina transition frontier that will or is bridged to Ethereum +pub const BRIDGE_TRANSITION_FRONTIER_LEN: usize = 16; diff --git a/mina_state_verifier/src/utils/mod.rs b/mina_state_verifier/src/utils/mod.rs new file mode 100644 index 000000000..0b6d2c4ea --- /dev/null +++ b/mina_state_verifier/src/utils/mod.rs @@ -0,0 +1 @@ +pub mod constants; diff --git a/mina_state_verifier/src/verifier_index.rs b/mina_state_verifier/src/verifier_index.rs new file mode 100644 index 000000000..973e33af7 --- /dev/null +++ b/mina_state_verifier/src/verifier_index.rs @@ -0,0 +1,286 @@ +use std::{array, sync::Arc}; + +use ark_ff::{Field, PrimeField}; +use ark_poly::{ + univariate::DensePolynomial, EvaluationDomain, Radix2EvaluationDomain, UVPolynomial, +}; +use kimchi::{ + circuits::{ + constraints::FeatureFlags, + expr::Linearization, + lookup::lookups::{LookupFeatures, LookupPatterns}, + }, + linearization::expr_linearization, + mina_curves::pasta::{Fp, Fq, Pallas, Vesta}, + poly_commitment::{srs::SRS, PolyComm}, + verifier_index::VerifierIndex, +}; +use serde::Deserialize; + +const DEVNET_VK_JSON: &str = include_str!("devnet_vk.json"); +const MAINNET_VK_JSON: &str = include_str!("mainnet_vk.json"); + +pub enum MinaChain { + Devnet, + Mainnet, +} + +#[derive(Deserialize)] +struct BlockchainVerificationKey { + commitments: Commitments, + index: Index, +} + +#[derive(Deserialize)] +struct Commitments { + sigma_comm: [JSONPolyComm; 7], + coefficients_comm: [JSONPolyComm; 15], + generic_comm: JSONPolyComm, + psm_comm: JSONPolyComm, + complete_add_comm: JSONPolyComm, + mul_comm: JSONPolyComm, + emul_comm: JSONPolyComm, + endomul_scalar_comm: JSONPolyComm, +} + +#[derive(Deserialize)] +struct Index { + domain: Domain, + max_poly_size: usize, + public: usize, + prev_challenges: usize, + shifts: [JSONFq; 7], +} + +#[derive(Deserialize)] +struct Domain { + log_size_of_group: usize, +} + +#[derive(Deserialize)] +struct JSONFp(String); +#[derive(Deserialize)] +struct JSONFq(String); + +#[derive(Deserialize)] +struct JSONGroupAffine(JSONFp, JSONFp); + +#[derive(Deserialize)] +struct JSONPolyComm(JSONGroupAffine); + +impl TryInto for JSONFp { + type Error = String; + + fn try_into(self) -> Result { + let bytes = hex::decode(self.0.trim_start_matches("0x")).map_err(|err| err.to_string())?; + Ok(Fp::from_be_bytes_mod_order(&bytes)) + } +} + +impl TryInto for JSONFq { + type Error = String; + + fn try_into(self) -> Result { + let bytes = hex::decode(self.0.trim_start_matches("0x")).map_err(|err| err.to_string())?; + Ok(Fq::from_be_bytes_mod_order(&bytes)) + } +} + +impl TryInto for JSONGroupAffine { + type Error = String; + + fn try_into(self) -> Result { + // FIXME(xqft): handle point at infinity + Ok(Pallas::new(self.0.try_into()?, self.1.try_into()?, false)) + } +} + +impl TryInto> for JSONPolyComm { + type Error = String; + + fn try_into(self) -> Result, Self::Error> { + Ok(PolyComm { + unshifted: vec![self.0.try_into()?], + shifted: None, + }) + } +} + +pub fn deserialize_blockchain_vk(chain: MinaChain) -> Result, String> { + let vk_json = match chain { + MinaChain::Devnet => DEVNET_VK_JSON, + MinaChain::Mainnet => MAINNET_VK_JSON, + }; + let vk: BlockchainVerificationKey = + serde_json::from_str(vk_json).map_err(|err| err.to_string())?; + + let max_poly_size = vk.index.max_poly_size; + let domain = Radix2EvaluationDomain::new(1 << vk.index.domain.log_size_of_group) + .ok_or("failed to create domain".to_owned())?; + + let Commitments { + sigma_comm, + coefficients_comm, + generic_comm, + psm_comm, + complete_add_comm, + mul_comm, + emul_comm, + endomul_scalar_comm, + } = vk.commitments; + let empty_poly_comm = |_| PolyComm::new(Vec::new(), None); + + let sigma_comm = { + let mut new_sigma_comm = array::from_fn(empty_poly_comm); + for (comm, new_comm) in sigma_comm.into_iter().zip(new_sigma_comm.iter_mut()) { + *new_comm = comm.try_into()? + } + new_sigma_comm + }; + let coefficients_comm = { + let mut new_coefficients_comm = array::from_fn(empty_poly_comm); + for (comm, new_comm) in coefficients_comm + .into_iter() + .zip(new_coefficients_comm.iter_mut()) + { + *new_comm = comm.try_into()? + } + new_coefficients_comm + }; + let generic_comm = generic_comm.try_into()?; + let psm_comm = psm_comm.try_into()?; + let complete_add_comm = complete_add_comm.try_into()?; + let mul_comm = mul_comm.try_into()?; + let emul_comm = emul_comm.try_into()?; + let endomul_scalar_comm = endomul_scalar_comm.try_into()?; + + let shift = vk.index.shifts; + let shift = { + let mut new_shift = array::from_fn(|_| Fq::from(0)); + for (comm, new_comm) in shift.into_iter().zip(new_shift.iter_mut()) { + *new_comm = comm.try_into()? + } + new_shift + }; + + // The code below was taken from OpenMina + // https://github.com/openmina/openmina/blob/main/ledger/src/proofs/verifier_index.rs#L151 + + let (endo, _) = poly_commitment::srs::endos::(); + + let feature_flags = FeatureFlags { + range_check0: false, + range_check1: false, + foreign_field_add: false, + foreign_field_mul: false, + xor: false, + rot: false, + lookup_features: LookupFeatures { + patterns: LookupPatterns { + xor: false, + lookup: false, + range_check: false, + foreign_field_mul: false, + }, + joint_lookup_used: false, + uses_runtime_tables: false, + }, + }; + + let (mut linearization, powers_of_alpha) = expr_linearization(Some(&feature_flags), true); + + let linearization = Linearization { + constant_term: linearization.constant_term, + index_terms: { + // Make the verifier index deterministic + linearization + .index_terms + .sort_by_key(|&(columns, _)| columns); + linearization.index_terms + }, + }; + + // https://github.com/o1-labs/proof-systems/blob/2702b09063c7a48131173d78b6cf9408674fd67e/kimchi/src/verifier_index.rs#L310-L314 + let srs = { + let mut srs = SRS::create(max_poly_size); + srs.add_lagrange_basis(domain); + Arc::new(srs) + }; + + // https://github.com/o1-labs/proof-systems/blob/2702b09063c7a48131173d78b6cf9408674fd67e/kimchi/src/verifier_index.rs#L319 + let zkpm = zk_polynomial(domain); + + // https://github.com/o1-labs/proof-systems/blob/2702b09063c7a48131173d78b6cf9408674fd67e/kimchi/src/verifier_index.rs#L324 + let w = zk_w3(domain); + + Ok(VerifierIndex { + domain, + max_poly_size: vk.index.max_poly_size, + srs: once_cell::sync::OnceCell::from(srs), + public: vk.index.public, + prev_challenges: vk.index.prev_challenges, + + sigma_comm, + coefficients_comm, + generic_comm, + psm_comm, + complete_add_comm, + mul_comm, + emul_comm, + endomul_scalar_comm, + + range_check0_comm: None, + range_check1_comm: None, + foreign_field_add_comm: None, + foreign_field_mul_comm: None, + xor_comm: None, + rot_comm: None, + + shift, + zkpm: once_cell::sync::OnceCell::from(zkpm), + w: once_cell::sync::OnceCell::from(w), + endo, + lookup_index: None, + linearization, + powers_of_alpha, + }) +} + +// The code below was taken from OpenMina +// https://github.com/openmina/openmina/blob/main/ledger/src/proofs/verifier_index.rs#L151 +/// Returns the end of the circuit, which is used for introducing zero-knowledge in the permutation polynomial +pub fn zk_w3(domain: Radix2EvaluationDomain) -> Fq { + const ZK_ROWS: u64 = 3; + domain.group_gen.pow([domain.size - (ZK_ROWS)]) +} + +// The code below was taken from OpenMina +// https://github.com/openmina/openmina/blob/main/ledger/src/proofs/verifier_index.rs#L151 +/// Computes the zero-knowledge polynomial for blinding the permutation polynomial: `(x-w^{n-k})(x-w^{n-k-1})...(x-w^n)`. +/// Currently, we use k = 3 for 2 blinding factors, +/// see +pub fn zk_polynomial(domain: Radix2EvaluationDomain) -> DensePolynomial { + let w3 = zk_w3(domain); + let w2 = domain.group_gen * w3; + let w1 = domain.group_gen * w2; + + // (x-w3)(x-w2)(x-w1) = + // x^3 - x^2(w1+w2+w3) + x(w1w2+w1w3+w2w3) - w1w2w3 + let w1w2 = w1 * w2; + DensePolynomial::from_coefficients_slice(&[ + -w1w2 * w3, // 1 + w1w2 + (w1 * w3) + (w3 * w2), // x + -w1 - w2 - w3, // x^2 + Fq::from(1), // x^3 + ]) +} + +#[cfg(test)] +mod test { + use super::{deserialize_blockchain_vk, MinaChain}; + + #[test] + fn deserialize_blockchain_vk_does_not_fail() { + deserialize_blockchain_vk(MinaChain::Devnet).unwrap(); + } +}