From c4f913a45ed051fdbc799e8679a9ece054506c75 Mon Sep 17 00:00:00 2001 From: bennett Date: Tue, 23 Sep 2025 09:39:40 -0500 Subject: [PATCH 1/4] chore: redeploy plasma Signed-off-by: bennett --- broadcast/deployed-addresses.json | 4 ++-- broadcast/deployed-addresses.md | 4 ++-- deployments/deployments.json | 2 +- deployments/plasma/Universal_SpokePool.json | 6 +++--- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/broadcast/deployed-addresses.json b/broadcast/deployed-addresses.json index 87954a673..f1a9d7842 100644 --- a/broadcast/deployed-addresses.json +++ b/broadcast/deployed-addresses.json @@ -614,9 +614,9 @@ "block_number": 1552582 }, "SpokePool": { - "address": "0x2271a5E74eA8A29764ab10523575b41AA52455f0", + "address": "0x9552a0a6624A23B848060AE5901659CDDa1f83f8", "transaction_hash": "Unknown", - "block_number": 1623864 + "block_number": 1709319 }, "SpokePoolVerifier": { "address": "0x3Fb9cED51E968594C87963a371Ed90c39519f65A", diff --git a/broadcast/deployed-addresses.md b/broadcast/deployed-addresses.md index f2502d595..df2f5b842 100644 --- a/broadcast/deployed-addresses.md +++ b/broadcast/deployed-addresses.md @@ -630,9 +630,9 @@ This file contains the latest deployed smart contract addresses from the broadca #### SpokePool -- **SpokePool**: `0x2271a5E74eA8A29764ab10523575b41AA52455f0` +- **SpokePool**: `0x9552a0a6624A23B848060AE5901659CDDa1f83f8` - Transaction Hash: `Unknown` - - Block Number: `1623864` + - Block Number: `1709319` #### SpokePoolVerifier diff --git a/deployments/deployments.json b/deployments/deployments.json index 6b769abbe..0aba5a1f6 100644 --- a/deployments/deployments.json +++ b/deployments/deployments.json @@ -164,7 +164,7 @@ }, "9745": { "Helios": { "address": "0x7e63a5f1a8f0b4d0934b2f2327daed3f6bb2ee75", "blockNumber": 1552582 }, - "SpokePool": { "address": "0x2271a5E74eA8A29764ab10523575b41AA52455f0", "blockNumber": 1623864 }, + "SpokePool": { "address": "0x9552a0a6624A23B848060AE5901659CDDa1f83f8", "blockNumber": 1709319 }, "SpokePoolVerifier": { "address": "0x3Fb9cED51E968594C87963a371Ed90c39519f65A", "blockNumber": 1619568 }, "SpokePoolPeriphery": { "address": "0xF1BF00D947267Da5cC63f8c8A60568c59FA31bCb", "blockNumber": 1628438 }, "MulticallHandler": { "address": "0x5E7840E06fAcCb6d1c3b5F5E0d1d3d07F2829bba", "blockNumber": 1619956 } diff --git a/deployments/plasma/Universal_SpokePool.json b/deployments/plasma/Universal_SpokePool.json index 05f7736f1..1e3812233 100644 --- a/deployments/plasma/Universal_SpokePool.json +++ b/deployments/plasma/Universal_SpokePool.json @@ -1,5 +1,5 @@ { - "address": "0x2271a5E74eA8A29764ab10523575b41AA52455f0", + "address": "0x9552a0a6624A23B848060AE5901659CDDa1f83f8", "abi": [ { "inputs": [ @@ -3278,9 +3278,9 @@ "0x0000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000", 30101, - "6000000000000000000000" + "600000000000000000000" ], - "numDeployments": 1, + "numDeployments": 2, "solcInputHash": "03f0774c8f215de67810f48bdf2a5cfe", "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_adminUpdateBufferSeconds\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_helios\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_hubPoolStore\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_wrappedNativeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_depositQuoteTimeBuffer\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_fillDeadlineBuffer\",\"type\":\"uint32\"},{\"internalType\":\"contract IERC20\",\"name\":\"_l2Usdc\",\"type\":\"address\"},{\"internalType\":\"contract ITokenMessenger\",\"name\":\"_cctpTokenMessenger\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_oftDstEid\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"_oftFeeCap\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AdminCallAlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AdminCallNotValidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AdminUpdateTooCloseToLastHeliosUpdate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyExecuted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClaimedMerkleLeaf\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DelegateCallFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DepositsArePaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DisabledRoute\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpiredFillDeadline\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FillsArePaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientSpokePoolBalanceToExecuteLeaf\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBytes32\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidChainId\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCrossDomainAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDepositorSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidExclusiveRelayer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidFillDeadline\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMerkleLeaf\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMerkleProof\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPayoutAdjustmentPct\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidQuoteTimestamp\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRelayerFeePct\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSlowFillRequest\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWithdrawalRecipient\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"LowLevelCallFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxTransferSizeExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueDoesNotMatchInputAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoRelayerRefundToClaim\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoSlowFillsInExclusivityWindow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEOA\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotExclusiveRelayer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotImplemented\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotTarget\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OFTFeeUnderpaid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OFTTokenMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OftFeeCapExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OftIncorrectAmountReceivedLD\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OftIncorrectAmountSentLD\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OftInsufficientBalanceForFee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OftLzFeeNotZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RelayFilled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SlotValueMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongERC7683OrderId\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"l2TokenAddress\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"refundAddress\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"ClaimedRelayerRefund\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"rootBundleId\",\"type\":\"uint256\"}],\"name\":\"EmergencyDeletedRootBundle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"originToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"EnabledDepositRoute\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountToReturn\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"refundAmounts\",\"type\":\"uint256[]\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"rootBundleId\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"leafId\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"l2TokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"refundAddresses\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"deferredRefunds\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"ExecutedRelayerRefundRoot\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"inputToken\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"outputToken\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"inputAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"outputAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"repaymentChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"originChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"depositId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"fillDeadline\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"exclusivityDeadline\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"exclusiveRelayer\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"relayer\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"depositor\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"messageHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"updatedRecipient\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"updatedMessageHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"updatedOutputAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum V3SpokePoolInterface.FillType\",\"name\":\"fillType\",\"type\":\"uint8\"}],\"indexed\":false,\"internalType\":\"struct V3SpokePoolInterface.V3RelayExecutionEventInfo\",\"name\":\"relayExecutionInfo\",\"type\":\"tuple\"}],\"name\":\"FilledRelay\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"inputToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"outputToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"inputAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"outputAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"repaymentChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"originChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"depositId\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"fillDeadline\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"exclusivityDeadline\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"exclusiveRelayer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"updatedRecipient\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"updatedMessage\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"updatedOutputAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum V3SpokePoolInterface.FillType\",\"name\":\"fillType\",\"type\":\"uint8\"}],\"indexed\":false,\"internalType\":\"struct V3SpokePoolInterface.LegacyV3RelayExecutionEventInfo\",\"name\":\"relayExecutionInfo\",\"type\":\"tuple\"}],\"name\":\"FilledV3Relay\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"inputToken\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"outputToken\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"inputAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"outputAmount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"depositId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"quoteTimestamp\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"fillDeadline\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"exclusivityDeadline\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"depositor\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"exclusiveRelayer\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"FundsDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"}],\"name\":\"PausedDeposits\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"}],\"name\":\"PausedFills\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"RelayedCallData\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"rootBundleId\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"relayerRefundRoot\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"slowRelayRoot\",\"type\":\"bytes32\"}],\"name\":\"RelayedRootBundle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"inputToken\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"outputToken\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"inputAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"outputAmount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"originChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"depositId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"fillDeadline\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"exclusivityDeadline\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"exclusiveRelayer\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"depositor\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"messageHash\",\"type\":\"bytes32\"}],\"name\":\"RequestedSlowFill\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"updatedOutputAmount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"depositId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"depositor\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"updatedRecipient\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"updatedMessage\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"depositorSignature\",\"type\":\"bytes\"}],\"name\":\"RequestedSpeedUpDeposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"updatedOutputAmount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"depositId\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"updatedRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"updatedMessage\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"depositorSignature\",\"type\":\"bytes\"}],\"name\":\"RequestedSpeedUpV3Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"inputToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"outputToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"inputAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"outputAmount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"originChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"depositId\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"fillDeadline\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"exclusivityDeadline\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"exclusiveRelayer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"RequestedV3SlowFill\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"messenger\",\"type\":\"address\"}],\"name\":\"SetOFTMessenger\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newWithdrawalRecipient\",\"type\":\"address\"}],\"name\":\"SetWithdrawalRecipient\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"SetXDomainAdmin\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountToReturn\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"leafId\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"l2TokenAddress\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"TokensBridged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"inputToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"outputToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"inputAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"outputAmount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"depositId\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"quoteTimestamp\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"fillDeadline\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"exclusivityDeadline\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"exclusiveRelayer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"V3FundsDeposited\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADMIN_UPDATE_BUFFER\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"EMPTY_MSG_BYTES\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"EMPTY_RELAYER\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"EMPTY_REPAYMENT_CHAIN_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HUB_POOL_STORE_CALLDATA_MAPPING_SLOT_INDEX\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INFINITE_FILL_DEADLINE\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_EXCLUSIVITY_PERIOD_SECONDS\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_TRANSFER_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OFT_DST_EID\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OFT_FEE_CAP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPDATE_BYTES32_DEPOSIT_DETAILS_HASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_initialDepositId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_crossDomainAdmin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_withdrawalRecipient\",\"type\":\"address\"}],\"name\":\"__SpokePool_init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"}],\"name\":\"adminExecuteMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cctpTokenMessenger\",\"outputs\":[{\"internalType\":\"contract ITokenMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cctpV2\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"chainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"l2TokenAddress\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"refundAddress\",\"type\":\"bytes32\"}],\"name\":\"claimRelayerRefund\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"crossDomainAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"depositor\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"inputToken\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"outputToken\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"inputAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"exclusiveRelayer\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"quoteTimestamp\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"fillDeadline\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"exclusivityParameter\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"originToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"int64\",\"name\":\"relayerFeePct\",\"type\":\"int64\"},{\"internalType\":\"uint32\",\"name\":\"quoteTimestamp\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"depositDeprecated_5947912356\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"originToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"int64\",\"name\":\"relayerFeePct\",\"type\":\"int64\"},{\"internalType\":\"uint32\",\"name\":\"quoteTimestamp\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"depositFor\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"depositor\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"inputToken\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"outputToken\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"inputAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"exclusiveRelayer\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"fillDeadlineOffset\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"exclusivityParameter\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"depositNow\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositQuoteTimeBuffer\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"inputToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"outputToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"inputAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"exclusiveRelayer\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"quoteTimestamp\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"fillDeadline\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"exclusivityParameter\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"depositV3\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"inputToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"outputToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"inputAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"exclusiveRelayer\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"fillDeadlineOffset\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"exclusivityParameter\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"depositV3Now\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rootBundleId\",\"type\":\"uint256\"}],\"name\":\"emergencyDeleteRootBundle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"}],\"name\":\"executeMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"rootBundleId\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amountToReturn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"refundAmounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint32\",\"name\":\"leafId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"l2TokenAddress\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"refundAddresses\",\"type\":\"address[]\"}],\"internalType\":\"struct SpokePoolInterface.RelayerRefundLeaf\",\"name\":\"relayerRefundLeaf\",\"type\":\"tuple\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"name\":\"executeRelayerRefundLeaf\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"depositor\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"exclusiveRelayer\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"inputToken\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"outputToken\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"inputAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"originChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"depositId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"fillDeadline\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"exclusivityDeadline\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"struct V3SpokePoolInterface.V3RelayData\",\"name\":\"relayData\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updatedOutputAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct V3SpokePoolInterface.V3SlowFill\",\"name\":\"slowFillLeaf\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"rootBundleId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"name\":\"executeSlowRelayLeaf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"executedMessages\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"originData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"fillerData\",\"type\":\"bytes\"}],\"name\":\"fill\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fillDeadlineBuffer\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"depositor\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"exclusiveRelayer\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"inputToken\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"outputToken\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"inputAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"originChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"depositId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"fillDeadline\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"exclusivityDeadline\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"struct V3SpokePoolInterface.V3RelayData\",\"name\":\"relayData\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"repaymentChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"repaymentAddress\",\"type\":\"bytes32\"}],\"name\":\"fillRelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"depositor\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"exclusiveRelayer\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"inputToken\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"outputToken\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"inputAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"originChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"depositId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"fillDeadline\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"exclusivityDeadline\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"struct V3SpokePoolInterface.V3RelayData\",\"name\":\"relayData\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"repaymentChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"repaymentAddress\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"updatedOutputAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"updatedRecipient\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"updatedMessage\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"depositorSignature\",\"type\":\"bytes\"}],\"name\":\"fillRelayWithUpdatedDeposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"fillStatuses\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"exclusiveRelayer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"inputToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"outputToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"inputAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"originChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"depositId\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"fillDeadline\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"exclusivityDeadline\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"struct V3SpokePoolInterface.V3RelayDataLegacy\",\"name\":\"relayData\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"repaymentChainId\",\"type\":\"uint256\"}],\"name\":\"fillV3Relay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"l2TokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundAddress\",\"type\":\"address\"}],\"name\":\"getRelayerRefund\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"}],\"name\":\"getSlotKey\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"depositor\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"depositNonce\",\"type\":\"uint256\"}],\"name\":\"getUnsafeDepositId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"depositor\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"exclusiveRelayer\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"inputToken\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"outputToken\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"inputAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"originChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"depositId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"fillDeadline\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"exclusivityDeadline\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"struct V3SpokePoolInterface.V3RelayData\",\"name\":\"relayData\",\"type\":\"tuple\"}],\"name\":\"getV3RelayHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"helios\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hubPoolStore\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_initialDepositId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_crossDomainAdmin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_withdrawalRecipient\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"numberOfDeposits\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"l2TokenAddress\",\"type\":\"address\"}],\"name\":\"oftMessengers\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"l2OftMessenger\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"pause\",\"type\":\"bool\"}],\"name\":\"pauseDeposits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"pause\",\"type\":\"bool\"}],\"name\":\"pauseFills\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pausedDeposits\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pausedFills\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"recipientCircleDomainId\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"relayerRefundRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"slowRelayRoot\",\"type\":\"bytes32\"}],\"name\":\"relayRootBundle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"relayerRefund\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"depositor\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"exclusiveRelayer\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"inputToken\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"outputToken\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"inputAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"originChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"depositId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"fillDeadline\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"exclusivityDeadline\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"struct V3SpokePoolInterface.V3RelayData\",\"name\":\"relayData\",\"type\":\"tuple\"}],\"name\":\"requestSlowFill\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"rootBundles\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"slowRelayRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"relayerRefundRoot\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newCrossDomainAdmin\",\"type\":\"address\"}],\"name\":\"setCrossDomainAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"messenger\",\"type\":\"address\"}],\"name\":\"setOftMessenger\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newWithdrawalRecipient\",\"type\":\"address\"}],\"name\":\"setWithdrawalRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"depositor\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"depositId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updatedOutputAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"updatedRecipient\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"updatedMessage\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"depositorSignature\",\"type\":\"bytes\"}],\"name\":\"speedUpDeposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"depositId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updatedOutputAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"updatedRecipient\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"updatedMessage\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"depositorSignature\",\"type\":\"bytes\"}],\"name\":\"speedUpV3Deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"tryMulticall\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct MultiCallerUpgradeable.Result[]\",\"name\":\"results\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"depositor\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"inputToken\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"outputToken\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"inputAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"exclusiveRelayer\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"depositNonce\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"quoteTimestamp\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"fillDeadline\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"exclusivityParameter\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"unsafeDeposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"usdcToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawalRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wrappedNativeToken\",\"outputs\":[{\"internalType\":\"contract WETH9Interface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"custom:security-contact\":\"bugs@across.to\",\"details\":\"This contract has one onlyOwner function to be used as an emergency fallback to execute a message to this SpokePool in the case where the light-client is not functioning correctly. The owner is designed to be set to a multisig contract on this chain.\",\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is changed.\"},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"__SpokePool_init(uint32,address,address)\":{\"params\":{\"_crossDomainAdmin\":\"Cross domain admin to set. Can be changed by admin.\",\"_initialDepositId\":\"Starting deposit ID. Set to 0 unless this is a re-deployment in order to mitigate relay hash collisions.\",\"_withdrawalRecipient\":\"Address which receives token withdrawals. Can be changed by admin. For Spoke Pools on L2, this will likely be the hub pool.\"}},\"adminExecuteMessage(bytes)\":{\"details\":\"This function will revert if the last Helios update was less than ADMIN_UPDATE_BUFFER seconds ago.\",\"params\":{\"_message\":\"The calldata to execute on this contract.\"}},\"chainId()\":{\"details\":\"Some L2s like ZKSync don't support the CHAIN_ID opcode so we allow the implementer to override this.\"},\"claimRelayerRefund(bytes32,bytes32)\":{\"params\":{\"l2TokenAddress\":\"Address of the L2 token to claim refunds for.\",\"refundAddress\":\"Address to send the refund to.\"}},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"deposit(bytes32,bytes32,bytes32,bytes32,uint256,uint256,uint256,bytes32,uint32,uint32,uint32,bytes)\":{\"details\":\"On the destination chain, the hash of the deposit data will be used to uniquely identify this deposit, so modifying any params in it will result in a different hash and a different deposit. The hash will comprise all parameters to this function along with this chain's chainId(). Relayers are only refunded for filling deposits with deposit hashes that map exactly to the one emitted by this contract.\",\"params\":{\"depositor\":\"The account credited with the deposit who can request to \\\"speed up\\\" this deposit by modifying the output amount, recipient, and message.\",\"destinationChainId\":\"The destination chain identifier. Must be enabled along with the input token as a valid deposit route from this spoke pool or this transaction will revert.\",\"exclusiveRelayer\":\"The relayer that will be exclusively allowed to fill this deposit before the exclusivity deadline timestamp. This must be a valid, non-zero address if the exclusivity deadline is greater than the current block.timestamp. If the exclusivity deadline is < currentTime, then this must be address(0), and vice versa if this is address(0).\",\"exclusivityParameter\":\"This value is used to set the exclusivity deadline timestamp in the emitted deposit event. Before this destination chain timestamp, only the exclusiveRelayer (if set to a non-zero address), can fill this deposit. There are three ways to use this parameter: 1. NO EXCLUSIVITY: If this value is set to 0, then a timestamp of 0 will be emitted, meaning that there is no exclusivity period. 2. OFFSET: If this value is less than MAX_EXCLUSIVITY_PERIOD_SECONDS, then add this value to the block.timestamp to derive the exclusive relayer deadline. Note that using the parameter in this way will expose the filler of the deposit to the risk that the block.timestamp of this event gets changed due to a chain-reorg, which would also change the exclusivity timestamp. 3. TIMESTAMP: Otherwise, set this value as the exclusivity deadline timestamp. which is the deadline for the exclusiveRelayer to fill the deposit.\",\"fillDeadline\":\"The deadline for the relayer to fill the deposit. After this destination chain timestamp, the fill will revert on the destination chain. Must be set before currentTime + fillDeadlineBuffer, where currentTime is block.timestamp on this chain or this transaction will revert.\",\"inputAmount\":\"The amount of input tokens to pull from the caller's account and lock into this contract. This amount will be sent to the relayer on their repayment chain of choice as a refund following an optimistic challenge window in the HubPool, less a system fee.\",\"inputToken\":\"The token pulled from the caller's account and locked into this contract to initiate the deposit. The equivalent of this token on the relayer's repayment chain of choice will be sent as a refund. If this is equal to the wrapped native token then the caller can optionally pass in native token as msg.value, as long as msg.value = inputTokenAmount.\",\"message\":\"The message to send to the recipient on the destination chain if the recipient is a contract. If the message is not empty, the recipient contract must implement handleV3AcrossMessage() or the fill will revert.\",\"outputAmount\":\"The amount of output tokens that the relayer will send to the recipient on the destination.\",\"outputToken\":\"The token that the relayer will send to the recipient on the destination chain. Must be an ERC20.\",\"quoteTimestamp\":\"The HubPool timestamp that is used to determine the system fee paid by the depositor. This must be set to some time between [currentTime - depositQuoteTimeBuffer, currentTime] where currentTime is block.timestamp on this chain or this transaction will revert.\",\"recipient\":\"The account receiving funds on the destination chain. Can be an EOA or a contract. If the output token is the wrapped native token for the chain, then the recipient will receive native token if an EOA or wrapped native token if a contract.\"}},\"depositDeprecated_5947912356(address,address,uint256,uint256,int64,uint32,bytes,uint256)\":{\"details\":\"DEPRECATION NOTICE: this function is deprecated and will be removed in the future. Please use deposit (under DEPOSITOR FUNCTIONS below) or depositV3 instead.Produces a FundsDeposited event with an infinite expiry, meaning that this deposit can never expire. Moreover, the event's outputToken is set to 0x0 meaning that this deposit can always be slow filled.\",\"params\":{\"amount\":\"Amount of tokens to deposit. Will be amount of tokens to receive less fees.\",\"destinationChainId\":\"Denotes network where user will receive funds from SpokePool by a relayer.\",\"message\":\"Arbitrary data that can be used to pass additional information to the recipient along with the tokens. Note: this is intended to be used to pass along instructions for how a contract should use or allocate the tokens.\",\"originToken\":\"Token to lock into this contract to initiate deposit.\",\"quoteTimestamp\":\"Timestamp used by relayers to compute this deposit's realizedLPFeePct which is paid to LP pool on HubPool.\",\"recipient\":\"Address to receive funds at on destination chain.\",\"relayerFeePct\":\"% of deposit amount taken out to incentivize a fast relayer.\"}},\"depositFor(address,address,address,uint256,uint256,int64,uint32,bytes,uint256)\":{\"details\":\"DEPRECATION NOTICE: this function is deprecated and will be removed in the future. Please use the other deposit or depositV3 instead.\",\"params\":{\"amount\":\"Amount of tokens to deposit. Will be amount of tokens to receive less fees.\",\"depositor\":\"Address who is credited for depositing funds on origin chain and can speed up the deposit.\",\"destinationChainId\":\"Denotes network where user will receive funds from SpokePool by a relayer.\",\"message\":\"Arbitrary data that can be used to pass additional information to the recipient along with the tokens. Note: this is intended to be used to pass along instructions for how a contract should use or allocate the tokens.\",\"originToken\":\"Token to lock into this contract to initiate deposit.\",\"quoteTimestamp\":\"Timestamp used by relayers to compute this deposit's realizedLPFeePct which is paid to LP pool on HubPool.\",\"recipient\":\"Address to receive funds at on destination chain.\",\"relayerFeePct\":\"% of deposit amount taken out to incentivize a fast relayer.\"}},\"depositNow(bytes32,bytes32,bytes32,bytes32,uint256,uint256,uint256,bytes32,uint32,uint32,bytes)\":{\"params\":{\"depositor\":\"The account credited with the deposit who can request to \\\"speed up\\\" this deposit by modifying the output amount, recipient, and message.\",\"destinationChainId\":\"The destination chain identifier. Must be enabled along with the input token as a valid deposit route from this spoke pool or this transaction will revert.\",\"exclusiveRelayer\":\"The relayer that will be exclusively allowed to fill this deposit before the exclusivity deadline timestamp.\",\"exclusivityParameter\":\"See identically named parameter in deposit() comments.\",\"fillDeadlineOffset\":\"Added to the current time to set the fill deadline, which is the deadline for the relayer to fill the deposit. After this destination chain timestamp, the fill will revert on the destination chain.\",\"inputAmount\":\"The amount of input tokens to pull from the caller's account and lock into this contract. This amount will be sent to the relayer on their repayment chain of choice as a refund following an optimistic challenge window in the HubPool, plus a system fee.\",\"inputToken\":\"The token pulled from the caller's account and locked into this contract to initiate the deposit. The equivalent of this token on the relayer's repayment chain of choice will be sent as a refund. If this is equal to the wrapped native token then the caller can optionally pass in native token as msg.value, as long as msg.value = inputTokenAmount.\",\"message\":\"The message to send to the recipient on the destination chain if the recipient is a contract. If the message is not empty, the recipient contract must implement handleV3AcrossMessage() or the fill will revert.\",\"outputAmount\":\"The amount of output tokens that the relayer will send to the recipient on the destination.\",\"outputToken\":\"The token that the relayer will send to the recipient on the destination chain. Must be an ERC20.\",\"recipient\":\"The account receiving funds on the destination chain. Can be an EOA or a contract. If the output token is the wrapped native token for the chain, then the recipient will receive native token if an EOA or wrapped native token if a contract.\"}},\"depositV3(address,address,address,address,uint256,uint256,uint256,address,uint32,uint32,uint32,bytes)\":{\"details\":\"This version mirrors the original `depositV3` function, but uses `address` types for `depositor`, `recipient`, `inputToken`, `outputToken`, and `exclusiveRelayer` for compatibility with contracts using the `address` type. The key functionality and logic remain identical, ensuring interoperability across both versions.\",\"params\":{\"depositor\":\"The account credited with the deposit who can request to \\\"speed up\\\" this deposit by modifying the output amount, recipient, and message.\",\"destinationChainId\":\"The destination chain identifier. Must be enabled along with the input token as a valid deposit route from this spoke pool or this transaction will revert.\",\"exclusiveRelayer\":\"The relayer exclusively allowed to fill this deposit before the exclusivity deadline.\",\"exclusivityParameter\":\"This value is used to set the exclusivity deadline timestamp in the emitted deposit event. Before this destination chain timestamp, only the exclusiveRelayer (if set to a non-zero address), can fill this deposit. There are three ways to use this parameter: 1. NO EXCLUSIVITY: If this value is set to 0, then a timestamp of 0 will be emitted, meaning that there is no exclusivity period. 2. OFFSET: If this value is less than MAX_EXCLUSIVITY_PERIOD_SECONDS, then add this value to the block.timestamp to derive the exclusive relayer deadline. Note that using the parameter in this way will expose the filler of the deposit to the risk that the block.timestamp of this event gets changed due to a chain-reorg, which would also change the exclusivity timestamp. 3. TIMESTAMP: Otherwise, set this value as the exclusivity deadline timestamp. which is the deadline for the exclusiveRelayer to fill the deposit.\",\"fillDeadline\":\"The deadline for the relayer to fill the deposit. After this destination chain timestamp, the fill will revert on the destination chain. Must be set before currentTime + fillDeadlineBuffer, where currentTime is block.timestamp on this chain.\",\"inputAmount\":\"The amount of input tokens pulled from the caller's account and locked into this contract. This amount will be sent to the relayer as a refund following an optimistic challenge window in the HubPool, less a system fee.\",\"inputToken\":\"The token pulled from the caller's account and locked into this contract to initiate the deposit. The equivalent of this token on the relayer's repayment chain of choice will be sent as a refund. If this is equal to the wrapped native token, the caller can optionally pass in native token as msg.value, provided msg.value = inputTokenAmount.\",\"message\":\"The message to send to the recipient on the destination chain if the recipient is a contract. If the message is not empty, the recipient contract must implement `handleV3AcrossMessage()` or the fill will revert.\",\"outputAmount\":\"The amount of output tokens that the relayer will send to the recipient on the destination.\",\"outputToken\":\"The token that the relayer will send to the recipient on the destination chain. Must be an ERC20.\",\"quoteTimestamp\":\"The HubPool timestamp that determines the system fee paid by the depositor. This must be set between [currentTime - depositQuoteTimeBuffer, currentTime] where currentTime is block.timestamp on this chain.\",\"recipient\":\"The account receiving funds on the destination chain. Can be an EOA or a contract. If the output token is the wrapped native token for the chain, then the recipient will receive native token if an EOA or wrapped native token if a contract.\"}},\"depositV3Now(address,address,address,address,uint256,uint256,uint256,address,uint32,uint32,bytes)\":{\"details\":\"This version is identical to the original `depositV3Now` but uses `address` types for `depositor`, `recipient`, `inputToken`, `outputToken`, and `exclusiveRelayer` to support compatibility with older systems. It maintains the same logic and purpose, ensuring interoperability with both versions.\",\"params\":{\"depositor\":\"The account credited with the deposit, who can request to \\\"speed up\\\" this deposit by modifying the output amount, recipient, and message.\",\"destinationChainId\":\"The destination chain identifier. Must be enabled with the input token as a valid deposit route from this spoke pool, or the transaction will revert.\",\"exclusiveRelayer\":\"The relayer exclusively allowed to fill the deposit before the exclusivity deadline.\",\"exclusivityParameter\":\"See identically named parameter in deposit() comments.\",\"fillDeadlineOffset\":\"Added to the current time to set the fill deadline. After this timestamp, fills on the destination chain will revert.\",\"inputAmount\":\"The amount of input tokens pulled from the caller's account and locked into this contract. This amount will be sent to the relayer as a refund following an optimistic challenge window in the HubPool, plus a system fee.\",\"inputToken\":\"The token pulled from the caller's account and locked into this contract to initiate the deposit. Equivalent tokens on the relayer's repayment chain will be sent as a refund. If this is the wrapped native token, msg.value must equal inputTokenAmount when passed.\",\"message\":\"The message to send to the recipient on the destination chain. If the recipient is a contract, it must implement `handleV3AcrossMessage()` if the message is not empty, or the fill will revert.\",\"outputAmount\":\"The amount of output tokens the relayer will send to the recipient on the destination.\",\"outputToken\":\"The token the relayer will send to the recipient on the destination chain. Must be an ERC20.\",\"recipient\":\"The account receiving funds on the destination chain. Can be an EOA or a contract. If the output token is the wrapped native token for the chain, then the recipient will receive the native token if an EOA or wrapped native token if a contract.\"}},\"emergencyDeleteRootBundle(uint256)\":{\"params\":{\"rootBundleId\":\"Index of the root bundle that needs to be deleted. Note: this is intentionally a uint256 to ensure that a small input range doesn't limit which indices this method is able to reach.\"}},\"executeMessage(uint256,bytes,uint256)\":{\"details\":\"Replay attacks are possible with this _message if this contract has the same address on another chain.\",\"params\":{\"_blockNumber\":\"Block number in light client we use to check slot value of slot key\",\"_message\":\"Message stored in HubPoolStore's relayMessageCallData mapping. Compared against raw value in Helios light client for slot key corresponding to _messageNonce at block number.\",\"_messageNonce\":\"Nonce of message stored in HubPoolStore.\"}},\"executeRelayerRefundLeaf(uint32,(uint256,uint256,uint256[],uint32,address,address[]),bytes32[])\":{\"params\":{\"proof\":\"Inclusion proof for this leaf in relayer refund root in root bundle.\",\"relayerRefundLeaf\":\"Contains all data necessary to reconstruct leaf contained in root bundle and to refund relayer. This data structure is explained in detail in the SpokePoolInterface.\",\"rootBundleId\":\"Unique ID of root bundle containing relayer refund root that this leaf is contained in.\"}},\"executeSlowRelayLeaf(((bytes32,bytes32,bytes32,bytes32,bytes32,uint256,uint256,uint256,uint256,uint32,uint32,bytes),uint256,uint256),uint32,bytes32[])\":{\"details\":\"Executing a slow fill leaf is equivalent to filling the relayData so this function cannot be used to double fill a recipient. The relayData that is filled is included in the slowFillLeaf and is hashed like any other fill sent through a fill method.There is no relayer credited with filling this relay since funds are sent directly out of this contract.\",\"params\":{\"proof\":\"Inclusion proof for this leaf in slow relay root in root bundle.\",\"rootBundleId\":\"Unique ID of root bundle containing slow relay root that this leaf is contained in.\",\"slowFillLeaf\":\"Contains all data necessary to uniquely identify a relay for this chain. This struct is hashed and included in a merkle root that is relayed to all spoke pools. - relayData: struct containing all the data needed to identify the original deposit to be slow filled. - chainId: chain identifier where slow fill leaf should be executed. If this doesn't match this chain's chainId, then this function will revert. - updatedOutputAmount: Amount to be sent to recipient out of this contract's balance. Can be set differently from relayData.outputAmount to charge a different fee because this deposit was \\\"slow\\\" filled. Usually, this will be set higher to reimburse the recipient for waiting for the slow fill.\"}},\"fill(bytes32,bytes,bytes)\":{\"details\":\"ERC-7683 fill function.\",\"params\":{\"fillerData\":\"Data provided by the filler to inform the fill or express their preferences\",\"orderId\":\"Unique order identifier for this order\",\"originData\":\"Data emitted on the origin to parameterize the fill\"}},\"fillRelay((bytes32,bytes32,bytes32,bytes32,bytes32,uint256,uint256,uint256,uint256,uint32,uint32,bytes),uint256,bytes32)\":{\"details\":\"The fee paid to relayers and the system should be captured in the spread between output amount and input amount when adjusted to be denominated in the input token. A relayer on the destination chain will send outputAmount of outputTokens to the recipient and receive inputTokens on a repayment chain of their choice. Therefore, the fee should account for destination fee transaction costs, the relayer's opportunity cost of capital while they wait to be refunded following an optimistic challenge window in the HubPool, and a system fee charged to relayers.The hash of the relayData will be used to uniquely identify the deposit to fill, so modifying any params in it will result in a different hash and a different deposit. The hash will comprise all parameters passed to deposit() on the origin chain along with that chain's chainId(). This chain's chainId() must therefore match the destinationChainId passed into deposit. Relayers are only refunded for filling deposits with deposit hashes that map exactly to the one emitted by the origin SpokePool therefore the relayer should not modify any params in relayData.Cannot fill more than once. Partial fills are not supported.\",\"params\":{\"relayData\":\"struct containing all the data needed to identify the deposit to be filled. Should match all the same-named parameters emitted in the origin chain FundsDeposited event. - depositor: The account credited with the deposit who can request to \\\"speed up\\\" this deposit by modifying the output amount, recipient, and message. - recipient The account receiving funds on this chain. Can be an EOA or a contract. If the output token is the wrapped native token for the chain, then the recipient will receive native token if an EOA or wrapped native token if a contract. - inputToken: The token pulled from the caller's account to initiate the deposit. The equivalent of this token on the repayment chain will be sent as a refund to the caller. - outputToken The token that the caller will send to the recipient on the destination chain. Must be an ERC20. - inputAmount: This amount, less a system fee, will be sent to the caller on their repayment chain of choice as a refund following an optimistic challenge window in the HubPool. - outputAmount: The amount of output tokens that the caller will send to the recipient. - originChainId: The origin chain identifier. - exclusiveRelayer The relayer that will be exclusively allowed to fill this deposit before the exclusivity deadline timestamp. - fillDeadline The deadline for the caller to fill the deposit. After this timestamp, the fill will revert on the destination chain. - exclusivityDeadline: The deadline for the exclusive relayer to fill the deposit. After this timestamp, anyone can fill this deposit. Note that if this value was set in deposit by adding an offset to the deposit's block.timestamp, there is re-org risk for the caller of this method because the event's block.timestamp can change. Read the comments in `deposit` about the `exclusivityParameter` for more details. - message The message to send to the recipient if the recipient is a contract that implements a handleV3AcrossMessage() public function\",\"repaymentAddress\":\"Address the relayer wants to be receive their refund at.\",\"repaymentChainId\":\"Chain of SpokePool where relayer wants to be refunded after the challenge window has passed. Will receive inputAmount of the equivalent token to inputToken on the repayment chain.\"}},\"fillRelayWithUpdatedDeposit((bytes32,bytes32,bytes32,bytes32,bytes32,uint256,uint256,uint256,uint256,uint32,uint32,bytes),uint256,bytes32,uint256,bytes32,bytes,bytes)\":{\"details\":\"Subject to same exclusivity deadline rules as fillV3Relay().\",\"params\":{\"depositorSignature\":\"Signed EIP712 hashstruct containing the deposit ID. Should be signed by the depositor account.\",\"relayData\":\"struct containing all the data needed to identify the deposit to be filled. See fillV3Relay().\",\"repaymentAddress\":\"Address the relayer wants to be receive their refund at.\",\"repaymentChainId\":\"Chain of SpokePool where relayer wants to be refunded after the challenge window has passed. See fillV3Relay().\",\"updatedMessage\":\"New message to use for this deposit.\",\"updatedOutputAmount\":\"New output amount to use for this deposit.\",\"updatedRecipient\":\"New recipient to use for this deposit.\"}},\"getCurrentTime()\":{\"returns\":{\"_0\":\"uint for the current timestamp.\"}},\"getSlotKey(uint256)\":{\"params\":{\"_nonce\":\"The nonce associated with the message.\"},\"returns\":{\"_0\":\"The computed storage slot key.\"}},\"getUnsafeDepositId(address,bytes32,uint256)\":{\"details\":\"msgSender and depositor are both used as inputs to allow passthrough depositors to create unique deposit hash spaces for unique depositors.\",\"params\":{\"depositNonce\":\"The nonce used as input to produce the deposit ID.\",\"depositor\":\"The depositor address used as input to produce the deposit ID.\",\"msgSender\":\"The caller of the transaction used as input to produce the deposit ID.\"},\"returns\":{\"_0\":\"The deposit ID for the unsafe deposit.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pauseDeposits(bool)\":{\"details\":\"Affects `deposit()` but not `speedUpDeposit()`, so that existing deposits can be sped up and still relayed.\",\"params\":{\"pause\":\"true if the call is meant to pause the system, false if the call is meant to unpause it.\"}},\"pauseFills(bool)\":{\"details\":\"Affects fillRelayWithUpdatedDeposit() and fillRelay().\",\"params\":{\"pause\":\"true if the call is meant to pause the system, false if the call is meant to unpause it.\"}},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"relayRootBundle(bytes32,bytes32)\":{\"params\":{\"relayerRefundRoot\":\"Merkle root containing relayer refund leaves that can be individually executed via executeRelayerRefundLeaf().\",\"slowRelayRoot\":\"Merkle root containing slow relay fulfillment leaves that can be individually executed via executeSlowRelayLeaf().\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"requestSlowFill((bytes32,bytes32,bytes32,bytes32,bytes32,uint256,uint256,uint256,uint256,uint32,uint32,bytes))\":{\"details\":\"Slow fills are not possible unless the input and output tokens are \\\"equivalent\\\", i.e. they route to the same L1 token via PoolRebalanceRoutes.Slow fills are created by inserting slow fill objects into a merkle tree that is included in the next HubPool \\\"root bundle\\\". Once the optimistic challenge window has passed, the HubPool will relay the slow root to this chain via relayRootBundle(). Once the slow root is relayed, the slow fill can be executed by anyone who calls executeSlowRelayLeaf().Cannot request a slow fill if the fill deadline has passed.Cannot request a slow fill if the relay has already been filled or a slow fill has already been requested.\",\"params\":{\"relayData\":\"struct containing all the data needed to identify the deposit that should be slow filled. If any of the params are missing or different from the origin chain deposit, then Across will not include a slow fill for the intended deposit.\"}},\"setCrossDomainAdmin(address)\":{\"params\":{\"newCrossDomainAdmin\":\"New cross domain admin.\"}},\"setOftMessenger(address,address)\":{\"params\":{\"messenger\":\"IOFT contract address on the current chain for the specified token. Acts as a 'mailbox'\",\"token\":\"token address on the current chain\"}},\"setWithdrawalRecipient(address)\":{\"params\":{\"newWithdrawalRecipient\":\"New withdrawal recipient address.\"}},\"speedUpDeposit(bytes32,uint256,uint256,bytes32,bytes,bytes)\":{\"details\":\"the depositor and depositId must match the params in a FundsDeposited event that the depositor wants to speed up. The relayer has the option but not the obligation to use this updated information when filling the deposit via fillRelayWithUpdatedDeposit().\",\"params\":{\"depositId\":\"Deposit ID to speed up.\",\"depositor\":\"Depositor that must sign the depositorSignature and was the original depositor.\",\"depositorSignature\":\"Signed EIP712 hashstruct containing the deposit ID. Should be signed by the depositor account. If depositor is a contract, then should implement EIP1271 to sign as a contract. See _verifyUpdateV3DepositMessage() for more details about how this signature should be constructed.\",\"updatedMessage\":\"New message to use for this deposit. Can be modified if the recipient is a contract that expects to receive a message from the relay and for some reason needs to be modified.\",\"updatedOutputAmount\":\"New output amount to use for this deposit. Should be lower than previous value otherwise relayer has no incentive to use this updated value.\",\"updatedRecipient\":\"New recipient to use for this deposit. Can be modified if the recipient is a contract that expects to receive a message from the relay and for some reason needs to be modified.\"}},\"speedUpV3Deposit(address,uint256,uint256,address,bytes,bytes)\":{\"details\":\"The `depositor` and `depositId` must match the parameters in a `FundsDeposited` event that the depositor wants to speed up. The relayer is not obligated but has the option to use this updated information when filling the deposit using `fillRelayWithUpdatedDeposit()`. This version uses `address` types for compatibility with systems relying on `address`-based implementations.\",\"params\":{\"depositId\":\"The deposit ID to speed up.\",\"depositor\":\"The depositor that must sign the `depositorSignature` and was the original depositor.\",\"depositorSignature\":\"The signed EIP712 hashstruct containing the deposit ID. Should be signed by the depositor account. If the depositor is a contract, it should implement EIP1271 to sign as a contract. See `_verifyUpdateV3DepositMessage()` for more details on how the signature should be constructed.\",\"updatedMessage\":\"The new message for this deposit. Can be modified if the recipient is a contract that expects to receive a message from the relay and needs to be updated.\",\"updatedOutputAmount\":\"The new output amount to use for this deposit. It should be lower than the previous value, otherwise the relayer has no incentive to use this updated value.\",\"updatedRecipient\":\"The new recipient for this deposit. Can be modified if the original recipient is a contract that expects to receive a message from the relay and needs to be changed.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"unsafeDeposit(bytes32,bytes32,bytes32,bytes32,uint256,uint256,uint256,bytes32,uint256,uint32,uint32,uint32,bytes)\":{\"details\":\"This is labeled \\\"unsafe\\\" because there is no guarantee that the depositId emitted in the resultant FundsDeposited event is unique which means that the corresponding fill might collide with an existing relay hash on the destination chain SpokePool, which would make this deposit unfillable. In this case, the depositor would subsequently receive a refund of `inputAmount` of `inputToken` on the origin chain after the fill deadline. Re-using a depositNonce is very dangerous when combined with `speedUpDeposit`, as a speed up signature can be re-used for any deposits with the same deposit ID.On the destination chain, the hash of the deposit data will be used to uniquely identify this deposit, so modifying any params in it will result in a different hash and a different deposit. The hash will comprise all parameters to this function along with this chain's chainId(). Relayers are only refunded for filling deposits with deposit hashes that map exactly to the one emitted by this contract.\",\"params\":{\"depositNonce\":\"The nonce that uniquely identifies this deposit. This function will combine this parameter with the msg.sender address to create a unique uint256 depositNonce and ensure that the msg.sender cannot use this function to front-run another depositor's unsafe deposit. This function guarantees that the resultant deposit nonce will not collide with a safe uint256 deposit nonce whose 24 most significant bytes are always 0.\",\"depositor\":\"See identically named parameter in depositV3() comments.\",\"destinationChainId\":\"See identically named parameter in depositV3() comments.\",\"exclusiveRelayer\":\"See identically named parameter in depositV3() comments.\",\"exclusivityParameter\":\"See identically named parameter in depositV3() comments.\",\"fillDeadline\":\"See identically named parameter in depositV3() comments.\",\"inputAmount\":\"See identically named parameter in depositV3() comments.\",\"inputToken\":\"See identically named parameter in depositV3() comments.\",\"message\":\"See identically named parameter in depositV3() comments.\",\"outputAmount\":\"See identically named parameter in depositV3() comments.\",\"outputToken\":\"See identically named parameter in depositV3() comments.\",\"quoteTimestamp\":\"See identically named parameter in depositV3() comments.\",\"recipient\":\"See identically named parameter in depositV3() comments.\"}},\"upgradeTo(address)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"errors\":{\"OFTFeeUnderpaid()\":[{\"notice\":\"Thrown when the native fee sent by the caller is insufficient to cover the OFT transfer.\"}],\"OftFeeCapExceeded()\":[{\"notice\":\"Thrown when OFT fee exceeds the configured cap \"}],\"OftIncorrectAmountReceivedLD()\":[{\"notice\":\"Thrown when amount received differs from expected amount \"}],\"OftIncorrectAmountSentLD()\":[{\"notice\":\"Thrown when amount sent differs from expected amount \"}],\"OftInsufficientBalanceForFee()\":[{\"notice\":\"Thrown when contract has insufficient balance to pay OFT fees \"}],\"OftLzFeeNotZero()\":[{\"notice\":\"Thrown when LayerZero token fee is not zero (only native fees supported) \"}]},\"events\":{\"RelayedCallData(uint256,address)\":{\"notice\":\"Event emitted after off-chain agent sees HubPoolStore's emitted StoredCallData event and calls executeMessage() on this contract to relay the stored calldata.\"}},\"kind\":\"user\",\"methods\":{\"ADMIN_UPDATE_BUFFER()\":{\"notice\":\"The owner of this contract must wait until this amount of seconds have passed since the latest helios light client update to emergency execute a message. This prevents the owner from executing a message in the happy case where the light client is being regularly updated. Therefore, this value should be set to a very high value, like 24 hours.\"},\"EMPTY_MSG_BYTES()\":{\"notice\":\"Empty bytes array used for OFT messaging parameters \"},\"HUB_POOL_STORE_CALLDATA_MAPPING_SLOT_INDEX()\":{\"notice\":\"Slot index of the HubPoolStore's relayMessageCallData mapping.\"},\"__SpokePool_init(uint32,address,address)\":{\"notice\":\"Construct the base SpokePool.\"},\"adminExecuteMessage(bytes)\":{\"notice\":\"This function is only callable by the owner and is used as an emergency fallback to execute calldata to this SpokePool in the case where the light-client is not able to be updated.\"},\"chainId()\":{\"notice\":\"Returns chain ID for this network.\"},\"claimRelayerRefund(bytes32,bytes32)\":{\"notice\":\"Enables a relayer to claim outstanding repayments. Should virtually never be used, unless for some reason relayer repayment transfer fails for reasons such as token transfer reverts due to blacklisting. In this case, the relayer can still call this method and claim the tokens to a new address.\"},\"deposit(bytes32,bytes32,bytes32,bytes32,uint256,uint256,uint256,bytes32,uint32,uint32,uint32,bytes)\":{\"notice\":\"Previously, this function allowed the caller to specify the exclusivityDeadline, otherwise known as the as exact timestamp on the destination chain before which only the exclusiveRelayer could fill the deposit. Now, the caller is expected to pass in a number that will be interpreted either as an offset or a fixed timestamp depending on its value.Request to bridge input token cross chain to a destination chain and receive a specified amount of output tokens. The fee paid to relayers and the system should be captured in the spread between output amount and input amount when adjusted to be denominated in the input token. A relayer on the destination chain will send outputAmount of outputTokens to the recipient and receive inputTokens on a repayment chain of their choice. Therefore, the fee should account for destination fee transaction costs, the relayer's opportunity cost of capital while they wait to be refunded following an optimistic challenge window in the HubPool, and the system fee that they'll be charged.\"},\"depositDeprecated_5947912356(address,address,uint256,uint256,int64,uint32,bytes,uint256)\":{\"notice\":\"Called by user to bridge funds from origin to destination chain. Depositor will effectively lock tokens in this contract and receive a destination token on the destination chain. The origin => destination token mapping is stored on the L1 HubPool.The caller must first approve this contract to spend amount of originToken.The originToken => destinationChainId must be enabled.This method is payable because the caller is able to deposit native token if the originToken is wrappedNativeToken and this function will handle wrapping the native token to wrappedNativeToken.\"},\"depositFor(address,address,address,uint256,uint256,int64,uint32,bytes,uint256)\":{\"notice\":\"The only difference between depositFor and deposit is that the depositor address stored in the relay hash can be overridden by the caller. This means that the passed in depositor can speed up the deposit, which is useful if the deposit is taken from the end user to a middle layer contract, like an aggregator or the SpokePoolVerifier, before calling deposit on this contract.The caller must first approve this contract to spend amount of originToken.The originToken => destinationChainId must be enabled.This method is payable because the caller is able to deposit native token if the originToken is wrappedNativeToken and this function will handle wrapping the native token to wrappedNativeToken.\"},\"depositNow(bytes32,bytes32,bytes32,bytes32,uint256,uint256,uint256,bytes32,uint32,uint32,bytes)\":{\"notice\":\"Submits deposit and sets quoteTimestamp to current Time. Sets fill and exclusivity deadlines as offsets added to the current time. This function is designed to be called by users such as Multisig contracts who do not have certainty when their transaction will mine.\"},\"depositV3(address,address,address,address,uint256,uint256,uint256,address,uint32,uint32,uint32,bytes)\":{\"notice\":\"A version of `deposit` that accepts `address` types for backward compatibility. This function allows bridging of input tokens cross-chain to a destination chain, receiving a specified amount of output tokens. The relayer is refunded in input tokens on a repayment chain of their choice, minus system fees, after an optimistic challenge window. The exclusivity period is specified as an offset from the current block timestamp.\"},\"depositV3Now(address,address,address,address,uint256,uint256,uint256,address,uint32,uint32,bytes)\":{\"notice\":\"A version of `depositNow` that supports addresses as input types for backward compatibility. This function submits a deposit and sets `quoteTimestamp` to the current time. The `fill` and `exclusivity` deadlines are set as offsets added to the current time. It is designed to be called by users, including Multisig contracts, who may not have certainty when their transaction will be mined.\"},\"emergencyDeleteRootBundle(uint256)\":{\"notice\":\"This method is intended to only be used in emergencies where a bad root bundle has reached the SpokePool.\"},\"executeMessage(uint256,bytes,uint256)\":{\"notice\":\"Relays calldata stored by the HubPool on L1 into this contract.\"},\"executeRelayerRefundLeaf(uint32,(uint256,uint256,uint256[],uint32,address,address[]),bytes32[])\":{\"notice\":\"Executes a relayer refund leaf stored as part of a root bundle. Will send the relayer the amount they sent to the recipient plus a relayer fee.\"},\"executeSlowRelayLeaf(((bytes32,bytes32,bytes32,bytes32,bytes32,uint256,uint256,uint256,uint256,uint32,uint32,bytes),uint256,uint256),uint32,bytes32[])\":{\"notice\":\"Executes a slow relay leaf stored as part of a root bundle relayed by the HubPool.\"},\"executedMessages(uint256)\":{\"notice\":\"Stores nonces of calldata stored in HubPoolStore that gets executed via executeMessage() to prevent replay attacks.\"},\"fill(bytes32,bytes,bytes)\":{\"notice\":\"Fills a single leg of a particular order on the destination chain\"},\"fillRelay((bytes32,bytes32,bytes32,bytes32,bytes32,uint256,uint256,uint256,uint256,uint32,uint32,bytes),uint256,bytes32)\":{\"notice\":\"Fulfill request to bridge cross chain by sending specified output tokens to the recipient.\"},\"fillRelayWithUpdatedDeposit((bytes32,bytes32,bytes32,bytes32,bytes32,uint256,uint256,uint256,uint256,uint32,uint32,bytes),uint256,bytes32,uint256,bytes32,bytes,bytes)\":{\"notice\":\"Identical to fillV3Relay except that the relayer wants to use a depositor's updated output amount, recipient, and/or message. The relayer should only use this function if they can supply a message signed by the depositor that contains the fill's matching deposit ID along with updated relay parameters. If the signature can be verified, then this function will emit a FilledV3Event that will be used by the system for refund verification purposes. In other words, this function is an alternative way to fill a a deposit than fillV3Relay.\"},\"getCurrentTime()\":{\"notice\":\"Gets the current time.\"},\"getSlotKey(uint256)\":{\"notice\":\"Computes the EVM storage slot key for a message nonce using the formula keccak256(key, slotIndex) to find the storage slot for a value within a mapping(key=>value) at a slot index. We already know the slot index of the relayMessageCallData mapping in the HubPoolStore.\"},\"getUnsafeDepositId(address,bytes32,uint256)\":{\"notice\":\"Returns the deposit ID for an unsafe deposit. This function is used to compute the deposit ID in unsafeDeposit and is provided as a convenience.\"},\"helios()\":{\"notice\":\"The address of the Helios L1 light client contract.\"},\"hubPoolStore()\":{\"notice\":\"The data store contract that only the HubPool can write to. This spoke pool can only act on data that has been written to this store.\"},\"pauseDeposits(bool)\":{\"notice\":\"Pauses deposit-related functions. This is intended to be used if this contract is deprecated or when something goes awry.\"},\"pauseFills(bool)\":{\"notice\":\"Pauses fill-related functions. This is intended to be used if this contract is deprecated or when something goes awry.\"},\"relayRootBundle(bytes32,bytes32)\":{\"notice\":\"This method stores a new root bundle in this contract that can be executed to refund relayers, fulfill slow relays, and send funds back to the HubPool on L1. This method can only be called by the admin and is designed to be called as part of a cross-chain message from the HubPool's executeRootBundle method.\"},\"requestSlowFill((bytes32,bytes32,bytes32,bytes32,bytes32,uint256,uint256,uint256,uint256,uint32,uint32,bytes))\":{\"notice\":\"Request Across to send LP funds to this contract to fulfill a slow fill relay for a deposit in the next bundle.\"},\"setCrossDomainAdmin(address)\":{\"notice\":\"Change cross domain admin address. Callable by admin only.\"},\"setOftMessenger(address,address)\":{\"notice\":\"Add token -> OFTMessenger relationship. Callable only by admin.\"},\"setWithdrawalRecipient(address)\":{\"notice\":\"Change L1 withdrawal recipient address. Callable by admin only.\"},\"speedUpDeposit(bytes32,uint256,uint256,bytes32,bytes,bytes)\":{\"notice\":\"Depositor can use this function to signal to relayer to use updated output amount, recipient, and/or message. The speed up signature uniquely identifies the speed up based only on depositor, deposit ID and origin chain, so using this function in conjunction with unsafeDeposit is risky due to the chance of repeating a deposit ID.\"},\"speedUpV3Deposit(address,uint256,uint256,address,bytes,bytes)\":{\"notice\":\"A version of `speedUpDeposit` using `address` types for backward compatibility. This function allows the depositor to signal to the relayer to use updated output amount, recipient, and/or message when filling a deposit. This can be useful when the deposit needs to be modified after the original transaction has been mined.\"},\"unsafeDeposit(bytes32,bytes32,bytes32,bytes32,uint256,uint256,uint256,bytes32,uint256,uint32,uint32,uint32,bytes)\":{\"notice\":\"See deposit for details. This function is identical to deposit except that it does not use the global deposit ID counter as a deposit nonce, instead allowing the caller to pass in a deposit nonce. This function is designed to be used by anyone who wants to pre-compute their resultant relay data hash, which could be useful for filling a deposit faster and avoiding any risk of a relay hash unexpectedly changing due to another deposit front-running this one and incrementing the global deposit ID counter.\"}},\"notice\":\"Spoke pool capable of executing calldata stored in L1 state via storage proof + Helios light client.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Universal_SpokePool.sol\":\"Universal_SpokePool\"},\"debug\":{\"revertStrings\":\"strip\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x359a1ab89b46b9aba7bcad3fb651924baf4893d15153049b9976b0fc9be1358e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e89863421b4014b96a4b62be76eb3b9f0a8afe9684664a6f389124c0964bfe5c\",\"dweb:/ipfs/Qmbk7xr1irpDuU1WdxXgxELBXxs61rHhCgod7heVcvFx16\"]},\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":{\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac55bf6f92fc7b90c6d79d346163a0a02bd5c648c7fede08b20e5da96d4ae2a0\",\"dweb:/ipfs/QmQoSrHhka35iKDK5iyNt8cuXXS5ANXVPjLhfsJjktB8V9\"]},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x7795808e3899c805254e3ae58074b20f799b466e3f43e057e47bedee5fb771f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://319853a2a682f3f72411507242669ef5e76e0ad3457be53102439709ee8948f0\",\"dweb:/ipfs/QmRtm4Ese9u4jfxXyuWPXLwzenwFotuQjAWV7rXtZTB1E9\"]},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xefb41f5c1a00249b7a99f0782f8c557865605426a3fb6e5fe9ae334293ae4f33\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90def55e5782595aabc13f57780c02d3613e5226f20ce6c1709503a63fdeb58f\",\"dweb:/ipfs/Qmb5vcymmNEZUJMaHmYxnhvGJDEsGMae4YjcHwkA74jy99\"]},\"@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2025ccf05f6f1f2fd4e078e552836f525a1864e3854ed555047cd732320ab29b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d27f4b23c2dee42394aebaf42bf238285230f472dfd3282a39c3f000ec28214f\",\"dweb:/ipfs/QmQa3DnvccwdWJeWrjgXPnFMTWbzWQWR39hVqC7eEwo2PC\"]},\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\":{\"keccak256\":\"0x0e1f0f5f62f67a881cd1a9597acbc0a5e4071f3c2c10449a183b922ae7272e3f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c25f742ff154998d19a669e2508c3597b363e123ce9144cd0fcf6521229f401f\",\"dweb:/ipfs/QmQXRuFzStEWqeEPbhQU6cAg9PaSowxJVo4PDKyRod7dco\"]},\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol\":{\"keccak256\":\"0x07e881de3b9f6d2c07909f193f24b96c7fe4ea60013260f3f25aecd8bab3c2f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fed09b97ccb0ff9ba9b6a94224f1d489026bf6b4b7279bfe64fb6e8749dee4d\",\"dweb:/ipfs/QmcRAzaSP1UnGr4vrGkfJmB2L9aiTYoXfV1Lg9gqrVRWn8\"]},\"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol\":{\"keccak256\":\"0x23b997be73d3dd46885262704f0f8cfc7273fdadfe303d37969a9561373972b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d03ebe5406134f0c4a017dee625ff615031194493bd1e88504e5c8fae55bc166\",\"dweb:/ipfs/QmUZV5bMbgk2PAkV3coouSeSainHN2jhqaQDJaA7hQRyu2\"]},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8b06267c5f80bad727af3e48b1382333d591dad51376399ef2f6b0ee6d58bf95\",\"dweb:/ipfs/QmdU5La1agcQvghnfMpWZGDPz2TUDTCxUwTLKmuMRXBpAx\"]},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9df9de7b5da1d1bd3d4b6c073d0174bc4211db60e794a321c8cb5d4eae34685\",\"dweb:/ipfs/QmWe49zj65jayrCe9jZpoWhYUZ1RiwSxyU2s7SBZnMztVy\"]},\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0xb96dc79b65b7c37937919dcdb356a969ce0aa2e8338322bf4dc027a3c9c9a7eb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f8613145881436fc0480fff22da4868d611e2b0c0c3da083334eb4362ce1945a\",\"dweb:/ipfs/QmPqpP3YeRbBdTJRe6Gv2eGsUaANf4J6RwTNRW36iYahfV\"]},\"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\":{\"keccak256\":\"0xa014f65d84b02827055d99993ccdbfb4b56b2c9e91eb278d82a93330659d06e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://50a7e716a74f3d48a7f549086faa94afcd58b9f18ac8e9f74af4571f3a1d8d5c\",\"dweb:/ipfs/QmTkDNWkq5o9Cv2jS7s6JvSmsPBkeunZhPe7Z2njGL31wo\"]},\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0x2bc0007987c229ae7624eb29be6a9b84f6a6a5872f76248b15208b131ea41c4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2b2835c737d073ef8b82a4cc246495a9740f43e7ff2cf130906b2449ff9bfb91\",\"dweb:/ipfs/QmSCWfNoSvvTN57ic7o1RW6NqSxxGAqbBTnLKc7QHe27qB\"]},\"@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol\":{\"keccak256\":\"0x88f6b7bba3ee33eeb741f9a0f5bc98b6e6e352d0fe4905377bb328590f84095a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88ace2d60f265752f18903d839910be4e4e104340b2957678585b812447825d4\",\"dweb:/ipfs/QmXFkNxMc3AAGzhs2wUEZyErWQjsvoTGyYjuU5oZkFki5Z\"]},\"@openzeppelin/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c45b821ef9e882e57c256697a152e108f0f2ad6997609af8904cae99c9bd422e\",\"dweb:/ipfs/QmRKCJW6jjzR5UYZcLpGnhEJ75UVbH6EHkEa49sWx2SKng\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0xb264c03a3442eb37a68ad620cefd1182766b58bee6cec40343480392d6b14d69\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://28879d01fd22c07b44f006612775f8577defbe459cb01685c5e25cd518c91a71\",\"dweb:/ipfs/QmVgfkwv2Fxw6hhTcDUZhE7NkoSKjab3ipM7UaRbt6uXb5\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xabefac93435967b4d36a4fabcbdbb918d1f0b7ae3c3d85bc30923b326c927ed1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9d213d3befca47da33f6db0310826bcdb148299805c10d77175ecfe1d06a9a68\",\"dweb:/ipfs/QmRgCn6SP1hbBkExUADFuDo8xkT4UU47yjNF5FhCeRbQmS\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b81d9ff6559ea5c47fc573e17ece6d9ba5d6839e213e6ebc3b4c5c8fe4199d7f\",\"dweb:/ipfs/QmPCW1bFisUzJkyjroY3yipwfism9RRCigCcK1hbXtVM8n\"]},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x809bc3edb4bcbef8263fa616c1b60ee0004b50a8a1bfa164d8f57fd31f520c58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8b93a1e39a4a19eba1600b92c96f435442db88cac91e315c8291547a2a7bcfe2\",\"dweb:/ipfs/QmTm34KVe6uZBZwq8dZDNWwPcm24qBJdxqL3rPxBJ4LrMv\"]},\"@openzeppelin/contracts/utils/cryptography/MerkleProof.sol\":{\"keccak256\":\"0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04\",\"dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG\"]},\"@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol\":{\"keccak256\":\"0x3af3ca86df39aac39a0514c84459d691434a108d2151c8ce9d69f32e315cab80\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://77d1f1cf302cd5e1dfbbb4ce3b281b28e8c52942d4319fce43df2e1b6f02a52d\",\"dweb:/ipfs/QmT6ZXStmK3Knhh9BokeVHQ9HXTBZNgL3Eb1ar1cYg1hWy\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c\",\"dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7\",\"dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6\"]},\"contracts/MerkleLib.sol\":{\"keccak256\":\"0xdaf19fdc82593b79a608af8f691aec89a3c0e47b210770deabbe66ece7c35bb1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://03c37f78657beed37257187e237d74492de0199734aa03272a419f66161c0dca\",\"dweb:/ipfs/QmdcXMAoRLZejhh2xcVMWR3WfUvXcArKrCFEE82JDYiJbh\"]},\"contracts/SpokePool.sol\":{\"keccak256\":\"0x014b2aa072de553623d7f8297145fc65be875bc30ed6b81ba78b35c97e873b77\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b1c0a7938e6f72f087e08e2c545d4e7f982f6cf94e34bb666b729f82b8ff2391\",\"dweb:/ipfs/QmUm7iPLUQMvTzPiJTurrZm1gpFoaBFC27SYfiGYUqjeyD\"]},\"contracts/Universal_SpokePool.sol\":{\"keccak256\":\"0x3100ef6a5da9e70ceb9acc3adedf9453229778661965c457e76c6456431428ec\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a46427e36a2fcf3d21e825a11c53757e8d5599af314d88b844cac27a9fecc2f8\",\"dweb:/ipfs/QmUeebn1CGQd2Xiugtm9mfqSj7boFEKvCsmz5CZSqCNS34\"]},\"contracts/erc7683/ERC7683.sol\":{\"keccak256\":\"0x726d0426b0f3a11ff59d3a5bbe433c182c0feac9ea2c8c75377fcc2693eccded\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://99336cc59dd5923815a8fad6e200b7b265e8446414b099e9b17e3f15f094b774\",\"dweb:/ipfs/QmWCrqefGqEpKsvfn1oBzTTUAFBjscjHc6g1EX2ab51bGA\"]},\"contracts/erc7683/ERC7683Permit2Lib.sol\":{\"keccak256\":\"0x47bf69c597fd6735fd4bb24c42d78a2c967d9bce0c303fe0a8ddafe6d2321f94\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://d37b60c5b94d9bb29c42d41dd18dacbc54649921d5cdf85d8c20bb4e43c415b9\",\"dweb:/ipfs/QmZFhiKWztX7UTG6w4wrcK5LSaMHFKH7NxVgrzkxV24bEs\"]},\"contracts/external/interfaces/CCTPInterfaces.sol\":{\"keccak256\":\"0x69059bd91cdb9bea59242c543a167e38a9f3a7788687d4194f68420a956c7608\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0d0781aeb87d7f860ab9ff49c6c6af60b0e93fb547108b98ba8c8501c3980104\",\"dweb:/ipfs/QmY9H7YiXn3a8jdQgcADboxSEsi5V4F7CPcJrWNbxGToAu\"]},\"contracts/external/interfaces/IHelios.sol\":{\"keccak256\":\"0xa545c3aaa22d3a9563183714992b7cef2eb256cb18e215f4d8648edb788a0285\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://856251de803739502d6502358b4f22b0b773482a329e75e5c36fb3c22297808a\",\"dweb:/ipfs/QmcdaqyDmCeGm2BzraxkpcL7TAX7YSFfLWomFSmGWrj3Sd\"]},\"contracts/external/interfaces/IPermit2.sol\":{\"keccak256\":\"0x7c6a2087606df8c70ab1585b69d3f155e2301e274d5a056b3b7e2402929cff33\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da44d21b12562dbad1e24192868ac196d10cdbe9a3d443fa58c1230e31a34ecc\",\"dweb:/ipfs/Qmb5i46saxwcyyPW15tCUcqVn61vKVzVo8P7uZZ2mtMMjt\"]},\"contracts/external/interfaces/WETH9Interface.sol\":{\"keccak256\":\"0x3f7892554ec7f54681fdd3cc18a41346c246c9c1afba016c52990ef77741f718\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://76e901f8da798eb2fdef8fd0083a51088103269f08ee751598c5a6eba407785f\",\"dweb:/ipfs/QmcAHbwbwCZd78teaK4cHuAvXq71aWX1r9vTGkSRRBDJV1\"]},\"contracts/interfaces/HubPoolInterface.sol\":{\"keccak256\":\"0xd8cfdded5db9bf29099e91abd8c8992b4deba1a22d4ffaed94c43ff3d47dcf33\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aeefb0b7816fbfe2f63968f34726155d30b0428558df9a20f839042795b24c82\",\"dweb:/ipfs/QmT5uYJenMLkiBEWtzdEZ4SnsysAhQ9uyHdx3pKNU1gyVy\"]},\"contracts/interfaces/IOFT.sol\":{\"keccak256\":\"0x9c32621db83fa983cdc964eec1cd8ee07f98f40aca4d799abe953df620cf1994\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://85219ca7bd16d067c3aae102aa19445fb6749725e562fd5b8fea76fcedc72266\",\"dweb:/ipfs/QmdDsPMhcyEbhLjzamDEyAyTgvP3CQDBtH1g8CkPLHAMU2\"]},\"contracts/interfaces/SpokePoolInterface.sol\":{\"keccak256\":\"0x67734f330d9b5eb5f7ea7f9f32d2d1cc107879154e9c9424623c6df1709b48e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d80f8ef8f10046624d7ab588538f041bab0c18e475e90b287505d5feae52578f\",\"dweb:/ipfs/QmS7QbHqygik4H6BSm1Cvypx8cWB6QxoHSPZ3FAVDkgYQj\"]},\"contracts/interfaces/SpokePoolMessageHandler.sol\":{\"keccak256\":\"0xc522e2ee6d874df26cae297fc23fc6e8b5216fc8d1901299bb147a25a8c6c259\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8942693e1cef207ae68750884e9e3c221df24dafe897af0ae6a1339e17391c29\",\"dweb:/ipfs/QmSCSQ5DNBetH8xUa73vWXR3D4CdsV6hHFmDqtT2QwLuWt\"]},\"contracts/interfaces/V3SpokePoolInterface.sol\":{\"keccak256\":\"0x15819fd7ff7b33d3fc55de30a5eb1136dfbcf953be2a962dddc550d77e1823fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4f8c43279c38b718fe471171f8dd2eb9f6e8550b939ce65c7c71f0aa6233c421\",\"dweb:/ipfs/QmXFCLp8jWNKi7QRYTN9ZyNoxsTL1RZfJPLMYzUN9xQC9K\"]},\"contracts/libraries/AddressConverters.sol\":{\"keccak256\":\"0x378f28bb4a17a5c47457cb9341086b2140f7faf6c048f702d3528166f0d74453\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://0fa273e028c9555202cac439ddf458d074b66c6f74778b2b0e5e17a0e331dc38\",\"dweb:/ipfs/QmYqEaWXgiJnsH8wRAuTKF41bxkxxvY947wdKoZrjM7HVx\"]},\"contracts/libraries/CircleCCTPAdapter.sol\":{\"keccak256\":\"0x5007254d87c41857f737ddee8b06ef5838182acf6c593f8cc7ced972e03feecb\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6559694d840b3fdbef6da3079478e0ffc168fef81a568633ecb2b9fb860caf34\",\"dweb:/ipfs/QmNnnB5pr745DFZTfDsFSq3BJi2DooaRM8f31qGwXNjLrb\"]},\"contracts/libraries/OFTTransportAdapter.sol\":{\"keccak256\":\"0x373531e2f0d20b27ba5ca8d716c96a6b779b30e2230ae6aad1c3501f1755e5ed\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://90a5ad963f5e9a3f89ec355af30b6522aa25f1a583f2417f9284510cd0a035fc\",\"dweb:/ipfs/QmbKRv44GRPiz1yBfMaN5qv4WMaZgfYN7cn3pyR4VbcNa7\"]},\"contracts/upgradeable/AddressLibUpgradeable.sol\":{\"keccak256\":\"0x655040da45a857cf609d7176c7b0647bf76d36e73e856af79d511014c7e8ef81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5c17767f34d57380767b49f8584d62598964fc813e6f3587d76b51ec2357bb4e\",\"dweb:/ipfs/QmSyoTa1Snn3KiJD7KjCwsPmNqpJzusXterbEXxbYCZoJK\"]},\"contracts/upgradeable/EIP712CrossChainUpgradeable.sol\":{\"keccak256\":\"0xecf6688cdcde5b28918af6db2abb81ac98e6897f704c241e58f954d701939da8\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6b1052cda48e92d322aa9189708858816f620157f1ca15da003f9ea4ec3c18da\",\"dweb:/ipfs/QmfBqmQLwS26BZ1h6agmuoZXF7cdoYAUmP7g5fArvUbn1b\"]},\"contracts/upgradeable/MultiCallerUpgradeable.sol\":{\"keccak256\":\"0x7336f84796307c09d4da05189d3aa97e6d0df7435f6783d999b72d7ee2d141ab\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://0835b415e5aa72bab566a8100091da98a7ee0ec26e32a2d34c206525c70938b3\",\"dweb:/ipfs/QmU1EdGKzJTQS8Yo8NwDsPkVquTBv4sepLUKhvqMcPKvt1\"]}},\"version\":1}", "bytecode": "0x61022060405234620003675761014062005d7f803803809162000025826102206200036b565b6102203912620003675761022051620000406102406200038f565b6200004d6102606200038f565b916200005b6102806200038f565b91620000696102a0620003a4565b93620000776102c0620003a4565b6102e051956001600160a01b0387168703620003675761030051956001600160a01b03871687036200036757620000b0610320620003a4565b610340513060805260c09190915260a0526001600160a01b031660e05261010052610120525f54600881901c60ff16620003675760ff808216036200032c575b506101609485526101808481525f610140526040805163011a412160e61b602082019081526004825292966001600160401b03939192830191848311848410176200030f575f938493604052519160018060a01b03165afa903d1562000323573d9081116200030f576040519062000173601f8201601f1916602001836200036b565b81523d5f602083013e5b8162000302575b81620002c9575b506101a09081526102009384526101e09283526101c0918252604051946159c89687620003b788396080518781816113070152818161169d01526117c9015260a051878181611b3001526155e7015260c051878181611cf20152614c10015260e05187818161084e015281816139ed01528181614120015281816143b20152818161470a01528181614d730152614dee015261010051878181611acf015281816139a101526148c30152610120518781816104b901526146b3015261014051878181611cb20152818161527b01526153260152518681816107f101528181614d11015261515c01525185818161223d01528181614b7c015261517f015251848181611e4b015261521b015251838181610db901526129a5015251828181610e02015281816119120152612cf101525181818161198301526129e00152f35b9050602081519101519060208110620002f0575b506001600160a01b031615155f6200018b565b5f199060200360031b1b165f620002dd565b8051602014915062000184565b634e487b7160e01b5f52604160045260245ffd5b5060606200017d565b60ff90811916175f557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a15f620000f0565b5f80fd5b601f909101601f19168101906001600160401b038211908210176200030f57604052565b51906001600160a01b03821682036200036757565b519063ffffffff82168203620003675756fe6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c8063079bd2c71461048a5780630cb84d9a146104855780631186ec331461048057806311eac8551461047b57806315348e44146103e557806317fcb39b1461047657806319c1648c146104715780631b3d55591461046c5780631fab657c1461046757806326b105d21461046257806329cb924d1461045d5780632e378115146104585780632e63e59a146104535780633659cfe61461044e578063437b911614610449578063490e49ef14610444578063493a4f841461043f5780634f1ef2861461043a5780635285e0581461043557806352d1902d14610430578063541f4f141461042b5780635743a7b914610426578063577f51f81461042157806357f6dcb81461041c5780636068d6cb1461041757806361a04d3014610412578063647c576c1461040d578063670fa8ac146104085780636bbbcd2e146103e55780636e400983146104035780636fd5c10e146103fe578063715018a6146103f9578063738b62e5146103f457806373fd4836146103ef578063775c0d03146103ea578063793d2be0146103e55780637aef642c146103e05780637b939232146103db5780637ef413e1146103d657806382e2c43f146103d15780638a7860ce146103cc5780638b15788e146103c75780638da5cb5b146103c25780639748cf7c146103bd57806397943aa9146103b8578063979f2bc2146103b357806399cc2968146103ae5780639a8a0592146103a9578063a1244c67146103a4578063a18a096e1461039f578063ac9650d81461039a578063ad5425c614610395578063adb5a6a614610340578063b370b7f514610390578063b4c0d7ab1461038b578063babb6aac14610386578063bce63c0014610381578063c2bb0c551461037c578063c35c83fc14610377578063ceb4c98714610372578063d7e1583a1461036d578063dda5211314610368578063ddd224f114610363578063de7eba781461035e578063deff4b2414610359578063e45a469414610354578063ea86bd461461034f578063ee2a53f81461034a578063f2fde38b14610345578063f79f29ed14610340578063fb4c37491461033b5763fc8a584f0361000e57612ec3565b612e93565b6127da565b612e56565b612e18565b612d15565b612cd2565b612bdd565b612bad565b612b84565b612b5e565b612b28565b612a2e565b612a03565b6129c9565b612986565b6128af565b612880565b612821565b61269e565b6125fe565b612497565b612470565b612456565b6123c1565b6122e1565b612261565b61221e565b6121f8565b61217a565b612102565b611fe7565b611fb8565b611f10565b611e70565b610815565b611e34565b611e0e565b611d79565b611d16565b611cd6565b611c96565b611c5c565b611b85565b611b19565b611af3565b611ab3565b6119da565b6118ae565b611819565b6117af565b611788565b61165a565b6115d3565b6115b5565b6114e8565b6112df565b6110e5565b610f85565b610f5c565b610d2f565b610c06565b610afd565b610897565b61082f565b6107d2565b610731565b6104fb565b61049d565b5f91031261049957565b5f80fd5b34610499575f36600319011261049957602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b6001600160a01b0381160361049957565b35906104f9826104dd565b565b3461049957602036600319011261049957602060043561051a816104dd565b6001600160a01b038091165f526108d8825260405f205416604051908152f35b63ffffffff81160361049957565b61014435906104f98261053a565b35906104f98261053a565b634e487b7160e01b5f52604160045260245ffd5b6040810190811067ffffffffffffffff82111761059157604052565b610561565b6101a0810190811067ffffffffffffffff82111761059157604052565b67ffffffffffffffff811161059157604052565b6060810190811067ffffffffffffffff82111761059157604052565b6080810190811067ffffffffffffffff82111761059157604052565b60e0810190811067ffffffffffffffff82111761059157604052565b60a0810190811067ffffffffffffffff82111761059157604052565b90601f8019910116810190811067ffffffffffffffff82111761059157604052565b6040519060c0820182811067ffffffffffffffff82111761059157604052565b60405190610180820182811067ffffffffffffffff82111761059157604052565b604051906104f982610596565b604051906104f9826105e3565b604051906104f9826105ff565b67ffffffffffffffff811161059157601f01601f191660200190565b9291926106e9826106c1565b916106f76040519384610637565b829481845281830111610499578281602093845f960137010152565b9080601f830112156104995781602061072e933591016106dd565b90565b6101003660031901126104995760043561074a816104dd565b602435610756816104dd565b6084358060070b81036104995760a435906107708261053a565b60c43567ffffffffffffffff811161049957610790903690600401610713565b926107996138f0565b60ff6108cf5460e81c166107c0576107b994606435916044359133613953565b600160c955005b604051630b4cba3160e31b8152600490fd5b34610499575f3660031901126104995760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610499575f3660031901126104995760206040515f8152f35b34610499575f3660031901126104995760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b60409060031901126104995760043561088a816104dd565b9060243561072e816104dd565b34610499576108a536610872565b906108ae613b42565b6108b66138f0565b6001600160a01b0390818316928315158061094c575b61093a5761090b906108f0836001600160a01b03165f526108d860205260405f2090565b906001600160a01b03166001600160a01b0319825416179055565b167f323983f5343e25b2c1396361b1b791be31484841fdfb95b8615cd02d910b1e085f80a3610018600160c955565b60405163a63e8c6b60e01b8152600490fd5b50604051637e062a3560e11b8152602081600481885afa9081156109ad575f9161097e575b50831682841614156108cc565b6109a0915060203d6020116109a6575b6109988183610637565b810190613b62565b5f610971565b503d61098e565b6130ed565b67ffffffffffffffff81116105915760051b60200190565b9080601f830112156104995760209082356109e4816109b2565b936109f26040519586610637565b81855260208086019260051b82010192831161049957602001905b828210610a1b575050505090565b81358152908301908301610a0d565b9080601f83011215610499576020908235610a44816109b2565b93610a526040519586610637565b81855260208086019260051b82010192831161049957602001905b828210610a7b575050505090565b8380918335610a89816104dd565b815201910190610a6d565b9291610a9f826109b2565b91610aad6040519384610637565b829481845260208094019160051b810192831161049957905b828210610ad35750505050565b81358152908301908301610ac6565b9080601f830112156104995781602061072e93359101610a94565b60031960603682011261049957600435610b168161053a565b60243567ffffffffffffffff928382116104995760c090823603011261049957610b3e610659565b908060040135825260248101356020830152604481013584811161049957610b6c90600436918401016109ca565b6040830152610b7d60648201610556565b6060830152610b8e608482016104ee565b608083015260a481013590848211610499576004610baf9236920101610a2a565b60a082015260443592831161049957610bcf610018933690600401610ae2565b91612ef3565b9181601f840112156104995782359167ffffffffffffffff8311610499576020808501948460051b01011161049957565b34610499576003196060368201126104995760043567ffffffffffffffff808211610499576060823603938401126104995760243590610c458261053a565b60443590811161049957610c5d903690600401610bd5565b919093610c686138f0565b600484013590610182190181121561049957610cf794610cf293610c95610ceb9360043691890101612a4c565b95610ca36080880151613e4c565b50610cad87613823565b9060446020890151916101608a015193610cc5610659565b9a8b5260208b015201356040890152606088015260808701525f60a08701523691610a94565b9083613e62565b613fb3565b610018600160c955565b9181601f840112156104995782359167ffffffffffffffff8311610499576020838186019501011161049957565b34610499576060366003190112610499576004803560243567ffffffffffffffff811161049957610d639036908401610d01565b610cbf929192805460ff8116610f4b5760ff19166001179055610d8582613350565b92610dfd610d943684846106dd565b6020815191012060206001600160a01b039660405180948192630829c59f60e01b83527f00000000000000000000000000000000000000000000000000000000000000006044358d85016001600160a01b03604092959493606083019683521660208201520152565b0381897f0000000000000000000000000000000000000000000000000000000000000000165afa9182156109ad575f92610f1a575b5003610f0957610e44918101906130f8565b92168015159081610efe575b50610eed57610e72610e6b825f52610cbe60205260405f2090565b5460ff1690565b610edc57610ecf9250610e9e610e91825f52610cbe60205260405f2090565b805460ff19166001179055565b6040513381527f3b0b856314838f509dfe81e9e13c651b0e544b42639c58be2c161b2c3892949d90602090a2614488565b610cbf805460ff19169055005b604051630dc1019760e01b81528390fd5b6040516332f602d160e11b81528390fd5b90503014155f610e50565b6040516301b6e1e760e21b81528590fd5b610f3d91925060203d602011610f44575b610f358183610637565b8101906130de565b905f610e32565b503d610f2b565b60405163087f80c160e31b81528690fd5b34610499575f366003190112610499576020604051428152f35b90816101809103126104995790565b346104995760403660031901126104995760043567ffffffffffffffff811161049957610fb6903690600401610f76565b610fbf8161312f565b6001600160a01b031690610fd56020820161312f565b6001600160a01b031691610feb6040830161312f565b6001600160a01b03166110006060840161312f565b6001600160a01b0316926110166080820161312f565b6001600160a01b03169061010061102e818301613139565b906101209061103e848301613139565b926101409485810161104f90613139565b966101609a8b83016110619084613143565b9a909b61106c610679565b9e8f91825260208201526040015260608d015260808c015260a081013560a08c015260c081013560c08c015260e0013560e08b015263ffffffff16908901528701906110bd919063ffffffff169052565b63ffffffff9091169085015236906110d4926106dd565b908201523360243561001892613854565b34610499576020366003190112610499576004803567ffffffffffffffff8111610499576111169036908301610f76565b61111e6138f0565b60ff6108cf5460e01c166112cf5763ffffffff804216926101408301936111578161114887613139565b63ffffffff9182169116101590565b6112bf5761012084019261116a84613139565b16106112b05761118261117d3685612a4c565b613823565b90611196825f526108d660205260405f2090565b546112a257506111e57f3cee3e290f36226751cd0b3321b213890fe9c768e922f267fa6111836ce05c32926111e06111da6111eb945f526108d660205260405f2090565b60019055565b613139565b93613139565b61120b6112066111ff610160860186613143565b36916106dd565b6144b6565b906112956040519283926101008701359760e08801359760208101359281359260408301359260c08101359060a081013590606060808201359101358b9693909a999895919261012098959361014089019c895260208901526040880152606087015263ffffffff80921660808701521660a085015260c084015260e08301526101008201520152565b0390a3610018600160c955565b604051624be79160e21b8152fd5b60405163d642b7d960e01b8152fd5b50604051630277ae7b60e21b8152fd5b50604051633d90fc5560e11b8152fd5b34610499576020366003190112610499576004356112fc816104dd565b6001600160a01b03807f000000000000000000000000000000000000000000000000000000000000000016803014610499577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90828254160361049957611361613b42565b611369612848565b9160ff7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914354165f146113a15750505061001890614f91565b6020600491604051928380926352d1902d60e01b825288165afa5f91816113da575b506113cc575f80fd5b036104995761001891614e75565b6113f491925060203d602011610f4457610f358183610637565b905f6113c3565b6020600319820112610499576004359067ffffffffffffffff82116104995761142691600401610bd5565b9091565b5f5b83811061143b5750505f910152565b818101518382015260200161142c565b906020916114648151809281855285808601910161142a565b601f01601f1916010190565b6020808201908083528351809252604092604081018260408560051b8401019601945f925b8584106114a6575050505050505090565b9091929394959685806114d7600193603f1986820301885286838d518051151584520151918185820152019061144b565b990194019401929594939190611495565b34610499576114f6366113fb565b6114ff816109b2565b91604061150f6040519485610637565b828452601f1961151e846109b2565b015f5b8181106115925750505f5b83811061154557604051806115418782611470565b0390f35b8061158c61155560019388613199565b515f80611563858a8a6131ad565b906115728951809381936131c4565b0390305af4906115806131d1565b60208201529015159052565b0161152c565b60209083516115a081610575565b5f815282606081830152828901015201611521565b34610499575f3660031901126104995760206040516301e133808152f35b34610499576040366003190112610499576024356004356115f2613b42565b6115fa6138f0565b6108d08054680100000000000000008110156105915763ffffffff916001820190558361162682612dd9565b5084600182015555167fc86ba04c55bc5eb2f2876b91c438849a296dbec7b08751c3074d92e04f0a77af5f80a4600160c955005b604036600319011261049957600435611672816104dd565b60243567ffffffffffffffff811161049957611692903690600401610713565b6001600160a01b03807f00000000000000000000000000000000000000000000000000000000000000001690813014610499577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc918183541603610499576116f8613b42565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561172e5750505061001890614f91565b6020600491604051928380926352d1902d60e01b825288165afa5f9181611767575b50611759575f80fd5b036104995761001891614f40565b61178191925060203d602011610f4457610f358183610637565b905f611750565b34610499575f3660031901126104995760206001600160a01b036108cd5416604051908152f35b34610499575f366003190112610499576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104995760206040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b61012036600319011261049957600435611832816104dd565b6024359061183f826104dd565b6044359161184c836104dd565b60a4358060070b81036104995760c435916118668361053a565b60e43567ffffffffffffffff811161049957611886903690600401610713565b9361188f6138f0565b60ff6108cf5460e81c166107c0576107b9956084359260643592613953565b346104995760203660031901126104995760043567ffffffffffffffff8111610499576118df903690600401610713565b6118e76144cb565b610cbf805460ff81166119c85760ff191660011790556040516349b5c56d60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156109ad575f916119a9575b50428111908115611976575b5061196457610ecf90614488565b604051633ff377d160e11b8152600490fd5b611981915042613214565b7f0000000000000000000000000000000000000000000000000000000000000000115f611956565b6119c2915060203d602011610f4457610f358183610637565b5f61194a565b60405163087f80c160e31b8152600490fd5b346104995760c0366003190112610499576004356119f7816104dd565b60243560443591606435611a0a816104dd565b67ffffffffffffffff9160843583811161049957611a2c903690600401610d01565b60a494919435918211610499577f45e04bc8f121ba11466985789ca2822a91109f31bb8ac85504a37b7eaf873c2694611a6c611aae933690600401610d01565b9290916001600160a01b03809716611aa08a8c83611a8b3688886106dd565b91611a97368b8b6106dd565b9346908d6144df565b604051978897169a87613246565b0390a3005b34610499575f36600319011261049957602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610499575f36600319011261049957602060ff6108cf5460e81c166040519015158152f35b34610499575f3660031901126104995760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b606090600319011261049957600435611b6b8161053a565b90602435611b78816104dd565b9060443561072e816104dd565b3461049957611b9336611b53565b5f54600881901c60ff1615939290849081611c4e575b8115611c2e575b501561049957611bd49284611bcb600160ff195f5416175f55565b611c1757613279565b611bda57005b611be861ff00195f54165f55565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1005b611c2961010061ff00195f5416175f55565b613279565b303b15915081611c40575b505f611bb0565b6001915060ff16145f611c39565b600160ff8216109150611ba9565b34610499575f3660031901126104995760206040517f8d1994e2bbbd77564cdca06dd819e7ee2a5efa06c80dcb59a4a7b6e39edc538f8152f35b34610499575f36600319011261049957602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610499575f36600319011261049957602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610499575f36600319011261049957611d2e6144cb565b5f6001600160a01b036033546001600160a01b03198116603355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b8015150361049957565b34610499576020366003190112610499577fe88463c2f254e2b070013a2dc7ee1e099f9bc00534cbdf03af551dc26ae492196020600435611db981611d6f565b611dc1613b42565b611dc96138f0565b15156108cf80547fffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff60e81b8460e81b169116179055604051908152a1600160c955005b34610499576020366003190112610499576020611e2c600435613350565b604051908152f35b34610499575f3660031901126104995760206040517f000000000000000000000000000000000000000000000000000000000000000015158152f35b61016036600319011261049957600435611e89816104dd565b60243590611e96826104dd565b604435611ea2816104dd565b60643590611eaf826104dd565b60e435611ebb816104dd565b6101043590611ec98261053a565b6101243592611ed78461053a565b610144359667ffffffffffffffff881161049957611efc610018983690600401610d01565b97909660c4359360a435936084359361338b565b61018036600319011261049957600435611f29816104dd565b60243590611f36826104dd565b604435611f42816104dd565b60643590611f4f826104dd565b60e435611f5b816104dd565b61010435611f688161053a565b6101243591611f768361053a565b611f7e610548565b93610164359767ffffffffffffffff891161049957611fa4610018993690600401610d01565b98909760c4359360a43593608435936133ad565b34610499576060366003190112610499576020611e2c600435611fda816104dd565b60443590602435906134c8565b346104995760603660031901126104995767ffffffffffffffff60243581811161049957612019903690600401610d01565b9160443590811161049957612032903690600401610d01565b90604051936020850194806120494684888a6134fe565b039561205d601f1997888101845283610637565b60043591519020036120f0575f9461208c6120ae93612083876120ba958a990190612b02565b9581019061351b565b519360405193849160208301966337bfd2c960e21b88523391602485016135e3565b03908101835282610637565b5190305af46120c76131d1565b90156120cf57005b60405163b8fe37a760e01b81529081906120ec906004830161286f565b0390fd5b604051630f0c8f4760e11b8152600490fd5b346104995760203660031901126104995760043561211e613b42565b6121266138f0565b61212f81612dd9565b612167576001815f80935501557f7c1af0646963afc3343245b103731965735a893347bfa0d58a5dc77a77ae691c5f80a2600160c955005b634e487b7160e01b5f525f60045260245ffd5b6101a036600319011261049957610124356121948161053a565b610144356121a18161053a565b61016435916121af8361053a565b610184359267ffffffffffffffff8411610499576121d4610018943690600401610d01565b9390926101043560e43560c43560a435608435606435604435602435600435613605565b34610499575f3660031901126104995760206001600160a01b0360335416604051908152f35b34610499575f3660031901126104995760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346104995760e03660031901126104995767ffffffffffffffff60043581811161049957612293903690600401610f76565b60a435828111610499576122ab903690600401610d01565b60c492919235938411610499576122c9610018943690600401610d01565b9390926084359060643590604435906024359061367d565b34610499576122ef36611b53565b909160ff5f5460081c161561049957612325906108cf9063ffffffff60c01b1963ffffffff60c01b83549260c01b169116179055565b60405161233181610575565b6009815260208101926820a1a927a9a996ab1960b91b8452640312e302e360dc1b602060405161236081610575565b60058152015260ff5f5460081c161561049957610018936123bc925190206104e3557f06c015bd22b4c69690933c1058878ebdfef31f9aaae40bbe86d8a09fe1b2972c6104e4556123af6148ea565b6123b76148f9565b61490d565b614967565b34610499576020366003190112610499577f2d5b62420992e5a4afce0e77742636ca2608ef58289fd2e1baa5161ef6e7e41e602060043561240181611d6f565b612409613b42565b6124116138f0565b15156108cf80547fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff60e01b8460e01b169116179055604051908152a1600160c955005b34610499575f366003190112610499576020604051468152f35b34610499575f36600319011261049957602063ffffffff6108cf5460c01c16604051908152f35b34610499576040366003190112610499576004356024356124b782614d3a565b6001600160a01b0382165f526108d76020526124e660405f20336001600160a01b03165f5260205260405f2090565b54918215612589575f61252d336125176124ff85613e4c565b6001600160a01b03165f526108d760205260405f2090565b906001600160a01b03165f5260205260405f2090565b556125598361254a61253e84613e4c565b6001600160a01b031690565b61255385613e4c565b906149c1565b60405192835233927f6c172ea51018fb2eb2118f3f8a507c4df71eb519b8c0052834dc3c920182fef490602090a4005b6040516336542bf760e21b8152600490fd5b6020808201906020835283518092526040830192602060408460051b8301019501935f915b8483106125d05750505050505090565b90919293949584806125ee600193603f198682030187528a5161144b565b98019301930191949392906125c0565b346104995761260c366113fb565b9061261682613766565b915f5b81811061262e5760405180611541868261259b565b5f8061263b8385876131ad565b9061264b604051809381936131c4565b0390305af46126586131d1565b901561267e579060019161266c8287613199565b526126778186613199565b5001612619565b6044815110610499578060046104999201516024809183010191016137af565b6101808060031936011261049957610104356126b98161053a565b61012435916126c78361053a565b61014435926126d58461053a565b6101643567ffffffffffffffff8111610499576126f6903690600401610d01565b6126fe6138f0565b6108cf549260ff8460e81c166107c057610cf7966127c36111ff926127b563ffffffff6127d19860c01c16996127596127368c61380e565b6108cf9063ffffffff60c01b1963ffffffff60c01b83549260c01b169116179055565b61276161069a565b9a6004358c5260243560208d015260443560408d015260643560608d015260843560808d015260a43560a08d015260c43560c08d015260e43560e08d01526101008c01526101208b019063ffffffff169052565b63ffffffff16610140890152565b63ffffffff16610160870152565b90820152614658565b346104995760206128186001600160a01b036127f536610872565b91165f526108d7835260405f20906001600160a01b03165f5260205260405f2090565b54604051908152f35b34610499575f3660031901126104995760206001600160a01b036108ce5416604051908152f35b6040516020810181811067ffffffffffffffff821117610591576040525f8152905f368137565b90602061072e92818152019061144b565b34610499575f3660031901126104995761154161289b612848565b60405191829160208352602083019061144b565b346104995760c03660031901126104995760043560243567ffffffffffffffff606435604435608435838111610499576128ed903690600401610d01565b60a494919435918211610499577f45e04bc8f121ba11466985789ca2822a91109f31bb8ac85504a37b7eaf873c269461292d61297c933690600401610d01565b9290916129386138f0565b6129418a614d3a565b612970898b89896129533688886106dd565b9261295f368b8b6106dd565b946001600160a01b034692166144df565b60405196879687613246565b0390a3600160c955005b34610499575f3660031901126104995760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610499575f3660031901126104995760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b34610499576020366003190112610499576004355f526108d6602052602060405f2054604051908152f35b34610499575f36600319011261049957602060405163ffffffff8152f35b91906101808382031261049957612a61610679565b92803584526020810135602085015260408101356040850152606081013560608501526080810135608085015260a081013560a085015260c081013560c085015260e081013560e08501526101008082013590850152610120612ac5818301610556565b90850152610140612ad7818301610556565b90850152610160918282013567ffffffffffffffff811161049957612afc9201610713565b90830152565b9060208282031261049957813567ffffffffffffffff81116104995761072e9201612a4c565b346104995760203660031901126104995760043567ffffffffffffffff811161049957611e2c61117d6020923690600401612a4c565b34610499575f36600319011261049957602060ff6108cf5460e01c166040519015158152f35b34610499575f3660031901126104995760206040516ec097ce7bc90715b34b9f10000000008152f35b34610499576020366003190112610499576107b9600435612bcd816104dd565b612bd5613b42565b6123b76138f0565b346104995760603660031901126104995760043567ffffffffffffffff811161049957612c0e903690600401612a4c565b612c166138f0565b60ff6108cf5460e01c16612cc05761014081015163ffffffff4281169116101580612ca1575b612c8f5780612c4d610cf792613823565b60c082015160208301519061016084015192612c67610659565b948552602085015260408401526060830152608082015260243560a082015260443590614227565b604051630c3a9b9d60e41b8152600490fd5b50612caf6040820151613e4c565b6001600160a01b0316331415612c3c565b604051633d90fc5560e11b8152600490fd5b34610499575f3660031901126104995760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b610160806003193601126104995761010435612d308161053a565b61012435612d3d8161053a565b6101443567ffffffffffffffff811161049957612d5e903690600401610d01565b63ffffffff94612d718642169586613373565b93612d7a6138f0565b6108cf549160ff8360e81c166107c057612dad612dba966127b5610cf79a6111ff9660c01c16996127596127368c61380e565b86019063ffffffff169052565b610180820152614658565b634e487b7160e01b5f52603260045260245ffd5b6108d0908154811015612e13576003915f52027f6404fdb155c59a831d14e4acb0957279f1e3a856a4513ac322398c7bc9a5781b01905f90565b612dc5565b34610499576020366003190112610499576004356108d05481101561049957612e42604091612dd9565b506001815491015482519182526020820152f35b3461049957602036600319011261049957600435612e73816104dd565b612e7b6144cb565b6001600160a01b0381161561049957610018906145bb565b34610499576020366003190112610499576004355f52610cbe602052602060ff60405f2054166040519015158152f35b34610499576020366003190112610499576107b9600435612ee3816104dd565b612eeb613b42565b6123bc6138f0565b9190612efd6138f0565b60208101918251460361300f57612f25612f2991836001612f1d88612dd9565b500154613b77565b1590565b612ffd577ff4ad92585b1bc117fbdd644990adf0827bc4c95baeae8a23322af807b6d0020e6060820192612f6a612f64855163ffffffff1690565b86613c09565b8051612ff08451926040860195612fd5612fc7612fb6895196612f918c5163ffffffff1690565b976080860198612fa88a516001600160a01b031690565b9160a088019b8c5194613c6b565b925193519851995163ffffffff1690565b94516001600160a01b031690565b945163ffffffff9586604051978897169b1699339487613090565b0390a46104f9600160c955565b60405163582f497d60e11b8152600490fd5b604051633d23e4d160e11b8152600490fd5b9081518082526020808093019301915f5b828110613040575050505090565b835185529381019392810192600101613032565b9081518082526020808093019301915f5b828110613073575050505090565b83516001600160a01b031685529381019392810192600101613065565b94969591936130b260a0956130d093885260c0602089015260c0880190613021565b906001600160a01b0380951660408801528682036060880152613054565b951515608085015216910152565b90816020910312610499575190565b6040513d5f823e3d90fd5b919091604081840312610499578035613110816104dd565b92602082013567ffffffffffffffff81116104995761072e9201610713565b3561072e816104dd565b3561072e8161053a565b903590601e1981360301821215610499570180359067ffffffffffffffff82116104995760200191813603831361049957565b634e487b7160e01b5f52602160045260245ffd5b6003111561319457565b613176565b8051821015612e135760209160051b010190565b90821015612e13576114269160051b810190613143565b908092918237015f815290565b3d156131fb573d906131e2826106c1565b916131f06040519384610637565b82523d5f602084013e565b606090565b634e487b7160e01b5f52601160045260245ffd5b9190820391821161322157565b613200565b908060209392818452848401375f828201840152601f01601f1916010190565b9492909361326b9261072e979587526020870152608060408701526080860191613226565b926060818503910152613226565b91909160ff5f5460081c161561049957613292336145bb565b60ff5f5460081c1615610499576132c6906108cf9063ffffffff60c01b1963ffffffff60c01b83549260c01b169116179055565b6040516132d281610575565b6009815260208101926820a1a927a9a996ab1960b91b8452640312e302e360dc1b602060405161330181610575565b60058152015260ff5f5460081c1615610499576104f9936123bc925190206104e3557f06c015bd22b4c69690933c1058878ebdfef31f9aaae40bbe86d8a09fe1b2972c6104e4556123af6148ea565b604051602081019182525f60408201526040815261336d816105c7565b51902090565b91909163ffffffff8080941691160191821161322157565b96949290916104f99b9a99989694926133ab63ffffffff42169889613373565b985b9593919b999897969492909b6133c16138f0565b6108cf549660ff8860e81c166107c0578760c01c63ffffffff166133e49061380e565b61340b906108cf9063ffffffff60c01b1963ffffffff60c01b83549260c01b169116179055565b61341361069a565b9d6001600160a01b038f921682526001600160a01b031690602001526001600160a01b031660408d01526001600160a01b031660608c015260808b015260a08a015260c08901526001600160a01b031660e088015260c01c63ffffffff1661010087015261012086019061348c919063ffffffff169052565b63ffffffff1661014085015263ffffffff1661016084015236906134af926106dd565b6101808201526134be90614658565b6104f9600160c955565b916040519160208301936bffffffffffffffffffffffff199060601b168452603483015260548201526054815261336d816105e3565b93929160209161351691604087526040870191613226565b930152565b9081602091031261049957604051906020820182811067ffffffffffffffff8211176105915760405235815290565b61072e9161018090825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e082015261010080840151908201526135bf610120808501519083019063ffffffff169052565b6101408381015163ffffffff1690820152816101608094015193820152019061144b565b6135fb6040929594939560608352606083019061354a565b9460208201520152565b9c9a999897969594939291909661361a6138f0565b60ff6108cf5460e81c166107c057613633908e336134c8565b96604051809e61364282610596565b81526020015260408d015260608c015260808b015260a08a015260c089015260e088015261010087015263ffffffff1661012086015261348c565b97929095939196949761368e6138f0565b60ff6108cf5460e01c16612cc0576136a96101408201613139565b63ffffffff8042169116101580613747575b612c8f57613730613742966137286134be9b6136da61117d3687612a4c565b9a6136e3610659565b9b6136ee3688612a4c565b8d5260208d01528660408d01528760608d015261370c368b846106dd565b60808d015260a08c01526137208535613e4c565b9836916106dd565b9536916106dd565b9461010060e0830135920135906144df565b614227565b506137556040820135613e4c565b6001600160a01b03163314156136bb565b90613770826109b2565b61377d6040519182610637565b828152809261378e601f19916109b2565b01905f5b82811061379e57505050565b806060602080938501015201613792565b6020818303126104995780519067ffffffffffffffff8211610499570181601f820112156104995780516137e2816106c1565b926137f06040519485610637565b818452602082840101116104995761072e916020808501910161142a565b63ffffffff8091169081146132215760010190565b60405161336d81613840602082019460408652606083019061354a565b46604083015203601f198101835282610637565b91909161385f6138f0565b60ff6108cf5460e01c16612cc05761014081015163ffffffff42811691161015806138d1575b612c8f576134be9261389682613823565b60c0830151602084015190610160850151926138b0610659565b958652602086015260408501526060840152608083015260a0820152614227565b506138df6040820151613e4c565b6001600160a01b0316331415613885565b600260c9541461049957600260c955565b9261072e9695929491946101409585525f60208601526040850152606084015263ffffffff809116608084015260a08301525f60c083015260e08201525f61010082015281610120820152019061144b565b9193949690959660070b906706f05b59d3b2000061397083614a09565b1015613b30576ec097ce7bc90715b34b9f10000000008411613b1e5763ffffffff9361399e858a1642613214565b857f00000000000000000000000000000000000000000000000000000000000000001610613b0c576108cf5460c01c63ffffffff16986139e06127368b61380e565b6001600160a01b039586807f00000000000000000000000000000000000000000000000000000000000000001698169288841480613b03575b15613ac757803403613ab557883b15610499575f6004996040519a8b8092630d0e30db60e41b825234905af19889156109ad57613a84613a97978a927f32ed1a409ef04c7b0227189c3a103dc5ac10e775a15b785dcc510201f7c25ad39c613a9c575b505b83614a57565b92604051998a99169d169b169387613901565b0390a4565b80613aa9613aaf926105b3565b8061048f565b5f613a7c565b604051636452a35d60e01b8152600490fd5b7f32ed1a409ef04c7b0227189c3a103dc5ac10e775a15b785dcc510201f7c25ad3985087613a84613a9797613afe8430338a614a18565b613a7e565b50341515613a19565b60405163f722177f60e01b8152600490fd5b60405163622db5a960e11b8152600490fd5b60405163284f109760e21b8152600490fd5b60ff610cbf541615613b5057565b604051631147e02f60e11b8152600490fd5b90816020910312610499575161072e816104dd565b61072e9291604051613c0081613bf2602082019460208652805160408401526020810151606084015260a0613bbc604083015160c06080870152610100860190613021565b606083015163ffffffff168583015260808301516001600160a01b031660c0860152910151838203603f190160e0850152613054565b03601f198101835282610637565b51902091614a8d565b613c14600291612dd9565b500162ffffff8260081c16805f5281602052600160ff60405f205494161b8080941614613c4c575f5260205260405f20908154179055565b60405163954476d960e01b8152600490fd5b9190820180921161322157565b91959495939092935f9681519081815103613e3a5781613cea575b50505082613c95575b50505050565b6001600160a01b0381613cc97ffa7fa7cf6d7dde5f9be65a67e6a1a747e7aa864dcd2d793353c722d80fbbb3579386614b50565b6040805195865233602087015291169463ffffffff1693a45f808080613c8f565b604080516370a0823160e01b81523060048083019190915291906020816024816001600160a01b038b165afa9081156109ad575f91613e1b575b505f805b868110613d39575050505050613c86565b613d438189613199565b51613d51575b600101613d28565b90613d6790613d60838a613199565b5190613c5e565b90828211613e0b57613da1612f25613d8f613d82848a613199565b516001600160a01b031690565b613d99848c613199565b51908c614ade565b15613d49579c5087613e01613df98f613de4613d82613ddd613dc3848f613199565b51966001600160a01b03165f526108d760205260405f2090565b928b613199565b6001600160a01b03165f5260205260405f2090565b918254613c5e565b905560019c613d49565b50505051632ddaa83160e11b8152fd5b613e34915060203d602011610f4457610f358183610637565b5f613d24565b6040516319a5316760e31b8152600490fd5b6001600160a01b0390613e5e81614d3a565b1690565b91612f2590613edb92845160408096015191865191613e80836105c7565b8252613c00613e9b6020840192468452898501958652612dd9565b5054938851928391613ec06020840196602088525160608d86015260a085019061354a565b9151606084015251608083015203601f198101835282610637565b613ee25750565b5163582f497d60e11b8152600490fd5b613efb8261318a565b52565b9a989693919c9b9997959492909c6101e08c019d8c5260208c015260408b015260608a0152608089015263ffffffff80921660a08901521660c087015260e08601526101008501526101208401526101408301528051610160830152602081015161018083015260408101516101a08301526060015190613f7e8261318a565b6101c00152565b9061072e94936080936001600160a01b0380931684526020840152166040820152816060820152019061144b565b905f82516101208101613fca815163ffffffff1690565b63ffffffff42911610614215576020850151906002613ff2835f526108d660205260405f2090565b54146142035761400c86925f526108d660205260405f2090565b6002905560608301519060808401519160a08501519260c0860151918560a0810151938860e081015195610100820151975161404b9063ffffffff1690565b61014083015163ffffffff166040840151918451936020860151956101600151614074906144b6565b966060890151986080019e8f5161408a906144b6565b9060400151906140986106a7565b9a8b5260208b015260408a0152600260608a01526040519d8e9b6140bc9b8d613efe565b037f44b559f101f8fbcc8a0ea43fa91a05a729a5ea6e14a7c75aa750374690137208905f94a460808201516140f090613e4c565b906040860151956060015161410490613e4c565b926080015161411290613e4c565b6001600160a01b03919082167f00000000000000000000000000000000000000000000000000000000000000008316036141ee57846141db575b61415887838616614d55565b519283511515806141d1575b614172575b50505050509050565b1690813b156141cd57836141a0959660405196879586948593633a5be8cb60e01b8552339160048601613f85565b03925af180156109ad576141ba575b808080808594614169565b80613aa96141c7926105b3565b5f6141af565b8380fd5b50803b1515614164565b6141e9873033858716614a18565b61414c565b5f94506141fe87858585166149c1565b614158565b604051630479306360e51b8152600490fd5b60405163d642b7d960e01b8152600490fd5b805191610120830161423d815163ffffffff1690565b63ffffffff429116106142155760208301516001614264825f526108d660205260405f2090565b5403614481576001905b6002614283825f526108d660205260405f2090565b54146142035761429f6142a5915f526108d660205260405f2090565b60029055565b7f44b559f101f8fbcc8a0ea43fa91a05a729a5ea6e14a7c75aa75037469013720860608601516080870151906143728760a08a0151958a60c08101519760a08401519860e0830151996143026101008501519c5163ffffffff1690565b61014085015163ffffffff169160408601519386519561436661432e61016060208b01519a01516144b6565b9960608c01519b604061434460808301516144b6565b9101519060206143526106a7565b9e8f528e015260408d015260608c01613ef2565b6040519c8d9c8d613efe565b0390a46143826080830151613e4c565b9160408201519160806143a48161439c6060850151613e4c565b940151613e4c565b6001600160a01b03929083167f000000000000000000000000000000000000000000000000000000000000000084160361446e576143e6853033868a16614a18565b6143f285848616614d55565b0151918251151580614464575b61440b575b5050505050565b16803b1561049957614439935f809460405196879586948593633a5be8cb60e01b8552339160048601613f85565b03925af180156109ad57614451575b80808080614404565b80613aa961445e926105b3565b5f614448565b50803b15156143ff565b61447c858533868a16614a18565b6143f2565b5f9061426e565b5f8091602081519101305af461449c6131d1565b50156144a457565b6040516318cecad560e01b8152600490fd5b805190816144c45750505f90565b6020012090565b6001600160a01b0360335416330361049957565b93926042936104f9979660208151910120906040519260208401947f8d1994e2bbbd77564cdca06dd819e7ee2a5efa06c80dcb59a4a7b6e39edc538f86526040850152856060850152608084015260a083015260c082015260c08152614544816105ff565b519020906104e354906104e454906040519160208301937fc2f8787176b8ac6bf7215b4adcc1e069bf4ab82d9ab1df05a57a91d425935b6e85526040840152606083015260808201526080815261459a8161061b565b519020906040519161190160f01b8352600283015260228201522090614fd4565b603354906001600160a01b0380911691826001600160a01b0319821617603355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b969261072e9a9996949198959261014099895260208901526040880152606087015263ffffffff928380921660808801521660a08601521660c084015260e083015261010082015281610120820152019061144b565b6146628151614d3a565b6101208101614681614678825163ffffffff1690565b63ffffffff1690565b8042109081156148b1575b50613b0c576101408201916146a5835163ffffffff1690565b9063ffffffff91826146d9817f00000000000000000000000000000000000000000000000000000000000000001642613c5e565b91161161489f5761016081015163ffffffff16918083168061485a575b505060408101908151916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001680931480614851575b156148045760808201513403613ab557823b15610499575f60049360405194858092630d0e30db60e41b825234905af19283156109ad577f32ed1a409ef04c7b0227189c3a103dc5ac10e775a15b785dcc510201f7c25ad3936147f1575b505b51613a9760608301519260808101519060a081015160c0820151976147d06147c56101008501519b5163ffffffff1690565b9b5163ffffffff1690565b83519b60208501519361018060e0870151960151966040519a8b9a8b614602565b80613aa96147fe926105b3565b5f614791565b915034613ab5578161484c61483d61253e7f32ed1a409ef04c7b0227189c3a103dc5ac10e775a15b785dcc510201f7c25ad39551613e4c565b60808401519030903390614a18565b614793565b50341515614733565b6301e13380101561488a575b5060e081015115614878575f806146f6565b60405163495d907f60e01b8152600490fd5b916148989192421690613373565b905f614866565b60405163582e388960e01b8152600490fd5b6148bc915042613214565b63ffffffff7f000000000000000000000000000000000000000000000000000000000000000016105f61468c565b60ff5f5460081c161561049957565b60ff5f5460081c161561049957600160c955565b6001600160a01b03168015614955576108cd816001600160a01b03198254161790557fa9e8c42c9e7fca7f62755189a16b2f5314d43d8fb24e91ba54e6d65f9314e8495f80a2565b60405163ba97b39d60e01b8152600490fd5b6001600160a01b031680156149af576108ce816001600160a01b03198254161790557fa73e8909f8616742d7fe701153d82666f7b7cd480552e23ebb05d358c22fd04e5f80a2565b604051635b03092b60e11b8152600490fd5b60405163a9059cbb60e01b60208201526001600160a01b03909216602483015260448201929092526104f991614a0482606481015b03601f198101845283610637565b6150c7565b5f8112614a135790565b5f0390565b90926104f993604051936323b872dd60e01b60208601526001600160a01b038092166024860152166044840152606483015260648252614a048261061b565b90670de0b6b3a7640000915f82840392128383128116908484139015161761322157818102918183041490151715613221570490565b929091905f915b8451831015614ad657614aa78386613199565b519081811015614ac5575f52602052600160405f205b920191614a94565b905f52602052600160405f20614abd565b915092501490565b60405163a9059cbb60e01b60208281019182526001600160a01b039094166024830152604482019490945290925f91614b1a8160648101613bf2565b519082855af1903d5f519083614b31575b50505090565b91925090614b4657503b15155b5f8080614b2b565b6001915014614b3e565b91906001600160a01b0380614b77836001600160a01b03165f526108d860205260405f2090565b5416817f000000000000000000000000000000000000000000000000000000000000000016151580614d0d575b15614bc957505050906104f990614bc46108ce546001600160a01b031690565b61514e565b8015614cfb57816108ce541691614bde615423565b50614be761546a565b50614bf0612848565b614bf8612848565b614c00612848565b91614c096106b4565b63ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152956020870152604098808a8801526060870152608086015260a085015260c0840152855193633b6f743b60e01b8552868580614c71876004830161552b565b0381865afa9485156109ad575f95614ccc575b5084513410614cbb576104f9959650614c9e855134613214565b80614cab575b50166155e1565b614cb590336153fb565b5f614ca4565b865163557a94ff60e11b8152600490fd5b614ced919550873d8911614cf4575b614ce58183610637565b8101906154aa565b935f614c84565b503d614cdb565b60405163d623472560e01b8152600490fd5b50817f00000000000000000000000000000000000000000000000000000000000000001682841614614ba4565b60a01c614d4357565b6040516379ec0ed760e11b8152600490fd5b906001600160a01b03808316803b158015614e13575b15614de657507f00000000000000000000000000000000000000000000000000000000000000001691823b1561049957604051632e1a7d4d60e01b815260048101839052925f908490602490829084905af19283156109ad576104f993614dd3575b506153fb565b80613aa9614de0926105b3565b5f614dcd565b906104f993507f0000000000000000000000000000000000000000000000000000000000000000166149c1565b50803b614e1f816106c1565b614e2c6040519182610637565b81815260208101915f83853c51905162ffffff60e81b908181169260038110614e5f575b50501661ef0160f01b14614d6b565b829350829060030360031b1b1616905f80614e50565b614e7e81614f91565b6001600160a01b0381167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590614f39575b614ebf575050565b5f80614f36937f206661696c65640000000000000000000000000000000000000000000000000060408051614ef3816105c7565b602781527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60208201520152602081519101845af4614f306131d1565b916158ee565b50565b505f614eb7565b614f4981614f91565b6001600160a01b0381167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590614f8957614ebf575050565b506001614eb7565b803b15610499576001600160a01b037f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc91166001600160a01b0319825416179055565b614fde8383615721565b60058195929510156131945715938461509c575b508315615016575b5050501561500457565b60405163938a182160e01b8152600490fd5b5f92935090829160405161504e81613bf26020820194630b135d3f60e11b998a8752602484015260406044840152606483019061144b565b51915afa9061505b6131d1565b8261508e575b82615071575b50505f8080614ffa565b615086919250602080825183010191016130de565b145f80615067565b915060208251101591615061565b6001600160a01b0383811691161493505f614ff2565b90816020910312610499575161072e81611d6f565b905f806001600160a01b0361511e9416927f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564602060405161510781610575565b818152015260208151910182855af1614f306131d1565b8051908115918215615134575b50501561049957565b61514792506020809183010191016150b2565b5f8061512b565b906001600160a01b038092167f000000000000000000000000000000000000000000000000000000000000000090837f000000000000000000000000000000000000000000000000000000000000000016936151ab84868561584a565b604094604051926332dd704760e21b84526020956004948781600481875afa9687156109ad5788915f986153da575b506040516352b7631960e11b81529086166001600160a01b03811660048301529097909588916024918391165afa9586156109ad575f966153bb575b5095867f0000000000000000000000000000000000000000000000000000000000000000975b61524b57505050505050505050565b868111156153b557865b881561530d57843b15610499578951634701287760e11b815287810182815263ffffffff7f0000000000000000000000000000000000000000000000000000000000000000166020820152604081018690526001600160a01b03881660608201525f6080820181905260a082018190526107d060c0830152919391908490819060e0010381838a5af19283156109ad576152f4936152fa575b50613214565b8061523c565b80613aa9615307926105b3565b5f6152ee565b89516337e9a82760e11b815287810182815263ffffffff7f0000000000000000000000000000000000000000000000000000000000000000166020820152604081018690526001600160a01b038816606082015290929084908490819060800103815f8a5af19283156109ad576152f4936153885750613214565b6153a790853d87116153ae575b61539f8183610637565b81019061570d565b505f6152ee565b503d615395565b80615255565b6153d3919650873d8911610f4457610f358183610637565b945f615216565b869198506153f490833d85116109a6576109988183610637565b97906151da565b814710610499575f8080936001600160a01b038294165af161541b6131d1565b501561049957565b6040519060e0820182811067ffffffffffffffff82111761059157604052606060c0835f81525f60208201525f60408201525f838201528260808201528260a08201520152565b6040519061547782610575565b5f6020838281520152565b91908260409103126104995760405161549a81610575565b6020808294805184520151910152565b906040828203126104995761072e91615482565b61072e9163ffffffff825116815260208201516020820152604082015160408201526060820151606082015260c061551a615508608085015160e0608086015260e085019061144b565b60a085015184820360a086015261144b565b9201519060c081840391015261144b565b919060206135165f926040865260408601906154be565b519067ffffffffffffffff8216820361049957565b919082810360c08112610499576080136104995761072e90608060405161557d816105c7565b8551815261558d60208701615542565b602082015261559f8360408801615482565b60408201529401615482565b9193926001600160a01b039060206155cd6060946080875260808701906154be565b968051828701520151604085015216910152565b918351927f000000000000000000000000000000000000000000000000000000000000000084116156fb574784116156e95760208501516156d7576001600160a01b039461565d9461563f60c0956040860151988991168095615752565b60405180968195829463c7c7f5b360e01b84523091600485016155ab565b03925af19081156109ad575f916156a6575b506020810151820361569457510361568357565b604051623c548b60ea1b8152600490fd5b604051631bfc3cb560e11b8152600490fd5b6156c8915060c03d60c0116156d0575b6156c08183610637565b810190615557565b90505f61566f565b503d6156b6565b604051630e282ec960e21b8152600490fd5b60405163a6226f8560e01b8152600490fd5b604051631754d7a960e01b8152600490fd5b908160209103126104995761072e90615542565b9060418151145f146157495761142691602082015190606060408401519301515f1a90615917565b50505f90600290565b60405163095ea7b360e01b602082018181526001600160a01b0385166024840152604480840196909652948252939092601f1991615791606486610637565b5f806001600160a01b0386169287519082855af1906157ae6131d1565b82615818575b508161580d575b50156157c8575050505050565b60405160208101959095526001600160a01b031660248501525f604485015261580393614a04916157fd9082606481016120ae565b826150c7565b5f80808080614404565b90503b15155f6157bb565b80519192508115918215615830575b5050905f6157b4565b61584392506020809183010191016150b2565b5f80615827565b6044919260206001600160a01b0360405194858092636eb1769f60e11b8252306004830152808916602483015286165afa9283156109ad575f936158cd575b5082018092116132215760405163095ea7b360e01b60208201526001600160a01b03909316602484015260448301919091526104f99190614a0482606481016149f6565b6158e791935060203d602011610f4457610f358183610637565b915f615889565b9015615908578151156158ff575090565b3b156104995790565b50805190811561049957602001fd5b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411615987576020935f9360ff60809460405194855216868401526040830152606082015282805260015afa156109ad575f516001600160a01b0381161561597f57905f90565b505f90600190565b505050505f9060039056fea26469706673582212201f3e3c43e1354d6f81bd1b4bf2f4b5b44e3ebfbbc4221c45c3c1ea68ec09a16564736f6c63430008170033", From 4ea0428ee557d1ffbbe0d20f7895053f23600778 Mon Sep 17 00:00:00 2001 From: bennett Date: Tue, 23 Sep 2025 09:44:15 -0500 Subject: [PATCH 2/4] package Signed-off-by: bennett --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 61a74e87f..9223f2387 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@across-protocol/contracts", - "version": "4.1.8", + "version": "4.1.9", "author": "UMA Team", "license": "AGPL-3.0-only", "repository": { From 9801750d5159b03e88a31a0791ced4c81e79fdd1 Mon Sep 17 00:00:00 2001 From: bennett Date: Tue, 23 Sep 2025 09:55:06 -0500 Subject: [PATCH 3/4] update Signed-off-by: bennett --- deployments/README.md | 22 +++++++++++++++++---- deployments/deployments.json | 2 +- deployments/plasma/Universal_SpokePool.json | 6 +++--- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/deployments/README.md b/deployments/README.md index 2a266fb5b..7d12ac580 100644 --- a/deployments/README.md +++ b/deployments/README.md @@ -155,7 +155,21 @@ This is because this `deployments.json` file is used by bots in [`@across-protoc ## Lens mainnet (232) -| Contract Name | Address | -| ---------------- | ----------------------------------------------------------------------------------------------------------------------------------- | -| Lens_SpokePool | [0xb234cA484866c811d0e6D3318866F583781ED045](https://explorer.lens.xyz/address/0xb234cA484866c811d0e6D3318866F583781ED045#contract) | -| MulticallHandler | [0xc5939F59b3c9662377DdA53A08D5085b2d52b719](https://explorer.lens.xyz/address/0xc5939F59b3c9662377DdA53A08D5085b2d52b719) | +| Contract Name | Address | +| ---------------- | -------------------------------------------------------------------------------------------------------------------------- | +| Lens_SpokePool | [0xb234cA484866c811d0e6D3318866F583781ED045](https://explorer.lens.xyz/address/0xb234cA484866c811d0e6D3318866F583781ED045) | +| MulticallHandler | [0xc5939F59b3c9662377DdA53A08D5085b2d52b719](https://explorer.lens.xyz/address/0xc5939F59b3c9662377DdA53A08D5085b2d52b719) | + +## HyperEVM mainnet (999) + +| Contract Name | Address | +| ------------------- | ------------------------------------------------------------------------------------------------------------------------ | +| Universal_SpokePool | [0x35E63eA3eb0fb7A3bc543C71FB66412e1F6B0E04](https://hyperevmscan.io/address/0x35E63eA3eb0fb7A3bc543C71FB66412e1F6B0E04) | +| MulticallHandler | [0x5E7840E06fAcCb6d1c3b5F5E0d1d3d07F2829bba](https://hyperevmscan.io/address/0x5E7840E06fAcCb6d1c3b5F5E0d1d3d07F2829bba) | + +## Plasma mainnet (9745) + +| Contract Name | Address | +| ------------------- | ---------------------------------------------------------------------------------------------------------------------- | +| Universal_SpokePool | [0x50039fAEfebef707cFD94D6d462fE6D10B39207a](https://plasmascan.to/address/0x50039fAEfebef707cFD94D6d462fE6D10B39207a) | +| MulticallHandler | [0x5E7840E06fAcCb6d1c3b5F5E0d1d3d07F2829bba](https://plasmascan.to/address/0x5E7840E06fAcCb6d1c3b5F5E0d1d3d07F2829bba) | diff --git a/deployments/deployments.json b/deployments/deployments.json index 0aba5a1f6..7ebc0e86d 100644 --- a/deployments/deployments.json +++ b/deployments/deployments.json @@ -164,7 +164,7 @@ }, "9745": { "Helios": { "address": "0x7e63a5f1a8f0b4d0934b2f2327daed3f6bb2ee75", "blockNumber": 1552582 }, - "SpokePool": { "address": "0x9552a0a6624A23B848060AE5901659CDDa1f83f8", "blockNumber": 1709319 }, + "SpokePool": { "address": "0x50039fAEfebef707cFD94D6d462fE6D10B39207a", "blockNumber": 1710028 }, "SpokePoolVerifier": { "address": "0x3Fb9cED51E968594C87963a371Ed90c39519f65A", "blockNumber": 1619568 }, "SpokePoolPeriphery": { "address": "0xF1BF00D947267Da5cC63f8c8A60568c59FA31bCb", "blockNumber": 1628438 }, "MulticallHandler": { "address": "0x5E7840E06fAcCb6d1c3b5F5E0d1d3d07F2829bba", "blockNumber": 1619956 } diff --git a/deployments/plasma/Universal_SpokePool.json b/deployments/plasma/Universal_SpokePool.json index 1e3812233..f656a0109 100644 --- a/deployments/plasma/Universal_SpokePool.json +++ b/deployments/plasma/Universal_SpokePool.json @@ -1,5 +1,5 @@ { - "address": "0x9552a0a6624A23B848060AE5901659CDDa1f83f8", + "address": "0x50039fAEfebef707cFD94D6d462fE6D10B39207a", "abi": [ { "inputs": [ @@ -3278,9 +3278,9 @@ "0x0000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000", 30101, - "600000000000000000000" + "6000000000000000000000" ], - "numDeployments": 2, + "numDeployments": 3, "solcInputHash": "03f0774c8f215de67810f48bdf2a5cfe", "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_adminUpdateBufferSeconds\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_helios\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_hubPoolStore\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_wrappedNativeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_depositQuoteTimeBuffer\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_fillDeadlineBuffer\",\"type\":\"uint32\"},{\"internalType\":\"contract IERC20\",\"name\":\"_l2Usdc\",\"type\":\"address\"},{\"internalType\":\"contract ITokenMessenger\",\"name\":\"_cctpTokenMessenger\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_oftDstEid\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"_oftFeeCap\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AdminCallAlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AdminCallNotValidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AdminUpdateTooCloseToLastHeliosUpdate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyExecuted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClaimedMerkleLeaf\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DelegateCallFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DepositsArePaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DisabledRoute\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpiredFillDeadline\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FillsArePaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientSpokePoolBalanceToExecuteLeaf\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBytes32\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidChainId\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCrossDomainAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDepositorSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidExclusiveRelayer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidFillDeadline\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMerkleLeaf\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMerkleProof\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPayoutAdjustmentPct\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidQuoteTimestamp\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRelayerFeePct\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSlowFillRequest\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWithdrawalRecipient\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"LowLevelCallFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxTransferSizeExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueDoesNotMatchInputAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoRelayerRefundToClaim\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoSlowFillsInExclusivityWindow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEOA\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotExclusiveRelayer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotImplemented\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotTarget\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OFTFeeUnderpaid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OFTTokenMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OftFeeCapExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OftIncorrectAmountReceivedLD\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OftIncorrectAmountSentLD\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OftInsufficientBalanceForFee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OftLzFeeNotZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RelayFilled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SlotValueMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongERC7683OrderId\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"l2TokenAddress\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"refundAddress\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"ClaimedRelayerRefund\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"rootBundleId\",\"type\":\"uint256\"}],\"name\":\"EmergencyDeletedRootBundle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"originToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"EnabledDepositRoute\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountToReturn\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"refundAmounts\",\"type\":\"uint256[]\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"rootBundleId\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"leafId\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"l2TokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"refundAddresses\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"deferredRefunds\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"ExecutedRelayerRefundRoot\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"inputToken\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"outputToken\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"inputAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"outputAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"repaymentChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"originChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"depositId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"fillDeadline\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"exclusivityDeadline\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"exclusiveRelayer\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"relayer\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"depositor\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"messageHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"updatedRecipient\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"updatedMessageHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"updatedOutputAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum V3SpokePoolInterface.FillType\",\"name\":\"fillType\",\"type\":\"uint8\"}],\"indexed\":false,\"internalType\":\"struct V3SpokePoolInterface.V3RelayExecutionEventInfo\",\"name\":\"relayExecutionInfo\",\"type\":\"tuple\"}],\"name\":\"FilledRelay\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"inputToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"outputToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"inputAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"outputAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"repaymentChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"originChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"depositId\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"fillDeadline\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"exclusivityDeadline\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"exclusiveRelayer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"updatedRecipient\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"updatedMessage\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"updatedOutputAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum V3SpokePoolInterface.FillType\",\"name\":\"fillType\",\"type\":\"uint8\"}],\"indexed\":false,\"internalType\":\"struct V3SpokePoolInterface.LegacyV3RelayExecutionEventInfo\",\"name\":\"relayExecutionInfo\",\"type\":\"tuple\"}],\"name\":\"FilledV3Relay\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"inputToken\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"outputToken\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"inputAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"outputAmount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"depositId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"quoteTimestamp\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"fillDeadline\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"exclusivityDeadline\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"depositor\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"exclusiveRelayer\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"FundsDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"}],\"name\":\"PausedDeposits\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"}],\"name\":\"PausedFills\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"RelayedCallData\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"rootBundleId\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"relayerRefundRoot\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"slowRelayRoot\",\"type\":\"bytes32\"}],\"name\":\"RelayedRootBundle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"inputToken\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"outputToken\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"inputAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"outputAmount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"originChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"depositId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"fillDeadline\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"exclusivityDeadline\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"exclusiveRelayer\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"depositor\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"messageHash\",\"type\":\"bytes32\"}],\"name\":\"RequestedSlowFill\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"updatedOutputAmount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"depositId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"depositor\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"updatedRecipient\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"updatedMessage\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"depositorSignature\",\"type\":\"bytes\"}],\"name\":\"RequestedSpeedUpDeposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"updatedOutputAmount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"depositId\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"updatedRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"updatedMessage\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"depositorSignature\",\"type\":\"bytes\"}],\"name\":\"RequestedSpeedUpV3Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"inputToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"outputToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"inputAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"outputAmount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"originChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"depositId\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"fillDeadline\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"exclusivityDeadline\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"exclusiveRelayer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"RequestedV3SlowFill\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"messenger\",\"type\":\"address\"}],\"name\":\"SetOFTMessenger\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newWithdrawalRecipient\",\"type\":\"address\"}],\"name\":\"SetWithdrawalRecipient\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"SetXDomainAdmin\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountToReturn\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"leafId\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"l2TokenAddress\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"TokensBridged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"inputToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"outputToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"inputAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"outputAmount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"depositId\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"quoteTimestamp\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"fillDeadline\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"exclusivityDeadline\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"exclusiveRelayer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"V3FundsDeposited\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADMIN_UPDATE_BUFFER\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"EMPTY_MSG_BYTES\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"EMPTY_RELAYER\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"EMPTY_REPAYMENT_CHAIN_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HUB_POOL_STORE_CALLDATA_MAPPING_SLOT_INDEX\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INFINITE_FILL_DEADLINE\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_EXCLUSIVITY_PERIOD_SECONDS\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_TRANSFER_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OFT_DST_EID\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OFT_FEE_CAP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPDATE_BYTES32_DEPOSIT_DETAILS_HASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_initialDepositId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_crossDomainAdmin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_withdrawalRecipient\",\"type\":\"address\"}],\"name\":\"__SpokePool_init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"}],\"name\":\"adminExecuteMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cctpTokenMessenger\",\"outputs\":[{\"internalType\":\"contract ITokenMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cctpV2\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"chainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"l2TokenAddress\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"refundAddress\",\"type\":\"bytes32\"}],\"name\":\"claimRelayerRefund\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"crossDomainAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"depositor\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"inputToken\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"outputToken\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"inputAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"exclusiveRelayer\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"quoteTimestamp\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"fillDeadline\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"exclusivityParameter\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"originToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"int64\",\"name\":\"relayerFeePct\",\"type\":\"int64\"},{\"internalType\":\"uint32\",\"name\":\"quoteTimestamp\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"depositDeprecated_5947912356\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"originToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"int64\",\"name\":\"relayerFeePct\",\"type\":\"int64\"},{\"internalType\":\"uint32\",\"name\":\"quoteTimestamp\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"depositFor\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"depositor\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"inputToken\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"outputToken\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"inputAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"exclusiveRelayer\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"fillDeadlineOffset\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"exclusivityParameter\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"depositNow\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositQuoteTimeBuffer\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"inputToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"outputToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"inputAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"exclusiveRelayer\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"quoteTimestamp\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"fillDeadline\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"exclusivityParameter\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"depositV3\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"inputToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"outputToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"inputAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"exclusiveRelayer\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"fillDeadlineOffset\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"exclusivityParameter\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"depositV3Now\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rootBundleId\",\"type\":\"uint256\"}],\"name\":\"emergencyDeleteRootBundle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"}],\"name\":\"executeMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"rootBundleId\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amountToReturn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"refundAmounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint32\",\"name\":\"leafId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"l2TokenAddress\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"refundAddresses\",\"type\":\"address[]\"}],\"internalType\":\"struct SpokePoolInterface.RelayerRefundLeaf\",\"name\":\"relayerRefundLeaf\",\"type\":\"tuple\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"name\":\"executeRelayerRefundLeaf\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"depositor\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"exclusiveRelayer\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"inputToken\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"outputToken\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"inputAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"originChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"depositId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"fillDeadline\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"exclusivityDeadline\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"struct V3SpokePoolInterface.V3RelayData\",\"name\":\"relayData\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updatedOutputAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct V3SpokePoolInterface.V3SlowFill\",\"name\":\"slowFillLeaf\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"rootBundleId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"name\":\"executeSlowRelayLeaf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"executedMessages\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"originData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"fillerData\",\"type\":\"bytes\"}],\"name\":\"fill\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fillDeadlineBuffer\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"depositor\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"exclusiveRelayer\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"inputToken\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"outputToken\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"inputAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"originChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"depositId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"fillDeadline\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"exclusivityDeadline\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"struct V3SpokePoolInterface.V3RelayData\",\"name\":\"relayData\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"repaymentChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"repaymentAddress\",\"type\":\"bytes32\"}],\"name\":\"fillRelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"depositor\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"exclusiveRelayer\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"inputToken\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"outputToken\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"inputAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"originChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"depositId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"fillDeadline\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"exclusivityDeadline\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"struct V3SpokePoolInterface.V3RelayData\",\"name\":\"relayData\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"repaymentChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"repaymentAddress\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"updatedOutputAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"updatedRecipient\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"updatedMessage\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"depositorSignature\",\"type\":\"bytes\"}],\"name\":\"fillRelayWithUpdatedDeposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"fillStatuses\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"exclusiveRelayer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"inputToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"outputToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"inputAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"originChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"depositId\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"fillDeadline\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"exclusivityDeadline\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"struct V3SpokePoolInterface.V3RelayDataLegacy\",\"name\":\"relayData\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"repaymentChainId\",\"type\":\"uint256\"}],\"name\":\"fillV3Relay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"l2TokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundAddress\",\"type\":\"address\"}],\"name\":\"getRelayerRefund\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"}],\"name\":\"getSlotKey\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"depositor\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"depositNonce\",\"type\":\"uint256\"}],\"name\":\"getUnsafeDepositId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"depositor\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"exclusiveRelayer\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"inputToken\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"outputToken\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"inputAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"originChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"depositId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"fillDeadline\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"exclusivityDeadline\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"struct V3SpokePoolInterface.V3RelayData\",\"name\":\"relayData\",\"type\":\"tuple\"}],\"name\":\"getV3RelayHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"helios\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hubPoolStore\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_initialDepositId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_crossDomainAdmin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_withdrawalRecipient\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"numberOfDeposits\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"l2TokenAddress\",\"type\":\"address\"}],\"name\":\"oftMessengers\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"l2OftMessenger\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"pause\",\"type\":\"bool\"}],\"name\":\"pauseDeposits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"pause\",\"type\":\"bool\"}],\"name\":\"pauseFills\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pausedDeposits\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pausedFills\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"recipientCircleDomainId\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"relayerRefundRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"slowRelayRoot\",\"type\":\"bytes32\"}],\"name\":\"relayRootBundle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"relayerRefund\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"depositor\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"exclusiveRelayer\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"inputToken\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"outputToken\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"inputAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"originChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"depositId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"fillDeadline\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"exclusivityDeadline\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"struct V3SpokePoolInterface.V3RelayData\",\"name\":\"relayData\",\"type\":\"tuple\"}],\"name\":\"requestSlowFill\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"rootBundles\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"slowRelayRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"relayerRefundRoot\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newCrossDomainAdmin\",\"type\":\"address\"}],\"name\":\"setCrossDomainAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"messenger\",\"type\":\"address\"}],\"name\":\"setOftMessenger\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newWithdrawalRecipient\",\"type\":\"address\"}],\"name\":\"setWithdrawalRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"depositor\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"depositId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updatedOutputAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"updatedRecipient\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"updatedMessage\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"depositorSignature\",\"type\":\"bytes\"}],\"name\":\"speedUpDeposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"depositId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updatedOutputAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"updatedRecipient\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"updatedMessage\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"depositorSignature\",\"type\":\"bytes\"}],\"name\":\"speedUpV3Deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"tryMulticall\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct MultiCallerUpgradeable.Result[]\",\"name\":\"results\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"depositor\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"inputToken\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"outputToken\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"inputAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"exclusiveRelayer\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"depositNonce\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"quoteTimestamp\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"fillDeadline\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"exclusivityParameter\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"unsafeDeposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"usdcToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawalRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wrappedNativeToken\",\"outputs\":[{\"internalType\":\"contract WETH9Interface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"custom:security-contact\":\"bugs@across.to\",\"details\":\"This contract has one onlyOwner function to be used as an emergency fallback to execute a message to this SpokePool in the case where the light-client is not functioning correctly. The owner is designed to be set to a multisig contract on this chain.\",\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is changed.\"},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"__SpokePool_init(uint32,address,address)\":{\"params\":{\"_crossDomainAdmin\":\"Cross domain admin to set. Can be changed by admin.\",\"_initialDepositId\":\"Starting deposit ID. Set to 0 unless this is a re-deployment in order to mitigate relay hash collisions.\",\"_withdrawalRecipient\":\"Address which receives token withdrawals. Can be changed by admin. For Spoke Pools on L2, this will likely be the hub pool.\"}},\"adminExecuteMessage(bytes)\":{\"details\":\"This function will revert if the last Helios update was less than ADMIN_UPDATE_BUFFER seconds ago.\",\"params\":{\"_message\":\"The calldata to execute on this contract.\"}},\"chainId()\":{\"details\":\"Some L2s like ZKSync don't support the CHAIN_ID opcode so we allow the implementer to override this.\"},\"claimRelayerRefund(bytes32,bytes32)\":{\"params\":{\"l2TokenAddress\":\"Address of the L2 token to claim refunds for.\",\"refundAddress\":\"Address to send the refund to.\"}},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"deposit(bytes32,bytes32,bytes32,bytes32,uint256,uint256,uint256,bytes32,uint32,uint32,uint32,bytes)\":{\"details\":\"On the destination chain, the hash of the deposit data will be used to uniquely identify this deposit, so modifying any params in it will result in a different hash and a different deposit. The hash will comprise all parameters to this function along with this chain's chainId(). Relayers are only refunded for filling deposits with deposit hashes that map exactly to the one emitted by this contract.\",\"params\":{\"depositor\":\"The account credited with the deposit who can request to \\\"speed up\\\" this deposit by modifying the output amount, recipient, and message.\",\"destinationChainId\":\"The destination chain identifier. Must be enabled along with the input token as a valid deposit route from this spoke pool or this transaction will revert.\",\"exclusiveRelayer\":\"The relayer that will be exclusively allowed to fill this deposit before the exclusivity deadline timestamp. This must be a valid, non-zero address if the exclusivity deadline is greater than the current block.timestamp. If the exclusivity deadline is < currentTime, then this must be address(0), and vice versa if this is address(0).\",\"exclusivityParameter\":\"This value is used to set the exclusivity deadline timestamp in the emitted deposit event. Before this destination chain timestamp, only the exclusiveRelayer (if set to a non-zero address), can fill this deposit. There are three ways to use this parameter: 1. NO EXCLUSIVITY: If this value is set to 0, then a timestamp of 0 will be emitted, meaning that there is no exclusivity period. 2. OFFSET: If this value is less than MAX_EXCLUSIVITY_PERIOD_SECONDS, then add this value to the block.timestamp to derive the exclusive relayer deadline. Note that using the parameter in this way will expose the filler of the deposit to the risk that the block.timestamp of this event gets changed due to a chain-reorg, which would also change the exclusivity timestamp. 3. TIMESTAMP: Otherwise, set this value as the exclusivity deadline timestamp. which is the deadline for the exclusiveRelayer to fill the deposit.\",\"fillDeadline\":\"The deadline for the relayer to fill the deposit. After this destination chain timestamp, the fill will revert on the destination chain. Must be set before currentTime + fillDeadlineBuffer, where currentTime is block.timestamp on this chain or this transaction will revert.\",\"inputAmount\":\"The amount of input tokens to pull from the caller's account and lock into this contract. This amount will be sent to the relayer on their repayment chain of choice as a refund following an optimistic challenge window in the HubPool, less a system fee.\",\"inputToken\":\"The token pulled from the caller's account and locked into this contract to initiate the deposit. The equivalent of this token on the relayer's repayment chain of choice will be sent as a refund. If this is equal to the wrapped native token then the caller can optionally pass in native token as msg.value, as long as msg.value = inputTokenAmount.\",\"message\":\"The message to send to the recipient on the destination chain if the recipient is a contract. If the message is not empty, the recipient contract must implement handleV3AcrossMessage() or the fill will revert.\",\"outputAmount\":\"The amount of output tokens that the relayer will send to the recipient on the destination.\",\"outputToken\":\"The token that the relayer will send to the recipient on the destination chain. Must be an ERC20.\",\"quoteTimestamp\":\"The HubPool timestamp that is used to determine the system fee paid by the depositor. This must be set to some time between [currentTime - depositQuoteTimeBuffer, currentTime] where currentTime is block.timestamp on this chain or this transaction will revert.\",\"recipient\":\"The account receiving funds on the destination chain. Can be an EOA or a contract. If the output token is the wrapped native token for the chain, then the recipient will receive native token if an EOA or wrapped native token if a contract.\"}},\"depositDeprecated_5947912356(address,address,uint256,uint256,int64,uint32,bytes,uint256)\":{\"details\":\"DEPRECATION NOTICE: this function is deprecated and will be removed in the future. Please use deposit (under DEPOSITOR FUNCTIONS below) or depositV3 instead.Produces a FundsDeposited event with an infinite expiry, meaning that this deposit can never expire. Moreover, the event's outputToken is set to 0x0 meaning that this deposit can always be slow filled.\",\"params\":{\"amount\":\"Amount of tokens to deposit. Will be amount of tokens to receive less fees.\",\"destinationChainId\":\"Denotes network where user will receive funds from SpokePool by a relayer.\",\"message\":\"Arbitrary data that can be used to pass additional information to the recipient along with the tokens. Note: this is intended to be used to pass along instructions for how a contract should use or allocate the tokens.\",\"originToken\":\"Token to lock into this contract to initiate deposit.\",\"quoteTimestamp\":\"Timestamp used by relayers to compute this deposit's realizedLPFeePct which is paid to LP pool on HubPool.\",\"recipient\":\"Address to receive funds at on destination chain.\",\"relayerFeePct\":\"% of deposit amount taken out to incentivize a fast relayer.\"}},\"depositFor(address,address,address,uint256,uint256,int64,uint32,bytes,uint256)\":{\"details\":\"DEPRECATION NOTICE: this function is deprecated and will be removed in the future. Please use the other deposit or depositV3 instead.\",\"params\":{\"amount\":\"Amount of tokens to deposit. Will be amount of tokens to receive less fees.\",\"depositor\":\"Address who is credited for depositing funds on origin chain and can speed up the deposit.\",\"destinationChainId\":\"Denotes network where user will receive funds from SpokePool by a relayer.\",\"message\":\"Arbitrary data that can be used to pass additional information to the recipient along with the tokens. Note: this is intended to be used to pass along instructions for how a contract should use or allocate the tokens.\",\"originToken\":\"Token to lock into this contract to initiate deposit.\",\"quoteTimestamp\":\"Timestamp used by relayers to compute this deposit's realizedLPFeePct which is paid to LP pool on HubPool.\",\"recipient\":\"Address to receive funds at on destination chain.\",\"relayerFeePct\":\"% of deposit amount taken out to incentivize a fast relayer.\"}},\"depositNow(bytes32,bytes32,bytes32,bytes32,uint256,uint256,uint256,bytes32,uint32,uint32,bytes)\":{\"params\":{\"depositor\":\"The account credited with the deposit who can request to \\\"speed up\\\" this deposit by modifying the output amount, recipient, and message.\",\"destinationChainId\":\"The destination chain identifier. Must be enabled along with the input token as a valid deposit route from this spoke pool or this transaction will revert.\",\"exclusiveRelayer\":\"The relayer that will be exclusively allowed to fill this deposit before the exclusivity deadline timestamp.\",\"exclusivityParameter\":\"See identically named parameter in deposit() comments.\",\"fillDeadlineOffset\":\"Added to the current time to set the fill deadline, which is the deadline for the relayer to fill the deposit. After this destination chain timestamp, the fill will revert on the destination chain.\",\"inputAmount\":\"The amount of input tokens to pull from the caller's account and lock into this contract. This amount will be sent to the relayer on their repayment chain of choice as a refund following an optimistic challenge window in the HubPool, plus a system fee.\",\"inputToken\":\"The token pulled from the caller's account and locked into this contract to initiate the deposit. The equivalent of this token on the relayer's repayment chain of choice will be sent as a refund. If this is equal to the wrapped native token then the caller can optionally pass in native token as msg.value, as long as msg.value = inputTokenAmount.\",\"message\":\"The message to send to the recipient on the destination chain if the recipient is a contract. If the message is not empty, the recipient contract must implement handleV3AcrossMessage() or the fill will revert.\",\"outputAmount\":\"The amount of output tokens that the relayer will send to the recipient on the destination.\",\"outputToken\":\"The token that the relayer will send to the recipient on the destination chain. Must be an ERC20.\",\"recipient\":\"The account receiving funds on the destination chain. Can be an EOA or a contract. If the output token is the wrapped native token for the chain, then the recipient will receive native token if an EOA or wrapped native token if a contract.\"}},\"depositV3(address,address,address,address,uint256,uint256,uint256,address,uint32,uint32,uint32,bytes)\":{\"details\":\"This version mirrors the original `depositV3` function, but uses `address` types for `depositor`, `recipient`, `inputToken`, `outputToken`, and `exclusiveRelayer` for compatibility with contracts using the `address` type. The key functionality and logic remain identical, ensuring interoperability across both versions.\",\"params\":{\"depositor\":\"The account credited with the deposit who can request to \\\"speed up\\\" this deposit by modifying the output amount, recipient, and message.\",\"destinationChainId\":\"The destination chain identifier. Must be enabled along with the input token as a valid deposit route from this spoke pool or this transaction will revert.\",\"exclusiveRelayer\":\"The relayer exclusively allowed to fill this deposit before the exclusivity deadline.\",\"exclusivityParameter\":\"This value is used to set the exclusivity deadline timestamp in the emitted deposit event. Before this destination chain timestamp, only the exclusiveRelayer (if set to a non-zero address), can fill this deposit. There are three ways to use this parameter: 1. NO EXCLUSIVITY: If this value is set to 0, then a timestamp of 0 will be emitted, meaning that there is no exclusivity period. 2. OFFSET: If this value is less than MAX_EXCLUSIVITY_PERIOD_SECONDS, then add this value to the block.timestamp to derive the exclusive relayer deadline. Note that using the parameter in this way will expose the filler of the deposit to the risk that the block.timestamp of this event gets changed due to a chain-reorg, which would also change the exclusivity timestamp. 3. TIMESTAMP: Otherwise, set this value as the exclusivity deadline timestamp. which is the deadline for the exclusiveRelayer to fill the deposit.\",\"fillDeadline\":\"The deadline for the relayer to fill the deposit. After this destination chain timestamp, the fill will revert on the destination chain. Must be set before currentTime + fillDeadlineBuffer, where currentTime is block.timestamp on this chain.\",\"inputAmount\":\"The amount of input tokens pulled from the caller's account and locked into this contract. This amount will be sent to the relayer as a refund following an optimistic challenge window in the HubPool, less a system fee.\",\"inputToken\":\"The token pulled from the caller's account and locked into this contract to initiate the deposit. The equivalent of this token on the relayer's repayment chain of choice will be sent as a refund. If this is equal to the wrapped native token, the caller can optionally pass in native token as msg.value, provided msg.value = inputTokenAmount.\",\"message\":\"The message to send to the recipient on the destination chain if the recipient is a contract. If the message is not empty, the recipient contract must implement `handleV3AcrossMessage()` or the fill will revert.\",\"outputAmount\":\"The amount of output tokens that the relayer will send to the recipient on the destination.\",\"outputToken\":\"The token that the relayer will send to the recipient on the destination chain. Must be an ERC20.\",\"quoteTimestamp\":\"The HubPool timestamp that determines the system fee paid by the depositor. This must be set between [currentTime - depositQuoteTimeBuffer, currentTime] where currentTime is block.timestamp on this chain.\",\"recipient\":\"The account receiving funds on the destination chain. Can be an EOA or a contract. If the output token is the wrapped native token for the chain, then the recipient will receive native token if an EOA or wrapped native token if a contract.\"}},\"depositV3Now(address,address,address,address,uint256,uint256,uint256,address,uint32,uint32,bytes)\":{\"details\":\"This version is identical to the original `depositV3Now` but uses `address` types for `depositor`, `recipient`, `inputToken`, `outputToken`, and `exclusiveRelayer` to support compatibility with older systems. It maintains the same logic and purpose, ensuring interoperability with both versions.\",\"params\":{\"depositor\":\"The account credited with the deposit, who can request to \\\"speed up\\\" this deposit by modifying the output amount, recipient, and message.\",\"destinationChainId\":\"The destination chain identifier. Must be enabled with the input token as a valid deposit route from this spoke pool, or the transaction will revert.\",\"exclusiveRelayer\":\"The relayer exclusively allowed to fill the deposit before the exclusivity deadline.\",\"exclusivityParameter\":\"See identically named parameter in deposit() comments.\",\"fillDeadlineOffset\":\"Added to the current time to set the fill deadline. After this timestamp, fills on the destination chain will revert.\",\"inputAmount\":\"The amount of input tokens pulled from the caller's account and locked into this contract. This amount will be sent to the relayer as a refund following an optimistic challenge window in the HubPool, plus a system fee.\",\"inputToken\":\"The token pulled from the caller's account and locked into this contract to initiate the deposit. Equivalent tokens on the relayer's repayment chain will be sent as a refund. If this is the wrapped native token, msg.value must equal inputTokenAmount when passed.\",\"message\":\"The message to send to the recipient on the destination chain. If the recipient is a contract, it must implement `handleV3AcrossMessage()` if the message is not empty, or the fill will revert.\",\"outputAmount\":\"The amount of output tokens the relayer will send to the recipient on the destination.\",\"outputToken\":\"The token the relayer will send to the recipient on the destination chain. Must be an ERC20.\",\"recipient\":\"The account receiving funds on the destination chain. Can be an EOA or a contract. If the output token is the wrapped native token for the chain, then the recipient will receive the native token if an EOA or wrapped native token if a contract.\"}},\"emergencyDeleteRootBundle(uint256)\":{\"params\":{\"rootBundleId\":\"Index of the root bundle that needs to be deleted. Note: this is intentionally a uint256 to ensure that a small input range doesn't limit which indices this method is able to reach.\"}},\"executeMessage(uint256,bytes,uint256)\":{\"details\":\"Replay attacks are possible with this _message if this contract has the same address on another chain.\",\"params\":{\"_blockNumber\":\"Block number in light client we use to check slot value of slot key\",\"_message\":\"Message stored in HubPoolStore's relayMessageCallData mapping. Compared against raw value in Helios light client for slot key corresponding to _messageNonce at block number.\",\"_messageNonce\":\"Nonce of message stored in HubPoolStore.\"}},\"executeRelayerRefundLeaf(uint32,(uint256,uint256,uint256[],uint32,address,address[]),bytes32[])\":{\"params\":{\"proof\":\"Inclusion proof for this leaf in relayer refund root in root bundle.\",\"relayerRefundLeaf\":\"Contains all data necessary to reconstruct leaf contained in root bundle and to refund relayer. This data structure is explained in detail in the SpokePoolInterface.\",\"rootBundleId\":\"Unique ID of root bundle containing relayer refund root that this leaf is contained in.\"}},\"executeSlowRelayLeaf(((bytes32,bytes32,bytes32,bytes32,bytes32,uint256,uint256,uint256,uint256,uint32,uint32,bytes),uint256,uint256),uint32,bytes32[])\":{\"details\":\"Executing a slow fill leaf is equivalent to filling the relayData so this function cannot be used to double fill a recipient. The relayData that is filled is included in the slowFillLeaf and is hashed like any other fill sent through a fill method.There is no relayer credited with filling this relay since funds are sent directly out of this contract.\",\"params\":{\"proof\":\"Inclusion proof for this leaf in slow relay root in root bundle.\",\"rootBundleId\":\"Unique ID of root bundle containing slow relay root that this leaf is contained in.\",\"slowFillLeaf\":\"Contains all data necessary to uniquely identify a relay for this chain. This struct is hashed and included in a merkle root that is relayed to all spoke pools. - relayData: struct containing all the data needed to identify the original deposit to be slow filled. - chainId: chain identifier where slow fill leaf should be executed. If this doesn't match this chain's chainId, then this function will revert. - updatedOutputAmount: Amount to be sent to recipient out of this contract's balance. Can be set differently from relayData.outputAmount to charge a different fee because this deposit was \\\"slow\\\" filled. Usually, this will be set higher to reimburse the recipient for waiting for the slow fill.\"}},\"fill(bytes32,bytes,bytes)\":{\"details\":\"ERC-7683 fill function.\",\"params\":{\"fillerData\":\"Data provided by the filler to inform the fill or express their preferences\",\"orderId\":\"Unique order identifier for this order\",\"originData\":\"Data emitted on the origin to parameterize the fill\"}},\"fillRelay((bytes32,bytes32,bytes32,bytes32,bytes32,uint256,uint256,uint256,uint256,uint32,uint32,bytes),uint256,bytes32)\":{\"details\":\"The fee paid to relayers and the system should be captured in the spread between output amount and input amount when adjusted to be denominated in the input token. A relayer on the destination chain will send outputAmount of outputTokens to the recipient and receive inputTokens on a repayment chain of their choice. Therefore, the fee should account for destination fee transaction costs, the relayer's opportunity cost of capital while they wait to be refunded following an optimistic challenge window in the HubPool, and a system fee charged to relayers.The hash of the relayData will be used to uniquely identify the deposit to fill, so modifying any params in it will result in a different hash and a different deposit. The hash will comprise all parameters passed to deposit() on the origin chain along with that chain's chainId(). This chain's chainId() must therefore match the destinationChainId passed into deposit. Relayers are only refunded for filling deposits with deposit hashes that map exactly to the one emitted by the origin SpokePool therefore the relayer should not modify any params in relayData.Cannot fill more than once. Partial fills are not supported.\",\"params\":{\"relayData\":\"struct containing all the data needed to identify the deposit to be filled. Should match all the same-named parameters emitted in the origin chain FundsDeposited event. - depositor: The account credited with the deposit who can request to \\\"speed up\\\" this deposit by modifying the output amount, recipient, and message. - recipient The account receiving funds on this chain. Can be an EOA or a contract. If the output token is the wrapped native token for the chain, then the recipient will receive native token if an EOA or wrapped native token if a contract. - inputToken: The token pulled from the caller's account to initiate the deposit. The equivalent of this token on the repayment chain will be sent as a refund to the caller. - outputToken The token that the caller will send to the recipient on the destination chain. Must be an ERC20. - inputAmount: This amount, less a system fee, will be sent to the caller on their repayment chain of choice as a refund following an optimistic challenge window in the HubPool. - outputAmount: The amount of output tokens that the caller will send to the recipient. - originChainId: The origin chain identifier. - exclusiveRelayer The relayer that will be exclusively allowed to fill this deposit before the exclusivity deadline timestamp. - fillDeadline The deadline for the caller to fill the deposit. After this timestamp, the fill will revert on the destination chain. - exclusivityDeadline: The deadline for the exclusive relayer to fill the deposit. After this timestamp, anyone can fill this deposit. Note that if this value was set in deposit by adding an offset to the deposit's block.timestamp, there is re-org risk for the caller of this method because the event's block.timestamp can change. Read the comments in `deposit` about the `exclusivityParameter` for more details. - message The message to send to the recipient if the recipient is a contract that implements a handleV3AcrossMessage() public function\",\"repaymentAddress\":\"Address the relayer wants to be receive their refund at.\",\"repaymentChainId\":\"Chain of SpokePool where relayer wants to be refunded after the challenge window has passed. Will receive inputAmount of the equivalent token to inputToken on the repayment chain.\"}},\"fillRelayWithUpdatedDeposit((bytes32,bytes32,bytes32,bytes32,bytes32,uint256,uint256,uint256,uint256,uint32,uint32,bytes),uint256,bytes32,uint256,bytes32,bytes,bytes)\":{\"details\":\"Subject to same exclusivity deadline rules as fillV3Relay().\",\"params\":{\"depositorSignature\":\"Signed EIP712 hashstruct containing the deposit ID. Should be signed by the depositor account.\",\"relayData\":\"struct containing all the data needed to identify the deposit to be filled. See fillV3Relay().\",\"repaymentAddress\":\"Address the relayer wants to be receive their refund at.\",\"repaymentChainId\":\"Chain of SpokePool where relayer wants to be refunded after the challenge window has passed. See fillV3Relay().\",\"updatedMessage\":\"New message to use for this deposit.\",\"updatedOutputAmount\":\"New output amount to use for this deposit.\",\"updatedRecipient\":\"New recipient to use for this deposit.\"}},\"getCurrentTime()\":{\"returns\":{\"_0\":\"uint for the current timestamp.\"}},\"getSlotKey(uint256)\":{\"params\":{\"_nonce\":\"The nonce associated with the message.\"},\"returns\":{\"_0\":\"The computed storage slot key.\"}},\"getUnsafeDepositId(address,bytes32,uint256)\":{\"details\":\"msgSender and depositor are both used as inputs to allow passthrough depositors to create unique deposit hash spaces for unique depositors.\",\"params\":{\"depositNonce\":\"The nonce used as input to produce the deposit ID.\",\"depositor\":\"The depositor address used as input to produce the deposit ID.\",\"msgSender\":\"The caller of the transaction used as input to produce the deposit ID.\"},\"returns\":{\"_0\":\"The deposit ID for the unsafe deposit.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pauseDeposits(bool)\":{\"details\":\"Affects `deposit()` but not `speedUpDeposit()`, so that existing deposits can be sped up and still relayed.\",\"params\":{\"pause\":\"true if the call is meant to pause the system, false if the call is meant to unpause it.\"}},\"pauseFills(bool)\":{\"details\":\"Affects fillRelayWithUpdatedDeposit() and fillRelay().\",\"params\":{\"pause\":\"true if the call is meant to pause the system, false if the call is meant to unpause it.\"}},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"relayRootBundle(bytes32,bytes32)\":{\"params\":{\"relayerRefundRoot\":\"Merkle root containing relayer refund leaves that can be individually executed via executeRelayerRefundLeaf().\",\"slowRelayRoot\":\"Merkle root containing slow relay fulfillment leaves that can be individually executed via executeSlowRelayLeaf().\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"requestSlowFill((bytes32,bytes32,bytes32,bytes32,bytes32,uint256,uint256,uint256,uint256,uint32,uint32,bytes))\":{\"details\":\"Slow fills are not possible unless the input and output tokens are \\\"equivalent\\\", i.e. they route to the same L1 token via PoolRebalanceRoutes.Slow fills are created by inserting slow fill objects into a merkle tree that is included in the next HubPool \\\"root bundle\\\". Once the optimistic challenge window has passed, the HubPool will relay the slow root to this chain via relayRootBundle(). Once the slow root is relayed, the slow fill can be executed by anyone who calls executeSlowRelayLeaf().Cannot request a slow fill if the fill deadline has passed.Cannot request a slow fill if the relay has already been filled or a slow fill has already been requested.\",\"params\":{\"relayData\":\"struct containing all the data needed to identify the deposit that should be slow filled. If any of the params are missing or different from the origin chain deposit, then Across will not include a slow fill for the intended deposit.\"}},\"setCrossDomainAdmin(address)\":{\"params\":{\"newCrossDomainAdmin\":\"New cross domain admin.\"}},\"setOftMessenger(address,address)\":{\"params\":{\"messenger\":\"IOFT contract address on the current chain for the specified token. Acts as a 'mailbox'\",\"token\":\"token address on the current chain\"}},\"setWithdrawalRecipient(address)\":{\"params\":{\"newWithdrawalRecipient\":\"New withdrawal recipient address.\"}},\"speedUpDeposit(bytes32,uint256,uint256,bytes32,bytes,bytes)\":{\"details\":\"the depositor and depositId must match the params in a FundsDeposited event that the depositor wants to speed up. The relayer has the option but not the obligation to use this updated information when filling the deposit via fillRelayWithUpdatedDeposit().\",\"params\":{\"depositId\":\"Deposit ID to speed up.\",\"depositor\":\"Depositor that must sign the depositorSignature and was the original depositor.\",\"depositorSignature\":\"Signed EIP712 hashstruct containing the deposit ID. Should be signed by the depositor account. If depositor is a contract, then should implement EIP1271 to sign as a contract. See _verifyUpdateV3DepositMessage() for more details about how this signature should be constructed.\",\"updatedMessage\":\"New message to use for this deposit. Can be modified if the recipient is a contract that expects to receive a message from the relay and for some reason needs to be modified.\",\"updatedOutputAmount\":\"New output amount to use for this deposit. Should be lower than previous value otherwise relayer has no incentive to use this updated value.\",\"updatedRecipient\":\"New recipient to use for this deposit. Can be modified if the recipient is a contract that expects to receive a message from the relay and for some reason needs to be modified.\"}},\"speedUpV3Deposit(address,uint256,uint256,address,bytes,bytes)\":{\"details\":\"The `depositor` and `depositId` must match the parameters in a `FundsDeposited` event that the depositor wants to speed up. The relayer is not obligated but has the option to use this updated information when filling the deposit using `fillRelayWithUpdatedDeposit()`. This version uses `address` types for compatibility with systems relying on `address`-based implementations.\",\"params\":{\"depositId\":\"The deposit ID to speed up.\",\"depositor\":\"The depositor that must sign the `depositorSignature` and was the original depositor.\",\"depositorSignature\":\"The signed EIP712 hashstruct containing the deposit ID. Should be signed by the depositor account. If the depositor is a contract, it should implement EIP1271 to sign as a contract. See `_verifyUpdateV3DepositMessage()` for more details on how the signature should be constructed.\",\"updatedMessage\":\"The new message for this deposit. Can be modified if the recipient is a contract that expects to receive a message from the relay and needs to be updated.\",\"updatedOutputAmount\":\"The new output amount to use for this deposit. It should be lower than the previous value, otherwise the relayer has no incentive to use this updated value.\",\"updatedRecipient\":\"The new recipient for this deposit. Can be modified if the original recipient is a contract that expects to receive a message from the relay and needs to be changed.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"unsafeDeposit(bytes32,bytes32,bytes32,bytes32,uint256,uint256,uint256,bytes32,uint256,uint32,uint32,uint32,bytes)\":{\"details\":\"This is labeled \\\"unsafe\\\" because there is no guarantee that the depositId emitted in the resultant FundsDeposited event is unique which means that the corresponding fill might collide with an existing relay hash on the destination chain SpokePool, which would make this deposit unfillable. In this case, the depositor would subsequently receive a refund of `inputAmount` of `inputToken` on the origin chain after the fill deadline. Re-using a depositNonce is very dangerous when combined with `speedUpDeposit`, as a speed up signature can be re-used for any deposits with the same deposit ID.On the destination chain, the hash of the deposit data will be used to uniquely identify this deposit, so modifying any params in it will result in a different hash and a different deposit. The hash will comprise all parameters to this function along with this chain's chainId(). Relayers are only refunded for filling deposits with deposit hashes that map exactly to the one emitted by this contract.\",\"params\":{\"depositNonce\":\"The nonce that uniquely identifies this deposit. This function will combine this parameter with the msg.sender address to create a unique uint256 depositNonce and ensure that the msg.sender cannot use this function to front-run another depositor's unsafe deposit. This function guarantees that the resultant deposit nonce will not collide with a safe uint256 deposit nonce whose 24 most significant bytes are always 0.\",\"depositor\":\"See identically named parameter in depositV3() comments.\",\"destinationChainId\":\"See identically named parameter in depositV3() comments.\",\"exclusiveRelayer\":\"See identically named parameter in depositV3() comments.\",\"exclusivityParameter\":\"See identically named parameter in depositV3() comments.\",\"fillDeadline\":\"See identically named parameter in depositV3() comments.\",\"inputAmount\":\"See identically named parameter in depositV3() comments.\",\"inputToken\":\"See identically named parameter in depositV3() comments.\",\"message\":\"See identically named parameter in depositV3() comments.\",\"outputAmount\":\"See identically named parameter in depositV3() comments.\",\"outputToken\":\"See identically named parameter in depositV3() comments.\",\"quoteTimestamp\":\"See identically named parameter in depositV3() comments.\",\"recipient\":\"See identically named parameter in depositV3() comments.\"}},\"upgradeTo(address)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"errors\":{\"OFTFeeUnderpaid()\":[{\"notice\":\"Thrown when the native fee sent by the caller is insufficient to cover the OFT transfer.\"}],\"OftFeeCapExceeded()\":[{\"notice\":\"Thrown when OFT fee exceeds the configured cap \"}],\"OftIncorrectAmountReceivedLD()\":[{\"notice\":\"Thrown when amount received differs from expected amount \"}],\"OftIncorrectAmountSentLD()\":[{\"notice\":\"Thrown when amount sent differs from expected amount \"}],\"OftInsufficientBalanceForFee()\":[{\"notice\":\"Thrown when contract has insufficient balance to pay OFT fees \"}],\"OftLzFeeNotZero()\":[{\"notice\":\"Thrown when LayerZero token fee is not zero (only native fees supported) \"}]},\"events\":{\"RelayedCallData(uint256,address)\":{\"notice\":\"Event emitted after off-chain agent sees HubPoolStore's emitted StoredCallData event and calls executeMessage() on this contract to relay the stored calldata.\"}},\"kind\":\"user\",\"methods\":{\"ADMIN_UPDATE_BUFFER()\":{\"notice\":\"The owner of this contract must wait until this amount of seconds have passed since the latest helios light client update to emergency execute a message. This prevents the owner from executing a message in the happy case where the light client is being regularly updated. Therefore, this value should be set to a very high value, like 24 hours.\"},\"EMPTY_MSG_BYTES()\":{\"notice\":\"Empty bytes array used for OFT messaging parameters \"},\"HUB_POOL_STORE_CALLDATA_MAPPING_SLOT_INDEX()\":{\"notice\":\"Slot index of the HubPoolStore's relayMessageCallData mapping.\"},\"__SpokePool_init(uint32,address,address)\":{\"notice\":\"Construct the base SpokePool.\"},\"adminExecuteMessage(bytes)\":{\"notice\":\"This function is only callable by the owner and is used as an emergency fallback to execute calldata to this SpokePool in the case where the light-client is not able to be updated.\"},\"chainId()\":{\"notice\":\"Returns chain ID for this network.\"},\"claimRelayerRefund(bytes32,bytes32)\":{\"notice\":\"Enables a relayer to claim outstanding repayments. Should virtually never be used, unless for some reason relayer repayment transfer fails for reasons such as token transfer reverts due to blacklisting. In this case, the relayer can still call this method and claim the tokens to a new address.\"},\"deposit(bytes32,bytes32,bytes32,bytes32,uint256,uint256,uint256,bytes32,uint32,uint32,uint32,bytes)\":{\"notice\":\"Previously, this function allowed the caller to specify the exclusivityDeadline, otherwise known as the as exact timestamp on the destination chain before which only the exclusiveRelayer could fill the deposit. Now, the caller is expected to pass in a number that will be interpreted either as an offset or a fixed timestamp depending on its value.Request to bridge input token cross chain to a destination chain and receive a specified amount of output tokens. The fee paid to relayers and the system should be captured in the spread between output amount and input amount when adjusted to be denominated in the input token. A relayer on the destination chain will send outputAmount of outputTokens to the recipient and receive inputTokens on a repayment chain of their choice. Therefore, the fee should account for destination fee transaction costs, the relayer's opportunity cost of capital while they wait to be refunded following an optimistic challenge window in the HubPool, and the system fee that they'll be charged.\"},\"depositDeprecated_5947912356(address,address,uint256,uint256,int64,uint32,bytes,uint256)\":{\"notice\":\"Called by user to bridge funds from origin to destination chain. Depositor will effectively lock tokens in this contract and receive a destination token on the destination chain. The origin => destination token mapping is stored on the L1 HubPool.The caller must first approve this contract to spend amount of originToken.The originToken => destinationChainId must be enabled.This method is payable because the caller is able to deposit native token if the originToken is wrappedNativeToken and this function will handle wrapping the native token to wrappedNativeToken.\"},\"depositFor(address,address,address,uint256,uint256,int64,uint32,bytes,uint256)\":{\"notice\":\"The only difference between depositFor and deposit is that the depositor address stored in the relay hash can be overridden by the caller. This means that the passed in depositor can speed up the deposit, which is useful if the deposit is taken from the end user to a middle layer contract, like an aggregator or the SpokePoolVerifier, before calling deposit on this contract.The caller must first approve this contract to spend amount of originToken.The originToken => destinationChainId must be enabled.This method is payable because the caller is able to deposit native token if the originToken is wrappedNativeToken and this function will handle wrapping the native token to wrappedNativeToken.\"},\"depositNow(bytes32,bytes32,bytes32,bytes32,uint256,uint256,uint256,bytes32,uint32,uint32,bytes)\":{\"notice\":\"Submits deposit and sets quoteTimestamp to current Time. Sets fill and exclusivity deadlines as offsets added to the current time. This function is designed to be called by users such as Multisig contracts who do not have certainty when their transaction will mine.\"},\"depositV3(address,address,address,address,uint256,uint256,uint256,address,uint32,uint32,uint32,bytes)\":{\"notice\":\"A version of `deposit` that accepts `address` types for backward compatibility. This function allows bridging of input tokens cross-chain to a destination chain, receiving a specified amount of output tokens. The relayer is refunded in input tokens on a repayment chain of their choice, minus system fees, after an optimistic challenge window. The exclusivity period is specified as an offset from the current block timestamp.\"},\"depositV3Now(address,address,address,address,uint256,uint256,uint256,address,uint32,uint32,bytes)\":{\"notice\":\"A version of `depositNow` that supports addresses as input types for backward compatibility. This function submits a deposit and sets `quoteTimestamp` to the current time. The `fill` and `exclusivity` deadlines are set as offsets added to the current time. It is designed to be called by users, including Multisig contracts, who may not have certainty when their transaction will be mined.\"},\"emergencyDeleteRootBundle(uint256)\":{\"notice\":\"This method is intended to only be used in emergencies where a bad root bundle has reached the SpokePool.\"},\"executeMessage(uint256,bytes,uint256)\":{\"notice\":\"Relays calldata stored by the HubPool on L1 into this contract.\"},\"executeRelayerRefundLeaf(uint32,(uint256,uint256,uint256[],uint32,address,address[]),bytes32[])\":{\"notice\":\"Executes a relayer refund leaf stored as part of a root bundle. Will send the relayer the amount they sent to the recipient plus a relayer fee.\"},\"executeSlowRelayLeaf(((bytes32,bytes32,bytes32,bytes32,bytes32,uint256,uint256,uint256,uint256,uint32,uint32,bytes),uint256,uint256),uint32,bytes32[])\":{\"notice\":\"Executes a slow relay leaf stored as part of a root bundle relayed by the HubPool.\"},\"executedMessages(uint256)\":{\"notice\":\"Stores nonces of calldata stored in HubPoolStore that gets executed via executeMessage() to prevent replay attacks.\"},\"fill(bytes32,bytes,bytes)\":{\"notice\":\"Fills a single leg of a particular order on the destination chain\"},\"fillRelay((bytes32,bytes32,bytes32,bytes32,bytes32,uint256,uint256,uint256,uint256,uint32,uint32,bytes),uint256,bytes32)\":{\"notice\":\"Fulfill request to bridge cross chain by sending specified output tokens to the recipient.\"},\"fillRelayWithUpdatedDeposit((bytes32,bytes32,bytes32,bytes32,bytes32,uint256,uint256,uint256,uint256,uint32,uint32,bytes),uint256,bytes32,uint256,bytes32,bytes,bytes)\":{\"notice\":\"Identical to fillV3Relay except that the relayer wants to use a depositor's updated output amount, recipient, and/or message. The relayer should only use this function if they can supply a message signed by the depositor that contains the fill's matching deposit ID along with updated relay parameters. If the signature can be verified, then this function will emit a FilledV3Event that will be used by the system for refund verification purposes. In other words, this function is an alternative way to fill a a deposit than fillV3Relay.\"},\"getCurrentTime()\":{\"notice\":\"Gets the current time.\"},\"getSlotKey(uint256)\":{\"notice\":\"Computes the EVM storage slot key for a message nonce using the formula keccak256(key, slotIndex) to find the storage slot for a value within a mapping(key=>value) at a slot index. We already know the slot index of the relayMessageCallData mapping in the HubPoolStore.\"},\"getUnsafeDepositId(address,bytes32,uint256)\":{\"notice\":\"Returns the deposit ID for an unsafe deposit. This function is used to compute the deposit ID in unsafeDeposit and is provided as a convenience.\"},\"helios()\":{\"notice\":\"The address of the Helios L1 light client contract.\"},\"hubPoolStore()\":{\"notice\":\"The data store contract that only the HubPool can write to. This spoke pool can only act on data that has been written to this store.\"},\"pauseDeposits(bool)\":{\"notice\":\"Pauses deposit-related functions. This is intended to be used if this contract is deprecated or when something goes awry.\"},\"pauseFills(bool)\":{\"notice\":\"Pauses fill-related functions. This is intended to be used if this contract is deprecated or when something goes awry.\"},\"relayRootBundle(bytes32,bytes32)\":{\"notice\":\"This method stores a new root bundle in this contract that can be executed to refund relayers, fulfill slow relays, and send funds back to the HubPool on L1. This method can only be called by the admin and is designed to be called as part of a cross-chain message from the HubPool's executeRootBundle method.\"},\"requestSlowFill((bytes32,bytes32,bytes32,bytes32,bytes32,uint256,uint256,uint256,uint256,uint32,uint32,bytes))\":{\"notice\":\"Request Across to send LP funds to this contract to fulfill a slow fill relay for a deposit in the next bundle.\"},\"setCrossDomainAdmin(address)\":{\"notice\":\"Change cross domain admin address. Callable by admin only.\"},\"setOftMessenger(address,address)\":{\"notice\":\"Add token -> OFTMessenger relationship. Callable only by admin.\"},\"setWithdrawalRecipient(address)\":{\"notice\":\"Change L1 withdrawal recipient address. Callable by admin only.\"},\"speedUpDeposit(bytes32,uint256,uint256,bytes32,bytes,bytes)\":{\"notice\":\"Depositor can use this function to signal to relayer to use updated output amount, recipient, and/or message. The speed up signature uniquely identifies the speed up based only on depositor, deposit ID and origin chain, so using this function in conjunction with unsafeDeposit is risky due to the chance of repeating a deposit ID.\"},\"speedUpV3Deposit(address,uint256,uint256,address,bytes,bytes)\":{\"notice\":\"A version of `speedUpDeposit` using `address` types for backward compatibility. This function allows the depositor to signal to the relayer to use updated output amount, recipient, and/or message when filling a deposit. This can be useful when the deposit needs to be modified after the original transaction has been mined.\"},\"unsafeDeposit(bytes32,bytes32,bytes32,bytes32,uint256,uint256,uint256,bytes32,uint256,uint32,uint32,uint32,bytes)\":{\"notice\":\"See deposit for details. This function is identical to deposit except that it does not use the global deposit ID counter as a deposit nonce, instead allowing the caller to pass in a deposit nonce. This function is designed to be used by anyone who wants to pre-compute their resultant relay data hash, which could be useful for filling a deposit faster and avoiding any risk of a relay hash unexpectedly changing due to another deposit front-running this one and incrementing the global deposit ID counter.\"}},\"notice\":\"Spoke pool capable of executing calldata stored in L1 state via storage proof + Helios light client.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Universal_SpokePool.sol\":\"Universal_SpokePool\"},\"debug\":{\"revertStrings\":\"strip\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x359a1ab89b46b9aba7bcad3fb651924baf4893d15153049b9976b0fc9be1358e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e89863421b4014b96a4b62be76eb3b9f0a8afe9684664a6f389124c0964bfe5c\",\"dweb:/ipfs/Qmbk7xr1irpDuU1WdxXgxELBXxs61rHhCgod7heVcvFx16\"]},\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":{\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac55bf6f92fc7b90c6d79d346163a0a02bd5c648c7fede08b20e5da96d4ae2a0\",\"dweb:/ipfs/QmQoSrHhka35iKDK5iyNt8cuXXS5ANXVPjLhfsJjktB8V9\"]},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x7795808e3899c805254e3ae58074b20f799b466e3f43e057e47bedee5fb771f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://319853a2a682f3f72411507242669ef5e76e0ad3457be53102439709ee8948f0\",\"dweb:/ipfs/QmRtm4Ese9u4jfxXyuWPXLwzenwFotuQjAWV7rXtZTB1E9\"]},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xefb41f5c1a00249b7a99f0782f8c557865605426a3fb6e5fe9ae334293ae4f33\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90def55e5782595aabc13f57780c02d3613e5226f20ce6c1709503a63fdeb58f\",\"dweb:/ipfs/Qmb5vcymmNEZUJMaHmYxnhvGJDEsGMae4YjcHwkA74jy99\"]},\"@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2025ccf05f6f1f2fd4e078e552836f525a1864e3854ed555047cd732320ab29b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d27f4b23c2dee42394aebaf42bf238285230f472dfd3282a39c3f000ec28214f\",\"dweb:/ipfs/QmQa3DnvccwdWJeWrjgXPnFMTWbzWQWR39hVqC7eEwo2PC\"]},\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\":{\"keccak256\":\"0x0e1f0f5f62f67a881cd1a9597acbc0a5e4071f3c2c10449a183b922ae7272e3f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c25f742ff154998d19a669e2508c3597b363e123ce9144cd0fcf6521229f401f\",\"dweb:/ipfs/QmQXRuFzStEWqeEPbhQU6cAg9PaSowxJVo4PDKyRod7dco\"]},\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol\":{\"keccak256\":\"0x07e881de3b9f6d2c07909f193f24b96c7fe4ea60013260f3f25aecd8bab3c2f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fed09b97ccb0ff9ba9b6a94224f1d489026bf6b4b7279bfe64fb6e8749dee4d\",\"dweb:/ipfs/QmcRAzaSP1UnGr4vrGkfJmB2L9aiTYoXfV1Lg9gqrVRWn8\"]},\"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol\":{\"keccak256\":\"0x23b997be73d3dd46885262704f0f8cfc7273fdadfe303d37969a9561373972b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d03ebe5406134f0c4a017dee625ff615031194493bd1e88504e5c8fae55bc166\",\"dweb:/ipfs/QmUZV5bMbgk2PAkV3coouSeSainHN2jhqaQDJaA7hQRyu2\"]},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8b06267c5f80bad727af3e48b1382333d591dad51376399ef2f6b0ee6d58bf95\",\"dweb:/ipfs/QmdU5La1agcQvghnfMpWZGDPz2TUDTCxUwTLKmuMRXBpAx\"]},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9df9de7b5da1d1bd3d4b6c073d0174bc4211db60e794a321c8cb5d4eae34685\",\"dweb:/ipfs/QmWe49zj65jayrCe9jZpoWhYUZ1RiwSxyU2s7SBZnMztVy\"]},\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0xb96dc79b65b7c37937919dcdb356a969ce0aa2e8338322bf4dc027a3c9c9a7eb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f8613145881436fc0480fff22da4868d611e2b0c0c3da083334eb4362ce1945a\",\"dweb:/ipfs/QmPqpP3YeRbBdTJRe6Gv2eGsUaANf4J6RwTNRW36iYahfV\"]},\"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\":{\"keccak256\":\"0xa014f65d84b02827055d99993ccdbfb4b56b2c9e91eb278d82a93330659d06e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://50a7e716a74f3d48a7f549086faa94afcd58b9f18ac8e9f74af4571f3a1d8d5c\",\"dweb:/ipfs/QmTkDNWkq5o9Cv2jS7s6JvSmsPBkeunZhPe7Z2njGL31wo\"]},\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0x2bc0007987c229ae7624eb29be6a9b84f6a6a5872f76248b15208b131ea41c4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2b2835c737d073ef8b82a4cc246495a9740f43e7ff2cf130906b2449ff9bfb91\",\"dweb:/ipfs/QmSCWfNoSvvTN57ic7o1RW6NqSxxGAqbBTnLKc7QHe27qB\"]},\"@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol\":{\"keccak256\":\"0x88f6b7bba3ee33eeb741f9a0f5bc98b6e6e352d0fe4905377bb328590f84095a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88ace2d60f265752f18903d839910be4e4e104340b2957678585b812447825d4\",\"dweb:/ipfs/QmXFkNxMc3AAGzhs2wUEZyErWQjsvoTGyYjuU5oZkFki5Z\"]},\"@openzeppelin/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c45b821ef9e882e57c256697a152e108f0f2ad6997609af8904cae99c9bd422e\",\"dweb:/ipfs/QmRKCJW6jjzR5UYZcLpGnhEJ75UVbH6EHkEa49sWx2SKng\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0xb264c03a3442eb37a68ad620cefd1182766b58bee6cec40343480392d6b14d69\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://28879d01fd22c07b44f006612775f8577defbe459cb01685c5e25cd518c91a71\",\"dweb:/ipfs/QmVgfkwv2Fxw6hhTcDUZhE7NkoSKjab3ipM7UaRbt6uXb5\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xabefac93435967b4d36a4fabcbdbb918d1f0b7ae3c3d85bc30923b326c927ed1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9d213d3befca47da33f6db0310826bcdb148299805c10d77175ecfe1d06a9a68\",\"dweb:/ipfs/QmRgCn6SP1hbBkExUADFuDo8xkT4UU47yjNF5FhCeRbQmS\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b81d9ff6559ea5c47fc573e17ece6d9ba5d6839e213e6ebc3b4c5c8fe4199d7f\",\"dweb:/ipfs/QmPCW1bFisUzJkyjroY3yipwfism9RRCigCcK1hbXtVM8n\"]},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x809bc3edb4bcbef8263fa616c1b60ee0004b50a8a1bfa164d8f57fd31f520c58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8b93a1e39a4a19eba1600b92c96f435442db88cac91e315c8291547a2a7bcfe2\",\"dweb:/ipfs/QmTm34KVe6uZBZwq8dZDNWwPcm24qBJdxqL3rPxBJ4LrMv\"]},\"@openzeppelin/contracts/utils/cryptography/MerkleProof.sol\":{\"keccak256\":\"0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04\",\"dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG\"]},\"@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol\":{\"keccak256\":\"0x3af3ca86df39aac39a0514c84459d691434a108d2151c8ce9d69f32e315cab80\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://77d1f1cf302cd5e1dfbbb4ce3b281b28e8c52942d4319fce43df2e1b6f02a52d\",\"dweb:/ipfs/QmT6ZXStmK3Knhh9BokeVHQ9HXTBZNgL3Eb1ar1cYg1hWy\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c\",\"dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7\",\"dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6\"]},\"contracts/MerkleLib.sol\":{\"keccak256\":\"0xdaf19fdc82593b79a608af8f691aec89a3c0e47b210770deabbe66ece7c35bb1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://03c37f78657beed37257187e237d74492de0199734aa03272a419f66161c0dca\",\"dweb:/ipfs/QmdcXMAoRLZejhh2xcVMWR3WfUvXcArKrCFEE82JDYiJbh\"]},\"contracts/SpokePool.sol\":{\"keccak256\":\"0x014b2aa072de553623d7f8297145fc65be875bc30ed6b81ba78b35c97e873b77\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b1c0a7938e6f72f087e08e2c545d4e7f982f6cf94e34bb666b729f82b8ff2391\",\"dweb:/ipfs/QmUm7iPLUQMvTzPiJTurrZm1gpFoaBFC27SYfiGYUqjeyD\"]},\"contracts/Universal_SpokePool.sol\":{\"keccak256\":\"0x3100ef6a5da9e70ceb9acc3adedf9453229778661965c457e76c6456431428ec\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a46427e36a2fcf3d21e825a11c53757e8d5599af314d88b844cac27a9fecc2f8\",\"dweb:/ipfs/QmUeebn1CGQd2Xiugtm9mfqSj7boFEKvCsmz5CZSqCNS34\"]},\"contracts/erc7683/ERC7683.sol\":{\"keccak256\":\"0x726d0426b0f3a11ff59d3a5bbe433c182c0feac9ea2c8c75377fcc2693eccded\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://99336cc59dd5923815a8fad6e200b7b265e8446414b099e9b17e3f15f094b774\",\"dweb:/ipfs/QmWCrqefGqEpKsvfn1oBzTTUAFBjscjHc6g1EX2ab51bGA\"]},\"contracts/erc7683/ERC7683Permit2Lib.sol\":{\"keccak256\":\"0x47bf69c597fd6735fd4bb24c42d78a2c967d9bce0c303fe0a8ddafe6d2321f94\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://d37b60c5b94d9bb29c42d41dd18dacbc54649921d5cdf85d8c20bb4e43c415b9\",\"dweb:/ipfs/QmZFhiKWztX7UTG6w4wrcK5LSaMHFKH7NxVgrzkxV24bEs\"]},\"contracts/external/interfaces/CCTPInterfaces.sol\":{\"keccak256\":\"0x69059bd91cdb9bea59242c543a167e38a9f3a7788687d4194f68420a956c7608\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0d0781aeb87d7f860ab9ff49c6c6af60b0e93fb547108b98ba8c8501c3980104\",\"dweb:/ipfs/QmY9H7YiXn3a8jdQgcADboxSEsi5V4F7CPcJrWNbxGToAu\"]},\"contracts/external/interfaces/IHelios.sol\":{\"keccak256\":\"0xa545c3aaa22d3a9563183714992b7cef2eb256cb18e215f4d8648edb788a0285\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://856251de803739502d6502358b4f22b0b773482a329e75e5c36fb3c22297808a\",\"dweb:/ipfs/QmcdaqyDmCeGm2BzraxkpcL7TAX7YSFfLWomFSmGWrj3Sd\"]},\"contracts/external/interfaces/IPermit2.sol\":{\"keccak256\":\"0x7c6a2087606df8c70ab1585b69d3f155e2301e274d5a056b3b7e2402929cff33\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da44d21b12562dbad1e24192868ac196d10cdbe9a3d443fa58c1230e31a34ecc\",\"dweb:/ipfs/Qmb5i46saxwcyyPW15tCUcqVn61vKVzVo8P7uZZ2mtMMjt\"]},\"contracts/external/interfaces/WETH9Interface.sol\":{\"keccak256\":\"0x3f7892554ec7f54681fdd3cc18a41346c246c9c1afba016c52990ef77741f718\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://76e901f8da798eb2fdef8fd0083a51088103269f08ee751598c5a6eba407785f\",\"dweb:/ipfs/QmcAHbwbwCZd78teaK4cHuAvXq71aWX1r9vTGkSRRBDJV1\"]},\"contracts/interfaces/HubPoolInterface.sol\":{\"keccak256\":\"0xd8cfdded5db9bf29099e91abd8c8992b4deba1a22d4ffaed94c43ff3d47dcf33\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aeefb0b7816fbfe2f63968f34726155d30b0428558df9a20f839042795b24c82\",\"dweb:/ipfs/QmT5uYJenMLkiBEWtzdEZ4SnsysAhQ9uyHdx3pKNU1gyVy\"]},\"contracts/interfaces/IOFT.sol\":{\"keccak256\":\"0x9c32621db83fa983cdc964eec1cd8ee07f98f40aca4d799abe953df620cf1994\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://85219ca7bd16d067c3aae102aa19445fb6749725e562fd5b8fea76fcedc72266\",\"dweb:/ipfs/QmdDsPMhcyEbhLjzamDEyAyTgvP3CQDBtH1g8CkPLHAMU2\"]},\"contracts/interfaces/SpokePoolInterface.sol\":{\"keccak256\":\"0x67734f330d9b5eb5f7ea7f9f32d2d1cc107879154e9c9424623c6df1709b48e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d80f8ef8f10046624d7ab588538f041bab0c18e475e90b287505d5feae52578f\",\"dweb:/ipfs/QmS7QbHqygik4H6BSm1Cvypx8cWB6QxoHSPZ3FAVDkgYQj\"]},\"contracts/interfaces/SpokePoolMessageHandler.sol\":{\"keccak256\":\"0xc522e2ee6d874df26cae297fc23fc6e8b5216fc8d1901299bb147a25a8c6c259\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8942693e1cef207ae68750884e9e3c221df24dafe897af0ae6a1339e17391c29\",\"dweb:/ipfs/QmSCSQ5DNBetH8xUa73vWXR3D4CdsV6hHFmDqtT2QwLuWt\"]},\"contracts/interfaces/V3SpokePoolInterface.sol\":{\"keccak256\":\"0x15819fd7ff7b33d3fc55de30a5eb1136dfbcf953be2a962dddc550d77e1823fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4f8c43279c38b718fe471171f8dd2eb9f6e8550b939ce65c7c71f0aa6233c421\",\"dweb:/ipfs/QmXFCLp8jWNKi7QRYTN9ZyNoxsTL1RZfJPLMYzUN9xQC9K\"]},\"contracts/libraries/AddressConverters.sol\":{\"keccak256\":\"0x378f28bb4a17a5c47457cb9341086b2140f7faf6c048f702d3528166f0d74453\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://0fa273e028c9555202cac439ddf458d074b66c6f74778b2b0e5e17a0e331dc38\",\"dweb:/ipfs/QmYqEaWXgiJnsH8wRAuTKF41bxkxxvY947wdKoZrjM7HVx\"]},\"contracts/libraries/CircleCCTPAdapter.sol\":{\"keccak256\":\"0x5007254d87c41857f737ddee8b06ef5838182acf6c593f8cc7ced972e03feecb\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6559694d840b3fdbef6da3079478e0ffc168fef81a568633ecb2b9fb860caf34\",\"dweb:/ipfs/QmNnnB5pr745DFZTfDsFSq3BJi2DooaRM8f31qGwXNjLrb\"]},\"contracts/libraries/OFTTransportAdapter.sol\":{\"keccak256\":\"0x373531e2f0d20b27ba5ca8d716c96a6b779b30e2230ae6aad1c3501f1755e5ed\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://90a5ad963f5e9a3f89ec355af30b6522aa25f1a583f2417f9284510cd0a035fc\",\"dweb:/ipfs/QmbKRv44GRPiz1yBfMaN5qv4WMaZgfYN7cn3pyR4VbcNa7\"]},\"contracts/upgradeable/AddressLibUpgradeable.sol\":{\"keccak256\":\"0x655040da45a857cf609d7176c7b0647bf76d36e73e856af79d511014c7e8ef81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5c17767f34d57380767b49f8584d62598964fc813e6f3587d76b51ec2357bb4e\",\"dweb:/ipfs/QmSyoTa1Snn3KiJD7KjCwsPmNqpJzusXterbEXxbYCZoJK\"]},\"contracts/upgradeable/EIP712CrossChainUpgradeable.sol\":{\"keccak256\":\"0xecf6688cdcde5b28918af6db2abb81ac98e6897f704c241e58f954d701939da8\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6b1052cda48e92d322aa9189708858816f620157f1ca15da003f9ea4ec3c18da\",\"dweb:/ipfs/QmfBqmQLwS26BZ1h6agmuoZXF7cdoYAUmP7g5fArvUbn1b\"]},\"contracts/upgradeable/MultiCallerUpgradeable.sol\":{\"keccak256\":\"0x7336f84796307c09d4da05189d3aa97e6d0df7435f6783d999b72d7ee2d141ab\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://0835b415e5aa72bab566a8100091da98a7ee0ec26e32a2d34c206525c70938b3\",\"dweb:/ipfs/QmU1EdGKzJTQS8Yo8NwDsPkVquTBv4sepLUKhvqMcPKvt1\"]}},\"version\":1}", "bytecode": "0x61022060405234620003675761014062005d7f803803809162000025826102206200036b565b6102203912620003675761022051620000406102406200038f565b6200004d6102606200038f565b916200005b6102806200038f565b91620000696102a0620003a4565b93620000776102c0620003a4565b6102e051956001600160a01b0387168703620003675761030051956001600160a01b03871687036200036757620000b0610320620003a4565b610340513060805260c09190915260a0526001600160a01b031660e05261010052610120525f54600881901c60ff16620003675760ff808216036200032c575b506101609485526101808481525f610140526040805163011a412160e61b602082019081526004825292966001600160401b03939192830191848311848410176200030f575f938493604052519160018060a01b03165afa903d1562000323573d9081116200030f576040519062000173601f8201601f1916602001836200036b565b81523d5f602083013e5b8162000302575b81620002c9575b506101a09081526102009384526101e09283526101c0918252604051946159c89687620003b788396080518781816113070152818161169d01526117c9015260a051878181611b3001526155e7015260c051878181611cf20152614c10015260e05187818161084e015281816139ed01528181614120015281816143b20152818161470a01528181614d730152614dee015261010051878181611acf015281816139a101526148c30152610120518781816104b901526146b3015261014051878181611cb20152818161527b01526153260152518681816107f101528181614d11015261515c01525185818161223d01528181614b7c015261517f015251848181611e4b015261521b015251838181610db901526129a5015251828181610e02015281816119120152612cf101525181818161198301526129e00152f35b9050602081519101519060208110620002f0575b506001600160a01b031615155f6200018b565b5f199060200360031b1b165f620002dd565b8051602014915062000184565b634e487b7160e01b5f52604160045260245ffd5b5060606200017d565b60ff90811916175f557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a15f620000f0565b5f80fd5b601f909101601f19168101906001600160401b038211908210176200030f57604052565b51906001600160a01b03821682036200036757565b519063ffffffff82168203620003675756fe6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c8063079bd2c71461048a5780630cb84d9a146104855780631186ec331461048057806311eac8551461047b57806315348e44146103e557806317fcb39b1461047657806319c1648c146104715780631b3d55591461046c5780631fab657c1461046757806326b105d21461046257806329cb924d1461045d5780632e378115146104585780632e63e59a146104535780633659cfe61461044e578063437b911614610449578063490e49ef14610444578063493a4f841461043f5780634f1ef2861461043a5780635285e0581461043557806352d1902d14610430578063541f4f141461042b5780635743a7b914610426578063577f51f81461042157806357f6dcb81461041c5780636068d6cb1461041757806361a04d3014610412578063647c576c1461040d578063670fa8ac146104085780636bbbcd2e146103e55780636e400983146104035780636fd5c10e146103fe578063715018a6146103f9578063738b62e5146103f457806373fd4836146103ef578063775c0d03146103ea578063793d2be0146103e55780637aef642c146103e05780637b939232146103db5780637ef413e1146103d657806382e2c43f146103d15780638a7860ce146103cc5780638b15788e146103c75780638da5cb5b146103c25780639748cf7c146103bd57806397943aa9146103b8578063979f2bc2146103b357806399cc2968146103ae5780639a8a0592146103a9578063a1244c67146103a4578063a18a096e1461039f578063ac9650d81461039a578063ad5425c614610395578063adb5a6a614610340578063b370b7f514610390578063b4c0d7ab1461038b578063babb6aac14610386578063bce63c0014610381578063c2bb0c551461037c578063c35c83fc14610377578063ceb4c98714610372578063d7e1583a1461036d578063dda5211314610368578063ddd224f114610363578063de7eba781461035e578063deff4b2414610359578063e45a469414610354578063ea86bd461461034f578063ee2a53f81461034a578063f2fde38b14610345578063f79f29ed14610340578063fb4c37491461033b5763fc8a584f0361000e57612ec3565b612e93565b6127da565b612e56565b612e18565b612d15565b612cd2565b612bdd565b612bad565b612b84565b612b5e565b612b28565b612a2e565b612a03565b6129c9565b612986565b6128af565b612880565b612821565b61269e565b6125fe565b612497565b612470565b612456565b6123c1565b6122e1565b612261565b61221e565b6121f8565b61217a565b612102565b611fe7565b611fb8565b611f10565b611e70565b610815565b611e34565b611e0e565b611d79565b611d16565b611cd6565b611c96565b611c5c565b611b85565b611b19565b611af3565b611ab3565b6119da565b6118ae565b611819565b6117af565b611788565b61165a565b6115d3565b6115b5565b6114e8565b6112df565b6110e5565b610f85565b610f5c565b610d2f565b610c06565b610afd565b610897565b61082f565b6107d2565b610731565b6104fb565b61049d565b5f91031261049957565b5f80fd5b34610499575f36600319011261049957602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b6001600160a01b0381160361049957565b35906104f9826104dd565b565b3461049957602036600319011261049957602060043561051a816104dd565b6001600160a01b038091165f526108d8825260405f205416604051908152f35b63ffffffff81160361049957565b61014435906104f98261053a565b35906104f98261053a565b634e487b7160e01b5f52604160045260245ffd5b6040810190811067ffffffffffffffff82111761059157604052565b610561565b6101a0810190811067ffffffffffffffff82111761059157604052565b67ffffffffffffffff811161059157604052565b6060810190811067ffffffffffffffff82111761059157604052565b6080810190811067ffffffffffffffff82111761059157604052565b60e0810190811067ffffffffffffffff82111761059157604052565b60a0810190811067ffffffffffffffff82111761059157604052565b90601f8019910116810190811067ffffffffffffffff82111761059157604052565b6040519060c0820182811067ffffffffffffffff82111761059157604052565b60405190610180820182811067ffffffffffffffff82111761059157604052565b604051906104f982610596565b604051906104f9826105e3565b604051906104f9826105ff565b67ffffffffffffffff811161059157601f01601f191660200190565b9291926106e9826106c1565b916106f76040519384610637565b829481845281830111610499578281602093845f960137010152565b9080601f830112156104995781602061072e933591016106dd565b90565b6101003660031901126104995760043561074a816104dd565b602435610756816104dd565b6084358060070b81036104995760a435906107708261053a565b60c43567ffffffffffffffff811161049957610790903690600401610713565b926107996138f0565b60ff6108cf5460e81c166107c0576107b994606435916044359133613953565b600160c955005b604051630b4cba3160e31b8152600490fd5b34610499575f3660031901126104995760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610499575f3660031901126104995760206040515f8152f35b34610499575f3660031901126104995760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b60409060031901126104995760043561088a816104dd565b9060243561072e816104dd565b34610499576108a536610872565b906108ae613b42565b6108b66138f0565b6001600160a01b0390818316928315158061094c575b61093a5761090b906108f0836001600160a01b03165f526108d860205260405f2090565b906001600160a01b03166001600160a01b0319825416179055565b167f323983f5343e25b2c1396361b1b791be31484841fdfb95b8615cd02d910b1e085f80a3610018600160c955565b60405163a63e8c6b60e01b8152600490fd5b50604051637e062a3560e11b8152602081600481885afa9081156109ad575f9161097e575b50831682841614156108cc565b6109a0915060203d6020116109a6575b6109988183610637565b810190613b62565b5f610971565b503d61098e565b6130ed565b67ffffffffffffffff81116105915760051b60200190565b9080601f830112156104995760209082356109e4816109b2565b936109f26040519586610637565b81855260208086019260051b82010192831161049957602001905b828210610a1b575050505090565b81358152908301908301610a0d565b9080601f83011215610499576020908235610a44816109b2565b93610a526040519586610637565b81855260208086019260051b82010192831161049957602001905b828210610a7b575050505090565b8380918335610a89816104dd565b815201910190610a6d565b9291610a9f826109b2565b91610aad6040519384610637565b829481845260208094019160051b810192831161049957905b828210610ad35750505050565b81358152908301908301610ac6565b9080601f830112156104995781602061072e93359101610a94565b60031960603682011261049957600435610b168161053a565b60243567ffffffffffffffff928382116104995760c090823603011261049957610b3e610659565b908060040135825260248101356020830152604481013584811161049957610b6c90600436918401016109ca565b6040830152610b7d60648201610556565b6060830152610b8e608482016104ee565b608083015260a481013590848211610499576004610baf9236920101610a2a565b60a082015260443592831161049957610bcf610018933690600401610ae2565b91612ef3565b9181601f840112156104995782359167ffffffffffffffff8311610499576020808501948460051b01011161049957565b34610499576003196060368201126104995760043567ffffffffffffffff808211610499576060823603938401126104995760243590610c458261053a565b60443590811161049957610c5d903690600401610bd5565b919093610c686138f0565b600484013590610182190181121561049957610cf794610cf293610c95610ceb9360043691890101612a4c565b95610ca36080880151613e4c565b50610cad87613823565b9060446020890151916101608a015193610cc5610659565b9a8b5260208b015201356040890152606088015260808701525f60a08701523691610a94565b9083613e62565b613fb3565b610018600160c955565b9181601f840112156104995782359167ffffffffffffffff8311610499576020838186019501011161049957565b34610499576060366003190112610499576004803560243567ffffffffffffffff811161049957610d639036908401610d01565b610cbf929192805460ff8116610f4b5760ff19166001179055610d8582613350565b92610dfd610d943684846106dd565b6020815191012060206001600160a01b039660405180948192630829c59f60e01b83527f00000000000000000000000000000000000000000000000000000000000000006044358d85016001600160a01b03604092959493606083019683521660208201520152565b0381897f0000000000000000000000000000000000000000000000000000000000000000165afa9182156109ad575f92610f1a575b5003610f0957610e44918101906130f8565b92168015159081610efe575b50610eed57610e72610e6b825f52610cbe60205260405f2090565b5460ff1690565b610edc57610ecf9250610e9e610e91825f52610cbe60205260405f2090565b805460ff19166001179055565b6040513381527f3b0b856314838f509dfe81e9e13c651b0e544b42639c58be2c161b2c3892949d90602090a2614488565b610cbf805460ff19169055005b604051630dc1019760e01b81528390fd5b6040516332f602d160e11b81528390fd5b90503014155f610e50565b6040516301b6e1e760e21b81528590fd5b610f3d91925060203d602011610f44575b610f358183610637565b8101906130de565b905f610e32565b503d610f2b565b60405163087f80c160e31b81528690fd5b34610499575f366003190112610499576020604051428152f35b90816101809103126104995790565b346104995760403660031901126104995760043567ffffffffffffffff811161049957610fb6903690600401610f76565b610fbf8161312f565b6001600160a01b031690610fd56020820161312f565b6001600160a01b031691610feb6040830161312f565b6001600160a01b03166110006060840161312f565b6001600160a01b0316926110166080820161312f565b6001600160a01b03169061010061102e818301613139565b906101209061103e848301613139565b926101409485810161104f90613139565b966101609a8b83016110619084613143565b9a909b61106c610679565b9e8f91825260208201526040015260608d015260808c015260a081013560a08c015260c081013560c08c015260e0013560e08b015263ffffffff16908901528701906110bd919063ffffffff169052565b63ffffffff9091169085015236906110d4926106dd565b908201523360243561001892613854565b34610499576020366003190112610499576004803567ffffffffffffffff8111610499576111169036908301610f76565b61111e6138f0565b60ff6108cf5460e01c166112cf5763ffffffff804216926101408301936111578161114887613139565b63ffffffff9182169116101590565b6112bf5761012084019261116a84613139565b16106112b05761118261117d3685612a4c565b613823565b90611196825f526108d660205260405f2090565b546112a257506111e57f3cee3e290f36226751cd0b3321b213890fe9c768e922f267fa6111836ce05c32926111e06111da6111eb945f526108d660205260405f2090565b60019055565b613139565b93613139565b61120b6112066111ff610160860186613143565b36916106dd565b6144b6565b906112956040519283926101008701359760e08801359760208101359281359260408301359260c08101359060a081013590606060808201359101358b9693909a999895919261012098959361014089019c895260208901526040880152606087015263ffffffff80921660808701521660a085015260c084015260e08301526101008201520152565b0390a3610018600160c955565b604051624be79160e21b8152fd5b60405163d642b7d960e01b8152fd5b50604051630277ae7b60e21b8152fd5b50604051633d90fc5560e11b8152fd5b34610499576020366003190112610499576004356112fc816104dd565b6001600160a01b03807f000000000000000000000000000000000000000000000000000000000000000016803014610499577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90828254160361049957611361613b42565b611369612848565b9160ff7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914354165f146113a15750505061001890614f91565b6020600491604051928380926352d1902d60e01b825288165afa5f91816113da575b506113cc575f80fd5b036104995761001891614e75565b6113f491925060203d602011610f4457610f358183610637565b905f6113c3565b6020600319820112610499576004359067ffffffffffffffff82116104995761142691600401610bd5565b9091565b5f5b83811061143b5750505f910152565b818101518382015260200161142c565b906020916114648151809281855285808601910161142a565b601f01601f1916010190565b6020808201908083528351809252604092604081018260408560051b8401019601945f925b8584106114a6575050505050505090565b9091929394959685806114d7600193603f1986820301885286838d518051151584520151918185820152019061144b565b990194019401929594939190611495565b34610499576114f6366113fb565b6114ff816109b2565b91604061150f6040519485610637565b828452601f1961151e846109b2565b015f5b8181106115925750505f5b83811061154557604051806115418782611470565b0390f35b8061158c61155560019388613199565b515f80611563858a8a6131ad565b906115728951809381936131c4565b0390305af4906115806131d1565b60208201529015159052565b0161152c565b60209083516115a081610575565b5f815282606081830152828901015201611521565b34610499575f3660031901126104995760206040516301e133808152f35b34610499576040366003190112610499576024356004356115f2613b42565b6115fa6138f0565b6108d08054680100000000000000008110156105915763ffffffff916001820190558361162682612dd9565b5084600182015555167fc86ba04c55bc5eb2f2876b91c438849a296dbec7b08751c3074d92e04f0a77af5f80a4600160c955005b604036600319011261049957600435611672816104dd565b60243567ffffffffffffffff811161049957611692903690600401610713565b6001600160a01b03807f00000000000000000000000000000000000000000000000000000000000000001690813014610499577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc918183541603610499576116f8613b42565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561172e5750505061001890614f91565b6020600491604051928380926352d1902d60e01b825288165afa5f9181611767575b50611759575f80fd5b036104995761001891614f40565b61178191925060203d602011610f4457610f358183610637565b905f611750565b34610499575f3660031901126104995760206001600160a01b036108cd5416604051908152f35b34610499575f366003190112610499576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104995760206040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b61012036600319011261049957600435611832816104dd565b6024359061183f826104dd565b6044359161184c836104dd565b60a4358060070b81036104995760c435916118668361053a565b60e43567ffffffffffffffff811161049957611886903690600401610713565b9361188f6138f0565b60ff6108cf5460e81c166107c0576107b9956084359260643592613953565b346104995760203660031901126104995760043567ffffffffffffffff8111610499576118df903690600401610713565b6118e76144cb565b610cbf805460ff81166119c85760ff191660011790556040516349b5c56d60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156109ad575f916119a9575b50428111908115611976575b5061196457610ecf90614488565b604051633ff377d160e11b8152600490fd5b611981915042613214565b7f0000000000000000000000000000000000000000000000000000000000000000115f611956565b6119c2915060203d602011610f4457610f358183610637565b5f61194a565b60405163087f80c160e31b8152600490fd5b346104995760c0366003190112610499576004356119f7816104dd565b60243560443591606435611a0a816104dd565b67ffffffffffffffff9160843583811161049957611a2c903690600401610d01565b60a494919435918211610499577f45e04bc8f121ba11466985789ca2822a91109f31bb8ac85504a37b7eaf873c2694611a6c611aae933690600401610d01565b9290916001600160a01b03809716611aa08a8c83611a8b3688886106dd565b91611a97368b8b6106dd565b9346908d6144df565b604051978897169a87613246565b0390a3005b34610499575f36600319011261049957602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610499575f36600319011261049957602060ff6108cf5460e81c166040519015158152f35b34610499575f3660031901126104995760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b606090600319011261049957600435611b6b8161053a565b90602435611b78816104dd565b9060443561072e816104dd565b3461049957611b9336611b53565b5f54600881901c60ff1615939290849081611c4e575b8115611c2e575b501561049957611bd49284611bcb600160ff195f5416175f55565b611c1757613279565b611bda57005b611be861ff00195f54165f55565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1005b611c2961010061ff00195f5416175f55565b613279565b303b15915081611c40575b505f611bb0565b6001915060ff16145f611c39565b600160ff8216109150611ba9565b34610499575f3660031901126104995760206040517f8d1994e2bbbd77564cdca06dd819e7ee2a5efa06c80dcb59a4a7b6e39edc538f8152f35b34610499575f36600319011261049957602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610499575f36600319011261049957602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610499575f36600319011261049957611d2e6144cb565b5f6001600160a01b036033546001600160a01b03198116603355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b8015150361049957565b34610499576020366003190112610499577fe88463c2f254e2b070013a2dc7ee1e099f9bc00534cbdf03af551dc26ae492196020600435611db981611d6f565b611dc1613b42565b611dc96138f0565b15156108cf80547fffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff60e81b8460e81b169116179055604051908152a1600160c955005b34610499576020366003190112610499576020611e2c600435613350565b604051908152f35b34610499575f3660031901126104995760206040517f000000000000000000000000000000000000000000000000000000000000000015158152f35b61016036600319011261049957600435611e89816104dd565b60243590611e96826104dd565b604435611ea2816104dd565b60643590611eaf826104dd565b60e435611ebb816104dd565b6101043590611ec98261053a565b6101243592611ed78461053a565b610144359667ffffffffffffffff881161049957611efc610018983690600401610d01565b97909660c4359360a435936084359361338b565b61018036600319011261049957600435611f29816104dd565b60243590611f36826104dd565b604435611f42816104dd565b60643590611f4f826104dd565b60e435611f5b816104dd565b61010435611f688161053a565b6101243591611f768361053a565b611f7e610548565b93610164359767ffffffffffffffff891161049957611fa4610018993690600401610d01565b98909760c4359360a43593608435936133ad565b34610499576060366003190112610499576020611e2c600435611fda816104dd565b60443590602435906134c8565b346104995760603660031901126104995767ffffffffffffffff60243581811161049957612019903690600401610d01565b9160443590811161049957612032903690600401610d01565b90604051936020850194806120494684888a6134fe565b039561205d601f1997888101845283610637565b60043591519020036120f0575f9461208c6120ae93612083876120ba958a990190612b02565b9581019061351b565b519360405193849160208301966337bfd2c960e21b88523391602485016135e3565b03908101835282610637565b5190305af46120c76131d1565b90156120cf57005b60405163b8fe37a760e01b81529081906120ec906004830161286f565b0390fd5b604051630f0c8f4760e11b8152600490fd5b346104995760203660031901126104995760043561211e613b42565b6121266138f0565b61212f81612dd9565b612167576001815f80935501557f7c1af0646963afc3343245b103731965735a893347bfa0d58a5dc77a77ae691c5f80a2600160c955005b634e487b7160e01b5f525f60045260245ffd5b6101a036600319011261049957610124356121948161053a565b610144356121a18161053a565b61016435916121af8361053a565b610184359267ffffffffffffffff8411610499576121d4610018943690600401610d01565b9390926101043560e43560c43560a435608435606435604435602435600435613605565b34610499575f3660031901126104995760206001600160a01b0360335416604051908152f35b34610499575f3660031901126104995760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346104995760e03660031901126104995767ffffffffffffffff60043581811161049957612293903690600401610f76565b60a435828111610499576122ab903690600401610d01565b60c492919235938411610499576122c9610018943690600401610d01565b9390926084359060643590604435906024359061367d565b34610499576122ef36611b53565b909160ff5f5460081c161561049957612325906108cf9063ffffffff60c01b1963ffffffff60c01b83549260c01b169116179055565b60405161233181610575565b6009815260208101926820a1a927a9a996ab1960b91b8452640312e302e360dc1b602060405161236081610575565b60058152015260ff5f5460081c161561049957610018936123bc925190206104e3557f06c015bd22b4c69690933c1058878ebdfef31f9aaae40bbe86d8a09fe1b2972c6104e4556123af6148ea565b6123b76148f9565b61490d565b614967565b34610499576020366003190112610499577f2d5b62420992e5a4afce0e77742636ca2608ef58289fd2e1baa5161ef6e7e41e602060043561240181611d6f565b612409613b42565b6124116138f0565b15156108cf80547fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff60e01b8460e01b169116179055604051908152a1600160c955005b34610499575f366003190112610499576020604051468152f35b34610499575f36600319011261049957602063ffffffff6108cf5460c01c16604051908152f35b34610499576040366003190112610499576004356024356124b782614d3a565b6001600160a01b0382165f526108d76020526124e660405f20336001600160a01b03165f5260205260405f2090565b54918215612589575f61252d336125176124ff85613e4c565b6001600160a01b03165f526108d760205260405f2090565b906001600160a01b03165f5260205260405f2090565b556125598361254a61253e84613e4c565b6001600160a01b031690565b61255385613e4c565b906149c1565b60405192835233927f6c172ea51018fb2eb2118f3f8a507c4df71eb519b8c0052834dc3c920182fef490602090a4005b6040516336542bf760e21b8152600490fd5b6020808201906020835283518092526040830192602060408460051b8301019501935f915b8483106125d05750505050505090565b90919293949584806125ee600193603f198682030187528a5161144b565b98019301930191949392906125c0565b346104995761260c366113fb565b9061261682613766565b915f5b81811061262e5760405180611541868261259b565b5f8061263b8385876131ad565b9061264b604051809381936131c4565b0390305af46126586131d1565b901561267e579060019161266c8287613199565b526126778186613199565b5001612619565b6044815110610499578060046104999201516024809183010191016137af565b6101808060031936011261049957610104356126b98161053a565b61012435916126c78361053a565b61014435926126d58461053a565b6101643567ffffffffffffffff8111610499576126f6903690600401610d01565b6126fe6138f0565b6108cf549260ff8460e81c166107c057610cf7966127c36111ff926127b563ffffffff6127d19860c01c16996127596127368c61380e565b6108cf9063ffffffff60c01b1963ffffffff60c01b83549260c01b169116179055565b61276161069a565b9a6004358c5260243560208d015260443560408d015260643560608d015260843560808d015260a43560a08d015260c43560c08d015260e43560e08d01526101008c01526101208b019063ffffffff169052565b63ffffffff16610140890152565b63ffffffff16610160870152565b90820152614658565b346104995760206128186001600160a01b036127f536610872565b91165f526108d7835260405f20906001600160a01b03165f5260205260405f2090565b54604051908152f35b34610499575f3660031901126104995760206001600160a01b036108ce5416604051908152f35b6040516020810181811067ffffffffffffffff821117610591576040525f8152905f368137565b90602061072e92818152019061144b565b34610499575f3660031901126104995761154161289b612848565b60405191829160208352602083019061144b565b346104995760c03660031901126104995760043560243567ffffffffffffffff606435604435608435838111610499576128ed903690600401610d01565b60a494919435918211610499577f45e04bc8f121ba11466985789ca2822a91109f31bb8ac85504a37b7eaf873c269461292d61297c933690600401610d01565b9290916129386138f0565b6129418a614d3a565b612970898b89896129533688886106dd565b9261295f368b8b6106dd565b946001600160a01b034692166144df565b60405196879687613246565b0390a3600160c955005b34610499575f3660031901126104995760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610499575f3660031901126104995760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b34610499576020366003190112610499576004355f526108d6602052602060405f2054604051908152f35b34610499575f36600319011261049957602060405163ffffffff8152f35b91906101808382031261049957612a61610679565b92803584526020810135602085015260408101356040850152606081013560608501526080810135608085015260a081013560a085015260c081013560c085015260e081013560e08501526101008082013590850152610120612ac5818301610556565b90850152610140612ad7818301610556565b90850152610160918282013567ffffffffffffffff811161049957612afc9201610713565b90830152565b9060208282031261049957813567ffffffffffffffff81116104995761072e9201612a4c565b346104995760203660031901126104995760043567ffffffffffffffff811161049957611e2c61117d6020923690600401612a4c565b34610499575f36600319011261049957602060ff6108cf5460e01c166040519015158152f35b34610499575f3660031901126104995760206040516ec097ce7bc90715b34b9f10000000008152f35b34610499576020366003190112610499576107b9600435612bcd816104dd565b612bd5613b42565b6123b76138f0565b346104995760603660031901126104995760043567ffffffffffffffff811161049957612c0e903690600401612a4c565b612c166138f0565b60ff6108cf5460e01c16612cc05761014081015163ffffffff4281169116101580612ca1575b612c8f5780612c4d610cf792613823565b60c082015160208301519061016084015192612c67610659565b948552602085015260408401526060830152608082015260243560a082015260443590614227565b604051630c3a9b9d60e41b8152600490fd5b50612caf6040820151613e4c565b6001600160a01b0316331415612c3c565b604051633d90fc5560e11b8152600490fd5b34610499575f3660031901126104995760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b610160806003193601126104995761010435612d308161053a565b61012435612d3d8161053a565b6101443567ffffffffffffffff811161049957612d5e903690600401610d01565b63ffffffff94612d718642169586613373565b93612d7a6138f0565b6108cf549160ff8360e81c166107c057612dad612dba966127b5610cf79a6111ff9660c01c16996127596127368c61380e565b86019063ffffffff169052565b610180820152614658565b634e487b7160e01b5f52603260045260245ffd5b6108d0908154811015612e13576003915f52027f6404fdb155c59a831d14e4acb0957279f1e3a856a4513ac322398c7bc9a5781b01905f90565b612dc5565b34610499576020366003190112610499576004356108d05481101561049957612e42604091612dd9565b506001815491015482519182526020820152f35b3461049957602036600319011261049957600435612e73816104dd565b612e7b6144cb565b6001600160a01b0381161561049957610018906145bb565b34610499576020366003190112610499576004355f52610cbe602052602060ff60405f2054166040519015158152f35b34610499576020366003190112610499576107b9600435612ee3816104dd565b612eeb613b42565b6123bc6138f0565b9190612efd6138f0565b60208101918251460361300f57612f25612f2991836001612f1d88612dd9565b500154613b77565b1590565b612ffd577ff4ad92585b1bc117fbdd644990adf0827bc4c95baeae8a23322af807b6d0020e6060820192612f6a612f64855163ffffffff1690565b86613c09565b8051612ff08451926040860195612fd5612fc7612fb6895196612f918c5163ffffffff1690565b976080860198612fa88a516001600160a01b031690565b9160a088019b8c5194613c6b565b925193519851995163ffffffff1690565b94516001600160a01b031690565b945163ffffffff9586604051978897169b1699339487613090565b0390a46104f9600160c955565b60405163582f497d60e11b8152600490fd5b604051633d23e4d160e11b8152600490fd5b9081518082526020808093019301915f5b828110613040575050505090565b835185529381019392810192600101613032565b9081518082526020808093019301915f5b828110613073575050505090565b83516001600160a01b031685529381019392810192600101613065565b94969591936130b260a0956130d093885260c0602089015260c0880190613021565b906001600160a01b0380951660408801528682036060880152613054565b951515608085015216910152565b90816020910312610499575190565b6040513d5f823e3d90fd5b919091604081840312610499578035613110816104dd565b92602082013567ffffffffffffffff81116104995761072e9201610713565b3561072e816104dd565b3561072e8161053a565b903590601e1981360301821215610499570180359067ffffffffffffffff82116104995760200191813603831361049957565b634e487b7160e01b5f52602160045260245ffd5b6003111561319457565b613176565b8051821015612e135760209160051b010190565b90821015612e13576114269160051b810190613143565b908092918237015f815290565b3d156131fb573d906131e2826106c1565b916131f06040519384610637565b82523d5f602084013e565b606090565b634e487b7160e01b5f52601160045260245ffd5b9190820391821161322157565b613200565b908060209392818452848401375f828201840152601f01601f1916010190565b9492909361326b9261072e979587526020870152608060408701526080860191613226565b926060818503910152613226565b91909160ff5f5460081c161561049957613292336145bb565b60ff5f5460081c1615610499576132c6906108cf9063ffffffff60c01b1963ffffffff60c01b83549260c01b169116179055565b6040516132d281610575565b6009815260208101926820a1a927a9a996ab1960b91b8452640312e302e360dc1b602060405161330181610575565b60058152015260ff5f5460081c1615610499576104f9936123bc925190206104e3557f06c015bd22b4c69690933c1058878ebdfef31f9aaae40bbe86d8a09fe1b2972c6104e4556123af6148ea565b604051602081019182525f60408201526040815261336d816105c7565b51902090565b91909163ffffffff8080941691160191821161322157565b96949290916104f99b9a99989694926133ab63ffffffff42169889613373565b985b9593919b999897969492909b6133c16138f0565b6108cf549660ff8860e81c166107c0578760c01c63ffffffff166133e49061380e565b61340b906108cf9063ffffffff60c01b1963ffffffff60c01b83549260c01b169116179055565b61341361069a565b9d6001600160a01b038f921682526001600160a01b031690602001526001600160a01b031660408d01526001600160a01b031660608c015260808b015260a08a015260c08901526001600160a01b031660e088015260c01c63ffffffff1661010087015261012086019061348c919063ffffffff169052565b63ffffffff1661014085015263ffffffff1661016084015236906134af926106dd565b6101808201526134be90614658565b6104f9600160c955565b916040519160208301936bffffffffffffffffffffffff199060601b168452603483015260548201526054815261336d816105e3565b93929160209161351691604087526040870191613226565b930152565b9081602091031261049957604051906020820182811067ffffffffffffffff8211176105915760405235815290565b61072e9161018090825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e082015261010080840151908201526135bf610120808501519083019063ffffffff169052565b6101408381015163ffffffff1690820152816101608094015193820152019061144b565b6135fb6040929594939560608352606083019061354a565b9460208201520152565b9c9a999897969594939291909661361a6138f0565b60ff6108cf5460e81c166107c057613633908e336134c8565b96604051809e61364282610596565b81526020015260408d015260608c015260808b015260a08a015260c089015260e088015261010087015263ffffffff1661012086015261348c565b97929095939196949761368e6138f0565b60ff6108cf5460e01c16612cc0576136a96101408201613139565b63ffffffff8042169116101580613747575b612c8f57613730613742966137286134be9b6136da61117d3687612a4c565b9a6136e3610659565b9b6136ee3688612a4c565b8d5260208d01528660408d01528760608d015261370c368b846106dd565b60808d015260a08c01526137208535613e4c565b9836916106dd565b9536916106dd565b9461010060e0830135920135906144df565b614227565b506137556040820135613e4c565b6001600160a01b03163314156136bb565b90613770826109b2565b61377d6040519182610637565b828152809261378e601f19916109b2565b01905f5b82811061379e57505050565b806060602080938501015201613792565b6020818303126104995780519067ffffffffffffffff8211610499570181601f820112156104995780516137e2816106c1565b926137f06040519485610637565b818452602082840101116104995761072e916020808501910161142a565b63ffffffff8091169081146132215760010190565b60405161336d81613840602082019460408652606083019061354a565b46604083015203601f198101835282610637565b91909161385f6138f0565b60ff6108cf5460e01c16612cc05761014081015163ffffffff42811691161015806138d1575b612c8f576134be9261389682613823565b60c0830151602084015190610160850151926138b0610659565b958652602086015260408501526060840152608083015260a0820152614227565b506138df6040820151613e4c565b6001600160a01b0316331415613885565b600260c9541461049957600260c955565b9261072e9695929491946101409585525f60208601526040850152606084015263ffffffff809116608084015260a08301525f60c083015260e08201525f61010082015281610120820152019061144b565b9193949690959660070b906706f05b59d3b2000061397083614a09565b1015613b30576ec097ce7bc90715b34b9f10000000008411613b1e5763ffffffff9361399e858a1642613214565b857f00000000000000000000000000000000000000000000000000000000000000001610613b0c576108cf5460c01c63ffffffff16986139e06127368b61380e565b6001600160a01b039586807f00000000000000000000000000000000000000000000000000000000000000001698169288841480613b03575b15613ac757803403613ab557883b15610499575f6004996040519a8b8092630d0e30db60e41b825234905af19889156109ad57613a84613a97978a927f32ed1a409ef04c7b0227189c3a103dc5ac10e775a15b785dcc510201f7c25ad39c613a9c575b505b83614a57565b92604051998a99169d169b169387613901565b0390a4565b80613aa9613aaf926105b3565b8061048f565b5f613a7c565b604051636452a35d60e01b8152600490fd5b7f32ed1a409ef04c7b0227189c3a103dc5ac10e775a15b785dcc510201f7c25ad3985087613a84613a9797613afe8430338a614a18565b613a7e565b50341515613a19565b60405163f722177f60e01b8152600490fd5b60405163622db5a960e11b8152600490fd5b60405163284f109760e21b8152600490fd5b60ff610cbf541615613b5057565b604051631147e02f60e11b8152600490fd5b90816020910312610499575161072e816104dd565b61072e9291604051613c0081613bf2602082019460208652805160408401526020810151606084015260a0613bbc604083015160c06080870152610100860190613021565b606083015163ffffffff168583015260808301516001600160a01b031660c0860152910151838203603f190160e0850152613054565b03601f198101835282610637565b51902091614a8d565b613c14600291612dd9565b500162ffffff8260081c16805f5281602052600160ff60405f205494161b8080941614613c4c575f5260205260405f20908154179055565b60405163954476d960e01b8152600490fd5b9190820180921161322157565b91959495939092935f9681519081815103613e3a5781613cea575b50505082613c95575b50505050565b6001600160a01b0381613cc97ffa7fa7cf6d7dde5f9be65a67e6a1a747e7aa864dcd2d793353c722d80fbbb3579386614b50565b6040805195865233602087015291169463ffffffff1693a45f808080613c8f565b604080516370a0823160e01b81523060048083019190915291906020816024816001600160a01b038b165afa9081156109ad575f91613e1b575b505f805b868110613d39575050505050613c86565b613d438189613199565b51613d51575b600101613d28565b90613d6790613d60838a613199565b5190613c5e565b90828211613e0b57613da1612f25613d8f613d82848a613199565b516001600160a01b031690565b613d99848c613199565b51908c614ade565b15613d49579c5087613e01613df98f613de4613d82613ddd613dc3848f613199565b51966001600160a01b03165f526108d760205260405f2090565b928b613199565b6001600160a01b03165f5260205260405f2090565b918254613c5e565b905560019c613d49565b50505051632ddaa83160e11b8152fd5b613e34915060203d602011610f4457610f358183610637565b5f613d24565b6040516319a5316760e31b8152600490fd5b6001600160a01b0390613e5e81614d3a565b1690565b91612f2590613edb92845160408096015191865191613e80836105c7565b8252613c00613e9b6020840192468452898501958652612dd9565b5054938851928391613ec06020840196602088525160608d86015260a085019061354a565b9151606084015251608083015203601f198101835282610637565b613ee25750565b5163582f497d60e11b8152600490fd5b613efb8261318a565b52565b9a989693919c9b9997959492909c6101e08c019d8c5260208c015260408b015260608a0152608089015263ffffffff80921660a08901521660c087015260e08601526101008501526101208401526101408301528051610160830152602081015161018083015260408101516101a08301526060015190613f7e8261318a565b6101c00152565b9061072e94936080936001600160a01b0380931684526020840152166040820152816060820152019061144b565b905f82516101208101613fca815163ffffffff1690565b63ffffffff42911610614215576020850151906002613ff2835f526108d660205260405f2090565b54146142035761400c86925f526108d660205260405f2090565b6002905560608301519060808401519160a08501519260c0860151918560a0810151938860e081015195610100820151975161404b9063ffffffff1690565b61014083015163ffffffff166040840151918451936020860151956101600151614074906144b6565b966060890151986080019e8f5161408a906144b6565b9060400151906140986106a7565b9a8b5260208b015260408a0152600260608a01526040519d8e9b6140bc9b8d613efe565b037f44b559f101f8fbcc8a0ea43fa91a05a729a5ea6e14a7c75aa750374690137208905f94a460808201516140f090613e4c565b906040860151956060015161410490613e4c565b926080015161411290613e4c565b6001600160a01b03919082167f00000000000000000000000000000000000000000000000000000000000000008316036141ee57846141db575b61415887838616614d55565b519283511515806141d1575b614172575b50505050509050565b1690813b156141cd57836141a0959660405196879586948593633a5be8cb60e01b8552339160048601613f85565b03925af180156109ad576141ba575b808080808594614169565b80613aa96141c7926105b3565b5f6141af565b8380fd5b50803b1515614164565b6141e9873033858716614a18565b61414c565b5f94506141fe87858585166149c1565b614158565b604051630479306360e51b8152600490fd5b60405163d642b7d960e01b8152600490fd5b805191610120830161423d815163ffffffff1690565b63ffffffff429116106142155760208301516001614264825f526108d660205260405f2090565b5403614481576001905b6002614283825f526108d660205260405f2090565b54146142035761429f6142a5915f526108d660205260405f2090565b60029055565b7f44b559f101f8fbcc8a0ea43fa91a05a729a5ea6e14a7c75aa75037469013720860608601516080870151906143728760a08a0151958a60c08101519760a08401519860e0830151996143026101008501519c5163ffffffff1690565b61014085015163ffffffff169160408601519386519561436661432e61016060208b01519a01516144b6565b9960608c01519b604061434460808301516144b6565b9101519060206143526106a7565b9e8f528e015260408d015260608c01613ef2565b6040519c8d9c8d613efe565b0390a46143826080830151613e4c565b9160408201519160806143a48161439c6060850151613e4c565b940151613e4c565b6001600160a01b03929083167f000000000000000000000000000000000000000000000000000000000000000084160361446e576143e6853033868a16614a18565b6143f285848616614d55565b0151918251151580614464575b61440b575b5050505050565b16803b1561049957614439935f809460405196879586948593633a5be8cb60e01b8552339160048601613f85565b03925af180156109ad57614451575b80808080614404565b80613aa961445e926105b3565b5f614448565b50803b15156143ff565b61447c858533868a16614a18565b6143f2565b5f9061426e565b5f8091602081519101305af461449c6131d1565b50156144a457565b6040516318cecad560e01b8152600490fd5b805190816144c45750505f90565b6020012090565b6001600160a01b0360335416330361049957565b93926042936104f9979660208151910120906040519260208401947f8d1994e2bbbd77564cdca06dd819e7ee2a5efa06c80dcb59a4a7b6e39edc538f86526040850152856060850152608084015260a083015260c082015260c08152614544816105ff565b519020906104e354906104e454906040519160208301937fc2f8787176b8ac6bf7215b4adcc1e069bf4ab82d9ab1df05a57a91d425935b6e85526040840152606083015260808201526080815261459a8161061b565b519020906040519161190160f01b8352600283015260228201522090614fd4565b603354906001600160a01b0380911691826001600160a01b0319821617603355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b969261072e9a9996949198959261014099895260208901526040880152606087015263ffffffff928380921660808801521660a08601521660c084015260e083015261010082015281610120820152019061144b565b6146628151614d3a565b6101208101614681614678825163ffffffff1690565b63ffffffff1690565b8042109081156148b1575b50613b0c576101408201916146a5835163ffffffff1690565b9063ffffffff91826146d9817f00000000000000000000000000000000000000000000000000000000000000001642613c5e565b91161161489f5761016081015163ffffffff16918083168061485a575b505060408101908151916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001680931480614851575b156148045760808201513403613ab557823b15610499575f60049360405194858092630d0e30db60e41b825234905af19283156109ad577f32ed1a409ef04c7b0227189c3a103dc5ac10e775a15b785dcc510201f7c25ad3936147f1575b505b51613a9760608301519260808101519060a081015160c0820151976147d06147c56101008501519b5163ffffffff1690565b9b5163ffffffff1690565b83519b60208501519361018060e0870151960151966040519a8b9a8b614602565b80613aa96147fe926105b3565b5f614791565b915034613ab5578161484c61483d61253e7f32ed1a409ef04c7b0227189c3a103dc5ac10e775a15b785dcc510201f7c25ad39551613e4c565b60808401519030903390614a18565b614793565b50341515614733565b6301e13380101561488a575b5060e081015115614878575f806146f6565b60405163495d907f60e01b8152600490fd5b916148989192421690613373565b905f614866565b60405163582e388960e01b8152600490fd5b6148bc915042613214565b63ffffffff7f000000000000000000000000000000000000000000000000000000000000000016105f61468c565b60ff5f5460081c161561049957565b60ff5f5460081c161561049957600160c955565b6001600160a01b03168015614955576108cd816001600160a01b03198254161790557fa9e8c42c9e7fca7f62755189a16b2f5314d43d8fb24e91ba54e6d65f9314e8495f80a2565b60405163ba97b39d60e01b8152600490fd5b6001600160a01b031680156149af576108ce816001600160a01b03198254161790557fa73e8909f8616742d7fe701153d82666f7b7cd480552e23ebb05d358c22fd04e5f80a2565b604051635b03092b60e11b8152600490fd5b60405163a9059cbb60e01b60208201526001600160a01b03909216602483015260448201929092526104f991614a0482606481015b03601f198101845283610637565b6150c7565b5f8112614a135790565b5f0390565b90926104f993604051936323b872dd60e01b60208601526001600160a01b038092166024860152166044840152606483015260648252614a048261061b565b90670de0b6b3a7640000915f82840392128383128116908484139015161761322157818102918183041490151715613221570490565b929091905f915b8451831015614ad657614aa78386613199565b519081811015614ac5575f52602052600160405f205b920191614a94565b905f52602052600160405f20614abd565b915092501490565b60405163a9059cbb60e01b60208281019182526001600160a01b039094166024830152604482019490945290925f91614b1a8160648101613bf2565b519082855af1903d5f519083614b31575b50505090565b91925090614b4657503b15155b5f8080614b2b565b6001915014614b3e565b91906001600160a01b0380614b77836001600160a01b03165f526108d860205260405f2090565b5416817f000000000000000000000000000000000000000000000000000000000000000016151580614d0d575b15614bc957505050906104f990614bc46108ce546001600160a01b031690565b61514e565b8015614cfb57816108ce541691614bde615423565b50614be761546a565b50614bf0612848565b614bf8612848565b614c00612848565b91614c096106b4565b63ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152956020870152604098808a8801526060870152608086015260a085015260c0840152855193633b6f743b60e01b8552868580614c71876004830161552b565b0381865afa9485156109ad575f95614ccc575b5084513410614cbb576104f9959650614c9e855134613214565b80614cab575b50166155e1565b614cb590336153fb565b5f614ca4565b865163557a94ff60e11b8152600490fd5b614ced919550873d8911614cf4575b614ce58183610637565b8101906154aa565b935f614c84565b503d614cdb565b60405163d623472560e01b8152600490fd5b50817f00000000000000000000000000000000000000000000000000000000000000001682841614614ba4565b60a01c614d4357565b6040516379ec0ed760e11b8152600490fd5b906001600160a01b03808316803b158015614e13575b15614de657507f00000000000000000000000000000000000000000000000000000000000000001691823b1561049957604051632e1a7d4d60e01b815260048101839052925f908490602490829084905af19283156109ad576104f993614dd3575b506153fb565b80613aa9614de0926105b3565b5f614dcd565b906104f993507f0000000000000000000000000000000000000000000000000000000000000000166149c1565b50803b614e1f816106c1565b614e2c6040519182610637565b81815260208101915f83853c51905162ffffff60e81b908181169260038110614e5f575b50501661ef0160f01b14614d6b565b829350829060030360031b1b1616905f80614e50565b614e7e81614f91565b6001600160a01b0381167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590614f39575b614ebf575050565b5f80614f36937f206661696c65640000000000000000000000000000000000000000000000000060408051614ef3816105c7565b602781527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60208201520152602081519101845af4614f306131d1565b916158ee565b50565b505f614eb7565b614f4981614f91565b6001600160a01b0381167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590614f8957614ebf575050565b506001614eb7565b803b15610499576001600160a01b037f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc91166001600160a01b0319825416179055565b614fde8383615721565b60058195929510156131945715938461509c575b508315615016575b5050501561500457565b60405163938a182160e01b8152600490fd5b5f92935090829160405161504e81613bf26020820194630b135d3f60e11b998a8752602484015260406044840152606483019061144b565b51915afa9061505b6131d1565b8261508e575b82615071575b50505f8080614ffa565b615086919250602080825183010191016130de565b145f80615067565b915060208251101591615061565b6001600160a01b0383811691161493505f614ff2565b90816020910312610499575161072e81611d6f565b905f806001600160a01b0361511e9416927f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564602060405161510781610575565b818152015260208151910182855af1614f306131d1565b8051908115918215615134575b50501561049957565b61514792506020809183010191016150b2565b5f8061512b565b906001600160a01b038092167f000000000000000000000000000000000000000000000000000000000000000090837f000000000000000000000000000000000000000000000000000000000000000016936151ab84868561584a565b604094604051926332dd704760e21b84526020956004948781600481875afa9687156109ad5788915f986153da575b506040516352b7631960e11b81529086166001600160a01b03811660048301529097909588916024918391165afa9586156109ad575f966153bb575b5095867f0000000000000000000000000000000000000000000000000000000000000000975b61524b57505050505050505050565b868111156153b557865b881561530d57843b15610499578951634701287760e11b815287810182815263ffffffff7f0000000000000000000000000000000000000000000000000000000000000000166020820152604081018690526001600160a01b03881660608201525f6080820181905260a082018190526107d060c0830152919391908490819060e0010381838a5af19283156109ad576152f4936152fa575b50613214565b8061523c565b80613aa9615307926105b3565b5f6152ee565b89516337e9a82760e11b815287810182815263ffffffff7f0000000000000000000000000000000000000000000000000000000000000000166020820152604081018690526001600160a01b038816606082015290929084908490819060800103815f8a5af19283156109ad576152f4936153885750613214565b6153a790853d87116153ae575b61539f8183610637565b81019061570d565b505f6152ee565b503d615395565b80615255565b6153d3919650873d8911610f4457610f358183610637565b945f615216565b869198506153f490833d85116109a6576109988183610637565b97906151da565b814710610499575f8080936001600160a01b038294165af161541b6131d1565b501561049957565b6040519060e0820182811067ffffffffffffffff82111761059157604052606060c0835f81525f60208201525f60408201525f838201528260808201528260a08201520152565b6040519061547782610575565b5f6020838281520152565b91908260409103126104995760405161549a81610575565b6020808294805184520151910152565b906040828203126104995761072e91615482565b61072e9163ffffffff825116815260208201516020820152604082015160408201526060820151606082015260c061551a615508608085015160e0608086015260e085019061144b565b60a085015184820360a086015261144b565b9201519060c081840391015261144b565b919060206135165f926040865260408601906154be565b519067ffffffffffffffff8216820361049957565b919082810360c08112610499576080136104995761072e90608060405161557d816105c7565b8551815261558d60208701615542565b602082015261559f8360408801615482565b60408201529401615482565b9193926001600160a01b039060206155cd6060946080875260808701906154be565b968051828701520151604085015216910152565b918351927f000000000000000000000000000000000000000000000000000000000000000084116156fb574784116156e95760208501516156d7576001600160a01b039461565d9461563f60c0956040860151988991168095615752565b60405180968195829463c7c7f5b360e01b84523091600485016155ab565b03925af19081156109ad575f916156a6575b506020810151820361569457510361568357565b604051623c548b60ea1b8152600490fd5b604051631bfc3cb560e11b8152600490fd5b6156c8915060c03d60c0116156d0575b6156c08183610637565b810190615557565b90505f61566f565b503d6156b6565b604051630e282ec960e21b8152600490fd5b60405163a6226f8560e01b8152600490fd5b604051631754d7a960e01b8152600490fd5b908160209103126104995761072e90615542565b9060418151145f146157495761142691602082015190606060408401519301515f1a90615917565b50505f90600290565b60405163095ea7b360e01b602082018181526001600160a01b0385166024840152604480840196909652948252939092601f1991615791606486610637565b5f806001600160a01b0386169287519082855af1906157ae6131d1565b82615818575b508161580d575b50156157c8575050505050565b60405160208101959095526001600160a01b031660248501525f604485015261580393614a04916157fd9082606481016120ae565b826150c7565b5f80808080614404565b90503b15155f6157bb565b80519192508115918215615830575b5050905f6157b4565b61584392506020809183010191016150b2565b5f80615827565b6044919260206001600160a01b0360405194858092636eb1769f60e11b8252306004830152808916602483015286165afa9283156109ad575f936158cd575b5082018092116132215760405163095ea7b360e01b60208201526001600160a01b03909316602484015260448301919091526104f99190614a0482606481016149f6565b6158e791935060203d602011610f4457610f358183610637565b915f615889565b9015615908578151156158ff575090565b3b156104995790565b50805190811561049957602001fd5b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411615987576020935f9360ff60809460405194855216868401526040830152606082015282805260015afa156109ad575f516001600160a01b0381161561597f57905f90565b505f90600190565b505050505f9060039056fea26469706673582212201f3e3c43e1354d6f81bd1b4bf2f4b5b44e3ebfbbc4221c45c3c1ea68ec09a16564736f6c63430008170033", From dd5e9054de21800288e14e6d6daf7a707d47c892 Mon Sep 17 00:00:00 2001 From: bennett Date: Tue, 23 Sep 2025 09:56:17 -0500 Subject: [PATCH 4/4] extract Signed-off-by: bennett --- broadcast/deployed-addresses.json | 4 ++-- broadcast/deployed-addresses.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/broadcast/deployed-addresses.json b/broadcast/deployed-addresses.json index f1a9d7842..4b3f5fc82 100644 --- a/broadcast/deployed-addresses.json +++ b/broadcast/deployed-addresses.json @@ -614,9 +614,9 @@ "block_number": 1552582 }, "SpokePool": { - "address": "0x9552a0a6624A23B848060AE5901659CDDa1f83f8", + "address": "0x50039fAEfebef707cFD94D6d462fE6D10B39207a", "transaction_hash": "Unknown", - "block_number": 1709319 + "block_number": 1710028 }, "SpokePoolVerifier": { "address": "0x3Fb9cED51E968594C87963a371Ed90c39519f65A", diff --git a/broadcast/deployed-addresses.md b/broadcast/deployed-addresses.md index df2f5b842..97af8342d 100644 --- a/broadcast/deployed-addresses.md +++ b/broadcast/deployed-addresses.md @@ -630,9 +630,9 @@ This file contains the latest deployed smart contract addresses from the broadca #### SpokePool -- **SpokePool**: `0x9552a0a6624A23B848060AE5901659CDDa1f83f8` +- **SpokePool**: `0x50039fAEfebef707cFD94D6d462fE6D10B39207a` - Transaction Hash: `Unknown` - - Block Number: `1709319` + - Block Number: `1710028` #### SpokePoolVerifier